From 35c521b2d9701f6db6b51398e51059691f2269a3 Mon Sep 17 00:00:00 2001 From: Philippe Torrel Date: Fri, 14 Aug 2026 14:10:13 +0200 Subject: [PATCH] --- .../tag45/01_react-app-with-tests-andi.zip | Bin 0 -> 63147 bytes .../01_react-app-with-tests-andi/.gitignore | 24 + .../.oxlintrc.json | 8 + .../01_react-app-with-tests-andi/README.md | 16 + .../01_react-app-with-tests-andi/index.html | 13 + .../package-lock.json | 3831 +++++++++++++++++ .../01_react-app-with-tests-andi/package.json | 37 + .../public/favicon.svg | 1 + .../public/icons.svg | 24 + .../01_react-app-with-tests-andi/src/App.jsx | 20 + .../src/assets/hero.png | Bin 0 -> 13057 bytes .../src/assets/react.svg | 1 + .../src/assets/vite.svg | 1 + .../src/components/buttons/Button.jsx | 15 + .../components/examples/ExampleComponent.jsx | 10 + .../__test__/ExampleComponent.test.jsx | 16 + .../src/components/forms/FormContact.jsx | 167 + .../01_react-app-with-tests-andi/src/main.jsx | 13 + .../src/test/Button.test.jsx | 19 + .../src/test/ExampleComponent.test.jsx | 16 + .../src/test/FormContact.test.jsx | 402 ++ .../src/test/setup.js | 14 + .../src/utils/validators/validate.js | 37 + .../vite.config.js | 14 + 06_js-debug/.vscode/extensions.json | 15 + 06_js-debug/.vscode/marp-theme.css | 332 ++ 06_js-debug/.vscode/settings.json | 30 + 06_js-debug/.vscode/snippets.code-snippets | 73 + 06_js-debug/agenda.md | 686 +++ {05_react => 06_js-debug}/linksammlung.md | 0 30 files changed, 5835 insertions(+) create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi.zip create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/.gitignore create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/.oxlintrc.json create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/README.md create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/index.html create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/package-lock.json create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/package.json create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/public/favicon.svg create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/public/icons.svg create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/App.jsx create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/hero.png create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/react.svg create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/vite.svg create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/buttons/Button.jsx create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/examples/ExampleComponent.jsx create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/examples/__test__/ExampleComponent.test.jsx create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/forms/FormContact.jsx create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/main.jsx create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/test/Button.test.jsx create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/test/ExampleComponent.test.jsx create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/test/FormContact.test.jsx create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/test/setup.js create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/src/utils/validators/validate.js create mode 100644 05_react/unterricht/tag45/01_react-app-with-tests-andi/vite.config.js create mode 100644 06_js-debug/.vscode/extensions.json create mode 100644 06_js-debug/.vscode/marp-theme.css create mode 100644 06_js-debug/.vscode/settings.json create mode 100644 06_js-debug/.vscode/snippets.code-snippets create mode 100644 06_js-debug/agenda.md rename {05_react => 06_js-debug}/linksammlung.md (100%) diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi.zip b/05_react/unterricht/tag45/01_react-app-with-tests-andi.zip new file mode 100644 index 0000000000000000000000000000000000000000..102803f09f5fdabd34861c852d3c281b747f7887 GIT binary patch literal 63147 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

J(XP`J(E6mcz6R+mM{ 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 N!~}-XK_6W~{|8zoMUwyk literal 0 HcmV?d00001 diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/.gitignore b/05_react/unterricht/tag45/01_react-app-with-tests-andi/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/.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/05_react/unterricht/tag45/01_react-app-with-tests-andi/.oxlintrc.json b/05_react/unterricht/tag45/01_react-app-with-tests-andi/.oxlintrc.json new file mode 100644 index 0000000..1255078 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/.oxlintrc.json @@ -0,0 +1,8 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["react", "oxc"], + "rules": { + "react/rules-of-hooks": "error", + "react/only-export-components": ["warn", { "allowConstantExport": true }] + } +} diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/README.md b/05_react/unterricht/tag45/01_react-app-with-tests-andi/README.md new file mode 100644 index 0000000..d937833 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/README.md @@ -0,0 +1,16 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some Oxlint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs) +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the Oxlint configuration + +If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and Oxlint's TypeScript related rules in your project. diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/index.html b/05_react/unterricht/tag45/01_react-app-with-tests-andi/index.html new file mode 100644 index 0000000..583f18f --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/index.html @@ -0,0 +1,13 @@ + + + + + + + 01_react-app-with-tests + + +

+ + + diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/package-lock.json b/05_react/unterricht/tag45/01_react-app-with-tests-andi/package-lock.json new file mode 100644 index 0000000..8ea9c9b --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/package-lock.json @@ -0,0 +1,3831 @@ +{ + "name": "01_react-app-with-tests", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "01_react-app-with-tests", + "version": "0.0.0", + "dependencies": { + "axios": "^1.19.0", + "bootstrap": "^5.3.8", + "react": "^19.2.8", + "react-dom": "^19.2.8", + "react-icons": "^5.7.0", + "validator": "^13.15.35" + }, + "devDependencies": { + "@testing-library/jest-dom": "^7.0.1", + "@testing-library/react": "^16.3.2", + "@testing-library/user-event": "^14.6.4", + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.4", + "@vitejs/plugin-react": "^6.0.5", + "@vitest/ui": "^4.1.10", + "jsdom": "^30.0.1", + "oxlint": "^1.78.0", + "sass-embedded": "^1.102.0", + "vite": "^8.2.1", + "vitest": "^4.1.10" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.5.0.tgz", + "integrity": "sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@asamuzakjp/css-color": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-6.0.7.tgz", + "integrity": "sha512-vC/bk1Lz7Tn/EfU9/apOTBk80/8dyGyWMowPoV1tJ52muDGsDqt2HPT2klrFUiY60MQmQv9q8yIht15JnBgDGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^3.3.0", + "@csstools/css-color-parser": "^4.1.10", + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0", + "lru-cache": "^11.5.2" + }, + "engines": { + "node": "^22.13.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-8.3.2.tgz", + "integrity": "sha512-93Z1N+BQNXysodoicpOIyNh2drHfz/CTf9nnT0FEx72GJcIiwgydD7tGAr78j41LsYn3hlRn+LdGPuBLn1Bl8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "bidi-js": "^1.0.3", + "css-tree": "^3.2.1", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.5.2" + }, + "engines": { + "node": "^22.13.0 || >=24.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bramus/specificity": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", + "integrity": "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0" + }, + "bin": { + "specificity": "bin/cli.js" + } + }, + "node_modules/@bufbuild/protobuf": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.13.0.tgz", + "integrity": "sha512-acq7c49vxfm1ggJ95P70TX7ABDM0vxr1SYD3BB0o0jnBLB4OAqeHyKuN+cD3w80gXEDQ2zxHpR6CUeA+O/aU9g==", + "dev": true, + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@csstools/color-helpers": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.1.0.tgz", + "integrity": "sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@csstools/css-calc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.3.0.tgz", + "integrity": "sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.1.10.tgz", + "integrity": "sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^6.1.0", + "@csstools/css-calc": "^3.3.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", + "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.7.tgz", + "integrity": "sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "peerDependencies": { + "css-tree": "^3.2.1" + }, + "peerDependenciesMeta": { + "css-tree": { + "optional": true + } + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", + "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@exodus/bytes": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.1.tgz", + "integrity": "sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@noble/hashes": "^1.8.0 || ^2.0.0" + }, + "peerDependenciesMeta": { + "@noble/hashes": { + "optional": true + } + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@oxc-project/types": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.144.0.tgz", + "integrity": "sha512-nuhZIOLuI6TFQ32I/WnUx+SCPY7SdSKwgnFHydAuoS1+Z4BRcaP+RRJmGzl9lw+0OFF7UmaESf7KQRXaNLHypg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@oxlint/binding-android-arm-eabi": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.78.0.tgz", + "integrity": "sha512-Bu819lmAfZMUHErrpe0cEWj3iaefuUODHSU8+UbXy67V/r7/7f4K3FL0NmbD85E+wiFLDYuhP8Zlv0XnVeXshw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-android-arm64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.78.0.tgz", + "integrity": "sha512-CDfxZgB61B7buRdY2FJoAYYPPXCZ1EoC1LKscnC5dg3kjobdxiconvAvvN1BmHyW4PyFT3jRLDag/BY/roSNBQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-arm64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.78.0.tgz", + "integrity": "sha512-2Y2U9Ahrz+OO0Ej88f9SJYq51/jUBp1Mc7iZu0ukrbeeZ3gpRGfzIFnoqfHDY96xr0GEfNrPUBFEy0nN5aD7HA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-x64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.78.0.tgz", + "integrity": "sha512-rpych6eJq6m9jDRypTEaPD1xysaEW5h9+xuxhGK/QhOg+/xaqPZrCrTNoIl/f3nEjuJeCEmstNDlrE9rJi/3/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-freebsd-x64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.78.0.tgz", + "integrity": "sha512-IcMGrQT3QizkOESUJd5et+rOhVqSkNDfNik1cvrKDqIbzqx9KMtRswpFgkCuNTSwylCFLKhGUu8KmqY1ZnC0Dg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-gnueabihf": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.78.0.tgz", + "integrity": "sha512-/uLdoJ0IXE6vo/0f0LKjinQAp+re+VMaCWaNT8ENIv2EOCkSsc8SGaflXAuW0Jua2dq5+GLVWm1NQK7P3UFSNQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-musleabihf": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.78.0.tgz", + "integrity": "sha512-7xi4Wb/O8NRJhLoUXmDJMUVpNYvB5kefdhFU1Jb8rtae4QoXlTiLwI14X4YvAXVZLNZChP8m5qO9SQAlWQTbkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.78.0.tgz", + "integrity": "sha512-4hFW0+fVXa3OIh1Y4A5SPkmvI4wuuBSrCVKzOyE7PTjhc7yEqZ1pmvEEeS5Lj/MaqvegFxXyF33N+6jkehxdyg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-musl": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.78.0.tgz", + "integrity": "sha512-oC0mvsgBJjlMijSDEhx9KuvR9zYeHXceA9MjbuXB1F8NSR78Yj2unOBrstEvTVaq+pko+kuue6DajC00eqvTdg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-ppc64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.78.0.tgz", + "integrity": "sha512-XAllT5SUZS+ohjuZ3/5S0cwe0r7eboiuigeStCZ5DXRYx/2KVM2UvQXvAfyzXEimtQjAB7cDQ2YxDe2Zl2WNQQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.78.0.tgz", + "integrity": "sha512-trucMER/0QtecoXvc1y/UVqE3kwJipDwrx4oHfj+nNm3dq2zjP44WT0CfHNDPM3G1DXIkx/gY6lAD21NSCZVhA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-musl": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.78.0.tgz", + "integrity": "sha512-cm3O4F/HQbdzOUX5mKHqG5KDL6E5w0pnlZ+fbBy2rmLryPOowkuLagFHTopQsEIpjcaZoPOrL+BmmAytAG9HFg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-s390x-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.78.0.tgz", + "integrity": "sha512-33wRf6HqGNsybJ3qX4cGaQN2ODPxNmc1rMa0mrTmx3eFq1VzOnvQooi9bIGVYakW8a/wmqVx1mgsUm8R2xfTiw==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.78.0.tgz", + "integrity": "sha512-rRdISSYegj6VganMZ9tjRjijowfHJ09IZU01i0toBAqr6n5LEtwHq2IeS4FjW2RoskOHlb6efB26H5izYb3GEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-musl": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.78.0.tgz", + "integrity": "sha512-GmsP4rW0xTL6u5CVdcDsaN5Fbc7hBc382Wmar1kttbnwSEviM+rSINKOMQ+UQ6iH+AGwC+8gaAiwu134Tgh6Lg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-openharmony-arm64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.78.0.tgz", + "integrity": "sha512-sy9yeYuADc8a+n4TLBayzMCZiHPW78DcIFVpOXTmdKHWQeM9xe5uzkqIIZmi326D5hY9XVwacipEB1p7tQjPAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-arm64-msvc": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.78.0.tgz", + "integrity": "sha512-rjc2hF1KfMi8fZj1X/m3AmnHbdsF3rL0v6KQg0Uc880Yb2khjz+3U14sfdZ7jWTpRnN1m1NQa/TT7uU9lJWPrA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-ia32-msvc": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.78.0.tgz", + "integrity": "sha512-zcuXFVrEFHIafRfkCQT8w/Xe41o07ozl/vwHq7p94vB29xVzsB0sZGYORU1jhcYKv3Lr0J3HbJ2T4fHH5rWmvA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-x64-msvc": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.78.0.tgz", + "integrity": "sha512-Sb5ocmLSuYeOuXd+CFOToGKp/gjXUEWDnvIGwhnh8aq8wY4TMmEnKnvbogSW7RdMZv77JSARduS7/gv+khYEjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", + "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.6.0", + "@parcel/watcher-darwin-arm64": "2.6.0", + "@parcel/watcher-darwin-x64": "2.6.0", + "@parcel/watcher-freebsd-x64": "2.6.0", + "@parcel/watcher-linux-arm-glibc": "2.6.0", + "@parcel/watcher-linux-arm-musl": "2.6.0", + "@parcel/watcher-linux-arm64-glibc": "2.6.0", + "@parcel/watcher-linux-arm64-musl": "2.6.0", + "@parcel/watcher-linux-x64-glibc": "2.6.0", + "@parcel/watcher-linux-x64-musl": "2.6.0", + "@parcel/watcher-win32-arm64": "2.6.0", + "@parcel/watcher-win32-x64": "2.6.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", + "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", + "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", + "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", + "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", + "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", + "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", + "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", + "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", + "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", + "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", + "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", + "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.4.tgz", + "integrity": "sha512-jHC2cnyKz5xU2fhECtFl8OZ83cYNt13GZQD+0uMJ/X3o+ijmd56okHhTUwxVSHPx1IRVIJEZ1/1pPzeLCU6XKA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-Dc5mPD8F5F/FS8i01syd7FTF6yB2fVthH/TRkjwJkzUK6EpoxHtqvZQP5Zwq80/5z19TWYHIg1KOHboCgVx/aQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.4.tgz", + "integrity": "sha512-fpDm4oBo6SqLvWUYCmFhdde3U9KH2fRNNMeAnAPAIwxRL345xutL0EtEUcuoxsoazdJGv/MuDBQHlCDrtbvqOg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.4.tgz", + "integrity": "sha512-rSJoreDE/HoIzoaib6MTp5jQtCTdMHKIvItAKT/ImS6Y6Ww76oUaeMyp4Vc/fAgd/ehji068IxetHXAnqUwN9A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.4.tgz", + "integrity": "sha512-/jm8OGHgn7oGaJu3i/qZI9spUGcJ+y/lk43ttQ/iO1tOd9NissG6o97bighBCiL+BKRngmcDuR6ikfwYdJmVuQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.4.tgz", + "integrity": "sha512-tIP06BeD9EqvECBrPZ+sqdPlYrT+aYaAiu1wYziVx5elRK/ftm33JxVDy2bXGbr6J0CrtirCkR87/X5a2euEng==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.4.tgz", + "integrity": "sha512-Ql1Q0EQqVThvn9VAVlwNzsUvbSFtCMGjLpRRi4pk5i7NZZ4n5ISiLMjHYtus4VQ2PvkSw24zyaCVsiS+sXPj1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.4.tgz", + "integrity": "sha512-GjbjXD4XXfN19D0LZNbmiCBUoDiRACsYHr0yaIbbn8aFsXjHZifcYqu/W5Er5X2X990WjHXFrxarn5chzItorQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.4.tgz", + "integrity": "sha512-p5WR0NOwaRmJ/B1b6IjEFLLivwEsf3PrdBIhRbhTCQisbo2SvHHpG4ELB/+FgQNnB88LTOF86upmJmbvZdQ2lw==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.4.tgz", + "integrity": "sha512-4/GyVjmhR+Tc6HLJvwc1sOhPqAZtySiSMesOZyX6JQ5XBxoTDEMKQzvo07NIK6nTon/SivlZqvhzvuVBNQhObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.4.tgz", + "integrity": "sha512-l9eeLsCNvPpmSXUej0etw/J1eqV0Jj1D5G/xG6YTijmE6dkv6E2QezgWbTfQk63v952DPqrjOCoiqxq7Bw0YUQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.4.tgz", + "integrity": "sha512-e0F355MSTMm3+UOqtV3L24gFUp2N5m1f8L/7d56deik6va+AXdrt9F8LbzGpeWGWRbZEDq4m8NVnJDeBtf9DZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.4.tgz", + "integrity": "sha512-AWLi0uBRYh6QlE7OKhiz+phZC0qwtij2QZmhmOdsLdFn64m7oMpooE9ICE3lhm9xMb4SpDo2WbHcxX1iFLFtqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.4.tgz", + "integrity": "sha512-UwSDJOg3dqCAejWdxclJjCsh3Qq4vLYMDxmyHqo1btz3stK2VqgwNd3mm5tuIwzSlGIQ/1H9Hr+Zn09mrezNqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-7.0.1.tgz", + "integrity": "sha512-oMDTC3oA+6CXSO2JZnvOI7CA6oVub6kij5ggk9ohwye5slmkwxYDXcPOVxgMw/RQlticjtO0C1RZkR97HgrWMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=22", + "npm": ">=6", + "yarn": ">=1" + }, + "peerDependencies": { + "@testing-library/dom": ">=10 <11", + "vitest": ">= 0.32" + }, + "peerDependenciesMeta": { + "vitest": { + "optional": true + } + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@testing-library/user-event": { + "version": "14.6.4", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.4.tgz", + "integrity": "sha512-QCGwP6QrjypBLwyj5cuyfVamkaIEy/XGY+1VDehbtbQqOggYmTFpFOdWR5mPz14vX8vXLMVjDHlRNBcClyO9ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.18.tgz", + "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.5.tgz", + "integrity": "sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.0.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", + "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.10", + "@vitest/utils": "4.1.10", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz", + "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.1.10", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz", + "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz", + "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.1.10", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz", + "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.10", + "@vitest/utils": "4.1.10", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz", + "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/ui": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.1.10.tgz", + "integrity": "sha512-EOUqfXHTXtpSHsyLHH40ts3Ue+hRhSGwzwzMlK0dTEOLSDYyOXLyr5JDGmHQWhN2DYI30gw6dVx3cdgM9FZl+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.1.10", + "fflate": "^0.8.2", + "flatted": "^3.4.2", + "pathe": "^2.0.3", + "sirv": "^3.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "4.1.10" + } + }, + "node_modules/@vitest/utils": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz", + "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.10", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", + "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.16.0", + "form-data": "^4.0.6", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, + "node_modules/bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/colorjs.io": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.7.1.tgz", + "integrity": "sha512-LY7OHnJZxHwT5UlzNa9bbhHHDbzB6yE5+3MIPwJEQKRvSCt/T4G7epsj+9j2BExUIIfXFIJGsIXUKdfrK9Q5tA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/color" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-urls": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", + "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz", + "integrity": "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.11.0", + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/entities": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", + "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", + "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", + "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fflate": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", + "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", + "dev": true, + "license": "MIT" + }, + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", + "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.6.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/immutable": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz", + "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/jsdom": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-30.0.1.tgz", + "integrity": "sha512-52v7mUVUfNQVYYqE1lcdaymWL0njO7lTLUog6ZvW2U5KsbiLk/GnZlVJ+qx0xfNJZ6Gn+KSpPNE52vurbxZwrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^6.0.5", + "@asamuzakjp/dom-selector": "^8.3.0", + "@bramus/specificity": "^2.4.2", + "@csstools/css-syntax-patches-for-csstree": "^1.1.7", + "@exodus/bytes": "^1.15.1", + "css-tree": "^3.2.1", + "data-urls": "^7.0.0", + "decimal.js": "^10.6.0", + "html-encoding-sniffer": "^6.0.0", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.5.2", + "parse5": "^8.0.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^6.0.2", + "undici": "^8.9.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^8.0.1", + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^17.1.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": "^22.22.2 || ^24.15.0 || >=26.0.0" + }, + "peerDependencies": { + "canvas": "^3.2.3" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "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/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/obug": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.4.tgz", + "integrity": "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/oxlint": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.78.0.tgz", + "integrity": "sha512-QgQePuxIqKOzo1KSjG2EnITEeWvWnKAm77eq8nrMtf6AGoA+zyGc4PFYtDNJSD25g/ibOwfQ851hZ4/SPkMVoA==", + "dev": true, + "license": "MIT", + "bin": { + "oxlint": "bin/oxlint" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxlint/binding-android-arm-eabi": "1.78.0", + "@oxlint/binding-android-arm64": "1.78.0", + "@oxlint/binding-darwin-arm64": "1.78.0", + "@oxlint/binding-darwin-x64": "1.78.0", + "@oxlint/binding-freebsd-x64": "1.78.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.78.0", + "@oxlint/binding-linux-arm-musleabihf": "1.78.0", + "@oxlint/binding-linux-arm64-gnu": "1.78.0", + "@oxlint/binding-linux-arm64-musl": "1.78.0", + "@oxlint/binding-linux-ppc64-gnu": "1.78.0", + "@oxlint/binding-linux-riscv64-gnu": "1.78.0", + "@oxlint/binding-linux-riscv64-musl": "1.78.0", + "@oxlint/binding-linux-s390x-gnu": "1.78.0", + "@oxlint/binding-linux-x64-gnu": "1.78.0", + "@oxlint/binding-linux-x64-musl": "1.78.0", + "@oxlint/binding-openharmony-arm64": "1.78.0", + "@oxlint/binding-win32-arm64-msvc": "1.78.0", + "@oxlint/binding-win32-ia32-msvc": "1.78.0", + "@oxlint/binding-win32-x64-msvc": "1.78.0" + }, + "peerDependencies": { + "oxlint-tsgolint": ">=7.0.2001", + "vite-plus": "*" + }, + "peerDependenciesMeta": { + "oxlint-tsgolint": { + "optional": true + }, + "vite-plus": { + "optional": true + } + } + }, + "node_modules/parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", + "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.17", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz", + "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz", + "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.8" + } + }, + "node_modules/react-icons": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.7.0.tgz", + "integrity": "sha512-LBLy340Rzqy6+/yVhZKT3B/QpP1BZaesGqasf09HPOBzRarcDIFH0WwXlXQfE7q7ipxK4MSiC5DIBWURCny6fw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/readdirp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rolldown": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.4.tgz", + "integrity": "sha512-rSr7irW0K7QRWzjdJXqZowkcRdDtjRduh43rBltnVKd0VFq839l1lJoDvGJb6gl7+4rTTCrPWu+YfujUL8Ug7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.144.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.2.4", + "@rolldown/binding-darwin-arm64": "1.2.4", + "@rolldown/binding-darwin-x64": "1.2.4", + "@rolldown/binding-freebsd-x64": "1.2.4", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.4", + "@rolldown/binding-linux-arm64-gnu": "1.2.4", + "@rolldown/binding-linux-arm64-musl": "1.2.4", + "@rolldown/binding-linux-ppc64-gnu": "1.2.4", + "@rolldown/binding-linux-s390x-gnu": "1.2.4", + "@rolldown/binding-linux-x64-gnu": "1.2.4", + "@rolldown/binding-linux-x64-musl": "1.2.4", + "@rolldown/binding-openharmony-arm64": "1.2.4", + "@rolldown/binding-win32-arm64-msvc": "1.2.4", + "@rolldown/binding-win32-x64-msvc": "1.2.4" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/sass": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.102.0.tgz", + "integrity": "sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chokidar": "^5.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=20.19.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass-embedded": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.102.0.tgz", + "integrity": "sha512-7xZ7jbsGTpA+oRIJ3HKeiYy+RIrwHltIjKMdnRTAZiPpqvKzwy80zZqR532yk5bpHn1lTqWdZ6Fh4KI+GWSsKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bufbuild/protobuf": "^2.5.0", + "colorjs.io": "^0.7.0", + "immutable": "^5.1.5", + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "engines": { + "node": ">=20.19.0" + }, + "optionalDependencies": { + "sass-embedded-all-unknown": "1.102.0", + "sass-embedded-android-arm": "1.102.0", + "sass-embedded-android-arm64": "1.102.0", + "sass-embedded-android-riscv64": "1.102.0", + "sass-embedded-android-x64": "1.102.0", + "sass-embedded-darwin-arm64": "1.102.0", + "sass-embedded-darwin-x64": "1.102.0", + "sass-embedded-linux-arm": "1.102.0", + "sass-embedded-linux-arm64": "1.102.0", + "sass-embedded-linux-musl-arm": "1.102.0", + "sass-embedded-linux-musl-arm64": "1.102.0", + "sass-embedded-linux-musl-riscv64": "1.102.0", + "sass-embedded-linux-musl-x64": "1.102.0", + "sass-embedded-linux-riscv64": "1.102.0", + "sass-embedded-linux-x64": "1.102.0", + "sass-embedded-unknown-all": "1.102.0", + "sass-embedded-win32-arm64": "1.102.0", + "sass-embedded-win32-x64": "1.102.0" + } + }, + "node_modules/sass-embedded-all-unknown": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.102.0.tgz", + "integrity": "sha512-BpaRCODYILywdCOI8++Q63+/ptsnWdwYuKyD5gMH0cJblXj85EePdeTTOM7Hl2PP6d4dIojg8GS9fIZhD2x8qA==", + "cpu": [ + "!arm", + "!arm64", + "!riscv64", + "!x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "sass": "1.102.0" + } + }, + "node_modules/sass-embedded-android-arm": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.102.0.tgz", + "integrity": "sha512-QM6sPMUtUvFopVR15qXWdobSTYW/sPrXJLxa7eaIbqr/0EtNBZirEXdiOFdDNcsFIEFX3NeZjDq8ZkBAQrxR1w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-arm64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.102.0.tgz", + "integrity": "sha512-p34iJl04ksTA/6/NZNKv4Bda710hvpoUNUK6vgHKe53tTGhL5XOfYyTjX95lpKPSvGm4BlPEVSSo6CBhyNSDpw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-riscv64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.102.0.tgz", + "integrity": "sha512-wcT5N3B6fIwCKCicDcUP6Jol+e1R3WxHMGU7Swp9Ds9VV8di7HYOKIFcasT25dKJv4l17SA7x5Oum0FlRnMPkg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-x64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.102.0.tgz", + "integrity": "sha512-IF4eJmoM4uzOborahHp8D4PlCIvumr6IGEbe1XkedwE57qRdk/GENiYZjGwYUQP0uy+pfb+WfvTNhMxkD2VhJg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.102.0.tgz", + "integrity": "sha512-txaURnQp3L/5mGgSkg6zFrI/H1BgwPxH+7fv/HMuFT1fTXGi7i5++OJNCFVPL7gFB50WFmpf02bCvgec3/gxMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-x64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.102.0.tgz", + "integrity": "sha512-KXs/y/bCVTxRy6NbgC2kK2JwmYnu4+EcDu+DVpHHIfiRgClTca++jYEqcxkthqK9ufkCgwMmrhb3tllyw5l1dw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.102.0.tgz", + "integrity": "sha512-1nqC2lrn91fjEsf6gSr/KigU15FrhUSDGWdSWowLXvNG8KbYUNRKjfypn+8u4P0SrL+R/v4VSVZguZiVVTI94A==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": "glibc", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.102.0.tgz", + "integrity": "sha512-Yg3Ga1deV+igVqjyK5gHMKbC6fdtKkVYBnzkPVbn/W2/DeActR2JFBfMwVtZJdLpNneMye3dRzOVO2QFegsTbQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": "glibc", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.102.0.tgz", + "integrity": "sha512-WULwlrLbhHsJzGBcfztoXK47VyJugcWDmLXF893+yrMj6dF4/zJP6JqootT3EmAx9JAUdAppXI6ma7aGlnV8jw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": "musl", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.102.0.tgz", + "integrity": "sha512-UFvRNJcYFOqo0X525vXG3Buue+waoqiG58xx7J6tMHSj5K/38t+9YbbgppKGLRoKoAwZTIdW8pxPA8qBSzQC6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": "musl", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.102.0.tgz", + "integrity": "sha512-7EmAMt5cX0SEN/qTNHD4VBHyjJXmFMAGuNR9R4YJR/SWGj/OZJw9VWryMfzEnMgNbG6HykiIttGfr9CyNKmZbA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": "musl", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.102.0.tgz", + "integrity": "sha512-HHzU5/g/MT1edbHfDzZleKcX19l6LMGk0KhZFLy66cxQl1iRLUaL22jfGstmHOdRUmVzWF3VevjSflSGvAjr4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": "musl", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-riscv64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.102.0.tgz", + "integrity": "sha512-AUc4wHQ7IUo9/0mcZQn7Xkl1t1+NZlTF+v5i3GX93HNoQUGIFic7q6qjSERLkdwQ0dLnWrMqe8KhV98V8v0ZoA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": "glibc", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-x64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.102.0.tgz", + "integrity": "sha512-CxfhMwwbQFBCTjGysByvOw4PIOCYZ/jtz9uBU0UR5sfHtQvqqnsNyb1fVCIUsZ7piimxQAwcLV5H3Skj96QiVg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": "glibc", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-unknown-all": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.102.0.tgz", + "integrity": "sha512-qhqfvFD/7X0c6e5rwvzABkGlaYJju1G+hDPCiB0HdK+S7JF+YDDb9XpRYJ9+tGIopWzEHhoNnJDPtPs9IX1lOQ==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "!android", + "!darwin", + "!linux", + "!win32" + ], + "dependencies": { + "sass": "1.102.0" + } + }, + "node_modules/sass-embedded-win32-arm64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.102.0.tgz", + "integrity": "sha512-EQOTKStMf7ervyhe3AX10Pa6F7CQMN3IgmpBkfgjy9HQG4Iyt34zCl/4vNJLVBWLW03b7/KJacy2I9SRz26X9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-x64": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.102.0.tgz", + "integrity": "sha512-e+26mgR+O4g/m7r+WGuvygsjgZEsfgWntIOgaNhkSa9b7vVas70l2RB/SipUM4zGXQk1jX06aOEz0w0Pq1pprQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz", + "integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/sync-message-port": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.2.0.tgz", + "integrity": "sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz", + "integrity": "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyrainbow": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.1.tgz", + "integrity": "sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "7.4.10", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.10.tgz", + "integrity": "sha512-GgouD1B+sWwvkaEq8vXC15DjQitxbvs12oIXELpconwm+Tg3zfcEv4jgzq3vtKverDXsg3VI8aRgNL2Nra0Iog==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^7.4.10" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.4.10", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.10.tgz", + "integrity": "sha512-KnQjp53ZekKgm/r3l+u8kJGGzYgrWdP8+Mql7a4vijh2WE0IrZWspQj/TpTxDho/YxO+AnOZnIjQcCD+q6iJsw==", + "dev": true, + "license": "MIT" + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.2.tgz", + "integrity": "sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/undici": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.0.tgz", + "integrity": "sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/validator": { + "version": "13.15.35", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.35.tgz", + "integrity": "sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.1.tgz", + "integrity": "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.33.0", + "picomatch": "^4.0.5", + "postcss": "^8.5.25", + "rolldown": "~1.2.1", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.4.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz", + "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.1.10", + "@vitest/mocker": "4.1.10", + "@vitest/pretty-format": "4.1.10", + "@vitest/runner": "4.1.10", + "@vitest/snapshot": "4.1.10", + "@vitest/spy": "4.1.10", + "@vitest/utils": "4.1.10", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.10", + "@vitest/browser-preview": "4.1.10", + "@vitest/browser-webdriverio": "4.1.10", + "@vitest/coverage-istanbul": "4.1.10", + "@vitest/coverage-v8": "4.1.10", + "@vitest/ui": "4.1.10", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false + } + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20" + } + }, + "node_modules/whatwg-mimetype": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/whatwg-url": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-17.1.0.tgz", + "integrity": "sha512-3GeworPmc2ZfEEHP7lEbUfBX/L75wdEsi0rLNhXcXxnoN5jyq0SL5gCy06SGW2cyTIZdTvWIDQNQoza++vKeaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.15.1", + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.1" + }, + "engines": { + "node": "^22.14.0 || >=24.0.0" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/package.json b/05_react/unterricht/tag45/01_react-app-with-tests-andi/package.json new file mode 100644 index 0000000..13ae505 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/package.json @@ -0,0 +1,37 @@ +{ + "name": "01_react-app-with-tests", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "oxlint", + "preview": "vite preview", + "test:ui": "npx vitest --ui", + "test": "vitest", + "test:watch": "vitest --watch" + }, + "dependencies": { + "axios": "^1.19.0", + "bootstrap": "^5.3.8", + "react": "^19.2.8", + "react-dom": "^19.2.8", + "react-icons": "^5.7.0", + "validator": "^13.15.35" + }, + "devDependencies": { + "@testing-library/jest-dom": "^7.0.1", + "@testing-library/react": "^16.3.2", + "@testing-library/user-event": "^14.6.4", + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.4", + "@vitejs/plugin-react": "^6.0.5", + "@vitest/ui": "^4.1.10", + "jsdom": "^30.0.1", + "oxlint": "^1.78.0", + "sass-embedded": "^1.102.0", + "vite": "^8.2.1", + "vitest": "^4.1.10" + } +} diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/public/favicon.svg b/05_react/unterricht/tag45/01_react-app-with-tests-andi/public/favicon.svg new file mode 100644 index 0000000..6893eb1 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/public/icons.svg b/05_react/unterricht/tag45/01_react-app-with-tests-andi/public/icons.svg new file mode 100644 index 0000000..e952219 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/public/icons.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/App.jsx b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/App.jsx new file mode 100644 index 0000000..021f17c --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/App.jsx @@ -0,0 +1,20 @@ +import Button from './components/buttons/Button'; +import ExampleComponent from './components/examples/ExampleComponent'; +import FormContact from './components/forms/FormContact'; + +function App(props) { + // const { } = props; + + return ( + <> +
+ +
+
+ + ); +} +export default App; diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/hero.png b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..02251f4b956c55af2d76fd0788124d7eee2b45eb GIT binary patch literal 13057 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 P00000NkvXXu0mjft=yBf literal 0 HcmV?d00001 diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/react.svg b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/vite.svg b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/vite.svg new file mode 100644 index 0000000..5101b67 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/assets/vite.svg @@ -0,0 +1 @@ +Vite diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/buttons/Button.jsx b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/buttons/Button.jsx new file mode 100644 index 0000000..e6084bf --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/buttons/Button.jsx @@ -0,0 +1,15 @@ +const Button = (props) => { + // const { } = props; + + const handleClick = (e) => { + const btn = e.currentTarget; + btn.textContent = 'Clicked'; + }; + + return ( + + ); +}; +export default Button; diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/examples/ExampleComponent.jsx b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/examples/ExampleComponent.jsx new file mode 100644 index 0000000..9886557 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/examples/ExampleComponent.jsx @@ -0,0 +1,10 @@ +const ExampleComponent = (props) => { + // const { } = props; + + return ( + <> +

Hello World!

+ + ); +}; +export default ExampleComponent; diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/examples/__test__/ExampleComponent.test.jsx b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/examples/__test__/ExampleComponent.test.jsx new file mode 100644 index 0000000..032f5e7 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/examples/__test__/ExampleComponent.test.jsx @@ -0,0 +1,16 @@ +import { render, screen } from '@testing-library/react'; +import ExampleComponent from '../ExampleComponent'; + +// import nicht notwendig ( Findet automatisch durch globale Setting statt ) +// import { test, expect } from 'vitest'; + +// Test Case +test('Components renders correctly and contains text "Hello World!"', () => { + // AAA + // Arrange, Acting, Assert + render(); + + const element = screen.getByText(/Hello World!/i); + + expect(element).toBeInTheDocument(); +}); diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/forms/FormContact.jsx b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/forms/FormContact.jsx new file mode 100644 index 0000000..015c79a --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/components/forms/FormContact.jsx @@ -0,0 +1,167 @@ +import { useState } from 'react'; +import validate from '../../utils/validators/validate'; + +const FormContact = (props) => { + // const { } = props; + + const [formData, setFormData] = useState({ + firstname: '', // + lastname: '', + email: '', + message: '', + }); + + const [errors, setErrors] = useState({}); + const [successMessage, setSuccessMessage] = useState(''); + + // EventHandlers ======= + const handleSubmit = (e) => { + e.preventDefault(); // Standardverhalten (Versenden vom Formular) unterbinden. + + const form = e.currentTarget; + + const errors = validate(formData); + + if (Object.keys(errors).length === 0) { + console.log('Form Data', formData); + // TODO: send over AJAX/Fetch + setSuccessMessage('Form submitted'); + + form.reset(); + setFormData({ + firstname: '', // + lastname: '', + email: '', + message: '', + }); + setErrors({}); + } else { + console.warn('Form submit error'); + setErrors(errors); + setSuccessMessage(''); + } + }; + + const handleBlur = (e) => { + const { name } = e.target; + const error = validate(formData); + + if (error[name]) { + setErrors({ ...errors, [name]: error[name] }); + } else { + setErrors({ ...errors, [name]: '' }); + } + }; + + const handleChange = (e) => { + const { name, value } = e.target; + + setFormData((state) => ({ ...state, [name]: value })); + + // console.log({ [e.target.name]: e.target.value }); + // console.log('Formdata', formData); + }; + + return ( +
+
+
+
+ + +
OK
+
{errors?.firstname || 'Error'}
+
+
+
+
+ + +
OK
+
{errors?.lastname}
+
+
+
+ +
+
+
+ + +
OK
+
{errors?.email}
+
+
+
+ +
+
+
+ + +
OK
+
{errors?.message}
+
+
+
+ +
+
+
+ +
+
+
+ + {successMessage && ( +
+ {successMessage} +
+ )} +
+ ); +}; +export default FormContact; diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/main.jsx b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/main.jsx new file mode 100644 index 0000000..4233564 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/main.jsx @@ -0,0 +1,13 @@ +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; + +import 'bootstrap'; // import von JS +import 'bootstrap/dist/css/bootstrap.min.css'; // CSS import + +import App from './App.jsx'; + +createRoot(document.getElementById('root')).render( + + + , +); diff --git a/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/test/Button.test.jsx b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/test/Button.test.jsx new file mode 100644 index 0000000..7228768 --- /dev/null +++ b/05_react/unterricht/tag45/01_react-app-with-tests-andi/src/test/Button.test.jsx @@ -0,0 +1,19 @@ +import { test, expect } from 'vitest'; +import { render, screen, fireEvent } from '@testing-library/react'; + +import Button from '../components/buttons/Button'; +import userEvent from '@testing-library/user-event'; + +test('Button is clickable and changes text on click to "Clicked"', async () => { + render(