From ed1b9d3c5c76397965fe566d592b53adcf552384 Mon Sep 17 00:00:00 2001 From: Duy Date: Mon, 11 May 2026 10:32:34 +0700 Subject: [PATCH 1/2] solve problems 1-3: sum_to_n implementations, currency swap UI, WalletPage refactor + analysis --- src/problem1/README.md | 52 + src/problem1/index.js | 36 + src/problem2/.gitignore | 24 + src/problem2/.prettierignore | 7 + src/problem2/.prettierrc | 11 + src/problem2/README.md | 56 + src/problem2/components.json | 25 + src/problem2/eslint.config.js | 23 + src/problem2/index.html | 42 +- src/problem2/package-lock.json | 9217 +++++++++++++++++ src/problem2/package.json | 45 + src/problem2/public/vite.svg | 1 + src/problem2/script.js | 0 src/problem2/src/App.tsx | 85 + src/problem2/src/components/swap/SwapForm.tsx | 359 + .../src/components/swap/TokenAmountField.tsx | 100 + .../src/components/swap/TokenIcon.tsx | 45 + .../src/components/swap/TokenSelect.tsx | 191 + .../src/components/theme-provider.tsx | 230 + src/problem2/src/components/ui/button.tsx | 65 + src/problem2/src/hooks/useTokens.ts | 74 + src/problem2/src/index.css | 130 + src/problem2/src/lib/format.ts | 30 + src/problem2/src/lib/prices.ts | 46 + src/problem2/src/lib/utils.ts | 6 + src/problem2/src/main.tsx | 14 + src/problem2/src/types/token.ts | 14 + src/problem2/style.css | 8 - src/problem2/tsconfig.app.json | 32 + src/problem2/tsconfig.json | 13 + src/problem2/tsconfig.node.json | 26 + src/problem2/vite.config.ts | 14 + src/problem3/README.md | 217 + src/problem3/WalletPage.tsx | 99 + 34 files changed, 11303 insertions(+), 34 deletions(-) create mode 100644 src/problem1/README.md create mode 100644 src/problem1/index.js create mode 100644 src/problem2/.gitignore create mode 100644 src/problem2/.prettierignore create mode 100644 src/problem2/.prettierrc create mode 100644 src/problem2/README.md create mode 100644 src/problem2/components.json create mode 100644 src/problem2/eslint.config.js create mode 100644 src/problem2/package-lock.json create mode 100644 src/problem2/package.json create mode 100644 src/problem2/public/vite.svg delete mode 100644 src/problem2/script.js create mode 100644 src/problem2/src/App.tsx create mode 100644 src/problem2/src/components/swap/SwapForm.tsx create mode 100644 src/problem2/src/components/swap/TokenAmountField.tsx create mode 100644 src/problem2/src/components/swap/TokenIcon.tsx create mode 100644 src/problem2/src/components/swap/TokenSelect.tsx create mode 100644 src/problem2/src/components/theme-provider.tsx create mode 100644 src/problem2/src/components/ui/button.tsx create mode 100644 src/problem2/src/hooks/useTokens.ts create mode 100644 src/problem2/src/index.css create mode 100644 src/problem2/src/lib/format.ts create mode 100644 src/problem2/src/lib/prices.ts create mode 100644 src/problem2/src/lib/utils.ts create mode 100644 src/problem2/src/main.tsx create mode 100644 src/problem2/src/types/token.ts delete mode 100644 src/problem2/style.css create mode 100644 src/problem2/tsconfig.app.json create mode 100644 src/problem2/tsconfig.json create mode 100644 src/problem2/tsconfig.node.json create mode 100644 src/problem2/vite.config.ts create mode 100644 src/problem3/README.md create mode 100644 src/problem3/WalletPage.tsx diff --git a/src/problem1/README.md b/src/problem1/README.md new file mode 100644 index 0000000000..b177371bc6 --- /dev/null +++ b/src/problem1/README.md @@ -0,0 +1,52 @@ +# Problem 1 — `sum_to_n` + +Three implementations of `sum_to_n(n)` that return `1 + 2 + ... + n`. + +## Requirements + +- [Node.js](https://nodejs.org/) (any recent LTS version — no dependencies required) + +## Run + +From the repository root: + +```bash +node src/problem1/index.js +``` + +You should see: + +``` +sum_to_n_a(5) = 15 +sum_to_n_b(100) = 5050 +sum_to_n_c(10) = 55 +``` + +## Try it yourself + +Open a Node REPL and import the functions: + +```bash +node +``` + +```js +const { sum_to_n_a, sum_to_n_b, sum_to_n_c } = require('./src/problem1/index.js'); + +sum_to_n_a(5); // 15 — iterative for-loop +sum_to_n_b(100); // 5050 — Gauss closed-form formula +sum_to_n_c(10); // 55 — recursion +``` + +## Implementations + +| Function | Approach | Time | Space | Notes | +| -------------- | --------------------------------- | ---- | ----- | ---------------------------------------------- | +| `sum_to_n_a` | Iterative `for` loop | O(n) | O(1) | Simple and predictable. | +| `sum_to_n_b` | Closed-form formula `n*(n+1)/2` | O(1) | O(1) | Fastest; no iteration. | +| `sum_to_n_c` | Recursion `n + sum_to_n_c(n - 1)` | O(n) | O(n) | Elegant, but risks stack overflow for large n. | + +## Assumptions + +- `n` is a positive integer (`n > 0`). +- The result is always less than `Number.MAX_SAFE_INTEGER`. diff --git a/src/problem1/index.js b/src/problem1/index.js new file mode 100644 index 0000000000..0e8f47940a --- /dev/null +++ b/src/problem1/index.js @@ -0,0 +1,36 @@ +/** + * Three implementations of sum_to_n(n) that return 1 + 2 + ... + n. + * + * Tradeoffs: + * - sum_to_n_a (loop): simple and predictable, O(n) time / O(1) space. + * - sum_to_n_b (formula): fastest, O(1) time / O(1) space, no iteration. + * - sum_to_n_c (recursion): elegant but risks stack overflow for very large n, + * O(n) time / O(n) space due to the call stack. + */ + +// Iterative for-loop accumulation. Time: O(n), Space: O(1). +function sum_to_n_a(n) { + let total = 0; + for (let i = 1; i <= n; i++) total += i; + return total; +} + +// Closed-form Gauss formula n*(n+1)/2. Time: O(1), Space: O(1). +function sum_to_n_b(n) { + return (n * (n + 1)) / 2; +} + +// Recursive definition sum(n) = n + sum(n-1). Time: O(n), Space: O(n) call stack. +function sum_to_n_c(n) { + if (n <= 1) return n; + return n + sum_to_n_c(n - 1); +} + +module.exports = { sum_to_n_a, sum_to_n_b, sum_to_n_c }; + +// Tiny self-test, only runs when this file is executed directly via `node`. +if (require.main === module) { + console.log('sum_to_n_a(5) =', sum_to_n_a(5)); // expect 15 + console.log('sum_to_n_b(100) =', sum_to_n_b(100)); // expect 5050 + console.log('sum_to_n_c(10) =', sum_to_n_c(10)); // expect 55 +} diff --git a/src/problem2/.gitignore b/src/problem2/.gitignore new file mode 100644 index 0000000000..a547bf36d8 --- /dev/null +++ b/src/problem2/.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/src/problem2/.prettierignore b/src/problem2/.prettierignore new file mode 100644 index 0000000000..0b4a1db4da --- /dev/null +++ b/src/problem2/.prettierignore @@ -0,0 +1,7 @@ +node_modules/ +coverage/ +.pnpm-store/ +pnpm-lock.yaml +package-lock.json +pnpm-lock.yaml +yarn.lock diff --git a/src/problem2/.prettierrc b/src/problem2/.prettierrc new file mode 100644 index 0000000000..9000bfaa58 --- /dev/null +++ b/src/problem2/.prettierrc @@ -0,0 +1,11 @@ +{ + "endOfLine": "lf", + "semi": false, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "es5", + "printWidth": 80, + "plugins": ["prettier-plugin-tailwindcss"], + "tailwindStylesheet": "src/index.css", + "tailwindFunctions": ["cn", "cva"] +} diff --git a/src/problem2/README.md b/src/problem2/README.md new file mode 100644 index 0000000000..b011bff77d --- /dev/null +++ b/src/problem2/README.md @@ -0,0 +1,56 @@ +# Switch Swap + +A small currency-swap form that lets you trade between any two tokens listed in +Switcheo's public price feed. The "to" amount is computed live from the +`priceFrom / priceTo` ratio, and submitting simulates a backend swap with a +loading state and a success summary. + +## Tech stack + +- [Vite](https://vitejs.dev/) + React 19 + TypeScript +- [Tailwind CSS v4](https://tailwindcss.com/) (with `tw-animate-css`) +- [shadcn/ui](https://ui.shadcn.com/) primitives (`Button`, theme provider) +- [Radix UI](https://www.radix-ui.com/) (`Popover` for the token picker) +- [Hugeicons](https://hugeicons.com/) for iconography +- Inter Variable via `@fontsource-variable/inter` + +## Getting started + +```bash +cd src/problem2 +npm install +npm run dev +``` + +The dev server prints the local URL (defaults to ; Vite +picks the next free port if it's already taken). + +## Scripts + +| Script | Purpose | +| ------------------- | ---------------------------------- | +| `npm run dev` | Start the Vite dev server | +| `npm run build` | Type-check (`tsc -b`) and build | +| `npm run preview` | Serve the production build locally | +| `npm run lint` | Run ESLint | +| `npm run typecheck` | Run TypeScript only (no emit) | +| `npm run format` | Format with Prettier | + +## Features + +- Searchable token combobox with keyboard navigation (up/down/enter) +- Auto-computed "you receive" amount from live prices +- Direction-swap button with subtle rotate animation +- Inline validation: missing/zero/non-numeric amount, same-token pair +- Loading skeleton while prices fetch, retry panel on failure +- Simulated submit with spinner and success summary +- Light/dark theme (press `d` to toggle) +- Responsive layout, mobile-friendly hit targets + +## Data sources + +- Prices: + (deduplicated by symbol, keeping the most recent valid quote) +- Token icons: + `https://raw.githubusercontent.com/Switcheo/token-icons/main/tokens/.svg` + with a graceful initial-letters fallback when a symbol has no icon. diff --git a/src/problem2/components.json b/src/problem2/components.json new file mode 100644 index 0000000000..3a7fd33e8e --- /dev/null +++ b/src/problem2/components.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "radix-mira", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/index.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "hugeicons", + "rtl": false, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "menuColor": "default", + "menuAccent": "subtle", + "registries": {} +} diff --git a/src/problem2/eslint.config.js b/src/problem2/eslint.config.js new file mode 100644 index 0000000000..5e6b472f58 --- /dev/null +++ b/src/problem2/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/src/problem2/index.html b/src/problem2/index.html index 4058a68bff..8ebadc6e1e 100644 --- a/src/problem2/index.html +++ b/src/problem2/index.html @@ -1,27 +1,17 @@ - - - - - Fancy Form - - - - - - - - -
-
Swap
- - - - - - - -
- - - + + + + + + + + Switch Swap — Currency Swap + + +
+ + diff --git a/src/problem2/package-lock.json b/src/problem2/package-lock.json new file mode 100644 index 0000000000..4f663fe4ac --- /dev/null +++ b/src/problem2/package-lock.json @@ -0,0 +1,9217 @@ +{ + "name": "vite-app", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vite-app", + "version": "0.0.1", + "dependencies": { + "@fontsource-variable/inter": "^5.2.8", + "@hugeicons/core-free-icons": "^4.1.3", + "@hugeicons/react": "^1.1.6", + "@tailwindcss/vite": "^4.2.1", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "radix-ui": "^1.4.3", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "shadcn": "^4.7.0", + "tailwind-merge": "^3.6.0", + "tailwindcss": "^4.2.1", + "tw-animate-css": "^1.4.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.4", + "@types/node": "^24.12.0", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.2.0", + "eslint": "^9.39.4", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.5.2", + "globals": "^16.5.0", + "prettier": "^3.8.1", + "prettier-plugin-tailwindcss": "^0.7.2", + "typescript": "~5.9.3", + "typescript-eslint": "^8.57.1", + "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==", + "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.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", + "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", + "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==", + "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==", + "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-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "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==", + "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-create-class-features-plugin": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz", + "integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.29.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "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==", + "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==", + "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-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.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==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "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==", + "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==", + "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==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "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==", + "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==", + "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==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@dotenvx/dotenvx": { + "version": "1.65.0", + "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.65.0.tgz", + "integrity": "sha512-v4FA/Lw3pTEloLxBqTOaYDX6MNo0Jo7lGBsPZhwnJBqRJp0AzQg1ZZNxrFsh6HVC6QWeWrfIKLn0y2eyIXaVDg==", + "license": "BSD-3-Clause", + "dependencies": { + "commander": "^11.1.0", + "dotenv": "^17.2.1", + "eciesjs": "^0.4.10", + "execa": "^5.1.1", + "fdir": "^6.2.0", + "ignore": "^5.3.0", + "object-treeify": "1.1.33", + "picomatch": "^4.0.4", + "which": "^4.0.0", + "yocto-spinner": "^1.1.0" + }, + "bin": { + "dotenvx": "src/cli/dotenvx.js" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/@dotenvx/dotenvx/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@ecies/ciphers": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.6.tgz", + "integrity": "sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==", + "license": "MIT", + "engines": { + "bun": ">=1", + "deno": ">=2.7.10", + "node": ">=16" + }, + "peerDependencies": { + "@noble/ciphers": "^1.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "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.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "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.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "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.5", + "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.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "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/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.6" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "license": "MIT" + }, + "node_modules/@fontsource-variable/inter": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.8.tgz", + "integrity": "sha512-kOfP2D+ykbcX/P3IFnokOhVRNoTozo5/JxhAIVYLpea/UBmCQ/YWPBfWIDuBImXX/15KH+eKh4xpEUyS2sQQGQ==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@hono/node-server": { + "version": "1.19.14", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", + "integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==", + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@hugeicons/core-free-icons": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@hugeicons/core-free-icons/-/core-free-icons-4.1.3.tgz", + "integrity": "sha512-FWPrKnlYKpSaitUtlZhFlDQXDgHiayTPFJYWvyIKkW2RI6Vj5KBvjxI+lAnnFPu07SwgIMiDDj+Gttl0t+o/oQ==", + "license": "MIT" + }, + "node_modules/@hugeicons/react": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@hugeicons/react/-/react-1.1.6.tgz", + "integrity": "sha512-c2LhXJMAW5wN1pC/smBXG0YPqUON6ceR/ZdXHCjEI9KvB+hjtqYjmzIxok5hAQOeXGz0WtORgCQMzqewFKAZwg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inquirer/ansi": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.5.tgz", + "integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==", + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + } + }, + "node_modules/@inquirer/confirm": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.13.tgz", + "integrity": "sha512-wkGPC7yJ5WJk1DJ5SX7fzk+gfj4BM8cf5dDDi71B/551xHrdsZVRJOC0WyikXd0pEsb/9cLniuE4atbsMqmFkw==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.10", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "11.1.10", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.10.tgz", + "integrity": "sha512-a4Q5BXHQAHa9eO202sTaFCHFYVB3x5fauDuThEAdZ9gfn76pSxiKU7wWcEH0N1O0XmQvNfQNU6QXpiRxmYQx+A==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.5", + "@inquirer/figures": "^2.0.5", + "@inquirer/type": "^4.0.5", + "cli-width": "^4.1.0", + "fast-wrap-ansi": "^0.2.0", + "mute-stream": "^3.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.5.tgz", + "integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==", + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + } + }, + "node_modules/@inquirer/type": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.5.tgz", + "integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==", + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", + "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==", + "license": "MIT", + "dependencies": { + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/@mswjs/interceptors": { + "version": "0.41.8", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.8.tgz", + "integrity": "sha512-pRLMNKTSGRoLq+KnEB/7OY5vijw1XmcheAAOiv6pj7W1FG32kAGqj1C/RK/cqxRGr1Fh+zBi8sDur8kj3EQv6A==", + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@mswjs/interceptors/node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "license": "MIT" + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-3.0.0.tgz", + "integrity": "sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==", + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "license": "MIT" + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accessible-icon": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.7.tgz", + "integrity": "sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz", + "integrity": "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz", + "integrity": "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.7.tgz", + "integrity": "sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz", + "integrity": "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz", + "integrity": "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz", + "integrity": "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz", + "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-form/-/react-form-0.1.8.tgz", + "integrity": "sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-label": "2.1.7", + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz", + "integrity": "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz", + "integrity": "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz", + "integrity": "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-one-time-password-field": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.8.tgz", + "integrity": "sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-password-toggle-field": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-password-toggle-field/-/react-password-toggle-field-0.1.3.tgz", + "integrity": "sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-is-hydrated": "0.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.7.tgz", + "integrity": "sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.8.tgz", + "integrity": "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz", + "integrity": "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", + "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", + "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.15.tgz", + "integrity": "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toolbar": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.1.11.tgz", + "integrity": "sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-separator": "1.1.7", + "@radix-ui/react-toggle-group": "1.1.11" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz", + "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "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.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.3.tgz", + "integrity": "sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.3.tgz", + "integrity": "sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.3.tgz", + "integrity": "sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.3.tgz", + "integrity": "sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.3.tgz", + "integrity": "sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.3.tgz", + "integrity": "sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.3.tgz", + "integrity": "sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.3.tgz", + "integrity": "sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.3.tgz", + "integrity": "sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.3.tgz", + "integrity": "sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.3.tgz", + "integrity": "sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.3.tgz", + "integrity": "sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.3.tgz", + "integrity": "sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.3.tgz", + "integrity": "sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.3.tgz", + "integrity": "sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.3.tgz", + "integrity": "sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.3.tgz", + "integrity": "sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.3.tgz", + "integrity": "sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.3.tgz", + "integrity": "sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.3.tgz", + "integrity": "sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.3.tgz", + "integrity": "sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.3.tgz", + "integrity": "sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.3.tgz", + "integrity": "sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.3.tgz", + "integrity": "sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.3.tgz", + "integrity": "sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz", + "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.21.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.0" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz", + "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-x64": "4.3.0", + "@tailwindcss/oxide-freebsd-x64": "4.3.0", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-x64-musl": "4.3.0", + "@tailwindcss/oxide-wasm32-wasi": "4.3.0", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz", + "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz", + "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz", + "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz", + "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz", + "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz", + "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz", + "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz", + "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz", + "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz", + "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.10.0", + "@emnapi/runtime": "^1.10.0", + "@emnapi/wasi-threads": "^1.2.1", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz", + "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz", + "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.0.tgz", + "integrity": "sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.3.0", + "@tailwindcss/oxide": "4.3.0", + "tailwindcss": "4.3.0" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.27.0.tgz", + "integrity": "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.3", + "minimatch": "^10.0.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@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.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "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/node": { + "version": "24.12.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.3.tgz", + "integrity": "sha512-8oljBDGun9cIsZRJR6fkihn0TSXJI0UDOOhncYaERq6M0JMDoPLxyscwruJcb4GKS6dvK/d8xebYBg27h/duaQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "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==", + "devOptional": 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==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/set-cookie-parser": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.10.tgz", + "integrity": "sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/statuses": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", + "license": "MIT" + }, + "node_modules/@types/validate-npm-package-name": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.2.tgz", + "integrity": "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.2.tgz", + "integrity": "sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.59.2", + "@typescript-eslint/type-utils": "8.59.2", + "@typescript-eslint/utils": "8.59.2", + "@typescript-eslint/visitor-keys": "8.59.2", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.59.2", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.2.tgz", + "integrity": "sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.59.2", + "@typescript-eslint/types": "8.59.2", + "@typescript-eslint/typescript-estree": "8.59.2", + "@typescript-eslint/visitor-keys": "8.59.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.2.tgz", + "integrity": "sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.59.2", + "@typescript-eslint/types": "^8.59.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.2.tgz", + "integrity": "sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.59.2", + "@typescript-eslint/visitor-keys": "8.59.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.2.tgz", + "integrity": "sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.2.tgz", + "integrity": "sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.59.2", + "@typescript-eslint/typescript-estree": "8.59.2", + "@typescript-eslint/utils": "8.59.2", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz", + "integrity": "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.2.tgz", + "integrity": "sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.59.2", + "@typescript-eslint/tsconfig-utils": "8.59.2", + "@typescript-eslint/types": "8.59.2", + "@typescript-eslint/visitor-keys": "8.59.2", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/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/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.2.tgz", + "integrity": "sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.59.2", + "@typescript-eslint/types": "8.59.2", + "@typescript-eslint/typescript-estree": "8.59.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.2.tgz", + "integrity": "sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.59.2", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.2.0.tgz", + "integrity": "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==", + "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 || ^8.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/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.29", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.29.tgz", + "integrity": "sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "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==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", + "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "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/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "license": "MIT" + }, + "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/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "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/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "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==", + "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/cosmiconfig": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "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/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "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/eciesjs": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.18.tgz", + "integrity": "sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==", + "license": "MIT", + "dependencies": { + "@ecies/ciphers": "^0.2.5", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "^1.9.7", + "@noble/hashes": "^1.8.0" + }, + "engines": { + "bun": ">=1", + "deno": ">=2", + "node": ">=16" + } + }, + "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.353", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.353.tgz", + "integrity": "sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "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/enhanced-resolve": { + "version": "5.21.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.2.tgz", + "integrity": "sha512-xe9vQb5kReirPUxgQrXA3ihgbCqssmTiM7cOZ+Gzu+VeGWgpV98lLZvp0dl4yriyAePcewxGUs9UpKD8PET9KQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@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.14.0", + "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.5", + "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.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", + "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.2.tgz", + "integrity": "sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": "^9 || ^10" + } + }, + "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/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "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/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.8.tgz", + "integrity": "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/execa": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "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/express-rate-limit": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.1.tgz", + "integrity": "sha512-5O6KYmyJEpuPJV5hNTXKbAHWRqrzyu+OI3vUnSd2kXFubIVpG7ezpgxQy76Zo5GQZtrQBg86hF+CM/NX+cioiQ==", + "license": "MIT", + "dependencies": { + "ip-address": "^10.2.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz", + "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "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.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "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/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/fs-extra": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", + "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuzzysort": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fuzzysort/-/fuzzysort-3.1.0.tgz", + "integrity": "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==", + "license": "MIT" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-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-east-asian-width": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "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-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-own-enumerable-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-own-enumerable-keys/-/get-own-enumerable-keys-1.0.0.tgz", + "integrity": "sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphql": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.14.0.tgz", + "integrity": "sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-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.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/headers-polyfill": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-5.0.1.tgz", + "integrity": "sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==", + "license": "MIT", + "dependencies": { + "@types/set-cookie-parser": "^2.4.10", + "set-cookie-parser": "^3.0.1" + } + }, + "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/hono": { + "version": "4.12.18", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.18.tgz", + "integrity": "sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "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/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "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/ip-address": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "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-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "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==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-3.0.0.tgz", + "integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/is-regexp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz", + "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jose": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", + "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "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==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "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-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "license": "BSD-2-Clause" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/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/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "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/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/msw": { + "version": "2.14.5", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.14.5.tgz", + "integrity": "sha512-X6G05oX4x0e+CNI55KMdhMmwHCBKf2iwazGr+iwsdoJ94JA1ED7wSXb6V+lLPdqFkmIlPiGYvayqnaNcOzobDA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@inquirer/confirm": "^6.0.11", + "@mswjs/interceptors": "^0.41.3", + "@open-draft/deferred-promise": "^3.0.0", + "@types/statuses": "^2.0.6", + "cookie": "^1.1.1", + "graphql": "^16.13.2", + "headers-polyfill": "^5.0.1", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "rettime": "^0.11.11", + "statuses": "^2.0.2", + "strict-event-emitter": "^0.5.1", + "tough-cookie": "^6.0.1", + "type-fest": "^5.5.0", + "until-async": "^3.0.2", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/msw/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mute-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", + "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "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-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-releases": { + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "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/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.4.0", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/postcss": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "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/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.7.4.tgz", + "integrity": "sha512-UKii4RjY05SNt/WQi6/NcOn/LsT0/ILLXsxygjbRg5/YZelsSu5jTqorYHPDGq4nZy5q5hpCu+XdGZ1xaJEQgw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.19" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-hermes": "*", + "@prettier/plugin-oxc": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "@zackad/prettier-plugin-twig": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-hermes": { + "optional": true + }, + "@prettier/plugin-oxc": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "@zackad/prettier-plugin-twig": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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/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.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/radix-ui": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/radix-ui/-/radix-ui-1.4.3.tgz", + "integrity": "sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-accessible-icon": "1.1.7", + "@radix-ui/react-accordion": "1.2.12", + "@radix-ui/react-alert-dialog": "1.1.15", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-aspect-ratio": "1.1.7", + "@radix-ui/react-avatar": "1.1.10", + "@radix-ui/react-checkbox": "1.3.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-context-menu": "2.2.16", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-dropdown-menu": "2.1.16", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-form": "0.1.8", + "@radix-ui/react-hover-card": "1.1.15", + "@radix-ui/react-label": "2.1.7", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-menubar": "1.1.16", + "@radix-ui/react-navigation-menu": "1.2.14", + "@radix-ui/react-one-time-password-field": "0.1.8", + "@radix-ui/react-password-toggle-field": "0.1.3", + "@radix-ui/react-popover": "1.1.15", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-progress": "1.1.7", + "@radix-ui/react-radio-group": "1.3.8", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-scroll-area": "1.2.10", + "@radix-ui/react-select": "2.2.6", + "@radix-ui/react-separator": "1.1.7", + "@radix-ui/react-slider": "1.3.6", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-switch": "1.2.6", + "@radix-ui/react-tabs": "1.1.13", + "@radix-ui/react-toast": "1.2.15", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-toggle-group": "1.1.11", + "@radix-ui/react-toolbar": "1.1.11", + "@radix-ui/react-tooltip": "1.2.8", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-escape-keydown": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "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.6", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", + "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", + "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.6" + } + }, + "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/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/recast": { + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "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/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rettime": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.11.11.tgz", + "integrity": "sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==", + "license": "MIT" + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.3.tgz", + "integrity": "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==", + "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.60.3", + "@rollup/rollup-android-arm64": "4.60.3", + "@rollup/rollup-darwin-arm64": "4.60.3", + "@rollup/rollup-darwin-x64": "4.60.3", + "@rollup/rollup-freebsd-arm64": "4.60.3", + "@rollup/rollup-freebsd-x64": "4.60.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.3", + "@rollup/rollup-linux-arm-musleabihf": "4.60.3", + "@rollup/rollup-linux-arm64-gnu": "4.60.3", + "@rollup/rollup-linux-arm64-musl": "4.60.3", + "@rollup/rollup-linux-loong64-gnu": "4.60.3", + "@rollup/rollup-linux-loong64-musl": "4.60.3", + "@rollup/rollup-linux-ppc64-gnu": "4.60.3", + "@rollup/rollup-linux-ppc64-musl": "4.60.3", + "@rollup/rollup-linux-riscv64-gnu": "4.60.3", + "@rollup/rollup-linux-riscv64-musl": "4.60.3", + "@rollup/rollup-linux-s390x-gnu": "4.60.3", + "@rollup/rollup-linux-x64-gnu": "4.60.3", + "@rollup/rollup-linux-x64-musl": "4.60.3", + "@rollup/rollup-openbsd-x64": "4.60.3", + "@rollup/rollup-openharmony-arm64": "4.60.3", + "@rollup/rollup-win32-arm64-msvc": "4.60.3", + "@rollup/rollup-win32-ia32-msvc": "4.60.3", + "@rollup/rollup-win32-x64-gnu": "4.60.3", + "@rollup/rollup-win32-x64-msvc": "4.60.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/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/router/node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/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==", + "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/set-cookie-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.1.0.tgz", + "integrity": "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==", + "license": "MIT" + }, + "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/shadcn": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/shadcn/-/shadcn-4.7.0.tgz", + "integrity": "sha512-70fwnesNrY1GgeD7Kdzn+3SsYeyfibm8immsA5L68+OusoPTvYF01oWExl8/latKpMpvVXcbgdbbE6VFBJQ38w==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/plugin-transform-typescript": "^7.28.0", + "@babel/preset-typescript": "^7.27.1", + "@dotenvx/dotenvx": "^1.48.4", + "@modelcontextprotocol/sdk": "^1.26.0", + "@types/validate-npm-package-name": "^4.0.2", + "browserslist": "^4.26.2", + "commander": "^14.0.0", + "cosmiconfig": "^9.0.0", + "dedent": "^1.6.0", + "deepmerge": "^4.3.1", + "diff": "^8.0.2", + "execa": "^9.6.0", + "fast-glob": "^3.3.3", + "fs-extra": "^11.3.1", + "fuzzysort": "^3.1.0", + "https-proxy-agent": "^7.0.6", + "kleur": "^4.1.5", + "msw": "^2.10.4", + "node-fetch": "^3.3.2", + "open": "^11.0.0", + "ora": "^8.2.0", + "postcss": "^8.5.6", + "postcss-selector-parser": "^7.1.0", + "prompts": "^2.4.2", + "recast": "^0.23.11", + "stringify-object": "^5.0.0", + "tailwind-merge": "^3.0.1", + "ts-morph": "^26.0.0", + "tsconfig-paths": "^4.2.0", + "validate-npm-package-name": "^7.0.1", + "zod": "^3.24.1", + "zod-to-json-schema": "^3.24.6" + }, + "bin": { + "shadcn": "dist/index.js" + } + }, + "node_modules/shadcn/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.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.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stringify-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-5.0.0.tgz", + "integrity": "sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-keys": "^1.0.0", + "is-obj": "^3.0.0", + "is-regexp": "^3.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/stringify-object?sponsor=1" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwind-merge": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz", + "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", + "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tldts": { + "version": "7.0.30", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.30.tgz", + "integrity": "sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw==", + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.30" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.30", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.30.tgz", + "integrity": "sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q==", + "license": "MIT" + }, + "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==", + "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/tough-cookie": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-morph": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-26.0.0.tgz", + "integrity": "sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==", + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.27.0", + "code-block-writer": "^13.0.3" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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/tw-animate-css": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz", + "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.6.0.tgz", + "integrity": "sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==", + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.59.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.2.tgz", + "integrity": "sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.59.2", + "@typescript-eslint/parser": "8.59.2", + "@typescript-eslint/typescript-estree": "8.59.2", + "@typescript-eslint/utils": "8.59.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/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/until-async": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz", + "integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/kettanaito" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/validate-npm-package-name": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", + "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.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.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.3.tgz", + "integrity": "sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==", + "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/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/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/wrap-ansi/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/wrap-ansi/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/wrap-ansi/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/wrap-ansi/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/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/wsl-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "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/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yocto-spinner": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-1.2.0.tgz", + "integrity": "sha512-Yw0hUB6UA3o4YUgKy3oSe9a4cxoaZ9sBfYDw+JSxo6Id0KoJGoxzPA24qqUXYKBWABs/zDSGTz9kww7t3F0XGw==", + "license": "MIT", + "dependencies": { + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18.19" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25.28 || ^4" + } + }, + "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/src/problem2/package.json b/src/problem2/package.json new file mode 100644 index 0000000000..909f599964 --- /dev/null +++ b/src/problem2/package.json @@ -0,0 +1,45 @@ +{ + "name": "vite-app", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "format": "prettier --write \"**/*.{ts,tsx}\"", + "typecheck": "tsc --noEmit", + "preview": "vite preview" + }, + "dependencies": { + "@fontsource-variable/inter": "^5.2.8", + "@hugeicons/core-free-icons": "^4.1.3", + "@hugeicons/react": "^1.1.6", + "@tailwindcss/vite": "^4.2.1", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "radix-ui": "^1.4.3", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "shadcn": "^4.7.0", + "tailwind-merge": "^3.6.0", + "tailwindcss": "^4.2.1", + "tw-animate-css": "^1.4.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.4", + "@types/node": "^24.12.0", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.2.0", + "eslint": "^9.39.4", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.5.2", + "globals": "^16.5.0", + "prettier": "^3.8.1", + "prettier-plugin-tailwindcss": "^0.7.2", + "typescript": "~5.9.3", + "typescript-eslint": "^8.57.1", + "vite": "^7.3.1" + } +} diff --git a/src/problem2/public/vite.svg b/src/problem2/public/vite.svg new file mode 100644 index 0000000000..e7b8dfb1b2 --- /dev/null +++ b/src/problem2/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/problem2/script.js b/src/problem2/script.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/problem2/src/App.tsx b/src/problem2/src/App.tsx new file mode 100644 index 0000000000..4736bef46a --- /dev/null +++ b/src/problem2/src/App.tsx @@ -0,0 +1,85 @@ +import { HugeiconsIcon } from "@hugeicons/react" +import { Moon02Icon, SunCloud01Icon } from "@hugeicons/core-free-icons" + +import { SwapForm } from "@/components/swap/SwapForm" +import { Button } from "@/components/ui/button" +import { useTheme } from "@/components/theme-provider" + +export function App() { + return ( +
+ +
+
+
+ S +
+
+
Switch Swap
+
+ Trade simulator +
+
+
+ +
+ +
+
+

+ Swap tokens instantly +

+

+ Live exchange rates sourced from Switcheo's price feed. +

+
+ +
+ +
+ +

+ Prices are mock data for demo purposes. Press{" "} + + d + {" "} + to toggle theme. +

+
+
+ ) +} + +function ThemeToggle() { + const { theme, setTheme } = useTheme() + const isDark = + theme === "dark" || + (theme === "system" && + typeof window !== "undefined" && + window.matchMedia("(prefers-color-scheme: dark)").matches) + + return ( + + ) +} + +function BackgroundGlow() { + return ( +
+
+
+
+
+ ) +} + +export default App diff --git a/src/problem2/src/components/swap/SwapForm.tsx b/src/problem2/src/components/swap/SwapForm.tsx new file mode 100644 index 0000000000..7855d2ff16 --- /dev/null +++ b/src/problem2/src/components/swap/SwapForm.tsx @@ -0,0 +1,359 @@ +import { HugeiconsIcon } from "@hugeicons/react" +import { + ArrowDataTransferVerticalIcon, + CheckmarkCircle02Icon, + Loading03Icon, + RefreshIcon, +} from "@hugeicons/core-free-icons" +import { useMemo, useState } from "react" + +import { Button } from "@/components/ui/button" +import { TokenAmountField } from "@/components/swap/TokenAmountField" +import { useTokens } from "@/hooks/useTokens" +import { formatAmount, parseAmount } from "@/lib/format" +import { cn } from "@/lib/utils" +import type { Token } from "@/types/token" + +type SwapFormProps = { + defaultFrom?: string + defaultTo?: string +} + +type Pair = { from: string; to: string } + +type Status = + | { kind: "idle" } + | { kind: "submitting" } + | { + kind: "success" + from: Token + to: Token + amountFrom: number + amountTo: number + } + +export function SwapForm({ + defaultFrom = "ETH", + defaultTo = "USDC", +}: SwapFormProps) { + const { tokens, isLoading, error, reload } = useTokens() + + // The user's manually-selected pair, if any. When null we fall back to the + // default pair derived from `tokens`. This keeps the pair fully derived + // from data while still allowing user overrides without an effect. + const [userPair, setUserPair] = useState(null) + const [amount, setAmount] = useState("") + const [touched, setTouched] = useState(false) + const [status, setStatus] = useState({ kind: "idle" }) + const [swapPulse, setSwapPulse] = useState(false) + + const tokenMap = useMemo( + () => new Map(tokens.map((t) => [t.symbol, t])), + [tokens] + ) + + const defaultPair = useMemo(() => { + if (tokens.length === 0) return null + const fallbackFrom = + tokens.find((t) => t.symbol === defaultFrom) ?? tokens[0] + const fallbackTo = + tokens.find( + (t) => t.symbol === defaultTo && t.symbol !== fallbackFrom.symbol + ) ?? + tokens.find((t) => t.symbol !== fallbackFrom.symbol) ?? + tokens[0] + return { from: fallbackFrom.symbol, to: fallbackTo.symbol } + }, [tokens, defaultFrom, defaultTo]) + + const pair = userPair ?? defaultPair + const fromToken = pair ? tokenMap.get(pair.from) ?? null : null + const toToken = pair ? tokenMap.get(pair.to) ?? null : null + + const parsed = parseAmount(amount) + const amountError = computeAmountError(amount, parsed) + const pairError = + fromToken && toToken && fromToken.symbol === toToken.symbol + ? "Pick two different tokens" + : null + + const showAmountError = Boolean(touched && amountError) + const rate = + fromToken && toToken && fromToken.symbol !== toToken.symbol + ? fromToken.price / toToken.price + : null + + const toAmount = + rate && Number.isFinite(parsed) && parsed > 0 ? parsed * rate : 0 + + const canSubmit = Boolean( + !isLoading && + !error && + fromToken && + toToken && + !amountError && + !pairError && + status.kind !== "submitting" + ) + + const handleSwapDirection = () => { + if (!pair) return + setUserPair({ from: pair.to, to: pair.from }) + if (toAmount > 0) { + setAmount(stripTrailingZeros(toAmount.toFixed(8))) + } + setSwapPulse(true) + window.setTimeout(() => setSwapPulse(false), 400) + } + + const handleSelectFrom = (token: Token) => { + if (!pair) return + // If the user picks the same token already on the other side, swap them. + if (token.symbol === pair.to) { + setUserPair({ from: token.symbol, to: pair.from }) + } else { + setUserPair({ from: token.symbol, to: pair.to }) + } + } + + const handleSelectTo = (token: Token) => { + if (!pair) return + if (token.symbol === pair.from) { + setUserPair({ from: pair.to, to: token.symbol }) + } else { + setUserPair({ from: pair.from, to: token.symbol }) + } + } + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault() + setTouched(true) + if (!canSubmit || !fromToken || !toToken) return + + setStatus({ kind: "submitting" }) + window.setTimeout(() => { + setStatus({ + kind: "success", + from: fromToken, + to: toToken, + amountFrom: parsed, + amountTo: toAmount, + }) + }, 1500) + } + + const handleReset = () => { + setStatus({ kind: "idle" }) + setAmount("") + setTouched(false) + } + + if (error) { + return + } + + if (isLoading || !fromToken || !toToken) { + return + } + + if (status.kind === "success") { + return ( + + ) + } + + return ( +
+ { + setAmount(next) + if (!touched) setTouched(true) + }} + onTokenChange={handleSelectFrom} + error={showAmountError ? amountError : null} + usdValue={parsed > 0 ? parsed * fromToken.price : null} + /> + +
+ +
+ + 0 ? formatAmount(toAmount) : ""} + token={toToken} + tokens={tokens} + disabledSymbol={fromToken.symbol} + onTokenChange={handleSelectTo} + readOnlyAmount + usdValue={toAmount > 0 ? toAmount * toToken.price : null} + error={pairError} + /> + +
+ Rate + + {rate + ? `1 ${fromToken.symbol} ≈ ${formatAmount(rate)} ${toToken.symbol}` + : "—"} + +
+ + + + ) +} + +function computeAmountError(raw: string, parsed: number): string | null { + if (!raw.trim()) return "Enter an amount" + if (Number.isNaN(parsed)) return "Amount must be a number" + if (parsed <= 0) return "Amount must be greater than 0" + return null +} + +function stripTrailingZeros(s: string): string { + if (!s.includes(".")) return s + return s.replace(/\.?0+$/, "") +} + +function SkeletonForm() { + return ( +
+
+
+
+
+
+
+
+
+ ) +} + +function ErrorPanel({ + message, + onRetry, +}: { + message: string + onRetry: () => void +}) { + return ( +
+

+ Couldn't load token prices +

+

{message}

+ +
+ ) +} + +function SuccessPanel({ + from, + to, + amountFrom, + amountTo, + onReset, +}: { + from: Token + to: Token + amountFrom: number + amountTo: number + onReset: () => void +}) { + return ( +
+
+ +
+
+

Swap complete

+

+ Your simulated trade was confirmed. +

+
+
+
+ Sent + + {formatAmount(amountFrom)} {from.symbol} + +
+
+
+ Received + + {formatAmount(amountTo)} {to.symbol} + +
+
+ +
+ ) +} diff --git a/src/problem2/src/components/swap/TokenAmountField.tsx b/src/problem2/src/components/swap/TokenAmountField.tsx new file mode 100644 index 0000000000..9a899e1b8d --- /dev/null +++ b/src/problem2/src/components/swap/TokenAmountField.tsx @@ -0,0 +1,100 @@ +import { useId } from "react" + +import { TokenSelect } from "@/components/swap/TokenSelect" +import { cn } from "@/lib/utils" +import type { Token } from "@/types/token" + +type TokenAmountFieldProps = { + label: string + amount: string + token: Token | null + tokens: Token[] + disabledSymbol?: string + onAmountChange?: (next: string) => void + onTokenChange: (token: Token) => void + readOnlyAmount?: boolean + error?: string | null + usdValue?: number | null +} + +export function TokenAmountField({ + label, + amount, + token, + tokens, + disabledSymbol, + onAmountChange, + onTokenChange, + readOnlyAmount, + error, + usdValue, +}: TokenAmountFieldProps) { + const inputId = useId() + const isInvalid = Boolean(error) + + return ( +
+
+ + {token && ( + + 1 {token.symbol} = ${" "} + {token.price.toLocaleString("en-US", { + maximumFractionDigits: 6, + })} + + )} +
+
+ onAmountChange?.(e.target.value)} + placeholder="0.0" + aria-invalid={isInvalid} + className={cn( + "min-w-0 flex-1 bg-transparent text-3xl font-semibold tracking-tight tabular-nums outline-none", + "placeholder:text-muted-foreground/40", + readOnlyAmount && "cursor-default" + )} + /> + +
+
+ {error ? ( + {error} + ) : ( + + {usdValue != null && usdValue > 0 + ? `≈ $${usdValue.toLocaleString("en-US", { + maximumFractionDigits: 2, + })}` + : ""} + + )} +
+
+ ) +} diff --git a/src/problem2/src/components/swap/TokenIcon.tsx b/src/problem2/src/components/swap/TokenIcon.tsx new file mode 100644 index 0000000000..93d748269d --- /dev/null +++ b/src/problem2/src/components/swap/TokenIcon.tsx @@ -0,0 +1,45 @@ +import { useState } from "react" + +import { cn } from "@/lib/utils" +import type { Token } from "@/types/token" + +type TokenIconProps = { + token: Token + size?: number + className?: string +} + +export function TokenIcon({ token, size = 24, className }: TokenIconProps) { + const [errored, setErrored] = useState(false) + + if (errored) { + return ( + + {token.symbol.slice(0, 3).toUpperCase()} + + ) + } + + return ( + setErrored(true)} + className={cn( + "rounded-full bg-background ring-1 ring-border", + className + )} + style={{ width: size, height: size }} + /> + ) +} diff --git a/src/problem2/src/components/swap/TokenSelect.tsx b/src/problem2/src/components/swap/TokenSelect.tsx new file mode 100644 index 0000000000..7167b12e8e --- /dev/null +++ b/src/problem2/src/components/swap/TokenSelect.tsx @@ -0,0 +1,191 @@ +import { HugeiconsIcon } from "@hugeicons/react" +import { ArrowDown01Icon, Search01Icon } from "@hugeicons/core-free-icons" +import { Popover } from "radix-ui" +import { useEffect, useMemo, useRef, useState } from "react" + +import { TokenIcon } from "@/components/swap/TokenIcon" +import { cn } from "@/lib/utils" +import type { Token } from "@/types/token" + +type TokenSelectProps = { + value: Token | null + onChange: (token: Token) => void + tokens: Token[] + disabledSymbol?: string + placeholder?: string +} + +export function TokenSelect({ + value, + onChange, + tokens, + disabledSymbol, + placeholder = "Select token", +}: TokenSelectProps) { + const [open, setOpen] = useState(false) + const [query, setQuery] = useState("") + const [activeIndex, setActiveIndex] = useState(0) + const inputRef = useRef(null) + const listRef = useRef(null) + + const filtered = useMemo(() => { + const q = query.trim().toLowerCase() + if (!q) return tokens + return tokens.filter((t) => t.symbol.toLowerCase().includes(q)) + }, [tokens, query]) + + // Scroll the active option into view when navigating with the keyboard. + useEffect(() => { + if (!open) return + const node = listRef.current?.querySelector( + `[data-index="${activeIndex}"]` + ) + node?.scrollIntoView({ block: "nearest" }) + }, [activeIndex, open]) + + const handleOpenChange = (next: boolean) => { + setOpen(next) + if (next) { + setQuery("") + setActiveIndex(0) + // Focus the search input after the popover mounts. + window.setTimeout(() => inputRef.current?.focus(), 0) + } + } + + const selectAt = (index: number) => { + const token = filtered[index] + if (!token) return + if (token.symbol === disabledSymbol) return + onChange(token) + setOpen(false) + } + + const handleKeyDown = (e: React.KeyboardEvent) => { + if (e.key === "ArrowDown") { + e.preventDefault() + setActiveIndex((i) => Math.min(filtered.length - 1, i + 1)) + } else if (e.key === "ArrowUp") { + e.preventDefault() + setActiveIndex((i) => Math.max(0, i - 1)) + } else if (e.key === "Enter") { + e.preventDefault() + selectAt(activeIndex) + } else if (e.key === "Escape") { + setOpen(false) + } + } + + return ( + + + {value ? ( + <> + + {value.symbol} + + ) : ( + {placeholder} + )} + + + + +
+ + { + setQuery(e.target.value) + setActiveIndex(0) + }} + onKeyDown={handleKeyDown} + placeholder="Search token" + className={cn( + "h-9 w-full rounded-lg border border-border bg-background pr-3 pl-9 text-sm", + "placeholder:text-muted-foreground/70 focus:border-ring focus:ring-2 focus:ring-ring/30 focus:outline-none" + )} + /> +
+
    + {filtered.length === 0 && ( +
  • + No tokens match “{query}” +
  • + )} + {filtered.map((token, index) => { + const isActive = index === activeIndex + const isSelected = value?.symbol === token.symbol + const isDisabled = token.symbol === disabledSymbol + return ( +
  • setActiveIndex(index)} + onClick={() => selectAt(index)} + className={cn( + "flex cursor-pointer items-center justify-between gap-3 rounded-lg px-2 py-2", + isActive && !isDisabled && "bg-muted", + isDisabled && + "cursor-not-allowed opacity-40 hover:bg-transparent" + )} + > +
    + +
    + + {token.symbol} + + + $ + {token.price.toLocaleString("en-US", { + maximumFractionDigits: 6, + })} + +
    +
    + {isSelected && ( + + Selected + + )} +
  • + ) + })} +
+
+
+
+ ) +} diff --git a/src/problem2/src/components/theme-provider.tsx b/src/problem2/src/components/theme-provider.tsx new file mode 100644 index 0000000000..1349a0ca18 --- /dev/null +++ b/src/problem2/src/components/theme-provider.tsx @@ -0,0 +1,230 @@ +/* eslint-disable react-refresh/only-export-components */ +import * as React from "react" + +type Theme = "dark" | "light" | "system" +type ResolvedTheme = "dark" | "light" + +type ThemeProviderProps = { + children: React.ReactNode + defaultTheme?: Theme + storageKey?: string + disableTransitionOnChange?: boolean +} + +type ThemeProviderState = { + theme: Theme + setTheme: (theme: Theme) => void +} + +const COLOR_SCHEME_QUERY = "(prefers-color-scheme: dark)" +const THEME_VALUES: Theme[] = ["dark", "light", "system"] + +const ThemeProviderContext = React.createContext< + ThemeProviderState | undefined +>(undefined) + +function isTheme(value: string | null): value is Theme { + if (value === null) { + return false + } + + return THEME_VALUES.includes(value as Theme) +} + +function getSystemTheme(): ResolvedTheme { + if (window.matchMedia(COLOR_SCHEME_QUERY).matches) { + return "dark" + } + + return "light" +} + +function disableTransitionsTemporarily() { + const style = document.createElement("style") + style.appendChild( + document.createTextNode( + "*,*::before,*::after{-webkit-transition:none!important;transition:none!important}" + ) + ) + document.head.appendChild(style) + + return () => { + window.getComputedStyle(document.body) + requestAnimationFrame(() => { + requestAnimationFrame(() => { + style.remove() + }) + }) + } +} + +function isEditableTarget(target: EventTarget | null) { + if (!(target instanceof HTMLElement)) { + return false + } + + if (target.isContentEditable) { + return true + } + + const editableParent = target.closest( + "input, textarea, select, [contenteditable='true']" + ) + if (editableParent) { + return true + } + + return false +} + +export function ThemeProvider({ + children, + defaultTheme = "system", + storageKey = "theme", + disableTransitionOnChange = true, + ...props +}: ThemeProviderProps) { + const [theme, setThemeState] = React.useState(() => { + const storedTheme = localStorage.getItem(storageKey) + if (isTheme(storedTheme)) { + return storedTheme + } + + return defaultTheme + }) + + const setTheme = React.useCallback( + (nextTheme: Theme) => { + localStorage.setItem(storageKey, nextTheme) + setThemeState(nextTheme) + }, + [storageKey] + ) + + const applyTheme = React.useCallback( + (nextTheme: Theme) => { + const root = document.documentElement + const resolvedTheme = + nextTheme === "system" ? getSystemTheme() : nextTheme + const restoreTransitions = disableTransitionOnChange + ? disableTransitionsTemporarily() + : null + + root.classList.remove("light", "dark") + root.classList.add(resolvedTheme) + + if (restoreTransitions) { + restoreTransitions() + } + }, + [disableTransitionOnChange] + ) + + React.useEffect(() => { + applyTheme(theme) + + if (theme !== "system") { + return undefined + } + + const mediaQuery = window.matchMedia(COLOR_SCHEME_QUERY) + const handleChange = () => { + applyTheme("system") + } + + mediaQuery.addEventListener("change", handleChange) + + return () => { + mediaQuery.removeEventListener("change", handleChange) + } + }, [theme, applyTheme]) + + React.useEffect(() => { + const handleKeyDown = (event: KeyboardEvent) => { + if (event.repeat) { + return + } + + if (event.metaKey || event.ctrlKey || event.altKey) { + return + } + + if (isEditableTarget(event.target)) { + return + } + + if (event.key.toLowerCase() !== "d") { + return + } + + setThemeState((currentTheme) => { + const nextTheme = + currentTheme === "dark" + ? "light" + : currentTheme === "light" + ? "dark" + : getSystemTheme() === "dark" + ? "light" + : "dark" + + localStorage.setItem(storageKey, nextTheme) + return nextTheme + }) + } + + window.addEventListener("keydown", handleKeyDown) + + return () => { + window.removeEventListener("keydown", handleKeyDown) + } + }, [storageKey]) + + React.useEffect(() => { + const handleStorageChange = (event: StorageEvent) => { + if (event.storageArea !== localStorage) { + return + } + + if (event.key !== storageKey) { + return + } + + if (isTheme(event.newValue)) { + setThemeState(event.newValue) + return + } + + setThemeState(defaultTheme) + } + + window.addEventListener("storage", handleStorageChange) + + return () => { + window.removeEventListener("storage", handleStorageChange) + } + }, [defaultTheme, storageKey]) + + const value = React.useMemo( + () => ({ + theme, + setTheme, + }), + [theme, setTheme] + ) + + return ( + + {children} + + ) +} + +export const useTheme = () => { + const context = React.useContext(ThemeProviderContext) + + if (context === undefined) { + throw new Error("useTheme must be used within a ThemeProvider") + } + + return context +} diff --git a/src/problem2/src/components/ui/button.tsx b/src/problem2/src/components/ui/button.tsx new file mode 100644 index 0000000000..4bf7636977 --- /dev/null +++ b/src/problem2/src/components/ui/button.tsx @@ -0,0 +1,65 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" +import { Slot } from "radix-ui" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-xs/relaxed font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/80", + outline: + "border-border hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:bg-input/30", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground", + ghost: + "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50", + destructive: + "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: + "h-7 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5", + xs: "h-5 gap-1 rounded-sm px-2 text-[0.625rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-2.5", + sm: "h-6 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3", + lg: "h-8 gap-1 px-2.5 text-xs/relaxed has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-4", + icon: "size-7 [&_svg:not([class*='size-'])]:size-3.5", + "icon-xs": "size-5 rounded-sm [&_svg:not([class*='size-'])]:size-2.5", + "icon-sm": "size-6 [&_svg:not([class*='size-'])]:size-3", + "icon-lg": "size-8 [&_svg:not([class*='size-'])]:size-4", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +function Button({ + className, + variant = "default", + size = "default", + asChild = false, + ...props +}: React.ComponentProps<"button"> & + VariantProps & { + asChild?: boolean + }) { + const Comp = asChild ? Slot.Root : "button" + + return ( + + ) +} + +export { Button, buttonVariants } diff --git a/src/problem2/src/hooks/useTokens.ts b/src/problem2/src/hooks/useTokens.ts new file mode 100644 index 0000000000..a84d5ad786 --- /dev/null +++ b/src/problem2/src/hooks/useTokens.ts @@ -0,0 +1,74 @@ +import { useCallback, useEffect, useReducer } from "react" + +import { fetchTokens } from "@/lib/prices" +import type { Token } from "@/types/token" + +type State = { + tokens: Token[] + isLoading: boolean + error: string | null + nonce: number +} + +type Action = + | { type: "reload" } + | { type: "success"; tokens: Token[] } + | { type: "failure"; error: string } + +const initialState: State = { + tokens: [], + isLoading: true, + error: null, + nonce: 0, +} + +function reducer(state: State, action: Action): State { + switch (action.type) { + case "reload": + return { ...state, isLoading: true, error: null, nonce: state.nonce + 1 } + case "success": + return { ...state, isLoading: false, error: null, tokens: action.tokens } + case "failure": + return { ...state, isLoading: false, error: action.error } + default: + return state + } +} + +type UseTokensState = { + tokens: Token[] + isLoading: boolean + error: string | null + reload: () => void +} + +export function useTokens(): UseTokensState { + const [state, dispatch] = useReducer(reducer, initialState) + + const reload = useCallback(() => dispatch({ type: "reload" }), []) + + useEffect(() => { + const controller = new AbortController() + + fetchTokens(controller.signal) + .then((result) => { + if (controller.signal.aborted) return + dispatch({ type: "success", tokens: result }) + }) + .catch((err) => { + if (controller.signal.aborted) return + const message = + err instanceof Error ? err.message : "Failed to load tokens" + dispatch({ type: "failure", error: message }) + }) + + return () => controller.abort() + }, [state.nonce]) + + return { + tokens: state.tokens, + isLoading: state.isLoading, + error: state.error, + reload, + } +} diff --git a/src/problem2/src/index.css b/src/problem2/src/index.css new file mode 100644 index 0000000000..0f3aa60d44 --- /dev/null +++ b/src/problem2/src/index.css @@ -0,0 +1,130 @@ +@import "tailwindcss"; +@import "tw-animate-css"; +@import "shadcn/tailwind.css"; +@import "@fontsource-variable/inter"; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --font-heading: var(--font-sans); + --font-sans: 'Inter Variable', sans-serif; + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --color-foreground: var(--foreground); + --color-background: var(--background); + --radius-sm: calc(var(--radius) * 0.6); + --radius-md: calc(var(--radius) * 0.8); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) * 1.4); + --radius-2xl: calc(var(--radius) * 1.8); + --radius-3xl: calc(var(--radius) * 2.2); + --radius-4xl: calc(var(--radius) * 2.6); +} + +:root { + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.5 0.134 242.749); + --primary-foreground: oklch(0.977 0.013 236.62); + --secondary: oklch(0.967 0.001 286.375); + --secondary-foreground: oklch(0.21 0.006 285.885); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.828 0.111 230.318); + --chart-2: oklch(0.685 0.169 237.323); + --chart-3: oklch(0.588 0.158 241.966); + --chart-4: oklch(0.5 0.134 242.749); + --chart-5: oklch(0.443 0.11 240.79); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.588 0.158 241.966); + --sidebar-primary-foreground: oklch(0.977 0.013 236.62); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.443 0.11 240.79); + --primary-foreground: oklch(0.977 0.013 236.62); + --secondary: oklch(0.274 0.006 286.033); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.828 0.111 230.318); + --chart-2: oklch(0.685 0.169 237.323); + --chart-3: oklch(0.588 0.158 241.966); + --chart-4: oklch(0.5 0.134 242.749); + --chart-5: oklch(0.443 0.11 240.79); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.685 0.169 237.323); + --sidebar-primary-foreground: oklch(0.293 0.066 243.157); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } + html { + @apply font-sans; + } +} \ No newline at end of file diff --git a/src/problem2/src/lib/format.ts b/src/problem2/src/lib/format.ts new file mode 100644 index 0000000000..83def8f477 --- /dev/null +++ b/src/problem2/src/lib/format.ts @@ -0,0 +1,30 @@ +/** + * Formats a number for display in the swap form. + * + * Uses up to 8 significant digits so very small token prices (e.g. 0.0040877) + * remain readable while large values stay compact. + */ +export function formatAmount(value: number, maxDecimals = 8): string { + if (!Number.isFinite(value)) return "0" + if (value === 0) return "0" + + const abs = Math.abs(value) + const decimals = abs >= 1 ? Math.min(6, maxDecimals) : maxDecimals + + return value.toLocaleString("en-US", { + minimumFractionDigits: 0, + maximumFractionDigits: decimals, + }) +} + +/** + * Parses a user-entered amount string into a number, returning NaN if invalid. + * + * Strips grouping separators but only accepts a single decimal point. + */ +export function parseAmount(raw: string): number { + const trimmed = raw.trim().replace(/,/g, "") + if (!trimmed) return NaN + if (!/^\d*(\.\d*)?$/.test(trimmed)) return NaN + return Number(trimmed) +} diff --git a/src/problem2/src/lib/prices.ts b/src/problem2/src/lib/prices.ts new file mode 100644 index 0000000000..ebe7a2fd11 --- /dev/null +++ b/src/problem2/src/lib/prices.ts @@ -0,0 +1,46 @@ +import type { PriceEntry, Token } from "@/types/token" + +const PRICES_URL = "https://interview.switcheo.com/prices.json" +const ICON_BASE = + "https://raw.githubusercontent.com/Switcheo/token-icons/main/tokens" + +export function tokenIconUrl(symbol: string): string { + return `${ICON_BASE}/${symbol}.svg` +} + +/** + * Fetches the latest price for every token from the Switcheo prices endpoint. + * + * The endpoint can contain multiple entries per currency and entries with + * `price` missing or non-positive — we keep only the most recent valid price + * per symbol and drop the rest. Tokens without a usable price are omitted. + */ +export async function fetchTokens(signal?: AbortSignal): Promise { + const response = await fetch(PRICES_URL, { signal }) + + if (!response.ok) { + throw new Error(`Failed to load prices (${response.status})`) + } + + const entries = (await response.json()) as PriceEntry[] + const latest = new Map() + + for (const entry of entries) { + if (!entry?.currency || typeof entry.price !== "number") continue + if (!Number.isFinite(entry.price) || entry.price <= 0) continue + + const previous = latest.get(entry.currency) + if (!previous || new Date(entry.date) > new Date(previous.date)) { + latest.set(entry.currency, entry) + } + } + + return Array.from(latest.values()) + .map((entry) => ({ + symbol: entry.currency, + price: entry.price, + updatedAt: entry.date, + iconUrl: tokenIconUrl(entry.currency), + })) + .sort((a, b) => a.symbol.localeCompare(b.symbol)) +} diff --git a/src/problem2/src/lib/utils.ts b/src/problem2/src/lib/utils.ts new file mode 100644 index 0000000000..bd0c391ddd --- /dev/null +++ b/src/problem2/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/src/problem2/src/main.tsx b/src/problem2/src/main.tsx new file mode 100644 index 0000000000..2c36773b87 --- /dev/null +++ b/src/problem2/src/main.tsx @@ -0,0 +1,14 @@ +import { StrictMode } from "react" +import { createRoot } from "react-dom/client" + +import "./index.css" +import App from "./App.tsx" +import { ThemeProvider } from "@/components/theme-provider.tsx" + +createRoot(document.getElementById("root")!).render( + + + + + +) diff --git a/src/problem2/src/types/token.ts b/src/problem2/src/types/token.ts new file mode 100644 index 0000000000..e37eacd740 --- /dev/null +++ b/src/problem2/src/types/token.ts @@ -0,0 +1,14 @@ +export type PriceEntry = { + currency: string + date: string + price: number +} + +export type Token = { + symbol: string + price: number + /** Most recent price-quote timestamp (ISO string) */ + updatedAt: string + /** CDN URL for the token icon. */ + iconUrl: string +} diff --git a/src/problem2/style.css b/src/problem2/style.css deleted file mode 100644 index 915af91c72..0000000000 --- a/src/problem2/style.css +++ /dev/null @@ -1,8 +0,0 @@ -body { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - min-width: 360px; - font-family: Arial, Helvetica, sans-serif; -} diff --git a/src/problem2/tsconfig.app.json b/src/problem2/tsconfig.app.json new file mode 100644 index 0000000000..a132313037 --- /dev/null +++ b/src/problem2/tsconfig.app.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "types": ["vite/client"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"] +} diff --git a/src/problem2/tsconfig.json b/src/problem2/tsconfig.json new file mode 100644 index 0000000000..fec8c8e5c2 --- /dev/null +++ b/src/problem2/tsconfig.json @@ -0,0 +1,13 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/src/problem2/tsconfig.node.json b/src/problem2/tsconfig.node.json new file mode 100644 index 0000000000..8a67f62f4c --- /dev/null +++ b/src/problem2/tsconfig.node.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/src/problem2/vite.config.ts b/src/problem2/vite.config.ts new file mode 100644 index 0000000000..79a65e0aec --- /dev/null +++ b/src/problem2/vite.config.ts @@ -0,0 +1,14 @@ +import path from "path" +import tailwindcss from "@tailwindcss/vite" +import react from "@vitejs/plugin-react" +import { defineConfig } from "vite" + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react(), tailwindcss()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +}) diff --git a/src/problem3/README.md b/src/problem3/README.md new file mode 100644 index 0000000000..c3051cc6da --- /dev/null +++ b/src/problem3/README.md @@ -0,0 +1,217 @@ +# Problem 3 — `WalletPage` Code Review & Refactor + +The original component mixes correctness bugs, broken types, and unnecessary re-computation. The list below walks through each issue, grouped by severity. + +--- + +## Bugs (correctness, runtime) + +### 1. `lhsPriority` is undefined inside `filter` + +**What's wrong** + +```ts +const balancePriority = getPriority(balance.blockchain); +if (lhsPriority > -99) { // <- lhsPriority is never declared +``` + +**Why it's a problem** — `lhsPriority` is not a variable in scope. In strict mode / TypeScript this is a compile error; at runtime in plain JS it would throw `ReferenceError`. The author clearly meant the variable they just assigned on the previous line. + +**Fix** — Reference `balancePriority` (or, in the refactor, inline the call: `getPriority(balance.blockchain) > DEFAULT_PRIORITY`). + +--- + +### 2. Filter keeps the wrong balances (`amount <= 0`) + +**What's wrong** + +```ts +if (lhsPriority > -99) { + if (balance.amount <= 0) { + return true; + } +} +return false; +``` + +**Why it's a problem** — As written, only balances with **non-positive** amounts are kept. A wallet UI almost certainly wants to show holdings the user actually has — i.e. positive amounts. This is the opposite of the intended behaviour. + +**Fix** — Use `balance.amount > 0`. (Judgement call documented here: the refactor assumes the goal is "show wallets that contain something" because the list feeds into `usdValue` rows; if the product spec really wanted zero/negative balances surfaced, this becomes a one-liner change.) + +--- + +### 3. Sort comparator has no return value for the equal case + +**What's wrong** + +```ts +.sort((lhs, rhs) => { + if (leftPriority > rightPriority) return -1; + else if (rightPriority > leftPriority) return 1; + // implicit `return undefined` when equal +}); +``` + +**Why it's a problem** — `Array.prototype.sort` requires the comparator to return a number. Returning `undefined` produces engine-defined behaviour and a TypeScript error (`Type 'undefined' is not assignable to type 'number'`). Equal-priority pairs may swap unpredictably. + +**Fix** — Single subtraction: `getPriority(rhs.blockchain) - getPriority(lhs.blockchain)` returns `0` for the equal case, negative when `rhs` is higher (sorts `rhs` first → descending), positive otherwise. + +--- + +### 4. `formattedBalances` is dead code — rows use `sortedBalances` + +**What's wrong** + +```ts +const formattedBalances = sortedBalances.map((balance) => ({ + ...balance, + formatted: balance.amount.toFixed(), +})); + +const rows = sortedBalances.map((balance: FormattedWalletBalance, index) => { + // ... + formattedAmount={balance.formatted} // <- doesn't exist on WalletBalance +}); +``` + +**Why it's a problem** — `formattedBalances` is computed and then thrown away. The JSX map iterates over `sortedBalances` (which has no `formatted` field) but reads `balance.formatted`, which will be `undefined` at runtime. The type assertion to `FormattedWalletBalance` hides the bug from the compiler. + +**Fix** — Build one `processedBalances` array that carries `formatted` and `usdValue` together, and map over that. + +--- + +### 5. `WalletBalance` is missing `blockchain` + +**What's wrong** — `WalletBalance` declares only `currency` and `amount`, but the component reads `balance.blockchain` to compute priority. + +**Why it's a problem** — Silent type hole. Either the runtime data actually carries `blockchain` (and the interface lies) or it doesn't (and `getPriority` always returns `-99`). Either way, the type system can't help. + +**Fix** — Add `blockchain: Blockchain` to the interface. + +--- + +## Performance (unnecessary work / re-renders) + +### 6. `prices` in `useMemo` deps but not used in the memo body + +**What's wrong** + +```ts +const sortedBalances = useMemo(() => { + // ... uses balances + getPriority only ... +}, [balances, prices]); +``` + +**Why it's a problem** — Every time `prices` changes (which, for a live price feed, is often), the filter + sort runs again even though its output cannot have changed. Wasted CPU and a new array reference that forces downstream consumers to re-render. + +**Fix** — `[balances]` only. Move the price-dependent work (USD value, formatting) into a separate `useMemo` keyed on `[sortedBalances, prices]`. + +--- + +### 7. `getPriority` is redefined on every render + +**What's wrong** — `getPriority` is declared inside the component body. + +**Why it's a problem** — A new function object is allocated on every render. More importantly, if `getPriority` ever gets passed to a memoised child or used as a `useCallback`/`useMemo` dependency, its identity changes invalidate caches. The function has no closure dependencies, so there's no reason it has to live in the component. + +**Fix** — Hoist to module scope. The refactor goes a step further and replaces the `switch` with a `Record` lookup, which is both faster (O(1) hash, no branching) and more declarative. + +--- + +### 8. Filter + sort + format + map could share one pass + +Minor: the refactor splits work into two memos by *dependency*, not by iteration cost. For small lists this doesn't matter; flagging it so reviewers know it was a deliberate clarity-over-microopt choice. + +--- + +## Type safety + +### 9. `getPriority(blockchain: any)` + +**What's wrong** — `any` accepts anything. + +**Why it's a problem** — Calling `getPriority('Bitcoin')` or `getPriority(undefined)` silently returns `-99` instead of being a compile error. The set of supported chains is finite and known. + +**Fix** — Define a `Blockchain` union and type the parameter as `Blockchain`. The lookup map then enforces exhaustiveness. + +--- + +### 10. `rows` casts `WalletBalance` to `FormattedWalletBalance` + +**What's wrong** + +```ts +const rows = sortedBalances.map((balance: FormattedWalletBalance, index) => ...) +``` + +**Why it's a problem** — The annotation on the callback parameter is a *type assertion in disguise*: `sortedBalances` items are `WalletBalance`, not `FormattedWalletBalance`. TypeScript trusts you and the bug from issue #4 goes unnoticed. + +**Fix** — Don't annotate; let inference do its job. After consolidating into `processedBalances: FormattedWalletBalance[]`, the type is correct without an assertion. + +--- + +### 11. Array `index` as React `key` + +**What's wrong** + +```tsx + +``` + +**Why it's a problem** — The list is sorted (and could be re-sorted whenever priorities or balances change). When the order changes, React reuses the wrong DOM nodes, causing animation jank, lost focus, and stale internal state in child components. + +**Fix** — Use `balance.currency` (assumed unique per wallet row). If multiple rows could share a currency across chains, use `${blockchain}:${currency}`. + +--- + +## Style / maintainability + +### 12. `React.FC` + redundant `props: Props` annotation + +**What's wrong** — `const WalletPage: React.FC = (props: Props) => { ... }` annotates the parameter twice. Also, `React.FC` is generally discouraged in modern React because it implicitly adds `children` even when the component doesn't render them, and its generic ergonomics are awkward. + +**Fix** — Either drop `React.FC` and use a plain function signature, or keep `React.FC` and remove the redundant `props: Props`. The refactor keeps `React.FC` for familiarity but destructures in the parameter list to avoid the double annotation. + +--- + +### 13. Empty `interface Props extends BoxProps {}` + +**What's wrong** + +```ts +interface Props extends BoxProps {} +``` + +**Why it's a problem** — Empty interface extending a single base is a common ESLint warning (`@typescript-eslint/no-empty-interface`). It conveys no information beyond the alias. + +**Fix** — `type Props = BoxProps`. + +--- + +### 14. `children` destructured but never rendered + +Minor: `const { children, ...rest } = props` pulls `children` out and then drops it. The refactor renders `{children}` inside the `Box` so the prop isn't silently swallowed. + +--- + +## Refactor summary + +Key changes in [`WalletPage.tsx`](./WalletPage.tsx): + +- Replaced `switch` + `getPriority` redeclaration with a module-scope `Record` lookup. +- Added `blockchain: Blockchain` to `WalletBalance`; introduced a typed `Blockchain` union — removed all `any`. +- Fixed the filter: keeps balances with `amount > 0` and a known blockchain. +- Fixed the sort: single-subtraction comparator that handles the equal case. +- Split memoisation by dependency: `sortedBalances` depends on `balances` only; `processedBalances` (with `formatted` and `usdValue`) depends on `sortedBalances` and `prices`. +- Removed the orphaned `formattedBalances` array and the lying `FormattedWalletBalance` cast. +- Used `balance.currency` as a stable `key`. +- Cleaned up `Props` to a type alias, removed the duplicate `props: Props` annotation, and rendered `children`. + +--- + +## How to read this folder + +There's no runnable app here — this problem is a code review exercise. The deliverables are: + +- `README.md` (this file) — the analysis. **Main deliverable; most points live here.** +- `WalletPage.tsx` — a reference refactor that fixes every issue above. It is intentionally not wired into a build; the external symbols (`BoxProps`, `useWalletBalances`, `usePrices`, `WalletRow`, `classes`) are assumed to come from the host application and would resolve in the real codebase. diff --git a/src/problem3/WalletPage.tsx b/src/problem3/WalletPage.tsx new file mode 100644 index 0000000000..155d9a457a --- /dev/null +++ b/src/problem3/WalletPage.tsx @@ -0,0 +1,99 @@ +/** + * Refactored WalletPage. + * + * External symbols (`BoxProps`, `Box`, `useWalletBalances`, `usePrices`, + * `WalletRow`, `classes`) are assumed to be provided by the host app — the + * imports below are placeholders that match the shape of a typical + * MUI + CSS-modules setup. Swap them for the project's real paths. + */ + +import React, { useMemo } from 'react'; +import { Box, BoxProps } from '@mui/material'; +import { useWalletBalances } from './hooks/useWalletBalances'; +import { usePrices } from './hooks/usePrices'; +import { WalletRow } from './components/WalletRow'; +import classes from './WalletPage.module.css'; + +// --- Types --------------------------------------------------------------- + +type Blockchain = + | 'Osmosis' + | 'Ethereum' + | 'Arbitrum' + | 'Zilliqa' + | 'Neo'; + +interface WalletBalance { + currency: string; + amount: number; + blockchain: Blockchain; // was missing in the original +} + +interface FormattedWalletBalance extends WalletBalance { + formatted: string; + usdValue: number; +} + +type Props = BoxProps; + +// --- Pure helpers (hoisted so they aren't redefined per render) ---------- + +const BLOCKCHAIN_PRIORITY: Record = { + Osmosis: 100, + Ethereum: 50, + Arbitrum: 30, + Zilliqa: 20, + Neo: 20, +}; + +const DEFAULT_PRIORITY = -99; + +const getPriority = (blockchain: Blockchain): number => + BLOCKCHAIN_PRIORITY[blockchain] ?? DEFAULT_PRIORITY; + +// --- Component ----------------------------------------------------------- + +export const WalletPage: React.FC = ({ children, ...rest }) => { + const balances = useWalletBalances(); + const prices = usePrices(); + + // Filter + sort depend only on `balances` — not on `prices`. + const sortedBalances = useMemo(() => { + return balances + .filter( + (balance: WalletBalance) => + getPriority(balance.blockchain) > DEFAULT_PRIORITY && + balance.amount > 0, + ) + .sort( + (lhs: WalletBalance, rhs: WalletBalance) => + getPriority(rhs.blockchain) - getPriority(lhs.blockchain), + ); + }, [balances]); + + // Format + compute USD values in a separate memo that *does* depend on prices. + const processedBalances = useMemo(() => { + return sortedBalances.map((balance: WalletBalance) => ({ + ...balance, + formatted: balance.amount.toFixed(), + usdValue: (prices[balance.currency] ?? 0) * balance.amount, + })); + }, [sortedBalances, prices]); + + return ( + + {processedBalances.map((balance: FormattedWalletBalance) => ( + + ))} + {children} + + ); +}; + +export default WalletPage; From 3ba243a23934e64b6e8eba0426a49f67457b12fc Mon Sep 17 00:00:00 2001 From: Duy Date: Mon, 11 May 2026 14:15:19 +0700 Subject: [PATCH 2/2] fix: update some components for swap app --- src/problem2/README.md | 33 +- src/problem2/image-swap-completed.png | Bin 0 -> 92766 bytes src/problem2/image-swap-form.png | Bin 0 -> 110385 bytes src/problem2/image-swapping.png | Bin 0 -> 95685 bytes src/problem2/src/App.tsx | 24 +- src/problem2/src/components/swap/SwapForm.tsx | 308 +++--------------- .../src/components/swap/SwapStatusPanels.tsx | 101 ++++++ .../src/components/swap/TokenAmountField.tsx | 12 +- .../src/components/swap/TokenSelect.tsx | 13 +- src/problem2/src/hooks/useSwapForm.ts | 206 ++++++++++++ src/problem2/src/lib/validation.ts | 72 ++++ 11 files changed, 482 insertions(+), 287 deletions(-) create mode 100644 src/problem2/image-swap-completed.png create mode 100644 src/problem2/image-swap-form.png create mode 100644 src/problem2/image-swapping.png create mode 100644 src/problem2/src/components/swap/SwapStatusPanels.tsx create mode 100644 src/problem2/src/hooks/useSwapForm.ts create mode 100644 src/problem2/src/lib/validation.ts diff --git a/src/problem2/README.md b/src/problem2/README.md index b011bff77d..4c71d07289 100644 --- a/src/problem2/README.md +++ b/src/problem2/README.md @@ -5,6 +5,12 @@ Switcheo's public price feed. The "to" amount is computed live from the `priceFrom / priceTo` ratio, and submitting simulates a backend swap with a loading state and a success summary. +## Screenshots + +| Form | Submitting | Complete | +| :--: | :--------: | :------: | +| ![Swap form](./image-swap-form.png) | ![Swapping](./image-swapping.png) | ![Swap completed](./image-swap-completed.png) | + ## Tech stack - [Vite](https://vitejs.dev/) + React 19 + TypeScript @@ -41,11 +47,34 @@ picks the next free port if it's already taken). - Searchable token combobox with keyboard navigation (up/down/enter) - Auto-computed "you receive" amount from live prices - Direction-swap button with subtle rotate animation -- Inline validation: missing/zero/non-numeric amount, same-token pair +- Inline validation with specific messages for empty / zero / negative / + non-numeric / same-token cases. Invalid keystrokes (letters, multiple dots, + minus signs, scientific notation) are filtered out before reaching state. - Loading skeleton while prices fetch, retry panel on failure - Simulated submit with spinner and success summary - Light/dark theme (press `d` to toggle) -- Responsive layout, mobile-friendly hit targets +- Responsive down to **320px** viewport width: card padding, font sizes, and + the token-picker popover all collapse to fit small screens without + horizontal scroll + +## Code layout + +``` +src/ + components/swap/ + SwapForm.tsx # Presentational form, ~130 lines + SwapStatusPanels.tsx # Skeleton / Error / Success panels + TokenAmountField.tsx # Single amount input + token select + TokenSelect.tsx # Searchable combobox built on Radix Popover + TokenIcon.tsx # SVG icon with initials fallback + hooks/ + useSwapForm.ts # All form state, derivation, and actions + useTokens.ts # Async fetch + reload via reducer + lib/ + format.ts # Number formatting + permissive parsing + validation.ts # Pure amount validator + onChange sanitiser + prices.ts # Live Switcheo price endpoint adapter +``` ## Data sources diff --git a/src/problem2/image-swap-completed.png b/src/problem2/image-swap-completed.png new file mode 100644 index 0000000000000000000000000000000000000000..5f89e3e2ad99df15ef5816d0895a036789f8c91f GIT binary patch literal 92766 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 z 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

e)3y4T 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

k}0gp48Hd&OB#ezLr3$(dZa+}8}Ov6 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

L+8`${c@3ho*lp6V!k=`#i$ZUCSbCzl6 zle{IO_Mx`@A&+a@>u&NrDI?{j{oq9*v4@9aqVrNDRPkrM#sob8NIo(Byjt{4hd+{( zk)|?P&AD&l>~pn6Ps#Jpy_qX~gDh=?(_^JRs=j#&?Os2#fLa)hb%XeZdL*Bjr6x{T=?Y8CcwsH2sX2#59osivHnuI@C+c5mv zZYuact!*6$UntdX1=%ANeoe7cNy~1Pcfxtrdcy3@WlP44x)Tx?*d8A~uU3^gq~p-i zJhW-kkgrr)ywECj!cN?ZKcVH*3>TZJa{2DV9U>uTEvv7di#mm3k!C4YA9j_}jvG0R zl=7=nKvc6gnG-$kSbbj#&ra;u7%aOnG|?9SSSPjQlsE`N?LmB(KDhbc!)x~Dk6^-X zSSLXUJ2>A4A$#td^}?(3+erTXXUnyA#i7|$L{gh|heMZAWOk{hL_VZR9J(EjKYC-v z89U5KI~p5J>fp`E`bmbO`rf_a4!hPI7w=FimcjwOnoRN}&u_I&)(uaEIhkI?8M2U5 zHg}OjcI>L$+UF)StcseNnQusx!i{vE3k&)H_jTvIPb;QQ-KsG)A?B$Fq^lDK>AIQ= z1hVw5K!N{4%!=ieZP~5YnBbNv2}%-LG+F(IieS26*qt9$`DO+MOlQR+LIgv*Hyk-84U9Z_3NSwaa_Ai$9-otq}#o?qAsg!8Iic^N- zSDf>&^!A@qxD)tLTBq2b0oOsDtThpIjWmpkd{@IbK=$Ch@alw`S%0UloZ zTVSr40mO2pa^}BY$3Ok8PDb#`x6aXP90!JQ0DqEy{jb~f&!?be!1^z&{Ui({^d$qU z?8VFf>;&u?aOO+GBk(@KI%ui-fT{xlrNsMUesBKk9Y_LaYWC4(aLdsRtN3>ugbfBy&1+}>pT6YxbI$nh zl_CCj80I=KhzDMGYN_nxPTOB7Pzt>Nr+^o(#oBrXw95M_ml6Eup(+_Tu;5Y;qTG{2)pL>9$$tC{bU8#)^oUeZD_@3p!wLgiae zVn$vS9atr}!45qX)1Um{6T@;|zx5D1>pvd@6F=nXPngGE~)1fH!@bc9yspfNkUjWoh>?{2wCPtb_ zcp2rjxSBiP!yvY-P$uv1>P0v!Z_R2I2&g&xwKRM*;P>aV`Rbx5Zs^ccz*n32Xv|P7KGmYeU3+^0 z`NXxOFAa+t!6kUMF{WrMow-56Z^5pyPd8!gR?AF;YV2X~2Y^-EH1h6o({x)}o|P!A z;C85?C5W2)%(>0M`SH6e`JDF~zA+0?#BkSqSObi3!PTi2F`yBk1cOxMhrll1T!mt2 zg)DmvOy^#Zes4aU@^0dem19Un)jv6ELmry=_7FK4kkn0ltyJ<3HNWY-&mpvr;ZTL= zWQ4&YVenSzQlK7Kwzu;GwmH#5vLIkEym=!am7C%S*rimxxp+3;vRT@*L7`!dBms{{ ziQmV9@@sH;?J1oR2{s5>qcjHL)B~z%@5Gor+$OYFbkVM=ej883@@M}QQ~RV2t0s0= zfP6?-kk1Q6e^zMwv2!p#cmTYc2l~<2sYf_goy7R$X*%6H-Yfj0gTBE{)Xmj{0~;Un zW{9A8M!~P;EOX`Nu1l;~t&F3T(0xSh&64Y{Zu$(iD%psY_!XIcNgYM2L<15K>lt^5 z&*Uq0P?@|SDD1hlOl?h%se&;G@bLzioOiivIX{ak73fF_&Chq##YcrXK* z;Yx$S2CG-6B4&zTy#Qq!X;Xm{$B-TurXIiL@Prtz~6Ol-p@uak>I{=DvevV@`>*^LR8nE@k0BElwz4@XA? z0aO@?aE*re7)xQV%?hlnrYpj9hXJ~Y2^3nRc&BG7H;6C0Hj9tgVf zsCGl>_^z$s+R~I`x#7@yE=&>}N{;dZFVmZFv7+X?ff`oBy4xKbzY*Sdij~*vC|IT0c5i2e<}RMVVB=MyBT}BFGel8BR@5j_CO$}F*a-{W#NW&t za1INCeAzr#`Z}S}<2d2j$OFgEQIXPCWRR|7;P2|aEA6d?5f}BOQPEYC@2t`v%_x?9 zB|D;+m~o6`5?Pre=J+krIZdjO;Hz(JLkX2r9WTRluYYWwJqM|eiqTKK3CLg@pXmD3 z44D6Z`1BmaoOvdVy0Tu@8c7;Bc(RHg{SkjBl0fpS;LlD-^mpM~!0lLAYt=`Mhi_w@2a06hCuwj_@#Ec+&}V0TP9`KfsR zEZdTb-MiVjqy&F90s{L1`gNi09#MW?)L>c!!DjnwBlT~0#-~)~3jE>s*)M?l2w$Zx zLne7_<9d1u(3d%P60e_;B$eeI0*t=CNy6Vn*O~(GAl>Vudg+8REUUn^;VpF=HX0^0qBF-KJ9 zV@vUDHXY@|%^o?o85_pcbUj-4j>@_E%y@B!XSAYd1UHI^x?`f`A^)qnPLe=!q%41( zRH!efDxb%knwbXE9t1=oqg8U9>zRvuNe8{`!~@C?GjLxHPfZtuNX8?9yZpOLT1s_g zB9t>f&iXcBW1#n$w{6PJC7Lpww&!?p8Jl5H!W8686(Ai(#~N2J%t)(Tbq`&To>9zj zvHhx3(=f)I(6kuaHSI3d`J$~N^6XE0i01UMByCR(5H|Klu1tNSxRAd!!QDTV@40hH zVMHhJL5;M_ipMe*<7GNCWaS+3w$M|Lzej3b)s%=kC0bJ#gKll$h}NjsYl0FQJL`8x2ag_;H_{ozu}pOe}-a(4D}hdQP_D! z!hL02B@gYZvDmjzkOpQ`o0}2O-X7dpp&NB?pHj(Fom5|>>qg0fh&K4bmuNh8@-sT{ zaVBgIR}agVD{gaKnQVxZ)if#*wnwKtZO8-7aCUsjB+Z#=qInZK-W18H*=O1JY*TVs zIkV5e*}cmE4x$}=E3IWv@v)L@eK8}`Ay544=EQ}camE=~z@ZG$?XO!xVcES+G_TxO zOO4To8&mlSDP@(bS`)5r>Z89cU(!`9tzucFtC)`6P}O|Q(9|eSeG1H^1~UVT)@p*l zb^31!Vw%%y%gR^@rf+ZB_uTs<^-qEr5AQs?u$Jey=1vSRvSYIdqi z0<7u|p86WOe6& zp=5Pm;wGJJmbvLR8AO%^BAcil78xH#CXmRe*cLous(^(d}eHZsJxYIme3n{RF7C2 za$QazrAWV?54Rk*oKn?nLm7sS+vqXXW?12LX+Y;Y{j*4k6pN5{Y1{PQa95I9`)Isx zsMa9op6OHl9yBP**gq9tt8 zDf+B7LORzzZ9B+1k0-19b?;8sh1lOwC&HdntKkuE?qE~QFzVpf?>kK%e!_cyP(rmd zL$=bkz5M1WJFhgH%l0ahu~&7~I-AU|V-wp2sSvuZ*qPBgClX)VwarkuP>?4M@nO@G z+}P$;JfmEMv;qBZ%0i1pmSwwEI?~BdwfP|n)n$KeBg7TLLD~$K!nu0B(VeEKHqe39 zu711dF!=pq{NPiEv66Nm8&JY2xkFcn3Nrf@wI{YLsN9DZ)_LCKNB!ZOV+|jRIL`&; znh8w^$CtHv%67aIqy*kupnwGzG7Xwm)Fw#Rlyy=#QtTwQLC4wM3Wu_|Zf~Q>)9b*C z|B&ivL`++c)jVH?Oj8sN{}J1pxygc2C*?wB529l_=GG_hYt^sV+U?h*qcJ=ow8oR_@=_o zl-fvIRYuPI8dF9+*5AcDfVMg=U>%IoBE#8~hFGo!D-H=pG0DTcF)(1hEX=h1Y>Os@ z6NW{yvmI}^yFZn2pO;=|=lwnNdXN>m*Gk=a**0Rv8b#ZTkyR61GGNp3{4{<7;Me!a zCMdQ2=nQlv1hmxAeXljtMFW3S2h;&AmPQb-G=WQV`dbgf9zMXI*7(4~kCe7O_-iXA z0B58K-9tMU>MvX<$d){(twClHpvE@A1z1Z5x-8I9>0D1G+B~Hwoy)Wjj|cO$@Jn^N zb9PHmlGLBpya|HFNucf}y1%n7w7}$IRJNC7;r1=jUh7tb^K)vX-E4|67~LI_~P)xcfl;;Bud-joZi#n9+<_>gwq)x4Yo@j8~23n zHZ$~B@+;ODa^8BO?FXdI63Ez)!p02S_zId%_SWndH;U@GQnLkvFDSd%7GInIi)c|4 z18-*QGDv@YL)TC#I=Lw?%?D@dF-S_&I;^qIo%=8zU3~w$LeYR@!#O?n z3H(IAg3yUPoqK1X+p83vCMl*9v%(4;bptasrQKnW9x+g0(Pix!v7V2&ORXA^&V<4l zh4@W5pk?9=l} z8|L0`o9KGdI%?x$aCQ_93wmTM1-o5STW`rLpDm?a4x6rq1PNysah>zZXKmm~y%_xt zDi4aRVISSicY;K#`m3w1!cB;R?3Al<945P<>aPzJ<;&>HufGK%N|IFFPk|D|vfBjE zj1%a{(!_%gr{DBHTZrrSyjZ)pqOQ)tRWlI<_1S|2T|%##m6ThFTj6*r7?q;^;n_9D zP>l8YI2I-PTBX>mlTWyWD6WP==5=G~^w`CZ`Q+$i#RINhmLA7hCg~o}rN_*|fSTjh zPiGfOi~&W1@qokE347<%77V_qX(6Bh^LE7VC70bGQAe;&Mc8%A3-(x_CTV?P?d!$W-^bkibk0B+ zL|-MgHSf)7G!jIc?iIHoCn-|4E*syr(uEBGNyN!_rsxFF8H|eHuV< zeh!2hYdzI@U&?@sH0M(Xbu?wV=v?iqmi^|J838BU9q5Ao=zIpQO3zAE_SmZ38V&9) zWJC+shda-j7)bQ-IfFZ`)aS|Y-aELc*uYjlgI3ZR^@e6{kw_jp!-rR>+^#*`l`}rX zlUOwh+l6_is4iZ=Y5L&%iK4Z3wFH4XpWlvjjsf{SD?D>*w-?;bGM^oSWZF||zs)hk zlV5yIooeS0aMNRd#N^<~qpHVcZ?gHGRI7nXD91YSRZVM2t*E{OIjaXQY?vR*KUB0Wk$>v8^$2 z4^Z(Rh67@ymc3Uu+8=OL+xNzp4=)MAy3WuB02S0H+h7Ho>1C3H3-GeZmESb9-RmDd zn0(edmh7=$rEI|N+9|6Z?Vy2^91UO#LEda1SbVrC1&F0BA5&`p#oPGx3&})qsiyve zatP1MSD0-;=whZg8IMWx$e3$TLD;@}cXDIs8;u(-CcAb0V`I6AYwst#-l^s0pqrS~ zk5`Y+L4b^A1Y`bv9lzpC#J01u9pDvlqKy66u?BnLET z+t=-?mOnev<#TTVBJ;gr&hLap$=rd|U3x7&VBPE59pVY=DMW#1r`Q`mzNfY`oT#h< ziFj2)7E+tq1D5);+L^O29myaEgTc=M9R7b7QoQ%j)_hQ&-mVhsJu#uLd6{zRw8c&T z3pjgso`UaYVXHNYSSfj|=@MQYU=r|<3qd1u_3sTE1(3wdnRhoRe1i^_+jt#j zczh8^0|*IOHeSLrxPK@Z95#1?n?(~2cZUy$Of_v-+0S%J@!+G|5~s zV}9k`?G|r4cYCnZEP-ln(dOvz;X#>6*-}^G!>%B{e3@`m_zNDz>zk7s{q|)S^=c>} zbQY~fWb3(eLo=pUx$R)(F>~Z`L!J4(H;Phv(Lcb)BQclfIE5#y!FCrj+j>uZ@8MzC zEZ;)yc9Z?RCBUp#GL{RyC?OAjx78N*u(N=z)d{Xo&Q4D3NS1%(3X zE~V-=L6k_wG|&kxLcYy}=L0tJBoGxYGjw4jIzt=NXBJ1r$?vHdR zPX1VqXYkYYR!o&-p3TT-xsO4lY12hN>)7944)bQXW6&Zr0rBZ$BjC>ZG)m4&PKYOS zo_5+)W4%JCSCG77t8jn-QC>LG*~mrFgddz=r;l(cVK1uo=VuIE^*?y5^clLa)p!w! z%VX&(%6A0WC-6?)X|B!BrnGUhGjc!y!nW!_{EnJTP33&4vBV8dqpG|a=`YOQRj1uB zw?jp`FU4O-AH0iv%3#=>X8Hs4!oPINSY~3@%Al{f1X`~f1`p?IyWyg)?4Z$MC_Jl` z4!{3-M*b9|dH-ZVMjBOD?%hG!w1p7%M3txrK6FYQe=K z&rz$FpGHP|ykoYNH&JQZp8;c&pySGnP&KYioYO1Gf zuNQio6p;x|T8uYX5#&#X=HUj)L&b)AG&X4fC;N0eC5<|TV{j0Mu=$?#j&ge!8`PYk zo(8WRVbaWZ$JjWGiW@3?7F_LW_xinJu!|R`T|6?)bVfM#JhWMM_g>|d>uDEiI{M@E z?3)&G1(#=E;3(PDSyqxhKF>TOA-|MowqMWpYX6(&!)vC6FV>7|vFijSfC=hvR_eVF zHo5g(a!~`8eY)n-@+Zq`{6-xe>6QYvX_i;6muU}{?T_Fgop_0UQlL1!Vgj^keglDA zKVF_Y>BLhIL48H4o7(@u!e3zPO z)(f-R2zi^MAGJ2i9z@Z^7Jyylz8ZgFyu}5V=+R^tt8LWKWu*IZt>Bb#|I-R?MWghW zB9Pl~s^*zPbwX9vcj~ts92TCRhZa<=sHT}d$gfLYsJ23-7qjJEQRKXWdSNBqCs95x6Dv!Rtg^ekEq#o3=HuVKx>mmX8W1gzx4jwf zzgUR|nWwKd@u4A(>h5i;`D7&OUe>y>x29-yk9JBHiMs*T-(R{CwXac2ls(Yy ztq$9F@XO~v&-8HXmJ@J`;_;d`PqA-{?Y_VH=sWqXQeqqMyd`bj(ajQ5Jr^}#Z*5S- zG2P75{`&K+XLQKL`D)ds(1Rr&VVS2naDu42Y=d%xkwyyggxBUS571HSeeE*%VG|1D zGLdP~eN#|BwV>#x<2TD|HuDjgXl)yuEBtmy1sm;WUj#AM!|9uRS#DkLvH04?^)ov3 z-7&H{R<>f~tDs8RZQK`u(ob2FOsi@mBb0Zl9y2-%e{A--%C%X$*G^4iJ~M3yov+ga zRD|*!`0f~54HQ${-J2Uc-e;-%c@PMhSWthnUMLH(9R_#*KNx#^^*nthFRM3 zSV|xzjfF5uuu$2=belb^GKBqChW!qX#@1WIEjbwD@7w%H+a48ly zCJ8kNrQ)&a*XIrI?jy0a$YoZW=#nIQP3}$GTT!s079|0$zA>Dq%h0C&^sP>>ms~{^ z5VyZ#-PXg8J;Q2k_mwMeUUNDq@ndN!Z#yx+07PnNKuU7fJu@CGpD6yeY!Qa|1s9;N zLQ@uVK0p773zd&Ped&wo;x~->RWV~3Hmp#F&~`H5n3H|PS+kXO;YbKW6{M0MQ9$}O zI=lr8jXvOoU<}zh%@jx4tq5LDw%O!{CMN6_COd2@vW{I(J1O|;23_Fsby=QJ(pMm_ zHxzU%0lveQrXw>YI30=KNryt4mbWKj30_irTXh0i1gr>@u3XDw@QP0Xhc?!={%cIf z&WZKXFu=aw0irN#+@V;m6yxVFlda~p(r5JOe8_ZcS96t$4+za1!hH$`{i2X0Z}h0= zixwe11$lz(ow{yBP})sZ51>#VeZr^z+&8dTQZjo`wTE|8yt-pvTna1&x2=7A6D8L) z)7y@*2t8xf7ZYLwLY%KS-rEMIq35%k<5?$ebPGl68;E(SVy-O~-q*lIUT^1$aWb69 zlO=z6L1(+TiSG=djC!3{N@*@reogW)p9#JE2*r09hyxvg*ABrn5l#m;A6V+xG^CD@ z=@ztJXU#T}V;4+aZ^WU43!nIurgkcf8Fgr1e$6C5g38lSElgfET6eT^`C)h3Cq-jk zPsSo(SA!&5WOG<-V1KLFNuVwJao-PI+j4mJ(gzb->)6_6#Ph-tVyR#X%3c`7&3^HnUGqh|U%dDpNPGpj6dXC%y)hi`j z@Jt63Jn#FH6yHS8x9ojB|PjM}Uy9zY+XE432suRfi>b`^ED^t>sy|h`H99o2Z%gVsJKwOVDebNiHCFqWx_#TILG`EW zs~eFTX@qFppkfMVqSJ zBKdA>;fdtNwEFmHbo6ZGa1ps)KbGH`tmQbV+I4lHFN!R=Eaewtw zDB+=9bn|Wq{JO=q$d3iKE@&T5Iz{M$#!DxUK^N#&L^kkC?4=hu6G-D*a_=h zQ4SSlcbm^CV`vA7S+8J3C4HBbTN=gekJ+z$ipx?xSrDK2A)?PVoSgy(G#0z)I|*-$ z)q{o*2xDXG+%WVez5CPku{7t@`8THOZX)ZxsMPYB5TogebIH`B`Rli5-AK z13a1!p2e2IuF&D;hYE^!@F-J$3o+rXX*R>E=ccJ$A;!67~uk4t_OQH(a!GzP%R4j!g6 z6)+kRBXSt&7&+n&Dr1>G^k&RIxs$vBk~waaz>?nbs_qI{$e&j&_dP0}3Ri%KwIx2Q zwtc)(N+J)djm9_kyikn3wYuE)bwU8Bwf&i4`9d@<5+g-qkYmmsXFXK0Q^_ zGnq@T`Dff7Lxrtr+_Wh2a{I0V{Sk*md~3SQCmo4M7_Kp&CH&2<<7I0NAscw3S~{Z8 zY zzJC3cxVF{6a(yUiO6YB$J@*ZCwH8!Xh=)~p(!6rH1vpcG(%W255D~W#=M=yjN$^Ny z?Acr4B-DYwzX}xW@ewMK5V$!2@LpRI%)B(+3JWRSd*t~)Ff}|}6&?kp5}iXdej2(G7Bm3yDLXEJ8NWw`Q(IWI5Bk*fBXR0N#D`* zBP1P7>!VLX0L1=Bu0%b>_W~~aL>~5%lK4;EnLqh7H_OO<7AQmDuk*1J!05)F+?< zdImf$EkCFGJ7ssw#}4Wo1YJsa1TxArj{(Gwk^)0HZ%1?v0JJ~96VBQis8BbEPo?~t zjlLm&1Zvm#@`>LQR{adYN%Cm?v^?x%;GP^&iAu0iavKOwj~!D{(zslpa1-;t0KMR! A=l}o! literal 0 HcmV?d00001 diff --git a/src/problem2/image-swapping.png b/src/problem2/image-swapping.png new file mode 100644 index 0000000000000000000000000000000000000000..94dccdef3512b9fc9af61b54fedd8e5d8341b46b GIT binary patch literal 95685 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 literal 0 HcmV?d00001 diff --git a/src/problem2/src/App.tsx b/src/problem2/src/App.tsx index 4736bef46a..c4c11e4746 100644 --- a/src/problem2/src/App.tsx +++ b/src/problem2/src/App.tsx @@ -9,14 +9,14 @@ export function App() { return (

-
-
-
+
+
+
S
-
-
Switch Swap
-
+
+
Switch Swap
+
Trade simulator
@@ -24,22 +24,22 @@ export function App() {
-
+
-

+

Swap tokens instantly

- Live exchange rates sourced from Switcheo's price feed. + Live exchange rates

-
+

- Prices are mock data for demo purposes. Press{" "} + Press{" "} d {" "} @@ -65,7 +65,7 @@ function ThemeToggle() { size="icon-lg" aria-label="Toggle theme" onClick={() => setTheme(isDark ? "light" : "dark")} - className="rounded-full" + className="shrink-0 rounded-full" > diff --git a/src/problem2/src/components/swap/SwapForm.tsx b/src/problem2/src/components/swap/SwapForm.tsx index 7855d2ff16..9d92781a76 100644 --- a/src/problem2/src/components/swap/SwapForm.tsx +++ b/src/problem2/src/components/swap/SwapForm.tsx @@ -1,197 +1,85 @@ import { HugeiconsIcon } from "@hugeicons/react" import { ArrowDataTransferVerticalIcon, - CheckmarkCircle02Icon, Loading03Icon, - RefreshIcon, } from "@hugeicons/core-free-icons" -import { useMemo, useState } from "react" import { Button } from "@/components/ui/button" import { TokenAmountField } from "@/components/swap/TokenAmountField" +import { + ErrorPanel, + SkeletonForm, + SuccessPanel, +} from "@/components/swap/SwapStatusPanels" +import { useSwapForm } from "@/hooks/useSwapForm" import { useTokens } from "@/hooks/useTokens" -import { formatAmount, parseAmount } from "@/lib/format" +import { formatAmount } from "@/lib/format" import { cn } from "@/lib/utils" -import type { Token } from "@/types/token" type SwapFormProps = { defaultFrom?: string defaultTo?: string } -type Pair = { from: string; to: string } - -type Status = - | { kind: "idle" } - | { kind: "submitting" } - | { - kind: "success" - from: Token - to: Token - amountFrom: number - amountTo: number - } - export function SwapForm({ defaultFrom = "ETH", defaultTo = "USDC", }: SwapFormProps) { const { tokens, isLoading, error, reload } = useTokens() - - // The user's manually-selected pair, if any. When null we fall back to the - // default pair derived from `tokens`. This keeps the pair fully derived - // from data while still allowing user overrides without an effect. - const [userPair, setUserPair] = useState(null) - const [amount, setAmount] = useState("") - const [touched, setTouched] = useState(false) - const [status, setStatus] = useState({ kind: "idle" }) - const [swapPulse, setSwapPulse] = useState(false) - - const tokenMap = useMemo( - () => new Map(tokens.map((t) => [t.symbol, t])), - [tokens] - ) - - const defaultPair = useMemo(() => { - if (tokens.length === 0) return null - const fallbackFrom = - tokens.find((t) => t.symbol === defaultFrom) ?? tokens[0] - const fallbackTo = - tokens.find( - (t) => t.symbol === defaultTo && t.symbol !== fallbackFrom.symbol - ) ?? - tokens.find((t) => t.symbol !== fallbackFrom.symbol) ?? - tokens[0] - return { from: fallbackFrom.symbol, to: fallbackTo.symbol } - }, [tokens, defaultFrom, defaultTo]) - - const pair = userPair ?? defaultPair - const fromToken = pair ? tokenMap.get(pair.from) ?? null : null - const toToken = pair ? tokenMap.get(pair.to) ?? null : null - - const parsed = parseAmount(amount) - const amountError = computeAmountError(amount, parsed) - const pairError = - fromToken && toToken && fromToken.symbol === toToken.symbol - ? "Pick two different tokens" - : null - - const showAmountError = Boolean(touched && amountError) - const rate = - fromToken && toToken && fromToken.symbol !== toToken.symbol - ? fromToken.price / toToken.price - : null - - const toAmount = - rate && Number.isFinite(parsed) && parsed > 0 ? parsed * rate : 0 - - const canSubmit = Boolean( - !isLoading && - !error && - fromToken && - toToken && - !amountError && - !pairError && - status.kind !== "submitting" - ) - - const handleSwapDirection = () => { - if (!pair) return - setUserPair({ from: pair.to, to: pair.from }) - if (toAmount > 0) { - setAmount(stripTrailingZeros(toAmount.toFixed(8))) - } - setSwapPulse(true) - window.setTimeout(() => setSwapPulse(false), 400) - } - - const handleSelectFrom = (token: Token) => { - if (!pair) return - // If the user picks the same token already on the other side, swap them. - if (token.symbol === pair.to) { - setUserPair({ from: token.symbol, to: pair.from }) - } else { - setUserPair({ from: token.symbol, to: pair.to }) - } - } - - const handleSelectTo = (token: Token) => { - if (!pair) return - if (token.symbol === pair.from) { - setUserPair({ from: pair.to, to: token.symbol }) - } else { - setUserPair({ from: pair.from, to: token.symbol }) - } - } - - const handleSubmit = (e: React.FormEvent) => { - e.preventDefault() - setTouched(true) - if (!canSubmit || !fromToken || !toToken) return - - setStatus({ kind: "submitting" }) - window.setTimeout(() => { - setStatus({ - kind: "success", - from: fromToken, - to: toToken, - amountFrom: parsed, - amountTo: toAmount, - }) - }, 1500) - } - - const handleReset = () => { - setStatus({ kind: "idle" }) - setAmount("") - setTouched(false) - } + const form = useSwapForm({ tokens, defaultFrom, defaultTo }) if (error) { return } - if (isLoading || !fromToken || !toToken) { + if (isLoading || !form.fromToken || !form.toToken) { return } - if (status.kind === "success") { + if (form.status.kind === "success") { return ( ) } + const { fromToken, toToken, parsedAmount, swapPulse } = form + const isSubmitting = form.status.kind === "submitting" + const fromUsd = + Number.isFinite(parsedAmount) && parsedAmount > 0 + ? parsedAmount * fromToken.price + : null + return (

{ + e.preventDefault() + form.submit() + }} className="relative flex flex-col gap-2" noValidate > { - setAmount(next) - if (!touched) setTouched(true) - }} - onTokenChange={handleSelectFrom} - error={showAmountError ? amountError : null} - usdValue={parsed > 0 ? parsed * fromToken.price : null} + onAmountChange={form.setAmount} + onTokenChange={form.selectFrom} + error={form.showAmountError ? form.amountError : null} + usdValue={fromUsd} />
-
- ) -} - -function SuccessPanel({ - from, - to, - amountFrom, - amountTo, - onReset, -}: { - from: Token - to: Token - amountFrom: number - amountTo: number - onReset: () => void -}) { - return ( -
-
- -
-
-

Swap complete

-

- Your simulated trade was confirmed. -

-
-
-
- Sent - - {formatAmount(amountFrom)} {from.symbol} - -
-
-
- Received - - {formatAmount(amountTo)} {to.symbol} - -
-
- -
- ) -} diff --git a/src/problem2/src/components/swap/SwapStatusPanels.tsx b/src/problem2/src/components/swap/SwapStatusPanels.tsx new file mode 100644 index 0000000000..33a49d9bff --- /dev/null +++ b/src/problem2/src/components/swap/SwapStatusPanels.tsx @@ -0,0 +1,101 @@ +import { HugeiconsIcon } from "@hugeicons/react" +import { + CheckmarkCircle02Icon, + RefreshIcon, +} from "@hugeicons/core-free-icons" + +import { Button } from "@/components/ui/button" +import { formatAmount } from "@/lib/format" +import type { Token } from "@/types/token" + +export function SkeletonForm() { + return ( +
+
+
+
+
+
+
+
+
+ ) +} + +export function ErrorPanel({ + message, + onRetry, +}: { + message: string + onRetry: () => void +}) { + return ( +
+

+ Couldn't load token prices +

+

{message}

+ +
+ ) +} + +export function SuccessPanel({ + from, + to, + amountFrom, + amountTo, + onReset, +}: { + from: Token + to: Token + amountFrom: number + amountTo: number + onReset: () => void +}) { + return ( +
+
+ +
+
+

Swap complete

+

+ Your simulated trade was confirmed. +

+
+
+
+ Sent + + {formatAmount(amountFrom)} {from.symbol} + +
+
+
+ Received + + {formatAmount(amountTo)} {to.symbol} + +
+
+ +
+ ) +} diff --git a/src/problem2/src/components/swap/TokenAmountField.tsx b/src/problem2/src/components/swap/TokenAmountField.tsx index 9a899e1b8d..a1facc5e6f 100644 --- a/src/problem2/src/components/swap/TokenAmountField.tsx +++ b/src/problem2/src/components/swap/TokenAmountField.tsx @@ -35,13 +35,13 @@ export function TokenAmountField({ return (
-
+
-
+
{error ? ( {error} ) : ( - + {usdValue != null && usdValue > 0 ? `≈ $${usdValue.toLocaleString("en-US", { maximumFractionDigits: 2, diff --git a/src/problem2/src/components/swap/TokenSelect.tsx b/src/problem2/src/components/swap/TokenSelect.tsx index 7167b12e8e..f1c6fe1635 100644 --- a/src/problem2/src/components/swap/TokenSelect.tsx +++ b/src/problem2/src/components/swap/TokenSelect.tsx @@ -35,13 +35,15 @@ export function TokenSelect({ }, [tokens, query]) // Scroll the active option into view when navigating with the keyboard. + // Also re-runs after `filtered` changes so the highlighted row is visible + // immediately after a search refines the list. useEffect(() => { if (!open) return const node = listRef.current?.querySelector( `[data-index="${activeIndex}"]` ) node?.scrollIntoView({ block: "nearest" }) - }, [activeIndex, open]) + }, [activeIndex, open, filtered]) const handleOpenChange = (next: boolean) => { setOpen(next) @@ -80,14 +82,14 @@ export function TokenSelect({ {value ? ( <> - + {value.symbol} ) : ( @@ -95,7 +97,7 @@ export function TokenSelect({ )} @@ -103,8 +105,9 @@ export function TokenSelect({ void + // Derived metadata + rate: number | null + amountError: string | null + pairError: string | null + showAmountError: boolean + touched: boolean + canSubmit: boolean + // Lifecycle + status: SwapStatus + swapPulse: boolean + // Actions + swapDirection: () => void + selectFrom: (token: Token) => void + selectTo: (token: Token) => void + submit: () => void + reset: () => void +} + +/** + * Encapsulates all state, derivation, and actions for the swap form so the + * component stays presentational. + */ +export function useSwapForm({ + tokens, + defaultFrom, + defaultTo, +}: UseSwapFormParams): UseSwapFormResult { + const [userPair, setUserPair] = useState(null) + const [amount, setAmountState] = useState("") + const [touched, setTouched] = useState(false) + const [status, setStatus] = useState({ kind: "idle" }) + const [swapPulse, setSwapPulse] = useState(false) + + const tokenMap = useMemo( + () => new Map(tokens.map((t) => [t.symbol, t])), + [tokens] + ) + + const defaultPair = useMemo(() => { + if (tokens.length === 0) return null + const fallbackFrom = + tokens.find((t) => t.symbol === defaultFrom) ?? tokens[0] + const fallbackTo = + tokens.find( + (t) => t.symbol === defaultTo && t.symbol !== fallbackFrom.symbol + ) ?? + tokens.find((t) => t.symbol !== fallbackFrom.symbol) ?? + tokens[0] + return { from: fallbackFrom.symbol, to: fallbackTo.symbol } + }, [tokens, defaultFrom, defaultTo]) + + const pair = userPair ?? defaultPair + const fromToken = pair ? tokenMap.get(pair.from) ?? null : null + const toToken = pair ? tokenMap.get(pair.to) ?? null : null + + const { parsed: parsedAmount, error: amountError } = useMemo( + () => validateAmount(amount), + [amount] + ) + + const pairError = + fromToken && toToken && fromToken.symbol === toToken.symbol + ? "Pick two different tokens" + : null + + const rate = + fromToken && toToken && fromToken.symbol !== toToken.symbol + ? fromToken.price / toToken.price + : null + + const toAmount = + rate && Number.isFinite(parsedAmount) && parsedAmount > 0 + ? parsedAmount * rate + : 0 + + const showAmountError = Boolean(touched && amountError) + + const canSubmit = Boolean( + fromToken && + toToken && + !amountError && + !pairError && + status.kind !== "submitting" + ) + + const setAmount = useCallback((next: string) => { + setAmountState((prev) => sanitizeAmountInput(next, prev)) + setTouched(true) + }, []) + + const swapDirection = useCallback(() => { + if (!pair) return + setUserPair({ from: pair.to, to: pair.from }) + if (toAmount > 0) { + setAmountState(stripTrailingZeros(toAmount.toFixed(8))) + } + setSwapPulse(true) + window.setTimeout(() => setSwapPulse(false), 400) + }, [pair, toAmount]) + + const selectFrom = useCallback( + (token: Token) => { + if (!pair) return + if (token.symbol === pair.to) { + setUserPair({ from: token.symbol, to: pair.from }) + } else { + setUserPair({ from: token.symbol, to: pair.to }) + } + }, + [pair] + ) + + const selectTo = useCallback( + (token: Token) => { + if (!pair) return + if (token.symbol === pair.from) { + setUserPair({ from: pair.to, to: token.symbol }) + } else { + setUserPair({ from: pair.from, to: token.symbol }) + } + }, + [pair] + ) + + const submit = useCallback(() => { + setTouched(true) + if (!canSubmit || !fromToken || !toToken) return + + setStatus({ kind: "submitting" }) + window.setTimeout(() => { + setStatus({ + kind: "success", + from: fromToken, + to: toToken, + amountFrom: parsedAmount, + amountTo: rate ? parsedAmount * rate : 0, + }) + }, 1500) + }, [canSubmit, fromToken, toToken, parsedAmount, rate]) + + const reset = useCallback(() => { + setStatus({ kind: "idle" }) + setAmountState("") + setTouched(false) + }, []) + + return { + fromToken, + toToken, + amount, + parsedAmount, + toAmount, + setAmount, + rate, + amountError, + pairError, + showAmountError, + touched, + canSubmit, + status, + swapPulse, + swapDirection, + selectFrom, + selectTo, + submit, + reset, + } +} + +function stripTrailingZeros(s: string): string { + if (!s.includes(".")) return s + return s.replace(/\.?0+$/, "") +} diff --git a/src/problem2/src/lib/validation.ts b/src/problem2/src/lib/validation.ts new file mode 100644 index 0000000000..53464616f7 --- /dev/null +++ b/src/problem2/src/lib/validation.ts @@ -0,0 +1,72 @@ +import { parseAmount } from "./format" + +export type AmountValidation = { + /** Parsed numeric value (NaN if unparseable). */ + parsed: number + /** Human-readable error, or null when the amount is valid. */ + error: string | null +} + +/** + * Validates a user-entered amount string and returns the parsed number and + * a specific error message tailored to each failure mode. + * + * Order matters: we want negatives reported as negatives (not as "not a + * number") so users get an actionable hint. + */ +export function validateAmount(raw: string): AmountValidation { + const trimmed = raw.trim() + + if (!trimmed) { + return { parsed: NaN, error: "Enter an amount" } + } + + // Explicit negative-number detection so the error is precise even though + // the input filter normally prevents typing a `-` character. + if (trimmed.startsWith("-")) { + return { parsed: NaN, error: "Amount must be a positive number" } + } + + const parsed = parseAmount(trimmed) + + if (Number.isNaN(parsed)) { + return { parsed, error: "Amount must be a number" } + } + + if (parsed < 0) { + return { parsed, error: "Amount must be a positive number" } + } + + if (parsed <= 0) { + return { parsed, error: "Amount must be greater than 0" } + } + + return { parsed, error: null } +} + +/** + * Allow only digits, optionally followed by a single decimal point and more + * digits. Used to filter input as the user types so invalid characters never + * reach state. Matches the empty string (so users can clear the field). + */ +const DECIMAL_INPUT_PATTERN = /^\d*\.?\d*$/ + +/** + * Returns the next safe value for the amount input, rejecting anything that + * isn't a partial decimal number. If the new value is invalid the previous + * value is preserved so React doesn't accept the rejected keystroke. + */ +export function sanitizeAmountInput(next: string, previous: string): string { + // Normalise an empty/whitespace value to "". + if (!next) return "" + + // Accept comma as a decimal separator on locales where the keyboard inserts + // one — convert to a dot before validation. + const normalised = next.replace(",", ".") + + if (!DECIMAL_INPUT_PATTERN.test(normalised)) { + return previous + } + + return normalised +}