From 227a3d618635e0d713b7272b32a59d3615779b75 Mon Sep 17 00:00:00 2001 From: mohamad Date: Tue, 13 May 2025 19:23:15 +0200 Subject: [PATCH] migrate to vue+vueuse+valerieui bc quasar customisation is sad --- be/app/config.py | 3 +- fe/.editorconfig | 6 +- fe/{src/boot/.gitkeep => .env} | 0 fe/.gitattributes | 1 + fe/.gitignore | 44 +- fe/.npmrc | 5 - fe/.prettierrc.json | 3 +- fe/.vscode/extensions.json | 18 +- fe/.vscode/settings.json | 25 +- fe/README.md | 84 +- fe/dev-dist/registerSW.js | 1 + fe/e2e/tsconfig.json | 4 + fe/e2e/vue.spec.ts | 8 + fe/env.d.ts | 1 + fe/eslint.config.js | 86 - fe/eslint.config.ts | 36 + fe/index.html | 39 +- fe/package-lock.json | 6417 ++++---- fe/package.json | 87 +- fe/playwright.config.ts | 110 + fe/postcss.config.js | 29 - fe/public/favicon.ico | Bin 64483 -> 4286 bytes fe/quasar.config.ts | 235 - fe/src-pwa/manifest.json | 32 - fe/src-pwa/pwa-env.d.ts | 7 - fe/src-pwa/register-service-worker.ts | 41 - fe/src-pwa/tsconfig.json | 7 - fe/src/App.vue | 24 +- fe/src/assets/logo.svg | 1 + fe/src/assets/main.scss | 26 + fe/src/assets/quasar-logo-vertical.svg | 15 - fe/src/assets/valerie-ui.scss | 737 + fe/src/assets/variables.scss | 21 + fe/src/boot/axios.ts | 72 - fe/src/boot/i18n.ts | 33 - .../components/ConflictResolutionDialog.vue | 414 +- fe/src/components/CreateListModal.vue | 180 +- fe/src/components/EssentialLink.vue | 79 +- fe/src/components/OfflineIndicator.vue | 209 +- .../components/global/NotificationDisplay.vue | 141 + fe/src/config/api.ts | 2 +- fe/src/css/app.scss | 1 - fe/src/css/quasar.variables.scss | 25 - fe/src/env.d.ts | 7 - fe/src/layouts/AuthLayout.vue | 27 +- fe/src/layouts/MainLayout.vue | 228 +- fe/src/main.ts | 41 + fe/src/pages/AccountPage.vue | 354 +- fe/src/pages/ErrorNotFound.vue | 60 +- fe/src/pages/GroupDetailPage.vue | 193 +- fe/src/pages/GroupsPage.vue | 340 +- fe/src/pages/IndexPage.vue | 68 +- fe/src/pages/ListDetailPage.vue | 1059 +- fe/src/pages/ListsPage.vue | 314 +- fe/src/pages/LoginPage.vue | 205 +- fe/src/pages/SignupPage.vue | 239 +- fe/src/router/index.ts | 85 +- fe/src/router/routes.ts | 38 +- fe/src/services/api.ts | 91 + fe/src/stores/auth.ts | 4 +- fe/src/stores/index.ts | 32 - fe/src/stores/notifications.ts | 52 + fe/src/stores/offline.ts | 192 +- .../custom-service-worker.ts => src/sw.ts} | 29 +- fe/tsconfig.app.json | 12 + fe/tsconfig.json | 15 +- fe/tsconfig.node.json | 19 + fe/tsconfig.vitest.json | 11 + fe/vite.config.ts | 64 + fe/vitest.config.ts | 14 + repomix-output.xml | 13219 ++++++++++++++++ 71 files changed, 20302 insertions(+), 6019 deletions(-) rename fe/{src/boot/.gitkeep => .env} (100%) create mode 100644 fe/.gitattributes delete mode 100644 fe/.npmrc create mode 100644 fe/dev-dist/registerSW.js create mode 100644 fe/e2e/tsconfig.json create mode 100644 fe/e2e/vue.spec.ts create mode 100644 fe/env.d.ts delete mode 100644 fe/eslint.config.js create mode 100644 fe/eslint.config.ts create mode 100644 fe/playwright.config.ts delete mode 100644 fe/postcss.config.js delete mode 100644 fe/quasar.config.ts delete mode 100644 fe/src-pwa/manifest.json delete mode 100644 fe/src-pwa/pwa-env.d.ts delete mode 100644 fe/src-pwa/register-service-worker.ts delete mode 100644 fe/src-pwa/tsconfig.json create mode 100644 fe/src/assets/logo.svg create mode 100644 fe/src/assets/main.scss delete mode 100644 fe/src/assets/quasar-logo-vertical.svg create mode 100644 fe/src/assets/valerie-ui.scss create mode 100644 fe/src/assets/variables.scss delete mode 100644 fe/src/boot/axios.ts delete mode 100644 fe/src/boot/i18n.ts create mode 100644 fe/src/components/global/NotificationDisplay.vue delete mode 100644 fe/src/css/app.scss delete mode 100644 fe/src/css/quasar.variables.scss delete mode 100644 fe/src/env.d.ts create mode 100644 fe/src/main.ts create mode 100644 fe/src/services/api.ts delete mode 100644 fe/src/stores/index.ts create mode 100644 fe/src/stores/notifications.ts rename fe/{src-pwa/custom-service-worker.ts => src/sw.ts} (68%) create mode 100644 fe/tsconfig.app.json create mode 100644 fe/tsconfig.node.json create mode 100644 fe/tsconfig.vitest.json create mode 100644 fe/vite.config.ts create mode 100644 fe/vitest.config.ts create mode 100644 repomix-output.xml diff --git a/be/app/config.py b/be/app/config.py index ffa6e0d..3d6d95a 100644 --- a/be/app/config.py +++ b/be/app/config.py @@ -58,9 +58,8 @@ Organic Bananas API_DOCS_URL: str = "/api/docs" API_REDOC_URL: str = "/api/redoc" CORS_ORIGINS: list[str] = [ - "http://localhost:5174", + "http://localhost:5173", "http://localhost:8000", - "http://localhost:9000", # Add your deployed frontend URL here later # "https://your-frontend-domain.com", ] diff --git a/fe/.editorconfig b/fe/.editorconfig index f654551..5a5809d 100644 --- a/fe/.editorconfig +++ b/fe/.editorconfig @@ -1,7 +1,9 @@ -[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue}] +[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}] charset = utf-8 indent_size = 2 indent_style = space -end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true + +end_of_line = lf +max_line_length = 100 diff --git a/fe/src/boot/.gitkeep b/fe/.env similarity index 100% rename from fe/src/boot/.gitkeep rename to fe/.env diff --git a/fe/.gitattributes b/fe/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/fe/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/fe/.gitignore b/fe/.gitignore index f1d913c..aef72d0 100644 --- a/fe/.gitignore +++ b/fe/.gitignore @@ -1,33 +1,33 @@ -.DS_Store -.thumbs.db -node_modules - -# Quasar core related directories -.quasar -/dist -/quasar.config.*.temporary.compiled* - -# Cordova related directories and files -/src-cordova/node_modules -/src-cordova/platforms -/src-cordova/plugins -/src-cordova/www - -# Capacitor related directories and files -/src-capacitor/www -/src-capacitor/node_modules - -# Log files +# Logs +logs +*.log npm-debug.log* yarn-debug.log* yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ # Editor directories and files +.vscode/* +!.vscode/extensions.json .idea *.suo *.ntvs* *.njsproj *.sln +*.sw? -# local .env files -.env.local* +*.tsbuildinfo + +test-results/ +playwright-report/ diff --git a/fe/.npmrc b/fe/.npmrc deleted file mode 100644 index eb19082..0000000 --- a/fe/.npmrc +++ /dev/null @@ -1,5 +0,0 @@ -# pnpm-related options -shamefully-hoist=true -strict-peer-dependencies=false -# to get the latest compatible packages when creating the project https://github.com/pnpm/pnpm/issues/6463 -resolution-mode=highest diff --git a/fe/.prettierrc.json b/fe/.prettierrc.json index 1263a63..29a2402 100644 --- a/fe/.prettierrc.json +++ b/fe/.prettierrc.json @@ -1,5 +1,6 @@ { "$schema": "https://json.schemastore.org/prettierrc", + "semi": false, "singleQuote": true, "printWidth": 100 -} \ No newline at end of file +} diff --git a/fe/.vscode/extensions.json b/fe/.vscode/extensions.json index fe38802..0c4e4ea 100644 --- a/fe/.vscode/extensions.json +++ b/fe/.vscode/extensions.json @@ -1,15 +1,11 @@ { "recommendations": [ + "Vue.volar", + "vitest.explorer", + "ms-playwright.playwright", "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - "editorconfig.editorconfig", - "vue.volar", - "wayou.vscode-todo-highlight" - ], - "unwantedRecommendations": [ - "octref.vetur", - "hookyqr.beautify", - "dbaeumer.jshint", - "ms-vscode.vscode-typescript-tslint-plugin" + "EditorConfig.EditorConfig", + "oxc.oxc-vscode", + "esbenp.prettier-vscode" ] -} \ No newline at end of file +} diff --git a/fe/.vscode/settings.json b/fe/.vscode/settings.json index 746cf57..608ad9b 100644 --- a/fe/.vscode/settings.json +++ b/fe/.vscode/settings.json @@ -1,16 +1,13 @@ { - "editor.bracketPairColorization.enabled": true, - "editor.guides.bracketPairs": true, + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "tsconfig.json": "tsconfig.*.json, env.d.ts", + "vite.config.*": "jsconfig*, vitest.config.*, cypress.config.*, playwright.config.*", + "package.json": "package-lock.json, pnpm*, .yarnrc*, yarn*, .eslint*, eslint*, .oxlint*, oxlint*, .prettier*, prettier*, .editorconfig" + }, + "editor.codeActionsOnSave": { + "source.fixAll": "explicit" + }, "editor.formatOnSave": true, - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.codeActionsOnSave": [ - "source.fixAll.eslint" - ], - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "vue" - ], - "typescript.tsdk": "node_modules/typescript/lib" -} \ No newline at end of file + "editor.defaultFormatter": "esbenp.prettier-vscode" +} diff --git a/fe/README.md b/fe/README.md index a4fe5a5..90bf698 100644 --- a/fe/README.md +++ b/fe/README.md @@ -1,40 +1,64 @@ -# mitlist (mitlist) +# fe -mitlist pwa +This template should help get you started developing with Vue 3 in Vite. -## Install the dependencies -```bash -yarn -# or +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types. + +## Customize configuration + +See [Vite Configuration Reference](https://vite.dev/config/). + +## Project Setup + +```sh npm install ``` -### Start the app in development mode (hot-code reloading, error reporting, etc.) -```bash -quasar dev +### Compile and Hot-Reload for Development + +```sh +npm run dev ``` +### Type-Check, Compile and Minify for Production -### Lint the files -```bash -yarn lint -# or +```sh +npm run build +``` + +### Run Unit Tests with [Vitest](https://vitest.dev/) + +```sh +npm run test:unit +``` + +### Run End-to-End Tests with [Playwright](https://playwright.dev) + +```sh +# Install browsers for the first run +npx playwright install + +# When testing on CI, must build the project first +npm run build + +# Runs the end-to-end tests +npm run test:e2e +# Runs the tests only on Chromium +npm run test:e2e -- --project=chromium +# Runs the tests of a specific file +npm run test:e2e -- tests/example.spec.ts +# Runs the tests in debug mode +npm run test:e2e -- --debug +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh npm run lint ``` - - -### Format the files -```bash -yarn format -# or -npm run format -``` - - -### Build the app for production -```bash -quasar build -``` - -### Customize the configuration -See [Configuring quasar.config.js](https://v2.quasar.dev/quasar-cli-vite/quasar-config-js). diff --git a/fe/dev-dist/registerSW.js b/fe/dev-dist/registerSW.js new file mode 100644 index 0000000..fdeaac1 --- /dev/null +++ b/fe/dev-dist/registerSW.js @@ -0,0 +1 @@ +if('serviceWorker' in navigator) navigator.serviceWorker.register('/dev-sw.js?dev-sw', { scope: '/', type: 'module' }) \ No newline at end of file diff --git a/fe/e2e/tsconfig.json b/fe/e2e/tsconfig.json new file mode 100644 index 0000000..f31fe71 --- /dev/null +++ b/fe/e2e/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@tsconfig/node22/tsconfig.json", + "include": ["./**/*"] +} diff --git a/fe/e2e/vue.spec.ts b/fe/e2e/vue.spec.ts new file mode 100644 index 0000000..fc116a9 --- /dev/null +++ b/fe/e2e/vue.spec.ts @@ -0,0 +1,8 @@ +import { test, expect } from '@playwright/test'; + +// See here how to get started: +// https://playwright.dev/docs/intro +test('visits the app root url', async ({ page }) => { + await page.goto('/'); + await expect(page.locator('h1')).toHaveText('You did it!'); +}) diff --git a/fe/env.d.ts b/fe/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/fe/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/fe/eslint.config.js b/fe/eslint.config.js deleted file mode 100644 index 20e7947..0000000 --- a/fe/eslint.config.js +++ /dev/null @@ -1,86 +0,0 @@ -import js from '@eslint/js' -import globals from 'globals' -import pluginVue from 'eslint-plugin-vue' -import pluginQuasar from '@quasar/app-vite/eslint' -import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript' -import prettierSkipFormatting from '@vue/eslint-config-prettier/skip-formatting' - -export default defineConfigWithVueTs( - { - /** - * Ignore the following files. - * Please note that pluginQuasar.configs.recommended() already ignores - * the "node_modules" folder for you (and all other Quasar project - * relevant folders and files). - * - * ESLint requires "ignores" key to be the only one in this object - */ - // ignores: [] - }, - - pluginQuasar.configs.recommended(), - js.configs.recommended, - - /** - * https://eslint.vuejs.org - * - * pluginVue.configs.base - * -> Settings and rules to enable correct ESLint parsing. - * pluginVue.configs[ 'flat/essential'] - * -> base, plus rules to prevent errors or unintended behavior. - * pluginVue.configs["flat/strongly-recommended"] - * -> Above, plus rules to considerably improve code readability and/or dev experience. - * pluginVue.configs["flat/recommended"] - * -> Above, plus rules to enforce subjective community defaults to ensure consistency. - */ - pluginVue.configs[ 'flat/essential' ], - - { - files: ['**/*.ts', '**/*.vue'], - rules: { - '@typescript-eslint/consistent-type-imports': [ - 'error', - { prefer: 'type-imports' } - ], - } - }, - // https://github.com/vuejs/eslint-config-typescript - vueTsConfigs.recommendedTypeChecked, - - { - languageOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - - globals: { - ...globals.browser, - ...globals.node, // SSR, Electron, config files - process: 'readonly', // process.env.* - ga: 'readonly', // Google Analytics - cordova: 'readonly', - Capacitor: 'readonly', - chrome: 'readonly', // BEX related - browser: 'readonly' // BEX related - } - }, - - // add your custom rules here - rules: { - 'prefer-promise-reject-errors': 'off', - - // allow debugger during development only - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' - } - }, - - { - files: [ 'src-pwa/custom-service-worker.ts' ], - languageOptions: { - globals: { - ...globals.serviceworker - } - } - }, - - prettierSkipFormatting -) diff --git a/fe/eslint.config.ts b/fe/eslint.config.ts new file mode 100644 index 0000000..4ddee90 --- /dev/null +++ b/fe/eslint.config.ts @@ -0,0 +1,36 @@ +import { globalIgnores } from 'eslint/config' +import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript' +import pluginVue from 'eslint-plugin-vue' +import pluginVitest from '@vitest/eslint-plugin' +import pluginPlaywright from 'eslint-plugin-playwright' +import pluginOxlint from 'eslint-plugin-oxlint' +import skipFormatting from '@vue/eslint-config-prettier/skip-formatting' + +// To allow more languages other than `ts` in `.vue` files, uncomment the following lines: +// import { configureVueProject } from '@vue/eslint-config-typescript' +// configureVueProject({ scriptLangs: ['ts', 'tsx'] }) +// More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup + +export default defineConfigWithVueTs( + { + name: 'app/files-to-lint', + files: ['**/*.{ts,mts,tsx,vue}'], + }, + + globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']), + + pluginVue.configs['flat/essential'], + vueTsConfigs.recommended, + + { + ...pluginVitest.configs.recommended, + files: ['src/**/__tests__/*'], + }, + + { + ...pluginPlaywright.configs['flat/recommended'], + files: ['e2e/**/*.{test,spec}.{js,ts,jsx,tsx}'], + }, + ...pluginOxlint.configs['flat/recommended'], + skipFormatting, +) diff --git a/fe/index.html b/fe/index.html index 3c8c78f..82fe2c8 100644 --- a/fe/index.html +++ b/fe/index.html @@ -1,21 +1,32 @@ - + - <%= productName %> - - - + + + + - - - - - - - + + mitlist - + + + + + + + + + + + + + + + +
+ - + \ No newline at end of file diff --git a/fe/package-lock.json b/fe/package-lock.json index 274237f..230d70b 100644 --- a/fe/package-lock.json +++ b/fe/package-lock.json @@ -1,50 +1,54 @@ { - "name": "mitlist", - "version": "0.0.1", + "name": "fe", + "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "mitlist", - "version": "0.0.1", - "hasInstallScript": true, + "name": "fe", + "version": "0.0.0", "dependencies": { - "@quasar/extras": "^1.16.4", - "axios": "^1.2.1", - "pinia": "^3.0.1", - "quasar": "^2.16.0", - "register-service-worker": "^1.7.2", - "vue": "^3.4.18", - "vue-i18n": "^11.0.0", - "vue-router": "^4.0.12" + "@vueuse/core": "^13.1.0", + "axios": "^1.9.0", + "pinia": "^3.0.2", + "vue": "^3.5.13", + "vue-i18n": "^12.0.0-alpha.2", + "vue-router": "^4.5.1" }, "devDependencies": { - "@eslint/js": "^9.14.0", - "@intlify/unplugin-vue-i18n": "^4.0.0", - "@quasar/app-vite": "^2.1.0", - "@types/node": "^20.5.9", - "@vue/eslint-config-prettier": "^10.1.0", - "@vue/eslint-config-typescript": "^14.4.0", - "autoprefixer": "^10.4.2", - "eslint": "^9.14.0", - "eslint-plugin-vue": "^9.30.0", - "globals": "^15.12.0", - "prettier": "^3.3.3", - "typescript": "~5.5.3", - "vite-plugin-checker": "^0.9.0", - "vue-tsc": "^2.0.29", - "workbox-build": "^7.3.0", + "@intlify/unplugin-vue-i18n": "^6.0.8", + "@playwright/test": "^1.51.1", + "@tsconfig/node22": "^22.0.1", + "@types/jsdom": "^21.1.7", + "@types/node": "^22.15.17", + "@vitejs/plugin-vue": "^5.2.3", + "@vitest/eslint-plugin": "^1.1.39", + "@vue/eslint-config-prettier": "^10.2.0", + "@vue/eslint-config-typescript": "^14.5.0", + "@vue/test-utils": "^2.4.6", + "@vue/tsconfig": "^0.7.0", + "eslint": "^9.26.0", + "eslint-plugin-oxlint": "^0.16.0", + "eslint-plugin-playwright": "^2.2.0", + "eslint-plugin-vue": "~10.0.0", + "jiti": "^2.4.2", + "jsdom": "^26.0.0", + "npm-run-all2": "^7.0.2", + "oxlint": "^0.16.0", + "prettier": "^3.5.3", + "sass": "^1.88.0", + "typescript": "~5.8.0", + "vite": "^6.2.4", + "vite-plugin-pwa": "^1.0.0", + "vite-plugin-vue-devtools": "^7.7.2", + "vitest": "^3.1.1", + "vue-tsc": "^2.2.8", "workbox-cacheable-response": "^7.3.0", "workbox-core": "^7.3.0", "workbox-expiration": "^7.3.0", "workbox-precaching": "^7.3.0", "workbox-routing": "^7.3.0", "workbox-strategies": "^7.3.0" - }, - "engines": { - "node": "^28 || ^26 || ^24 || ^22 || ^20 || ^18", - "npm": ">= 6.13.4", - "yarn": ">= 1.21.1" } }, "node_modules/@ampproject/remapping": { @@ -61,6 +65,30 @@ "node": ">=6.0.0" } }, + "node_modules/@antfu/utils": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.7.tgz", + "integrity": "sha512-Ok5fYhtwdyJQmU1PpEv6Si7Y+A4cYb8yNM9oiIJC9TzXPMuN9fvdonKJqcnz9TbFqV6bQ8z0giRq0iaOpGZV2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -546,6 +574,24 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.27.1.tgz", + "integrity": "sha512-DTxe4LBPrtFdsWzgpmbBKevg3e9PBy+dXRt19kSbucbZvL2uqtdqwwpluL1jfxYE0wIDTFp1nTy/q6gNLsxXrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-decorators": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", @@ -559,6 +605,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", + "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", @@ -591,6 +653,51 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", @@ -1388,6 +1495,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", + "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", @@ -1631,12 +1758,120 @@ "node": ">=6.9.0" } }, - "node_modules/@bufbuild/protobuf": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.3.0.tgz", - "integrity": "sha512-WK6zH4MtBp/uesX8KGCnwDDRVnEVHUvwjsigKXcSR57Oo8Oyv1vRS9qyUlSP+6KWRl5z8tNAU5qpf3QodeVYxA==", + "node_modules/@csstools/color-helpers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", "dev": true, - "license": "(Apache-2.0 AND BSD-3-Clause)" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.3.tgz", + "integrity": "sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.9.tgz", + "integrity": "sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.4", @@ -2189,19 +2424,6 @@ "concat-map": "0.0.1" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2315,25 +2537,15 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@inquirer/figures": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.11.tgz", - "integrity": "sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/@intlify/bundle-utils": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-8.0.0.tgz", - "integrity": "sha512-1B++zykRnMwQ+20SpsZI1JCnV/YJt9Oq7AGlEurzkWJOFtFAVqaGc/oV36PBRYeiKnTbY9VYfjBimr2Vt42wLQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-10.0.1.tgz", + "integrity": "sha512-WkaXfSevtpgtUR4t8K2M6lbR7g03mtOxFeh+vXp5KExvPqS12ppaRj1QxzwRuRI5VUto54A22BjKoBMLyHILWQ==", "dev": true, "license": "MIT", "dependencies": { - "@intlify/message-compiler": "^9.4.0", - "@intlify/shared": "^9.4.0", + "@intlify/message-compiler": "^11.1.2", + "@intlify/shared": "^11.1.2", "acorn": "^8.8.2", "escodegen": "^2.1.0", "estree-walker": "^2.0.2", @@ -2343,7 +2555,7 @@ "yaml-eslint-parser": "^1.2.2" }, "engines": { - "node": ">= 14.16" + "node": ">= 18" }, "peerDependenciesMeta": { "petite-vue-i18n": { @@ -2354,26 +2566,11 @@ } } }, - "node_modules/@intlify/core-base": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.1.3.tgz", - "integrity": "sha512-cMuHunYO7LE80azTitcvEbs1KJmtd6g7I5pxlApV3Jo547zdO3h31/0uXpqHc+Y3RKt1wo2y68RGSx77Z1klyA==", - "license": "MIT", - "dependencies": { - "@intlify/message-compiler": "11.1.3", - "@intlify/shared": "11.1.3" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/core-base/node_modules/@intlify/message-compiler": { + "node_modules/@intlify/bundle-utils/node_modules/@intlify/message-compiler": { "version": "11.1.3", "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.1.3.tgz", "integrity": "sha512-7rbqqpo2f5+tIcwZTAG/Ooy9C8NDVwfDkvSeDPWUPQW+Dyzfw2o9H103N5lKBxO7wxX9dgCDjQ8Umz73uYw3hw==", + "dev": true, "license": "MIT", "dependencies": { "@intlify/shared": "11.1.3", @@ -2386,10 +2583,11 @@ "url": "https://github.com/sponsors/kazupon" } }, - "node_modules/@intlify/core-base/node_modules/@intlify/shared": { + "node_modules/@intlify/bundle-utils/node_modules/@intlify/shared": { "version": "11.1.3", "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.1.3.tgz", "integrity": "sha512-pTFBgqa/99JRA2H1qfyqv97MKWJrYngXBA/I0elZcYxvJgcCw3mApAoPW3mJ7vx3j+Ti0FyKUFZ4hWxdjKaxvA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 16" @@ -2398,14 +2596,29 @@ "url": "https://github.com/sponsors/kazupon" } }, - "node_modules/@intlify/message-compiler": { - "version": "9.14.4", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.4.tgz", - "integrity": "sha512-vcyCLiVRN628U38c3PbahrhbbXrckrM9zpy0KZVlDk2Z0OnGwv8uQNNXP3twwGtfLsCf4gu3ci6FMIZnPaqZsw==", - "dev": true, + "node_modules/@intlify/core-base": { + "version": "12.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-12.0.0-alpha.2.tgz", + "integrity": "sha512-sPWvQ1Z4Wyw9Kp8xqjAk2sMOeZ4pO7p/NL3Eol8l9a7iPyMTuHyJ2DZVbOBG6zDnCupvLAqnRMAT1LAgvx0QRQ==", "license": "MIT", "dependencies": { - "@intlify/shared": "9.14.4", + "@intlify/message-compiler": "12.0.0-alpha.2", + "@intlify/shared": "12.0.0-alpha.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "12.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-12.0.0-alpha.2.tgz", + "integrity": "sha512-PD9C+oQbb7BF52hec0+vLnScaFkvnfX+R7zSbODYuRo/E2niAtGmHd0wPvEMsDhf9Z9b8f/qyDsVeZnD/ya9Ug==", + "license": "MIT", + "dependencies": { + "@intlify/shared": "12.0.0-alpha.2", "source-map-js": "^1.0.2" }, "engines": { @@ -2416,10 +2629,9 @@ } }, "node_modules/@intlify/shared": { - "version": "9.14.4", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.4.tgz", - "integrity": "sha512-P9zv6i1WvMc9qDBWvIgKkymjY2ptIiQ065PjDv7z7fDqH3J/HBRBN5IoiR46r/ujRcU7hCuSIZWvCAFCyuOYZA==", - "dev": true, + "version": "12.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-12.0.0-alpha.2.tgz", + "integrity": "sha512-P2DULVX9nz3y8zKNqLw9Es1aAgQ1JGC+kgpx5q7yLmrnAKkPR5MybQWoEhxanefNJgUY5ehsgo+GKif59SrncA==", "license": "MIT", "engines": { "node": ">= 16" @@ -2429,16 +2641,19 @@ } }, "node_modules/@intlify/unplugin-vue-i18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-4.0.0.tgz", - "integrity": "sha512-q2Mhqa/mLi0tulfLFO4fMXXvEbkSZpI5yGhNNsLTNJJ41icEGUuyDe+j5zRZIKSkOJRgX6YbCyibTDJdRsukmw==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-6.0.8.tgz", + "integrity": "sha512-Vvm3KhjE6TIBVUQAk37rBiaYy2M5OcWH0ZcI1XKEsOTeN1o0bErk+zeuXmcrcMc/73YggfI8RoxOUz9EB/69JQ==", "dev": true, "license": "MIT", "dependencies": { - "@intlify/bundle-utils": "^8.0.0", - "@intlify/shared": "^9.4.0", + "@eslint-community/eslint-utils": "^4.4.0", + "@intlify/bundle-utils": "^10.0.1", + "@intlify/shared": "^11.1.2", + "@intlify/vue-i18n-extensions": "^8.0.0", "@rollup/pluginutils": "^5.1.0", - "@vue/compiler-sfc": "^3.2.47", + "@typescript-eslint/scope-manager": "^8.13.0", + "@typescript-eslint/typescript-estree": "^8.13.0", "debug": "^4.3.3", "fast-glob": "^3.2.12", "js-yaml": "^4.1.0", @@ -2446,15 +2661,16 @@ "pathe": "^1.0.0", "picocolors": "^1.0.0", "source-map-js": "^1.0.2", - "unplugin": "^1.1.0" + "unplugin": "^1.1.0", + "vue": "^3.4" }, "engines": { - "node": ">= 14.16" + "node": ">= 18" }, "peerDependencies": { "petite-vue-i18n": "*", - "vue-i18n": "*", - "vue-i18n-bridge": "*" + "vue": "^3.2.25", + "vue-i18n": "*" }, "peerDependenciesMeta": { "petite-vue-i18n": { @@ -2462,12 +2678,163 @@ }, "vue-i18n": { "optional": true + } + } + }, + "node_modules/@intlify/unplugin-vue-i18n/node_modules/@intlify/shared": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.1.3.tgz", + "integrity": "sha512-pTFBgqa/99JRA2H1qfyqv97MKWJrYngXBA/I0elZcYxvJgcCw3mApAoPW3mJ7vx3j+Ti0FyKUFZ4hWxdjKaxvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/unplugin-vue-i18n/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@intlify/vue-i18n-core": { + "version": "12.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@intlify/vue-i18n-core/-/vue-i18n-core-12.0.0-alpha.2.tgz", + "integrity": "sha512-y1NPEcPbD8xqWGiaEREkA9WxxWbxmd8IurN176w39MenZKEf5P20rYyk0w4r718+w/9jjm0m5zR1ed6uMaZT2Q==", + "license": "MIT", + "dependencies": { + "@intlify/core-base": "12.0.0-alpha.2", + "@intlify/shared": "12.0.0-alpha.2", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@intlify/vue-i18n-core/node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@intlify/vue-i18n-extensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@intlify/vue-i18n-extensions/-/vue-i18n-extensions-8.0.0.tgz", + "integrity": "sha512-w0+70CvTmuqbskWfzeYhn0IXxllr6mU+IeM2MU0M+j9OW64jkrvqY+pYFWrUnIIC9bEdij3NICruicwd5EgUuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.24.6", + "@intlify/shared": "^10.0.0", + "@vue/compiler-dom": "^3.2.45", + "vue-i18n": "^10.0.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@intlify/shared": "^9.0.0 || ^10.0.0 || ^11.0.0", + "@vue/compiler-dom": "^3.0.0", + "vue": "^3.0.0", + "vue-i18n": "^9.0.0 || ^10.0.0 || ^11.0.0" + }, + "peerDependenciesMeta": { + "@intlify/shared": { + "optional": true }, - "vue-i18n-bridge": { + "@vue/compiler-dom": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-i18n": { "optional": true } } }, + "node_modules/@intlify/vue-i18n-extensions/node_modules/@intlify/core-base": { + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-10.0.7.tgz", + "integrity": "sha512-mE71aUH5baH0me8duB4FY5qevUJizypHsYw3eCvmOx07QvmKppgOONx3dYINxuA89Z2qkAGb/K6Nrpi7aAMwew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "10.0.7", + "@intlify/shared": "10.0.7" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/vue-i18n-extensions/node_modules/@intlify/message-compiler": { + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-10.0.7.tgz", + "integrity": "sha512-nrC4cDL/UHZSUqd8sRbVz+DPukzZ8NnG5OK+EB/nlxsH35deyzyVkXP/QuR8mFZrISJ+4hCd6VtCQCcT+RO+5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/shared": "10.0.7", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/vue-i18n-extensions/node_modules/@intlify/shared": { + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-10.0.7.tgz", + "integrity": "sha512-oeoq0L5+5P4ShXa6jBQcx+BT+USe3MjX0xJexZO1y7rfDJdwZ9+QP3jO4tcS1nxhBYYdjvFTqe4bmnLijV0GxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/vue-i18n-extensions/node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@intlify/vue-i18n-extensions/node_modules/vue-i18n": { + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-10.0.7.tgz", + "integrity": "sha512-bKsk0PYwP9gdYF4nqSAT0kDpnLu1gZzlxFl885VH4mHVhEnqP16+/mAU05r1U6NIrc0fGDWP89tZ8GzeJZpe+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/core-base": "10.0.7", + "@intlify/shared": "10.0.7", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2486,91 +2853,6 @@ "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", @@ -2635,9 +2917,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz", - "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.2.tgz", + "integrity": "sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2656,264 +2938,6 @@ "node": ">=18" } }, - "node_modules/@modelcontextprotocol/sdk/node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2952,6 +2976,435 @@ "node": ">= 8" } }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@oxlint/darwin-arm64": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@oxlint/darwin-arm64/-/darwin-arm64-0.16.10.tgz", + "integrity": "sha512-lNnkf7/auNXXD7gU3IbWMyuYiKj4Va+hhoe6+NwGfAjpKm5L4Uvc93o7tay163WVzQePVUOz/IwsJPLQs3hcjQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxlint/darwin-x64": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@oxlint/darwin-x64/-/darwin-x64-0.16.10.tgz", + "integrity": "sha512-axqbGX//v+AF/73OZUfUGG5pZidnZf9T+wc+1Jf19O0DViPpcmbVH7l0aLImFQuRn6Nl9LAbfBbKAgO1BS+OSg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxlint/linux-arm64-gnu": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@oxlint/linux-arm64-gnu/-/linux-arm64-gnu-0.16.10.tgz", + "integrity": "sha512-CoFYLjmttdBRw6k3waRuSoW+36ojY8WspOkr5KzNM6GytrKKIRSLUNkaLLSSnXQK6MN13jemJa32U1DRn8/V1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/linux-arm64-musl": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@oxlint/linux-arm64-musl/-/linux-arm64-musl-0.16.10.tgz", + "integrity": "sha512-jidO59qo6RZ1HRk7a27noIgUeJmzju13NcKm7+5zZObPPGuXXO1OT3ZYabyO4Zz3eU+wqMTgjM4yphbJerkxPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/linux-x64-gnu": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@oxlint/linux-x64-gnu/-/linux-x64-gnu-0.16.10.tgz", + "integrity": "sha512-RWbkaDIX4fD+OaE+XfNG8nOxh+qLA90KhuejlTFbAApn7lZtyhr/UTIPuJsjmzMUW145C0NJTugOB6Q6XtKGNA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/linux-x64-musl": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@oxlint/linux-x64-musl/-/linux-x64-musl-0.16.10.tgz", + "integrity": "sha512-V7oXFLCowIEOnYBph4J2KSiHYtBIrx00xmwzKzSvwMzVOxDkw1LmPUYLCz/AEU6MctE6S2ZR947IXJY7ch4HeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/win32-arm64": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@oxlint/win32-arm64/-/win32-arm64-0.16.10.tgz", + "integrity": "sha512-QrWe71tjRKSDLejklPoU7gySq16nrJMOrqcSaw+ERQtJpnJBruF0RWQEVFEev6TvzwRnxrdTqDucYcFmoFqGeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxlint/win32-x64": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@oxlint/win32-x64/-/win32-x64-0.16.10.tgz", + "integrity": "sha512-V5LHfgB5uiiKNpOFOAfygsL36pN6qSuQ0moiuEyZFfWL2Iyx5026ksefiD9nXcygQsLYU7f6xQbOINAY3uIvcw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "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.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "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.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "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.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "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.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "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-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "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.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "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/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -2976,159 +3429,29 @@ "url": "https://opencollective.com/pkgr" } }, - "node_modules/@quasar/app-vite": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-2.2.0.tgz", - "integrity": "sha512-MvCfJrCbxUYvoGaK5jPq0h0hjO8mbxYOWngf+dIKrxhwb+1h5ERh6aVYEUuCtMIwTMEVfPkCez4DIfZIoReuDw==", + "node_modules/@playwright/test": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz", + "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@quasar/render-ssr-error": "^1.0.3", - "@quasar/ssl-certificate": "^1.0.0", - "@quasar/vite-plugin": "^1.9.0", - "@types/chrome": "^0.0.262", - "@types/compression": "^1.7.5", - "@types/cordova": "^11.0.3", - "@types/express": "^4.17.21", - "@vitejs/plugin-vue": "^5.1.4", - "archiver": "^7.0.1", - "chokidar": "^3.6.0", - "ci-info": "^4.0.0", - "compression": "^1.7.5", - "confbox": "^0.1.8", - "cross-spawn": "^7.0.6", - "dot-prop": "9.0.0", - "dotenv": "^16.4.5", - "dotenv-expand": "^11.0.6", - "elementtree": "0.1.7", - "esbuild": "^0.25.0", - "express": "^4.21.2", - "fs-extra": "^11.2.0", - "html-minifier-terser": "^7.2.0", - "inquirer": "^9.3.7", - "isbinaryfile": "^5.0.4", - "kolorist": "^1.8.0", - "lodash": "^4.17.21", - "minimist": "^1.2.8", - "mlly": "^1.7.4", - "open": "^10.1.0", - "rollup-plugin-visualizer": "^5.13.1", - "sass-embedded": "^1.83.0", - "semver": "^7.6.3", - "serialize-javascript": "^6.0.2", - "tinyglobby": "^0.2.10", - "ts-essentials": "^9.4.2", - "vite": "^6.1.0", - "webpack-merge": "^6.0.1" + "playwright": "1.52.0" }, "bin": { - "quasar": "bin/quasar.js" + "playwright": "cli.js" }, - "engines": { - "node": "^30 || ^28 || ^26 || ^24 || ^22 || ^20 || ^18", - "npm": ">= 6.14.12", - "yarn": ">= 1.17.3" - }, - "funding": { - "type": "github", - "url": "https://donate.quasar.dev" - }, - "peerDependencies": { - "@electron/packager": ">= 18", - "electron-builder": ">= 22", - "pinia": "^2.0.0 || ^3.0.0", - "quasar": "^2.16.0", - "typescript": ">= 5.4", - "vue": "^3.2.29", - "vue-router": "^4.0.12", - "workbox-build": ">= 6" - }, - "peerDependenciesMeta": { - "@electron/packager": { - "optional": true - }, - "electron-builder": { - "optional": true - }, - "eslint": { - "optional": true - }, - "pinia": { - "optional": true - }, - "typescript": { - "optional": true - }, - "workbox-build": { - "optional": true - } - } - }, - "node_modules/@quasar/extras": { - "version": "1.16.17", - "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.16.17.tgz", - "integrity": "sha512-4aX9XU/oj1+8O2C7LQCgywmoIw7suyUEZMPFFLWI61f21mF55VOsMdLCBhjeFgL5U4EWy079mfOR6/J8thi/ag==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://donate.quasar.dev" - } - }, - "node_modules/@quasar/render-ssr-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@quasar/render-ssr-error/-/render-ssr-error-1.0.3.tgz", - "integrity": "sha512-A8RF99q6/sOSe1Ighnh5syEIbliD3qUYEJd2HyfFyBPSMF+WYGXon5dmzg4nUoK662NgOggInevkDyBDJcZugg==", - "dev": true, - "license": "MIT", - "dependencies": { - "stack-trace": "^1.0.0-pre2" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "type": "github", - "url": "https://donate.quasar.dev" - } - }, - "node_modules/@quasar/ssl-certificate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@quasar/ssl-certificate/-/ssl-certificate-1.0.0.tgz", - "integrity": "sha512-RhZF7rO76T7Ywer1/5lCe7xl3CIiXxSAH1xgwOj0wcHTityDxJqIN/5YIj6BxMvlFw8XkJDoB1udEQafoVFA4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fs-extra": "^11.1.1", - "selfsigned": "^2.1.1" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "type": "github", - "url": "https://donate.quasar.dev" - } - }, - "node_modules/@quasar/vite-plugin": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@quasar/vite-plugin/-/vite-plugin-1.9.0.tgz", - "integrity": "sha512-r1MFtI2QZJ2g20pe75Zuv4aoi0uoK8oP0yEdzLWRoOLCbhtf2+StJpUza9TydYi3KcvCl9+4HUf3OAWVKoxDmQ==", - "dev": true, - "license": "MIT", "engines": { "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://donate.quasar.dev" - }, - "peerDependencies": { - "@vitejs/plugin-vue": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", - "quasar": "^2.16.0", - "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", - "vue": "^3.0.0" } }, + "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/@rollup/plugin-node-resolve": { "version": "15.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", @@ -3200,6 +3523,19 @@ } } }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.40.2", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz", @@ -3480,6 +3816,26 @@ "win32" ] }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -3503,52 +3859,10 @@ "sourcemap-codec": "^1.4.8" } }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/chrome": { - "version": "0.0.262", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.262.tgz", - "integrity": "sha512-TOoj3dqSYE13PD2fRuMQ6X6pggEvL9rRk/yOYOyWE6sfqRWxsJm4VoVm+wr9pkr4Sht/M5t7FFL4vXato8d1gA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/filesystem": "*", - "@types/har-format": "*" - } - }, - "node_modules/@types/compression": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.5.tgz", - "integrity": "sha512-AAQvK5pxMpaT+nDvhHrsBhLSYG5yQdtkaJE1WYieSNY2mVFKAgmU4ks65rkZD5oqnGCFLyQpUr1CqI4DmUMyDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cordova": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-11.0.3.tgz", - "integrity": "sha512-kyuRQ40/NWQVhqGIHq78Ehu2Bf9Mlg0LhmSmis6ZFJK7z933FRfYi8tHe/k/0fB+PGfCf95rJC6TO7dopaFvAg==", + "node_modules/@tsconfig/node22": { + "version": "22.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node22/-/node22-22.0.1.tgz", + "integrity": "sha512-VkgOa3n6jvs1p+r3DiwBqeEwGAwEvnVCg/hIjiANl5IEcqP3G0u5m8cBJspe1t9qjZRlZ7WFgqq5bJrGdgAKMg==", "dev": true, "license": "MIT" }, @@ -3559,63 +3873,18 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "node_modules/@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "@types/tough-cookie": "*", + "parse5": "^7.0.0" } }, - "node_modules/@types/filesystem": { - "version": "0.0.36", - "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.36.tgz", - "integrity": "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/filewriter": "*" - } - }, - "node_modules/@types/filewriter": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.33.tgz", - "integrity": "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/har-format": { - "version": "1.2.16", - "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.16.tgz", - "integrity": "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -3623,47 +3892,16 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/node": { - "version": "20.17.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.45.tgz", - "integrity": "sha512-vO9+E1smq+149wsmmLdM8SKVW7gRzLjfo0mU7kiykhV6rL+GEUhUmW7VywJNSxJHQzt9QBIHEo+3SG4MrFTqbA==", + "version": "22.15.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", + "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.21.0" } }, - "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/qs": { - "version": "6.9.18", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", - "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", @@ -3671,28 +3909,12 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } + "license": "MIT" }, "node_modules/@types/trusted-types": { "version": "2.0.7", @@ -3701,20 +3923,26 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.0.tgz", - "integrity": "sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", + "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.32.0", - "@typescript-eslint/type-utils": "8.32.0", - "@typescript-eslint/utils": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/type-utils": "8.32.1", + "@typescript-eslint/utils": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, @@ -3731,17 +3959,27 @@ "typescript": ">=4.8.4 <5.9.0" } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", + "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@typescript-eslint/parser": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.0.tgz", - "integrity": "sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz", + "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.32.0", - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/typescript-estree": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", "debug": "^4.3.4" }, "engines": { @@ -3757,14 +3995,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz", - "integrity": "sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz", + "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0" + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3775,14 +4013,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.0.tgz", - "integrity": "sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz", + "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.32.0", - "@typescript-eslint/utils": "8.32.0", + "@typescript-eslint/typescript-estree": "8.32.1", + "@typescript-eslint/utils": "8.32.1", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -3799,9 +4037,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz", - "integrity": "sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz", + "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==", "dev": true, "license": "MIT", "engines": { @@ -3813,14 +4051,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz", - "integrity": "sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz", + "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -3840,16 +4078,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.0.tgz", - "integrity": "sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz", + "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.32.0", - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/typescript-estree": "8.32.0" + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3864,13 +4102,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz", - "integrity": "sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz", + "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/types": "8.32.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -3895,9 +4133,9 @@ } }, "node_modules/@vitejs/plugin-vue": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", - "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", "dev": true, "license": "MIT", "engines": { @@ -3908,6 +4146,150 @@ "vue": "^3.2.25" } }, + "node_modules/@vitest/eslint-plugin": { + "version": "1.1.44", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.1.44.tgz", + "integrity": "sha512-m4XeohMT+Dj2RZfxnbiFR+Cv5dEC0H7C6TlxRQT7GK2556solm99kxgzJp/trKrZvanZcOFyw7aABykUTfWyrg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@typescript-eslint/utils": ">= 8.24.0", + "eslint": ">= 8.57.0", + "typescript": ">= 5.0.0", + "vitest": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.3.tgz", + "integrity": "sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.3", + "@vitest/utils": "3.1.3", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.3.tgz", + "integrity": "sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.3", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/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/@vitest/pretty-format": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.3.tgz", + "integrity": "sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.3.tgz", + "integrity": "sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.1.3", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.3.tgz", + "integrity": "sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.3", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.3.tgz", + "integrity": "sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.3.tgz", + "integrity": "sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.3", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/@volar/language-core": { "version": "2.4.13", "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.13.tgz", @@ -3937,6 +4319,59 @@ "vscode-uri": "^3.0.8" } }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.4.0.tgz", + "integrity": "sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.4.0.tgz", + "integrity": "sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", + "@vue/babel-helper-vue-transform-on": "1.4.0", + "@vue/babel-plugin-resolve-type": "1.4.0", + "@vue/shared": "^3.5.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.4.0.tgz", + "integrity": "sha512-4xqDRRbQQEWHQyjlYSgZsWj44KfiF6D+ktCuXyZ8EnVDYV3pztmXJDf1HveAjUAXxAnR8daCQT51RneWWxtTyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/parser": "^7.26.9", + "@vue/compiler-sfc": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@vue/compiler-core": { "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", @@ -3950,6 +4385,18 @@ "source-map-js": "^1.2.0" } }, + "node_modules/@vue/compiler-core/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/@vue/compiler-dom": { "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", @@ -4007,6 +4454,43 @@ "@vue/devtools-kit": "^7.7.6" } }, + "node_modules/@vue/devtools-core": { + "version": "7.7.6", + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.7.6.tgz", + "integrity": "sha512-ghVX3zjKPtSHu94Xs03giRIeIWlb9M+gvDRVpIZ/cRIxKHdW6HE/sm1PT3rUYS3aV92CazirT93ne+7IOvGUWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.6", + "@vue/devtools-shared": "^7.7.6", + "mitt": "^3.0.1", + "nanoid": "^5.1.0", + "pathe": "^2.0.3", + "vite-hot-client": "^2.0.4" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-core/node_modules/nanoid": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz", + "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, "node_modules/@vue/devtools-kit": { "version": "7.7.6", "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.6.tgz", @@ -4147,43 +4631,98 @@ "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", "license": "MIT" }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/@vue/test-utils": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.6.tgz", + "integrity": "sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==", "dev": true, "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "js-beautify": "^1.14.9", + "vue-component-type-helpers": "^2.0.0" + } + }, + "node_modules/@vue/tsconfig": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.7.0.tgz", + "integrity": "sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "typescript": "5.x", + "vue": "^3.4.0" }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/@vueuse/core": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-13.1.0.tgz", + "integrity": "sha512-PAauvdRXZvTWXtGLg8cPUFjiZEddTqmogdwYpnn60t08AA5a8Q4hZokBnpTOnVNqySlFlTcRYIC8OqreV4hv3Q==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "13.1.0", + "@vueuse/shared": "13.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/metadata": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.1.0.tgz", + "integrity": "sha512-+TDd7/a78jale5YbHX9KHW3cEDav1lz1JptwDvep2zSG8XjCsVE+9mHIzjTOaPbHUAk5XiE4jXLz51/tS+aKQw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-13.1.0.tgz", + "integrity": "sha512-IVS/qRRjhPTZ6C2/AM3jieqXACGwFZwWTdw5sNTSKk2m/ZpkuuN+ri+WCVUP8TqaKwJYt/KuMwmXspMAw8E6ew==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=6.5" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "engines": { "node": ">= 0.6" } }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", @@ -4207,6 +4746,16 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -4231,43 +4780,17 @@ "dev": true, "license": "MIT" }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "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==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { @@ -4286,71 +4809,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/archiver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", - "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "archiver-utils": "^5.0.2", - "async": "^3.2.4", - "buffer-crc32": "^1.0.0", - "readable-stream": "^4.0.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^3.0.0", - "zip-stream": "^6.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/archiver-utils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", - "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "^10.0.0", - "graceful-fs": "^4.2.0", - "is-stream": "^2.0.1", - "lazystream": "^1.0.0", - "lodash": "^4.17.15", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -4375,13 +4833,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", @@ -4404,6 +4855,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -4437,44 +4898,6 @@ "node": ">= 4.0.0" } }, - "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -4502,13 +4925,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.13", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", @@ -4568,48 +4984,6 @@ "dev": true, "license": "MIT" }, - "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", - "dev": true, - "license": "Apache-2.0", - "optional": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/birpc": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz", @@ -4619,89 +4993,25 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" + "node": ">=18" } }, "node_modules/boolbase": { @@ -4767,48 +5077,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-builder": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", - "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", - "dev": true, - "license": "MIT/X11" - }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -4842,6 +5110,16 @@ "node": ">= 0.8" } }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -4901,21 +5179,10 @@ "node": ">=6" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "node_modules/caniuse-lite": { - "version": "1.0.30001717", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz", - "integrity": "sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==", + "version": "1.0.30001718", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", + "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", "dev": true, "funding": [ { @@ -4933,6 +5200,23 @@ ], "license": "CC-BY-4.0" }, + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4950,159 +5234,30 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 16" + } }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/ci-info": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", - "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/clean-css": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", - "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" } }, "node_modules/color-convert": { @@ -5125,13 +5280,6 @@ "dev": true, "license": "MIT" }, - "node_modules/colorjs.io": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", - "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", - "dev": true, - "license": "MIT" - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -5164,72 +5312,6 @@ "node": ">=4.0.0" } }, - "node_modules/compress-commons": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", - "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "crc32-stream": "^6.0.0", - "is-stream": "^2.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", - "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.0.2", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5244,10 +5326,21 @@ "dev": true, "license": "MIT" }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", "dev": true, "license": "MIT", "dependencies": { @@ -5275,9 +5368,9 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", "engines": { @@ -5285,11 +5378,14 @@ } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } }, "node_modules/copy-anything": { "version": "3.0.5", @@ -5320,13 +5416,6 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT" - }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -5341,33 +5430,6 @@ "node": ">= 0.10" } }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", - "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", - "dev": true, - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -5406,12 +5468,40 @@ "node": ">=4" } }, + "node_modules/cssstyle": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.1.tgz", + "integrity": "sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^3.1.2", + "rrweb-cssom": "^0.8.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -5491,6 +5581,23 @@ } } }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5538,19 +5645,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -5619,71 +5713,18 @@ "node": ">= 0.8" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dot-prop": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz", - "integrity": "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^4.18.2" + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dotenv": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", - "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" + "node": ">=0.10" } }, "node_modules/dunder-proto": { @@ -5707,6 +5748,41 @@ "dev": true, "license": "MIT" }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -5731,29 +5807,16 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.151", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.151.tgz", - "integrity": "sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA==", + "version": "1.5.152", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.152.tgz", + "integrity": "sha512-xBOfg/EBaIlVsHipHl2VdTPJRSvErNUaqW8ejTq5OlOlIYx1wOllCHsAvAIrr55jD1IYEfdR86miUEt8H5IeJg==", "dev": true, "license": "ISC" }, - "node_modules/elementtree": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", - "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "sax": "1.1.4" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, "license": "MIT" }, @@ -5768,9 +5831,10 @@ } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -5779,6 +5843,16 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/error-stack-parser-es": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz", + "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/es-abstract": { "version": "1.23.9", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", @@ -5863,6 +5937,13 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -6065,18 +6146,66 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.3.tgz", - "integrity": "sha512-vDo4d9yQE+cS2tdIT4J02H/16veRvkHgiLDRpej+WL67oCfbOb97itZXn8wMPJ/GsiEBVjrjs//AVNw2Cp1EcA==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", + "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", "dev": true, "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, "peerDependencies": { "eslint": ">=7.0.0" } }, + "node_modules/eslint-plugin-oxlint": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/eslint-plugin-oxlint/-/eslint-plugin-oxlint-0.16.10.tgz", + "integrity": "sha512-Kk66qL33TQyJ2vg59s4jllFb1iUxt49tkAw1xKiyyz3dNRIsFoF/U0NPGZK+ws/2MiMEpI/4dS9JPRtzIYpVRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonc-parser": "^3.3.1" + } + }, + "node_modules/eslint-plugin-playwright": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-2.2.0.tgz", + "integrity": "sha512-qSQpAw7RcSzE3zPp8FMGkthaCWovHZ/BsXtpmnGax9vQLIovlh1bsZHEa2+j2lv9DWhnyeLM/qZmp7ffQZfQvg==", + "dev": true, + "license": "MIT", + "workspaces": [ + "examples" + ], + "dependencies": { + "globals": "^13.23.0" + }, + "engines": { + "node": ">=16.6.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/eslint-plugin-playwright/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-prettier": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.0.tgz", @@ -6109,115 +6238,25 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz", - "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.0.1.tgz", + "integrity": "sha512-A5dRYc3eQ5i2rJFBW8J6F69ur/H7YfYg+5SCg6v829FU0BhM4fUTrRVR2d4MdZgzw0ioJEk6otYHEAnoGFqO4A==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "globals": "^13.24.0", "natural-compare": "^1.4.0", "nth-check": "^2.1.1", "postcss-selector-parser": "^6.0.15", "semver": "^7.6.3", - "vue-eslint-parser": "^9.4.3", "xml-name-validator": "^4.0.0" }, "engines": { - "node": "^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-vue/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-vue/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-vue/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-vue/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-vue/node_modules/vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "vue-eslint-parser": "^10.0.0" } }, "node_modules/eslint-scope": { @@ -6274,19 +6313,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -6407,30 +6433,10 @@ "node": ">= 0.6" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/eventsource": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz", - "integrity": "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", "dev": true, "license": "MIT", "dependencies": { @@ -6450,47 +6456,80 @@ "node": ">=18.0.0" } }, - "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "node_modules/execa": { + "version": "9.5.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.3.tgz", + "integrity": "sha512-QFNnTvU3UjgWFy8Ef9iDHvIdcgZ344ebkwYx4/KLbR+CKQA4xBaHzv+iRpp86QfMHP8faFQLh8iOc57215y4Rg==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expect-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" }, "funding": { "type": "opencollective", @@ -6513,38 +6552,6 @@ "express": "^4.11 || 5 || ^5.0.0-beta.1" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -6559,13 +6566,6 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true, - "license": "MIT" - }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", @@ -6583,6 +6583,19 @@ "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -6624,19 +6637,20 @@ "reusify": "^1.0.4" } }, - "node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" + "dependencies": { + "is-unicode-supported": "^2.0.0" }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/file-entry-cache": { @@ -6689,41 +6703,23 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { "node": ">= 0.8" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -6741,16 +6737,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, "node_modules/flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -6840,6 +6826,27 @@ "node": ">= 6" } }, + "node_modules/form-data/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/form-data/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/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -6850,28 +6857,14 @@ "node": ">= 0.6" } }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/fs-extra": { @@ -6897,9 +6890,9 @@ "license": "ISC" }, "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -6961,16 +6954,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -7015,6 +6998,23 @@ "node": ">= 0.4" } }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", @@ -7055,22 +7055,22 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", "engines": { @@ -7230,26 +7230,17 @@ "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", "license": "MIT" }, - "node_modules/html-minifier-terser": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", - "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "license": "MIT", "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "~5.3.2", - "commander": "^10.0.0", - "entities": "^4.4.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.15.1" - }, - "bin": { - "html-minifier-terser": "cli.js" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=18" } }, "node_modules/http-errors": { @@ -7269,14 +7260,52 @@ "node": ">= 0.8" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -7289,27 +7318,6 @@ "dev": true, "license": "ISC" }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -7373,29 +7381,12 @@ "dev": true, "license": "ISC" }, - "node_modules/inquirer": { - "version": "9.3.7", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.3.7.tgz", - "integrity": "sha512-LJKFHCSeIRq9hanN14IlOtPSTe3lNES7TYDTE2xxdAy1LS5rYphajK1qtwvj3YmQXvvk0U2Vbmcni8P9EIQW9w==", + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/figures": "^1.0.3", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } + "license": "ISC" }, "node_modules/internal-slot": { "version": "1.1.0", @@ -7476,19 +7467,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-boolean-object": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", @@ -7673,16 +7651,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -7740,19 +7708,26 @@ "node": ">=0.10.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "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/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -7819,13 +7794,13 @@ } }, "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7883,13 +7858,13 @@ } }, "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7970,25 +7945,12 @@ } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, - "node_modules/isbinaryfile": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.4.tgz", - "integrity": "sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -7996,16 +7958,6 @@ "dev": true, "license": "ISC" }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -8065,6 +8017,48 @@ "node": "*" } }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-beautify": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.4.tgz", + "integrity": "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.4.2", + "js-cookie": "^3.0.5", + "nopt": "^7.2.1" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8085,6 +8079,56 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdom": { + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.1.1", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.1", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/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/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -8105,6 +8149,16 @@ "dev": true, "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", + "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -8176,6 +8230,13 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -8209,16 +8270,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/kolorist": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", @@ -8226,52 +8277,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -8340,32 +8345,12 @@ "dev": true, "license": "MIT" }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } + "license": "MIT" }, "node_modules/lru-cache": { "version": "10.4.3", @@ -8393,21 +8378,33 @@ } }, "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -8422,16 +8419,6 @@ "node": ">= 8" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -8446,32 +8433,6 @@ "node": ">=8.6" } }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", @@ -8483,36 +8444,18 @@ } }, "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==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" } }, - "node_modules/mime-types/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/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -8529,16 +8472,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -8568,12 +8501,15 @@ "ufo": "^1.5.4" } }, - "node_modules/mlly/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "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" + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/ms": { "version": "2.1.3", @@ -8589,16 +8525,6 @@ "dev": true, "license": "MIT" }, - "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -8625,35 +8551,22 @@ "license": "MIT" }, "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "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", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } + "optional": true }, "node_modules/node-releases": { "version": "2.0.19", @@ -8662,24 +8575,96 @@ "dev": true, "license": "MIT" }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "node_modules/npm-normalize-package-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz", + "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-run-all2": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-7.0.2.tgz", + "integrity": "sha512-7tXR+r9hzRNOPNTvXegM+QzCuMjzUIIq66VDunL6j60O4RrExx32XUhlrS7UK4VcdGw5/Wxzb3kfNcFix9JKDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.6", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-package-json-fast": "^4.0.0", + "shell-quote": "^1.7.3", + "which": "^5.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0", + "npm": ">= 9" + } + }, + "node_modules/npm-run-all2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm-run-all2/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/npm-run-all2/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-run-path": { @@ -8725,6 +8710,13 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/nwsapi": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", + "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", + "dev": true, + "license": "MIT" + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -8792,16 +8784,6 @@ "node": ">= 0.8" } }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8812,22 +8794,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/open": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz", @@ -8865,40 +8831,6 @@ "node": ">= 0.8.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -8917,6 +8849,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/oxlint": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-0.16.10.tgz", + "integrity": "sha512-xSHmXzQ8cuoeUFoHsc0NIab81KsXNNUKJbK7ZaoCcSWcWSDc4oyc9giPnaVOnVCye5XR7FfX2x4OXqJ9nQdKHw==", + "dev": true, + "license": "MIT", + "bin": { + "oxc_language_server": "bin/oxc_language_server", + "oxlint": "bin/oxlint" + }, + "engines": { + "node": ">=8.*" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxlint/darwin-arm64": "0.16.10", + "@oxlint/darwin-x64": "0.16.10", + "@oxlint/linux-arm64-gnu": "0.16.10", + "@oxlint/linux-arm64-musl": "0.16.10", + "@oxlint/linux-x64-gnu": "0.16.10", + "@oxlint/linux-x64-musl": "0.16.10", + "@oxlint/win32-arm64": "0.16.10", + "@oxlint/win32-x64": "0.16.10" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -8956,17 +8915,6 @@ "dev": true, "license": "BlueOak-1.0.0" }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -8980,6 +8928,32 @@ "node": ">=6" } }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -8990,17 +8964,6 @@ "node": ">= 0.8" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -9063,18 +9026,31 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "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/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 14.16" + } }, "node_modules/perfect-debounce": { "version": "1.0.0", @@ -9089,18 +9065,31 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/pinia": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.2.tgz", @@ -9144,12 +9133,37 @@ "pathe": "^2.0.1" } }, - "node_modules/pkg-types/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "node_modules/playwright": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", + "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.52.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", + "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } }, "node_modules/possible-typed-array-names": { "version": "1.1.0", @@ -9203,13 +9217,6 @@ "node": ">=4" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -9250,34 +9257,40 @@ } }, "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": "^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "dev": true, "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, "engines": { - "node": ">= 0.6.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true, - "license": "MIT" + "license": "ISC" }, "node_modules/proxy-addr": { "version": "2.0.7", @@ -9310,13 +9323,13 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -9325,21 +9338,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/quasar": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.18.1.tgz", - "integrity": "sha512-db/P64Mzpt1uXJ0MapaG+IYJQ9hHDb5KtTCoszwC78DR7sA+Uoj7nBW2EytwYykIExEmqavOvKrdasTvqhkgEg==", - "license": "MIT", - "engines": { - "node": ">= 10.18.1", - "npm": ">= 6.13.4", - "yarn": ">= 1.21.1" - }, - "funding": { - "type": "github", - "url": "https://donate.quasar.dev" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -9397,108 +9395,32 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/readable-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/read-package-json-fast": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz", + "integrity": "sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "json-parse-even-better-errors": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 14.18.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/reflect.getprototypeof": { @@ -9583,12 +9505,6 @@ "node": ">=4" } }, - "node_modules/register-service-worker": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.2.tgz", - "integrity": "sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A==", - "license": "MIT" - }, "node_modules/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", @@ -9622,26 +9538,6 @@ "node": ">=6" } }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -9683,27 +9579,6 @@ "node": ">=4" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -9761,104 +9636,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-visualizer": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz", - "integrity": "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==", - "dev": true, - "license": "MIT", - "dependencies": { - "open": "^8.4.0", - "picomatch": "^4.0.2", - "source-map": "^0.7.4", - "yargs": "^17.5.1" - }, - "bin": { - "rollup-plugin-visualizer": "dist/bin/cli.js" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "rolldown": "1.x", - "rollup": "2.x || 3.x || 4.x" - }, - "peerDependenciesMeta": { - "rolldown": { - "optional": true - }, - "rollup": { - "optional": true - } - } - }, - "node_modules/rollup-plugin-visualizer/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-visualizer/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rollup-plugin-visualizer/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-visualizer/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rollup-plugin-visualizer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -9876,15 +9653,12 @@ "node": ">= 18" } }, - "node_modules/router/node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - } + "license": "MIT" }, "node_modules/run-applescript": { "version": "7.0.0", @@ -9899,16 +9673,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -9933,16 +9697,6 @@ "queue-microtask": "^1.2.2" } }, - "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/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -9963,13 +9717,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -10008,13 +9755,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -10040,432 +9780,44 @@ "dev": true, "license": "MIT" }, - "node_modules/sass-embedded": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.87.0.tgz", - "integrity": "sha512-1IA3iTJNh4BkkA/nidKiVwbmkxr9o6LsPegycHMX/JYs255zpocN5GdLF1+onohQCJxbs5ldr8osKV7qNaNBjg==", + "node_modules/sass": { + "version": "1.88.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.88.0.tgz", + "integrity": "sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==", "dev": true, "license": "MIT", "dependencies": { - "@bufbuild/protobuf": "^2.0.0", - "buffer-builder": "^0.2.0", - "colorjs.io": "^0.5.0", + "chokidar": "^4.0.0", "immutable": "^5.0.2", - "rxjs": "^7.4.0", - "supports-color": "^8.1.1", - "sync-child-process": "^1.0.2", - "varint": "^6.0.0" + "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { - "sass": "dist/bin/sass.js" + "sass": "sass.js" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" }, "optionalDependencies": { - "sass-embedded-android-arm": "1.87.0", - "sass-embedded-android-arm64": "1.87.0", - "sass-embedded-android-ia32": "1.87.0", - "sass-embedded-android-riscv64": "1.87.0", - "sass-embedded-android-x64": "1.87.0", - "sass-embedded-darwin-arm64": "1.87.0", - "sass-embedded-darwin-x64": "1.87.0", - "sass-embedded-linux-arm": "1.87.0", - "sass-embedded-linux-arm64": "1.87.0", - "sass-embedded-linux-ia32": "1.87.0", - "sass-embedded-linux-musl-arm": "1.87.0", - "sass-embedded-linux-musl-arm64": "1.87.0", - "sass-embedded-linux-musl-ia32": "1.87.0", - "sass-embedded-linux-musl-riscv64": "1.87.0", - "sass-embedded-linux-musl-x64": "1.87.0", - "sass-embedded-linux-riscv64": "1.87.0", - "sass-embedded-linux-x64": "1.87.0", - "sass-embedded-win32-arm64": "1.87.0", - "sass-embedded-win32-ia32": "1.87.0", - "sass-embedded-win32-x64": "1.87.0" + "@parcel/watcher": "^2.4.1" } }, - "node_modules/sass-embedded-android-arm": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.87.0.tgz", - "integrity": "sha512-Z20u/Y1kFDpMbgiloR5YPLxNuMVeKQRC8e/n68oAAxf3u7rDSmNn2msi7USqgT1f2zdBBNawn/ifbFEla6JiHw==", - "cpu": [ - "arm" - ], + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-arm64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.87.0.tgz", - "integrity": "sha512-uqeZoBuXm3W2KhxolScAAfWOLHL21e50g7AxlLmG0he7WZsWw6e9kSnmq301iLIFp4kvmXYXbXbNKAeu9ItRYA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-ia32": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.87.0.tgz", - "integrity": "sha512-hSWTqo2Igdig528cUb1W1+emw9d1J4+nqOoR4tERS04zcwRRFNDiuBT0o5meV7nkEwE982F+h57YdcRXj8gTtg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-riscv64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.87.0.tgz", - "integrity": "sha512-kBAPSjiTBLy5ua/0LRNAJwOAARhzFU7gP35fYORJcdBuz1lkIVPVnid1lh9qQ6Ce9MOJcr7VKFtGnTuqVeig5A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-x64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.87.0.tgz", - "integrity": "sha512-ZHMrNdtdMSpJUYco2MesnlPwDTZftD3pqkkOMI2pbqarPoFUKJtP5k80nwCM0sJGtqfNE+O16w9yPght0CMiJg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-darwin-arm64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.87.0.tgz", - "integrity": "sha512-7TK1JWJdCIRSdZv5CJv/HpDz/wIfwUy2FoPz9sVOEj1pDTH0N+VfJd5VutCddIdoQN9jr0ap8vwkc65FbAxV2A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-darwin-x64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.87.0.tgz", - "integrity": "sha512-2JiQzt7FmgUC4MYT2QvbeH/Bi3e76WEhaYoc5P3WyTW8unsHksyTdMuTuYe0Qf9usIyt6bmm5no/4BBw7c8Cig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-arm": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.87.0.tgz", - "integrity": "sha512-z5P6INMsGXiUcq1sRRbksyQUhalFFYjTEexuxfSYdK3U2YQMADHubQh8pGzkWvFRPOpnh83RiGuwvpaARYHnsw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-arm64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.87.0.tgz", - "integrity": "sha512-5z+mwJCbGZcg+q+MwdEVSh0ogFK7OSAe175Gsozzr/Izw34Q+RGUw9O82jsV2c4YNuTAQvzEHgIO5cvNvt3Quw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-ia32": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.87.0.tgz", - "integrity": "sha512-Xzcp+YPp0iakGL148Jl57CO+MxLuj2jsry3M+rc1cSnDlvkjNVs6TMxaL70GFeV5HdU2V60voYcgE7adDUtJjw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.87.0.tgz", - "integrity": "sha512-4PyqOWhRzyu06RRmpCCBOJdF4BOv7s446wrV6yODtEyyfSIDx3MJabo3KT0oJ1lTWSI/aU3R89bKx0JFXcIHHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.87.0.tgz", - "integrity": "sha512-HWE5eTRCoKzFZWsxOjDMTF5m4DDTQ0n7NJxSYiUXPBDydr9viPXbGOMYG7WVJLjiF7upr7DYo/mfp/SNTMlZyg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-ia32": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.87.0.tgz", - "integrity": "sha512-aQaPvlRn3kh93PLQvl6BcFKu8Ji92+42blFEkg6nMVvmugD5ZwH2TGFrX25ibx4CYxRpMS4ssF7a0i7vy5HB1Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-riscv64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.87.0.tgz", - "integrity": "sha512-o5DxcqiFzET3KRWo+futHr/lhAMBP3tJGGx8YIgpHQYfvDMbsvE0hiFC+nZ/GF9dbcGd+ceIQwfvE5mcc7Gsjw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.87.0.tgz", - "integrity": "sha512-dKxWsu9Wu/CyfzQmHdeiGqrRSzJ85VUjbSx+aP1/7ttmps3SSg+YW95PuqnCOa7GSuSreC3dKKpXHTywUxMLQA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-riscv64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.87.0.tgz", - "integrity": "sha512-Sy3ESZ4FwBiijvmTA9n+0p0w3MNCue1AgINVPzpAY27EFi0h49eqQm9SWfOkFqmkFS2zFRYowdQOr5Bbr2gOXA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-x64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.87.0.tgz", - "integrity": "sha512-+UfjakOcHHKTnEqB3EZ+KqzezQOe1emvy4Rs+eQhLyfekpYuNze/qlRvYxfKTmrtvDiUrIto8MXsyZfMLzkuMA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-win32-arm64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.87.0.tgz", - "integrity": "sha512-m1DS6FYUE0/fv+vt38uQB/kxR4UjnyD+2zcSc298pFmA0aYh/XZIPWw7RxG1HL3KLE1ZrGyu3254MPoxRhs3ig==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-win32-ia32": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.87.0.tgz", - "integrity": "sha512-JztXLo59GMe2E6g+kCsyiERYhtZgkcyDYx6CrXoSTE5WaE+RbxRiCCCv8/1+hf406f08pUxJ8G0Ody7M5urtBA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-win32-x64": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.87.0.tgz", - "integrity": "sha512-4nQErpauvhgSo+7ClumGdjdf9sGx+U9yBgvhI0+zUw+D5YvraVgvA0Lk8Wuwntx2PqnvKUk8YDr/vxHJostv4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded/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", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "xmlchars": "^2.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/sax": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", - "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==", - "dev": true, - "license": "ISC" - }, - "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" - }, - "engines": { - "node": ">=10" + "node": ">=v12.22.7" } }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { @@ -10476,55 +9828,26 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" + "node": ">= 18" } }, "node_modules/serialize-javascript": { @@ -10538,19 +9861,19 @@ } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, "node_modules/set-function-length": { @@ -10609,19 +9932,6 @@ "dev": true, "license": "ISC" }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -10645,6 +9955,19 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -10721,6 +10044,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -10734,6 +10064,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/sirv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", + "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/smob": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", @@ -10788,15 +10133,12 @@ "node": ">=0.10.0" } }, - "node_modules/stack-trace": { - "version": "1.0.0-pre2", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz", - "integrity": "sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==", + "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", - "engines": { - "node": ">=16" - } + "license": "MIT" }, "node_modules/statuses": { "version": "2.0.1", @@ -10808,31 +10150,33 @@ "node": ">= 0.8" } }, - "node_modules/streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", + "node_modules/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "dev": true, - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } + "license": "MIT" }, "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", @@ -10847,17 +10191,31 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/string-width-cjs/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", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -10966,16 +10324,19 @@ } }, "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/strip-ansi-cjs": { @@ -10992,6 +10353,16 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs/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", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", @@ -11002,6 +10373,19 @@ "node": ">=10" } }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -11053,28 +10437,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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", - "dependencies": { - "sync-message-port": "^1.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/sync-message-port": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", - "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.0.0" - } + "license": "MIT" }, "node_modules/synckit": { "version": "0.11.4", @@ -11093,18 +10461,6 @@ "url": "https://opencollective.com/synckit" } }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, "node_modules/temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -11134,6 +10490,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/tempy/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tempy/node_modules/type-fest": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", @@ -11148,9 +10517,9 @@ } }, "node_modules/terser": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", - "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "version": "5.39.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.1.tgz", + "integrity": "sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -11173,20 +10542,17 @@ "dev": true, "license": "MIT" }, - "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "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": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } + "license": "MIT" }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", "dev": true, "license": "MIT" }, @@ -11207,19 +10573,84 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinypool": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", "dev": true, "license": "MIT", "dependencies": { - "os-tmpdir": "~1.0.2" + "tldts-core": "^6.1.86" }, - "engines": { - "node": ">=0.6.0" + "bin": { + "tldts": "bin/cli.js" } }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true, + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -11243,14 +10674,40 @@ "node": ">=0.6" } }, + "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": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", "dev": true, "license": "MIT", "dependencies": { - "punycode": "^2.1.0" + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" } }, "node_modules/ts-api-utils": { @@ -11266,21 +10723,6 @@ "typescript": ">=4.8.4" } }, - "node_modules/ts-essentials": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.4.2.tgz", - "integrity": "sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "typescript": ">=4.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -11302,27 +10744,28 @@ } }, "node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=16" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "dev": true, "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" }, "engines": { "node": ">= 0.6" @@ -11407,9 +10850,9 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -11421,15 +10864,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.32.0.tgz", - "integrity": "sha512-UMq2kxdXCzinFFPsXc9o2ozIpYCCOiEC46MG3yEh5Vipq6BO27otTtEBZA1fQ66DulEUgE97ucQ/3YY66CPg0A==", + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.32.1.tgz", + "integrity": "sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.32.0", - "@typescript-eslint/parser": "8.32.0", - "@typescript-eslint/utils": "8.32.0" + "@typescript-eslint/eslint-plugin": "8.32.1", + "@typescript-eslint/parser": "8.32.1", + "@typescript-eslint/utils": "8.32.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11470,9 +10913,9 @@ } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, @@ -11639,23 +11082,6 @@ "dev": true, "license": "MIT" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "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/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -11741,125 +11167,260 @@ } } }, - "node_modules/vite-plugin-checker": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.9.3.tgz", - "integrity": "sha512-Tf7QBjeBtG7q11zG0lvoF38/2AVUzzhMNu+Wk+mcsJ00Rk/FpJ4rmUviVJpzWkagbU13cGXvKpt7CMiqtxVTbQ==", + "node_modules/vite-hot-client": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-2.0.4.tgz", + "integrity": "sha512-W9LOGAyGMrbGArYJN4LBCdOC5+Zwh7dHvOHC0KmGKkJhsOzaKbpo/jEjpPKVHIW0/jBWj8RZG0NUxfgA8BxgAg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vite-node": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.3.tgz", + "integrity": "sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "chokidar": "^4.0.3", - "npm-run-path": "^6.0.0", - "picocolors": "^1.1.1", - "picomatch": "^4.0.2", - "strip-ansi": "^7.1.0", - "tiny-invariant": "^1.3.3", - "tinyglobby": "^0.2.13", - "vscode-uri": "^3.1.0" + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" }, "engines": { - "node": ">=14.16" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-plugin-inspect": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.9.tgz", + "integrity": "sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.10", + "@rollup/pluginutils": "^5.1.3", + "debug": "^4.3.7", + "error-stack-parser-es": "^0.1.5", + "fs-extra": "^11.2.0", + "open": "^10.1.0", + "perfect-debounce": "^1.0.0", + "picocolors": "^1.1.1", + "sirv": "^3.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "@biomejs/biome": ">=1.7", - "eslint": ">=7", - "meow": "^13.2.0", - "optionator": "^0.9.4", - "stylelint": ">=16", - "typescript": "*", - "vite": ">=2.0.0", - "vls": "*", - "vti": "*", - "vue-tsc": "~2.2.10" + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1" }, "peerDependenciesMeta": { - "@biomejs/biome": { - "optional": true - }, - "eslint": { - "optional": true - }, - "meow": { - "optional": true - }, - "optionator": { - "optional": true - }, - "stylelint": { - "optional": true - }, - "typescript": { - "optional": true - }, - "vls": { - "optional": true - }, - "vti": { - "optional": true - }, - "vue-tsc": { + "@nuxt/kit": { "optional": true } } }, - "node_modules/vite-plugin-checker/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/vite-plugin-pwa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-1.0.0.tgz", + "integrity": "sha512-X77jo0AOd5OcxmWj3WnVti8n7Kw2tBgV1c8MCXFclrSlDV23ePzv2eTDIALXI2Qo6nJ5pZJeZAuX0AawvRfoeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.6", + "pretty-bytes": "^6.1.1", + "tinyglobby": "^0.2.10", + "workbox-build": "^7.3.0", + "workbox-window": "^7.3.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vite-pwa/assets-generator": "^1.0.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "workbox-build": "^7.3.0", + "workbox-window": "^7.3.0" + }, + "peerDependenciesMeta": { + "@vite-pwa/assets-generator": { + "optional": true + } + } + }, + "node_modules/vite-plugin-vue-devtools": { + "version": "7.7.6", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.7.6.tgz", + "integrity": "sha512-L7nPVM5a7lgit/Z+36iwoqHOaP3wxqVi1UvaDJwGCfblS9Y6vNqf32ILlzJVH9c47aHu90BhDXeZc+rgzHRHcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-core": "^7.7.6", + "@vue/devtools-kit": "^7.7.6", + "@vue/devtools-shared": "^7.7.6", + "execa": "^9.5.2", + "sirv": "^3.0.1", + "vite-plugin-inspect": "0.8.9", + "vite-plugin-vue-inspector": "^5.3.1" + }, + "engines": { + "node": ">=v14.21.3" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vite-plugin-vue-inspector": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.1.tgz", + "integrity": "sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/plugin-proposal-decorators": "^7.23.0", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.22.15", + "@vue/babel-plugin-jsx": "^1.1.5", + "@vue/compiler-dom": "^3.3.4", + "kolorist": "^1.8.0", + "magic-string": "^0.30.4" + }, + "peerDependencies": { + "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/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/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/vite-plugin-checker/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "node_modules/vitest": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.3.tgz", + "integrity": "sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw==", "dev": true, "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "@vitest/expect": "3.1.3", + "@vitest/mocker": "3.1.3", + "@vitest/pretty-format": "^3.1.3", + "@vitest/runner": "3.1.3", + "@vitest/snapshot": "3.1.3", + "@vitest/spy": "3.1.3", + "@vitest/utils": "3.1.3", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.13", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.1.3", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" }, "engines": { - "node": ">= 14.16.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/vite-plugin-checker/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" + "url": "https://opencollective.com/vitest" }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/vite-plugin-checker/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.1.3", + "@vitest/ui": "3.1.3", + "happy-dom": "*", + "jsdom": "*" }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, "node_modules/vscode-uri": { @@ -11890,6 +11451,13 @@ } } }, + "node_modules/vue-component-type-helpers": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.10.tgz", + "integrity": "sha512-iDUO7uQK+Sab2tYuiP9D1oLujCWlhHELHMgV/cB13cuGbG4qwkLHvtfWb6FzvxrIOPDnU0oHsz2MlQjhYDeaHA==", + "dev": true, + "license": "MIT" + }, "node_modules/vue-eslint-parser": { "version": "10.1.3", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.1.3.tgz", @@ -11929,13 +11497,14 @@ } }, "node_modules/vue-i18n": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.1.3.tgz", - "integrity": "sha512-Pcylh9z9S5+CJAqgbRZ3EKxFIBIrtY5YUppU722GIT65+Nukm0TCqiQegZnNLCZkXGthxe0cpqj0AoM51H+6Gw==", + "version": "12.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-12.0.0-alpha.2.tgz", + "integrity": "sha512-ZSaZrDV/PhD4hLVybo84bkaNRnkGDF7GpI0Fcmn9Yj+2Kq5C3nE7I5iRbo+DiHyRGrwZ/IV1VP3naFAhcNJGsg==", "license": "MIT", "dependencies": { - "@intlify/core-base": "11.1.3", - "@intlify/shared": "11.1.3", + "@intlify/core-base": "12.0.0-alpha.2", + "@intlify/shared": "12.0.0-alpha.2", + "@intlify/vue-i18n-core": "12.0.0-alpha.2", "@vue/devtools-api": "^6.5.0" }, "engines": { @@ -11948,18 +11517,6 @@ "vue": "^3.0.0" } }, - "node_modules/vue-i18n/node_modules/@intlify/shared": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.1.3.tgz", - "integrity": "sha512-pTFBgqa/99JRA2H1qfyqv97MKWJrYngXBA/I0elZcYxvJgcCw3mApAoPW3mJ7vx3j+Ti0FyKUFZ4hWxdjKaxvA==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, "node_modules/vue-i18n/node_modules/@vue/devtools-api": { "version": "6.6.4", "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", @@ -12004,36 +11561,37 @@ "typescript": ">=5.0.0" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "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": { - "defaults": "^1.0.3" + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/w3c-xmlserializer/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/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/webpack-merge": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", - "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.1" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=18.0.0" + "node": ">=12" } }, "node_modules/webpack-virtual-modules": { @@ -12043,16 +11601,41 @@ "dev": true, "license": "MIT" }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "license": "MIT", "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/which": { @@ -12119,13 +11702,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -12167,12 +11743,22 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "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" + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } }, "node_modules/word-wrap": { "version": "1.2.5", @@ -12438,17 +12024,17 @@ "node": "*" } }, - "node_modules/workbox-build/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/workbox-build/node_modules/rollup": { @@ -12480,6 +12066,35 @@ "node": ">= 8" } }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/workbox-cacheable-response": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.3.0.tgz", @@ -12618,18 +12233,21 @@ } }, "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrap-ansi-cjs": { @@ -12651,6 +12269,64 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/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", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -12658,6 +12334,28 @@ "dev": true, "license": "ISC" }, + "node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", @@ -12668,15 +12366,12 @@ "node": ">=12" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "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": "ISC", - "engines": { - "node": ">=10" - } + "license": "MIT" }, "node_modules/yallist": { "version": "3.1.1", @@ -12715,35 +12410,6 @@ "url": "https://github.com/sponsors/ota-meshi" } }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -12757,10 +12423,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", - "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", "dev": true, "license": "MIT", "engines": { @@ -12770,21 +12436,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/zip-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", - "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "archiver-utils": "^5.0.0", - "compress-commons": "^6.0.2", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/zod": { "version": "3.24.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", diff --git a/fe/package.json b/fe/package.json index a1d0de8..63d22bb 100644 --- a/fe/package.json +++ b/fe/package.json @@ -1,55 +1,62 @@ { - "name": "mitlist", - "version": "0.0.1", - "description": "mitlist pwa", - "productName": "mitlist", - "author": "Mohamad ", - "type": "module", + "name": "fe", + "version": "0.0.0", "private": true, + "type": "module", "scripts": { - "lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"", - "format": "prettier --write \"**/*.{js,ts,vue,scss,html,md,json}\" --ignore-path .gitignore", - "test": "echo \"No test specified\" && exit 0", - "dev": "quasar dev", - "build": "quasar build", - "postinstall": "quasar prepare" + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "test:unit": "vitest", + "test:e2e": "playwright test", + "build-only": "vite build", + "type-check": "vue-tsc --build", + "lint:oxlint": "oxlint . --fix -D correctness --ignore-path .gitignore", + "lint:eslint": "eslint . --fix", + "lint": "run-s lint:*", + "format": "prettier --write src/" }, "dependencies": { - "@quasar/extras": "^1.16.4", - "axios": "^1.2.1", - "pinia": "^3.0.1", - "quasar": "^2.16.0", - "register-service-worker": "^1.7.2", - "vue": "^3.4.18", - "vue-i18n": "^11.0.0", - "vue-router": "^4.0.12" + "@vueuse/core": "^13.1.0", + "axios": "^1.9.0", + "pinia": "^3.0.2", + "vue": "^3.5.13", + "vue-i18n": "^12.0.0-alpha.2", + "vue-router": "^4.5.1" }, "devDependencies": { - "@eslint/js": "^9.14.0", - "@intlify/unplugin-vue-i18n": "^4.0.0", - "@quasar/app-vite": "^2.1.0", - "@types/node": "^20.5.9", - "@vue/eslint-config-prettier": "^10.1.0", - "@vue/eslint-config-typescript": "^14.4.0", - "autoprefixer": "^10.4.2", - "eslint": "^9.14.0", - "eslint-plugin-vue": "^9.30.0", - "globals": "^15.12.0", - "prettier": "^3.3.3", - "typescript": "~5.5.3", - "vite-plugin-checker": "^0.9.0", - "vue-tsc": "^2.0.29", - "workbox-build": "^7.3.0", + "@intlify/unplugin-vue-i18n": "^6.0.8", + "@playwright/test": "^1.51.1", + "@tsconfig/node22": "^22.0.1", + "@types/jsdom": "^21.1.7", + "@types/node": "^22.15.17", + "@vitejs/plugin-vue": "^5.2.3", + "@vitest/eslint-plugin": "^1.1.39", + "@vue/eslint-config-prettier": "^10.2.0", + "@vue/eslint-config-typescript": "^14.5.0", + "@vue/test-utils": "^2.4.6", + "@vue/tsconfig": "^0.7.0", + "eslint": "^9.26.0", + "eslint-plugin-oxlint": "^0.16.0", + "eslint-plugin-playwright": "^2.2.0", + "eslint-plugin-vue": "~10.0.0", + "jiti": "^2.4.2", + "jsdom": "^26.0.0", + "npm-run-all2": "^7.0.2", + "oxlint": "^0.16.0", + "prettier": "^3.5.3", + "sass": "^1.88.0", + "typescript": "~5.8.0", + "vite": "^6.2.4", + "vite-plugin-pwa": "^1.0.0", + "vite-plugin-vue-devtools": "^7.7.2", + "vitest": "^3.1.1", + "vue-tsc": "^2.2.8", "workbox-cacheable-response": "^7.3.0", "workbox-core": "^7.3.0", "workbox-expiration": "^7.3.0", "workbox-precaching": "^7.3.0", "workbox-routing": "^7.3.0", "workbox-strategies": "^7.3.0" - }, - "engines": { - "node": "^28 || ^26 || ^24 || ^22 || ^20 || ^18", - "npm": ">= 6.13.4", - "yarn": ">= 1.21.1" } } diff --git a/fe/playwright.config.ts b/fe/playwright.config.ts new file mode 100644 index 0000000..5ece956 --- /dev/null +++ b/fe/playwright.config.ts @@ -0,0 +1,110 @@ +import process from 'node:process' +import { defineConfig, devices } from '@playwright/test' + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './e2e', + /* Maximum time one test can run for. */ + timeout: 30 * 1000, + expect: { + /** + * Maximum time expect() should wait for the condition to be met. + * For example in `await expect(locator).toHaveText();` + */ + timeout: 5000, + }, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ + actionTimeout: 0, + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: process.env.CI ? 'http://localhost:4173' : 'http://localhost:5173', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + + /* Only on CI systems run the tests headless */ + headless: !!process.env.CI, + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { + ...devices['Desktop Chrome'], + }, + }, + { + name: 'firefox', + use: { + ...devices['Desktop Firefox'], + }, + }, + { + name: 'webkit', + use: { + ...devices['Desktop Safari'], + }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { + // ...devices['Pixel 5'], + // }, + // }, + // { + // name: 'Mobile Safari', + // use: { + // ...devices['iPhone 12'], + // }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { + // channel: 'msedge', + // }, + // }, + // { + // name: 'Google Chrome', + // use: { + // channel: 'chrome', + // }, + // }, + ], + + /* Folder for test artifacts such as screenshots, videos, traces, etc. */ + // outputDir: 'test-results/', + + /* Run your local dev server before starting the tests */ + webServer: { + /** + * Use the dev server by default for faster feedback loop. + * Use the preview server on CI for more realistic testing. + * Playwright will re-use the local server if there is already a dev-server running. + */ + command: process.env.CI ? 'npm run preview' : 'npm run dev', + port: process.env.CI ? 4173 : 5173, + reuseExistingServer: !process.env.CI, + }, +}) diff --git a/fe/postcss.config.js b/fe/postcss.config.js deleted file mode 100644 index 25db2f4..0000000 --- a/fe/postcss.config.js +++ /dev/null @@ -1,29 +0,0 @@ -// https://github.com/michael-ciniawsky/postcss-load-config - -import autoprefixer from 'autoprefixer' -// import rtlcss from 'postcss-rtlcss' - -export default { - plugins: [ - // https://github.com/postcss/autoprefixer - autoprefixer({ - overrideBrowserslist: [ - 'last 4 Chrome versions', - 'last 4 Firefox versions', - 'last 4 Edge versions', - 'last 4 Safari versions', - 'last 4 Android versions', - 'last 4 ChromeAndroid versions', - 'last 4 FirefoxAndroid versions', - 'last 4 iOS versions' - ] - }), - - // https://github.com/elchininet/postcss-rtlcss - // If you want to support RTL css, then - // 1. yarn/pnpm/bun/npm install postcss-rtlcss - // 2. optionally set quasar.config.js > framework > lang to an RTL language - // 3. uncomment the following line (and its import statement above): - // rtlcss() - ] -} diff --git a/fe/public/favicon.ico b/fe/public/favicon.ico index ae7bbdb712f8ce9fe49761b68ef3a2d4c51606f9..df36fcfb72584e00488330b560ebcf34a41c64c2 100644 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 64483 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 diff --git a/fe/quasar.config.ts b/fe/quasar.config.ts deleted file mode 100644 index 7a12b60..0000000 --- a/fe/quasar.config.ts +++ /dev/null @@ -1,235 +0,0 @@ -// Configuration for your app -// https://v2.quasar.dev/quasar-cli-vite/quasar-config-file - -import { defineConfig } from '#q-app/wrappers'; -import { fileURLToPath } from 'node:url'; - -export default defineConfig((ctx) => { - return { - // https://v2.quasar.dev/quasar-cli-vite/prefetch-feature - // preFetch: true, - - // app boot file (/src/boot) - // --> boot files are part of "main.js" - // https://v2.quasar.dev/quasar-cli-vite/boot-files - boot: ['i18n', 'axios'], - - // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#css - css: ['app.scss'], - - // https://github.com/quasarframework/quasar/tree/dev/extras - extras: [ - // 'ionicons-v4', - // 'mdi-v7', - // 'fontawesome-v6', - // 'eva-icons', - // 'themify', - // 'line-awesome', - // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both! - - 'roboto-font', // optional, you are not bound to it - 'material-icons', // optional, you are not bound to it - ], - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#build - build: { - target: { - browser: ['es2022', 'firefox115', 'chrome115', 'safari14'], - node: 'node20', - }, - - typescript: { - strict: true, - vueShim: true, - // extendTsConfig (tsConfig) {} - }, - - vueRouterMode: 'hash', // available values: 'hash', 'history' - // vueRouterBase, - // vueDevtools, - // vueOptionsAPI: false, - - // rebuildCache: true, // rebuilds Vite/linter/etc cache on startup - - // publicPath: '/', - // analyze: true, - // env: {}, - // rawDefine: {} - // ignorePublicFolder: true, - // minify: false, - // polyfillModulePreload: true, - // distDir - - // extendViteConf (viteConf) {}, - // viteVuePluginOptions: {}, - - vitePlugins: [ - [ - '@intlify/unplugin-vue-i18n/vite', - { - // if you want to use Vue I18n Legacy API, you need to set `compositionOnly: false` - // compositionOnly: false, - - // if you want to use named tokens in your Vue I18n messages, such as 'Hello {name}', - // you need to set `runtimeOnly: false` - // runtimeOnly: false, - - ssr: ctx.modeName === 'ssr', - - // you need to set i18n resource including paths ! - include: [fileURLToPath(new URL('./src/i18n', import.meta.url))], - }, - ], - - [ - 'vite-plugin-checker', - { - vueTsc: true, - eslint: { - lintCommand: 'eslint -c ./eslint.config.js "./src*/**/*.{ts,js,mjs,cjs,vue}"', - useFlatConfig: true, - }, - }, - { server: false }, - ], - ], - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#devserver - devServer: { - // https: true, - open: true, // opens browser window automatically - }, - - // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#framework - framework: { - config: {}, - - // iconSet: 'material-icons', // Quasar icon set - // lang: 'en-US', // Quasar language pack - - // For special cases outside of where the auto-import strategy can have an impact - // (like functional components as one of the examples), - // you can manually specify Quasar components/directives to be available everywhere: - // - // components: [], - // directives: [], - - // Quasar plugins - plugins: ['Notify'], - }, - - // animations: 'all', // --- includes all animations - // https://v2.quasar.dev/options/animations - animations: [], - - // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#sourcefiles - // sourceFiles: { - // rootComponent: 'src/App.vue', - // router: 'src/router/index', - // store: 'src/store/index', - // pwaRegisterServiceWorker: 'src-pwa/register-service-worker', - // pwaServiceWorker: 'src-pwa/custom-service-worker', - // pwaManifestFile: 'src-pwa/manifest.json', - // electronMain: 'src-electron/electron-main', - // electronPreload: 'src-electron/electron-preload' - // bexManifestFile: 'src-bex/manifest.json - // }, - - // https://v2.quasar.dev/quasar-cli-vite/developing-ssr/configuring-ssr - ssr: { - prodPort: 3000, // The default port that the production server should use - // (gets superseded if process.env.PORT is specified at runtime) - - middlewares: [ - 'render', // keep this as last one - ], - - // extendPackageJson (json) {}, - // extendSSRWebserverConf (esbuildConf) {}, - - // manualStoreSerialization: true, - // manualStoreSsrContextInjection: true, - // manualStoreHydration: true, - // manualPostHydrationTrigger: true, - - pwa: false, - // pwaOfflineHtmlFilename: 'offline.html', // do NOT use index.html as name! - - // pwaExtendGenerateSWOptions (cfg) {}, - // pwaExtendInjectManifestOptions (cfg) {} - }, - - // https://v2.quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa - pwa: { - workboxMode: 'InjectManifest', // Changed from 'GenerateSW' to 'InjectManifest' - swFilename: 'sw.js', - manifestFilename: 'manifest.json', - injectPwaMetaTags: true, - // extendManifestJson (json) {}, - // useCredentialsForManifestTag: true, - // extendPWACustomSWConf (esbuildConf) {}, - // extendGenerateSWOptions (cfg) {}, - // extendInjectManifestOptions (cfg) {} - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-cordova-apps/configuring-cordova - cordova: { - // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-capacitor-apps/configuring-capacitor - capacitor: { - hideSplashscreen: true, - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-electron-apps/configuring-electron - electron: { - // extendElectronMainConf (esbuildConf) {}, - // extendElectronPreloadConf (esbuildConf) {}, - - // extendPackageJson (json) {}, - - // Electron preload scripts (if any) from /src-electron, WITHOUT file extension - preloadScripts: ['electron-preload'], - - // specify the debugging port to use for the Electron app when running in development mode - inspectPort: 5858, - - bundler: 'packager', // 'packager' or 'builder' - - packager: { - // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options - // OS X / Mac App Store - // appBundleId: '', - // appCategoryType: '', - // osxSign: '', - // protocol: 'myapp://path', - // Windows only - // win32metadata: { ... } - }, - - builder: { - // https://www.electron.build/configuration/configuration - - appId: 'mitlist', - }, - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex - bex: { - // extendBexScriptsConf (esbuildConf) {}, - // extendBexManifestJson (json) {}, - - /** - * The list of extra scripts (js/ts) not in your bex manifest that you want to - * compile and use in your browser extension. Maybe dynamic use them? - * - * Each entry in the list should be a relative filename to /src-bex/ - * - * @example [ 'my-script.ts', 'sub-folder/my-other-script.js' ] - */ - extraScripts: [], - }, - }; -}); diff --git a/fe/src-pwa/manifest.json b/fe/src-pwa/manifest.json deleted file mode 100644 index 8932666..0000000 --- a/fe/src-pwa/manifest.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "orientation": "portrait", - "background_color": "#ffffff", - "theme_color": "#027be3", - "icons": [ - { - "src": "icons/icon-128x128.png", - "sizes": "128x128", - "type": "image/png" - }, - { - "src": "icons/icon-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/icon-256x256.png", - "sizes": "256x256", - "type": "image/png" - }, - { - "src": "icons/icon-384x384.png", - "sizes": "384x384", - "type": "image/png" - }, - { - "src": "icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/fe/src-pwa/pwa-env.d.ts b/fe/src-pwa/pwa-env.d.ts deleted file mode 100644 index 4a04967..0000000 --- a/fe/src-pwa/pwa-env.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare namespace NodeJS { - interface ProcessEnv { - SERVICE_WORKER_FILE: string; - PWA_FALLBACK_HTML: string; - PWA_SERVICE_WORKER_REGEX: string; - } -} diff --git a/fe/src-pwa/register-service-worker.ts b/fe/src-pwa/register-service-worker.ts deleted file mode 100644 index 859ab00..0000000 --- a/fe/src-pwa/register-service-worker.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { register } from 'register-service-worker'; - -// The ready(), registered(), cached(), updatefound() and updated() -// events passes a ServiceWorkerRegistration instance in their arguments. -// ServiceWorkerRegistration: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration - -register(process.env.SERVICE_WORKER_FILE, { - // The registrationOptions object will be passed as the second argument - // to ServiceWorkerContainer.register() - // https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register#Parameter - - // registrationOptions: { scope: './' }, - - ready (/* registration */) { - // console.log('Service worker is active.') - }, - - registered (/* registration */) { - // console.log('Service worker has been registered.') - }, - - cached (/* registration */) { - // console.log('Content has been cached for offline use.') - }, - - updatefound (/* registration */) { - // console.log('New content is downloading.') - }, - - updated (/* registration */) { - // console.log('New content is available; please refresh.') - }, - - offline () { - // console.log('No internet connection found. App is running in offline mode.') - }, - - error (/* err */) { - // console.error('Error during service worker registration:', err) - }, -}); diff --git a/fe/src-pwa/tsconfig.json b/fe/src-pwa/tsconfig.json deleted file mode 100644 index 679bc5d..0000000 --- a/fe/src-pwa/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "lib": ["WebWorker", "ESNext"] - }, - "include": ["*.ts", "*.d.ts"] -} diff --git a/fe/src/App.vue b/fe/src/App.vue index 9d87945..18233c3 100644 --- a/fe/src/App.vue +++ b/fe/src/App.vue @@ -1,7 +1,29 @@ + + \ No newline at end of file diff --git a/fe/src/assets/logo.svg b/fe/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/fe/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/fe/src/assets/main.scss b/fe/src/assets/main.scss new file mode 100644 index 0000000..a0be802 --- /dev/null +++ b/fe/src/assets/main.scss @@ -0,0 +1,26 @@ +// src/assets/main.scss +// @import './variables.scss'; // Your custom variables +@import './valerie-ui.scss'; + +// Example global styles +body { + font-family: sans-serif; + margin: 0; + background-color: var(--bg-color-page, #f4f4f8); + color: var(--text-color, #333); +} + +a { + color: var(--primary-color); + text-decoration: none; + &:hover { + text-decoration: underline; + } +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 1rem; +} +// Add more global utility classes or base styles \ No newline at end of file diff --git a/fe/src/assets/quasar-logo-vertical.svg b/fe/src/assets/quasar-logo-vertical.svg deleted file mode 100644 index 8210831..0000000 --- a/fe/src/assets/quasar-logo-vertical.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/fe/src/assets/valerie-ui.scss b/fe/src/assets/valerie-ui.scss new file mode 100644 index 0000000..a56ea41 --- /dev/null +++ b/fe/src/assets/valerie-ui.scss @@ -0,0 +1,737 @@ + + :root { + /* Colors */ + --primary: #ff7b54; + --secondary: #ffb26b; + --accent: #ffd56b; /* Yellow - for sticky notes */ + --secondary-accent: #54c7ff; /* Light Blue - for contrast */ + --danger: #ff4d4d; + --success: #a0e7a0; + --warning: var(--accent); + --dark: #393e46; + --light: #fff8f0; + --black: #000000; + + /* Shadows & Borders */ + --shadow-lg: 8px 8px 0px var(--black); + --shadow-md: 6px 6px 0px var(--black); + --shadow-sm: 3px 3px 0px var(--black); + --shadow-inset: inset 2px 2px 1px rgba(0, 0, 0, 0.15); + --border-width: 3px; + --border-style: solid; + --border-color: var(--black); + --border: var(--border-width) var(--border-style) var(--border-color); + + /* Transitions */ + --transition-speed: 0.25s; + --transition-speed-fast: 0.1s; + --transition-ease-out: ease-out; + --transition-press: cubic-bezier(0.34, 1.56, 0.64, 1); + + /* Focus */ + --focus-outline-color: var(--secondary-accent); + --focus-outline-width: 3px; + --focus-outline-offset: 2px; + --focus-outline: var(--focus-outline-width) solid + var(--focus-outline-color); + + /* Textures */ + --paper-texture: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60'%3E%3Cg fill-rule='evenodd'%3E%3Cg fill='%23a59a8a' fill-opacity='0.15'%3E%3Cpath opacity='.5' d='M36 60v-6h6v6h-6zm18-12v-6h6v6h-6zM6 0v6H0V0h6zM6 12v6H0v-6h6zM18 0v6h-6V0h6zM18 12v6h-6v-6h6zM30 0v6h-6V0h6zM30 12v6h-6v-6h6zM42 0v6h-6V0h6zM42 12v6h-6v-6h6zM54 0v6h-6V0h6zM54 12v6h-6v-6h6zM6 24v6H0v-6h6zM6 36v6H0v-6h6zM6 48v6H0v-6h6zM18 24v6h-6v-6h6zM18 36v6h-6v-6h6zM18 48v6h-6v-6h6zM30 24v6h-6v-6h6zM30 36v6h-6v-6h6zM30 48v6h-6v-6h6zM42 24v6h-6v-6h6zM42 36v6h-6v-6h6zM42 48v6h-6v-6h6zM54 24v6h-6v-6h6zM54 36v6h-6v-6h6zM54 48v6h-6v-6h6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); + --progress-texture: repeating-linear-gradient( + 45deg, + rgba(0, 0, 0, 0.05), + rgba(0, 0, 0, 0.05) 5px, + transparent 5px, + transparent 10px + ); + } + + /* Accessibility Helpers */ + .sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; + } + + /* Reduced Motion Preference */ + @media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + transition-delay: 0ms !important; + } + } + + /* Basic Reset & Body */ + *, + *::before, + *::after { + box-sizing: border-box; + } + body { + font-family: "Patrick Hand", cursive; + background-color: var(--light); + background-image: var(--paper-texture); + padding: 2rem 1rem; + color: var(--dark); + font-size: 1.1rem; + line-height: 1.6; + overflow-x: hidden; /* Prevent horizontal scroll */ + margin: 0; + } + .container { + max-width: 1000px; + margin: 0 auto; + } + + /* Focus Visible Styles */ + :is(a, button, input, select, textarea, [tabindex]):not( + [tabindex="-1"] + ):focus-visible { + outline: var(--focus-outline); + outline-offset: var(--focus-outline-offset); + box-shadow: 0 0 0 var(--focus-outline-width) var(--focus-outline-color), + var(--shadow-md); + z-index: 10; /* Bring focused element forward */ + } + .btn:focus-visible { + box-shadow: 0 0 0 var(--focus-outline-width) var(--focus-outline-color), + var(--shadow-lg); + } + .form-input:focus-visible { + box-shadow: var(--shadow-inset), + 0 0 0 var(--focus-outline-width) var(--focus-outline-color), + var(--shadow-sm); + } + .list-item:focus-visible { /* Focus on list item might need adjustment if using swipe */ + outline-offset: -var(--border-width); + z-index: 10; + } + .tab-item:focus-visible { + outline-offset: 4px; + z-index: 5; /* Higher than non-focused tabs */ + } + .checkbox-label input:focus-visible ~ .checkmark, + .radio-label input:focus-visible ~ .checkmark { + outline: var(--focus-outline); + outline-offset: var(--focus-outline-offset); + box-shadow: var(--shadow-sm), + 0 0 0 var(--focus-outline-width) var(--focus-outline-color); + } + .switch-container input:focus-visible + .switch { + outline: var(--focus-outline); + outline-offset: var(--focus-outline-offset); + } + .avatar:focus-visible { + box-shadow: 0 0 0 var(--focus-outline-width) var(--focus-outline-color), + var(--shadow-sm); + } + .tooltip .tooltip-trigger:focus-visible { + outline: var(--focus-outline); + outline-offset: var(--focus-outline-offset); + } + + /* Headings */ + h1, + h2, + h3 { + font-weight: bold; + color: var(--dark); + text-transform: uppercase; + letter-spacing: 1.5px; + position: relative; + display: inline-block; + margin-bottom: 1.5rem; + padding-bottom: 8px; + } + h1::after, + h2::after, + h3::after { + content: ""; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: var(--border-width); + background-color: var(--primary); + box-shadow: var(--shadow-sm); + } + h1 { font-size: clamp(2rem, 5vw, 2.5rem); } + h2 { font-size: clamp(1.6rem, 4vw, 2rem); } + h3 { font-size: clamp(1.3rem, 3.5vw, 1.5rem); } + + /* Icon Base Style */ + .icon { + display: inline-block; + width: 1.1em; + height: 1.1em; + vertical-align: -0.15em; + margin-right: 0.4em; + fill: currentColor; + } + .btn .icon { margin-right: 0.5em; } + button > .icon:last-child { margin-right: 0; } + .icon-sm { width: 0.9em; height: 0.9em; } + .icon-lg { width: 1.5em; height: 1.5em; } + + /* Buttons */ + .btn { + background-color: var(--primary); + color: var(--dark); + border: var(--border); + font-family: inherit; + font-size: 1rem; + font-weight: bold; + padding: 0.8rem 1.6rem; + cursor: pointer; + box-shadow: var(--shadow-md); + transition: transform var(--transition-speed) var(--transition-ease-out), + box-shadow var(--transition-speed) var(--transition-ease-out), + background-color var(--transition-speed) var(--transition-ease-out); + position: relative; + text-transform: uppercase; + letter-spacing: 1px; + margin: 0.5rem; + display: inline-flex; + align-items: center; + justify-content: center; + text-decoration: none; + text-align: center; + touch-action: manipulation; + overflow: hidden; + } + .btn:hover:not(:disabled) { + transform: translate(-3px, -3px); + box-shadow: var(--shadow-lg); + } + .btn:active:not(:disabled) { + transform: translate(2px, 2px) scale(0.98); + box-shadow: var(--shadow-sm); + transition-duration: var(--transition-speed-fast); + transition-timing-function: var(--transition-press); + animation: jiggle-subtle 0.3s ease-out forwards; + } + .btn:disabled { + opacity: 0.6; + cursor: not-allowed; + box-shadow: var(--shadow-sm); + } + .btn-secondary { background-color: var(--secondary); } + .btn-neutral { background-color: var(--light); color: var(--dark); } + .btn-danger { background-color: var(--danger); color: var(--light); } + .btn-sm { padding: 0.5rem 1rem; font-size: 0.9rem; } + .btn-icon-only { padding: 0.6rem; } + .btn-icon-only .icon { margin-right: 0; } + + @keyframes jiggle-subtle { + 0%, 100% { transform: translate(2px, 2px) scale(0.98) rotate(0deg); } + 25% { transform: translate(2px, 2px) scale(0.98) rotate(-0.5deg); } + 75% { transform: translate(2px, 2px) scale(0.98) rotate(0.5deg); } + } + + /* Cards */ + .card { + background-color: var(--light); + border: var(--border); + padding: 1.5rem; + box-shadow: var(--shadow-md); + margin-bottom: 2rem; + position: relative; + /* overflow: hidden; */ /* REMOVED overflow: hidden which can clip tooltips */ + /* Add transition back if subtle hover is desired, but not transform */ + transition: box-shadow var(--transition-speed) var(--transition-ease-out); + } + /* Removed .card:hover transform/shadow increase */ + .card::before { + content: ""; + position: absolute; + inset: 0; + background-image: var(--paper-texture); + opacity: 0.6; + z-index: 0; + pointer-events: none; /* Prevent texture from interfering */ + } + .card > * { + position: relative; + z-index: 1; /* Ensure content is above texture */ + } + .card-header { + margin: -1.5rem -1.5rem 1.5rem -1.5rem; + padding: 1rem 1.5rem; + border-bottom: var(--border); + font-weight: bold; + background-color: rgba(255, 255, 255, 0.5); + } + .card-body { + margin-bottom: 1rem; + } + .card-footer { + display: flex; + justify-content: flex-end; + align-items: center; + margin: 1.5rem -1.5rem -1.5rem -1.5rem; + padding: 1rem 1.5rem; + border-top: var(--border); + background-color: rgba(255, 255, 255, 0.5); + } + /* Empty State Card */ + .empty-state-card { + text-align: center; + padding: 3rem 1.5rem; + } + .empty-state-card .icon-lg { + display: block; + margin: 0 auto 1rem auto; + width: 50px; + height: 50px; + opacity: 0.5; + } + .empty-state-card h3 { border: none; padding: 0; margin-bottom: 0.5rem; } + .empty-state-card h3::after { display: none; } + .empty-state-card p { margin-bottom: 1.5rem; opacity: 0.8; } + + /* Forms */ + .form-group { margin-bottom: 1.5rem; } + .form-label { + display: block; + margin-bottom: 0.5rem; + font-weight: bold; + color: var(--dark); + text-transform: uppercase; + font-size: 0.9rem; + letter-spacing: 0.5px; + } + .form-input, + select.form-input, + textarea.form-input { + width: 100%; + padding: 0.75rem; + border: var(--border); + background-color: var(--light); + font-family: inherit; + font-size: 1rem; + box-shadow: var(--shadow-inset), var(--shadow-sm); + transition: transform var(--transition-speed) var(--transition-ease-out), + box-shadow var(--transition-speed) var(--transition-ease-out), + border-color var(--transition-speed) var(--transition-ease-out); + box-sizing: border-box; + appearance: none; + border-radius: 0; + } + textarea.form-input { line-height: 1.5; min-height: 80px; } + select.form-input { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23393e46'%3E%3Cpath d='M7 10l5 5 5-5H7z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 1.5em; + padding-right: 2.5rem; + } + .form-input:focus { + outline: none; /* Use focus-visible */ + transform: translate(1px, 1px); + border-color: var(--primary); + } + .form-input.error { border-color: var(--danger); background-color: #ffeeee; } + .form-input:disabled { background-color: rgba(0, 0, 0, 0.05); opacity: 0.7; cursor: not-allowed; box-shadow: var(--shadow-inset); } + + /* Checkbox & Radio */ + .checkbox-group, .radio-group { margin-bottom: 1rem; background: rgba(0,0,0,0.02); padding: 0.5rem; border: 1px solid rgba(0,0,0,0.1); } + .checkbox-label, .radio-label { position: relative; padding-left: 2.8rem; margin-bottom: 0.75rem; cursor: pointer; display: flex; align-items: center; min-height: 30px; } + .checkbox-label input, .radio-label input { position: absolute; opacity: 0; cursor: pointer; height: 100%; width: 100%; top: 0; left: 0; margin: 0; } + .checkmark { position: absolute; top: 50%; transform: translateY(-50%); left: 0.5rem; height: 28px; width: 28px; background-color: var(--light); border: var(--border); box-shadow: var(--shadow-sm); transition: background-color var(--transition-speed) var(--transition-ease-out); pointer-events: none; } + .radio-mark { border-radius: 50%; } + .checkbox-label input:checked ~ .checkmark:after, .radio-label input:checked ~ .checkmark:after { content: ""; position: absolute; display: block; transform-origin: center center; } + .checkbox-label .checkmark:after { left: 8px; top: 3px; width: 7px; height: 14px; border: solid var(--black); border-width: 0 4px 4px 0; transform: rotate(45deg) scale(0); animation: checkmark-appear var(--transition-speed) var(--transition-ease-out) forwards; } + .radio-label .checkmark:after { top: 5px; left: 5px; width: 12px; height: 12px; background-color: var(--black); border-radius: 50%; transform: scale(0); animation: radio-appear var(--transition-speed) var(--transition-ease-out) forwards; } + @keyframes checkmark-appear { 0% { transform: scale(0) rotate(45deg); opacity: 0; } 70% { transform: scale(1.1) rotate(45deg); opacity: 1; } 100% { transform: scale(1) rotate(45deg); opacity: 1; } } + @keyframes radio-appear { 0% { transform: scale(0); opacity: 0; } 70% { transform: scale(1.1); opacity: 1; } 100% { transform: scale(1); opacity: 1; } } + + /* Lists */ + .item-list { list-style: none; padding: 0; margin: 0; } + .list-item { + border: var(--border); + padding: 0; /* Remove padding here, add to content */ + margin-bottom: 1rem; + background-color: var(--light); + box-shadow: var(--shadow-md); + display: flex; /* Use flex on the outer item */ + align-items: stretch; /* Stretch children vertically */ + transition: box-shadow var(--transition-speed) var(--transition-ease-out); + position: relative; + overflow: hidden; /* Needed for swipe actions reveal */ + } + .list-item::before { content: ""; position: absolute; inset: 0; background-image: var(--paper-texture); opacity: 0.4; z-index: 0; pointer-events: none; } + .list-item.completed .item-text { text-decoration: line-through; text-decoration-thickness: 2px; text-decoration-color: var(--dark); } + .list-item.completed { opacity: 0.7; } + /* --- Swipe Functionality Structure --- */ + .list-item-content { + display: flex; + flex-wrap: wrap; /* Allow wrapping inside content area */ + align-items: center; + padding: 1rem; /* Add padding here */ + flex-grow: 1; /* Take available space */ + background-color: var(--light); /* Ensure bg covers area */ + position: relative; /* To stay above ::before */ + z-index: 1; /* Above texture */ + transition: transform 0.3s ease-out; /* Swipe animation */ + width: 100%; /* Ensure it takes full width initially */ + } + .swipe-actions { + position: absolute; + top: 0; + right: 0; + height: 100%; + display: flex; + align-items: stretch; /* Make buttons fill height */ + z-index: 0; /* Below content initially */ + transform: translateX(100%); /* Initially hidden off-screen */ + transition: transform 0.3s ease-out; + } + .swipe-actions .btn { + height: 100%; + margin: 0; + border-radius: 0; + border-left: var(--border); /* Separator */ + border-top: none; + border-bottom: none; + border-right: none; + box-shadow: none; + font-size: 0.9rem; + min-width: 80px; /* Ensure button has width */ + } + /* State when swiped (JS adds/removes this class) */ + .list-item.is-swiped .list-item-content { + /* Adjust translateX based on desired swipe distance/action width */ + transform: translateX(-160px); /* Example: width of two buttons */ + } + .list-item.is-swiped .swipe-actions { + transform: translateX(0); /* Reveal actions */ + } + /* -------------------------------------- */ + /* Content layout inside .list-item-content */ + .list-item-main { /* Wrapper for checkbox and text */ + display: flex; + align-items: center; + flex-grow: 1; /* Takes up space, pushing details right */ + margin-right: 1rem; /* Space before details */ + min-width: 150px; /* Prevent excessive shrinking */ + } + .list-item .checkbox-label { flex-shrink: 0; margin-bottom: 0; } + .item-text { margin-left: 1rem; flex-grow: 1; min-width: 50px; } /* Allow text to grow */ + .list-item-details { /* Wrapper for avatar, badges, actions (non-swipe) */ + display: flex; + align-items: center; + flex-wrap: nowrap; /* Prevent wrapping of these items */ + flex-shrink: 0; /* Don't shrink this container */ + margin-left: auto; /* Push to the right on larger screens */ + } + .list-item-details > * { margin-left: 0.5rem; } /* Spacing between items in details */ + .list-item-details > :first-child { margin-left: 0; } + .list-item-details .avatar { margin: 0; } /* Reset avatar margin */ + .list-item-actions { /* Non-swipe actions styling */ + display: flex; + align-items: center; + padding-left: 0.5rem; /* Space before non-swipe actions */ + } + .list-item-actions .btn { padding: 0.4rem 0.8rem; font-size: 0.9rem; margin: 0 0 0 0.25rem; } + + /* Badges & Avatars */ + .item-badge { display: inline-block; padding: 0.25rem 0.6rem; background-color: var(--secondary); border: 2px solid var(--black); margin: 0.25rem 0; font-weight: bold; box-shadow: var(--shadow-sm); font-size: 0.85rem; text-transform: uppercase; flex-shrink: 0; position: relative; } + .badge-accent { background-color: var(--accent); } + .badge-accent.badge-sticky::after { content: ""; position: absolute; bottom: -1px; right: -1px; width: 50%; height: 50%; background: linear-gradient( 135deg, transparent 50%, rgba(0,0,0,0.15) 50% ); transform: skew(-15deg, -15deg) translate(2px, 2px); filter: blur(1px); border-bottom-right-radius: 3px; z-index: -1; box-shadow: 2px 2px 3px rgba(0,0,0,0.2); } + .badge-settled { background-color: var(--secondary-accent); color: var(--dark); } + .badge-pending { background-color: var(--warning); color: var(--dark); } + .avatar { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; background-color: var(--secondary); color: var(--dark); border: 2px solid var(--black); box-shadow: var(--shadow-sm); font-weight: bold; font-size: 1rem; text-transform: uppercase; margin: 0.25rem; flex-shrink: 0; overflow: hidden; cursor: default; } + .avatar img { width: 100%; height: 100%; object-fit: cover; } + + /* Tabs */ + .tabs { margin-bottom: 2rem; } + .tab-list { display: flex; flex-wrap: wrap; list-style: none; padding: 0; margin: 0 0 -3px 0; /* Overlap border */ position: relative; z-index: 1; /* Above content by default */ } + .tab-item { padding: 0.75rem 1.5rem; background-color: var(--light); border: var(--border); border-bottom-color: var(--border-color); margin-right: 0.5rem; margin-bottom: 0; /* Remove bottom margin */ cursor: pointer; font-weight: bold; position: relative; box-shadow: var(--shadow-sm); transition: transform var(--transition-speed) var(--transition-ease-out), box-shadow var(--transition-speed) var(--transition-ease-out), background-color var(--transition-speed) var(--transition-ease-out), color var(--transition-speed) var(--transition-ease-out), border-color var(--transition-speed) var(--transition-ease-out); text-transform: uppercase; letter-spacing: 0.5px; flex-grow: 0; } + .tab-item[aria-selected="true"] { + background-color: var(--primary); + color: var(--dark); + border-color: var(--black); /* Ensure all borders are black */ + border-bottom-color: var(--primary); /* Match background to hide border */ + box-shadow: var(--shadow-md); + z-index: 2; /* Bring active tab forward */ + /* transform: translateY(-3px); REMOVED */ + } + .tab-item:not([aria-selected="true"]):hover { background-color: var(--secondary); transform: translateY(-2px); box-shadow: var(--shadow-md); } + .tab-content { + padding: 1.5rem; + border: var(--border); + background-color: var(--light); + box-shadow: var(--shadow-md); + position: relative; + overflow: hidden; /* Keep hidden for content flow */ + margin-top: -3px; /* Pull up behind active tab */ + z-index: 0; /* Ensure content is behind tab list */ + } + .tab-content[hidden] { display: none; } + .tab-content::before { content: ""; position: absolute; inset: 0; background-image: var(--paper-texture); opacity: 0.6; z-index: 0; pointer-events: none; } + .tab-content > * { position: relative; z-index: 1; } + + /* Modal */ + .modal-backdrop { position: fixed; inset: 0; background-color: rgba(57, 62, 70, 0.7); display: flex; align-items: center; justify-content: center; z-index: 1000; opacity: 0; visibility: hidden; transition: opacity var(--transition-speed) var(--transition-ease-out), visibility 0s linear var(--transition-speed); } + .modal-backdrop.open { opacity: 1; visibility: visible; transition: opacity var(--transition-speed) var(--transition-ease-out), visibility 0s linear 0s; } + .modal-container { background-color: var(--light); border: var(--border); width: 90%; max-width: 550px; box-shadow: var(--shadow-lg); position: relative; /* overflow: hidden; */ /* Can cause tooltip clipping */ transform: scale(0.95) translateY(-20px); transition: transform var(--transition-speed) var(--transition-ease-out); max-height: 90vh; display: flex; flex-direction: column; } + .modal-container::before { content: ""; position: absolute; inset: 0; background-image: var(--paper-texture); opacity: 0.6; z-index: 0; pointer-events: none; } + .modal-backdrop.open .modal-container { transform: scale(1) translateY(0); } + .modal-header { padding: 1rem 1.5rem; border-bottom: var(--border); display: flex; justify-content: space-between; align-items: center; background-color: rgba(255, 255, 255, 0.5); flex-shrink: 0; position: relative; z-index: 1; } + .modal-header h3 { margin-bottom: 0; padding-bottom: 0; } + .modal-header h3::after { display: none; } + .modal-body { padding: 1.5rem; overflow-y: auto; position: relative; z-index: 1; flex-grow: 1; } + .modal-footer { padding: 1rem 1.5rem; border-top: var(--border); display: flex; justify-content: flex-end; background-color: rgba(255, 255, 255, 0.5); flex-shrink: 0; position: relative; z-index: 1; } + .close-button { background: none; border: none; font-size: 2rem; font-weight: bold; cursor: pointer; padding: 0; line-height: 1; color: var(--dark); transition: color var(--transition-speed) var(--transition-ease-out), transform var(--transition-speed-fast) ease-out; } + .close-button .icon { margin: 0; } + .close-button:hover { color: var(--danger); transform: scale(1.1); } + .modal-container.confirm-modal .modal-body { text-align: center; } + .modal-container.confirm-modal .modal-footer { justify-content: center; } + .modal-container.confirm-modal .icon-lg { color: var(--danger); margin-bottom: 1rem; display: inline-block; } + + /* Alerts */ + .alert { + padding: 1rem 1.5rem; + margin-bottom: 1.5rem; + border: var(--border); + border-left-width: 6px; /* Thicker left border */ + box-shadow: var(--shadow-md); + font-weight: bold; + position: relative; + overflow: hidden; /* Keep overflow for ::before */ + letter-spacing: 0.5px; + display: flex; + align-items: center; + justify-content: space-between; /* Space out content and close button */ + } + .alert::before { content: ""; position: absolute; inset: 0; background-image: var(--paper-texture); opacity: 0.6; z-index: 0; pointer-events: none;} + .alert > .alert-content { /* Wrap main content */ + display: flex; + align-items: center; + flex-grow: 1; /* Take available space */ + margin-right: 1rem; /* Space before close button */ + position: relative; z-index: 1; + } + .alert .icon { margin-right: 0.8em; flex-shrink: 0; } + .alert-close-btn { + background: none; + border: none; + color: inherit; /* Inherit color from alert text */ + opacity: 0.7; + font-size: 1.5rem; + line-height: 1; + padding: 0 0.25rem; + cursor: pointer; + transition: opacity 0.2s ease-out; + flex-shrink: 0; /* Prevent shrinking */ + position: relative; z-index: 1; + } + .alert-close-btn:hover { opacity: 1; } + .alert-close-btn .icon { margin: 0; } + + .alert-success { background-color: var(--success); color: var(--dark); border-left-color: hsl(120, 60%, 45%); } /* Darker green border */ + .alert-warning { background-color: var(--warning); color: var(--dark); border-left-color: hsl(45, 100%, 45%); } /* Darker yellow/orange border */ + .alert-error { background-color: #ffcccc; border-color: var(--danger); color: var(--dark); border-left-color: var(--danger); } + .alert-info { background-color: var(--secondary-accent); color: var(--dark); border-left-color: hsl(200, 100%, 45%); } /* Darker blue border */ + + + /* Progress Bar */ + .progress-container { width: 100%; height: 35px; background-color: var(--light); border: var(--border); box-shadow: var(--shadow-md); margin-bottom: 1.5rem; position: relative; overflow: hidden; } + .progress-bar { height: 100%; background-color: var(--primary); position: relative; transition: width 0.5s var(--transition-ease-out); background-image: var(--progress-texture); display: flex; align-items: center; justify-content: center; } + .progress-text { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--dark); font-weight: bold; z-index: 1; text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.7); font-size: 0.9rem; white-space: nowrap; } + + /* Toggle Switch - Refined */ + .switch-container { + position: relative; + display: inline-block; + width: 64px; /* Slightly smaller */ + height: 34px; /* Slightly smaller */ + margin-bottom: 1rem; + vertical-align: middle; + } + .switch-container input { position: absolute; opacity: 0; width: 100%; height: 100%; top: 0; left: 0; margin: 0; cursor: pointer; z-index: 2; } + .switch { + position: absolute; + cursor: pointer; + inset: 0; + background-color: var(--light); + border: var(--border); + /* box-shadow: var(--shadow-inset), var(--shadow-sm); REMOVED - potential conflict */ + box-shadow: var(--shadow-inset); /* Keep inset shadow only */ + transition: background-color 0.4s var(--transition-ease-out); + pointer-events: none; + z-index: 1; + } + .switch:before { + position: absolute; + content: ""; + height: 24px; /* Adjusted size */ + width: 24px; /* Adjusted size */ + left: 2px; /* Adjusted position */ + top: 50%; /* Center vertically */ + background-color: var(--dark); + border: 2px solid var(--light); + box-shadow: var(--shadow-sm); + transition: transform 0.4s var(--transition-ease-out), + background-color 0.4s var(--transition-ease-out), + border-color 0.4s var(--transition-ease-out); + transform: translateY(-50%); /* Vertical centering */ + } + .switch-container input:checked + .switch { background-color: var(--secondary-accent); } + .switch-container input:checked + .switch:before { + background-color: var(--light); + border-color: var(--dark); + /* Width (64) - border*2 (6) - left (2) - width (24) = 32 */ + transform: translate(30px, -50%); /* Adjusted translation */ + } + + /* Tables */ + .table-container { overflow-x: auto; margin-bottom: 1.5rem; border: var(--border); box-shadow: var(--shadow-md); background-color: var(--light); position: relative; /* overflow: hidden; */ /* Can clip tooltips */ } + .table-container::before { content: ""; position: absolute; inset: 0; background-image: var(--paper-texture); opacity: 0.6; z-index: 0; pointer-events: none; } + .table { width: 100%; border-collapse: collapse; border-spacing: 0; position: relative; z-index: 1; min-width: 600px; } + .table th, .table td { padding: 0.8rem 1rem; text-align: left; border-bottom: var(--border-width) var(--border-style) var(--border-color); border-right: 1px dashed rgba(0,0,0,0.1); white-space: nowrap; vertical-align: middle; } + .table th:last-child, .table td:last-child { border-right: none; } + .table thead th { background-color: var(--primary); color: var(--dark); text-transform: uppercase; letter-spacing: 1px; font-weight: bold; border-top: none; border-bottom-width: var(--border-width); position: sticky; top: -1px; z-index: 2; } + .table tbody tr:last-child td { border-bottom: none; } + .table tbody tr:hover { background-color: rgba(255, 178, 107, 0.2); } + .table tfoot td { border-top: var(--border); font-weight: bold; background-color: rgba(255, 255, 255, 0.5); position: sticky; bottom: -1px; z-index: 2; } + .table .wrap-text { white-space: normal; } + .table .avatar { width: 30px; height: 30px; font-size: 0.9rem; margin-right: 0.5rem; } + + /* Utilities */ + .mb-1 { margin-bottom: 0.5rem !important; } .mb-2 { margin-bottom: 1rem !important; } .mb-3 { margin-bottom: 1.5rem !important; } .mb-4 { margin-bottom: 2rem !important; } + .mt-1 { margin-top: 0.5rem !important; } .mt-2 { margin-top: 1rem !important; } .mt-3 { margin-top: 1.5rem !important; } .mt-4 { margin-top: 2rem !important; } + .ml-1 { margin-left: 0.5rem !important; } .ml-2 { margin-left: 1rem !important; } + .mr-1 { margin-right: 0.5rem !important; } .mr-2 { margin-right: 1rem !important; } + .text-center { text-align: center; } .text-right { text-align: right; } + .flex { display: flex; } .justify-between { justify-content: space-between; } .justify-end { justify-content: flex-end; } .justify-center { justify-content: center; } .items-center { align-items: center; } + .flex-wrap { flex-wrap: wrap; } .flex-nowrap { flex-wrap: nowrap; } + .flex-grow { flex-grow: 1; } .flex-shrink-0 { flex-shrink: 0; } .w-full { width: 100%; } + + /* Tooltip */ + .tooltip { position: relative; display: inline-block; } + .tooltip-trigger { cursor: help; border-bottom: 1px dashed var(--dark); } + .btn.tooltip-trigger { border-bottom: none; } + .tooltip-text { + visibility: hidden; opacity: 0; + min-width: 150px; max-width: 250px; + background-color: var(--dark); color: var(--light); + text-align: center; + border: 2px solid var(--black); padding: 0.75rem; + position: absolute; + z-index: 1500; /* Increased Z-index significantly */ + bottom: 130%; left: 50%; + transform: translateX(-50%) scale(0.95); + transform-origin: bottom center; + transition: opacity var(--transition-speed) var(--transition-ease-out), + visibility 0s linear var(--transition-speed), + transform var(--transition-speed) var(--transition-ease-out); + box-shadow: var(--shadow-md); + font-size: 0.9rem; line-height: 1.4; + pointer-events: none; + } + /* NOTE on Tooltip Clipping: Tooltips use position:absolute and high z-index. + However, if a PARENT element (like .card, .modal-container, .table-container) + has `overflow: hidden` or `overflow: auto/scroll`, the tooltip WILL BE CLIPPED + by that parent's boundaries, regardless of z-index. + The most reliable fix involves JavaScript to append the tooltip to the document body + when shown, removing it from the parent's clipping context. + This CSS provides structure but cannot overcome parent overflow clipping. */ + .tooltip-text::after { content: ""; position: absolute; top: 100%; left: 50%; margin-left: -8px; border-width: 8px; border-style: solid; border-color: var(--dark) transparent transparent transparent; } + .tooltip .tooltip-trigger:hover + .tooltip-text, + .tooltip .tooltip-trigger:focus-visible + .tooltip-text, + .tooltip-text.visible { + visibility: visible; opacity: 1; + transform: translateX(-50%) scale(1); + transition-delay: 0s, 0s, 0s; + } + + /* Spinner - Pulsing Dots */ + .spinner-dots { + display: inline-flex; /* Use flex for alignment */ + align-items: center; /* Vertically center dots */ + justify-content: center; + width: auto; /* Adjust width based on content */ + height: 50px; /* Match old spinner height or adjust */ + } + .spinner-dots span { + display: inline-block; + width: 12px; + height: 12px; + margin: 0 4px; /* Spacing between dots */ + background-color: var(--primary); + border-radius: 50%; + box-shadow: var(--shadow-sm); + animation: pulse-dot 1.2s infinite ease-in-out both; + } + .spinner-dots span:nth-child(1) { animation-delay: -0.32s; } + .spinner-dots span:nth-child(2) { animation-delay: -0.16s; } + .spinner-dots span:nth-child(3) { animation-delay: 0s; } + + @keyframes pulse-dot { + 0%, 80%, 100% { transform: scale(0.8); opacity: 0.5; } + 40% { transform: scale(1.1); opacity: 1; } + } + + /* Small spinner dots */ + .spinner-dots-sm { height: 30px; } /* Adjust height */ + .spinner-dots-sm span { width: 8px; height: 8px; margin: 0 3px; box-shadow: var(--shadow-sm); } + + .btn .spinner-dots-sm { height: auto; vertical-align: middle; margin: 0 0.5em; } /* Spinner inside button */ + .btn .spinner-dots-sm span { background-color: currentColor; } /* Match button text color */ + + + /* Responsive */ + @media (max-width: 768px) { + body { padding: 1rem; font-size: 1rem; } + .card, .modal-container, .tab-content { padding: 1rem; } + .card-header, .card-footer, .modal-header, .modal-footer { padding: 0.75rem 1rem; margin-left: -1rem; margin-right: -1rem; } + .card-header { margin-top: -1rem; margin-bottom: 1rem; } + .card-footer { margin-bottom: -1rem; margin-top: 1rem; } + .modal-header { margin-top: -1rem; margin-bottom: 1rem; } + .modal-footer { margin-bottom: -1rem; margin-top: 1rem; } + .modal-footer .btn { margin: 0.25rem; } + + /* Tabs on mobile */ + .tab-list { margin-bottom: -3px; /* Adjust for border width */ } + .tab-item { flex-grow: 1; margin-right: 0; text-align: center; border-left: none; border-right: none; border-bottom-width: var(--border-width); } + .tab-item:not(:last-child) { border-right: var(--border); } + .tab-item[aria-selected="true"] { border-bottom-color: var(--primary); margin-bottom: 0; /* No longer needs negative margin */ z-index: 2; } + .tab-content { margin-top: -3px; } + + /* List items on mobile */ + .list-item-content { flex-direction: column; align-items: flex-start; } + .list-item-main { margin-right: 0; width: 100%; margin-bottom: 0.5rem;} + .list-item-details { margin-left: 0; margin-top: 0.5rem; flex-wrap: wrap; /* Allow badges/avatar wrap on mobile */ } + .list-item-details > * { margin-left: 0; margin-right: 0.5rem; margin-bottom: 0.25rem; } /* Adjust spacing for wrap */ + .list-item-actions { /* Non-swipe actions */ + width: 100%; + justify-content: flex-end; + margin-top: 0.5rem; + padding-left: 0; + } + /* Adjust swipe reveal distance if needed for mobile */ + .list-item.is-swiped .list-item-content { transform: translateX(-120px); } /* Example smaller distance */ + + + .table { min-width: unset; } + .table thead th { top: -1px; } .table tfoot td { bottom: -1px; } + .table th, .table td { padding: 0.6rem 0.5rem; font-size: 0.9rem; white-space: normal; } + + .flex-layout-stack-mobile { flex-direction: column; } + .flex-layout-stack-mobile > .card { width: 100% !important; margin: 0 0 1.5rem 0 !important; flex-basis: auto !important; } + .form-row-wrap-mobile { flex-direction: column; } + .form-row-wrap-mobile > .form-group { margin-right: 0 !important; width: 100%; } + .form-row-wrap-mobile > .form-group:not(:last-child) { margin-bottom: 1.5rem; } + } diff --git a/fe/src/assets/variables.scss b/fe/src/assets/variables.scss new file mode 100644 index 0000000..ec3c3f3 --- /dev/null +++ b/fe/src/assets/variables.scss @@ -0,0 +1,21 @@ +// src/assets/variables.scss +:root { + --primary-color: #1976D2; + --secondary-color: #26A69A; + --accent-color: #9C27B0; + + --dark-color: #1D1D1D; + --dark-page-color: #121212; + + --positive-color: #21BA45; + --negative-color: #C10015; + --info-color: #31CCEC; + --warning-color: #F2C037; + + --text-color: #333; + --bg-color: #fff; + --bg-color-page: #f0f2f5; + + --header-height: 56px; + --footer-height: 56px; +} \ No newline at end of file diff --git a/fe/src/boot/axios.ts b/fe/src/boot/axios.ts deleted file mode 100644 index e8fa8bd..0000000 --- a/fe/src/boot/axios.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { boot } from 'quasar/wrappers'; -import axios from 'axios'; -import { API_BASE_URL } from 'src/config/api-config'; - -// Create axios instance -const api = axios.create({ - baseURL: API_BASE_URL, - headers: { - 'Content-Type': 'application/json', - }, -}); - -// Request interceptor -api.interceptors.request.use( - (config) => { - const token = localStorage.getItem('token'); - if (token) { - config.headers.Authorization = `Bearer ${token}`; - } - return config; - }, - (error) => { - return Promise.reject(new Error(String(error))); - } -); - -// Response interceptor -api.interceptors.response.use( - (response) => response, - async (error) => { - const originalRequest = error.config; - - // If error is 401 and we haven't tried to refresh token yet - if (error.response?.status === 401 && !originalRequest._retry) { - originalRequest._retry = true; - - try { - const refreshToken = localStorage.getItem('refreshToken'); - if (!refreshToken) { - throw new Error('No refresh token available'); - } - - // Call refresh token endpoint - const response = await api.post('/api/v1/auth/refresh-token', { - refresh_token: refreshToken, - }); - - const { access_token } = response.data; - localStorage.setItem('token', access_token); - - // Retry the original request with new token - originalRequest.headers.Authorization = `Bearer ${access_token}`; - return api(originalRequest); - } catch (refreshError) { - // If refresh token fails, clear storage and redirect to login - localStorage.removeItem('token'); - localStorage.removeItem('refreshToken'); - window.location.href = '/login'; - return Promise.reject(new Error(String(refreshError))); - } - } - - return Promise.reject(new Error(String(error))); - } -); - -export default boot(({ app }) => { - app.config.globalProperties.$axios = axios; - app.config.globalProperties.$api = api; -}); - -export { api }; diff --git a/fe/src/boot/i18n.ts b/fe/src/boot/i18n.ts deleted file mode 100644 index 5b89b30..0000000 --- a/fe/src/boot/i18n.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { defineBoot } from '#q-app/wrappers'; -import { createI18n } from 'vue-i18n'; - -import messages from 'src/i18n'; - -export type MessageLanguages = keyof typeof messages; -// Type-define 'en-US' as the master schema for the resource -export type MessageSchema = typeof messages['en-US']; - -// See https://vue-i18n.intlify.dev/guide/advanced/typescript.html#global-resource-schema-type-definition -/* eslint-disable @typescript-eslint/no-empty-object-type */ -declare module 'vue-i18n' { - // define the locale messages schema - export interface DefineLocaleMessage extends MessageSchema {} - - // define the datetime format schema - export interface DefineDateTimeFormat {} - - // define the number format schema - export interface DefineNumberFormat {} -} -/* eslint-enable @typescript-eslint/no-empty-object-type */ - -export default defineBoot(({ app }) => { - const i18n = createI18n<{ message: MessageSchema }, MessageLanguages>({ - locale: 'en-US', - legacy: false, - messages, - }); - - // Set i18n instance on app - app.use(i18n); -}); diff --git a/fe/src/components/ConflictResolutionDialog.vue b/fe/src/components/ConflictResolutionDialog.vue index e536175..a8348a6 100644 --- a/fe/src/components/ConflictResolutionDialog.vue +++ b/fe/src/components/ConflictResolutionDialog.vue @@ -1,174 +1,171 @@ - \ No newline at end of file diff --git a/fe/src/components/CreateListModal.vue b/fe/src/components/CreateListModal.vue index 06914b4..0640e7c 100644 --- a/fe/src/components/CreateListModal.vue +++ b/fe/src/components/CreateListModal.vue @@ -1,47 +1,64 @@ + + \ No newline at end of file diff --git a/fe/src/components/EssentialLink.vue b/fe/src/components/EssentialLink.vue index 47f3857..0b7382b 100644 --- a/fe/src/components/EssentialLink.vue +++ b/fe/src/components/EssentialLink.vue @@ -1,35 +1,74 @@ + + \ No newline at end of file diff --git a/fe/src/components/OfflineIndicator.vue b/fe/src/components/OfflineIndicator.vue index 935d839..8d36b3f 100644 --- a/fe/src/components/OfflineIndicator.vue +++ b/fe/src/components/OfflineIndicator.vue @@ -1,131 +1,142 @@ - \ No newline at end of file diff --git a/fe/src/components/global/NotificationDisplay.vue b/fe/src/components/global/NotificationDisplay.vue new file mode 100644 index 0000000..1288db9 --- /dev/null +++ b/fe/src/components/global/NotificationDisplay.vue @@ -0,0 +1,141 @@ + + + + + \ No newline at end of file diff --git a/fe/src/config/api.ts b/fe/src/config/api.ts index 72b24ae..7cddb43 100644 --- a/fe/src/config/api.ts +++ b/fe/src/config/api.ts @@ -1,4 +1,4 @@ -import { api } from 'boot/axios'; +import { api } from '@/services/api'; import { API_BASE_URL, API_VERSION, API_ENDPOINTS } from './api-config'; // Helper function to get full API URL diff --git a/fe/src/css/app.scss b/fe/src/css/app.scss deleted file mode 100644 index ecac98f..0000000 --- a/fe/src/css/app.scss +++ /dev/null @@ -1 +0,0 @@ -// app global css in SCSS form diff --git a/fe/src/css/quasar.variables.scss b/fe/src/css/quasar.variables.scss deleted file mode 100644 index 3996ce1..0000000 --- a/fe/src/css/quasar.variables.scss +++ /dev/null @@ -1,25 +0,0 @@ -// Quasar SCSS (& Sass) Variables -// -------------------------------------------------- -// To customize the look and feel of this app, you can override -// the Sass/SCSS variables found in Quasar's source Sass/SCSS files. - -// Check documentation for full list of Quasar variables - -// Your own variables (that are declared here) and Quasar's own -// ones will be available out of the box in your .vue/.scss/.sass files - -// It's highly recommended to change the default colors -// to match your app's branding. -// Tip: Use the "Theme Builder" on Quasar's documentation website. - -$primary : #1976D2; -$secondary : #26A69A; -$accent : #9C27B0; - -$dark : #1D1D1D; -$dark-page : #121212; - -$positive : #21BA45; -$negative : #C10015; -$info : #31CCEC; -$warning : #F2C037; diff --git a/fe/src/env.d.ts b/fe/src/env.d.ts deleted file mode 100644 index 12dcd18..0000000 --- a/fe/src/env.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare namespace NodeJS { - interface ProcessEnv { - NODE_ENV: string; - VUE_ROUTER_MODE: 'hash' | 'history' | 'abstract' | undefined; - VUE_ROUTER_BASE: string | undefined; - } -} diff --git a/fe/src/layouts/AuthLayout.vue b/fe/src/layouts/AuthLayout.vue index f038553..5cab02b 100644 --- a/fe/src/layouts/AuthLayout.vue +++ b/fe/src/layouts/AuthLayout.vue @@ -1,11 +1,28 @@ +// src/layouts/AuthLayout.vue + + \ No newline at end of file diff --git a/fe/src/layouts/MainLayout.vue b/fe/src/layouts/MainLayout.vue index 8bbbbee..62b1b93 100644 --- a/fe/src/layouts/MainLayout.vue +++ b/fe/src/layouts/MainLayout.vue @@ -1,93 +1,189 @@ - + +.dropdown-menu { + position: absolute; + right: 0; + top: calc(100% + 5px); + background-color: white; + border: 1px solid #ddd; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0,0,0,0.15); + min-width: 150px; + z-index: 101; + + a { + display: block; + padding: 0.5rem 1rem; + color: var(--text-color); + text-decoration: none; + &:hover { + background-color: #f5f5f5; + } + } +} + + +.page-container { + flex-grow: 1; + padding: 1rem; // Add some default padding + padding-bottom: calc(var(--footer-height) + 1rem); // Space for fixed footer +} + +.app-footer { + background-color: white; + border-top: 1px solid #e0e0e0; + height: var(--footer-height); + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 100; +} + +.tabs { + display: flex; + height: 100%; +} + +.tab-item { + flex-grow: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: var(--text-color); // Or a specific inactive tab color + text-decoration: none; + font-size: 0.8rem; // Example size + padding: 0.5rem 0; + border-bottom: 2px solid transparent; + + + // Icon would go here if you add them + // Example: svg or for icon fonts + + &.active { + color: var(--primary-color); + border-bottom-color: var(--primary-color); + } + + &:hover { + background-color: #f0f0f0; + } +} + \ No newline at end of file diff --git a/fe/src/main.ts b/fe/src/main.ts new file mode 100644 index 0000000..c3c38cd --- /dev/null +++ b/fe/src/main.ts @@ -0,0 +1,41 @@ +import { createApp } from 'vue'; +import { createPinia } from 'pinia'; +import App from './App.vue'; +import router from './router'; +// import { createI18n } from 'vue-i18n'; +// import messages from '@/i18n'; // Import from absolute path + +// Global styles +import './assets/main.scss'; + +// API client (from your axios boot file) +import { api, globalAxios } from '@/services/api'; // Renamed from boot/axios to services/api + +// Vue I18n setup (from your i18n boot file) +// export type MessageLanguages = keyof typeof messages; +// export type MessageSchema = (typeof messages)['en-US']; + +// declare module 'vue-i18n' { +// export interface DefineLocaleMessage extends MessageSchema {} +// // eslint-disable-next-line @typescript-eslint/no-empty-object-type +// export interface DefineDateTimeFormat {} +// // eslint-disable-next-line @typescript-eslint/no-empty-object-type +// export interface DefineNumberFormat {} +// } +// const i18n = createI18n<{ message: MessageSchema }>({ +// locale: 'en-US', +// fallbackLocale: 'en-US', +// messages, +// }); + +const app = createApp(App); + +app.use(createPinia()); +app.use(router); +// app.use(i18n); + +// Make API instance globally available (optional, prefer provide/inject or store) +app.config.globalProperties.$api = api; +app.config.globalProperties.$axios = globalAxios; // The original axios instance if needed + +app.mount('#app'); \ No newline at end of file diff --git a/fe/src/pages/AccountPage.vue b/fe/src/pages/AccountPage.vue index a8e99e8..4916c25 100644 --- a/fe/src/pages/AccountPage.vue +++ b/fe/src/pages/AccountPage.vue @@ -1,160 +1,130 @@ + + \ No newline at end of file diff --git a/fe/src/pages/ErrorNotFound.vue b/fe/src/pages/ErrorNotFound.vue index 4227d8d..36c554d 100644 --- a/fe/src/pages/ErrorNotFound.vue +++ b/fe/src/pages/ErrorNotFound.vue @@ -1,27 +1,49 @@ + + \ No newline at end of file diff --git a/fe/src/pages/GroupDetailPage.vue b/fe/src/pages/GroupDetailPage.vue index 33d3414..541b31b 100644 --- a/fe/src/pages/GroupDetailPage.vue +++ b/fe/src/pages/GroupDetailPage.vue @@ -1,79 +1,110 @@ +.page-padding { + padding: 1rem; +} +.mt-1 { margin-top: 0.5rem; } +.mt-2 { margin-top: 1rem; } +.mt-3 { margin-top: 1.5rem; } +.mt-4 { margin-top: 2rem; } +.mb-3 { margin-bottom: 1.5rem; } +.ml-1 { margin-left: 0.25rem; } /* Adjusted from Valerie UI for tighter fit */ + +.form-success-text { + color: var(--success); /* Or a darker green for text */ + font-size: 0.9rem; + font-weight: bold; +} +.flex-grow { flex-grow: 1; } + \ No newline at end of file diff --git a/fe/src/pages/GroupsPage.vue b/fe/src/pages/GroupsPage.vue index 1ed639c..a55e903 100644 --- a/fe/src/pages/GroupsPage.vue +++ b/fe/src/pages/GroupsPage.vue @@ -1,129 +1,156 @@ +.page-padding { padding: 1rem; } +.mb-3 { margin-bottom: 1.5rem; } +.mt-1 { margin-top: 0.5rem; } +.ml-2 { margin-left: 0.5rem; } + +.interactive-list-item { + cursor: pointer; + transition: background-color var(--transition-speed) var(--transition-ease-out); +} +.interactive-list-item:hover, +.interactive-list-item:focus-visible { + background-color: rgba(0,0,0,0.03); + outline: var(--focus-outline); + outline-offset: -3px; /* Adjust to be inside the border */ +} + +.form-error-text { + color: var(--danger); + font-size: 0.85rem; +} +.flex-grow { flex-grow: 1; } + +details > summary { + list-style: none; /* Hide default marker */ +} +details > summary::-webkit-details-marker { + display: none; /* Hide default marker for Chrome */ +} +.expand-icon { + transition: transform 0.2s ease-in-out; +} +details[open] .expand-icon { + transform: rotate(180deg); +} +.cursor-pointer { cursor: pointer; } + \ No newline at end of file diff --git a/fe/src/pages/IndexPage.vue b/fe/src/pages/IndexPage.vue index 43ca6a0..28f50be 100644 --- a/fe/src/pages/IndexPage.vue +++ b/fe/src/pages/IndexPage.vue @@ -1,43 +1,49 @@ + + \ No newline at end of file diff --git a/fe/src/pages/ListDetailPage.vue b/fe/src/pages/ListDetailPage.vue index b2142bd..70d13a3 100644 --- a/fe/src/pages/ListDetailPage.vue +++ b/fe/src/pages/ListDetailPage.vue @@ -1,291 +1,273 @@