From 35816a352cee3bf3a480e70f93ff05c47f16e4dc Mon Sep 17 00:00:00 2001 From: Qise Date: Tue, 24 Sep 2024 15:55:28 -0500 Subject: [PATCH 1/7] Initial commit --- README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..a1c6497 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# hello-world +This repository is for practicing gittin From 846ce64720d2f53ba607587b8a5b4f0959312b60 Mon Sep 17 00:00:00 2001 From: Qise Date: Tue, 24 Sep 2024 16:00:42 -0500 Subject: [PATCH 2/7] Update README.md added important details about the program in the read me file --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a1c6497..964166e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # hello-world This repository is for practicing gittin +I am a goated programmer that is programmin From 628a54cd70e0ee24825aa5cdbb87665e45a3f7b0 Mon Sep 17 00:00:00 2001 From: Qise Date: Tue, 24 Sep 2024 16:01:00 -0500 Subject: [PATCH 3/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 964166e..65f857b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # hello-world -This repository is for practicing gittin +This repository is for practicing gittin \n I am a goated programmer that is programmin From 11a28ee8a3277cd3f6cdc29c9052570dc970c133 Mon Sep 17 00:00:00 2001 From: Qise Date: Tue, 24 Sep 2024 16:06:56 -0500 Subject: [PATCH 4/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 65f857b..964166e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # hello-world -This repository is for practicing gittin \n +This repository is for practicing gittin I am a goated programmer that is programmin From 7eb9ac616aaa781fe681e9b30c08f5f28fe6d407 Mon Sep 17 00:00:00 2001 From: Qise S Date: Fri, 1 Nov 2024 23:08:36 -0500 Subject: [PATCH 5/7] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 964166e..477b1b7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,2 @@ -# hello-world -This repository is for practicing gittin -I am a goated programmer that is programmin +# ADC Challenges +This repository is for App Developer Club Challenges From 1cb3f4240b59ee372fab29faeac5863c651618b0 Mon Sep 17 00:00:00 2001 From: SoroBoio Date: Fri, 1 Nov 2024 23:21:13 -0500 Subject: [PATCH 6/7] forms page made --- README.md | 2 -- api-playground | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 README.md create mode 160000 api-playground diff --git a/README.md b/README.md deleted file mode 100644 index 477b1b7..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# ADC Challenges -This repository is for App Developer Club Challenges diff --git a/api-playground b/api-playground new file mode 160000 index 0000000..75ed81d --- /dev/null +++ b/api-playground @@ -0,0 +1 @@ +Subproject commit 75ed81d64986dd96c2be3710dfbc2494ebc7ec26 From fc57d805cc0264c437ad7601500be33a368cb5a5 Mon Sep 17 00:00:00 2001 From: SoroBoio Date: Sun, 3 Nov 2024 23:35:10 -0600 Subject: [PATCH 7/7] created form page for zipcode converter, added path in router, added some styles --- api-playground | 1 - api-playground/.editorconfig | 7 + api-playground/.gitignore | 24 + api-playground/README.md | 62 + api-playground/bun.lockb | Bin 0 -> 147011 bytes api-playground/eslint.config.js | 34 + api-playground/index.html | 13 + api-playground/package-lock.json | 3743 +++++++++++++++++ api-playground/package.json | 41 + api-playground/prettier.config.js | 13 + api-playground/public/vite.svg | 1 + api-playground/src/App.tsx | 16 + api-playground/src/axios.ts | 9 + .../src/components/Button/index.tsx | 22 + .../src/components/Button/styles.ts | 21 + api-playground/src/components/Input/index.tsx | 62 + api-playground/src/components/Input/styles.ts | 48 + .../src/components/ResponseViewer/index.tsx | 10 + api-playground/src/main.tsx | 9 + api-playground/src/routes/Home/index.tsx | 21 + api-playground/src/routes/Home/styles.ts | 47 + api-playground/src/routes/form.tsx | 50 + api-playground/src/routes/router.tsx | 10 + api-playground/src/styles/global.ts | 62 + api-playground/src/styles/themes/default.ts | 18 + api-playground/src/vite-env.d.ts | 1 + api-playground/tsconfig.app.json | 24 + api-playground/tsconfig.json | 7 + api-playground/tsconfig.node.json | 22 + api-playground/vite.config.ts | 7 + 30 files changed, 4404 insertions(+), 1 deletion(-) delete mode 160000 api-playground create mode 100644 api-playground/.editorconfig create mode 100644 api-playground/.gitignore create mode 100644 api-playground/README.md create mode 100644 api-playground/bun.lockb create mode 100644 api-playground/eslint.config.js create mode 100644 api-playground/index.html create mode 100644 api-playground/package-lock.json create mode 100644 api-playground/package.json create mode 100644 api-playground/prettier.config.js create mode 100644 api-playground/public/vite.svg create mode 100644 api-playground/src/App.tsx create mode 100644 api-playground/src/axios.ts create mode 100644 api-playground/src/components/Button/index.tsx create mode 100644 api-playground/src/components/Button/styles.ts create mode 100644 api-playground/src/components/Input/index.tsx create mode 100644 api-playground/src/components/Input/styles.ts create mode 100644 api-playground/src/components/ResponseViewer/index.tsx create mode 100644 api-playground/src/main.tsx create mode 100644 api-playground/src/routes/Home/index.tsx create mode 100644 api-playground/src/routes/Home/styles.ts create mode 100644 api-playground/src/routes/form.tsx create mode 100644 api-playground/src/routes/router.tsx create mode 100644 api-playground/src/styles/global.ts create mode 100644 api-playground/src/styles/themes/default.ts create mode 100644 api-playground/src/vite-env.d.ts create mode 100644 api-playground/tsconfig.app.json create mode 100644 api-playground/tsconfig.json create mode 100644 api-playground/tsconfig.node.json create mode 100644 api-playground/vite.config.ts diff --git a/api-playground b/api-playground deleted file mode 160000 index 75ed81d..0000000 --- a/api-playground +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 75ed81d64986dd96c2be3710dfbc2494ebc7ec26 diff --git a/api-playground/.editorconfig b/api-playground/.editorconfig new file mode 100644 index 0000000..73a010c --- /dev/null +++ b/api-playground/.editorconfig @@ -0,0 +1,7 @@ +indent_size = 2 +indent_style = space +tab_width = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 \ No newline at end of file diff --git a/api-playground/.gitignore b/api-playground/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/api-playground/.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/api-playground/README.md b/api-playground/README.md new file mode 100644 index 0000000..7c6dad6 --- /dev/null +++ b/api-playground/README.md @@ -0,0 +1,62 @@ +# 🔍 CHALLENGE 2: API PI + +## Problem + +**In this challenge, you'll be working with APIs and user input to create a dynamic form. Your task is to clone the provided GitHub repository and implement a form that interacts with any API of your choice. Here’s a breakdown of steps to complete this challenge:** + +1. **Clone the Repository:** + Start by cloning the GitHub repository from the [`api-playground`](https://github.com/umn-adc/api-playground) repository. This repository already contains some helpful libraries for completing the challenge. + +2. **Choose an API:** + Select an API; This could be anything from a weather API to a public data API—whatever sparks your interest! The only requirement is that the API must accept at least **query or ID parameters** or a **request body**. + +3. **Create a Form Page:** + + - Implement a form in a new page in `routes/` that allows users to input the necessary parameters for the API request. + - Upon submission, your form should send requests to the chosen API based on user input and display the results on that same page. + > ### 💡 **Hint**! + > + > You can use the provided `Input`, `Button`, and `ResponseViewer` components if you'd like! It might make your life a tiny bit easier. + +4. **Add to the Router:** + Integrate your new form page into the existing router structure of the application (look at `routes/router.tsx`). You should see a link to your page in `Home` after doing this. + +5. **Make a Pull Request:** + Once you've implemented the above steps, push your changes to a new branch and create a pull request for review. + +## Scoring + +### 100 points + +### Submission deadline + +`Tue Nov 7 2024 23:59:59 GMT-0600 (Central Standard Time)` + +### Bonus + +**⏱️ Submission Time** + +> **`[+20 points]`** ≤ **1** day \ +> **`[+15 points]`** ≤ **3** days \ +> **`[+10 points]`** ≤ **5** days \ +> **`[-1 point]`** ∙ _(**your leaderboard position** - 1)_ + +**✨ _Extra Points_ ✨** + +- Using `async/await` for API requests **`(+20 points)`** +- Configuring an axios object with a `baseURL` and using the `config` parameter in your request **`(+15 points)`** +- Custom page design to enhance user experience **`(+10 points)`** + +### Example API choices + +- [OpenWeatherMap API](https://openweathermap.org/api) +- [The Cat API](https://thecatapi.com/) +- [PokeAPI](https://pokeapi.co/) + +## Submission + +### GitHub Pull Request + +Submit your pull request to the main branch of the [`api-playground`](https://github.com/umn-adc/api-playground) repository. Make sure to include a descriptive title and comments explaining your implementation. + +**_Good luck, and happy coding!_** diff --git a/api-playground/bun.lockb b/api-playground/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..7811858d0c8ccad564ac740374b9ea886daf8bf5 GIT binary patch literal 147011 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%0Ah4h`wq`D@N=6xVL7Yns)KO3z58>O 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 Z5o}mgP!|XBN(a`6xeokY-~SK)`9D9&sa600 literal 0 HcmV?d00001 diff --git a/api-playground/eslint.config.js b/api-playground/eslint.config.js new file mode 100644 index 0000000..0235f28 --- /dev/null +++ b/api-playground/eslint.config.js @@ -0,0 +1,34 @@ +import globals from "globals"; +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; +import pluginReact from "eslint-plugin-react"; +import eslintConfigPrettier from "eslint-config-prettier"; +import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; + +import { FlatCompat } from "@eslint/eslintrc"; +import path from "path"; +import { fileURLToPath } from "url"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + resolvePluginsRelativeTo: __dirname, +}); + +/** @type {import('eslint').Linter.Config[]} */ +export default [ + { files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"] }, + { languageOptions: { globals: globals.browser } }, + { + parserOptions: { + project: "./tsconfig.json", + }, + }, + pluginJs.configs.recommended, + ...tseslint.configs.recommended, + pluginReact.configs.flat.recommended, + ...compat.extends(["airbnb", "airbnb/hooks", "airbnb-typescript"]), + eslintConfigPrettier, + eslintPluginPrettierRecommended, +]; diff --git a/api-playground/index.html b/api-playground/index.html new file mode 100644 index 0000000..7b805f7 --- /dev/null +++ b/api-playground/index.html @@ -0,0 +1,13 @@ + + + + + + + vite-awesome + + +
+ + + diff --git a/api-playground/package-lock.json b/api-playground/package-lock.json new file mode 100644 index 0000000..ad37df1 --- /dev/null +++ b/api-playground/package-lock.json @@ -0,0 +1,3743 @@ +{ + "name": "vite-awesome", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vite-awesome", + "version": "0.0.0", + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@eslint/js": "^9.9.1", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.57.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jsx-a11y": "^6.9.0", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "typescript": "^5.5.3", + "typescript-eslint": "^8.3.0", + "vite": "^5.4.1" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.9.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.2", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@swc/core": { + "version": "1.7.22", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.12" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.7.22", + "@swc/core-darwin-x64": "1.7.22", + "@swc/core-linux-arm-gnueabihf": "1.7.22", + "@swc/core-linux-arm64-gnu": "1.7.22", + "@swc/core-linux-arm64-musl": "1.7.22", + "@swc/core-linux-x64-gnu": "1.7.22", + "@swc/core-linux-x64-musl": "1.7.22", + "@swc/core-win32-arm64-msvc": "1.7.22", + "@swc/core-win32-ia32-msvc": "1.7.22", + "@swc/core-win32-x64-msvc": "1.7.22" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.7.22", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.12", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/type-utils": "8.3.0", + "@typescript-eslint/utils": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.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.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.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/type-utils": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/utils": "8.3.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.3.0", + "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.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.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" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.3.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/core": "^1.5.7" + }, + "peerDependencies": { + "vite": "^4 || ^5" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "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, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "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/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" + }, + "engines": { + "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.2.tgz", + "integrity": "sha512-3XnC5fDyc8M4J2E8pt8pmSVRX2M+5yWMCfI/kDZwauQeFgzQOuhcRBFKjTeJagqgk4sFKxe1mvNVnaWwImx/Tg==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", + "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", + "dev": true, + "dependencies": { + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.9.1", + "axobject-query": "~3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", + "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.11", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "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, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "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": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "dev": 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", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "15.9.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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 + }, + "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 + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "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", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.41", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "dev": true, + "license": "MIT" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.21.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.2", + "@rollup/rollup-android-arm64": "4.21.2", + "@rollup/rollup-darwin-arm64": "4.21.2", + "@rollup/rollup-darwin-x64": "4.21.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.2", + "@rollup/rollup-linux-arm-musleabihf": "4.21.2", + "@rollup/rollup-linux-arm64-gnu": "4.21.2", + "@rollup/rollup-linux-arm64-musl": "4.21.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2", + "@rollup/rollup-linux-riscv64-gnu": "4.21.2", + "@rollup/rollup-linux-s390x-gnu": "4.21.2", + "@rollup/rollup-linux-x64-gnu": "4.21.2", + "@rollup/rollup-linux-x64-musl": "4.21.2", + "@rollup/rollup-win32-arm64-msvc": "4.21.2", + "@rollup/rollup-win32-ia32-msvc": "4.21.2", + "@rollup/rollup-win32-x64-msvc": "4.21.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.5.4", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.3.0", + "@typescript-eslint/parser": "8.3.0", + "@typescript-eslint/utils": "8.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "5.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.41", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/api-playground/package.json b/api-playground/package.json new file mode 100644 index 0000000..418e2f1 --- /dev/null +++ b/api-playground/package.json @@ -0,0 +1,41 @@ +{ + "name": "vite-awesome", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "axios": "^1.7.7", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-json-view": "^1.21.3", + "react-router-dom": "^6.27.0", + "styled-components": "^6.1.13" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.9.1", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^9.9.1", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "prettier": "3.3.3", + "typescript": "^5.5.3", + "typescript-eslint": "^8.3.0", + "vite": "^5.4.1", + "@types/bun": "latest" + }, + "module": "index.ts" +} \ No newline at end of file diff --git a/api-playground/prettier.config.js b/api-playground/prettier.config.js new file mode 100644 index 0000000..f5faea3 --- /dev/null +++ b/api-playground/prettier.config.js @@ -0,0 +1,13 @@ +/** + * @see https://prettier.io/docs/en/configuration.html + * @type {import("prettier").Config} + */ +const config = { + trailingComma: "es5", + tabWidth: 2, + semi: true, + singleQuote: false, + endOfLine: "lf", +}; + +export default config; diff --git a/api-playground/public/vite.svg b/api-playground/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/api-playground/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/api-playground/src/App.tsx b/api-playground/src/App.tsx new file mode 100644 index 0000000..47354e9 --- /dev/null +++ b/api-playground/src/App.tsx @@ -0,0 +1,16 @@ +import { ThemeProvider } from "styled-components"; +import GlobalStyle from "./styles/global"; +import dflt from "./styles/themes/default"; +import { RouterProvider } from "react-router-dom"; +import router from "./routes/router"; + +const App = () => { + return ( + + + + + ); +}; + +export default App; diff --git a/api-playground/src/axios.ts b/api-playground/src/axios.ts new file mode 100644 index 0000000..606564e --- /dev/null +++ b/api-playground/src/axios.ts @@ -0,0 +1,9 @@ +import axios from "axios"; + +const locator = axios.create({ + baseURL: "https://api.zippopotam.us/us/", + timeout: 1000 +}); + + +export default locator; diff --git a/api-playground/src/components/Button/index.tsx b/api-playground/src/components/Button/index.tsx new file mode 100644 index 0000000..0f7809e --- /dev/null +++ b/api-playground/src/components/Button/index.tsx @@ -0,0 +1,22 @@ +import { ButtonHTMLAttributes, DetailedHTMLProps } from "react"; +import { StyledButton } from "./styles"; + +interface ButtonProps + extends DetailedHTMLProps< + ButtonHTMLAttributes, + HTMLButtonElement + > {} + +const Button: React.FC = ({ + type = "submit", + children, + ...props +}) => { + return ( + + {children} + + ); +}; + +export default Button; diff --git a/api-playground/src/components/Button/styles.ts b/api-playground/src/components/Button/styles.ts new file mode 100644 index 0000000..357a7ad --- /dev/null +++ b/api-playground/src/components/Button/styles.ts @@ -0,0 +1,21 @@ +import styled from "styled-components"; + +export const StyledButton = styled.button` + transition: all 250ms cubic-bezier(0.165, 0.84, 0.44, 1); + background-color: ${({ theme }) => theme.colors.contrastInverted + "40"}; + border: none; + border: 2px solid ${({ theme }) => theme.colors.accent}; + border-radius: 0.4rem; + font-size: 1rem; + font-family: "Fira Code", monospace; + color: ${({ theme }) => theme.colors.accent}; + padding: 0.4rem 0.6rem; + min-height: 2rem; + min-width: 4rem; + + &:hover { + cursor: pointer; + background-color: ${({ theme }) => theme.colors.accent}; + color: ${({ theme }) => theme.colors.primary}; + } +`; diff --git a/api-playground/src/components/Input/index.tsx b/api-playground/src/components/Input/index.tsx new file mode 100644 index 0000000..358b976 --- /dev/null +++ b/api-playground/src/components/Input/index.tsx @@ -0,0 +1,62 @@ +import { + DetailedHTMLProps, + forwardRef, + InputHTMLAttributes, + useCallback, + useState, +} from "react"; +import { Container, InputBox, Label } from "./styles"; + +interface InputProps + extends Omit< + DetailedHTMLProps, HTMLInputElement>, + "ref" + > { + label: string; +} + +const Input: React.FC = forwardRef( + ({ label, id, onFocus, onBlur, onChange, ...props }, ref) => { + const [focused, setFocused] = useState(!!props.autoFocus); + const [filled, setFilled] = useState(!!props.value); + const handleFocus = useCallback(() => setFocused(true), []); + const handleBlur = useCallback(() => setFocused(false), []); + return ( + + + { + handleFocus(); + if (onFocus) onFocus(e); + }} + onBlur={(e) => { + handleBlur(); + if (onBlur) onBlur(e); + }} + focused={focused} + onChange={(e) => { + setFilled( + props.type === "checkbox" || props.type === "radio" + ? e.target.checked + : !!e.target.value + ); + if (onChange) onChange(e); + }} + type={props.type} + ref={ref} + /> + + ); + } +); + +export default Input; diff --git a/api-playground/src/components/Input/styles.ts b/api-playground/src/components/Input/styles.ts new file mode 100644 index 0000000..0a75ce1 --- /dev/null +++ b/api-playground/src/components/Input/styles.ts @@ -0,0 +1,48 @@ +import { ComponentProps } from "react"; +import styled from "styled-components"; +import Input from "."; + +interface CommonProps { + focused?: boolean; + filled?: boolean; +} + +interface InputBoxProps extends CommonProps { + type: ComponentProps["type"]; +} + +export const Container = styled.div` + display: flex; + flex-direction: column; + gap: 0.3rem; +`; + +export const Label = styled.label` + transition: all 250ms cubic-bezier(0.165, 0.84, 0.44, 1); + opacity: ${({ focused, filled }) => (focused || filled ? 1 : 0.7)}; + color: ${({ theme, filled }) => + filled ? theme.colors.accentLight : theme.colors.contrast}; + font-family: "Fira Code", monospace; + font-weight: 500; + font-size: 0.9rem; +`; + +export const InputBox = styled.input` + transition: border 250ms cubic-bezier(0.165, 0.84, 0.44, 1); + font-family: "Fira Code", monospace; + border: none; + border: 1px solid + ${({ theme, focused }) => theme.colors.contrast + (focused ? "20" : "10")}; + outline: 1.5px solid + ${({ theme, type }) => + type === "checkbox" || type === "radio" + ? "transparent" + : theme.colors.contrastInverted + "40"}; + color: ${({ theme }) => theme.colors.contrast}; + background-color: ${({ theme }) => theme.colors.contrastInverted + "40"}; + border-radius: 0.2rem; + height: 1.5rem; + + ${({ type }) => + type === "checkbox" || type === "radio" ? "margin: 3px;" : ""} +`; diff --git a/api-playground/src/components/ResponseViewer/index.tsx b/api-playground/src/components/ResponseViewer/index.tsx new file mode 100644 index 0000000..e32dc0a --- /dev/null +++ b/api-playground/src/components/ResponseViewer/index.tsx @@ -0,0 +1,10 @@ +import { ComponentProps } from "react"; +import ReactJson from "react-json-view"; + +interface ResponseViewerProps extends ComponentProps {} + +const ResponseViewer: React.FC = ({ src, ...props }) => { + return ; +}; + +export default ResponseViewer; diff --git a/api-playground/src/main.tsx b/api-playground/src/main.tsx new file mode 100644 index 0000000..5d4a2be --- /dev/null +++ b/api-playground/src/main.tsx @@ -0,0 +1,9 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import App from "./App.tsx"; + +createRoot(document.getElementById("root")!).render( + + + , +); diff --git a/api-playground/src/routes/Home/index.tsx b/api-playground/src/routes/Home/index.tsx new file mode 100644 index 0000000..885d554 --- /dev/null +++ b/api-playground/src/routes/Home/index.tsx @@ -0,0 +1,21 @@ +import router from "../router"; +import { Container, Content, Title } from "./styles"; + +const Home = () => { + return ( + + api_playground + + {router.routes.length > 1 ? ( + router.routes + .filter((route) => route.path !== "/") + .map((route) => {route.path}) + ) : ( +

No submissions yet 👀

+ )} +
+
+ ); +}; + +export default Home; diff --git a/api-playground/src/routes/Home/styles.ts b/api-playground/src/routes/Home/styles.ts new file mode 100644 index 0000000..59ce5a6 --- /dev/null +++ b/api-playground/src/routes/Home/styles.ts @@ -0,0 +1,47 @@ +import styled from "styled-components"; + +export const Container = styled.div` + align-items: center; + display: flex; + flex: 1; + flex-direction: column; + min-height: 100%; + padding: 3rem; + gap: 2rem; +`; + +export const Title = styled.h1` + color: ${({ theme }) => theme.colors.accentLight}; + font-weight: bold; + font-size: 3rem; +`; + +export const Text = styled.p` + font-size: 1.4rem; +`; + +export const OutputBox = styled.div` + display: flex; + padding: 0.8rem; + border: 0.2rem solid #292628; + background-color: #100c08; +` + +export const Content = styled.div` + display: flex; + flex-direction: column; + flex-wrap: wrap; + width: 100%; + align-content: center; + gap: 1rem; + + a { + color: ${({ theme }) => theme.colors.secondary}; + transition: transform 150ms cubic-bezier(0.165, 0.84, 0.44, 1); + padding: 0.2rem; + + &:hover { + transform: scale(1.2); + } + } +`; diff --git a/api-playground/src/routes/form.tsx b/api-playground/src/routes/form.tsx new file mode 100644 index 0000000..edda70b --- /dev/null +++ b/api-playground/src/routes/form.tsx @@ -0,0 +1,50 @@ +import Button from "../components/Button"; +import ResponseViewer from "../components/ResponseViewer"; +import Input from "../components/Input"; +import { Content, Container, Title, Text, OutputBox, output } from "./Home/styles" +import { SetStateAction, useState } from "react"; +import locator from "../axios"; +import { AxiosRequestConfig } from "axios"; + + + + +const Form = () => { + const [zipcode, setZipcode] = useState(''); + const [locationData, setLocationData] = useState({ message: "Enter zipcode and press convert" }) + + const handleInputChange = (event: { target: { value: SetStateAction; }; }) => { + setZipcode(event.target.value); + }; + + const submitZipcode = () => { + const getLocation = async () => { + try { + let response = await locator.get(`/${zipcode}`); + console.log(response.data); + const { places } = response.data; + const { "place name": city, state } = places[0] + setLocationData({ city, state }) + } catch (error) { + setLocationData({ message: "Error finding city. Check the zipcode" }) + } + }; + getLocation(); + }; + + + return ( + + Zip Code to City Converter + Type in a zipcode to find what city it is in + + + + {locationData.city ? `City: ${locationData.city}, ${locationData.state}` : locationData.message} + + {/* */} + + ); +}; + +export default Form; \ No newline at end of file diff --git a/api-playground/src/routes/router.tsx b/api-playground/src/routes/router.tsx new file mode 100644 index 0000000..32c0815 --- /dev/null +++ b/api-playground/src/routes/router.tsx @@ -0,0 +1,10 @@ +import { createHashRouter } from "react-router-dom"; +import Home from "./Home"; +import Form from "./form"; + +const router = createHashRouter([ + { path: "/", Component: Home }, + { path: "/form", Component: Form } +]); + +export default router; diff --git a/api-playground/src/styles/global.ts b/api-playground/src/styles/global.ts new file mode 100644 index 0000000..c0d260c --- /dev/null +++ b/api-playground/src/styles/global.ts @@ -0,0 +1,62 @@ +import { createGlobalStyle } from "styled-components"; + +const GlobalStyle = createGlobalStyle` + @import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&display=swap'); + + html, body, div, span, applet, object, iframe, + h1, h2, h3, h4, h5, h6, p, blockquote, pre, + a, abbr, acronym, address, big, cite, code, + del, dfn, em, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, + b, u, i, center, + dl, dt, dd, ol, ul, li, + fieldset, form, label, legend, + table, caption, tbody, tfoot, thead, tr, th, td, + article, aside, canvas, details, embed, + figure, figcaption, footer, header, hgroup, + menu, nav, output, ruby, section, summary, + time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; + } + /* HTML5 display-role reset for older browsers */ + article, aside, details, figcaption, figure, + footer, header, hgroup, menu, nav, section { + display: block; + } + html, #root { + height: 100%; + } + body { + height: 100%; + line-height: 1; + background-color: ${({ theme }) => theme.colors.primary}; + color: ${({ theme }) => theme.colors.contrast}; + } + ol, ul { + list-style: none; + } + blockquote, q { + quotes: none; + } + blockquote:before, blockquote:after, + q:before, q:after { + content: ''; + content: none; + } + table { + border-collapse: collapse; + border-spacing: 0; + } + + // custom overrides + h1, h2, h3, h4, h5, h6, p, blockquote, pre, a { + font-family: "Fira Code", monospace; + } +`; + +export default GlobalStyle; diff --git a/api-playground/src/styles/themes/default.ts b/api-playground/src/styles/themes/default.ts new file mode 100644 index 0000000..2cea969 --- /dev/null +++ b/api-playground/src/styles/themes/default.ts @@ -0,0 +1,18 @@ +const developerTheme = { + name: "developer", + colors: { + primary: "#191622", + contrast: "#E1E1E6", + contrastInverted: "#000000", + secondaryDarker: "#483C67", + secondaryDark: "#007acc", + secondary: "#1e90ff", + secondaryLight: "#4db8ff", + secondaryLighter: "#99d6ff", + accent: "#50fa7b", + accentLight: "#ffd633", + accentDark: "#b3a600", + }, +}; + +export default developerTheme; diff --git a/api-playground/src/vite-env.d.ts b/api-playground/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/api-playground/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/api-playground/tsconfig.app.json b/api-playground/tsconfig.app.json new file mode 100644 index 0000000..f0a2350 --- /dev/null +++ b/api-playground/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/api-playground/tsconfig.json b/api-playground/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/api-playground/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/api-playground/tsconfig.node.json b/api-playground/tsconfig.node.json new file mode 100644 index 0000000..0d3d714 --- /dev/null +++ b/api-playground/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/api-playground/vite.config.ts b/api-playground/vite.config.ts new file mode 100644 index 0000000..861b04b --- /dev/null +++ b/api-playground/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react-swc' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +})