From 36e7d59db74cb9297361637424ab32cd865ffb17 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 1 Jul 2026 05:01:59 +0000 Subject: [PATCH 1/2] feature: port Angular 9 Hacker News PWA to React + Vite + TypeScript Add a functional React/TypeScript port of the Angular app under react-app/, preserving feeds, item details with recursive comments, user profiles, theming/settings, and PWA/offline support. Angular source kept as reference. Co-Authored-By: ameen --- react-app/.gitignore | 24 + react-app/README.md | 75 + react-app/eslint.config.js | 22 + react-app/index.html | 56 + react-app/package-lock.json | 7386 +++++++++++++++++ react-app/package.json | 35 + .../assets/icons/android-chrome-144x144.png | Bin 0 -> 29992 bytes .../assets/icons/android-chrome-192x192.png | Bin 0 -> 5033 bytes .../assets/icons/android-chrome-256x256.png | Bin 0 -> 6756 bytes .../assets/icons/android-chrome-512x512.png | Bin 0 -> 30053 bytes .../assets/icons/apple-touch-icon-120x120.png | Bin 0 -> 2629 bytes .../assets/icons/apple-touch-icon-152x152.png | Bin 0 -> 3304 bytes .../assets/icons/apple-touch-icon-180x180.png | Bin 0 -> 3846 bytes .../assets/icons/apple-touch-icon-60x60.png | Bin 0 -> 1699 bytes .../assets/icons/apple-touch-icon-76x76.png | Bin 0 -> 1993 bytes .../public/assets/icons/apple-touch-icon.png | Bin 0 -> 3846 bytes .../public/assets/icons/browserconfig.xml | 9 + .../public/assets/icons/favicon-16x16.png | Bin 0 -> 694 bytes .../public/assets/icons/favicon-32x32.png | Bin 0 -> 1371 bytes .../public/assets/icons/mstile-150x150.png | Bin 0 -> 3656 bytes .../public/assets/icons/safari-pinned-tab.svg | 1 + react-app/public/assets/images/cog.svg | 1 + .../public/assets/images/logo-header.png | Bin 0 -> 4109 bytes react-app/public/assets/images/logo.svg | 1 + react-app/public/favicon.ico | Bin 0 -> 5430 bytes react-app/src/App.scss | 24 + react-app/src/App.tsx | 41 + react-app/src/components/Comment.scss | 85 + react-app/src/components/Comment.tsx | 50 + react-app/src/components/ErrorMessage.scss | 115 + react-app/src/components/ErrorMessage.tsx | 25 + react-app/src/components/Footer.scss | 23 + react-app/src/components/Footer.tsx | 18 + react-app/src/components/Header.scss | 151 + react-app/src/components/Header.tsx | 52 + react-app/src/components/Item.scss | 70 + react-app/src/components/Item.tsx | 85 + react-app/src/components/Loader.scss | 109 + react-app/src/components/Loader.tsx | 9 + react-app/src/components/Settings.scss | 74 + react-app/src/components/Settings.tsx | 104 + react-app/src/context/SettingsContext.tsx | 85 + react-app/src/context/settingsContext.ts | 16 + react-app/src/hooks/useFeed.ts | 56 + react-app/src/hooks/useItem.ts | 50 + react-app/src/hooks/useSettings.ts | 12 + react-app/src/hooks/useUser.ts | 49 + react-app/src/main.tsx | 17 + react-app/src/models/index.ts | 54 + react-app/src/pages/Feed.scss | 109 + react-app/src/pages/Feed.tsx | 73 + react-app/src/pages/ItemDetails.scss | 153 + react-app/src/pages/ItemDetails.tsx | 158 + react-app/src/pages/User.scss | 91 + react-app/src/pages/User.tsx | 43 + react-app/src/services/hackernewsApi.ts | 42 + react-app/src/styles/_media.scss | 3 + react-app/src/styles/_theme_variables.scss | 37 + react-app/src/styles/_themes.scss | 245 + react-app/src/styles/styles.scss | 43 + react-app/src/utils/comment.ts | 7 + react-app/tsconfig.app.json | 26 + react-app/tsconfig.json | 7 + react-app/tsconfig.node.json | 23 + react-app/vite.config.ts | 67 + 65 files changed, 10111 insertions(+) create mode 100644 react-app/.gitignore create mode 100644 react-app/README.md create mode 100644 react-app/eslint.config.js create mode 100644 react-app/index.html create mode 100644 react-app/package-lock.json create mode 100644 react-app/package.json create mode 100644 react-app/public/assets/icons/android-chrome-144x144.png create mode 100644 react-app/public/assets/icons/android-chrome-192x192.png create mode 100644 react-app/public/assets/icons/android-chrome-256x256.png create mode 100644 react-app/public/assets/icons/android-chrome-512x512.png create mode 100644 react-app/public/assets/icons/apple-touch-icon-120x120.png create mode 100644 react-app/public/assets/icons/apple-touch-icon-152x152.png create mode 100644 react-app/public/assets/icons/apple-touch-icon-180x180.png create mode 100644 react-app/public/assets/icons/apple-touch-icon-60x60.png create mode 100644 react-app/public/assets/icons/apple-touch-icon-76x76.png create mode 100644 react-app/public/assets/icons/apple-touch-icon.png create mode 100644 react-app/public/assets/icons/browserconfig.xml create mode 100644 react-app/public/assets/icons/favicon-16x16.png create mode 100644 react-app/public/assets/icons/favicon-32x32.png create mode 100644 react-app/public/assets/icons/mstile-150x150.png create mode 100644 react-app/public/assets/icons/safari-pinned-tab.svg create mode 100755 react-app/public/assets/images/cog.svg create mode 100644 react-app/public/assets/images/logo-header.png create mode 100644 react-app/public/assets/images/logo.svg create mode 100644 react-app/public/favicon.ico create mode 100644 react-app/src/App.scss create mode 100644 react-app/src/App.tsx create mode 100644 react-app/src/components/Comment.scss create mode 100644 react-app/src/components/Comment.tsx create mode 100644 react-app/src/components/ErrorMessage.scss create mode 100644 react-app/src/components/ErrorMessage.tsx create mode 100644 react-app/src/components/Footer.scss create mode 100644 react-app/src/components/Footer.tsx create mode 100644 react-app/src/components/Header.scss create mode 100644 react-app/src/components/Header.tsx create mode 100644 react-app/src/components/Item.scss create mode 100644 react-app/src/components/Item.tsx create mode 100644 react-app/src/components/Loader.scss create mode 100644 react-app/src/components/Loader.tsx create mode 100644 react-app/src/components/Settings.scss create mode 100644 react-app/src/components/Settings.tsx create mode 100644 react-app/src/context/SettingsContext.tsx create mode 100644 react-app/src/context/settingsContext.ts create mode 100644 react-app/src/hooks/useFeed.ts create mode 100644 react-app/src/hooks/useItem.ts create mode 100644 react-app/src/hooks/useSettings.ts create mode 100644 react-app/src/hooks/useUser.ts create mode 100644 react-app/src/main.tsx create mode 100644 react-app/src/models/index.ts create mode 100644 react-app/src/pages/Feed.scss create mode 100644 react-app/src/pages/Feed.tsx create mode 100644 react-app/src/pages/ItemDetails.scss create mode 100644 react-app/src/pages/ItemDetails.tsx create mode 100644 react-app/src/pages/User.scss create mode 100644 react-app/src/pages/User.tsx create mode 100644 react-app/src/services/hackernewsApi.ts create mode 100644 react-app/src/styles/_media.scss create mode 100644 react-app/src/styles/_theme_variables.scss create mode 100644 react-app/src/styles/_themes.scss create mode 100644 react-app/src/styles/styles.scss create mode 100644 react-app/src/utils/comment.ts create mode 100644 react-app/tsconfig.app.json create mode 100644 react-app/tsconfig.json create mode 100644 react-app/tsconfig.node.json create mode 100644 react-app/vite.config.ts diff --git a/react-app/.gitignore b/react-app/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/react-app/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/react-app/README.md b/react-app/README.md new file mode 100644 index 000000000..c30013561 --- /dev/null +++ b/react-app/README.md @@ -0,0 +1,75 @@ +# 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 [Oxc](https://oxc.rs) +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## 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 defineConfig([ + 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 defineConfig([ + 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/react-app/eslint.config.js b/react-app/eslint.config.js new file mode 100644 index 000000000..ef614d25c --- /dev/null +++ b/react-app/eslint.config.js @@ -0,0 +1,22 @@ +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 { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + globals: globals.browser, + }, + }, +]) diff --git a/react-app/index.html b/react-app/index.html new file mode 100644 index 000000000..a6faaf1ef --- /dev/null +++ b/react-app/index.html @@ -0,0 +1,56 @@ + + + + + Angular 2 HN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+
+ + + diff --git a/react-app/package-lock.json b/react-app/package-lock.json new file mode 100644 index 000000000..e1dccbb20 --- /dev/null +++ b/react-app/package-lock.json @@ -0,0 +1,7386 @@ +{ + "name": "react-app", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "react-app", + "version": "0.0.0", + "dependencies": { + "react": "^19.2.7", + "react-dom": "^19.2.7", + "react-router-dom": "^7.18.1", + "sass": "^1.101.0", + "unfetch": "^4.2.0", + "vite-plugin-pwa": "^1.3.0" + }, + "devDependencies": { + "@eslint/js": "^10.0.1", + "@types/node": "^24.13.2", + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^6.0.3", + "eslint": "^10.6.0", + "eslint-plugin-react-hooks": "^7.1.1", + "eslint-plugin-react-refresh": "^0.5.3", + "globals": "^17.7.0", + "typescript": "~6.0.2", + "typescript-eslint": "^8.62.0", + "vite": "^8.1.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "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.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@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-annotate-as-pure": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", + "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz", + "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz", + "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-wrap-function": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz", + "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz", + "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz", + "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz", + "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz", + "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz", + "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz", + "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz", + "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", + "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz", + "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz", + "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz", + "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz", + "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz", + "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", + "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz", + "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz", + "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz", + "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/template": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz", + "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz", + "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz", + "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz", + "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz", + "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz", + "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz", + "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz", + "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz", + "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz", + "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz", + "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz", + "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz", + "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz", + "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", + "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz", + "integrity": "sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz", + "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz", + "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", + "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz", + "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz", + "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz", + "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz", + "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", + "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz", + "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz", + "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz", + "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz", + "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz", + "integrity": "sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz", + "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz", + "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", + "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz", + "integrity": "sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz", + "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz", + "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz", + "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz", + "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz", + "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz", + "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz", + "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz", + "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.29.7", + "@babel/plugin-syntax-import-attributes": "^7.29.7", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.29.7", + "@babel/plugin-transform-async-generator-functions": "^7.29.7", + "@babel/plugin-transform-async-to-generator": "^7.29.7", + "@babel/plugin-transform-block-scoped-functions": "^7.29.7", + "@babel/plugin-transform-block-scoping": "^7.29.7", + "@babel/plugin-transform-class-properties": "^7.29.7", + "@babel/plugin-transform-class-static-block": "^7.29.7", + "@babel/plugin-transform-classes": "^7.29.7", + "@babel/plugin-transform-computed-properties": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-dotall-regex": "^7.29.7", + "@babel/plugin-transform-duplicate-keys": "^7.29.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-dynamic-import": "^7.29.7", + "@babel/plugin-transform-explicit-resource-management": "^7.29.7", + "@babel/plugin-transform-exponentiation-operator": "^7.29.7", + "@babel/plugin-transform-export-namespace-from": "^7.29.7", + "@babel/plugin-transform-for-of": "^7.29.7", + "@babel/plugin-transform-function-name": "^7.29.7", + "@babel/plugin-transform-json-strings": "^7.29.7", + "@babel/plugin-transform-literals": "^7.29.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.29.7", + "@babel/plugin-transform-member-expression-literals": "^7.29.7", + "@babel/plugin-transform-modules-amd": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-modules-systemjs": "^7.29.7", + "@babel/plugin-transform-modules-umd": "^7.29.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-new-target": "^7.29.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", + "@babel/plugin-transform-numeric-separator": "^7.29.7", + "@babel/plugin-transform-object-rest-spread": "^7.29.7", + "@babel/plugin-transform-object-super": "^7.29.7", + "@babel/plugin-transform-optional-catch-binding": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/plugin-transform-private-methods": "^7.29.7", + "@babel/plugin-transform-private-property-in-object": "^7.29.7", + "@babel/plugin-transform-property-literals": "^7.29.7", + "@babel/plugin-transform-regenerator": "^7.29.7", + "@babel/plugin-transform-regexp-modifiers": "^7.29.7", + "@babel/plugin-transform-reserved-words": "^7.29.7", + "@babel/plugin-transform-shorthand-properties": "^7.29.7", + "@babel/plugin-transform-spread": "^7.29.7", + "@babel/plugin-transform-sticky-regex": "^7.29.7", + "@babel/plugin-transform-template-literals": "^7.29.7", + "@babel/plugin-transform-typeof-symbol": "^7.29.7", + "@babel/plugin-transform-unicode-escapes": "^7.29.7", + "@babel/plugin-transform-unicode-property-regex": "^7.29.7", + "@babel/plugin-transform-unicode-regex": "^7.29.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.29.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "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.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz", + "integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz", + "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "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/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@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/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", + "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.137.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.137.0.tgz", + "integrity": "sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.3.tgz", + "integrity": "sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.3.tgz", + "integrity": "sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.3.tgz", + "integrity": "sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.3.tgz", + "integrity": "sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.3.tgz", + "integrity": "sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.3.tgz", + "integrity": "sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.3.tgz", + "integrity": "sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.3.tgz", + "integrity": "sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.3.tgz", + "integrity": "sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.3.tgz", + "integrity": "sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.3.tgz", + "integrity": "sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.3.tgz", + "integrity": "sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.3.tgz", + "integrity": "sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.11.1", + "@emnapi/runtime": "1.11.1", + "@napi-rs/wasm-runtime": "^1.1.6" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.3.tgz", + "integrity": "sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.3.tgz", + "integrity": "sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "license": "MIT" + }, + "node_modules/@rollup/plugin-babel": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.1.0.tgz", + "integrity": "sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz", + "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.3.tgz", + "integrity": "sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "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/plugin-terser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-1.0.0.tgz", + "integrity": "sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==", + "license": "MIT", + "dependencies": { + "serialize-javascript": "^7.0.3", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", + "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==", + "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/rollup-android-arm-eabi": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", + "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", + "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", + "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", + "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", + "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", + "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", + "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", + "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", + "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", + "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", + "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", + "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", + "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", + "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", + "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", + "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", + "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", + "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", + "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", + "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", + "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", + "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", + "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", + "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", + "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@trickfilm400/rollup-plugin-off-main-thread": { + "version": "3.0.0-pre1", + "resolved": "https://registry.npmjs.org/@trickfilm400/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-3.0.0-pre1.tgz", + "integrity": "sha512-/67zpWDBLV+oYAEL682s1ktXL0HgqX76f6gaVGkGnVZlBbm1zd0v4Bz8MFF2GGhoX9rvfq3KSQHubFHwa6w6/Q==", + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.10", + "json5": "^2.2.3", + "magic-string": "^0.30.21", + "string.prototype.matchall": "^4.0.12" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "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/node": { + "version": "24.13.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.2.tgz", + "integrity": "sha512-fRa09kZTgu8o71KFcDjUFuc7F+dEbZYZmkI0mg5YBTRs0yMKjYHsq/c0urDKeDb+D5qVgXOdFcuu+DZPKOITwA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.62.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.62.1.tgz", + "integrity": "sha512-4EQM77WgVNxj7OkL/5b/D/xZsw00G577+UriYTC7JF5opcF3T2AuoeY7ueLaZgSVjSgCS6yOAJB5bRGLPSJUzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.62.1", + "@typescript-eslint/type-utils": "8.62.1", + "@typescript-eslint/utils": "8.62.1", + "@typescript-eslint/visitor-keys": "8.62.1", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.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.62.1", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.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.62.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.62.1.tgz", + "integrity": "sha512-sPhE4iHuJDSvoAiec+Ro8JyXw8f0ql13HFR82P99nCm9GwTEKG0KYLvDe6REk8BCXuit6vJAv/Yxg5ABaNS2rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.62.1", + "@typescript-eslint/types": "8.62.1", + "@typescript-eslint/typescript-estree": "8.62.1", + "@typescript-eslint/visitor-keys": "8.62.1", + "debug": "^4.4.3" + }, + "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 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.62.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.62.1.tgz", + "integrity": "sha512-yQ3RgY5RkSBpsNS1Bx/JQEcA24FOSdfGktoyprAr5u18390UQdtVcfnEv4nIrIshNnavlVyZBKxQwT1fIAE6cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.62.1", + "@typescript-eslint/types": "^8.62.1", + "debug": "^4.4.3" + }, + "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 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.62.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.62.1.tgz", + "integrity": "sha512-r4d249KbQ1SFdpeStvob8Ih6aPPIzfqllPVOtvhve6ZcpuVcYo5/7zUWckKpHE7StASX4kTKZTLf0WQm/wPkcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.62.1", + "@typescript-eslint/visitor-keys": "8.62.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.62.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.62.1.tgz", + "integrity": "sha512-xadytJqX9vJVQ2fdQjkcIVigwaOJNWkpjdLt6cEQ+xPnrI1fkp+/jZE/I97k9KUjqtpd25i0HeyZf3T6dutv2g==", + "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 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.62.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.62.1.tgz", + "integrity": "sha512-aXM5xlqXiTxPibXB93cLAURfT3rlizf7uMXISCXy66Isr/9hISJx3yDsKl0L7lKa51b8JpFuNKby0/O0pEm9jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.62.1", + "@typescript-eslint/typescript-estree": "8.62.1", + "@typescript-eslint/utils": "8.62.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.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 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.62.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.62.1.tgz", + "integrity": "sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q==", + "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.62.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.62.1.tgz", + "integrity": "sha512-xMcW9oP9u7fAMXYs9A65CVmtLQe2r//oXINHfi8HV+oiqhih17sbLdhXr4540YWlgpDKQdY854OL5ZrdCiQsAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.62.1", + "@typescript-eslint/tsconfig-utils": "8.62.1", + "@typescript-eslint/types": "8.62.1", + "@typescript-eslint/visitor-keys": "8.62.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.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 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.62.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.62.1.tgz", + "integrity": "sha512-sHtbPfuKNZCG+ih8SyjjucqRntSVmp8XgL5u6o9mAhiSn8ds5o/M/XdM0abweme2Tln3szOstOrZ9OXitvPh0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.62.1", + "@typescript-eslint/types": "8.62.1", + "@typescript-eslint/typescript-estree": "8.62.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 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.62.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.62.1.tgz", + "integrity": "sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.62.1", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.3.tgz", + "integrity": "sha512-vmFvco5/QuC2f9Oj+wTk0+9XeDFkHxSamwZKYc7MxYwKICfvUvlMhqKI0VuICPltGqh1neqBKDvO4kes1ya8vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.0.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + } + } + }, + "node_modules/acorn": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", + "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", + "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.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "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/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==", + "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/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==", + "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/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.40", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.40.tgz", + "integrity": "sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/browserslist": { + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.4.tgz", + "integrity": "sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==", + "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": { + "baseline-browser-mapping": "^2.10.38", + "caniuse-lite": "^1.0.30001799", + "electron-to-chromium": "^1.5.376", + "node-releases": "^2.0.48", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "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==", + "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==", + "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/caniuse-lite": { + "version": "1.0.30001800", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001800.tgz", + "integrity": "sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA==", + "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/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "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==", + "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==", + "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==", + "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.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "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/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "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==", + "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.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.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==", + "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/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.383", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.383.tgz", + "integrity": "sha512-I2484/KkAvl8lm9VyjH2JnbOIV0d/UCqT7gbzs6l+o6Vmn9wgB66uVcKX+Vk6HrXtY6fbWTOEXuv8waDTuFNCw==", + "license": "ISC" + }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "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-abstract-get": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-abstract-get/-/es-abstract-get-1.0.0.tgz", + "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "is-callable": "^1.2.7", + "object-inspect": "^1.13.4" + }, + "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==", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "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==", + "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-to-primitive": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.4.tgz", + "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==", + "license": "MIT", + "dependencies": { + "es-abstract-get": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "is-callable": "^1.2.7", + "is-date-object": "^1.1.0", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "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": "10.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.6.0.tgz", + "integrity": "sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==", + "dev": true, + "license": "MIT", + "workspaces": [ + "packages/*" + ], + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.6.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.2", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.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", + "minimatch": "^10.2.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", + "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.3.tgz", + "integrity": "sha512-5EMmLCV98Pi4o/f/3DP/v/tNqLHMIc9I8LKClNDWhZ9JTho89/kQcitCXQBMG7sAfVRK0Ie3T2EDOzp1YXYiVA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": "^9 || ^10" + } + }, + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "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/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==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-4.6.0.tgz", + "integrity": "sha512-lW6is4T1NFOYnmqGZIfvixqj7A7sSvScF+DN8EK6K58xI5MZ5UvYe0GjopxOXQtZvUn4eDdVuZ8XSoYWTMEKwA==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/bgub/eta?sponsor=1" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "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.1.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz", + "integrity": "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "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/filelist": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", + "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/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==", + "license": "MIT" + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "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.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "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==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz", + "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.4", + "is-callable": "^1.2.7", + "is-document.all": "^1.0.0" + }, + "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==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "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==", + "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-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "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==", + "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==", + "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/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/globals": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.7.0.tgz", + "integrity": "sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==", + "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==", + "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==", + "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/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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==", + "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==", + "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==", + "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.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" + }, + "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/immutable": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz", + "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==", + "license": "MIT" + }, + "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/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "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==", + "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-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==", + "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==", + "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==", + "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-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "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==", + "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==", + "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-document.all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz", + "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4" + }, + "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==", + "devOptional": 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==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "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-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "devOptional": 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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "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-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "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==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "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==", + "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-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==", + "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==", + "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==", + "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==", + "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==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "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-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==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.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/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "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-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "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.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "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.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "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.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "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.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "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.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "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.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "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.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "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.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "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.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "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/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.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "license": "MIT" + }, + "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==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", + "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "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/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-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT", + "optional": true + }, + "node_modules/node-releases": { + "version": "2.0.50", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz", + "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "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==", + "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==", + "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==", + "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/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==", + "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/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "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==", + "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==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "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": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", + "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", + "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.12", + "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/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.7" + } + }, + "node_modules/react-router": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.1.tgz", + "integrity": "sha512-GDLgg3i3uM0aeJO3Fm+TCS+sDQ7gu12T6x0qdTEzcwqEfleci7JwugVNIF3U//0FWKnJT7ptG+20B2jfDqnZAg==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.18.1.tgz", + "integrity": "sha512-KaZh+X/6UtEp28x51AUYZDMg9NGoz2ja3dNHa+ta/tk40vCzKhQ/RypCWBMLbmDr6//E24Vv5uPsrqXFozdkAg==", + "license": "MIT", + "dependencies": { + "react-router": "7.18.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "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==", + "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/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "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/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "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/rolldown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.3.tgz", + "integrity": "sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.137.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.1.3", + "@rolldown/binding-darwin-arm64": "1.1.3", + "@rolldown/binding-darwin-x64": "1.1.3", + "@rolldown/binding-freebsd-x64": "1.1.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.1.3", + "@rolldown/binding-linux-arm64-gnu": "1.1.3", + "@rolldown/binding-linux-arm64-musl": "1.1.3", + "@rolldown/binding-linux-ppc64-gnu": "1.1.3", + "@rolldown/binding-linux-s390x-gnu": "1.1.3", + "@rolldown/binding-linux-x64-gnu": "1.1.3", + "@rolldown/binding-linux-x64-musl": "1.1.3", + "@rolldown/binding-openharmony-arm64": "1.1.3", + "@rolldown/binding-wasm32-wasi": "1.1.3", + "@rolldown/binding-win32-arm64-msvc": "1.1.3", + "@rolldown/binding-win32-x64-msvc": "1.1.3" + } + }, + "node_modules/rollup": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz", + "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.62.2", + "@rollup/rollup-android-arm64": "4.62.2", + "@rollup/rollup-darwin-arm64": "4.62.2", + "@rollup/rollup-darwin-x64": "4.62.2", + "@rollup/rollup-freebsd-arm64": "4.62.2", + "@rollup/rollup-freebsd-x64": "4.62.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", + "@rollup/rollup-linux-arm-musleabihf": "4.62.2", + "@rollup/rollup-linux-arm64-gnu": "4.62.2", + "@rollup/rollup-linux-arm64-musl": "4.62.2", + "@rollup/rollup-linux-loong64-gnu": "4.62.2", + "@rollup/rollup-linux-loong64-musl": "4.62.2", + "@rollup/rollup-linux-ppc64-gnu": "4.62.2", + "@rollup/rollup-linux-ppc64-musl": "4.62.2", + "@rollup/rollup-linux-riscv64-gnu": "4.62.2", + "@rollup/rollup-linux-riscv64-musl": "4.62.2", + "@rollup/rollup-linux-s390x-gnu": "4.62.2", + "@rollup/rollup-linux-x64-gnu": "4.62.2", + "@rollup/rollup-linux-x64-musl": "4.62.2", + "@rollup/rollup-openbsd-x64": "4.62.2", + "@rollup/rollup-openharmony-arm64": "4.62.2", + "@rollup/rollup-win32-arm64-msvc": "4.62.2", + "@rollup/rollup-win32-ia32-msvc": "4.62.2", + "@rollup/rollup-win32-x64-gnu": "4.62.2", + "@rollup/rollup-win32-x64-msvc": "4.62.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "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==", + "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==", + "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/sass": { + "version": "1.101.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.101.0.tgz", + "integrity": "sha512-OL3GoQyoUdDt843DpVmDO6y2k1sc5IhUDSpu8XucEI+35neq5QivZ1iuegnpraEVTJXlQGK1gl27zKcTLEPbQw==", + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=20.19.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "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==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.7.tgz", + "integrity": "sha512-YAy8Od6KV+uuwUuU50np8fGB/Aues6Y0nAhA9y/hId74PlKUcme4pXcBD46NWKr1Q4osN/iseZ17YqO1XfmI8g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "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==", + "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==", + "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==", + "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==", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "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.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "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==", + "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==", + "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==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/smob": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.6.2.tgz", + "integrity": "sha512-RQsvleCbF8cVHEv+xuDGaA4pOizFqJ0GgjtMSRo6oP8pnN7WsigHgVGey6aILRBKv4W2YOMHLqbKdnB6hpB9fw==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "deprecated": "The work that was done in this beta branch won't be included in future versions", + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.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==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.2" + }, + "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==", + "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/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz", + "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "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/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "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==", + "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==", + "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.8", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz", + "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "possible-typed-array-names": "^1.1.0", + "reflect.getprototypeof": "^1.0.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.62.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.62.1.tgz", + "integrity": "sha512-vymnnM5g0AKQDSAyfP12nMIBvgwgA42syg74kkuZ4x1VuTzwQKwc5h9rGxeShCjny5o+zWAb6OEoz7XLgrIkIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.62.1", + "@typescript-eslint/parser": "8.62.1", + "@typescript-eslint/typescript-estree": "8.62.1", + "@typescript-eslint/utils": "8.62.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 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.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==", + "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": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "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": "8.1.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.2.tgz", + "integrity": "sha512-6YYPbRXTxx6bRXmOn7XdnQAy5DQNHhDgtjhDHI13oe4pY93kkcdGJWxpGwOm++/Wh0QpQhDrpIoVMrmrsI5AGQ==", + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.16", + "rolldown": "~1.1.3", + "tinyglobby": "^0.2.17" + }, + "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", + "@vitejs/devtools": "^0.3.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.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 + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "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-plugin-pwa": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-1.3.0.tgz", + "integrity": "sha512-c5kMgN+ITrOtHXp8PAtk2uOIEea6XjP/unCGxOWWBzQ6qa65qj/awHg0wf+QF9E/2u9vh86LqxPwzEPNbM2r5A==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.6", + "pretty-bytes": "^6.1.1", + "tinyglobby": "^0.2.10", + "workbox-build": "^7.4.1", + "workbox-window": "^7.4.1" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vite-pwa/assets-generator": "^1.0.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "workbox-build": "^7.4.1", + "workbox-window": "^7.4.1" + }, + "peerDependenciesMeta": { + "@vite-pwa/assets-generator": { + "optional": true + } + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "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==", + "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==", + "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==", + "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.22", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", + "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "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/workbox-background-sync": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.4.1.tgz", + "integrity": "sha512-HhT7KE8tOWDm02wRNshXUnUPofMlhenF2DBdUnDPOubhizzPeItkYTmAB6td1Z2cjYPa98vzEiPLEuzn5hN66g==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.4.1.tgz", + "integrity": "sha512-uAlgslKLvbQY+suirIdnBCSYrcgBhjp81Nj4l1lj/Jmj0MJO2CJERnCJjT0GFVwmReV0N+zs78K6gqd5gr9/+A==", + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-build": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.4.1.tgz", + "integrity": "sha512-SDhxIvEAde9Gy/5w4Yo1Jh/M49Z0qE3q0oteyE8zGq0DScxFqVBcCtIXFuLtmtxRQZCMbf0prco4VyEu3KBQuw==", + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.24.4", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-replace": "^6.0.3", + "@rollup/plugin-terser": "^1.0.0", + "@trickfilm400/rollup-plugin-off-main-thread": "^3.0.0-pre1", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "eta": "^4.5.1", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^11.0.1", + "pretty-bytes": "^5.3.0", + "rollup": "^4.53.3", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "7.4.1", + "workbox-broadcast-update": "7.4.1", + "workbox-cacheable-response": "7.4.1", + "workbox-core": "7.4.1", + "workbox-expiration": "7.4.1", + "workbox-google-analytics": "7.4.1", + "workbox-navigation-preload": "7.4.1", + "workbox-precaching": "7.4.1", + "workbox-range-requests": "7.4.1", + "workbox-recipes": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1", + "workbox-streams": "7.4.1", + "workbox-sw": "7.4.1", + "workbox-window": "7.4.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.7.tgz", + "integrity": "sha512-TajUJwGWbDwkCx/CZi7tRE8PVB7simCvKJfHUsSdvps+aTM/PDPP4gkLmKnc+x3CE//y9i/nj74GqdL/hwk7Iw==", + "license": "MIT", + "dependencies": { + "jsonpointer": "^5.0.1", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "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/workbox-build/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==", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.4.1.tgz", + "integrity": "sha512-8xaFoJdDc2OjrlbbL3gEeBO1WKcMwRqwLRupgqahYXu75yXajPLuwrbXMrIGZuWYXrQwk0xDjOxZ/ujCy/oJYw==", + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-core": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.4.1.tgz", + "integrity": "sha512-DT+vu46eh/2vRsSHTY4Xmc32Z1rr9PRlQUXr1Dx30ZuXRWwOsvZgGgcwxcasubQLQmbTNYZjv44LkBAQ4tT5tQ==", + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.4.1.tgz", + "integrity": "sha512-lRKUF7b+OGbeXkQk1s6MHXOa3d7Xxf7Of31W6c6hCfipfIyrtdWZ89stq21AHZMaoG7VNFoHply4Ox+rU31TWg==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-google-analytics": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.4.1.tgz", + "integrity": "sha512-Mks1JwLEt++ZAkF6sS1OpSh9RtAMIsiDgRpK+codiHGIPXeaUOgi4cPc3GFadUl8V5QPeypEk8Oxgl3HlwVzHw==", + "license": "MIT", + "dependencies": { + "workbox-background-sync": "7.4.1", + "workbox-core": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.4.1.tgz", + "integrity": "sha512-C4KVsjPcYKJOhr631AxR9XoG2rLF3QiTk5aMv36MXOjtWvm8axwNFAtKUPGsWUwLXXAMgYM1En7fsvndaXeXRQ==", + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-precaching": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.4.1.tgz", + "integrity": "sha512-cdr/9qByww7yzEp7zg/qI4ukUrrNjQLgN+ONQRpjy/VqGQXwkgHwr00KksGJK8v0VifwDXBb8a4cWNZH71jn3Q==", + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1" + } + }, + "node_modules/workbox-range-requests": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.4.1.tgz", + "integrity": "sha512-7i2oxAUE82gHdAJBCAQ04JzNOdRPqzuOzGfoUyJpFSmeqBNYGPrAH8GPoPjUQTfp+NycwrD2H68VtuF8qxv0vQ==", + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-recipes": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.4.1.tgz", + "integrity": "sha512-gnbVfmV4/TtmQaM4x9AtuXhcdstJsep3XMVeztOrQVPT+R6+6DeBjGTCQ7fFCXm+4GEHUA5VEBTyi5+4gWGeog==", + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "7.4.1", + "workbox-core": "7.4.1", + "workbox-expiration": "7.4.1", + "workbox-precaching": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1" + } + }, + "node_modules/workbox-routing": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.4.1.tgz", + "integrity": "sha512-yubJGErZOusuidAenaL5ypfhQOa7urxP/f8E0ws7FPb4039RiWXUWBAyUkmUoOL/BcQGen3h0J8872d51IYxtA==", + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-strategies": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.4.1.tgz", + "integrity": "sha512-GZxpaw9NbmOelj7667uZ2kpk5BFpOGbO4X0qjwh5ls8XQ8C+Lha5LQchTiUzsTFSS+NlUpftYAyOVXvQUrcqOQ==", + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-streams": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.4.1.tgz", + "integrity": "sha512-HWWtraKUbJknd9kgqGcpQ3G114HOPYvqs8HaJMDs2ebLNAimDkVDaWfAXE6Ybl+m8U6KsCE6pWyLYuigWmnAXw==", + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1", + "workbox-routing": "7.4.1" + } + }, + "node_modules/workbox-sw": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.4.1.tgz", + "integrity": "sha512-fez5f2DUlDJWTFYkCWQpY10N8gtztd849NswCbVFk0QlcSM4HT5A8x4g4ii650yem4I8tHY0R7JZahwp3ltIPw==", + "license": "MIT" + }, + "node_modules/workbox-window": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.4.1.tgz", + "integrity": "sha512-notZDH2u8VXaqyuD7xaqIfEFi6SRM4SUSd7ewe9PDsVqADuepxX2ZMY3uvuZGxzY5ZOsGC/vD3A/3smFtJt4/A==", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "7.4.1" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "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" + } + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + } + } +} diff --git a/react-app/package.json b/react-app/package.json new file mode 100644 index 000000000..9fce70af2 --- /dev/null +++ b/react-app/package.json @@ -0,0 +1,35 @@ +{ + "name": "react-app", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "typecheck": "tsc -b", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.2.7", + "react-dom": "^19.2.7", + "react-router-dom": "^7.18.1", + "sass": "^1.101.0", + "unfetch": "^4.2.0", + "vite-plugin-pwa": "^1.3.0" + }, + "devDependencies": { + "@eslint/js": "^10.0.1", + "@types/node": "^24.13.2", + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^6.0.3", + "eslint": "^10.6.0", + "eslint-plugin-react-hooks": "^7.1.1", + "eslint-plugin-react-refresh": "^0.5.3", + "globals": "^17.7.0", + "typescript": "~6.0.2", + "typescript-eslint": "^8.62.0", + "vite": "^8.1.1" + } +} diff --git a/react-app/public/assets/icons/android-chrome-144x144.png b/react-app/public/assets/icons/android-chrome-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..833fcf97ffa8be01d9efa488b6a927f62fb0ebf2 GIT binary patch literal 29992 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
mg~B#bqT^yv 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 literal 0 HcmV?d00001 diff --git a/react-app/public/assets/icons/android-chrome-512x512.png b/react-app/public/assets/icons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..5baddb33011b10828e9539a0a7b662993b8b3928 GIT binary patch literal 30053 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 RoCydo9Zh|W3N>8l{{d*_(P;nx literal 0 HcmV?d00001 diff --git a/react-app/public/assets/icons/apple-touch-icon-120x120.png b/react-app/public/assets/icons/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b71708cef98a9cefe018f9bb7027b057e331ec GIT binary patch literal 2629 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 literal 0 HcmV?d00001 diff --git a/react-app/public/assets/icons/apple-touch-icon-152x152.png b/react-app/public/assets/icons/apple-touch-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..cb316f56ac9ace3deee6195a062f82766609ab73 GIT binary patch literal 3304 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 m<(AieZ&O!Yb=6f@U4H>fl$@Z$Iq`M?0000g)gi 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 IM6N<$f*L6ZVE_OC literal 0 HcmV?d00001 diff --git a/react-app/public/assets/icons/apple-touch-icon-60x60.png b/react-app/public/assets/icons/apple-touch-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..7b588a9cdbf967c6d44a2a8c66de09e196be5bf5 GIT binary patch literal 1699 zcmV;U23+}xP)DBoG5;to)hR6h{P_O=|Nk*I|4L8)K}FX#Isg9t)FLPUEj0f# zIsaZ_|NQ*_Qdj>qIsNhR)+{g6A|?Iz_tPIE{P6JqI6nU*EdKiX|MvF%?(YBc^4mj3 z-9C@$!blK;24|LExb+}+kGE8%Qz|Ni~#i-r2<=+q=7?W?T+ zPE-Ex>(?X+kdyyvV(OEX|L^bmDPH`>n6xVPyT&)cW%B{Z(7?EHc?UJ^uau|H8ZNsHxaML;XEM z|LW@dzrgtA<^TKp|0gZ~!NULa^!?}F|5!}ZASCl6DgJ72_0Q1p$H?xWq4Fs%{QLX< z>*4?T_W$?u|LpAHR8HJKI{(wp?Uj-KmYMy4gywg4|F5q5;M)Jh!~ctp?2?Z8?Cjxi zbMz%F|42;#M@0QnSO4+r;9FhSEiC^sIMpvQ|Ni>@OHkx(YyR2V<$i(MM@#;amDD9F z;(mebm6zvoY5$_7@~)=kW@7)js`I)@REJ=v#a~X z$Mwm|_Qt>eSX||1Vfo+S?2n57TwLL3YX9`>|Mm3$k&XYjs{f3T^SHMEx2gZ7pWIzv z+)q*eEHK_zTI6qS^T5FQ)z;M|D(r}U|F^3D@$mig^zf;w_|wk)Xl&IZC;y?O@0N@I zL^}7tvi+#4{_*hLQ&r$nP5F?F_|H{Gt&d~6`!206e|9NHMWoPcV zx#x9m_{hroadqjUr1-+M+BY%yy1V;iXz-qw_2A*uBq`Q4IQCIh|8{QpmYMuTOz*_S z|B8p}va|Wh%jlt^_v`EYW^3e+koDo=@`Z>Cysx$Z00U=9L_t(|UhURHxFbsdhT&?) z&Y^AFwlTDA+qP}nxVCNEwz0U$Io)08=}B_e^F2?N?;?MtIt{RH*EgwfYnbW($kfDy z5`A0FqKb>2dQ;_$nOQo99~n(kIg8d0d)j>({@&ymEAPmGDT<;gW7CLTZu!ua8*M=x z!$a)!ti#8Kx|nF^w4nw;LM-_9k50z=D@l8=gnfF8Q$qYWg+!|lr95*r2sdpCUkZC6wh$6 z9l_c)5O5Y)n;OO3c1H>MPSqgTScl;x1H^aU6U;LV}62=P<}T<@Q!zn3^}^(MV6iP@`S+{zJXt^ka`?% z8K)1vKKA}0n>EuXQ1_0G48U-42Zl{kaD4Z;d7b#m7|jMViK%#irJc+xV6Z8f#A~|) zyhe`1wJ}|IdSo7feX9xFTZiMy^7%hH@z~>IJ|S^?EP+=VFnk|axMv}7;xDq#lY>R{ zA@Bh`jy2t;%}8|)_RXcyharZy87-`pLGhD!4C)$8Gb?SGW+24yn34R4D&g0&0fAT9 z2^_Lt0Z&?dkib+0Akvoc3OFE*z-)IJt`YI&&Z9!`_-uSI-}eF8F$;=6%zsHWKfiqL zsnci7i_f0>61^D4VKRJS33??}Du!oNs<`M3nxZl?DD+CMPM6{4APLW`RSC^~-rQ9H zd>FuEh9zc+c)$x;UP3=SD3qJFOu{MtG8}Fbad_!dVz2s$g#rn$GC_s^N;t;w>s?ZB zT!W3LWydUk95DT0Z~4I-mUY^-nR2Xs+s(gN^*cab!E$#ny>w1GkY`FN>dCmkwEBUM z6<&)PKK;zf+zPX~pU(!0wS4upg;B&k;=kP7( literal 0 HcmV?d00001 diff --git a/react-app/public/assets/icons/apple-touch-icon-76x76.png b/react-app/public/assets/icons/apple-touch-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..22094f6e1c6c2118c487b17298069bc955f1d2e9 GIT binary patch literal 1993 zcmV;)2R8VLP){{JmB)F&$c_4U&t zCD}Yc`}z6*GC1v)mi_SX-(Fz%&(Hnz^#3(G;Ad(7d3^u&_U@pf;ACg_*xCO?O8+b~ z|4B~TKtuod`2FVQIp#|2IAS>FU}=Nbaw&{?*j~ zJVM<{O#l7;{j9FmEH2kDGW{qo-X|*mCoTW_`uOPS`tkAoc6$G>u>L|w>zSMXEi(WA z{{AU2;3g{nGBe&uL)Q&#up=l0*<`0wxka&_^>$NwxY*e)&OdVJniSl=lv{gRaV%*6lC(D>2N;V?4( z!^Hn3EdJcv|5aPlAtdwB(*K{L|4K&xL_YprWB-Yb_R7oub9ejP-T&|8{-vn@@$cMH zROo?!{Z?H6j*0*C>*HKg*D^HyWN7b~jQsca{BU*u{QUhYG1Da}|CEXFyS)GE>-o>e z|I^CpjgS81+4kY$|GB&Jtflq2uJx*x+)hycb8zc^bN~AF|KQ>M=HLE)g4Zf4|NQ#Y zBPa39&HJ;p?0s$gxS`%8DgR7T)+Z>}DJSHDh5VM8{xmq>S6bRgO#L}O?YzAD_V(LU zSNmdS=9roJ^z`?|$M~qL=4xaAT3+sxhyL#7_`k6Bz`6O+%;r~G=Vn#^w65@}qT_3B z{Mp+4_V)iwJpXK8=xts9i+JjGW8OnK_p+MgRzv#o^58Q!|CpQTY+d4Sa?>9o=X-ePQ&!zl zRR2y(|Cp2i&&l(ml>aq2@Tsc*xVQhx#pI>eMd_)l z__@0O+soKEJo`{p^4Qt;k(2n;)&GQj|7mXjucG>fiTAItqm(Bd000DpNkl9j~N5gt0j19#YZ@%F02$P;o zWYoB5d{E?MG>7D|!Eq6pj3bYq_(uZ75*wpES>oLA7!u1(P*4($u{}o;OIFYZjj{70 zvC$4zV=1diEY!_vEVYxw?(v0IV#)v?5{qdOV5$s$X-91Ni3AurlSN`qQv{g*je>3; z!s~RROn^COlUQI5A5-Ld+IaH1pO>r6gM*ZOY_OWdG{Xegr(o=7yoP^;3jtpXv3x)^ zOCiKO3c_%sQjE!Ea|ul6MOj?3R)}?s!FExxNNH^RlLRKmYep;@#-{7B?%yg@K|Lly z`ujv8rI^Ab6KE_xfx=2AP127W{r=>lVo7P4SS%|mEvF~5^P#aBd62;1cR$Aasxp3` z`Da1pO*h|CE=s+%>JD2HLvyNWta=`asUDcQ#$S~&A3R)8`3P9B(00+tr(d8k=htY= zb+LJ@aLG07O&WV^DUB^%W*!5>%Tt+HjfTc*qx!&RFO;(|aXv?5Tpb%5W5mD`=42`1 zfPv*|X{@59q-2!=t8Z9a=EA^!ngAF@M$=g4y2i#02CT8F{stBnyOD+MYN9dF(9lq5 zz&39ITW_N=v@MH;1s$ca`c>Pv-)X?^+L5%OYA21k--`+2@kn3`?rUzI--DIzE=*!z z!D<#}pToc&>RpY^d$$0L?V)`;$)^Ug3jxeRqlFlp{LHh@LDlnzUsP1SbodYwy}b36S4G{} zO1x&RY-~mz`PlC2l3u%X6%`*leoTMoas8E;%-fZXMKnPI!+$8fqmbAMycyKiVyvS% z16OI=+uQH(G39!Wjj28OSX9e6+`Dt$Gq%kUV|dM|xF|jrXv52uS0EpguQr99G*VK< z2kSoMw^qlnh}$Rea!FFsMK;^gL*9#&_+A-t0?3pO*v?kDk#P zu*57=Sfrb!Z;tz&+f89Xi~XQQ7_$3(xhYH&bTZEZ3`qtbum`5IclqKh>>q~Y?&r<} zvvKFY`Suj-8$+@S-?ww1uekOfE^1*Pm@f8Gs|NHZuC?xG1vG;pyP99rpug3&{n}&_ zLz3W5dtgcG-|#mfz>wVe++_|}7I*o|GB=1ZeD2j8u%hgP7abrUL%K7UHfn%%X{xWz z(_&0%cLJZgHC#lUzrui-*mn!RiN6xyigZz`H{SOFWPc^+?9dBwc;5#Um;HBsTP^s{ bcfEfA%Vtu$eB;+100000NkvXXu0mjf%o|-k literal 0 HcmV?d00001 diff --git a/react-app/public/assets/icons/apple-touch-icon.png b/react-app/public/assets/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8d8d0da36f3f4834c8ebd2d1d7ba6ee36a82cf GIT binary patch literal 3846 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 IM6N<$f*L6ZVE_OC literal 0 HcmV?d00001 diff --git a/react-app/public/assets/icons/browserconfig.xml b/react-app/public/assets/icons/browserconfig.xml new file mode 100644 index 000000000..daef18b07 --- /dev/null +++ b/react-app/public/assets/icons/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #b92b27 + + + diff --git a/react-app/public/assets/icons/favicon-16x16.png b/react-app/public/assets/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..110da42ea2659e34108caa6a19b68ca009654a22 GIT binary patch literal 694 zcmV;n0!jUeP)RN?y+s#PS*DBOuD=9t@&$~-tDP#ZoH87 zUauTs`1s4+nQfe#W?4sXu&FB)pN(4E-`eZsW4g|r`o^)&V!-?%&5u8B!|>#Br2k(? z?oP)0oima6KbPZ_yI!Qj(rSj{#()!t6mtQ_`?x#fFc&xp6%j^ZA>vd%0f={KR&IuZ2vtoCdLK$^jxyFhADTh*!Vus!MEAbxBV zv5pl=M>DF{I0Diej0)-L%IiPc#8{xc-w6$R4S}ObpaRvfnETtg@Jz9e}4!bEl>;& z59lNz`{zFZL@QBoG_V>FN`w~@_WZ*CvE-~T=}o0++*SHh%gt2}(b=_h?X cU**6ibIKnlOlX*}hyVZp07*qoM6N<$f?Tjl$p8QV literal 0 HcmV?d00001 diff --git a/react-app/public/assets/icons/favicon-32x32.png b/react-app/public/assets/icons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..903146b7bc7719f79899f7df2e6d81e95af34abf GIT binary patch literal 1371 zcmV-h1*H0kP)^%FBIAX z5Xv8dAA;8+0Q>hmSYOG);g=DNQ>xfaFpktLIh|1>fOC^3{Si%D3s5V%B{YWZ5X)~t zAoT?UvjZ?hFm|5k7Qwi~B065IS1$ysSO1w60696o_cU((B@)vcBGkAX64hmY052mb z13`rd*8mKC%Yj3#+(xnKS^d^$44+?NAOhovSoQn|A?)A$0LwSuv#C-D zyIMD&V!!l2sX2ORg~20Yffj98Rn)vSt~70q%PhKBr!MSbNreDTW7v?O3BBg1#;i`K ze>!Or;4TDq?*jJhE+_AvU3j{CC!XxyQBKc~9YTrQ0e83=mTx(%K5*$x^@9MV(MfTv z1|)!KGl04C0iiS?u^c4&ej$>=!4ty96Tl`AfqqHu*jN->a^a2)X9wW&JWl-vB^CE<9;zcr<4Qd`}+YQf4~kA2++VuM~iupj|4@ zcXl4|zaYTH0R#T!Rq2kC>uU@!YZ`zu+?zDES^y;bs~S+Q6#LZr71g?dvpK--EhxKr znNmOi^i63X_v1#lc2xq{6zXY=W>orcAmB1)Q41j~% zfnnu6KmhmW&cgL}t$?CuRo?(lSmaDfN@M^OC1)j2F{%_`!(yOMCm>W$Fz_TL;^D+m zWIz;ZH7LqCgzIgZR0?3@iyzR`!~pO#Y!>RT1rIANLXv6{pAhFRaTOh|)lfse(D+Hw*v(zb)07=d;cPTrsPH z1If1>hO8vE*)Tl1SA|pY<9bbhC^AIM@`fnxzsr$~-o8a7wOUQ)cGLr^9LpbN)eSG! z8rS(m@@H=iAdpz?1pr8w73+R!uxq8ib6I3DzR3X@_0c^ zOx+y+9{G-zQ|4w&TMczipMPZ|0Gr?0uML*dvE#?@YddBb^;t?r1S!GW0zI^_HqCK002ovPDHLkV1m80er*5% literal 0 HcmV?d00001 diff --git a/react-app/public/assets/icons/mstile-150x150.png b/react-app/public/assets/icons/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..63ed11d6b21007676dbb19175a474ec53d2665d0 GIT binary patch literal 3656 zcmY*b2{aVk-yVsP7)$G0BSN+&jCF<**|U}{A!K>S&Ui(UeGP+>eW|P^N=Rg^+4m(| z7-sBSwl{;Bx!?5uzyJ51@1A?l?|Ghc@ALbe-?{gk8)K-i$q?1|}yDlU^RWdeU?ZX;LU4E<+T#IxK=1MaoWT>uzFP7UL5D0Nbzgsd{&5=$k-7 z1|X#9lO`@Re^p{g6fsQSFC;c1CO)okgP>=)N~4X?53H?`BV(xM4**ggTt$Lw(sbuR zv1`L(*M@}Y{#Qq3CT53k-;<5asmkgTH3`9olgom$$g{?W8kBTGaOWyZ?tp%|$fOY_AR6wH~Rc4MO zCAu3L=-mQg8lY_v8#c99X402cs~LWF+f;+MHsP}{0smJ zh>BfBNKzGU4he~lt7`|*4Wy9ZkuAti1n$-Z^&5K`VS9Pc=k-wgN#3){5|f@-P#gg= zGl8TmD9;1A@e9@_U}KhGbO)?2073@=76L$*xdwUo#0hCSeT&JW>1^mqs@%$Sv;u!{+*zwO<7!= z2nhuR>7XGUC|>I?D+4zqCM+LJVqCzdf};pa&`|)g?G}twKy4DODjcZEPRWUmhlJ0j zWrCD+pryB=aeG`{b3$FSt)l}hE`sK&hQ2-^uP`PpGn1I~-Qe!wP1T-~l3io-k<6^2 zM~{083kTzH^U`RM{(?pNW1#(YSKkP7oLx}j61Rf=%Zda!;k!ZA^LvzCQmvmpgYMhG zjicY42ZyV@Z&{9=4=r9J|E4tZXd}*{15gO1_DPLX+f-jl5%!$VBL2CBvUSXqCRBQ? zw;F(0Y*x-9c{O99a{C8DV;uB+HBA{9&D8)Ko1nS6(49!P>iX>m0802jkq>}WIB@@m znEyut(;)BI|3Z3*_!rWV!GBrQe*p*vk?a6q>0AnYEd4(jWAYC?4*)j+j-MA5o6Uk$ zZ3zLjC|?NV1khGfG4^9vA7El&RDnQVWfP`Kg9i4`bB6HH`}FU~y(3Qx`Ub}21(b{9b}kI1>!+2K5@ElJybfLRJB`+Z=3SH_TUXqfn?g29#6Mj}vRcseo#t-jUpX#)709JE(-oZBb&U2%0%J|s^Jv1dpkRN7F zg>J2zLlfY59gXN>-7Ddy(!`cJHNO;srNxcHydjP@5|@X`yEo#suDzo|a!X~uSo@n& z7kbgpB}T+oS-w|CGR{@>b!!-vFpiBX!)>lJbJnCRS-2TNL!ORgC-qJ!aOK46)T)Ru zXW`@t7aT0CHH%jn;@cUIT~0g6P4D69Qh#1`w9V7cClMV)h!0+>LE8j39`vT=HCn9Y zG37&%Si9p5P9;Hq1y&d)?#+U=WMc1ji(KDpF=*|;l}v%1Q#^Tyc8Q@P(tK7IT;UVi z-FajojhfA$X?G>$P6}i7I!|KvWs@|UF0AW}u=+f@9b>`_iEX;SlD5${a0 zD{<6tg1N1`II|K)f_Q{Fw+}D!;}25yXXJGHapS(+$i>;26}r6XUxDAJS^j)#lR9rG z+n5m+SaeaMwVZMze&5s&$n~6qM&Ewrwdm*Npo}&>m|f0%-a1!zFGH}Rs&nvRRY>y} z*{yxssxI3C&pw4pRX1$7USp=f69g-iWB3a`91ek;VTou;)q)GOFhA_u?y(`jUB*hS z8v+?iLTVoDWSlXQcb}|#Jbacst3bxC$<1am>Q2xEXJQMwZD!=#VR_T_-rNB-F4cqX zQ!UP>d(&V0-K*V9RKlpx^~ErY!ox*Fs`O_=Ph}vy>pIp zMv2J~ZNp`N^y`PE!`t=u&n)q6{D5^JpQX0gUiaqCwzI$2AS_yUH0)Ubhs~{v1}iD9 zY7+ans9Cqpw$~3o9YhcH&-HEFTQEsPwfNBlrJx;JhEQ~r=iG>;G0da{!R(Do%z07L z)Z~w~|MO&X>u?8r(n-f_Ny~MLElFU5yC;maQ}5dJ*E!wkI%mnU2oVu9lFu=%GNx93YYMd0o=y|`hIlYQSq zI~azlN&Q}5?|2L1R2|KtuA?@yLP{LAttux5XH_ZaTb$^!r}L|Y!tL9!p&vbl83bW& zC5Q`Pf`LQrvS$G0#2Qm>)F=jpCiC4W?o_sP8H}Jy3O$4qCYC`x!7%%CjHVy8RW%DOq1L6sO z6iumHShG(RCvh3N*2e&Aco30i*KVjR0+shN=HP`}Kc)UXMhG}&{a|u6;NZ+W`PbJE z4K#Ow0L+;>Dpk%p_6puwM*UXgquWk6om}cx3rBA0_eM*Jxs_apA6eJDZY(G4Ti^DU zA#3X$Z_oWx3){HK8yVVU#sO2E4swO8Er+ST+?Li0ZM)zB4`@v2S|O!K+4tZWy6&UU z;}5H1SlAakKW`jlEU|=X-qw!Rzh{0Ceu`x-Sh!sMW_jWwe*b8-PSz~h&i?7i%W&Ph z&JtWW>%cQB)r6mq-73t(8NUUdzm=3^hku9_6Ze=v4Z|$m5b@!aXHx+%nA;2G+Y? zVASjVx^Ln0e$z=+^w^*g)fgB3B)PKD)Zd9ZJYh@?-&rnbH=y*YDt z^`0t|s-^ou>QJ-wa?T_sHR_U!0C>SLRWst}}HXwKD9fvR-9#jtpgD*IH?O%vwJQ z=d`unHJXmQI z@KTP8oAHFQPoAH=KU3tgdx?IR39pPI=HyhFd|a>=rf9^=#CiR->`s4LC%v+cFd<}1!TTnfhd z`lEv94gIeTJRH!@3&jeSZ{}3LM4-^hv0Hv*|AE@+j47hV+mLOW1_VG{PnL$={zhww>xr-)2^i{ri#oe<&F85UQ7NlgXR?Th> \ No newline at end of file diff --git a/react-app/public/assets/images/cog.svg b/react-app/public/assets/images/cog.svg new file mode 100755 index 000000000..3e270d2b7 --- /dev/null +++ b/react-app/public/assets/images/cog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/react-app/public/assets/images/logo-header.png b/react-app/public/assets/images/logo-header.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7a2bdc45678c29aaad257d63b12e9fd4f8c454 GIT binary patch literal 4109 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 LNkvXXu0mjfOh?KC literal 0 HcmV?d00001 diff --git a/react-app/public/assets/images/logo.svg b/react-app/public/assets/images/logo.svg new file mode 100644 index 000000000..f88f9e31d --- /dev/null +++ b/react-app/public/assets/images/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/react-app/public/favicon.ico b/react-app/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc- import('./pages/ItemDetails')); +const User = lazy(() => import('./pages/User')); + +export default function App() { + const { settings } = useSettings(); + + return ( +
+
+
+
+ }> + + } /> + } /> + } + /> + } /> + } /> + } /> + } /> + } /> + + +
+
+
+ ); +} diff --git a/react-app/src/components/Comment.scss b/react-app/src/components/Comment.scss new file mode 100644 index 000000000..c13a19c03 --- /dev/null +++ b/react-app/src/components/Comment.scss @@ -0,0 +1,85 @@ +@import "../styles/media"; +@import "../styles/theme_variables"; + +.comment-view { + a { + font-weight: bold; + text-decoration: none; + &:hover { + text-decoration: underline; + } + } + + .meta { + font-size: 13px; + color: #696969; + font-weight: bold; + letter-spacing: 0.5px; + margin-bottom: 8px; + a { + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + .time { + padding-left: 5px; + } + } + + @media #{$mobile-only} { + .meta { + font-size: 14px; + margin-bottom: 10px; + .time { + padding: 0; + float: right; + } + } + } + + .meta-collapse { + margin-bottom: 20px; + } + + .deleted-meta { + font-size: 12px; + font-weight: bold; + letter-spacing: 0.5px; + margin: 30px 0; + a { + text-decoration: none; + } + } + + .collapse { + font-size: 13px; + letter-spacing: 2px; + cursor: pointer; + } + + .comment-tree { + margin-left: 24px; + } + + @media #{$tablet-only} { + .comment-tree { + margin-left: 8px; + } + } + + .comment-text { + font-size: 15px; + margin-top: 0; + margin-bottom: 20px; + word-wrap: break-word; + line-height: 1.5em; + } + + .subtree { + margin-left: 0; + padding: 0; + list-style-type: none; + } +} diff --git a/react-app/src/components/Comment.tsx b/react-app/src/components/Comment.tsx new file mode 100644 index 000000000..270da1d15 --- /dev/null +++ b/react-app/src/components/Comment.tsx @@ -0,0 +1,50 @@ +import { useState } from 'react'; +import { Link } from 'react-router-dom'; + +import type { Comment as CommentModel } from '../models'; +import './Comment.scss'; + +interface CommentProps { + comment: CommentModel; +} + +export function Comment({ comment }: CommentProps) { + const [collapse, setCollapse] = useState(false); + + if (comment.deleted) { + return ( +
+
+ [deleted] | Comment Deleted +
+
+ ); + } + + return ( +
+
+ setCollapse(!collapse)}> + [{collapse ? '+' : '-'}] + {' '} + {comment.user} + {comment.time_ago} +
+
+ +
+
+ ); +} diff --git a/react-app/src/components/ErrorMessage.scss b/react-app/src/components/ErrorMessage.scss new file mode 100644 index 000000000..f7417a959 --- /dev/null +++ b/react-app/src/components/ErrorMessage.scss @@ -0,0 +1,115 @@ +@import "../styles/media"; +@import "../styles/theme_variables"; + +.error-section { + height: 300px; + margin: 200px; + + @media #{$mobile-only} { + height: 0; + display: block; + position: relative; + margin: 30vh 0; + } + + p { + text-align: center; + padding: 0 25px; + + &.strong { + margin-top: 25px; + font-weight: bold; + } + } + + .skull { + width: $skull-size; + height: $skull-size; + position: relative; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + + .head { + width: 100%; + height: 75%; + border-radius: 15% / 20%; + position: absolute; + top: 0; + left: 0; + &:before, &:after { + content: ""; + position: absolute; + border-radius: 50%; + width: 20%; + height: 30%; + bottom: 10%; + } + &:before { + left: 10%; + } + &:after { + right: 10%; + } + .crack { + width: 10%; + height: 10%; + position: absolute; + top: 0; + right: 25%; + transform: skew(-15deg); + + &:before { + content: ""; + position: absolute; + top: 100%; + left: $skull-size / 15; + border-right: $skull-size / 20 solid transparent; + border-left: $skull-size / 40 solid transparent; + } + } + } + .mouth { + width: 40%; + height: 25%; + position: absolute; + top: 75%; + left: 30%; + border-radius: 0 0 $skull-size / 10 $skull-size / 10; + &:before { + content: ""; + position: absolute; + width: 15%; + height: 50%; + border-radius: 50% / 30%; + left: 42.5%; + top: -25%; + } + .teeth { + position: absolute; + bottom: 0; + left: 45%; + width: 10%; + height: 50%; + margin-bottom: -5%; + border-radius: 50% / 20%; + + &:before, &:after { + content: ""; + position: absolute; + width: 100%; + height: 100%; + border-radius: 50% / 20%; + } + &:before { + left: -250%; + } + &:after { + right: -250%; + } + } + } + } +} diff --git a/react-app/src/components/ErrorMessage.tsx b/react-app/src/components/ErrorMessage.tsx new file mode 100644 index 000000000..f1d247ee2 --- /dev/null +++ b/react-app/src/components/ErrorMessage.tsx @@ -0,0 +1,25 @@ +import './ErrorMessage.scss'; + +interface ErrorMessageProps { + message: string; +} + +export function ErrorMessage({ message }: ErrorMessageProps) { + return ( +
+
+
+
+
+
+
+
+
+

{message}

+

+ If you are offline viewing, you'll need to visit this page with a + network connection first before it can work offline. +

+
+ ); +} diff --git a/react-app/src/components/Footer.scss b/react-app/src/components/Footer.scss new file mode 100644 index 000000000..c918349c0 --- /dev/null +++ b/react-app/src/components/Footer.scss @@ -0,0 +1,23 @@ +@import "../styles/media"; +@import "../styles/theme_variables"; + +#footer { + position: relative; + padding: 10px; + height: 60px; + letter-spacing: 0.7px; + text-align: center; + + a { + font-weight: bold; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + + @media #{$mobile-only} { + display: none; + } +} diff --git a/react-app/src/components/Footer.tsx b/react-app/src/components/Footer.tsx new file mode 100644 index 000000000..b0526b521 --- /dev/null +++ b/react-app/src/components/Footer.tsx @@ -0,0 +1,18 @@ +import './Footer.scss'; + +export function Footer() { + return ( + + ); +} diff --git a/react-app/src/components/Header.scss b/react-app/src/components/Header.scss new file mode 100644 index 000000000..5673ba417 --- /dev/null +++ b/react-app/src/components/Header.scss @@ -0,0 +1,151 @@ +@import "../styles/media"; +@import "../styles/theme_variables"; + +.header-view { + #header { + color: #fff; + padding: 6px 0; + line-height: 18px; + vertical-align: middle; + position: relative; + z-index: 1; + width: 100%; + + @media #{$mobile-only} { + height: 50px; + position: fixed; + top: 0; + } + + a { + display: inline; + } + } + + .home-link { + width: 50px; + height: 66px; + } + + .logo-inner { + width: 32px; + position: absolute; + left: 17px; + top: 18px; + z-index: -1; + height: 32px; + border-radius: 50%; + + @media #{$mobile-only} { + left: 16px; + top: 12px; + } + } + + .logo { + width: 50px; + padding: 3px 8px 0; + + @media #{$mobile-only} { + width: 45px; + padding: 0 0 0 10px; + } + } + + h1 { + font-weight: normal; + display: inline-block; + vertical-align: middle; + margin: 0; + font-size: 16px; + + a { + color: #fff; + text-decoration: none; + } + } + + .name { + margin-right: 30px; + margin-bottom: 2px; + + @media #{$mobile-only} { + display: none; + } + } + + .header-text { + position: absolute; + width: inherit; + height: 20px; + left: 10px; + top: 27px; + z-index: -1; + + @media #{$mobile-only} { + top: 22px; + } + } + + .left { + position: absolute; + left: 60px; + font-size: 16px; + + @media #{$mobile-only} { + width: 100%; + left: 0; + } + } + + .header-nav { + display: inline-block; + margin-left: 20px; + + @media #{$mobile-only} { + margin-left: 60px; + } + + a { + color: hsla(0,0%,100%,.9); + text-decoration: none; + margin: 0 5px; + letter-spacing: 1.8px; + + &:hover { + color: #fff; + } + } + + .active { + color: #fff; + } + } + + .info { + position: absolute; + top: 0; + right: 20px; + height: 100%; + + @media #{$mobile-only} { + right: 10px; + } + + img { + opacity: 0.8; + width: 25px; + margin-top: 21.5px; + display: block; + + &:hover { + opacity: 1; + cursor: pointer; + } + + @media #{$mobile-only} { + margin-top: 15px; + } + } + } +} diff --git a/react-app/src/components/Header.tsx b/react-app/src/components/Header.tsx new file mode 100644 index 000000000..0fc97e082 --- /dev/null +++ b/react-app/src/components/Header.tsx @@ -0,0 +1,52 @@ +import { NavLink } from 'react-router-dom'; + +import { useSettings } from '../hooks/useSettings'; +import { Settings } from './Settings'; +import './Header.scss'; + +export function Header() { + const { settings, toggleSettings } = useSettings(); + + const scrollTop = () => window.scrollTo(0, 0); + + return ( +
+ + {settings.showSettings && } +
+ ); +} diff --git a/react-app/src/components/Item.scss b/react-app/src/components/Item.scss new file mode 100644 index 000000000..89f60e7a2 --- /dev/null +++ b/react-app/src/components/Item.scss @@ -0,0 +1,70 @@ +@import "../styles/media"; +@import "../styles/theme_variables"; + +.item-view { + p { + margin: 2px 0; + + @media #{$mobile-only} { + margin-bottom: 5px; + margin-top: 0; + } + } + + a { + cursor: pointer; + text-decoration: none; + } + + .title { + font-size: 16px; + font-family: Verdana, Geneva, sans-serif; + } + + .subtext-laptop { + font-size: 12px; + font-weight: bold; + letter-spacing: 0.5px; + + a { + &:hover { + text-decoration: underline; + } + } + @media #{$mobile-only} { + display: none; + } + } + + .subtext-palm { + font-size: 13px; + font-weight: bold; + letter-spacing: 0.5px; + + a { + &:hover { + text-decoration: underline; + } + } + + .details { + margin-top: 5px; + + .right { + float: right; + } + } + @media #{$laptop-only} { + display: none; + } + } + + .domain { + color: #696969; + letter-spacing: 0.5px; + } + + .item-details { + padding: 10px; + } +} diff --git a/react-app/src/components/Item.tsx b/react-app/src/components/Item.tsx new file mode 100644 index 000000000..63abb34db --- /dev/null +++ b/react-app/src/components/Item.tsx @@ -0,0 +1,85 @@ +import { Link } from 'react-router-dom'; + +import type { Story } from '../models'; +import { useSettings } from '../hooks/useSettings'; +import { formatCommentCount } from '../utils/comment'; +import './Item.scss'; + +interface ItemProps { + item: Story; +} + +export function Item({ item }: ItemProps) { + const { settings } = useSettings(); + const hasUrl = !!item.url && item.url.indexOf('http') === 0; + const target = settings.openLinkInNewTab ? '_blank' : undefined; + const rel = settings.openLinkInNewTab ? 'noopener' : undefined; + + return ( +
+ {hasUrl ? ( +

+ + {item.title} + + {item.domain && ({item.domain})} +

+ ) : ( +

+ + {item.title} + +

+ )} +
+ {item.type !== 'job' && ( +
+ + {item.user} + + {item.points} ★ +
+ )} +
+ {item.time_ago} + {item.type !== 'job' && ( + + {' '} + • {formatCommentCount(item.comments_count)} + + )} +
+
+
+ {item.type !== 'job' && ( + + {item.points} points by{' '} + {item.user} + + )} + + {item.time_ago} + {item.type !== 'job' && ( + + {' '} + |{' '} + + {formatCommentCount(item.comments_count)} + + + )} + +
+
+ ); +} diff --git a/react-app/src/components/Loader.scss b/react-app/src/components/Loader.scss new file mode 100644 index 000000000..0d28546c3 --- /dev/null +++ b/react-app/src/components/Loader.scss @@ -0,0 +1,109 @@ +@import "../styles/media"; +@import "../styles/theme_variables"; + +.loader { + -webkit-animation: load1 1s infinite ease-in-out; + animation: load1 1s infinite ease-in-out; + width: 1em; + height: 4em; + &:before, &:after { + -webkit-animation: load1 1s infinite ease-in-out; + animation: load1 1s infinite ease-in-out; + width: 1em; + height: 4em; + } + &:before, &:after { + position: absolute; + top: 0; + content: ''; + } + &:before { + left: -1.5em; + -webkit-animation-delay: -0.32s; + animation-delay: -0.32s; + } +} + +.loading-section { + height: 70px; + margin: 40px 0 40px 40px; + + @media #{$mobile-only} { + display: block; + position: relative; + margin: 45vh 0; + } +} + +.loader { + text-indent: -9999em; + margin: 20px 20px; + position: relative; + font-size: 11px; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation-delay: -0.16s; + animation-delay: -0.16s; + &:after { + left: 1.5em; + } + + @media #{$mobile-only} { + margin: 20px auto; + } +} + +@-webkit-keyframes load1 { + 0%, + 80%, + 100% { + box-shadow: 0 0; + height: 2em; + } + 40% { + box-shadow: 0 -2em; + height: 3em; + } +} + +@keyframes load1 { + 0%, + 80%, + 100% { + box-shadow: 0 0; + height: 2em; + } + 40% { + box-shadow: 0 -2em; + height: 3em; + } +} + +@media #{$mobile-only} { + @-webkit-keyframes load1 { + 0%, + 80%, + 100% { + box-shadow: 0 0; + height: 4em; + } + 40% { + box-shadow: 0 -2em; + height: 5em; + } + } + + @keyframes load1 { + 0%, + 80%, + 100% { + box-shadow: 0 0; + height: 3em; + } + 40% { + box-shadow: 0 -2em; + height: 4em; + } + } +} diff --git a/react-app/src/components/Loader.tsx b/react-app/src/components/Loader.tsx new file mode 100644 index 000000000..351d35f0d --- /dev/null +++ b/react-app/src/components/Loader.tsx @@ -0,0 +1,9 @@ +import './Loader.scss'; + +export function Loader() { + return ( +
+
Loading...
+
+ ); +} diff --git a/react-app/src/components/Settings.scss b/react-app/src/components/Settings.scss new file mode 100644 index 000000000..3e5c36bea --- /dev/null +++ b/react-app/src/components/Settings.scss @@ -0,0 +1,74 @@ +@import "../styles/media"; +@import "../styles/theme_variables"; + +.overlay { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: rgba(0, 0, 0, 0.7); + opacity: 1; + z-index: 1; +} + +.popup { + margin: 70px auto; + padding: 30px; + border-radius: 5px; + width: 30%; + position: relative; + h1 { + margin-top: 0; + margin-bottom: 0px; + color: #fff; + text-align: center; + letter-spacing: 1px; + } + h2 { + padding-top: 10px; + } + hr { + width: 40%; + margin-bottom: 20px; + } + .close { + position: absolute; + top: 12px; + right: 20px; + font-size: 30px; + font-weight: bold; + text-decoration: none; + color: rgba(255,255,255,0.8); + &:hover { + color: #fff; + cursor: pointer; + } + } + .content { + max-height: 30%; + color: #fff; + letter-spacing: 1px; + overflow: auto; + } + input[type=number] { + display: block; + width: 80%; + height: 20px; + margin-bottom: 15px; + border-radius: 5px; + padding: 2px; + } +} + +.control-section { + margin-bottom: 15px; + padding-bottom: 15px; + border-bottom: 1px solid white; +} + +@media screen and (max-width: 700px) { + .box, .popup { + width: 70%; + } +} diff --git a/react-app/src/components/Settings.tsx b/react-app/src/components/Settings.tsx new file mode 100644 index 000000000..58cccf308 --- /dev/null +++ b/react-app/src/components/Settings.tsx @@ -0,0 +1,104 @@ +import { useSettings } from '../hooks/useSettings'; +import './Settings.scss'; + +export function Settings() { + const { + settings, + toggleSettings, + toggleOpenLinksInNewTab, + setTheme, + setFont, + setSpacing, + } = useSettings(); + + return ( +
+
+

Settings

+
+ + × + +
+
+

Links

+ {' '} + Open links in a new tab +
+
+
+

Select a theme

+
+ +
+
+ +
+
+ +
+
+
+

Change Font

+
+ +
+
+ +
+
+
+
+
+
+ ); +} diff --git a/react-app/src/context/SettingsContext.tsx b/react-app/src/context/SettingsContext.tsx new file mode 100644 index 000000000..8a3caf84e --- /dev/null +++ b/react-app/src/context/SettingsContext.tsx @@ -0,0 +1,85 @@ +import { useCallback, useEffect, useState } from 'react'; +import type { ReactNode } from 'react'; + +import type { Settings } from '../models'; +import { SettingsContext } from './settingsContext'; + +function getInitialSettings(): Settings { + const openLinkInNewTab = localStorage.getItem('openLinkInNewTab'); + const savedTheme = localStorage.getItem('theme'); + const prefersDark = + typeof window !== 'undefined' && + window.matchMedia('(prefers-color-scheme: dark)').matches; + return { + showSettings: false, + openLinkInNewTab: openLinkInNewTab ? JSON.parse(openLinkInNewTab) : false, + theme: savedTheme || (prefersDark ? 'night' : 'default'), + titleFontSize: localStorage.getItem('titleFontSize') || '16', + listSpacing: localStorage.getItem('listSpacing') || '0', + }; +} + +export function SettingsProvider({ children }: { children: ReactNode }) { + const [settings, setSettings] = useState(getInitialSettings); + + const setTheme = useCallback((theme: string) => { + localStorage.setItem('theme', theme); + setSettings((prev) => ({ ...prev, theme })); + }, []); + + useEffect(() => { + const darkColorSchemeMedia = window.matchMedia( + '(prefers-color-scheme: dark)' + ); + + const handleChange = (event: MediaQueryListEvent) => { + setTheme(event.matches ? 'night' : 'default'); + }; + + darkColorSchemeMedia.addEventListener('change', handleChange); + + return () => { + darkColorSchemeMedia.removeEventListener('change', handleChange); + }; + }, [setTheme]); + + const toggleSettings = useCallback(() => { + setSettings((prev) => ({ ...prev, showSettings: !prev.showSettings })); + }, []); + + const toggleOpenLinksInNewTab = useCallback(() => { + setSettings((prev) => { + const openLinkInNewTab = !prev.openLinkInNewTab; + localStorage.setItem( + 'openLinkInNewTab', + JSON.stringify(openLinkInNewTab) + ); + return { ...prev, openLinkInNewTab }; + }); + }, []); + + const setFont = useCallback((fontSize: string) => { + localStorage.setItem('titleFontSize', fontSize); + setSettings((prev) => ({ ...prev, titleFontSize: fontSize })); + }, []); + + const setSpacing = useCallback((listSpace: string) => { + localStorage.setItem('listSpacing', listSpace); + setSettings((prev) => ({ ...prev, listSpacing: listSpace })); + }, []); + + return ( + + {children} + + ); +} diff --git a/react-app/src/context/settingsContext.ts b/react-app/src/context/settingsContext.ts new file mode 100644 index 000000000..c30697bf1 --- /dev/null +++ b/react-app/src/context/settingsContext.ts @@ -0,0 +1,16 @@ +import { createContext } from 'react'; + +import type { Settings } from '../models'; + +export interface SettingsContextValue { + settings: Settings; + toggleSettings: () => void; + toggleOpenLinksInNewTab: () => void; + setTheme: (theme: string) => void; + setFont: (fontSize: string) => void; + setSpacing: (listSpace: string) => void; +} + +export const SettingsContext = createContext( + undefined +); diff --git a/react-app/src/hooks/useFeed.ts b/react-app/src/hooks/useFeed.ts new file mode 100644 index 000000000..41da149d3 --- /dev/null +++ b/react-app/src/hooks/useFeed.ts @@ -0,0 +1,56 @@ +import { useEffect, useState } from 'react'; + +import { fetchFeed } from '../services/hackernewsApi'; +import type { Story } from '../models'; + +interface FeedResult { + feedType: string; + page: number; + items?: Story[]; + errorMessage: string; +} + +interface FeedState { + items?: Story[]; + errorMessage: string; +} + +export function useFeed(feedType: string, page: number): FeedState { + const [result, setResult] = useState(); + + useEffect(() => { + let cancelled = false; + + fetchFeed(feedType, page) + .then((data) => { + if (cancelled) { + return; + } + setResult({ feedType, page, items: data, errorMessage: '' }); + window.scrollTo(0, 0); + }) + .catch(() => { + if (!cancelled) { + setResult({ + feedType, + page, + errorMessage: 'Could not load ' + feedType + ' stories.', + }); + } + }); + + return () => { + cancelled = true; + }; + }, [feedType, page]); + + const current = + result && result.feedType === feedType && result.page === page + ? result + : undefined; + + return { + items: current?.items, + errorMessage: current?.errorMessage ?? '', + }; +} diff --git a/react-app/src/hooks/useItem.ts b/react-app/src/hooks/useItem.ts new file mode 100644 index 000000000..ebaf26fb3 --- /dev/null +++ b/react-app/src/hooks/useItem.ts @@ -0,0 +1,50 @@ +import { useEffect, useState } from 'react'; + +import { fetchItemContent } from '../services/hackernewsApi'; +import type { Story } from '../models'; + +interface ItemResult { + id: number; + item?: Story; + errorMessage: string; +} + +interface ItemState { + item?: Story; + errorMessage: string; +} + +export function useItem(id: number): ItemState { + const [result, setResult] = useState(); + + useEffect(() => { + let cancelled = false; + window.scrollTo(0, 0); + + fetchItemContent(id) + .then((data) => { + if (!cancelled) { + setResult({ id, item: data, errorMessage: '' }); + } + }) + .catch(() => { + if (!cancelled) { + setResult({ + id, + errorMessage: 'Could not load item comments.', + }); + } + }); + + return () => { + cancelled = true; + }; + }, [id]); + + const current = result && result.id === id ? result : undefined; + + return { + item: current?.item, + errorMessage: current?.errorMessage ?? '', + }; +} diff --git a/react-app/src/hooks/useSettings.ts b/react-app/src/hooks/useSettings.ts new file mode 100644 index 000000000..1811d2d96 --- /dev/null +++ b/react-app/src/hooks/useSettings.ts @@ -0,0 +1,12 @@ +import { useContext } from 'react'; + +import { SettingsContext } from '../context/settingsContext'; +import type { SettingsContextValue } from '../context/settingsContext'; + +export function useSettings(): SettingsContextValue { + const ctx = useContext(SettingsContext); + if (!ctx) { + throw new Error('useSettings must be used within a SettingsProvider'); + } + return ctx; +} diff --git a/react-app/src/hooks/useUser.ts b/react-app/src/hooks/useUser.ts new file mode 100644 index 000000000..2962efeda --- /dev/null +++ b/react-app/src/hooks/useUser.ts @@ -0,0 +1,49 @@ +import { useEffect, useState } from 'react'; + +import { fetchUser } from '../services/hackernewsApi'; +import type { User } from '../models'; + +interface UserResult { + id: string; + user?: User; + errorMessage: string; +} + +interface UserState { + user?: User; + errorMessage: string; +} + +export function useUser(id: string): UserState { + const [result, setResult] = useState(); + + useEffect(() => { + let cancelled = false; + + fetchUser(id) + .then((data) => { + if (!cancelled) { + setResult({ id, user: data, errorMessage: '' }); + } + }) + .catch(() => { + if (!cancelled) { + setResult({ + id, + errorMessage: 'Could not load user ' + id + '.', + }); + } + }); + + return () => { + cancelled = true; + }; + }, [id]); + + const current = result && result.id === id ? result : undefined; + + return { + user: current?.user, + errorMessage: current?.errorMessage ?? '', + }; +} diff --git a/react-app/src/main.tsx b/react-app/src/main.tsx new file mode 100644 index 000000000..bd0a005ce --- /dev/null +++ b/react-app/src/main.tsx @@ -0,0 +1,17 @@ +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; +import { BrowserRouter } from 'react-router-dom'; + +import App from './App'; +import { SettingsProvider } from './context/SettingsContext'; +import './styles/styles.scss'; + +createRoot(document.getElementById('root')!).render( + + + + + + + +); diff --git a/react-app/src/models/index.ts b/react-app/src/models/index.ts new file mode 100644 index 000000000..9effa7f10 --- /dev/null +++ b/react-app/src/models/index.ts @@ -0,0 +1,54 @@ +export type FeedType = 'poll' | 'story' | 'job'; + +export interface PollResult { + points: number; + content: string; +} + +export interface Comment { + id: number; + level: number; + user: string; + time: number; + time_ago: string; + content: string; + deleted: boolean; + comments: Comment[]; +} + +export interface Story { + id: number; + title: string; + points: number; + user: string; + time: number; + time_ago: number; + type: FeedType; + url: string; + domain: string; + comments: Comment[]; + comments_count: number; + poll: PollResult[]; + poll_votes_count: number; + deleted: boolean; + dead: boolean; + content?: string; + text?: string; +} + +export interface User { + id: string; + crated_time: number; + created: string; + karma: number; + avg: number; + about: string; +} + +export interface Settings { + showSettings: boolean; + openLinkInNewTab: boolean; + theme: string; + titleFontSize: string; + listSpacing: string; +} diff --git a/react-app/src/pages/Feed.scss b/react-app/src/pages/Feed.scss new file mode 100644 index 000000000..2e2973ac8 --- /dev/null +++ b/react-app/src/pages/Feed.scss @@ -0,0 +1,109 @@ +@import "../styles/media"; +@import "../styles/theme_variables"; + +.feed-view { + a { + text-decoration: none; + font-weight: bold; + + &:hover { + text-decoration: underline; + } + } + + ol { + padding: 0 40px; + margin: 0; + + @media #{$mobile-only} { + box-sizing: border-box; + list-style: none; + padding: 0 10px; + } + + li { + position: relative; + -webkit-transition: background-color .2s ease; + transition: background-color .2s ease; + } + } + + .list-margin { + @media #{$mobile-only} { + margin-top: 55px; + } + } + + .main-content { + position: relative; + width: 100%; + min-height: 100vh; + -webkit-transition: opacity .2s ease; + transition: opacity .2s ease; + box-sizing: border-box; + padding: 8px 0; + z-index: 0; + } + + .post { + padding: 10px 0 10px 5px; + transition: background-color 0.2s ease; + border-bottom: 1px solid #CECECB; + + .itemNum { + color: #696969; + position: absolute; + width: 30px; + text-align: right; + left: 0; + top: 4px; + } + } + + .item-block { + display: block; + } + + .nav { + padding: 10px 40px; + margin-top: 10px; + font-size: 17px; + + a { + @media #{$mobile-only} { + text-decoration: none; + } + } + + @media #{$mobile-only} { + margin: 20px 0; + text-align: center; + padding: 10px 80px; + height: 20px; + } + + .prev { + padding-right: 20px; + + @media #{$mobile-only} { + float: left; + padding-right: 0; + } + } + + .more { + @media #{$mobile-only} { + float: right; + } + } + } + + .job-header { + font-size: 15px; + padding: 0 40px 10px; + + @media #{$mobile-only} { + padding: 60px 15px 25px 15px; + } + } +} diff --git a/react-app/src/pages/Feed.tsx b/react-app/src/pages/Feed.tsx new file mode 100644 index 000000000..a36facc6c --- /dev/null +++ b/react-app/src/pages/Feed.tsx @@ -0,0 +1,73 @@ +import { Link, useParams } from 'react-router-dom'; + +import { useFeed } from '../hooks/useFeed'; +import { Item } from '../components/Item'; +import { Loader } from '../components/Loader'; +import { ErrorMessage } from '../components/ErrorMessage'; +import './Feed.scss'; + +interface FeedProps { + feedType: string; +} + +export function Feed({ feedType }: FeedProps) { + const params = useParams(); + const pageNum = params.page ? +params.page : 1; + const { items, errorMessage } = useFeed(feedType, pageNum); + const listStart = (pageNum - 1) * 30 + 1; + + return ( +
+
+ {!items && !errorMessage && } + {!items && errorMessage !== '' && ( + + )} + + {items && ( +
+ {feedType === 'jobs' && ( +

+ These are jobs at startups that were funded by Y + Combinator. You can also get a job at a YC startup + through{' '} + + Triplebyte + + . +

+ )} +
    + {items.map((item) => ( +
  1. + +
  2. + ))} +
+
+ {listStart !== 1 && ( + + ‹ Prev + + )} + {items.length === 30 && ( + + More › + + )} +
+
+ )} +
+
+ ); +} diff --git a/react-app/src/pages/ItemDetails.scss b/react-app/src/pages/ItemDetails.scss new file mode 100644 index 000000000..7f6f2d96e --- /dev/null +++ b/react-app/src/pages/ItemDetails.scss @@ -0,0 +1,153 @@ +@import "../styles/media"; +@import "../styles/theme_variables"; + +.item-details-view { + .main-content { + position: relative; + width: 100%; + min-height: 100vh; + -webkit-transition: opacity .2s ease; + transition: opacity .2s ease; + box-sizing: border-box; + padding: 8px 0; + z-index: 0; + } + + .item { + box-sizing: border-box; + padding: 10px 40px 0 40px; + z-index: 0; + } + + @media #{$tablet-only} { + .item { + padding: 10px 20px 0 40px; + } + } + + @media #{$mobile-only} { + .item { + box-sizing: border-box; + padding: 110px 15px 0 15px; + } + } + + .head-margin { + margin-bottom: 15px; + } + + p { + margin: 2px 0; + } + + .subject { + word-wrap: break-word; + margin-top: 20px; + } + + a { + cursor: pointer; + text-decoration: none; + } + + @media #{$mobile-only} { + .laptop { + display: none; + } + } + + @media #{$laptop-only} { + .mobile { + display: none; + } + } + + .title { + font-size: 16px; + font-family: Verdana, Geneva, sans-serif; + } + + .title-block { + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + margin: 0 75px; + } + + @media #{$mobile-only} { + .title { + font-size: 15px; + } + .back-button { + position: absolute; + top: 52%; + width: 0.6rem; + height: 0.6rem; + background: transparent; + box-shadow: 0 0 0 lightgray; + transition: all 200ms ease; + left: 4%; + transform: translate3d(0, -50%, 0) rotate(-135deg); + } + } + + .subtext { + font-size: 12px; + font-weight: bold; + letter-spacing: 0.5px; + } + + .domain { + letter-spacing: 0.5px; + } + + .subtext a { + &:hover { + text-decoration: underline; + } + } + + .item-details { + padding: 10px; + } + + .item-header { + padding-bottom: 10px; + } + + @media #{$mobile-only} { + .item-header { + padding: 10px 0 10px 0; + position: fixed; + width: 100%; + left: 0; + top: 62px; + } + } + + .pollResults { + margin-bottom: 1em; + } + + .pollContent { + * { + padding-bottom: 0; + margin-bottom: -1em; + margin-top: 1em; + } + .pollBar { + height: 10px; + margin-bottom: 1em; + } + } + + ul { + list-style-type: none; + padding: 10px 0; + } + + li { + display: list-item; + } +} diff --git a/react-app/src/pages/ItemDetails.tsx b/react-app/src/pages/ItemDetails.tsx new file mode 100644 index 000000000..a0afbcb0b --- /dev/null +++ b/react-app/src/pages/ItemDetails.tsx @@ -0,0 +1,158 @@ +import { Link, useNavigate, useParams } from 'react-router-dom'; + +import { useItem } from '../hooks/useItem'; +import { useSettings } from '../hooks/useSettings'; +import { formatCommentCount } from '../utils/comment'; +import { Comment } from '../components/Comment'; +import { Loader } from '../components/Loader'; +import { ErrorMessage } from '../components/ErrorMessage'; +import './ItemDetails.scss'; + +export default function ItemDetails() { + const params = useParams(); + const navigate = useNavigate(); + const { settings } = useSettings(); + const itemID = params.id ? +params.id : 0; + const { item, errorMessage } = useItem(itemID); + + const goBack = () => navigate(-1); + + const target = settings.openLinkInNewTab ? '_blank' : undefined; + const rel = settings.openLinkInNewTab ? 'noopener' : undefined; + + return ( +
+
+ {!item && !errorMessage && } + {!item && errorMessage !== '' && ( + + )} + + {item && ( +
+
+

+ + {item.url && item.url.indexOf('http') === 0 ? ( + + {item.title} + + ) : ( + + {item.title} + + )} +

+
+
0 || item.type === 'job' + ? ' item-header' + : '') + + (item.text ? ' head-margin' : '') + } + > + {item.url && item.url.indexOf('http') === 0 ? ( +

+ + {item.title} + + {item.domain && ( + + ({item.domain}) + + )} +

+ ) : ( +

+ + {item.title} + +

+ )} +
+ {item.type !== 'job' && ( + + {item.points} points by{' '} + + {item.user} + + + )} + + {item.time_ago} + {item.type !== 'job' && ( + + {' '} + |{' '} + + {formatCommentCount( + item.comments_count + )} + + + )} + +
+
+ {item.type === 'poll' && item.poll && ( +
+ {item.poll.map((pollResult, i) => ( +
+
+
+ {pollResult.points} points +
+
+
+ ))} +
+ )} + {item.content && ( +

+ )} +
    + {item.comments && + item.comments.map((comment) => ( +
  • + +
  • + ))} +
+
+ )} +
+
+ ); +} diff --git a/react-app/src/pages/User.scss b/react-app/src/pages/User.scss new file mode 100644 index 000000000..e57974f81 --- /dev/null +++ b/react-app/src/pages/User.scss @@ -0,0 +1,91 @@ +@import "../styles/media"; +@import "../styles/theme_variables"; + +.user-view { + pre { + white-space: pre-wrap; + } + + .profile { + padding: 30px; + } + + @media #{$mobile-only} { + .profile { + padding: 110px 15px 0 15px; + } + .title-block { + font-size: 15px; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + margin: 0 75px; + } + .back-button { + position: absolute; + top: 52%; + width: 0.6rem; + height: 0.6rem; + background: transparent; + box-shadow: 0 0 0 lightgray; + transition: all 200ms ease; + left: 4%; + transform: translate3d(0, -50%, 0) rotate(-135deg); + } + .item-header { + padding-bottom: 10px; + background-color: #fff; + padding: 10px 0 10px 0; + position: fixed; + width: 100%; + left: 0; + top: 62px; + height: 20px; + } + } + + @media #{$laptop-only} { + .mobile { + display: none; + } + } + + .main-details { + .name { + font-weight: bold; + font-size: 32px; + letter-spacing: 2px; + } + .age { + font-weight: bold; + color: #696969; + padding-bottom: 0; + } + .right { + float: right; + font-weight: bold; + font-size: 32px; + letter-spacing: 2px; + } + } + + @media #{$mobile-only} { + .main-details { + margin-top: 20px; + .name { + font-size: 18px; + } + } + } + + @media #{$mobile-only} { + .main-details .right { + font-size: 18px; + } + } + + .other-details { + word-wrap: break-word; + } +} diff --git a/react-app/src/pages/User.tsx b/react-app/src/pages/User.tsx new file mode 100644 index 000000000..32b0d31e1 --- /dev/null +++ b/react-app/src/pages/User.tsx @@ -0,0 +1,43 @@ +import { useNavigate, useParams } from 'react-router-dom'; + +import { useUser } from '../hooks/useUser'; +import { Loader } from '../components/Loader'; +import { ErrorMessage } from '../components/ErrorMessage'; +import './User.scss'; + +export default function User() { + const params = useParams(); + const navigate = useNavigate(); + const userID = params.id ?? ''; + const { user, errorMessage } = useUser(userID); + + const goBack = () => navigate(-1); + + return ( +
+ {!user && !errorMessage && } + {!user && errorMessage !== '' && } + + {user && ( +
+
+

+ + Profile: {user.id} +

+
+
+ {user.id} + {user.karma} ★ +

Created {user.created}

+
+ {user.about && ( +
+

+
+ )} +
+ )} +
+ ); +} diff --git a/react-app/src/services/hackernewsApi.ts b/react-app/src/services/hackernewsApi.ts new file mode 100644 index 000000000..e43a3285f --- /dev/null +++ b/react-app/src/services/hackernewsApi.ts @@ -0,0 +1,42 @@ +import fetch from 'unfetch'; + +import type { Story } from '../models'; +import type { User } from '../models'; +import type { PollResult } from '../models'; + +const baseUrl = 'https://node-hnapi.herokuapp.com'; + +async function lazyFetch(url: string): Promise { + const res = await fetch(url); + return res.json() as Promise; +} + +export function fetchFeed(feedType: string, page: number): Promise { + return lazyFetch(`${baseUrl}/${feedType}?page=${page}`); +} + +export function fetchPollContent(id: number): Promise { + return lazyFetch(`${baseUrl}/item/${id}`); +} + +export async function fetchItemContent(id: number): Promise { + const story = await lazyFetch(`${baseUrl}/item/${id}`); + if (story.type === 'poll' && story.poll) { + const numberOfPollOptions = story.poll.length; + story.poll_votes_count = 0; + const results = await Promise.all( + Array.from({ length: numberOfPollOptions }, (_, i) => + fetchPollContent(story.id + i + 1) + ) + ); + results.forEach((pollResults, i) => { + story.poll[i] = pollResults; + story.poll_votes_count += pollResults.points; + }); + } + return story; +} + +export function fetchUser(id: string): Promise { + return lazyFetch(`${baseUrl}/user/${id}`); +} diff --git a/react-app/src/styles/_media.scss b/react-app/src/styles/_media.scss new file mode 100644 index 000000000..b04b71a92 --- /dev/null +++ b/react-app/src/styles/_media.scss @@ -0,0 +1,3 @@ +$mobile-only: "only screen and (max-width : 768px)"; +$laptop-only: "only screen and (min-width : 769px)"; +$tablet-only: "only screen and (max-width : 1024px)"; diff --git a/react-app/src/styles/_theme_variables.scss b/react-app/src/styles/_theme_variables.scss new file mode 100644 index 000000000..41dae5eea --- /dev/null +++ b/react-app/src/styles/_theme_variables.scss @@ -0,0 +1,37 @@ +$skull-size: 200px; + +// ------------------------------------------------------------------------------------------- +// Theme Engine +// ------------------------------------------------------------------------------------------- + +// Day theme colors +$theme-day-body-background-color: #fff; +$theme-day-wrapper-background-color: #f5f5f5; +$theme-day-wrapper-mobile-background-color: #fff; +$theme-day-text-color: #000; +$theme-day-subtext-color: #696969; +$theme-day-secondary-color: #b92b27; +$theme-day-header-background-color: $theme-day-secondary-color; +$theme-day-logo-inner: #fff; + +// Day theme extras +$theme-day-border: 2px solid #b92b27; + +// Night theme colors +$theme-night-body-background-color: #37474F; +$theme-night-wrapper-background-color: #263238; +$theme-night-wrapper-mobile-background-color: $theme-night-wrapper-background-color; +$theme-night-text-color: rgba(255, 255, 255, 0.7); +$theme-night-subtext-color: #999; +$theme-night-secondary-color: #00c0ff; +$theme-night-header-background-color: #263238; +$theme-night-logo-inner: $theme-night-header-background-color; + +// Night theme extras +$theme-night-border: 2px solid #00c0ff; + +// Black theme colors +$theme-amoledblack-body-background-color: #000; +$theme-amoledblack-text-color: rgba(255, 255, 255, 0.75); +$theme-amoledblack-subtext-color: rgba(255, 255, 255, 0.5); +$theme-amoledblack-secondary-color: rgba(255, 255, 255, 0.6); diff --git a/react-app/src/styles/_themes.scss b/react-app/src/styles/_themes.scss new file mode 100644 index 000000000..231ed7cf9 --- /dev/null +++ b/react-app/src/styles/_themes.scss @@ -0,0 +1,245 @@ +@import "./media"; +@import "./theme_variables"; + +/* ---------------------------------- + + Want a new theme? Add your new theme variables here! + +---------------------------------- */ + +@mixin theme( + $name, + $body-background-color, + $wrapper-background-color, + $wrapper-mobile-background-color, + $wrapper-color, + $item-a-color, + $item-a-visited-color, + $header-background-color, + $subtext-color, + $secondary-link-color, + $logo-inner-color, + $border +) { + .#{$name} { + .body-cover { + background: $body-background-color; + + @media #{$mobile-only} { + background: $wrapper-mobile-background-color; + } + } + + .wrapper { + background: $wrapper-background-color; + color: $wrapper-color; + + @media #{$mobile-only} { + background: $wrapper-mobile-background-color; + } + + a { + color: $item-a-color; + + &:visited { + color: $item-a-visited-color; + } + } + + #header { + background: $header-background-color; + border-bottom: $border; + } + + .logo-inner { + background: $logo-inner-color; + } + + .nav { + a { + color: $secondary-link-color; + + @media #{$mobile-only} { + color: $secondary-link-color; + } + } + } + + #footer { + border-top: $border; + + a { + color: $secondary-link-color; + } + } + + .subtext, .subtext-palm, .subtext-laptop, .domain, .meta, .deleted-meta{ + color: $subtext-color; + + a { + color: $secondary-link-color; + } + } + + .popup { + background: $header-background-color; + } + + .item-header { + border-bottom: $border; + + @media #{$mobile-only} { + background: $wrapper-mobile-background-color; + } + } + + .pollContent { + .pollBar { + background: $secondary-link-color; + } + } + + .loader { + color: $secondary-link-color; + background: $secondary-link-color; + + &:before, &:after { + background: $secondary-link-color; + } + } + + .job-header { + @media #{$mobile-only} { + border-bottom: $border; + } + } + + .back-button { + @media #{$mobile-only} { + border-top: .3rem solid $secondary-link-color; + border-right: .3rem solid $secondary-link-color; + } + } + + .error-section { + .skull { + .head { + background-color: $secondary-link-color; + + &:before, &:after { + background-color: $wrapper-background-color; + + @media #{$mobile-only} { + background-color: $wrapper-mobile-background-color; + } + } + + .crack { + background-color: $wrapper-background-color; + + @media #{$mobile-only} { + background-color: $wrapper-mobile-background-color; + } + + &:before { + border-top: $skull-size / 8 solid $wrapper-background-color; + + @media #{$mobile-only} { + border-top: $skull-size / 8 solid $wrapper-mobile-background-color; + } + } + } + } + + .mouth { + background-color: $secondary-link-color; + + &:before { + background-color: $wrapper-background-color; + + @media #{$mobile-only} { + background-color: $wrapper-mobile-background-color; + } + } + } + + .teeth { + background-color: $wrapper-background-color; + + @media #{$mobile-only} { + background-color: $wrapper-mobile-background-color; + } + + &:before, &:after { + background-color: $wrapper-background-color; + + @media #{$mobile-only} { + background-color: $wrapper-mobile-background-color; + } + } + } + } + } + + .main-details { + .name { + color: $secondary-link-color; + } + .right { + color: $secondary-link-color; + } + } + } + } +} + +@include theme( + default, + $theme-day-body-background-color, + $theme-day-wrapper-background-color, + $theme-day-wrapper-mobile-background-color, + $theme-day-text-color, + $theme-day-text-color, + $theme-day-subtext-color, + $theme-day-header-background-color, + $theme-day-subtext-color, + $theme-day-secondary-color, + $theme-day-logo-inner, + $theme-day-border +); + +@include theme( + night, + $theme-night-body-background-color, + $theme-night-wrapper-background-color, + $theme-night-wrapper-mobile-background-color, + $theme-night-text-color, + $theme-night-text-color, + $theme-night-subtext-color, + $theme-night-header-background-color, + $theme-night-subtext-color, + $theme-night-secondary-color, + $theme-night-logo-inner, + $theme-night-border +); + +@include theme( + amoledblack, + $theme-amoledblack-body-background-color, + $theme-amoledblack-body-background-color, + $theme-amoledblack-body-background-color, + $theme-amoledblack-text-color, + $theme-amoledblack-text-color, + darken($theme-amoledblack-text-color, 33%), + $theme-amoledblack-body-background-color, + $theme-amoledblack-subtext-color, + $theme-amoledblack-secondary-color, + $theme-amoledblack-body-background-color, + $theme-amoledblack-secondary-color +); + +/* ---------------------------------- + + Include your new theme here as well as the settings component + +---------------------------------- */ diff --git a/react-app/src/styles/styles.scss b/react-app/src/styles/styles.scss new file mode 100644 index 000000000..1ae79f47f --- /dev/null +++ b/react-app/src/styles/styles.scss @@ -0,0 +1,43 @@ +@import "./themes"; + +html { + height: 100%; + width: 100%; +} + +body { + margin: 0; + height: 100%; + width: 100%; +} + +#root { + height: 100%; +} + +pre { + white-space: pre-wrap; +} + +.app-loader { + display: flex; + align-items: center; + justify-content: center; + opacity: 1; + position: fixed; + height: 100%; + width: 100%; + top: 0; + left: 0; + z-index: 100; + + .logo { + width: 20vh; + } +} + +@media screen and (max-width: 768px) { + .app-loader { + background-color: #fff; + } +} diff --git a/react-app/src/utils/comment.ts b/react-app/src/utils/comment.ts new file mode 100644 index 000000000..a6b1accb4 --- /dev/null +++ b/react-app/src/utils/comment.ts @@ -0,0 +1,7 @@ +export function formatCommentCount(comment: number): string { + if (comment > 0) { + const st = comment === 1 ? 'comment' : 'comments'; + return `${comment} ${st}`; + } + return 'discuss'; +} diff --git a/react-app/tsconfig.app.json b/react-app/tsconfig.app.json new file mode 100644 index 000000000..6830b6f75 --- /dev/null +++ b/react-app/tsconfig.app.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "es2023", + "lib": ["ES2023", "DOM"], + "module": "esnext", + "types": ["vite/client"], + "allowArbitraryExtensions": true, + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/react-app/tsconfig.json b/react-app/tsconfig.json new file mode 100644 index 000000000..1ffef600d --- /dev/null +++ b/react-app/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/react-app/tsconfig.node.json b/react-app/tsconfig.node.json new file mode 100644 index 000000000..8455dcbc2 --- /dev/null +++ b/react-app/tsconfig.node.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "es2023", + "lib": ["ES2023"], + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "module": "nodenext", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/react-app/vite.config.ts b/react-app/vite.config.ts new file mode 100644 index 000000000..e42e87d58 --- /dev/null +++ b/react-app/vite.config.ts @@ -0,0 +1,67 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { VitePWA } from 'vite-plugin-pwa' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [ + react(), + VitePWA({ + registerType: 'autoUpdate', + injectRegister: 'auto', + includeAssets: [ + 'favicon.ico', + 'assets/icons/**/*', + 'assets/images/**/*', + ], + manifest: { + name: 'Angular 2 HN', + short_name: 'Angular 2 HN', + icons: [ + { + src: 'assets/icons/android-chrome-144x144.png', + sizes: '144x144', + type: 'image/png', + }, + { + src: 'assets/icons/android-chrome-192x192.png', + sizes: '192x192', + type: 'image/png', + }, + { + src: 'assets/icons/android-chrome-256x256.png', + sizes: '256x256', + type: 'image/png', + }, + { + src: 'assets/icons/android-chrome-512x512.png', + sizes: '512x512', + type: 'image/png', + }, + ], + theme_color: '#b92b27', + background_color: '#ffffff', + display: 'standalone', + orientation: 'portrait', + start_url: './?utm_source=web_app_manifest', + }, + workbox: { + globPatterns: ['**/*.{js,css,html,ico,png,svg}'], + navigateFallback: 'index.html', + }, + }), + ], + css: { + preprocessorOptions: { + scss: { + silenceDeprecations: [ + 'legacy-js-api', + 'import', + 'slash-div', + 'color-functions', + 'global-builtin', + ], + }, + }, + }, +}) From 47fdfc038834386ac347618033e21ed80c27d4ac Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 8 Jul 2026 20:30:08 +0000 Subject: [PATCH 2/2] bug: correct skip-link text to 'skip to content' to match its #content target Co-Authored-By: ameen --- react-app/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-app/index.html b/react-app/index.html index a6faaf1ef..dcaae19bb 100644 --- a/react-app/index.html +++ b/react-app/index.html @@ -40,7 +40,7 @@ - +