From 709bb4626a4ff7c97b6366b604289949247c5039 Mon Sep 17 00:00:00 2001 From: maiano Date: Fri, 4 Jul 2025 14:36:08 +0200 Subject: [PATCH 01/31] init: start task #1 --- .gitignore | 145 +++++-------------------------------------- README.md | 70 ++++++++++++++++++++- eslint.config.js | 23 +++++++ index.html | 13 ++++ package.json | 29 +++++++++ public/vite.svg | 1 + src/App.css | 42 +++++++++++++ src/App.tsx | 35 +++++++++++ src/assets/react.svg | 1 + src/index.css | 68 ++++++++++++++++++++ src/main.tsx | 10 +++ src/vite-env.d.ts | 1 + tsconfig.app.json | 27 ++++++++ tsconfig.json | 7 +++ tsconfig.node.json | 25 ++++++++ vite.config.ts | 7 +++ 16 files changed, 373 insertions(+), 131 deletions(-) create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package.json create mode 100644 public/vite.svg create mode 100644 src/App.css create mode 100644 src/App.tsx create mode 100644 src/assets/react.svg create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore index 9a5aced..a547bf3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,136 +4,21 @@ logs npm-debug.log* yarn-debug.log* yarn-error.log* +pnpm-debug.log* lerna-debug.log* -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.* -!.env.example - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt +node_modules dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# Sveltekit cache directory -.svelte-kit/ - -# vitepress build output -**/.vitepress/dist - -# vitepress cache directory -**/.vitepress/cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# Firebase cache directory -.firebase/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v3 -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/sdks -!.yarn/versions - -# Vite logs files -vite.config.js.timestamp-* -vite.config.ts.timestamp-* +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md index 3fd4a20..7959ce4 100644 --- a/README.md +++ b/README.md @@ -1 +1,69 @@ -# react-2025 \ No newline at end of file +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default tseslint.config([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + ...tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + ...tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + ...tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default tseslint.config([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..d94e7de --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { globalIgnores } from 'eslint/config' + +export default tseslint.config([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs['recommended-latest'], + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/index.html b/index.html new file mode 100644 index 0000000..e4b78ea --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..832c1c2 --- /dev/null +++ b/package.json @@ -0,0 +1,29 @@ +{ + "name": "react-2025", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.1.0", + "react-dom": "^19.1.0" + }, + "devDependencies": { + "@eslint/js": "^9.29.0", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@vitejs/plugin-react": "^4.5.2", + "eslint": "^9.29.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.20", + "globals": "^16.2.0", + "typescript": "~5.8.3", + "typescript-eslint": "^8.34.1", + "vite": "^7.0.0" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..3d7ded3 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,35 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( + <> +
+ + Vite logo + + + React logo + +
+

Vite + React

+
+ +

+ Edit src/App.tsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+ + ) +} + +export default App diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..08a3ac9 --- /dev/null +++ b/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..bef5202 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..227a6c6 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..f85a399 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..8b0f57b --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 6909a9fd1f63f157037bf63b3f30b69901859c6c Mon Sep 17 00:00:00 2001 From: maiano Date: Fri, 4 Jul 2025 23:00:59 +0200 Subject: [PATCH 02/31] chore: create config --- .editorconfig | 13 + .husky/commit-msg | 1 + .husky/pre-commit | 1 + .husky/pre-push | 4 + .prettierrc | 7 + commitlint.config.js | 27 + eslint.config.js | 102 +- package-lock.json | 8181 ++++++++++++++++++++++++++++++++++++++++++ package.json | 29 +- src/App.css | 42 - src/App.tsx | 13 +- src/index.css | 69 +- src/main.tsx | 11 +- tsconfig.app.json | 7 +- tsconfig.node.json | 2 +- vite.config.ts | 15 +- 16 files changed, 8375 insertions(+), 149 deletions(-) create mode 100644 .editorconfig create mode 100644 .husky/commit-msg create mode 100644 .husky/pre-commit create mode 100644 .husky/pre-push create mode 100644 .prettierrc create mode 100644 commitlint.config.js create mode 100644 package-lock.json delete mode 100644 src/App.css diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..b4e3016 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 0000000..85cc602 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1 @@ +npx --no -- commitlint --edit diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..1524ad6 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npx --no -- lint-staged diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100644 index 0000000..cf22276 --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,4 @@ +echo 'Running test...' +echo 'If there are no tests, you need to write them' + +npm test diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..dd2c41d --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "semi": true, + "singleQuote": true, + "trailingComma": "all", + "printWidth": 80, + "tabWidth": 2 + } diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..6aee53e --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,27 @@ +export default { + extends: ['@commitlint/config-conventional'], + rules: { + 'scope-case': [2, 'always', 'lower-case'], + 'subject-empty': [2, 'never'], + 'subject-full-stop': [2, 'never', '.'], + 'type-case': [2, 'always', 'lower-case'], + 'type-empty': [2, 'never'], + 'type-enum': [ + 2, + 'always', + [ + 'build', + 'ci', + 'chore', + 'docs', + 'feat', + 'fix', + 'refactor', + 'revert', + 'style', + 'test', + 'init', + ], + ], + }, +}; diff --git a/eslint.config.js b/eslint.config.js index d94e7de..ec34a87 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,23 +1,89 @@ -import js from '@eslint/js' -import globals from 'globals' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' -import tseslint from 'typescript-eslint' -import { globalIgnores } from 'eslint/config' +import js from '@eslint/js'; +import globals from 'globals'; +import reactHooks from 'eslint-plugin-react-hooks'; +import reactRefresh from 'eslint-plugin-react-refresh'; +import tsPlugin from '@typescript-eslint/eslint-plugin'; +import tsParser from '@typescript-eslint/parser'; +import importPlugin from 'eslint-plugin-import'; +import jsxA11y from 'eslint-plugin-jsx-a11y'; -export default tseslint.config([ - globalIgnores(['dist']), +export default [ + // Base { - files: ['**/*.{ts,tsx}'], - extends: [ - js.configs.recommended, - tseslint.configs.recommended, - reactHooks.configs['recommended-latest'], - reactRefresh.configs.vite, - ], + ignores: ['dist/**', '**/*.d.ts', 'node_modules', 'vite.http-config.ts'], + }, + + // JS + { + files: ['**/*.js'], + languageOptions: { + ecmaVersion: 2022, + sourceType: 'module', + globals: { + ...globals.browser, + }, + }, + rules: { + ...js.configs.recommended.rules, + }, + }, + + // TS + { + files: ['src/**/*.{ts,tsx}'], languageOptions: { - ecmaVersion: 2020, - globals: globals.browser, + parser: tsParser, + parserOptions: { + project: './tsconfig.app.json', + tsconfigRootDir: import.meta.dirname, + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 2022, + sourceType: 'module', + }, + globals: { + ...globals.browser, + }, + }, + plugins: { + '@typescript-eslint': tsPlugin, + import: importPlugin, + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + 'jsx-a11y': jsxA11y, + }, + rules: { + ...tsPlugin.configs.recommended.rules, + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': 'warn', + 'import/order': [ + 'warn', + { + groups: [ + 'builtin', + 'external', + 'internal', + 'parent', + 'sibling', + 'index', + ], + alphabetize: { order: 'asc', caseInsensitive: true }, + }, + ], + '@typescript-eslint/no-unused-vars': 'warn', + '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/no-non-null-assertion': 'error', + '@typescript-eslint/no-unsafe-argument': 'error', + '@typescript-eslint/no-unsafe-assignment': 'error', + '@typescript-eslint/no-unsafe-call': 'error', + '@typescript-eslint/no-unsafe-member-access': 'error', + '@typescript-eslint/no-unsafe-return': 'error', + + 'jsx-a11y/alt-text': 'warn', + 'jsx-a11y/anchor-is-valid': 'warn', + 'jsx-a11y/aria-props': 'warn', + 'jsx-a11y/click-events-have-key-events': 'warn', }, }, -]) +]; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..63e57db --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8181 @@ +{ + "name": "react-2025", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "react-2025", + "version": "0.0.0", + "dependencies": { + "@tailwindcss/vite": "^4.1.11", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "tailwindcss": "^4.1.11" + }, + "devDependencies": { + "@commitlint/cli": "^19.8.1", + "@commitlint/config-conventional": "^19.8.1", + "@eslint/js": "^9.29.0", + "@types/node": "^22.15.2", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@typescript-eslint/eslint-plugin": "^8.31.0", + "@typescript-eslint/parser": "^8.31.0", + "@vitejs/plugin-react": "^4.5.2", + "eslint": "^9.29.0", + "eslint-config-prettier": "^10.1.5", + "eslint-import-resolver-typescript": "^4.3.4", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-prettier": "^5.5.1", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.20", + "globals": "^16.2.0", + "husky": "^9.1.7", + "lint-staged": "^16.1.2", + "prettier": "^3.6.2", + "typescript": "~5.8.3", + "typescript-eslint": "^8.34.1", + "vite": "^7.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz", + "integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@commitlint/cli": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz", + "integrity": "sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/format": "^19.8.1", + "@commitlint/lint": "^19.8.1", + "@commitlint/load": "^19.8.1", + "@commitlint/read": "^19.8.1", + "@commitlint/types": "^19.8.1", + "tinyexec": "^1.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.1.tgz", + "integrity": "sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-conventionalcommits": "^7.0.2" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz", + "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@commitlint/config-validator/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@commitlint/ensure": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.1.tgz", + "integrity": "sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz", + "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.8.1.tgz", + "integrity": "sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz", + "integrity": "sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "semver": "^7.6.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/is-ignored/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@commitlint/lint": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.1.tgz", + "integrity": "sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/is-ignored": "^19.8.1", + "@commitlint/parse": "^19.8.1", + "@commitlint/rules": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz", + "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/execute-rule": "^19.8.1", + "@commitlint/resolve-extends": "^19.8.1", + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/message": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.1.tgz", + "integrity": "sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/parse": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.1.tgz", + "integrity": "sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.8.1.tgz", + "integrity": "sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/top-level": "^19.8.1", + "@commitlint/types": "^19.8.1", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8", + "tinyexec": "^1.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz", + "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/types": "^19.8.1", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/resolve-extends/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/rules": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.1.tgz", + "integrity": "sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/ensure": "^19.8.1", + "@commitlint/message": "^19.8.1", + "@commitlint/to-lines": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.1.tgz", + "integrity": "sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.1.tgz", + "integrity": "sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^7.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level/node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@commitlint/top-level/node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/types": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz", + "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@emnapi/core": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", + "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", + "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.30.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.30.1.tgz", + "integrity": "sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz", + "integrity": "sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz", + "integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", + "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.19", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz", + "integrity": "sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz", + "integrity": "sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.1.tgz", + "integrity": "sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.1.tgz", + "integrity": "sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.1.tgz", + "integrity": "sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.1.tgz", + "integrity": "sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.1.tgz", + "integrity": "sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.1.tgz", + "integrity": "sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.1.tgz", + "integrity": "sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.1.tgz", + "integrity": "sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.1.tgz", + "integrity": "sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.1.tgz", + "integrity": "sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.1.tgz", + "integrity": "sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.1.tgz", + "integrity": "sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.1.tgz", + "integrity": "sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.1.tgz", + "integrity": "sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.1.tgz", + "integrity": "sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.1.tgz", + "integrity": "sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.1.tgz", + "integrity": "sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.1.tgz", + "integrity": "sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.1.tgz", + "integrity": "sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.11.tgz", + "integrity": "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.11" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.11.tgz", + "integrity": "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.11", + "@tailwindcss/oxide-darwin-arm64": "4.1.11", + "@tailwindcss/oxide-darwin-x64": "4.1.11", + "@tailwindcss/oxide-freebsd-x64": "4.1.11", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", + "@tailwindcss/oxide-linux-x64-musl": "4.1.11", + "@tailwindcss/oxide-wasm32-wasi": "4.1.11", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.11.tgz", + "integrity": "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.11.tgz", + "integrity": "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.11.tgz", + "integrity": "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.11.tgz", + "integrity": "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.11.tgz", + "integrity": "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.11.tgz", + "integrity": "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.11.tgz", + "integrity": "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.11.tgz", + "integrity": "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.11.tgz", + "integrity": "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.11.tgz", + "integrity": "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.11", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.11.tgz", + "integrity": "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.11.tgz", + "integrity": "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.11.tgz", + "integrity": "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.11", + "@tailwindcss/oxide": "4.1.11", + "tailwindcss": "4.1.11" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", + "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.16.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.0.tgz", + "integrity": "sha512-B2egV9wALML1JCpv3VQoQ+yesQKAmNMBIAY7OteVrikcOcAkWm+dGL6qpeCktPjAv6N1JLnhbNiqS35UpFyBsQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.1.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", + "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", + "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.1.tgz", + "integrity": "sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.35.1", + "@typescript-eslint/type-utils": "8.35.1", + "@typescript-eslint/utils": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.35.1", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.1.tgz", + "integrity": "sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.35.1", + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/typescript-estree": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.1.tgz", + "integrity": "sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.35.1", + "@typescript-eslint/types": "^8.35.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.1.tgz", + "integrity": "sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.1.tgz", + "integrity": "sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.35.1.tgz", + "integrity": "sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.35.1", + "@typescript-eslint/utils": "8.35.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.1.tgz", + "integrity": "sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.1.tgz", + "integrity": "sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.35.1", + "@typescript-eslint/tsconfig-utils": "8.35.1", + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.1.tgz", + "integrity": "sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.35.1", + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/typescript-estree": "8.35.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.1.tgz", + "integrity": "sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.35.1", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.10.1.tgz", + "integrity": "sha512-zohDKXT1Ok0yhbVGff4YAg9HUs5ietG5GpvJBPFSApZnGe7uf2cd26DRhKZbn0Be6xHUZrSzP+RAgMmzyc71EA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.10.1.tgz", + "integrity": "sha512-tAN6k5UrTd4nicpA7s2PbjR/jagpDzAmvXFjbpTazUe5FRsFxVcBlS1F5Lzp5jtWU6bdiqRhSvd4X8rdpCffeA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.10.1.tgz", + "integrity": "sha512-+FCsag8WkauI4dQ50XumCXdfvDCZEpMUnvZDsKMxfOisnEklpDFXc6ThY0WqybBYZbiwR5tWcFaZmI0G6b4vrg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.10.1.tgz", + "integrity": "sha512-qYKGGm5wk71ONcXTMZ0+J11qQeOAPz3nw6VtqrBUUELRyXFyvK8cHhHsLBFR4GHnilc2pgY1HTB2TvdW9wO26Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.10.1.tgz", + "integrity": "sha512-hOHMAhbvIQ63gkpgeNsXcWPSyvXH7ZEyeg254hY0Lp/hX8NdW+FsUWq73g9946Pc/BrcVI/I3C1cmZ4RCX9bNw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.10.1.tgz", + "integrity": "sha512-6ds7+zzHJgTDmpe0gmFcOTvSUhG5oZukkt+cCsSb3k4Uiz2yEQB4iCRITX2hBwSW+p8gAieAfecITjgqCkswXw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.10.1.tgz", + "integrity": "sha512-P7A0G2/jW00diNJyFeq4W9/nxovD62Ay8CMP4UK9OymC7qO7rG1a8Upad68/bdfpIOn7KSp7Aj/6lEW3yyznAA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.10.1.tgz", + "integrity": "sha512-Cg6xzdkrpltcTPO4At+A79zkC7gPDQIgosJmVV8M104ImB6KZi1MrNXgDYIAfkhUYjPzjNooEDFRAwwPadS7ZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.10.1.tgz", + "integrity": "sha512-aNeg99bVkXa4lt+oZbjNRPC8ZpjJTKxijg/wILrJdzNyAymO2UC/HUK1UfDjt6T7U5p/mK24T3CYOi3/+YEQSA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.10.1.tgz", + "integrity": "sha512-ylz5ojeXrkPrtnzVhpCO+YegG63/aKhkoTlY8PfMfBfLaUG8v6m6iqrL7sBUKdVBgOB4kSTUPt9efQdA/Y3Z/w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.10.1.tgz", + "integrity": "sha512-xcWyhmJfXXOxK7lvE4+rLwBq+on83svlc0AIypfe6x4sMJR+S4oD7n9OynaQShfj2SufPw2KJAotnsNb+4nN2g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.10.1.tgz", + "integrity": "sha512-mW9JZAdOCyorgi1eLJr4gX7xS67WNG9XNPYj5P8VuttK72XNsmdw9yhOO4tDANMgiLXFiSFaiL1gEpoNtRPw/A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.10.1.tgz", + "integrity": "sha512-NZGKhBy6xkJ0k09cWNZz4DnhBcGlhDd3W+j7EYoNvf5TSwj2K6kbmfqTWITEgkvjsMUjm1wsrc4IJaH6VtjyHQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.10.1.tgz", + "integrity": "sha512-VsjgckJ0gNMw7p0d8In6uPYr+s0p16yrT2rvG4v2jUpEMYkpnfnCiALa9SWshbvlGjKQ98Q2x19agm3iFk8w8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.10.1.tgz", + "integrity": "sha512-idMnajMeejnaFi0Mx9UTLSYFDAOTfAEP7VjXNgxKApso3Eu2Njs0p2V95nNIyFi4oQVGFmIuCkoznAXtF/Zbmw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.10.1.tgz", + "integrity": "sha512-7jyhjIRNFjzlr8x5pth6Oi9hv3a7ubcVYm2GBFinkBQKcFhw4nIs5BtauSNtDW1dPIGrxF0ciynCZqzxMrYMsg==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.10.1.tgz", + "integrity": "sha512-TY79+N+Gkoo7E99K+zmsKNeiuNJYlclZJtKqsHSls8We2iGhgxtletVsiBYie93MSTDRDMI8pkBZJlIJSZPrdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.10.1.tgz", + "integrity": "sha512-BAJN5PEPlEV+1m8+PCtFoKm3LQ1P57B4Z+0+efU0NzmCaGk7pUaOxuPgl+m3eufVeeNBKiPDltG0sSB9qEfCxw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.10.1.tgz", + "integrity": "sha512-2v3erKKmmCyIVvvhI2nF15qEbdBpISTq44m9pyd5gfIJB1PN94oePTLWEd82XUbIbvKhv76xTSeUQSCOGesLeg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz", + "integrity": "sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.19", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001726", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz", + "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz", + "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", + "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jiti": "^2.4.1" + }, + "engines": { + "node": ">=v18" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=9", + "typescript": ">=5" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.179", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz", + "integrity": "sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", + "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.30.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.30.1.tgz", + "integrity": "sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.30.1", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", + "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", + "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^16.17.0 || >=18.6.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz", + "integrity": "sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", + "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lint-staged": { + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.1.2.tgz", + "integrity": "sha512-sQKw2Si2g9KUZNY3XNvRuDq4UJqpHwF0/FQzZR2M7I5MvtpWvibikCjUVJzZdGE0ByurEl3KQNvsGetd1ty1/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^14.0.0", + "debug": "^4.4.1", + "lilconfig": "^3.1.3", + "listr2": "^8.3.3", + "micromatch": "^4.0.8", + "nano-spawn": "^1.0.2", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.8.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=20.17" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/listr2": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", + "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nano-spawn": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-1.0.2.tgz", + "integrity": "sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.0.tgz", + "integrity": "sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.1.tgz", + "integrity": "sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.44.1", + "@rollup/rollup-android-arm64": "4.44.1", + "@rollup/rollup-darwin-arm64": "4.44.1", + "@rollup/rollup-darwin-x64": "4.44.1", + "@rollup/rollup-freebsd-arm64": "4.44.1", + "@rollup/rollup-freebsd-x64": "4.44.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.44.1", + "@rollup/rollup-linux-arm-musleabihf": "4.44.1", + "@rollup/rollup-linux-arm64-gnu": "4.44.1", + "@rollup/rollup-linux-arm64-musl": "4.44.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.44.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.44.1", + "@rollup/rollup-linux-riscv64-gnu": "4.44.1", + "@rollup/rollup-linux-riscv64-musl": "4.44.1", + "@rollup/rollup-linux-s390x-gnu": "4.44.1", + "@rollup/rollup-linux-x64-gnu": "4.44.1", + "@rollup/rollup-linux-x64-musl": "4.44.1", + "@rollup/rollup-win32-arm64-msvc": "4.44.1", + "@rollup/rollup-win32-ia32-msvc": "4.44.1", + "@rollup/rollup-win32-x64-msvc": "4.44.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", + "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.11.tgz", + "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.35.1.tgz", + "integrity": "sha512-xslJjFzhOmHYQzSB/QTeASAHbjmxOGEP6Coh93TXmUBFQoJ1VU35UHIDmG06Jd6taf3wqqC1ntBnCMeymy5Ovw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.35.1", + "@typescript-eslint/parser": "8.35.1", + "@typescript-eslint/utils": "8.35.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unrs-resolver": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.10.1.tgz", + "integrity": "sha512-EFrL7Hw4kmhZdwWO3dwwFJo6hO3FXuQ6Bg8BK/faHZ9m1YxqBS31BNSTxklIQkxK/4LlV8zTYnPsIRLBzTzjCA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.10.1", + "@unrs/resolver-binding-android-arm64": "1.10.1", + "@unrs/resolver-binding-darwin-arm64": "1.10.1", + "@unrs/resolver-binding-darwin-x64": "1.10.1", + "@unrs/resolver-binding-freebsd-x64": "1.10.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.10.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.10.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.10.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.10.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.10.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.10.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.10.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.10.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.10.1", + "@unrs/resolver-binding-linux-x64-musl": "1.10.1", + "@unrs/resolver-binding-wasm32-wasi": "1.10.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.10.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.10.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.10.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.2.tgz", + "integrity": "sha512-hxdyZDY1CM6SNpKI4w4lcUc3Mtkd9ej4ECWVHSMrOdSinVc2zYOAppHeGc/hzmRo3pxM5blMzkuWHOJA/3NiFw==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.6", + "picomatch": "^4.0.2", + "postcss": "^8.5.6", + "rollup": "^4.40.0", + "tinyglobby": "^0.2.14" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "devOptional": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index 832c1c2..c9dec9e 100644 --- a/package.json +++ b/package.json @@ -5,25 +5,48 @@ "type": "module", "scripts": { "dev": "vite", + "ci:format": "prettier --check .", + "format": "prettier --write .", "build": "tsc -b && vite build", - "lint": "eslint .", - "preview": "vite preview" + "lint": "eslint ./src", + "lint:fix": "eslint --fix --color ./src", + "preview": "vite preview", + "prepare": "husky" }, "dependencies": { + "@tailwindcss/vite": "^4.1.11", "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "tailwindcss": "^4.1.11" }, "devDependencies": { + "@commitlint/cli": "^19.8.1", + "@commitlint/config-conventional": "^19.8.1", "@eslint/js": "^9.29.0", + "@types/node": "^22.15.2", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", + "@typescript-eslint/eslint-plugin": "^8.31.0", + "@typescript-eslint/parser": "^8.31.0", "@vitejs/plugin-react": "^4.5.2", "eslint": "^9.29.0", + "eslint-config-prettier": "^10.1.5", + "eslint-import-resolver-typescript": "^4.3.4", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-prettier": "^5.5.1", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.20", "globals": "^16.2.0", + "husky": "^9.1.7", + "lint-staged": "^16.1.2", + "prettier": "^3.6.2", "typescript": "~5.8.3", "typescript-eslint": "^8.34.1", "vite": "^7.0.0" + }, + "lint-staged": { + "*.{json, md, css, scss}": "prettier --list-different --ignore-unknown", + "*.{cjs,js,mjs,jsx,ts,tsx}": "eslint" } } diff --git a/src/App.css b/src/App.css deleted file mode 100644 index b9d355d..0000000 --- a/src/App.css +++ /dev/null @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/src/App.tsx b/src/App.tsx index 3d7ded3..8819884 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,10 +1,9 @@ -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' -import './App.css' +import { useState } from "react"; +import reactLogo from "./assets/react.svg"; +import viteLogo from "/vite.svg"; function App() { - const [count, setCount] = useState(0) + const [count, setCount] = useState(0); return ( <> @@ -29,7 +28,7 @@ function App() { Click on the Vite and React logos to learn more

- ) + ); } -export default App +export default App; diff --git a/src/index.css b/src/index.css index 08a3ac9..f1d8c73 100644 --- a/src/index.css +++ b/src/index.css @@ -1,68 +1 @@ -:root { - font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} +@import "tailwindcss"; diff --git a/src/main.tsx b/src/main.tsx index bef5202..84099e7 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,10 +1,11 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import './index.css' -import App from './App.tsx' +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; +import './index.css'; +import App from './App.tsx'; +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion createRoot(document.getElementById('root')!).render( , -) +); diff --git a/tsconfig.app.json b/tsconfig.app.json index 227a6c6..d1ee741 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -1,11 +1,11 @@ { "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "target": "ES2022", "useDefineForClassFields": true, "lib": ["ES2022", "DOM", "DOM.Iterable"], "module": "ESNext", "skipLibCheck": true, + "types": ["@testing-library/jest-dom"], /* Bundler mode */ "moduleResolution": "bundler", @@ -14,9 +14,14 @@ "moduleDetection": "force", "noEmit": true, "jsx": "react-jsx", + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, /* Linting */ "strict": true, + "noImplicitAny": true, "noUnusedLocals": true, "noUnusedParameters": true, "erasableSyntaxOnly": true, diff --git a/tsconfig.node.json b/tsconfig.node.json index f85a399..97e886e 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -1,10 +1,10 @@ { "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", "target": "ES2023", "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, + "types": ["@testing-library/jest-dom"], /* Bundler mode */ "moduleResolution": "bundler", diff --git a/vite.config.ts b/vite.config.ts index 8b0f57b..506e619 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,14 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import tailwindcss from "@tailwindcss/vite"; +import path from "path"; // https://vite.dev/config/ export default defineConfig({ - plugins: [react()], -}) + plugins: [react(), tailwindcss()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +}); From 6e48a6320a70c5b715a00c78b0e6815e8fc052dc Mon Sep 17 00:00:00 2001 From: maiano Date: Sat, 5 Jul 2025 11:31:36 +0200 Subject: [PATCH 03/31] chore: add pull request template --- .github/pull_request_template.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..974a4fe --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,9 @@ +1. Task: [link](https://github.com/) +2. Screenshot: +3. Deploy: [link](https://github.com/) +4. Done 28.05.2020 / deadline 31.05.2020 +5. Score: 75 / 110 + - [x] Application is divided to logical modules / layers. Like working with api it's separate module, as well as working with UI rendering, or working with an application state, etc. Better discuss architecture with a mentor before implementing. (40/40) + - [x] All the HTML-content is generated by JavaScript (body contains only one tag script inside). (15/30) + - [ ] Application is SPA.(0/20) + - [x] Webpack or another bundler should be used. There should be one HTML-file, JS-file, and one CSS-file (or it can be embedded right in the HTML-file). (20/20) From f4c113714dc35c234fb69a917a9cdac5dd9ec160 Mon Sep 17 00:00:00 2001 From: maiano Date: Sat, 5 Jul 2025 13:03:02 +0200 Subject: [PATCH 04/31] fix: delete unused code --- .husky/pre-push | 2 +- index.html | 4 ++-- public/_redirects | 1 + public/favicon.svg | 2 ++ public/vite.svg | 1 - src/App.tsx | 27 +-------------------------- src/assets/react.svg | 1 - src/index.css | 8 +++++++- 8 files changed, 14 insertions(+), 32 deletions(-) create mode 100644 public/_redirects create mode 100644 public/favicon.svg delete mode 100644 public/vite.svg delete mode 100644 src/assets/react.svg diff --git a/.husky/pre-push b/.husky/pre-push index cf22276..6c1fe76 100644 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,4 +1,4 @@ echo 'Running test...' echo 'If there are no tests, you need to write them' -npm test + diff --git a/index.html b/index.html index e4b78ea..839c442 100644 --- a/index.html +++ b/index.html @@ -2,9 +2,9 @@ - + - Vite + React + TS + App
diff --git a/public/_redirects b/public/_redirects new file mode 100644 index 0000000..7797f7c --- /dev/null +++ b/public/_redirects @@ -0,0 +1 @@ +/* /index.html 200 diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..545ddca --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 8819884..eea7d83 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,32 +1,7 @@ -import { useState } from "react"; -import reactLogo from "./assets/react.svg"; -import viteLogo from "/vite.svg"; - function App() { - const [count, setCount] = useState(0); - return ( <> - -

Vite + React

-
- -

- Edit src/App.tsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

+

App

); } diff --git a/src/assets/react.svg b/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/index.css b/src/index.css index f1d8c73..e2a58df 100644 --- a/src/index.css +++ b/src/index.css @@ -1 +1,7 @@ -@import "tailwindcss"; +@import 'tailwindcss'; + +html, +body, +#root { + height: 100%; +} From caf005b098bf28bb414bc6c06a7198919afd3726 Mon Sep 17 00:00:00 2001 From: maiano Date: Sat, 5 Jul 2025 13:08:43 +0200 Subject: [PATCH 05/31] chore: change gitignore --- .gitignore | 152 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 139 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index a547bf3..531f803 100644 --- a/.gitignore +++ b/.gitignore @@ -4,21 +4,147 @@ logs npm-debug.log* yarn-debug.log* yarn-error.log* -pnpm-debug.log* lerna-debug.log* +.pnpm-debug.log* -node_modules +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt dist -dist-ssr -*.local -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# vitepress build output +**/.vitepress/dist + +# vitepress cache directory +**/.vitepress/cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# Vitest +.vitest-cache/ +.vitest/ +test-results.xml + +# IDE +.idea/ +.vscode/ +*.swp +*.swo + +# macOS .DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? From ce9cc3b341603873e33e269d3b78e2ec8845b2a4 Mon Sep 17 00:00:00 2001 From: maiano Date: Sun, 6 Jul 2025 03:21:21 +0200 Subject: [PATCH 06/31] feat: create header component --- index.html | 2 +- public/fonts/Caveat-Regular.ttf | Bin 0 -> 297900 bytes src/App.tsx | 22 ++++++++++++++++------ src/components/Header.tsx | 15 +++++++++++++++ src/index.css | 11 +++++++++++ vite.config.ts | 11 ++++++----- 6 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 public/fonts/Caveat-Regular.ttf create mode 100644 src/components/Header.tsx diff --git a/index.html b/index.html index 839c442..38b5442 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - App + Rick and Morty
diff --git a/public/fonts/Caveat-Regular.ttf b/public/fonts/Caveat-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6a6526a4e48032ca881e945b8859c1d11b3376cb GIT binary patch literal 297900 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

w+W1QtZ?I1D&+wmDqt(XD#rp7XHGB&`}z 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

ySWZYVK*9gya3zt-V0rn5I@n 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 r -

App

- - ); +import { Component, type ReactNode } from 'react'; +import Header from '@/components/Header'; + +class App extends Component { + render(): ReactNode { + return ( +
+
+
+
+

App

+
+
+
+ ); + } } export default App; diff --git a/src/components/Header.tsx b/src/components/Header.tsx new file mode 100644 index 0000000..8e0d4e7 --- /dev/null +++ b/src/components/Header.tsx @@ -0,0 +1,15 @@ +import { Component, type ReactNode } from 'react'; + +class Header extends Component { + render(): ReactNode { + return ( +
+

+ Rick and Morty +

+
+ ); + } +} + +export default Header; diff --git a/src/index.css b/src/index.css index e2a58df..6928760 100644 --- a/src/index.css +++ b/src/index.css @@ -1,5 +1,16 @@ @import 'tailwindcss'; +@theme { + --font-caveat: 'Caveat', cursive; +} + +@font-face { + font-family: 'Caveat'; + src: url('/fonts/Caveat-Regular.ttf') format('truetype'); + font-weight: 400; + font-display: swap; +} + html, body, #root { diff --git a/vite.config.ts b/vite.config.ts index 506e619..ed04acc 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,14 +1,15 @@ -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react"; -import tailwindcss from "@tailwindcss/vite"; -import path from "path"; +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import tailwindcss from '@tailwindcss/vite'; +import path from 'path'; // https://vite.dev/config/ export default defineConfig({ plugins: [react(), tailwindcss()], resolve: { alias: { - "@": path.resolve(__dirname, "./src"), + '@': path.resolve(__dirname, './src'), }, }, + // assetsInclude: ['**/*.ttf'], }); From 7bcab55b190d56205a0b48a88ddf88de7dc2deba Mon Sep 17 00:00:00 2001 From: maiano Date: Sun, 6 Jul 2025 22:59:06 +0200 Subject: [PATCH 07/31] feat: create SearchBar component --- src/App.tsx | 4 +++ src/components/Button.tsx | 35 +++++++++++++++++++++++ src/components/Input.tsx | 19 ++++++++++++ src/components/SearchBar.tsx | 54 +++++++++++++++++++++++++++++++++++ src/shared/utils/debug-log.ts | 6 ++++ 5 files changed, 118 insertions(+) create mode 100644 src/components/Button.tsx create mode 100644 src/components/Input.tsx create mode 100644 src/components/SearchBar.tsx create mode 100644 src/shared/utils/debug-log.ts diff --git a/src/App.tsx b/src/App.tsx index 65cedc4..8c3df80 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,6 @@ import { Component, type ReactNode } from 'react'; import Header from '@/components/Header'; +import SearchBar from '@/components/SearchBar'; class App extends Component { render(): ReactNode { @@ -8,6 +9,9 @@ class App extends Component {
+
+ +

App

diff --git a/src/components/Button.tsx b/src/components/Button.tsx new file mode 100644 index 0000000..681d47e --- /dev/null +++ b/src/components/Button.tsx @@ -0,0 +1,35 @@ +import { Component, type ButtonHTMLAttributes } from 'react'; + +interface ButtonProps extends ButtonHTMLAttributes { + variant?: 'default' | 'secondary'; + size?: 'sm' | 'default'; + className?: string; +} + +export class Button extends Component { + render() { + const { + variant = 'default', + size = 'default', + className = '', + ...rest + } = this.props; + + let baseClasses = + 'inline-flex items-center justify-center text-sm transition-colors focus:outline-none focus:ring focus:ring-gray-300 disabled:opacity-50 disabled:pointer-events-none'; + + let variantClasses = + variant === 'secondary' + ? 'bg-gray-300 text-gray-800 hover:bg-gray-300' + : 'bg-gray-200 hover:bg-gray-400'; + + let sizeClasses = size === 'sm' ? 'h-4 px-2' : 'h-9 px-6'; + + return ( + + + ); + } +} + +export default SearchBar; diff --git a/src/shared/utils/debug-log.ts b/src/shared/utils/debug-log.ts new file mode 100644 index 0000000..ea2a50b --- /dev/null +++ b/src/shared/utils/debug-log.ts @@ -0,0 +1,6 @@ +const isDebugMode = import.meta.env.MODE === 'development'; + +export const debug = (namespace: string, ...args: unknown[]) => { + if (!isDebugMode) return; + console.log(`[debug:${namespace}]`, ...args); +}; From 7904566f2e41ada2a4a073d6c8255ac481131e9c Mon Sep 17 00:00:00 2001 From: maiano Date: Mon, 7 Jul 2025 02:50:04 +0200 Subject: [PATCH 08/31] feat: create Card and CardList component --- src/App.tsx | 7 +- src/components/Card.tsx | 31 +++ src/components/CardList.tsx | 40 +++ src/components/Header.tsx | 2 +- src/mocks/characters.ts | 468 ++++++++++++++++++++++++++++++++++++ 5 files changed, 545 insertions(+), 3 deletions(-) create mode 100644 src/components/Card.tsx create mode 100644 src/components/CardList.tsx create mode 100644 src/mocks/characters.ts diff --git a/src/App.tsx b/src/App.tsx index 8c3df80..dd08f34 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,8 @@ import { Component, type ReactNode } from 'react'; +import { CardList } from '@/components/CardList'; import Header from '@/components/Header'; import SearchBar from '@/components/SearchBar'; +import { mockCharacters } from '@/mocks/characters'; class App extends Component { render(): ReactNode { @@ -8,11 +10,12 @@ class App extends Component {
-
+
-

App

+ + {/*

App

*/}
diff --git a/src/components/Card.tsx b/src/components/Card.tsx new file mode 100644 index 0000000..8cd0457 --- /dev/null +++ b/src/components/Card.tsx @@ -0,0 +1,31 @@ +import { Component } from 'react'; + +type CardProps = { + name: string; + status: string; + species: string; + gender: string; + image: string; +}; + +export class Card extends Component { + render() { + const { name, status, species, gender, image } = this.props; + + return ( +
+ {name} +
+

{name}

+

+ {species} - {status}, {gender} +

+
+
+ ); + } +} diff --git a/src/components/CardList.tsx b/src/components/CardList.tsx new file mode 100644 index 0000000..e5f5f54 --- /dev/null +++ b/src/components/CardList.tsx @@ -0,0 +1,40 @@ +import { Component } from 'react'; +import { Card } from './Card'; + +type Character = { + id: number; + name: string; + status: string; + species: string; + gender: string; + image: string; +}; + +interface CardListProps { + items: Character[]; +} + +export class CardList extends Component { + render() { + const { items } = this.props; + + if (!items.length) { + return

No results

; + } + + return ( +
+ {items.map((char) => ( + + ))} +
+ ); + } +} diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 8e0d4e7..3e1a2a7 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -3,7 +3,7 @@ import { Component, type ReactNode } from 'react'; class Header extends Component { render(): ReactNode { return ( -
+

Rick and Morty

diff --git a/src/mocks/characters.ts b/src/mocks/characters.ts new file mode 100644 index 0000000..d4ddb31 --- /dev/null +++ b/src/mocks/characters.ts @@ -0,0 +1,468 @@ +export const mockCharacters = { + info: { + count: 29, + pages: 2, + next: 'https://rickandmortyapi.com/api/character/?page=2&name=rick&status=alive', + prev: null, + }, + results: [ + { + id: 1, + name: 'Rick Sanchez', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'Earth (C-137)', + url: 'https://rickandmortyapi.com/api/location/1', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/1.jpeg', + episode: [ + 'https://rickandmortyapi.com/api/episode/1', + 'https://rickandmortyapi.com/api/episode/2', + 'https://rickandmortyapi.com/api/episode/3', + 'https://rickandmortyapi.com/api/episode/4', + 'https://rickandmortyapi.com/api/episode/5', + 'https://rickandmortyapi.com/api/episode/6', + 'https://rickandmortyapi.com/api/episode/7', + 'https://rickandmortyapi.com/api/episode/8', + 'https://rickandmortyapi.com/api/episode/9', + 'https://rickandmortyapi.com/api/episode/10', + 'https://rickandmortyapi.com/api/episode/11', + 'https://rickandmortyapi.com/api/episode/12', + 'https://rickandmortyapi.com/api/episode/13', + 'https://rickandmortyapi.com/api/episode/14', + 'https://rickandmortyapi.com/api/episode/15', + 'https://rickandmortyapi.com/api/episode/16', + 'https://rickandmortyapi.com/api/episode/17', + 'https://rickandmortyapi.com/api/episode/18', + 'https://rickandmortyapi.com/api/episode/19', + 'https://rickandmortyapi.com/api/episode/20', + 'https://rickandmortyapi.com/api/episode/21', + 'https://rickandmortyapi.com/api/episode/22', + 'https://rickandmortyapi.com/api/episode/23', + 'https://rickandmortyapi.com/api/episode/24', + 'https://rickandmortyapi.com/api/episode/25', + 'https://rickandmortyapi.com/api/episode/26', + 'https://rickandmortyapi.com/api/episode/27', + 'https://rickandmortyapi.com/api/episode/28', + 'https://rickandmortyapi.com/api/episode/29', + 'https://rickandmortyapi.com/api/episode/30', + 'https://rickandmortyapi.com/api/episode/31', + 'https://rickandmortyapi.com/api/episode/32', + 'https://rickandmortyapi.com/api/episode/33', + 'https://rickandmortyapi.com/api/episode/34', + 'https://rickandmortyapi.com/api/episode/35', + 'https://rickandmortyapi.com/api/episode/36', + 'https://rickandmortyapi.com/api/episode/37', + 'https://rickandmortyapi.com/api/episode/38', + 'https://rickandmortyapi.com/api/episode/39', + 'https://rickandmortyapi.com/api/episode/40', + 'https://rickandmortyapi.com/api/episode/41', + 'https://rickandmortyapi.com/api/episode/42', + 'https://rickandmortyapi.com/api/episode/43', + 'https://rickandmortyapi.com/api/episode/44', + 'https://rickandmortyapi.com/api/episode/45', + 'https://rickandmortyapi.com/api/episode/46', + 'https://rickandmortyapi.com/api/episode/47', + 'https://rickandmortyapi.com/api/episode/48', + 'https://rickandmortyapi.com/api/episode/49', + 'https://rickandmortyapi.com/api/episode/50', + 'https://rickandmortyapi.com/api/episode/51', + ], + url: 'https://rickandmortyapi.com/api/character/1', + created: '2017-11-04T18:48:46.250Z', + }, + { + id: 48, + name: 'Black Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/48.jpeg', + episode: [ + 'https://rickandmortyapi.com/api/episode/22', + 'https://rickandmortyapi.com/api/episode/28', + ], + url: 'https://rickandmortyapi.com/api/character/48', + created: '2017-11-05T11:15:26.044Z', + }, + { + id: 72, + name: 'Cool Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'Earth (K-83)', + url: 'https://rickandmortyapi.com/api/location/26', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/72.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/72', + created: '2017-11-30T11:41:11.542Z', + }, + { + id: 74, + name: 'Cop Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/74.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/74', + created: '2017-11-30T11:48:18.950Z', + }, + { + id: 78, + name: 'Cowboy Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/78.jpeg', + episode: [ + 'https://rickandmortyapi.com/api/episode/10', + 'https://rickandmortyapi.com/api/episode/28', + ], + url: 'https://rickandmortyapi.com/api/character/78', + created: '2017-11-30T14:15:18.347Z', + }, + { + id: 220, + name: 'Mega Fruit Farmer Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/220.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/220', + created: '2017-12-30T14:35:30.736Z', + }, + { + id: 265, + name: 'Pickle Rick', + status: 'Alive', + species: 'unknown', + type: 'Pickle', + gender: 'Male', + origin: { + name: 'Earth (C-137)', + url: 'https://rickandmortyapi.com/api/location/1', + }, + location: { + name: 'Earth (Replacement Dimension)', + url: 'https://rickandmortyapi.com/api/location/20', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/265.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/24'], + url: 'https://rickandmortyapi.com/api/character/265', + created: '2017-12-31T13:47:10.617Z', + }, + { + id: 267, + name: 'Plumber Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/267.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/267', + created: '2017-12-31T13:50:57.337Z', + }, + { + id: 288, + name: 'Rick D716-B', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'Earth (D716-B)', + url: 'https://rickandmortyapi.com/api/location/60', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/288.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/288', + created: '2017-12-31T19:55:25.101Z', + }, + { + id: 289, + name: 'Rick D716-C', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'Earth (D716-C)', + url: 'https://rickandmortyapi.com/api/location/61', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/289.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/289', + created: '2017-12-31T19:57:36.546Z', + }, + { + id: 291, + name: 'Rick J-22', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'Earth (J-22)', + url: 'https://rickandmortyapi.com/api/location/62', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/291.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/291', + created: '2017-12-31T20:16:52.337Z', + }, + { + id: 292, + name: 'Rick K-22', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'Earth (K-22)', + url: 'https://rickandmortyapi.com/api/location/52', + }, + location: { + name: 'Earth (Replacement Dimension)', + url: 'https://rickandmortyapi.com/api/location/20', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/292.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/292', + created: '2017-12-31T20:20:40.484Z', + }, + { + id: 328, + name: 'Slow Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/328.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/328', + created: '2018-01-10T16:14:16.331Z', + }, + { + id: 345, + name: 'Teacher Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/345.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/345', + created: '2018-01-10T17:33:23.437Z', + }, + { + id: 381, + name: 'Woman Rick', + status: 'Alive', + species: 'Alien', + type: 'Chair', + gender: 'Female', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'unknown', + url: '', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/381.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/10'], + url: 'https://rickandmortyapi.com/api/character/381', + created: '2018-01-10T19:46:00.622Z', + }, + { + id: 472, + name: 'Baby Rick', + status: 'Alive', + species: 'Human', + type: 'Clone', + gender: 'Male', + origin: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/472.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/472', + created: '2018-05-22T17:11:53.084Z', + }, + { + id: 477, + name: 'Hairdresser Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/477.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/477', + created: '2018-05-22T17:19:36.127Z', + }, + { + id: 478, + name: 'Journalist Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/478.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/478', + created: '2018-05-22T17:22:18.417Z', + }, + { + id: 482, + name: 'Secret Service Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/482.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/482', + created: '2018-05-22T17:32:32.561Z', + }, + { + id: 483, + name: 'Steve Jobs Rick', + status: 'Alive', + species: 'Human', + type: '', + gender: 'Male', + origin: { + name: 'unknown', + url: '', + }, + location: { + name: 'Citadel of Ricks', + url: 'https://rickandmortyapi.com/api/location/3', + }, + image: 'https://rickandmortyapi.com/api/character/avatar/483.jpeg', + episode: ['https://rickandmortyapi.com/api/episode/28'], + url: 'https://rickandmortyapi.com/api/character/483', + created: '2018-05-22T17:33:33.815Z', + }, + ], +}; From 9d0a9a7452116d94ba419806fc0727c719b14211 Mon Sep 17 00:00:00 2001 From: maiano Date: Mon, 7 Jul 2025 17:10:26 +0200 Subject: [PATCH 09/31] feat: add logic for fetching data via API --- src/App.tsx | 67 ++++++++++++++++++++++++++++++++++-- src/components/Card.tsx | 9 ++--- src/components/CardList.tsx | 23 +++---------- src/components/SearchBar.tsx | 7 +++- src/types/character.ts | 34 ++++++++++++++++++ 5 files changed, 111 insertions(+), 29 deletions(-) create mode 100644 src/types/character.ts diff --git a/src/App.tsx b/src/App.tsx index dd08f34..3cd45bb 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -2,19 +2,80 @@ import { Component, type ReactNode } from 'react'; import { CardList } from '@/components/CardList'; import Header from '@/components/Header'; import SearchBar from '@/components/SearchBar'; -import { mockCharacters } from '@/mocks/characters'; +import type { + ApiInfo, + Character, + CharacterApiResponse, +} from '@/types/character'; + +type AppState = { + info: ApiInfo | null; + characters: Character[]; + loading: boolean; + error: string | null; +}; class App extends Component { + state: AppState = { + info: null, + characters: [], + loading: false, + error: null, + }; + + componentDidMount(): void { + const savedSearch = localStorage.getItem('rick-and-morty-search') || ''; + this.fetchCharacters(savedSearch); + } + + fetchCharacters = async (search: string) => { + try { + this.setState({ loading: true, error: null }); + + const res = await fetch( + `https://rickandmortyapi.com/api/character/?name=${search}`, + ); + + if (!res.ok) { + throw new Error('Not found'); + } + + const data = (await res.json()) as CharacterApiResponse; + + this.setState({ + info: data.info, + characters: data.results, + }); + } catch (error) { + this.setState({ + error: (error as Error).message, + characters: [], + }); + } finally { + this.setState({ loading: false }); + } + }; + + handleSearch = (text: string) => { + this.fetchCharacters(text); + }; + render(): ReactNode { + const { characters, loading, error } = this.state; return (
- +
- + {loading &&

Loading...

} + {loading || error ? ( +

{error}

+ ) : ( + + )} {/*

App

*/}
diff --git a/src/components/Card.tsx b/src/components/Card.tsx index 8cd0457..f8bacfa 100644 --- a/src/components/Card.tsx +++ b/src/components/Card.tsx @@ -1,16 +1,13 @@ import { Component } from 'react'; +import type { Character } from '@/types/character'; type CardProps = { - name: string; - status: string; - species: string; - gender: string; - image: string; + character: Character; }; export class Card extends Component { render() { - const { name, status, species, gender, image } = this.props; + const { name, status, species, gender, image } = this.props.character; return (
diff --git a/src/components/CardList.tsx b/src/components/CardList.tsx index e5f5f54..ce72ae6 100644 --- a/src/components/CardList.tsx +++ b/src/components/CardList.tsx @@ -1,18 +1,10 @@ import { Component } from 'react'; import { Card } from './Card'; +import type { Character } from '@/types/character'; -type Character = { - id: number; - name: string; - status: string; - species: string; - gender: string; - image: string; -}; - -interface CardListProps { +type CardListProps = { items: Character[]; -} +}; export class CardList extends Component { render() { @@ -25,14 +17,7 @@ export class CardList extends Component { return (
{items.map((char) => ( - + ))}
); diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 741162f..5fdfa2c 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -3,7 +3,11 @@ import { Button } from '@/components/Button'; import { Input } from '@/components/Input'; import { debug } from '@/shared/utils/debug-log'; -class SearchBar extends Component { +type Props = { + onSearch: (text: string) => void; +}; + +class SearchBar extends Component { state = { searchText: localStorage.getItem('rick-and-morty-search') || '', error: false, @@ -21,6 +25,7 @@ class SearchBar extends Component { } localStorage.setItem('rick-and-morty-search', text); debug('search string:', text); + this.props.onSearch(text); this.setState({ searchText: '', error: false }); }; diff --git a/src/types/character.ts b/src/types/character.ts new file mode 100644 index 0000000..4af40ce --- /dev/null +++ b/src/types/character.ts @@ -0,0 +1,34 @@ +type ApiInfo = { + count: number; + pages: number; + next: string | null; + prev: string | null; +}; + +type Character = { + id: number; + name: string; + status: 'Alive' | 'Dead' | 'unknown'; + species: string; + type: string; + gender: 'Female' | 'Male' | 'Genderless' | 'unknown'; + origin: { + name: string; + url: string; + }; + location: { + name: string; + url: string; + }; + image: string; + episode: string[]; + url: string; + created: string; +}; + +type CharacterApiResponse = { + info: ApiInfo; + results: Character[]; +}; + +export type { ApiInfo, Character, CharacterApiResponse }; From 2e3a43b2de0e659654d234af43222391b409fdbe Mon Sep 17 00:00:00 2001 From: maiano Date: Mon, 7 Jul 2025 18:05:50 +0200 Subject: [PATCH 10/31] feat: add ErrorBoundary component --- src/App.tsx | 19 ++++++++++++++-- src/components/ErrorBoundary.tsx | 38 ++++++++++++++++++++++++++++++++ src/main.tsx | 5 ++++- 3 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 src/components/ErrorBoundary.tsx diff --git a/src/App.tsx b/src/App.tsx index 3cd45bb..9bf9d5e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,4 +1,5 @@ import { Component, type ReactNode } from 'react'; +import { Button } from '@/components/Button'; import { CardList } from '@/components/CardList'; import Header from '@/components/Header'; import SearchBar from '@/components/SearchBar'; @@ -13,6 +14,7 @@ type AppState = { characters: Character[]; loading: boolean; error: string | null; + wouldThrow: boolean; }; class App extends Component { @@ -21,6 +23,7 @@ class App extends Component { characters: [], loading: false, error: null, + wouldThrow: false, }; componentDidMount(): void { @@ -61,7 +64,12 @@ class App extends Component { }; render(): ReactNode { - const { characters, loading, error } = this.state; + const { characters, loading, error, wouldThrow } = this.state; + + if (wouldThrow) { + throw new Error('test error from button'); + } + return (
@@ -76,7 +84,14 @@ class App extends Component { ) : ( )} - {/*

App

*/} +
+ +
diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx new file mode 100644 index 0000000..2e426dd --- /dev/null +++ b/src/components/ErrorBoundary.tsx @@ -0,0 +1,38 @@ +import { Component, type ReactNode, type ErrorInfo } from 'react'; + +type Props = { + children: ReactNode; +}; + +type State = { + hasError: boolean; +}; + +class ErrorBoundary extends Component { + state: State = { + hasError: false, + }; + + static getDerivedStateFromError(): State { + return { hasError: true }; + } + + componentDidCatch(error: Error, info: ErrorInfo): void { + console.error('Uncaught error:', error, info); + } + + render(): ReactNode { + if (this.state.hasError) { + return ( +
+

Something went wrong

+

Please reload the page or try again later

+
+ ); + } + + return this.props.children; + } +} + +export default ErrorBoundary; diff --git a/src/main.tsx b/src/main.tsx index 84099e7..4f44b04 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -2,10 +2,13 @@ import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; import './index.css'; import App from './App.tsx'; +import ErrorBoundary from '@/components/ErrorBoundary.tsx'; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion createRoot(document.getElementById('root')!).render( - + + + , ); From e8a6047848cff6b94a8c98f794faf8bc11427d17 Mon Sep 17 00:00:00 2001 From: maiano Date: Mon, 7 Jul 2025 18:48:34 +0200 Subject: [PATCH 11/31] feat: add logo --- src/assets/rick-and-morty-sticker-b-w.webp | Bin 0 -> 24906 bytes src/components/Header.tsx | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 src/assets/rick-and-morty-sticker-b-w.webp diff --git a/src/assets/rick-and-morty-sticker-b-w.webp b/src/assets/rick-and-morty-sticker-b-w.webp new file mode 100644 index 0000000000000000000000000000000000000000..0ab60b2955c6f34b4b7350f606af0b505f81c9f1 GIT binary patch literal 24906 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 ZLmAo{>~eYHmLhnY+AQ0fG5&9tK2 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 literal 0 HcmV?d00001 diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 3e1a2a7..a04ef82 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,9 +1,11 @@ import { Component, type ReactNode } from 'react'; +import logo from '@/assets/rick-and-morty-sticker-b-w.webp'; class Header extends Component { render(): ReactNode { return ( -
+
+ Logo

Rick and Morty

From 2696df396a168445b6984bb11de9d34ee59588c8 Mon Sep 17 00:00:00 2001 From: maiano Date: Mon, 7 Jul 2025 23:12:12 +0200 Subject: [PATCH 12/31] feat: add animation for rendering cards --- src/App.tsx | 8 ++++++-- src/components/CardList.tsx | 2 +- src/components/SearchBar.tsx | 6 ++++-- src/index.css | 11 +++++++++++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 9bf9d5e..68e59e8 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -78,7 +78,11 @@ class App extends Component {
- {loading &&

Loading...

} + {loading && ( +
+
+
+ )} {loading || error ? (

{error}

) : ( @@ -86,7 +90,7 @@ class App extends Component { )}
+ ); } diff --git a/src/index.css b/src/index.css index 6928760..e5a387c 100644 --- a/src/index.css +++ b/src/index.css @@ -2,6 +2,17 @@ @theme { --font-caveat: 'Caveat', cursive; + + --animate-fadeIn: fadeIn 0.5s ease-in-out; + @keyframes fadeIn { + 0% { + opacity: 0; + } + , + 100% { + opacity: 1; + } + } } @font-face { From 0b8c4072619973502415ada0d602dfeddfb245a5 Mon Sep 17 00:00:00 2001 From: maiano Date: Tue, 8 Jul 2025 01:07:10 +0200 Subject: [PATCH 13/31] feat: add logic to disable the button --- src/App.tsx | 2 +- src/components/Input.tsx | 2 +- src/components/SearchBar.tsx | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 68e59e8..209e2b5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -76,7 +76,7 @@ class App extends Component {
- +
{loading && (
diff --git a/src/components/Input.tsx b/src/components/Input.tsx index 0d03aa0..4fa6684 100644 --- a/src/components/Input.tsx +++ b/src/components/Input.tsx @@ -11,7 +11,7 @@ export class Input extends Component { return ( ); diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 696e765..c4ee528 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -5,6 +5,7 @@ import { debug } from '@/shared/utils/debug-log'; type Props = { onSearch: (text: string) => void; + loading?: boolean; }; class SearchBar extends Component { @@ -35,6 +36,8 @@ class SearchBar extends Component { }; render(): ReactNode { + const { loading } = this.props; + return (
{ this.state.error ? 'Search field cannot be empty' : 'Input text...' } aria-invalid={this.state.error} + disabled={loading} /> -
From 6e7be59b67b705220e9d4bf50037ba23a850059b Mon Sep 17 00:00:00 2001 From: maiano Date: Tue, 8 Jul 2025 16:11:48 +0200 Subject: [PATCH 14/31] feat: add pagination --- src/App.tsx | 55 +++++++++++++++++++-------- src/assets/spinner-gap-thin.svg | 4 ++ src/components/Button.tsx | 4 +- src/components/LoadingOverlay.tsx | 22 +++++++++++ src/components/Pagination.tsx | 63 +++++++++++++++++++++++++++++++ 5 files changed, 131 insertions(+), 17 deletions(-) create mode 100644 src/assets/spinner-gap-thin.svg create mode 100644 src/components/LoadingOverlay.tsx create mode 100644 src/components/Pagination.tsx diff --git a/src/App.tsx b/src/App.tsx index 209e2b5..e9d936c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,7 +1,10 @@ import { Component, type ReactNode } from 'react'; +import spinner from '@/assets/spinner-gap-thin.svg'; import { Button } from '@/components/Button'; import { CardList } from '@/components/CardList'; import Header from '@/components/Header'; +import { LoadingOverlay } from '@/components/LoadingOverlay'; +import { Pagination } from '@/components/Pagination'; import SearchBar from '@/components/SearchBar'; import type { ApiInfo, @@ -15,6 +18,7 @@ type AppState = { loading: boolean; error: string | null; wouldThrow: boolean; + page: number; }; class App extends Component { @@ -24,6 +28,7 @@ class App extends Component { loading: false, error: null, wouldThrow: false, + page: 1, }; componentDidMount(): void { @@ -31,7 +36,7 @@ class App extends Component { this.fetchCharacters(savedSearch); } - fetchCharacters = async (search: string) => { + fetchCharacters = async (search: string, page = 1) => { try { this.setState({ loading: true, error: null }); @@ -48,6 +53,7 @@ class App extends Component { this.setState({ info: data.info, characters: data.results, + page, }); } catch (error) { this.setState({ @@ -55,7 +61,9 @@ class App extends Component { characters: [], }); } finally { - this.setState({ loading: false }); + setTimeout(() => { + this.setState({ loading: false }); + }, 200); } }; @@ -74,28 +82,45 @@ class App extends Component {
+ + Loading +
- {loading && ( -
-
-
- )} {loading || error ? (

{error}

) : ( )} -
- -
+ {!loading && !error && characters.length > 0 && this.state.info && ( + { + const savedSearch = + localStorage.getItem('rick-and-morty-search') || ''; + this.fetchCharacters(savedSearch, page); + }} + /> + )} + + {!loading && ( +
+ +
+ )}
diff --git a/src/assets/spinner-gap-thin.svg b/src/assets/spinner-gap-thin.svg new file mode 100644 index 0000000..189f12a --- /dev/null +++ b/src/assets/spinner-gap-thin.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/components/Button.tsx b/src/components/Button.tsx index 681d47e..7feab81 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -20,10 +20,10 @@ export class Button extends Component { let variantClasses = variant === 'secondary' - ? 'bg-gray-300 text-gray-800 hover:bg-gray-300' + ? 'bg-gray-300 text-gray-800 hover:bg-gray-400' : 'bg-gray-200 hover:bg-gray-400'; - let sizeClasses = size === 'sm' ? 'h-4 px-2' : 'h-9 px-6'; + let sizeClasses = size === 'sm' ? 'h-8 w-8 px-4' : 'h-9 px-6'; return ( , + ); + } + + return ( +
+ + + {pageButtons} + + +
+ ); + } +} From 00a2f95238da0faac43f7fdb050b38dfe50dda4d Mon Sep 17 00:00:00 2001 From: maiano Date: Tue, 8 Jul 2025 23:32:21 +0200 Subject: [PATCH 15/31] fix: fix pagination logic --- package-lock.json | 111 ++++++++++++++++++++++++++++++++++ package.json | 1 + src/App.tsx | 6 +- src/components/Pagination.tsx | 4 +- src/components/SearchBar.tsx | 15 +---- 5 files changed, 120 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 63e57db..d4d96a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@commitlint/cli": "^19.8.1", "@commitlint/config-conventional": "^19.8.1", "@eslint/js": "^9.29.0", + "@testing-library/jest-dom": "^6.6.3", "@types/node": "^22.15.2", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", @@ -40,6 +41,13 @@ "vite": "^7.0.0" } }, + "node_modules/@adobe/css-tools": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.3.tgz", + "integrity": "sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==", + "dev": true, + "license": "MIT" + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -2077,6 +2085,41 @@ "vite": "^5.2.0 || ^6 || ^7" } }, + "node_modules/@testing-library/jest-dom": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", + "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@tybys/wasm-util": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", @@ -3495,6 +3538,13 @@ "node": ">= 8" } }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -3659,6 +3709,13 @@ "node": ">=0.10.0" } }, + "node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -4959,6 +5016,16 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/ini": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", @@ -5948,6 +6015,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -6156,6 +6230,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -6694,6 +6778,20 @@ "node": ">=0.10.0" } }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -7337,6 +7435,19 @@ "node": ">=4" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", diff --git a/package.json b/package.json index c9dec9e..7c5b7f8 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "@commitlint/cli": "^19.8.1", "@commitlint/config-conventional": "^19.8.1", "@eslint/js": "^9.29.0", + "@testing-library/jest-dom": "^6.6.3", "@types/node": "^22.15.2", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", diff --git a/src/App.tsx b/src/App.tsx index e9d936c..2bbf4fb 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -41,7 +41,7 @@ class App extends Component { this.setState({ loading: true, error: null }); const res = await fetch( - `https://rickandmortyapi.com/api/character/?name=${search}`, + `https://rickandmortyapi.com/api/character/?page=${page}&name=${search}`, ); if (!res.ok) { @@ -98,10 +98,10 @@ class App extends Component { ) : ( )} - {!loading && !error && characters.length > 0 && this.state.info && ( + {!loading && !error && characters.length > 0 && ( { const savedSearch = diff --git a/src/components/Pagination.tsx b/src/components/Pagination.tsx index c792f23..ac5122a 100644 --- a/src/components/Pagination.tsx +++ b/src/components/Pagination.tsx @@ -2,7 +2,7 @@ import { Component } from 'react'; import { Button } from '@/components/Button'; type PaginationProps = { - total: number; + total?: number; value: number; onChange: (page: number) => void; className?: string; @@ -17,7 +17,7 @@ export class Pagination extends Component { }; render() { - const { total, value, className = '' } = this.props; + const { total = 0, value, className = '' } = this.props; if (total < 1) return null; diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index c4ee528..02ae2d4 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -11,23 +11,18 @@ type Props = { class SearchBar extends Component { state = { searchText: localStorage.getItem('rick-and-morty-search') || '', - error: false, }; handleInputChange = (e: React.ChangeEvent) => { - this.setState({ searchText: e.target.value, error: false }); + this.setState({ searchText: e.target.value }); }; handleSearch = () => { const text = this.state.searchText.trim(); - if (!text) { - this.setState({ error: true, searchText: '' }); - return; - } localStorage.setItem('rick-and-morty-search', text); debug('search string:', text); this.props.onSearch(text); - this.setState({ error: false }); + this.setState({ searchText: text }); }; handleSubmit = (e: React.FormEvent) => { @@ -44,14 +39,10 @@ class SearchBar extends Component { className="flex gap-4 w-full min-sm:w-3/4 min-md:w-2/3 min-lg:w-1/2" > -
- )} -
+ +
this.setState({ wouldThrow: true })} />
); diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 0000000..9d3bf6d --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,23 @@ +import { Component, type ReactNode } from 'react'; +import { Button } from '@/components/Button'; + +type FooterProps = { + onThrowError: () => void; +}; + +class Footer extends Component { + render(): ReactNode { + return ( +
+ +
+ ); + } +} + +export default Footer; diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx new file mode 100644 index 0000000..986b8d8 --- /dev/null +++ b/src/pages/HomePage.tsx @@ -0,0 +1,45 @@ +import { type ReactNode, Component } from 'react'; +import { CardList } from '@/components/CardList'; +import { Pagination } from '@/components/Pagination'; +import SearchBar from '@/components/SearchBar'; +import type { ApiInfo, Character } from '@/types/character'; + +type Props = { + characters: Character[]; + loading: boolean; + error: string | null; + page: number; + info: ApiInfo | null; + onSearch: (text: string) => void; + onPageChange: (page: number) => void; +}; + +class HomePage extends Component { + render(): ReactNode { + const { characters, loading, error, page, info, onSearch, onPageChange } = + this.props; + + return ( +
+
+ +
+ {loading || error ? ( +

{error}

+ ) : ( + + )} + {!loading && !error && ( + + )} +
+ ); + } +} + +export default HomePage; From 7dd48121fe52b0fc54e88bfc654168d423f525d1 Mon Sep 17 00:00:00 2001 From: maiano Date: Thu, 10 Jul 2025 14:15:00 +0200 Subject: [PATCH 18/31] docs: add readme --- README.md | 126 ++++++++++++++++++++++++------------------------------ 1 file changed, 57 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index 7959ce4..c4dfbe5 100644 --- a/README.md +++ b/README.md @@ -1,69 +1,57 @@ -# React + TypeScript + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: - -```js -export default tseslint.config([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - // Other configs... - - // Remove tseslint.configs.recommended and replace with this - ...tseslint.configs.recommendedTypeChecked, - // Alternatively, use this for stricter rules - ...tseslint.configs.strictTypeChecked, - // Optionally, add this for stylistic rules - ...tseslint.configs.stylisticTypeChecked, - - // Other configs... - ], - languageOptions: { - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - // other options... - }, - }, -]) -``` - -You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: - -```js -// eslint.config.js -import reactX from 'eslint-plugin-react-x' -import reactDom from 'eslint-plugin-react-dom' - -export default tseslint.config([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - // Other configs... - // Enable lint rules for React - reactX.configs['recommended-typescript'], - // Enable lint rules for React DOM - reactDom.configs.recommended, - ], - languageOptions: { - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - // other options... - }, - }, -]) -``` +# Rick and Morty Explorer - React App + +🔗 **Live Demo**: [https://rick-and-morty-maiano.netlify.app/](https://rick-and-morty-maiano.netlify.app/) + +## About Us + +**Rick and Morty Explorer** is a simple React app for browsing characters from the Rick and Morty universe, with support for: + +- Search by character name +- Local storage of last search + +Discover your next favorite bottle in just a few clicks! + +### Core + +- **Frontend**:
React React + TypeScript + TailwindCSS TailwindCSS + +### Tooling + +- **Bundler**: Vite Vite +- **Testing**: Vitest Vitest + Testing Library +- **Linting**: ESLint + Prettier + Husky + +## Quick Start + +> [!NOTE] +> To get started with the development: +> +> 1. Clone the repository using `git clone https://github.com/maiano/eCommerce-Application.git`. +> 2. Install dependencies using `npm install`. +> 3. Run the development server using `npm run dev`. +> 4. Build the project using `npm run build`. + +
+ Scripts + +- `build`: Create production build. + +- `ci:format`: Check code formatting. + +- `dev`: Start development server. + +- `format`: Format code with Prettier. + +- `lint`: Check for linting errors. + +- `lint:fix`: Fix linting errors. + +- `prepare`: Sets up Husky. + +- `preview`: Preview production build. + +- `test`: Run all tests. + +- `coverage`: Generate test coverage report. + +
From 1b6e492d592cd209844b66abba45d1635f66a568 Mon Sep 17 00:00:00 2001 From: maiano Date: Thu, 10 Jul 2025 14:19:16 +0200 Subject: [PATCH 19/31] docs: change description in readme --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index c4dfbe5..8d4fea0 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,13 @@ 🔗 **Live Demo**: [https://rick-and-morty-maiano.netlify.app/](https://rick-and-morty-maiano.netlify.app/) -## About Us +## About **Rick and Morty Explorer** is a simple React app for browsing characters from the Rick and Morty universe, with support for: - Search by character name - Local storage of last search -Discover your next favorite bottle in just a few clicks! - ### Core - **Frontend**: React React + TypeScript + TailwindCSS TailwindCSS @@ -18,7 +16,6 @@ Discover your next favorite bottle in just a few clicks! ### Tooling - **Bundler**: Vite Vite -- **Testing**: Vitest Vitest + Testing Library - **Linting**: ESLint + Prettier + Husky ## Quick Start From 90d72a1326ed76d0c6b1055b92ac6ace10925ccb Mon Sep 17 00:00:00 2001 From: maiano Date: Fri, 11 Jul 2025 00:19:49 +0200 Subject: [PATCH 20/31] refactor: update ErrorBoundary fallback with custom content --- index.html | 2 +- public/favicon.png | Bin 0 -> 246 bytes public/favicon.svg | 2 -- .../Rick-And-Morty-PNG-Pic-Background.png | Bin 0 -> 111300 bytes src/assets/rick-and-morty-sticker-b-w.webp | Bin 24906 -> 1898 bytes src/components/ErrorBoundary.tsx | 20 +++++++++++++++--- src/components/Footer.tsx | 2 +- 7 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 public/favicon.png delete mode 100644 public/favicon.svg create mode 100644 src/assets/Rick-And-Morty-PNG-Pic-Background.png diff --git a/index.html b/index.html index 38b5442..1a4e8e9 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ - + Rick and Morty diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf24240a2254df17b6193c428bbf172985f7677 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAI14-?iy0WWg+Q3`(%rg0K*1HB zE{-7*Q&|r#Ok_3`a6Ksg`otlB*6CbbQeDeAYJQ%NL}W^S_&K$Y;B# ztC+Ed`Id)~xCfhTvTsJqqOQ34$#XR9FDXp=^JuC?|Fv$TeSc%J`@NRe0B4u6=r9{OGpP*F1ndC1e%&t;ucLK6UsOj+Il literal 0 HcmV?d00001 diff --git a/public/favicon.svg b/public/favicon.svg deleted file mode 100644 index 545ddca..0000000 --- a/public/favicon.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/src/assets/Rick-And-Morty-PNG-Pic-Background.png b/src/assets/Rick-And-Morty-PNG-Pic-Background.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e7d79acf6952e3f7cda2dfecabc6447318b9b7 GIT binary patch literal 111300 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 Zx$fzKh=p0K{(`?nG}ZOg$}o2K{~w3^wQK+Y literal 0 HcmV?d00001 diff --git a/src/assets/rick-and-morty-sticker-b-w.webp b/src/assets/rick-and-morty-sticker-b-w.webp index 0ab60b2955c6f34b4b7350f606af0b505f81c9f1..b63c34e0e669289b0b5f9d7bebc7267a43f99b3b 100644 GIT binary patch literal 1898 zcmV-w2bK6zNk&Fu2LJ$9MM6+kP&gn~2LJ%@Apo5LDp&wm06u9dkwv5;p_y5Z>_7&D zwg6*S!h`&|myoaT)K!51};5yZP z06%PfH9u;;5Pxt#ZT+6V|K6ZdON%4VekjmiWU{IU6Cp)mjZ?|~ZM|xhM>3uSh%TMS z-3ac2S=2!Yt_ztB*dbGCPls&Na(aOQSQSac1DYVZVf(U%lcX#E+GlI6-dLwT;t~@w_tC@1=~7?-{_b(X znjoh=Pu|SYq=|42$uWO|((8OA8c=?J=H-1kVjo+B;!Mmp)LG~$@wt9_*c!d>l9RZv z11A3qy3qZr4;rC7e;|>LHqVG9Tg^|RZ=h3Of|qw)I4@fz&yz{ysCNBn3GRZeBk`p7 zTf%wfC}(3){S7Id3<_GOYBc1Sjs3zBQP6hSL2oPGwLg31Qq86>P1oNP+Ls+}lt*Ql zH}ouF8X!bb1C#CT>XcWXuZ4Cqh}n*__P0D6eg?cIiRkHHsB@dW2k<=3*sd=t`FvK2 zWDNy498EoOB`iyY$_K_TQ}~Fk0cEhq(Kw=4!=;|p-;)gf(yWC%6WAAmDJGTnOR(x> zCeq%>v@I85=y2B!Q-Vzc8Dw)Jv|eEVNpGIPqxCx}#s)HOmQ}9RvDMqZNR- zdlI>f2?oFr8lIpX-0Dy*l%QDu87zk4mKInu(e6LrN4IEUS=xr@u6|w${-98v3<;$} z=~mJExm|9yX#=mJ5~M!1!fe5L@ifs@`E7+=a7|aV|BXffpvenNNm+r%Dja+F@W^ok z&#I4S=Loj>Jnv>5$mc?yw@tS>)xJn2P(t!DTGa#8t80|4qv3jtzlhxC)olqc$ucgB z-}M3UM@#!7O>%a3Tl?38ed`r8^%|4UkegE+D{!M)&{-5=jIsZKoqwv}lJSG!cvIYlvX-eyG93HDlvmA!G}Q-ikAd9j zuz=F@D&`9#HUng*?e(E(6gISotv&0$ZJg+SQtZTFNjYk$2tLajR7(VwuR4d(6UPW= z*lNjk`LFIndVJ5ODOVT2!fE#)c$bGBZ5?_}wgj4}o-&ra;%PKGHTBX^VmVY8o#v#T;@K$ATe7#(JgKNI9zDY4T$eU*)swvUi2j@5 z-8cFK@F?r?ns}#}r}WOhsjtIKpU?WM#}3IqQc_KD_GcHfF{W(M1@Ct@WdRVSr4_z* ziKFe+U{^VSeE5<*yziF~w|PyCH4NZ)U(w1@?bR_A#*N=UF@(`Z;%i;AhhfXWTdU%E zi%O1E-^3!jl2Ae7GS{i%(x%jj1CrbTIHRZH`u0>OC57ZD8x#G2=+mQW?-O;KeBzVB zi|73OCqc4x#`qmpj?ey3Gw5R{50QrY7mofdL?V1=Z1IHTf zJc#g|ENyo4QdqRBahcOqQlq}oY3qq4 z6==hVJzTW(pw*8HUO-%QN!v)OyrdT@Z08h)fU&iLqz9~ZcvzxAxUpp#3mU{ z=)CZ&M=hoxEKK?^?)Y_i!-IC$ORl?R(44>Z@VN7~ogx%a+7s(?vLLc3lu_d~*tGHz z9`Lng^?Gydb!a(eucr-B7p2Gs^3o^t(?HADdW!kG!cG{_*zKfSpN(P+1@$hJJY9}E z_!VL478bLYL+2*N0nA)Y`k%E(LAquxpanqwvAheemw(h^-2;h&c(7pF literal 24906 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 ZLmAo{>~eYHmLhnY+AQ0fG5&9tK2 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 diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx index 2e426dd..f96f0d7 100644 --- a/src/components/ErrorBoundary.tsx +++ b/src/components/ErrorBoundary.tsx @@ -1,4 +1,6 @@ import { Component, type ReactNode, type ErrorInfo } from 'react'; +import summer from '@/assets/Rick-And-Morty-PNG-Pic-Background.png'; +import { Button } from '@/components/Button'; type Props = { children: ReactNode; @@ -24,9 +26,21 @@ class ErrorBoundary extends Component { render(): ReactNode { if (this.state.hasError) { return ( -
-

Something went wrong

-

Please reload the page or try again later

+
+ Summer +

+ Ugh... something totally broke! +

+

+ I literally cannot believe this just happened. Try refreshing or + like... tell Morty... +

+
); } diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index 9d3bf6d..408cae8 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -13,7 +13,7 @@ class Footer extends Component { className="text-red-500 cursor-pointer" onClick={this.props.onThrowError} > - Throw Error + Break the Universe ); From 1b304dd6845beae6f8cbea8998dbcd0984596e54 Mon Sep 17 00:00:00 2001 From: maiano Date: Fri, 11 Jul 2025 01:40:36 +0200 Subject: [PATCH 21/31] refactor: replace text button with svg chevron icons --- package-lock.json | 403 ++++++++++++++++++++++++++++++- package.json | 3 +- src/assets/arrow-left.svg | 1 + src/assets/arrow-right.svg | 1 + src/assets/chevron-left.svg | 1 + src/assets/chevron-right.svg | 1 + src/components/Button.tsx | 4 +- src/components/ErrorBoundary.tsx | 2 +- src/components/Pagination.tsx | 6 +- src/vite-env.d.ts | 1 + vite.config.ts | 4 +- 11 files changed, 417 insertions(+), 10 deletions(-) create mode 100644 src/assets/arrow-left.svg create mode 100644 src/assets/arrow-right.svg create mode 100644 src/assets/chevron-left.svg create mode 100644 src/assets/chevron-right.svg diff --git a/package-lock.json b/package-lock.json index d4d96a3..56fc51d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,8 @@ "prettier": "^3.6.2", "typescript": "~5.8.3", "typescript-eslint": "^8.34.1", - "vite": "^7.0.0" + "vite": "^7.0.0", + "vite-plugin-svgr": "^4.3.0" } }, "node_modules/@adobe/css-tools": { @@ -1556,6 +1557,42 @@ "dev": true, "license": "MIT" }, + "node_modules/@rollup/pluginutils": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", + "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.44.1", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz", @@ -1823,6 +1860,258 @@ "dev": true, "license": "MIT" }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, "node_modules/@tailwindcss/node": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.11.tgz", @@ -3203,6 +3492,19 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001726", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz", @@ -3716,6 +4018,17 @@ "dev": true, "license": "MIT" }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -3771,6 +4084,19 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -4415,6 +4741,13 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -6151,6 +6484,16 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -6360,6 +6703,17 @@ "dev": true, "license": "MIT" }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", @@ -6607,6 +6961,16 @@ "dev": true, "license": "MIT" }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -7257,6 +7621,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -7487,6 +7862,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true, + "license": "MIT" + }, "node_modules/synckit": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", @@ -7669,8 +8051,8 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "optional": true + "devOptional": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", @@ -7989,6 +8371,21 @@ } } }, + "node_modules/vite-plugin-svgr": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.3.0.tgz", + "integrity": "sha512-Jy9qLB2/PyWklpYy0xk0UU3TlU0t2UMpJXZvf+hWII1lAmRHrOUKi11Uw8N3rxoNk7atZNYO3pR3vI1f7oi+6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.3", + "@svgr/core": "^8.1.0", + "@svgr/plugin-jsx": "^8.1.0" + }, + "peerDependencies": { + "vite": ">=2.6.0" + } + }, "node_modules/vite/node_modules/fdir": { "version": "6.4.6", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", diff --git a/package.json b/package.json index 7c5b7f8..ebc7862 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,8 @@ "prettier": "^3.6.2", "typescript": "~5.8.3", "typescript-eslint": "^8.34.1", - "vite": "^7.0.0" + "vite": "^7.0.0", + "vite-plugin-svgr": "^4.3.0" }, "lint-staged": { "*.{json, md, css, scss}": "prettier --list-different --ignore-unknown", diff --git a/src/assets/arrow-left.svg b/src/assets/arrow-left.svg new file mode 100644 index 0000000..d485cc6 --- /dev/null +++ b/src/assets/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/arrow-right.svg b/src/assets/arrow-right.svg new file mode 100644 index 0000000..18e449e --- /dev/null +++ b/src/assets/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/chevron-left.svg b/src/assets/chevron-left.svg new file mode 100644 index 0000000..936df0d --- /dev/null +++ b/src/assets/chevron-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/chevron-right.svg b/src/assets/chevron-right.svg new file mode 100644 index 0000000..73a56b4 --- /dev/null +++ b/src/assets/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/Button.tsx b/src/components/Button.tsx index 7feab81..8af10f8 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -29,7 +29,9 @@ export class Button extends Component { ); } } diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx index f96f0d7..fab1f94 100644 --- a/src/components/ErrorBoundary.tsx +++ b/src/components/ErrorBoundary.tsx @@ -39,7 +39,7 @@ class ErrorBoundary extends Component { onClick={() => window.location.reload()} className="text-gray-700" > - I’m out. Fix it yourself! + Tell Morty
); diff --git a/src/components/Pagination.tsx b/src/components/Pagination.tsx index ac5122a..85324c7 100644 --- a/src/components/Pagination.tsx +++ b/src/components/Pagination.tsx @@ -1,4 +1,6 @@ import { Component } from 'react'; +import LeftIcon from '@/assets/chevron-left.svg?react'; +import RightIcon from '@/assets/chevron-right.svg?react'; import { Button } from '@/components/Button'; type PaginationProps = { @@ -45,7 +47,7 @@ export class Pagination extends Component { disabled={value === 1} className="mx-2 cursor-pointer" > - Prev + {pageButtons} @@ -55,7 +57,7 @@ export class Pagination extends Component { disabled={value === total} className="mx-2 cursor-pointer" > - Next +
); diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 11f02fe..b1f45c7 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -1 +1,2 @@ /// +/// diff --git a/vite.config.ts b/vite.config.ts index ed04acc..1ed6123 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,14 +2,14 @@ import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import tailwindcss from '@tailwindcss/vite'; import path from 'path'; +import svgr from 'vite-plugin-svgr'; // https://vite.dev/config/ export default defineConfig({ - plugins: [react(), tailwindcss()], + plugins: [react(), tailwindcss(), svgr()], resolve: { alias: { '@': path.resolve(__dirname, './src'), }, }, - // assetsInclude: ['**/*.ttf'], }); From 3f5d7e17233aeebe458821c6cf807c81165028a6 Mon Sep 17 00:00:00 2001 From: maiano Date: Fri, 11 Jul 2025 12:22:47 +0200 Subject: [PATCH 22/31] refactor: second update ErrorBoundary fallback with custom content --- src/assets/arrow-left.svg | 1 - src/assets/arrow-right.svg | 1 - src/components/ErrorBoundary.tsx | 22 +++++++++++++--------- 3 files changed, 13 insertions(+), 11 deletions(-) delete mode 100644 src/assets/arrow-left.svg delete mode 100644 src/assets/arrow-right.svg diff --git a/src/assets/arrow-left.svg b/src/assets/arrow-left.svg deleted file mode 100644 index d485cc6..0000000 --- a/src/assets/arrow-left.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/arrow-right.svg b/src/assets/arrow-right.svg deleted file mode 100644 index 18e449e..0000000 --- a/src/assets/arrow-right.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx index fab1f94..661ff85 100644 --- a/src/components/ErrorBoundary.tsx +++ b/src/components/ErrorBoundary.tsx @@ -26,20 +26,24 @@ class ErrorBoundary extends Component { render(): ReactNode { if (this.state.hasError) { return ( -
- Summer -

- Ugh... something totally broke! +
+ Summer in shock +

+ Seriously? You crashed the multiverse’s mainframe!

-

- I literally cannot believe this just happened. Try refreshing or - like... tell Morty... +

+ Like, this is lamer than Rick’s parenting or Morty’s entire + existence. Smash the button, or be a loser who looks stuff up!

); From 5c91e81b3243460c6fe556799cb0ced966235698 Mon Sep 17 00:00:00 2001 From: maiano Date: Fri, 11 Jul 2025 16:04:48 +0200 Subject: [PATCH 23/31] refactor: update 404 fallback --- src/pages/HomePage.tsx | 4 +++- src/shared/utils/fetchCharacters.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index 986b8d8..f0b3825 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -25,7 +25,9 @@ class HomePage extends Component {

{loading || error ? ( -

{error}

+

+ {error} +

) : ( )} diff --git a/src/shared/utils/fetchCharacters.ts b/src/shared/utils/fetchCharacters.ts index 287c9dc..203801e 100644 --- a/src/shared/utils/fetchCharacters.ts +++ b/src/shared/utils/fetchCharacters.ts @@ -10,7 +10,7 @@ export async function fetchCharacters( const response = await fetch(url); if (!response.ok) { - throw new Error('Not found'); + throw new Error('Seriously? 404, multiverse not found!'); } return (await response.json()) as CharacterApiResponse; From 20553b47182d0e917f3e05926bf4d96da6365a32 Mon Sep 17 00:00:00 2001 From: maiano Date: Fri, 11 Jul 2025 21:03:45 +0200 Subject: [PATCH 24/31] feat: add information to the Card component --- src/components/Card.tsx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/components/Card.tsx b/src/components/Card.tsx index f8bacfa..13ffa53 100644 --- a/src/components/Card.tsx +++ b/src/components/Card.tsx @@ -7,7 +7,8 @@ type CardProps = { export class Card extends Component { render() { - const { name, status, species, gender, image } = this.props.character; + const { name, status, species, gender, image, origin, location } = + this.props.character; return (
@@ -16,11 +17,21 @@ export class Card extends Component { alt={name} className="min-w-36 rounded-full object-cover" /> -
+

{name}

-

+

{species} - {status}, {gender}

+ {origin.name !== 'unknown' ? ( +

+ Native dimension: {origin.name} +

+ ) : ( +

+ Dimension unknown. Last seen:{' '} + {location?.name ?? 'somewhere in the multiverse'} +

+ )}
); From 637feb305045d5dc8442648ecb47b76d6ad39267 Mon Sep 17 00:00:00 2001 From: maiano Date: Sat, 12 Jul 2025 01:26:19 +0200 Subject: [PATCH 25/31] refactor: move fetching logic to HomePage --- src/App.tsx | 68 +------------------ src/pages/HomePage.tsx | 64 ++++++++++++++--- src/shared/constants/api.ts | 1 + .../shared/utils/fetch-\321\201haracters.ts" | 4 +- 4 files changed, 60 insertions(+), 77 deletions(-) rename src/shared/utils/fetchCharacters.ts => "src/shared/utils/fetch-\321\201haracters.ts" (75%) diff --git a/src/App.tsx b/src/App.tsx index a2f3cf4..c047bf2 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,68 +1,19 @@ import { Component, type ReactNode } from 'react'; -import spinner from '@/assets/spinner-gap-thin.svg'; import Footer from '@/components/Footer'; import Header from '@/components/Header'; -import { LoadingOverlay } from '@/components/LoadingOverlay'; import HomePage from '@/pages/HomePage'; -import { fetchCharacters } from '@/shared/utils/fetchCharacters'; -import { searchStorage } from '@/shared/utils/local-storage'; -import type { ApiInfo, Character } from '@/types/character'; type AppState = { - info: ApiInfo | null; - characters: Character[]; - loading: boolean; - error: string | null; wouldThrow: boolean; - page: number; }; class App extends Component { state: AppState = { - info: null, - characters: [], - loading: false, - error: null, wouldThrow: false, - page: 1, }; - componentDidMount(): void { - this.fetchCharacters(searchStorage.get()); - } - - fetchCharacters = async (search: string, page = 1) => { - try { - this.setState({ loading: true, error: null }); - - const data = await fetchCharacters(search, page); - - this.setState({ - info: data.info, - characters: data.results, - page, - }); - } catch (error) { - this.setState({ - error: (error as Error).message, - characters: [], - }); - } finally { - setTimeout(() => { - this.setState({ loading: false }); - }, 200); - } - }; - - handleSearch = (text: string) => { - this.fetchCharacters(text); - }; - - handlePageChange = (page: number) => - this.fetchCharacters(searchStorage.get(), page); - render(): ReactNode { - const { characters, loading, error, wouldThrow } = this.state; + const { wouldThrow } = this.state; if (wouldThrow) { throw new Error('test error from button'); @@ -72,22 +23,7 @@ class App extends Component {
- - Loading - - +
this.setState({ wouldThrow: true })} />
diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index f0b3825..511f20b 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -1,28 +1,74 @@ import { type ReactNode, Component } from 'react'; +import spinner from '@/assets/spinner-gap-thin.svg'; import { CardList } from '@/components/CardList'; +import { LoadingOverlay } from '@/components/LoadingOverlay'; import { Pagination } from '@/components/Pagination'; import SearchBar from '@/components/SearchBar'; +import { fetchCharacters } from '@/shared/utils/fetch-сharacters'; +import { searchStorage } from '@/shared/utils/local-storage'; import type { ApiInfo, Character } from '@/types/character'; -type Props = { +type State = { + info: ApiInfo | null; characters: Character[]; loading: boolean; error: string | null; page: number; - info: ApiInfo | null; - onSearch: (text: string) => void; - onPageChange: (page: number) => void; }; -class HomePage extends Component { +class HomePage extends Component { + state: State = { + info: null, + characters: [], + loading: false, + error: null, + page: 1, + }; + + componentDidMount(): void { + this.fetchCharacters(searchStorage.get()); + } + + fetchCharacters = async (search: string, page = 1) => { + try { + this.setState({ loading: true, error: null }); + + const data = await fetchCharacters(search, page); + + this.setState({ + info: data.info, + characters: data.results, + page, + }); + } catch (error) { + this.setState({ + error: (error as Error).message, + characters: [], + }); + } finally { + setTimeout(() => { + this.setState({ loading: false }); + }, 200); + } + }; + + handleSearch = (text: string) => { + this.fetchCharacters(text); + }; + + handlePageChange = (page: number) => + this.fetchCharacters(searchStorage.get(), page); + render(): ReactNode { - const { characters, loading, error, page, info, onSearch, onPageChange } = - this.props; + const { characters, loading, error, page, info } = this.state; return (
+ + Loading +
- +
{loading || error ? (

@@ -36,7 +82,7 @@ class HomePage extends Component { className="mt-8 flex-wrap" total={info?.pages} value={page} - onChange={onPageChange} + onChange={this.handlePageChange} /> )}

diff --git a/src/shared/constants/api.ts b/src/shared/constants/api.ts index 92b30ee..69d8b34 100644 --- a/src/shared/constants/api.ts +++ b/src/shared/constants/api.ts @@ -1 +1,2 @@ export const BASE_API_URL = 'https://rickandmortyapi.com/api'; +export const API_ERROR_404 = 'Seriously? 404, multiverse not found!'; diff --git a/src/shared/utils/fetchCharacters.ts "b/src/shared/utils/fetch-\321\201haracters.ts" similarity index 75% rename from src/shared/utils/fetchCharacters.ts rename to "src/shared/utils/fetch-\321\201haracters.ts" index 203801e..4d9384f 100644 --- a/src/shared/utils/fetchCharacters.ts +++ "b/src/shared/utils/fetch-\321\201haracters.ts" @@ -1,4 +1,4 @@ -import { BASE_API_URL } from '@/shared/constants/api'; +import { API_ERROR_404, BASE_API_URL } from '@/shared/constants/api'; import type { CharacterApiResponse } from '@/types/character'; export async function fetchCharacters( @@ -10,7 +10,7 @@ export async function fetchCharacters( const response = await fetch(url); if (!response.ok) { - throw new Error('Seriously? 404, multiverse not found!'); + throw new Error(API_ERROR_404); } return (await response.json()) as CharacterApiResponse; From d22c023ac49b88083a14edc06ceb2a15c5e52d50 Mon Sep 17 00:00:00 2001 From: maiano Date: Sat, 12 Jul 2025 03:12:51 +0200 Subject: [PATCH 26/31] feat: improve unknown fields in the card --- src/components/Card.tsx | 42 ++++++++++++++++++++++++++----------- src/components/CardList.tsx | 2 +- src/components/Header.tsx | 2 +- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/components/Card.tsx b/src/components/Card.tsx index 13ffa53..a847cce 100644 --- a/src/components/Card.tsx +++ b/src/components/Card.tsx @@ -5,32 +5,50 @@ type CardProps = { character: Character; }; +const CardText = ({ children }: { children: React.ReactNode }) => ( +

{children}

+); + export class Card extends Component { + getValue(key: string, value: string): string { + if (value === 'unknown') { + switch (key) { + case 'status': + return 'Glitchy life status'; + case 'gender': + return 'Weird identity'; + default: + return `${key}: Rick broke it!`; + } + } + return value; + } + render() { const { name, status, species, gender, image, origin, location } = this.props.character; return ( -
+
{name}

{name}

-

- {species} - {status}, {gender} -

+ Species Code: {species} + Live Status: {this.getValue('status', status)} + Identity: {this.getValue('gender', gender)} {origin.name !== 'unknown' ? ( -

- Native dimension: {origin.name} -

+ Native Dimension: {origin.name} ) : ( -

- Dimension unknown. Last seen:{' '} - {location?.name ?? 'somewhere in the multiverse'} -

+ + Origin lost, last spotted:{' '} + {location?.name && location.name !== 'unknown' + ? location.name + : 'somewhere in the multiverse'} + )}
diff --git a/src/components/CardList.tsx b/src/components/CardList.tsx index 2ae802a..c0ed1d2 100644 --- a/src/components/CardList.tsx +++ b/src/components/CardList.tsx @@ -15,7 +15,7 @@ export class CardList extends Component { } return ( -
+
{items.map((char) => ( ))} diff --git a/src/components/Header.tsx b/src/components/Header.tsx index a04ef82..3b82b85 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -4,7 +4,7 @@ import logo from '@/assets/rick-and-morty-sticker-b-w.webp'; class Header extends Component { render(): ReactNode { return ( -
+
Logo

Rick and Morty From 494e7206c22751146c04f991ef781cdadf4e22db Mon Sep 17 00:00:00 2001 From: maiano Date: Sat, 12 Jul 2025 11:04:08 +0200 Subject: [PATCH 27/31] feat: add adaptive rendering for page buttons --- src/components/Pagination.tsx | 40 +++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/components/Pagination.tsx b/src/components/Pagination.tsx index 85324c7..16289d2 100644 --- a/src/components/Pagination.tsx +++ b/src/components/Pagination.tsx @@ -10,6 +10,8 @@ type PaginationProps = { className?: string; }; +const MAX_PAGES = 7; + export class Pagination extends Component { handleClick = (page: number) => { const { onChange } = this.props; @@ -25,19 +27,23 @@ export class Pagination extends Component { const pageButtons = []; - for (let i = 1; i <= total; i++) { - pageButtons.push( - , - ); + const isShowAllPages = total <= MAX_PAGES; + + if (isShowAllPages) { + for (let i = 1; i <= total; i++) { + pageButtons.push( + , + ); + } } return ( @@ -50,7 +56,13 @@ export class Pagination extends Component { - {pageButtons} + {isShowAllPages ? ( + pageButtons + ) : ( + + Page {value} of {total} + + )} - +
+
+ + +
+
); } } diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index 511f20b..129d281 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -67,9 +67,7 @@ class HomePage extends Component { Loading -
- -
+ {loading || error ? (

{error} From 2b7ffb66236429a2cd31f0a6e493e6fabbc16071 Mon Sep 17 00:00:00 2001 From: maiano Date: Sat, 12 Jul 2025 17:35:27 +0200 Subject: [PATCH 30/31] refactor: make initial search term controlled via props --- src/components/SearchBar.tsx | 3 ++- src/pages/HomePage.tsx | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 406b205..1b61f4f 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -7,6 +7,7 @@ import { searchStorage } from '@/shared/utils/local-storage'; type Props = { onSearch: (text: string) => void; loading?: boolean; + term: string; }; type State = { @@ -15,7 +16,7 @@ type State = { class SearchBar extends Component { state: State = { - searchText: searchStorage.get(), + searchText: this.props.term, }; handleInputChange = (e: React.ChangeEvent) => { diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index 129d281..49ac1ce 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -14,6 +14,7 @@ type State = { loading: boolean; error: string | null; page: number; + term: string; }; class HomePage extends Component { @@ -23,10 +24,11 @@ class HomePage extends Component { loading: false, error: null, page: 1, + term: searchStorage.get(), }; componentDidMount(): void { - this.fetchCharacters(searchStorage.get()); + this.fetchCharacters(this.state.term); } fetchCharacters = async (search: string, page = 1) => { @@ -60,14 +62,14 @@ class HomePage extends Component { this.fetchCharacters(searchStorage.get(), page); render(): ReactNode { - const { characters, loading, error, page, info } = this.state; + const { characters, loading, error, page, info, term } = this.state; return (

Loading - + {loading || error ? (

{error} From c02239dae4ebd8f8c6e00e77d0044da4e2faa9f2 Mon Sep 17 00:00:00 2001 From: maiano Date: Sun, 13 Jul 2025 14:18:20 +0200 Subject: [PATCH 31/31] feat: add input name, id and autofocus for better accessibility --- src/components/SearchBar.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 1b61f4f..e78c521 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -46,6 +46,9 @@ class SearchBar extends Component { className="flex gap-4 w-full min-[448px]:w-11/12 min-[512px]:w-5/6 min-sm:w-4/5 min-md:w-2/3 min-lg:w-1/2" >