From c4977e4b5e8dd88414b52046ecfab464cf597648 Mon Sep 17 00:00:00 2001 From: Todd Sales Date: Tue, 10 Mar 2026 22:29:56 -0400 Subject: [PATCH] First Commit --- .gitignore | 24 + README.md | 16 + eslint.config.js | 29 + index.html | 16 + package-lock.json | 4390 ++++++++++++++++++++++++++++ package.json | 34 + public/Logo.jpg | Bin 0 -> 51872 bytes public/items.xlsx | Bin 0 -> 40299 bytes public/vite.svg | 1 + quotes.json | 373 +++ server.js | 94 + src/App.css | 42 + src/App.jsx | 230 ++ src/assets/react.svg | 1 + src/components/CustomerForm.jsx | 93 + src/components/ItemSelector.jsx | 53 + src/components/QuoteSummary.jsx | 115 + src/components/SavedQuotesList.jsx | 68 + src/index.css | 317 ++ src/main.jsx | 10 + src/utils/excelParser.js | 25 + vite.config.js | 16 + 22 files changed, 5947 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/Logo.jpg create mode 100644 public/items.xlsx create mode 100644 public/vite.svg create mode 100644 quotes.json create mode 100644 server.js create mode 100644 src/App.css create mode 100644 src/App.jsx create mode 100644 src/assets/react.svg create mode 100644 src/components/CustomerForm.jsx create mode 100644 src/components/ItemSelector.jsx create mode 100644 src/components/QuoteSummary.jsx create mode 100644 src/components/SavedQuotesList.jsx create mode 100644 src/index.css create mode 100644 src/main.jsx create mode 100644 src/utils/excelParser.js create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.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/README.md b/README.md new file mode 100644 index 0000000..18bc70e --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## 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 using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..4fa125d --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,29 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{js,jsx}'], + extends: [ + js.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + rules: { + 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], + }, + }, +]) diff --git a/index.html b/index.html new file mode 100644 index 0000000..dca331a --- /dev/null +++ b/index.html @@ -0,0 +1,16 @@ + + + + + + + + LB Quote Generator + + + +
+ + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..35b71d2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4390 @@ +{ + "name": "project", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "project", + "version": "0.0.0", + "dependencies": { + "concurrently": "^9.2.1", + "cors": "^2.8.6", + "express": "^5.2.1", + "lucide-react": "^0.575.0", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "nodemon": "^3.1.14", + "vite": "^7.3.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@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.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "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.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", + "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.3", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.3", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", + "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.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/@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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "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/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "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/@vitejs/plugin-react": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz", + "integrity": "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", + "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001774", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz", + "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concurrently": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", + "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", + "license": "MIT", + "dependencies": { + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.3", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.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/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/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.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/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.302", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", + "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "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-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.3", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", + "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.3", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "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" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz", + "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.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/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "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/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "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/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "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-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/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": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "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/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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/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/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.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.575.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.575.0.tgz", + "integrity": "sha512-VuXgKZrk0uiDlWjGGXmKV6MSk9Yy4l10qgVvzGn2AWBx1Ylt0iBexKOAoA6I7JO3m+M9oeovJd3yYENfkUbOeg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "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/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nodemon": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz", + "integrity": "sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^10.2.1", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/nodemon/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "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/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "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==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "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/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "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-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "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.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "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/package.json b/package.json new file mode 100644 index 0000000..a3d280d --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "project", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "concurrently \"nodemon server.js\" \"vite --host\"", + "build": "vite build", + "start": "node server.js", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "concurrently": "^9.2.1", + "cors": "^2.8.6", + "express": "^5.2.1", + "lucide-react": "^0.575.0", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "nodemon": "^3.1.14", + "vite": "^7.3.1" + } +} \ No newline at end of file diff --git a/public/Logo.jpg b/public/Logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0990659654ded3f97e07bbd0bc0cfd193dc0ae7a GIT binary patch literal 51872 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 V8p^0>w{GFUUxe@~kb&HO`ya(G7p4FJ literal 0 HcmV?d00001 diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quotes.json b/quotes.json new file mode 100644 index 0000000..c6e7d0c --- /dev/null +++ b/quotes.json @@ -0,0 +1,373 @@ +[ + { + "date": "2026-03-01", + "customer": { + "name": "Test", + "address": "123 Main" + }, + "id": "1234", + "items": [] + }, + { + "id": 4460, + "date": "March 1, 2026", + "customer": { + "name": "admin", + "address": "", + "city": "Chatham", + "province": "ON", + "postalCode": "", + "phone": "" + }, + "items": [ + { + "Item ID": "MDL-8B3R7", + "Description": "Earth Drill, 8 HP B&S 13:1 RC Vanguard Engine#19L132-0112-F1", + "Price": 6766.37, + "quantity": 1 + } + ] + }, + { + "id": 10318, + "date": "March 2, 2026", + "customer": { + "name": "Test User", + "address": "Test Street", + "city": "Chatham", + "province": "ON", + "postalCode": "N7M 5J5", + "phone": "5193540540" + }, + "items": [ + { + "Item ID": "MDL-5B3PR7", + "Description": "Earth Drill,6HP B&S PW RC 13:1Vanguard Engine#12V3320012F", + "Price": 5801.37, + "quantity": 1 + }, + { + "Item ID": "8X36-SSS", + "Description": "Auger, Snap-on", + "Price": 483.23, + "quantity": 1 + }, + { + "Item ID": "9X42-SSP", + "Description": "Auger, Snap-on, Pengo Style", + "Price": 786.13, + "quantity": 1 + } + ] + }, + { + "id": 9135, + "date": "March 2, 2026", + "customer": { + "name": "", + "address": "", + "city": "", + "province": "", + "postalCode": "", + "phone": "" + }, + "items": [ + { + "Item ID": "MDL-8H", + "Description": "Earth Drill, 8 HP Honda Engine#GX240 w/Flat Free Tires", + "Price": 6669.06, + "quantity": 1 + }, + { + "Item ID": "3000-RCT", + "Description": "Roll Cage, Tall", + "Price": 423.45, + "quantity": 1 + } + ] + }, + { + "id": 1772, + "date": "March 2, 2026", + "customer": { + "name": "LOCATION AMOS", + "address": "621 AVENUE DU PARC", + "city": "AMOS", + "province": "QC", + "postalCode": "J9T 4M7", + "phone": "819 732 8301" + }, + "items": [ + { + "Item ID": "HYD-TB11H", + "Description": "Hydraulic Towable Drill, 11HP Honda GX340K1QA2", + "Price": 9288.928934999998, + "quantity": 1 + }, + { + "Item ID": "HYD-NTV11H", + "Description": "Hydraulic, Non-Towable Drill, 11 HP Honda GXV340", + "Price": 6624.375614999999, + "quantity": 1 + }, + { + "Item ID": "9054", + "Description": "Extension, Tube, 36 inch", + "Price": 176.9726475, + "quantity": 1 + }, + { + "Item ID": "8X36-SSP", + "Description": "Auger, Snap-on, Pengo Style", + "Price": 689.861205, + "quantity": 1 + }, + { + "Item ID": "12X36-SSP", + "Description": "Auger, Snap-on, Pengo Style", + "Price": 802.78209, + "quantity": 1 + }, + { + "Item ID": "10X36-SSP", + "Description": "Auger, Snap-on, Pengo Style", + "Price": 726.86889, + "quantity": 1 + } + ], + "shippingCost": "100" + }, + { + "id": 8694, + "date": "March 3, 2026", + "customer": { + "name": "Kyle Mercer", + "address": "", + "city": "Georgina", + "province": "ON", + "postalCode": "L4P 3B2", + "phone": "289 338 0664" + }, + "items": [ + { + "Item ID": "MDL-8H", + "Description": "Earth Drill, 8 HP Honda Engine#GX240 w/Flat Free Tires", + "Price": 5852.907719999999, + "quantity": 1 + }, + { + "Item ID": "20200", + "Description": "Sidewalk Auger Kit", + "Price": 980.229195, + "quantity": 1 + }, + { + "Item ID": "20100-3", + "Description": "Horizontal Drill Kit w/3\" Bit", + "Price": 933.73236, + "quantity": 1 + } + ], + "shippingCost": "150" + }, + { + "id": 1692, + "date": "March 3, 2026", + "customer": { + "name": "JAY MAY", + "address": "", + "city": "SCARBOROUGH", + "province": "ON", + "postalCode": "", + "phone": "416 829 2118", + "email": "jaymayhome64@gmail.com" + }, + "items": [ + { + "Item ID": "HYD-TB11H", + "Description": "Hydraulic Towable Drill, 11HP Honda GX340K1QA2", + "Price": 9288.928934999998, + "quantity": 1 + }, + { + "Item ID": "8X36-SSS", + "Description": "Auger, Snap-on", + "Price": 460.22377500000005, + "quantity": 1 + } + ], + "shippingCost": "160.00" + }, + { + "id": 7869, + "date": "March 5, 2026", + "customer": { + "name": "DEWEY MERREN", + "address": "174 HAMILTON", + "city": "CHATEAUGUAY", + "province": "QC", + "postalCode": "J1J 1K1", + "phone": "438-874-4112", + "email": "deweym143@gmail.com" + }, + "items": [ + { + "Item ID": "HYD-PS11H", + "Description": "Hydraulic Power Source ONLY, 11HP GX340K1QA2", + "Price": 6123.348494999999, + "quantity": 1 + }, + { + "Item ID": "HYD-2MH220", + "Description": "Hydraulic Two-Man Handle W/220RPM Motor", + "Price": 2535.0264224999996, + "quantity": 1 + }, + { + "Item ID": "4X42-SSS", + "Description": "Auger, Snap-on", + "Price": 405.66116249999993, + "quantity": 1 + }, + { + "Item ID": "9054-4X36", + "Description": "Extension, Snap-on, 4 X 36", + "Price": 302.70388499999996, + "quantity": 4 + } + ], + "shippingCost": "200" + }, + { + "id": 6022, + "date": "March 5, 2026", + "customer": { + "name": "Sawdust Brothers Fences", + "address": "2008 Garnett Way NW", + "city": "Edmonton", + "province": "AB", + "postalCode": "T5T 6T5", + "phone": "780 243 2767", + "email": "sawdustbrosfences@gmail.com" + }, + "items": [ + { + "Item ID": "3324", + "Description": "FLEXIBLE SHAFT ASSY COMPLETE SUHNER", + "Price": 1161.4719600000003, + "quantity": 1 + }, + { + "Item ID": "9023-10", + "Description": "Blade, 10 Inch", + "Price": 53.708589, + "quantity": 2 + } + ], + "shippingCost": "35" + }, + { + "id": 6482, + "date": "March 5, 2026", + "customer": { + "name": "DEWEY MERREN", + "address": "174 HAMILTON ", + "city": "CHATEAUGUAY ", + "province": "QC", + "postalCode": "J1J 1K1", + "phone": "438-874-4112", + "email": "deweym143@gmail.com" + }, + "items": [ + { + "Item ID": "TRIPOD", + "Description": "Tri-Pod Lifting Frame with LiftRing", + "Price": 2689.2251099999994, + "quantity": 1 + } + ], + "shippingCost": 0 + }, + { + "id": 4453, + "date": "March 10, 2026", + "customer": { + "name": "PERFECT POST", + "address": "", + "city": "", + "province": "", + "postalCode": "", + "phone": "", + "email": "" + }, + "items": [ + { + "Item ID": "4031-1", + "Description": "Throttle Lever Kit", + "Price": 55.796201999999994, + "quantity": 1 + }, + { + "Item ID": "4179-F", + "Description": "Clutch Drum, w/ Pilot Bearing,for Fiber Lined Shoe Clutch", + "Price": 212.55696, + "quantity": 1 + }, + { + "Item ID": "4041-2", + "Description": "Spring, Return, Throttle Lever5/16 OD x 29/32 Coil Length", + "Price": 21.635261999999997, + "quantity": 1 + }, + { + "Item ID": "3124-1", + "Description": "Housing, Flexible Shaft,", + "Price": 724.0221449999999, + "quantity": 1 + }, + { + "Item ID": "10470", + "Description": "Toggle Kill Switch Asy., Handle(incl. Nut & On-Off", + "Price": 16.511121, + "quantity": 2 + }, + { + "Item ID": "3324", + "Description": "FLEXIBLE SHAFT ASSY COMPLETE SUHNER", + "Price": 1161.4719600000003, + "quantity": 1 + }, + { + "Item ID": "4034-A", + "Description": "Screw, Machine, 10-32 X 5/8 Round pltd.", + "Price": 0.49343580000000004, + "quantity": 2 + }, + { + "Item ID": "10370", + "Description": "Bolt, 5/8 x 1-3/4, Shoulder", + "Price": 16.606012500000002, + "quantity": 1 + }, + { + "Item ID": "4033", + "Description": "Rivet, Steel Pltd, 3/16 X 1 7/8 X 3/8", + "Price": 1.4233725, + "quantity": 1 + }, + { + "Item ID": "4081", + "Description": "Key, 1/4 X 1/4 X 1-1/8 - 7&8 hpRotor & Adaptor Key", + "Price": 2.1825045, + "quantity": 1 + }, + { + "Item ID": "10010-L", + "Description": "Transmission with Adapter, 10:1 for Loop Handle", + "Price": 1696.6600200000003, + "quantity": 2 + } + ], + "shippingCost": 0 + } +] \ No newline at end of file diff --git a/server.js b/server.js new file mode 100644 index 0000000..bef06ae --- /dev/null +++ b/server.js @@ -0,0 +1,94 @@ +import express from 'express'; +import cors from 'cors'; +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const app = express(); +const PORT = 3001; +const DATA_FILE = path.join(__dirname, 'quotes.json'); + +app.use(cors()); +app.use(express.json()); + +// Log every request +app.use((req, res, next) => { + console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`); + next(); +}); + +// Helper to read data +const readData = () => { + try { + if (!fs.existsSync(DATA_FILE)) { + return []; + } + const data = fs.readFileSync(DATA_FILE, 'utf8'); + return JSON.parse(data); + } catch (err) { + console.error("Error reading data:", err); + return []; + } +}; + +// Helper to write data +const writeData = (data) => { + try { + fs.writeFileSync(DATA_FILE, JSON.stringify(data, null, 2), 'utf8'); + } catch (err) { + console.error("Error writing data:", err); + } +}; + +// GET all quotes +app.get('/api/quotes', (req, res) => { + const quotes = readData(); + res.json(quotes); +}); + +// POST a new or updated quote +app.post('/api/quotes', (req, res) => { + const newQuote = req.body; + let quotes = readData(); + + const existingIndex = quotes.findIndex(q => q.id === newQuote.id); + if (existingIndex >= 0) { + quotes[existingIndex] = newQuote; // Update + } else { + quotes.push(newQuote); // Add new + } + + writeData(quotes); + res.status(201).json(newQuote); +}); + +// DELETE a quote +app.delete('/api/quotes/:id', (req, res) => { + const idToDelete = parseInt(req.params.id) || req.params.id; // Handle number or string + let quotes = readData(); + + const initialLength = quotes.length; + quotes = quotes.filter(q => q.id != idToDelete); + + if (quotes.length < initialLength) { + writeData(quotes); + res.status(200).json({ message: "Quote deleted successfully" }); + } else { + res.status(404).json({ message: "Quote not found" }); + } +}); + +// Serve frontend static files +app.use(express.static(path.join(__dirname, 'dist'))); + +// Fallback for SPA (React Router, etc.) +app.get(/(.*)/, (req, res) => { + res.sendFile(path.join(__dirname, 'dist', 'index.html')); +}); + +app.listen(PORT, '0.0.0.0', () => { + console.log(`Backend server running on port ${PORT}`); +}); diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 0000000..6dfc502 --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,230 @@ +import React, { useState, useEffect } from 'react'; +import { loadItemsFromExcel } from './utils/excelParser'; +import CustomerForm from './components/CustomerForm'; +import ItemSelector from './components/ItemSelector'; +import QuoteSummary from './components/QuoteSummary'; +import SavedQuotesList from './components/SavedQuotesList'; +import { Printer, Save, FilePlus } from 'lucide-react'; +import './index.css'; + +function App() { + const [catalogItems, setCatalogItems] = useState([]); + const [quoteItems, setQuoteItems] = useState([]); + const [quoteId, setQuoteId] = useState(''); + const [quoteDate, setQuoteDate] = useState(''); + const [savedQuotes, setSavedQuotes] = useState([]); + const [shippingCost, setShippingCost] = useState(0); + + const [customer, setCustomer] = useState({ + name: '', + address: '', + city: '', + province: '', + postalCode: '', + phone: '', + email: '' + }); + + // Initialize quote ID and date + useEffect(() => { + generateNewQuoteId(); + loadSavedQuotes(); + }, []); + + useEffect(() => { + const fetchCatalog = async () => { + const data = await loadItemsFromExcel(); + setCatalogItems(data); + }; + fetchCatalog(); + }, []); + + const generateNewQuoteId = () => { + setQuoteId(Math.floor(Math.random() * 10000) + 1000); + setQuoteDate(new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })); + }; + + const loadSavedQuotes = async () => { + try { + const response = await fetch('/api/quotes'); + if (response.ok) { + const data = await response.json(); + setSavedQuotes(data); + } + } catch (error) { + console.error("Error loading quotes:", error); + } + }; + + const handleAddItem = (item) => { + setQuoteItems([...quoteItems, item]); + }; + + const handleRemoveItem = (index) => { + const newItems = [...quoteItems]; + newItems.splice(index, 1); + setQuoteItems(newItems); + }; + + const handlePrint = () => { + window.print(); + }; + + const handleSaveQuote = async () => { + if (quoteItems.length === 0) { + alert("Cannot save an empty quote."); + return; + } + + const quoteData = { + id: quoteId, + date: quoteDate, + customer: customer, + items: quoteItems, + shippingCost: shippingCost + }; + + try { + const response = await fetch('/api/quotes', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(quoteData) + }); + + if (response.ok) { + let updatedQuotes = [...savedQuotes]; + const existingIndex = updatedQuotes.findIndex(q => q.id === quoteId); + + if (existingIndex >= 0) { + updatedQuotes[existingIndex] = quoteData; // Update existing + } else { + updatedQuotes.push(quoteData); // Add new + } + + setSavedQuotes(updatedQuotes); + alert(`Quote #${quoteId} saved successfully!`); + } + } catch (error) { + console.error("Error saving quote:", error); + alert("Failed to save quote. Backend might be down."); + } + }; + + const handleLoadQuote = (quote) => { + setQuoteId(quote.id); + setQuoteDate(quote.date); + setCustomer(quote.customer); + setQuoteItems(quote.items); + setShippingCost(quote.shippingCost || 0); + window.scrollTo({ top: 0, behavior: 'smooth' }); + }; + + const handleDeleteQuote = async (idToDelete) => { + if (window.confirm(`Are you sure you want to delete Quote #${idToDelete}?`)) { + try { + const response = await fetch(`/api/quotes/${idToDelete}`, { + method: 'DELETE' + }); + + if (response.ok) { + const updatedQuotes = savedQuotes.filter(q => q.id !== idToDelete); + setSavedQuotes(updatedQuotes); + + // If we are currently viewing the deleted quote, start a new one + if (quoteId === idToDelete) { + handleNewQuote(); + } + } + } catch (error) { + console.error("Error deleting quote:", error); + alert("Failed to delete quote. Backend might be down."); + } + } + }; + + const handleNewQuote = () => { + generateNewQuoteId(); + setCustomer({ name: '', address: '', city: '', province: '', postalCode: '', phone: '', email: '' }); + setQuoteItems([]); + setShippingCost(0); + }; + + return ( +
+ {/* Header - Visible on screen and print */} +
+ Company Logo +

Little Beaver Earth Augers

+

Official Quote Generator

+ +
+ + {/* Print-only details */} +
+
+
+

Quote For:

+

{customer.name || 'N/A'}

+

{customer.address || 'N/A'}

+

{customer.city ? `${customer.city}, ` : ''}{customer.province} {customer.postalCode}

+

{customer.phone || 'N/A'}

+

{customer.email || 'N/A'}

+
+
+

Quote Details:

+

Date: {quoteDate}

+

Quote #: {quoteId}

+
+
+
+ + + +
+

Current Quote: #{quoteId}

+ +
+ + {/* Customer Form */} +
+ +
+ + {/* Item Selector */} + + + {/* Quote Summary */} + {/* Quote Summary */} + + + {/* Action Buttons */} + {quoteItems.length > 0 && ( +
+ + +
+ )} + + {/* Saved Quotes */} + +
+ ); +} + +export default App; diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/CustomerForm.jsx b/src/components/CustomerForm.jsx new file mode 100644 index 0000000..d70dbe4 --- /dev/null +++ b/src/components/CustomerForm.jsx @@ -0,0 +1,93 @@ +import React from 'react'; + +export default function CustomerForm({ customer, onChange }) { + const handleChange = (e) => { + const { name, value } = e.target; + onChange({ ...customer, [name]: value }); + }; + + return ( +
+

Customer Information

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ ); +} diff --git a/src/components/ItemSelector.jsx b/src/components/ItemSelector.jsx new file mode 100644 index 0000000..92a57a9 --- /dev/null +++ b/src/components/ItemSelector.jsx @@ -0,0 +1,53 @@ +import React, { useState } from 'react'; +import { Plus } from 'lucide-react'; + +export default function ItemSelector({ items, onAddItem }) { + const [selectedItemIndex, setSelectedItemIndex] = useState(''); + const [quantity, setQuantity] = useState(1); + + const handleAdd = () => { + if (selectedItemIndex !== '' && quantity > 0) { + const selectedItem = items[selectedItemIndex]; + onAddItem({ ...selectedItem, quantity: parseInt(quantity, 10) }); + setSelectedItemIndex(''); + setQuantity(1); + } + }; + + return ( +
+

Add Items to Quote

+
+
+ + +
+
+ + setQuantity(e.target.value)} + /> +
+ +
+
+ ); +} diff --git a/src/components/QuoteSummary.jsx b/src/components/QuoteSummary.jsx new file mode 100644 index 0000000..8dc8245 --- /dev/null +++ b/src/components/QuoteSummary.jsx @@ -0,0 +1,115 @@ +import React from 'react'; +import { Trash2 } from 'lucide-react'; + +export default function QuoteSummary({ items, customer, shippingCost, onShippingChange, onRemoveItem }) { + const provinceTaxRates = { + 'ON': 0.13, // Ontario (HST) + 'QC': 0.05, // Quebec (GST) + 'NS': 0.15, // Nova Scotia (HST) + 'NB': 0.15, // New Brunswick (HST) + 'MB': 0.05, // Manitoba (GST) + 'BC': 0.05, // British Columbia (GST) + 'PE': 0.15, // Prince Edward Island (HST) + 'SK': 0.05, // Saskatchewan (GST) + 'AB': 0.05, // Alberta (GST) + 'NL': 0.15, // Newfoundland and Labrador (HST) + 'NT': 0.05, // Northwest Territories (GST) + 'YT': 0.05, // Yukon (GST) + 'NU': 0.05 // Nunavut (GST) + }; + + const getTaxRate = () => { + const province = customer.province?.toUpperCase().trim(); + return provinceTaxRates[province] || 0.13; // Default to 13% if unknown + }; + + const calculateSubtotal = () => { + return items.reduce((total, item) => total + (item.Price * item.quantity), 0); + }; + + const subtotal = calculateSubtotal(); + const shipping = parseFloat(shippingCost) || 0; + const taxRate = getTaxRate(); + const tax = (subtotal + shipping) * taxRate; + const total = subtotal + shipping + tax; + + const formatCurrency = (amount) => { + return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(amount); + }; + + if (items.length === 0) { + return ( +
+

No items added to the quote yet.

+
+ ); + } + + return ( +
+

Quote Summary

+
+ + + + + + + + + + + + + {items.map((item, index) => ( + + + + + + + + + ))} + +
Item IDDescriptionUnit PriceQuantityTotalAction
{item['Item ID']}{item.Description}{formatCurrency(item.Price)}{item.quantity}{formatCurrency(item.Price * item.quantity)} + +
+
+ +
+
+ Subtotal: + {formatCurrency(subtotal)} +
+
+ Shipping: +
+ $ + onShippingChange(e.target.value)} + style={{ width: '80px', padding: '0.25rem', fontSize: '1rem', textAlign: 'right' }} + /> +
+ {formatCurrency(shipping)} +
+
+ Tax ({(taxRate * 100).toFixed(1)}%): + {formatCurrency(tax)} +
+
+ Total: + {formatCurrency(total)} +
+
+
+ ); +} diff --git a/src/components/SavedQuotesList.jsx b/src/components/SavedQuotesList.jsx new file mode 100644 index 0000000..eeb48f0 --- /dev/null +++ b/src/components/SavedQuotesList.jsx @@ -0,0 +1,68 @@ +import React from 'react'; +import { Trash2, Download } from 'lucide-react'; + +export default function SavedQuotesList({ savedQuotes, onLoadQuote, onDeleteQuote }) { + if (!savedQuotes || savedQuotes.length === 0) { + return null; + } + + const formatCurrency = (amount) => { + return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(amount); + }; + + return ( +
+

Saved Quotes

+
+ + + + + + + + + + + + + {savedQuotes.map((quote) => { + // Calculate total for display + const subtotal = quote.items.reduce((total, item) => total + (item.Price * item.quantity), 0); + const total = subtotal + (subtotal * 0.08); // Assuming 8% tax as in QuoteSummary + + return ( + + + + + + + + + ); + })} + +
Quote #DateCustomer NameItemsTotalActions
{quote.id}{quote.date}{quote.customer.name || 'N/A'}{quote.items.length}{formatCurrency(total)} +
+ + +
+
+
+
+ ); +} diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..9446dbb --- /dev/null +++ b/src/index.css @@ -0,0 +1,317 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); + +:root { + --primary: #2563eb; + --primary-hover: #1d4ed8; + --bg-color: #f8fafc; + --card-bg: rgba(255, 255, 255, 0.85); + --text-main: #0f172a; + --text-muted: #64748b; + --border-color: #e2e8f0; + --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); + --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); + --radius: 0.75rem; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + font-family: 'Inter', sans-serif; + background-color: var(--bg-color); + background-image: + radial-gradient(at 40% 20%, hsla(210, 100%, 74%, 0.15) 0px, transparent 50%), + radial-gradient(at 80% 0%, hsla(189, 100%, 56%, 0.15) 0px, transparent 50%), + radial-gradient(at 0% 50%, hsla(355, 100%, 93%, 0.15) 0px, transparent 50%); + background-attachment: fixed; + color: var(--text-main); + line-height: 1.5; + -webkit-font-smoothing: antialiased; + min-height: 100vh; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 2rem; +} + +/* Glassmorphism Card */ +.glass-card { + background: var(--card-bg); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(255, 255, 255, 0.3); + border-radius: var(--radius); + box-shadow: var(--shadow-md); + padding: 1.5rem; + margin-bottom: 2rem; + transition: transform 0.2s ease, box-shadow 0.2s ease; +} + +.glass-card:hover { + box-shadow: var(--shadow-lg); +} + +h1, +h2, +h3, +h4 { + color: var(--text-main); + font-weight: 600; + margin-bottom: 1rem; +} + +.header { + text-align: center; + margin-bottom: 3rem; +} + +.header h1 { + font-size: 2.5rem; + background: linear-gradient(135deg, #1e3a8a, #3b82f6); + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: transparent; + margin-bottom: 0.5rem; +} + +.header p { + color: var(--text-muted); + font-size: 1.1rem; +} + +/* Forms */ +.form-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1.5rem; +} + +.form-group { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.form-group label { + font-size: 0.875rem; + font-weight: 500; + color: var(--text-main); +} + +.form-group input, +.form-group select { + padding: 0.75rem 1rem; + border: 1px solid var(--border-color); + border-radius: 0.5rem; + background-color: white; + font-family: inherit; + font-size: 1rem; + transition: all 0.2s ease; +} + +.form-group input:focus, +.form-group select:focus { + outline: none; + border-color: var(--primary); + box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); +} + +/* Buttons */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + padding: 0.75rem 1.5rem; + border: none; + border-radius: 0.5rem; + font-weight: 500; + font-size: 1rem; + cursor: pointer; + transition: all 0.2s ease; + font-family: inherit; +} + +.btn-primary { + background-color: var(--primary); + color: white; + box-shadow: var(--shadow-sm); +} + +.btn-primary:hover { + background-color: var(--primary-hover); + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +.btn-primary:active { + transform: translateY(0); +} + +.btn-danger { + background-color: #fee2e2; + color: #ef4444; +} + +.btn-danger:hover { + background-color: #fecaca; + color: #dc2626; +} + +.btn-icon { + padding: 0.5rem; + border-radius: 0.375rem; +} + +/* Table */ +.table-container { + overflow-x: auto; +} + +table { + width: 100%; + border-collapse: separate; + border-spacing: 0; + margin-top: 1rem; +} + +th, +td { + padding: 1rem; + text-align: left; + border-bottom: 1px solid var(--border-color); +} + +th { + font-weight: 600; + color: var(--text-muted); + font-size: 0.875rem; + text-transform: uppercase; + letter-spacing: 0.05em; + background-color: rgba(248, 250, 252, 0.5); +} + +td { + color: var(--text-main); + vertical-align: middle; +} + +.totals { + margin-top: 2rem; + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 0.5rem; +} + +.total-row { + display: flex; + justify-content: space-between; + width: 300px; + font-size: 1.1rem; +} + +.total-row.grand-total { + font-size: 1.5rem; + font-weight: 700; + color: var(--primary); + border-top: 2px solid var(--border-color); + padding-top: 1rem; + margin-top: 0.5rem; +} + +/* Print Styles */ +@media print { + :root { + --print-size: 9pt; + } + + body { + background: white !important; + color: black !important; + font-size: var(--print-size); + } + + .no-print { + display: none !important; + } + + .print-only-block { + display: block !important; + } + + .glass-card { + box-shadow: none !important; + border: none !important; + padding: 0 !important; + margin-bottom: 2rem !important; + background: transparent !important; + backdrop-filter: none !important; + -webkit-backdrop-filter: none !important; + } + + .container { + padding: 0 !important; + max-width: 100% !important; + } + + .header { + margin-bottom: 1.5rem !important; + } + + .header h1 { + -webkit-text-fill-color: black !important; + background: none !important; + color: black !important; + font-size: 1.8rem !important; + margin-bottom: 0.2rem !important; + } + + .header p { + font-size: 1rem !important; + color: black !important; + } + + .table-container { + overflow: visible !important; + } + + table { + font-size: var(--print-size) !important; + } + + table th { + background-color: #f1f5f9 !important; + -webkit-print-color-adjust: exact; + print-color-adjust: exact; + border-bottom: 2px solid black !important; + color: black !important; + padding: 0.5rem !important; + } + + table td { + border-bottom: 1px solid #e2e8f0 !important; + padding: 0.5rem !important; + } + + .totals { + margin-top: 1.5rem !important; + } + + .total-row { + width: 250px !important; + font-size: var(--print-size) !important; + } + + .total-row.grand-total { + font-size: 1.2rem !important; + border-top: 2px solid black !important; + color: black !important; + } +} \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx new file mode 100644 index 0000000..b9a1a6d --- /dev/null +++ b/src/main.jsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.jsx' + +createRoot(document.getElementById('root')).render( + + + , +) diff --git a/src/utils/excelParser.js b/src/utils/excelParser.js new file mode 100644 index 0000000..939e536 --- /dev/null +++ b/src/utils/excelParser.js @@ -0,0 +1,25 @@ +import * as XLSX from 'xlsx'; + +export const loadItemsFromExcel = async () => { + try { + const response = await fetch(`/items.xlsx?t=${new Date().getTime()}`); + if (!response.ok) { + throw new Error('Failed to load excel file'); + } + const arrayBuffer = await response.arrayBuffer(); + const workbook = XLSX.read(arrayBuffer, { type: 'array' }); + + // Assuming the items are in the first sheet + const firstSheetName = workbook.SheetNames[0]; + const worksheet = workbook.Sheets[firstSheetName]; + + // Convert sheet to JSON + const data = XLSX.utils.sheet_to_json(worksheet); + + // We expect the data to have columns like 'Item ID', 'Description', 'Price' + return data; + } catch (error) { + console.error("Error loading Excel items:", error); + return []; + } +}; diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..550c944 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,16 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], + server: { + allowedHosts: ['lb.salesfam.cloud'], + proxy: { + '/api': { + target: 'http://localhost:3001', + changeOrigin: true, + }, + }, + }, +})