diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..f06235c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +node_modules +dist diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 35ab30a..0000000 --- a/.eslintignore +++ /dev/null @@ -1,12 +0,0 @@ -.md -node_modules -public -package.json -*.yaml -.gitignore -.eslintrc* -.babelrc -.eslintignore -.commitlintrc* -.env* -tsconfig* \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 0fba0f6..0000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,57 +0,0 @@ -module.exports = { - env: { - browser: true, - es2021: true, - node: true, - }, - extends: [ - "eslint:recommended", - "plugin:vue/vue3-essential", - "plugin:@typescript-eslint/recommended", - ], - overrides: [], - parser: "vue-eslint-parser", - parserOptions: { - ecmaVersion: "latest", - parser: "@typescript-eslint/parser", - sourceType: "module", - }, - plugins: ["vue", "@typescript-eslint"], - rules: { - "@typescript-eslint/ban-types": [ - "error", - { - extendDefaults: true, - types: { - "{}": false, - }, - }, - ], - // 关闭typescript类型为any的警告 - "@typescript-eslint/no-explicit-any": ["off"], - // 驼峰命名,但忽略index - "vue/multi-word-component-names": [ - "error", - { - ignores: ["index"], //需要忽略的组件名 - }, - ], - "no-console": "warn", - "no-debugger": "warn", - // complexity: ["warn", { max: 5 }], - // 禁止使用多个空格 - "no-multi-spaces": "error", - // 最大连续空行数 - "no-multiple-empty-lines": ["error", { max: 2, maxEOF: 1, maxBOF: 0 }], - // 代码块中去除前后空行 - "padded-blocks": ["error", "never"], - // 使用单引号,字符串中包含了一个其它引号 允许"a string containing 'single' quotes" - quotes: ["error", "single", { avoidEscape: true }], - // return之前必须空行 - "newline-before-return": "error", - //文件末尾强制换行 - "eol-last": ["error", "always"], - //禁止空格和 tab 的混合缩进 - "no-mixed-spaces-and-tabs": ["error", "smart-tabs"], - }, -}; diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 05ea413..99fa5f1 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -4,8 +4,6 @@ name: Node.js CI on: - push: - branches: [ "main" ] pull_request: branches: [ "main" ] @@ -17,7 +15,7 @@ jobs: contents: read strategy: matrix: - node-version: [18.x] + node-version: [20.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: diff --git a/.gitignore b/.gitignore index c6bba59..0dffb53 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ yarn-debug.log* yarn-error.log* lerna-debug.log* .pnpm-debug.log* - +pnpm-lock.yaml # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json @@ -128,3 +128,4 @@ dist .yarn/build-state.yml .yarn/install-state.gz .pnp.* +target \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2f8dcc6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +# 使用官方的 Node 镜像作为基础镜像 +FROM node:20.12.2 + +# 设置工作目录 +WORKDIR /usr/src/app + +# 将本地的 Vite 项目文件复制到工作目录 +COPY . . + +# 安装依赖 + +RUN npm install pnpm -g + +RUN pnpm install + +# 执行 Vite 构建命令,生成 dist 目录 +RUN pnpm build + +# 使用 Nginx 镜像作为运行时镜像 +FROM nginx:1.26 + +# 修改nginx配置 +# 向 #error_page 前添加内容 +# location /log-lottery { +# alias /usr/share/nginx/log-lottery; +# index index.html index.htm; +# try_files $uri $uri/ /log-lottery/index.html; +# } +RUN sed -i 's/#error_page/location \/log-lottery {\n alias \/usr\/share\/nginx\/log-lottery;\n index index.html index.htm;\n try_files $uri $uri\/ \/log-lottery\/index.html;\n }\n#error_page/' /etc/nginx/conf.d/default.conf + +# 将 Vite 项目的 dist 目录复制到 Nginx 的默认静态文件目录 +COPY --from=0 /usr/src/app/dist /usr/share/nginx/log-lottery + +# 暴露容器的 80 端口 +EXPOSE 80 + +# Nginx 会在容器启动时自动运行,无需手动设置 CMD diff --git a/README.md b/README.md index 8773379..954cbcd 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,26 @@ -

- - +

+ + -

# log-lottery 🚀🚀🚀🚀 +[![MIT](https://img.shields.io/github/package-json/v/log1997/log-lottery)](https://github.com/LOG1997/log-lottery) [![MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/LOG1997/log-lottery) [![github](https://img.shields.io/badge/Author-log1997-blue.svg)](https://github.com/log1997) -[![vue3](https://img.shields.io/badge/VUE-3.0-green.svg)](https://github.com/log1997) +[![vue3](https://img.shields.io/badge/VUE-3-green.svg)](https://github.com/log1997) +[![build](https://img.shields.io/github/actions/workflow/status/log1997/log-lottery/node.js.yml)](https://github.com/log1997) + +
log-lottery是一个可配置可定制化的抽奖应用,炫酷3D球体,可用于年会抽奖等活动,支持奖品、人员、界面、图片音乐配置。 > 因原域名到期,现将原域名 () 迁移到 () 。 -如果进入到新域名遇到图片无法访问的情况,请到【全局配置】-【界面配置】菜单中点击【重置所有数据】按钮进行更新 + +> 如果进入网站遇到图片无法显示或有报错的情况,请先到【全局配置】-【界面配置】菜单中点击【重置所有数据】按钮清除数据后进行更新。 + +> 请尽量拉取代码进行构建部署,本线上网站代码会保持更新,可能影响原有功能和数据。 ## 要求 @@ -38,10 +44,13 @@ or - [x] 🖼️ excel表格导入人员名单、抽奖结果使用excel导出 - [x] 🎈 可增加临时抽奖 - [x] 🧨 国际化多语言 -- [ ] 添加docker构建部署和镜像 -- [ ] 更换背景图片 +- [x] 🍃 更换背景图片 +- [x] 🚅 添加docker构建 +- [x] 😘 弹幕(开发中) +- [ ] 🧵 卡片组成多种形状 + ... -需要更多功能请留言 +需要更多功能或发现bug请留言[issues](https://github.com/LOG1997/log-lottery/issues) ## 详细介绍 @@ -105,24 +114,64 @@ or ```bash pnpm i +or +npm install ``` 开发运行 ```bash pnpm dev +or +npm run dev ``` 打包 ```bash pnpm build +or +npm run build +``` + +预览 + +```bash +pnpm preview +or +npm run preview +``` + +若想直接以打开html文件的方式运行,请执行以下命令进行打包。打包完成后在dist目录中直接打开index.html即可。 + +```bash +pnpm build:file +or +npm run build:file ``` > 项目思路来源于 +## Docker支持 + +构建镜像 + +```bash +docker build -t log-lottery . +``` + +运行容器 + +```bash +docker run -d -p 9279:80 log-lottery +``` + +容器运行成功后即可在本地通过访问 + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=LOG1997/log-lottery&type=Date)](https://star-history.com/#LOG1997/log-lottery&Date) + ## License [MIT](http://opensource.org/licenses/MIT) - -Copyright (c) 2024-present log1997 diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..b48901c --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,7 @@ +import antfu from '@antfu/eslint-config' + +export default antfu( + { + ignores: ['**/node_modules', '**/public', '**/dist', '**/package.json', '**/*.yaml', '**/.gitignore', '**/.env*', '**/tsconfig*'], + }, +) diff --git a/package.json b/package.json index 9fbafad..0e47df5 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,19 @@ { "name": "log-lottery", "private": true, - "version": "0.0.2", + "version": "0.0.3", "type": "module", "license": "MIT", "scripts": { "dev": "vite --host 0.0.0.0", "build": "vue-tsc --noEmit && vite build", "build:pre": "vue-tsc --noEmit && vite build --mode prebuild", + "build:file": "vue-tsc --noEmit && vite build --mode file", "test": "vitest", "test:ui": "vitest --ui", "preview": "vite preview", - "lint": "eslint ./src --ext .vue,.js,.ts,.jsx,.tsx --fix" + "lint": "eslint ./src", + "lint:fix": "eslint ./src --fix" }, "dependencies": { "@tweenjs/tween.js": "^23.1.2", @@ -25,11 +27,11 @@ "pinia": "^2.2.6", "pinia-plugin-persist": "^1.0.0", "sparticles": "^1.3.1", - "theme-change": "^2.5.0", "three": "^0.166.0", "three-css3d": "^1.0.6", "vue": "^3.5.13", "vue-dompurify-html": "^5.2.0", + "vue-i18n": "^10.0.4", "vue-router": "^4.5.0", "vue-toast-notification": "^3", "vue3-colorpicker": "^2.3.0", @@ -37,6 +39,9 @@ "zod": "^3.23.8" }, "devDependencies": { + "@antfu/eslint-config": "^3.9.2", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.15.0", "@iconify-json/ep": "^1.2.1", "@iconify-json/fluent": "^1.2.8", "@tailwindcss/typography": "^0.5.15", @@ -47,6 +52,7 @@ "@types/three": "^0.166.0", "@typescript-eslint/eslint-plugin": "^8.16.0", "@typescript-eslint/parser": "^8.16.0", + "@vitejs/plugin-legacy": "^6.0.0", "@vitejs/plugin-vue": "^5.2.0", "@vitest/ui": "^2.1.5", "@vue/test-utils": "^2.4.6", @@ -54,6 +60,7 @@ "daisyui": "^4.12.14", "eslint": "^9.15.0", "eslint-plugin-vue": "^9.31.0", + "globals": "^15.12.0", "happy-dom": "^15.11.6", "husky": "^9.1.7", "jsdom": "^25.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb6b0a5..f463724 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,6 +56,9 @@ importers: vue-dompurify-html: specifier: ^5.2.0 version: 5.2.0(vue@3.5.13(typescript@5.5.3)) + vue-i18n: + specifier: ^10.0.4 + version: 10.0.5(vue@3.5.13(typescript@5.5.3)) vue-router: specifier: ^4.5.0 version: 4.5.0(vue@3.5.13(typescript@5.5.3)) @@ -72,6 +75,15 @@ importers: specifier: ^3.23.8 version: 3.23.8 devDependencies: + '@antfu/eslint-config': + specifier: ^3.9.2 + version: 3.12.1(@typescript-eslint/utils@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(@vue/compiler-sfc@3.5.13)(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)(vitest@2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@25.0.1)(sass@1.81.0)(terser@5.36.0)) + '@eslint/eslintrc': + specifier: ^3.2.0 + version: 3.2.0 + '@eslint/js': + specifier: ^9.15.0 + version: 9.15.0 '@iconify-json/ep': specifier: ^1.2.1 version: 1.2.1 @@ -102,6 +114,9 @@ importers: '@typescript-eslint/parser': specifier: ^8.16.0 version: 8.16.0(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + '@vitejs/plugin-legacy': + specifier: ^6.0.0 + version: 6.0.0(terser@5.36.0)(vite@5.4.11(@types/node@22.9.4)(sass@1.81.0)(terser@5.36.0)) '@vitejs/plugin-vue': specifier: ^5.2.0 version: 5.2.0(vite@5.4.11(@types/node@22.9.4)(sass@1.81.0)(terser@5.36.0))(vue@3.5.13(typescript@5.5.3)) @@ -123,6 +138,9 @@ importers: eslint-plugin-vue: specifier: ^9.31.0 version: 9.31.0(eslint@9.15.0(jiti@1.21.6)) + globals: + specifier: ^15.12.0 + version: 15.14.0 happy-dom: specifier: ^15.11.6 version: 15.11.6 @@ -164,7 +182,7 @@ importers: version: 0.20.1(@vue/compiler-sfc@3.5.13)(vue-template-compiler@2.7.15) unplugin-vue-components: specifier: ^0.27.4 - version: 0.27.4(@babel/parser@7.26.2)(rollup@4.27.4)(vue@3.5.13(typescript@5.5.3)) + version: 0.27.4(@babel/parser@7.26.3)(rollup@4.27.4)(vue@3.5.13(typescript@5.5.3)) vite: specifier: ^5.4.11 version: 5.4.11(@types/node@22.9.4)(sass@1.81.0)(terser@5.36.0) @@ -204,9 +222,58 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/eslint-config@3.12.1': + resolution: {integrity: sha512-6sRgO4u63GK75xeZ2MfCSRT9GcfLti4ZN3Xw+bIu39oo6HY50fBY+rXnWvgwNimzHBOh3yV5xUHfTqcHq1M5AA==} + hasBin: true + peerDependencies: + '@eslint-react/eslint-plugin': ^1.19.0 + '@prettier/plugin-xml': ^3.4.1 + '@unocss/eslint-plugin': '>=0.50.0' + astro-eslint-parser: ^1.0.2 + eslint: ^9.10.0 + eslint-plugin-astro: ^1.2.0 + eslint-plugin-format: '>=0.1.0' + eslint-plugin-react-hooks: ^5.0.0 + eslint-plugin-react-refresh: ^0.4.4 + eslint-plugin-solid: ^0.14.3 + eslint-plugin-svelte: '>=2.35.1' + prettier-plugin-astro: ^0.14.0 + prettier-plugin-slidev: ^1.0.5 + svelte-eslint-parser: '>=0.37.0' + peerDependenciesMeta: + '@eslint-react/eslint-plugin': + optional: true + '@prettier/plugin-xml': + optional: true + '@unocss/eslint-plugin': + optional: true + astro-eslint-parser: + optional: true + eslint-plugin-astro: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-solid: + optional: true + eslint-plugin-svelte: + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-slidev: + optional: true + svelte-eslint-parser: + optional: true + '@antfu/install-pkg@0.4.1': resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + '@antfu/install-pkg@0.5.0': + resolution: {integrity: sha512-dKnk2xlAyC7rvTkpkHmu+Qy/2Zc3Vm/l8PtNyIOGDBtXPY3kThfU4ORNEp3V7SXw5XSOb+tOJaUYpfquPzL/Tg==} + '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} @@ -214,32 +281,73 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.24.7': resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.3': + resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} + engines: {node: '>=6.9.0'} + '@babel/core@7.24.7': resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.24.7': resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} + '@babel/generator@7.26.3': + resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.24.7': resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.24.7': resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.26.3': + resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.3': + resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-environment-visitor@7.24.7': resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} @@ -256,6 +364,10 @@ packages: resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.22.15': resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} @@ -264,26 +376,56 @@ packages: resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.24.7': resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.24.7': resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.7': resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.24.7': resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-simple-access@7.24.7': resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} @@ -292,6 +434,10 @@ packages: resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.24.7': resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} @@ -316,10 +462,22 @@ packages: resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.7': resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -334,24 +492,77 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.26.3': + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-proposal-decorators@7.24.7': resolution: {integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-decorators@7.24.7': resolution: {integrity: sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.24.7': resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -369,12 +580,329 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.25.9': + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.25.9': + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.26.3': + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.25.9': + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.25.9': + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.25.9': + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.24.7': resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.0': + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/runtime@7.23.2': resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} @@ -383,10 +911,18 @@ packages: resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} engines: {node: '>=6.9.0'} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.7': resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.26.4': + resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} + engines: {node: '>=6.9.0'} + '@babel/types@7.24.7': resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} @@ -395,6 +931,20 @@ packages: resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} + '@babel/types@7.26.3': + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + engines: {node: '>=6.9.0'} + + '@clack/core@0.4.0': + resolution: {integrity: sha512-YJCYBsyJfNDaTbvDUVSJ3SgSuPrcujarRgkJ5NLjexDZKvaOiVVJvAQYx8lIgG0qRT8ff0fPgqyBCVivanIZ+A==} + + '@clack/prompts@0.9.0': + resolution: {integrity: sha512-nGsytiExgUr4FL0pR/LeqxA28nz3E0cW7eLTSh3Iod9TGrbBt8Y7BHbV3mmkNC4G0evdYyQ3ZsbiBkk7ektArA==} + + '@es-joy/jsdoccomment@0.49.0': + resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} + engines: {node: '>=16'} + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -533,12 +1083,24 @@ packages: cpu: [x64] os: [win32] + '@eslint-community/eslint-plugin-eslint-comments@4.4.1': + resolution: {integrity: sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.10.0': resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -547,6 +1109,15 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/compat@1.2.4': + resolution: {integrity: sha512-S8ZdQj/N69YAtuqFt7653jwcvuUj131+6qGLUyDqfDg1OIoBQ66OCuXC473YQfO2AaxITTutiRQiDwoo7ZLYyg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + '@eslint/config-array@0.19.0': resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -563,6 +1134,10 @@ packages: resolution: {integrity: sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/markdown@6.2.1': + resolution: {integrity: sha512-cKVd110hG4ICHmWhIwZJfKmmJBvbiDWyrHODJknAtudKgZtlROGoLX9UEOA0o746zC0hCY4UV4vR+aOGW9S6JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -603,6 +1178,18 @@ packages: '@iconify/utils@2.1.33': resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==} + '@intlify/core-base@10.0.5': + resolution: {integrity: sha512-F3snDTQs0MdvnnyzTDTVkOYVAZOE/MHwRvF7mn7Jw1yuih4NrFYLNYIymGlLmq4HU2iIdzYsZ7f47bOcwY73XQ==} + engines: {node: '>= 16'} + + '@intlify/message-compiler@10.0.5': + resolution: {integrity: sha512-6GT1BJ852gZ0gItNZN2krX5QAmea+cmdjMvsWohArAZ3GmHdnNANEcF9JjPXAMRtQ6Ux5E269ymamg/+WU6tQA==} + engines: {node: '>= 16'} + + '@intlify/shared@10.0.5': + resolution: {integrity: sha512-bmsP4L2HqBF6i6uaMqJMcFBONVjKt+siGluRq4Ca4C0q7W2eMaVZr8iCgF9dKbcVXutftkC7D6z2SaSMmLiDyA==} + engines: {node: '>= 16'} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -738,6 +1325,10 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} @@ -861,6 +1452,12 @@ packages: cpu: [x64] os: [win32] + '@stylistic/eslint-plugin@2.12.1': + resolution: {integrity: sha512-fubZKIHSPuo07FgRTn6S4Nl0uXPRPYVNpyZzIDGfp7Fny6JjNus6kReLD7NI380JXi4HtUTSOZ34LBuNPO1XLQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.40.0' + '@tailwindcss/typography@0.5.15': resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} peerDependencies: @@ -893,6 +1490,12 @@ packages: '@types/canvas-confetti@1.6.4': resolution: {integrity: sha512-fNyZ/Fdw/Y92X0vv7B+BD6ysHL4xVU5dJcgzgxLdGbn8O3PezZNIJpml44lKM0nsGur+o/6+NZbZeNTt00U1uA==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -914,12 +1517,21 @@ packages: '@types/markdown-it@14.1.2': resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/node@22.9.4': resolution: {integrity: sha512-d9RWfoR7JC/87vj7n+PVTzGg9hDyuFjir3RxUHbjFSKNd9mpxbxwMEyaCim/ddCmy4IuW7HjTzF3g9p3EtWEOg==} + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/stats.js@0.17.3': resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} @@ -932,6 +1544,9 @@ packages: '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} @@ -949,6 +1564,14 @@ packages: typescript: optional: true + '@typescript-eslint/eslint-plugin@8.19.1': + resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/parser@8.16.0': resolution: {integrity: sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -959,10 +1582,21 @@ packages: typescript: optional: true + '@typescript-eslint/parser@8.19.1': + resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/scope-manager@8.16.0': resolution: {integrity: sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.19.1': + resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/type-utils@8.16.0': resolution: {integrity: sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -973,10 +1607,21 @@ packages: typescript: optional: true + '@typescript-eslint/type-utils@8.19.1': + resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/types@8.16.0': resolution: {integrity: sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.19.1': + resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.16.0': resolution: {integrity: sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -986,6 +1631,12 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@8.19.1': + resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/utils@8.16.0': resolution: {integrity: sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -996,10 +1647,28 @@ packages: typescript: optional: true + '@typescript-eslint/utils@8.19.1': + resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/visitor-keys@8.16.0': resolution: {integrity: sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.19.1': + resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitejs/plugin-legacy@6.0.0': + resolution: {integrity: sha512-pWt9cWaGJAKYw+67VLpN8hSP+G+yAQnrf5Pqh/NzSDKFl/4KpxTtwb5OLQezHoZOxghahO/ha3IpvblBbX/t6A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + peerDependencies: + terser: ^5.16.0 + vite: ^6.0.0 + '@vitejs/plugin-vue@5.2.0': resolution: {integrity: sha512-7n7KdUEtx/7Yl7I/WVAMZ1bEb0eVvXF3ummWTeLcs/9gvo9pJhuLdouSXGjdZ/MKD1acf1I272+X0RMua4/R3g==} engines: {node: ^18.0.0 || >=20.0.0} @@ -1007,6 +1676,19 @@ packages: vite: ^5.0.0 vue: ^3.2.25 + '@vitest/eslint-plugin@1.1.24': + resolution: {integrity: sha512-7IaENe4NNy33g0iuuy5bHY69JYYRjpv4lMx6H5Wp30W7ez2baLHwxsXF5TM4wa8JDYZt8ut99Ytoj7GiDO01hw==} + peerDependencies: + '@typescript-eslint/utils': '>= 8.0' + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '*' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true + '@vitest/expect@2.1.5': resolution: {integrity: sha512-nZSBTW1XIdpZvEJyoP/Sy8fUg0b8od7ZpGDkTUcfJ7wz/VoZAFzFfLyxVxGFhUjJzhYqSbIpfMtl/+k/dpWa3Q==} @@ -1281,6 +1963,10 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -1339,6 +2025,21 @@ packages: axios@1.7.8: resolution: {integrity: sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==} + babel-plugin-polyfill-corejs2@0.4.12: + resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.3: + resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1380,10 +2081,12 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.1: - resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + browserslist-to-esbuild@2.1.1: + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} + engines: {node: '>=18'} hasBin: true + peerDependencies: + browserslist: '*' browserslist@4.24.2: resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} @@ -1393,6 +2096,10 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} @@ -1420,15 +2127,15 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001639: - resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==} - caniuse-lite@1.0.30001684: resolution: {integrity: sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==} canvas-confetti@1.9.3: resolution: {integrity: sha512-rFfTURMvmVEX1gyXFgn5QMn81bYk70qa0HLzcIOSVEyl57n6o9ItHeBtUSWdvKAPY0xlvBHno4/v3QPrT83q9g==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + cfb@1.2.2: resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} engines: {node: '>=0.8'} @@ -1449,6 +2156,9 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -1465,10 +2175,18 @@ packages: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} + ci-info@4.1.0: + resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} + engines: {node: '>=8'} + class-utils@0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} engines: {node: '>=0.10.0'} + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -1517,6 +2235,10 @@ packages: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} @@ -1543,6 +2265,12 @@ packages: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} + core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} + + core-js@3.39.0: + resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} + cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -1616,6 +2344,14 @@ packages: supports-color: optional: true + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -1646,6 +2382,9 @@ packages: decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} @@ -1701,17 +2440,28 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} hasBin: true + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -1751,9 +2501,6 @@ packages: engines: {node: '>=14'} hasBin: true - electron-to-chromium@1.4.816: - resolution: {integrity: sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==} - electron-to-chromium@1.5.65: resolution: {integrity: sha512-PWVzBjghx7/wop6n22vS2MLU8tKGd4Q91aCEGhG/TYmW6PP5OcSXcdnxTe1NNt0T66N8D6jxh4kC8UsdzOGaIw==} @@ -1771,6 +2518,10 @@ packages: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.18.0: + resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + engines: {node: '>=10.13.0'} + entities@1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} @@ -1781,6 +2532,9 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-stack-parser-es@0.1.5: resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==} @@ -1815,12 +2569,146 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-compat-utils@0.6.4: + resolution: {integrity: sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-config-flat-gitignore@0.3.0: + resolution: {integrity: sha512-0Ndxo4qGhcewjTzw52TK06Mc00aDtHNTdeeW2JfONgDcLkRO/n/BteMRzNVpLQYxdCC/dFEilfM9fjjpGIJ9Og==} + peerDependencies: + eslint: ^9.5.0 + + eslint-flat-config-utils@0.4.0: + resolution: {integrity: sha512-kfd5kQZC+BMO0YwTol6zxjKX1zAsk8JfSAopbKjKqmENTJcew+yBejuvccAg37cvOrN0Mh+DVbeyznuNWEjt4A==} + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-json-compat-utils@0.2.1: + resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==} + engines: {node: '>=12'} + peerDependencies: + '@eslint/json': '*' + eslint: '*' + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + '@eslint/json': + optional: true + + eslint-merge-processors@0.1.0: + resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==} + peerDependencies: + eslint: '*' + + eslint-plugin-antfu@2.7.0: + resolution: {integrity: sha512-gZM3jq3ouqaoHmUNszb1Zo2Ux7RckSvkGksjLWz9ipBYGSv1EwwBETN6AdiUXn+RpVHXTbEMPAPlXJazcA6+iA==} + peerDependencies: + eslint: '*' + + eslint-plugin-command@0.2.7: + resolution: {integrity: sha512-UXJ/1R6kdKDcHhiRqxHJ9RZ3juMR1IWQuSrnwt56qCjxt/am+5+YDt6GKs1FJPnppe6/geEYsO3CR9jc63i0xw==} + peerDependencies: + eslint: '*' + + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + + eslint-plugin-import-x@4.6.1: + resolution: {integrity: sha512-wluSUifMIb7UfwWXqx7Yx0lE/SGCcGXECLx/9bCmbY2nneLwvAZ4vkd1IXDjPKFvdcdUgr1BaRnaRpx3k2+Pfw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + eslint-plugin-jsdoc@50.6.1: + resolution: {integrity: sha512-UWyaYi6iURdSfdVVqvfOs2vdCVz0J40O/z/HTsv2sFjdjmdlUI/qlKLOTmwbPQ2tAfQnE5F9vqx+B+poF71DBQ==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-jsonc@2.18.2: + resolution: {integrity: sha512-SDhJiSsWt3nItl/UuIv+ti4g3m4gpGkmnUJS9UWR3TrpyNsIcnJoBRD7Kof6cM4Rk3L0wrmY5Tm3z7ZPjR2uGg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-n@17.15.1: + resolution: {integrity: sha512-KFw7x02hZZkBdbZEFQduRGH4VkIH4MW97ClsbAM4Y4E6KguBJWGfWG1P4HEIpZk2bkoWf0bojpnjNAhYQP8beA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' + + eslint-plugin-no-only-tests@3.3.0: + resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} + engines: {node: '>=5.0.0'} + + eslint-plugin-perfectionist@4.6.0: + resolution: {integrity: sha512-kOswTebUK0LlYExRwqz7YQtvyTUIRsKfp8XrwBBeHGh2e8MBOS6K+7VvG6HpmNckyKySi1I96uPeAlptMFGcRQ==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + eslint: '>=8.0.0' + + eslint-plugin-regexp@2.7.0: + resolution: {integrity: sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8.44.0' + + eslint-plugin-toml@0.12.0: + resolution: {integrity: sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-unicorn@56.0.1: + resolution: {integrity: sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==} + engines: {node: '>=18.18'} + peerDependencies: + eslint: '>=8.56.0' + + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + eslint-plugin-vue@9.31.0: resolution: {integrity: sha512-aYMUCgivhz1o4tLkRHj5oq9YgYPM4/EJc0M7TAKRLCUA5OYxRLAhYEVD2nLtTwLyixEFI+/QXSvKU9ESZFgqjQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-plugin-vue@9.32.0: + resolution: {integrity: sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-yml@1.16.0: + resolution: {integrity: sha512-t4MNCetPjTn18/fUDlQ/wKkcYjnuLYKChBrZ0qUaNqRigVqChHWzTP8SrfFi5s4keX3vdlkWRSu8zHJMdKwxWQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-processor-vue-blocks@0.1.2: + resolution: {integrity: sha512-PfpJ4uKHnqeL/fXUnzYkOax3aIenlwewXRX8jFinA1a2yCFnLgMuiH3xvCgvHHUlV2xJWQHbCTdiJWGwb3NqpQ==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: ^8.50.0 || ^9.0.0 + eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -1863,6 +2751,10 @@ packages: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -1963,6 +2855,14 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -2046,6 +2946,9 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} @@ -2082,6 +2985,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@15.14.0: + resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} + engines: {node: '>=18'} + gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -2160,6 +3067,9 @@ packages: hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -2196,6 +3106,10 @@ packages: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + image-size@0.5.5: resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} @@ -2215,6 +3129,10 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} @@ -2239,6 +3157,9 @@ packages: is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -2253,6 +3174,10 @@ packages: is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -2436,6 +3361,10 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + jsdom@25.0.1: resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} engines: {node: '>=18'} @@ -2445,11 +3374,25 @@ packages: canvas: optional: true + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -2471,6 +3414,10 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -2536,6 +3483,10 @@ packages: localforage@1.10.0: resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -2546,6 +3497,9 @@ packages: lodash.castarray@4.4.0: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} @@ -2555,6 +3509,9 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} @@ -2591,12 +3548,52 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + merge-options@1.0.1: resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==} engines: {node: '>=4'} @@ -2611,6 +3608,90 @@ packages: meshoptimizer@0.18.1: resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} + micromark-core-commonmark@2.0.2: + resolution: {integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.0.3: + resolution: {integrity: sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.1: + resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} + + micromark@4.0.1: + resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==} + micromatch@3.1.0: resolution: {integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==} engines: {node: '>=0.10.0'} @@ -2635,6 +3716,10 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2701,15 +3786,16 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -2718,6 +3804,9 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -2787,14 +3876,26 @@ packages: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + package-manager-detector@0.2.5: resolution: {integrity: sha512-3dS7y28uua+UDbRCLBqltMBrbI+A5U2mI9YuxHRxIWYmLj3DwntEBmERYzIAQ4DMeuCUOBSak7dBHHoXKpOTYQ==} @@ -2802,6 +3903,18 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + + parse-imports@2.2.1: + resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} + engines: {node: '>= 18'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -2900,6 +4013,10 @@ packages: pkg-types@1.2.1: resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + posix-character-classes@0.1.1: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} @@ -3021,6 +4138,14 @@ packages: read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -3033,17 +4158,57 @@ packages: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regex-not@1.0.2: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} engines: {node: '>=0.10.0'} + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + repeat-element@1.1.4: resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} engines: {node: '>=0.10.0'} @@ -3060,6 +4225,9 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated @@ -3147,9 +4315,17 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -3206,6 +4382,12 @@ packages: resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} engines: {node: '>=18'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slashes@3.0.12: + resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} + snapdragon-node@2.1.1: resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} engines: {node: '>=0.10.0'} @@ -3252,6 +4434,21 @@ packages: sparticles@1.3.1: resolution: {integrity: sha512-zpQZRpP/W9YCh5mmtH1gHlZSKvLSQWXXdAhPQ9j8FdjuX3RkIPxBW6vrKoaIebzvVLREGPZq61dxSxCCndFemA==} + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + speakingurl@14.0.1: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} @@ -3264,6 +4461,9 @@ packages: resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==} engines: {node: '>=0.8'} + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' @@ -3313,6 +4513,10 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -3367,6 +4571,17 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + synckit@0.6.2: + resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} + engines: {node: '>=12.20'} + + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + tailwindcss@3.4.15: resolution: {integrity: sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==} engines: {node: '>=14.0.0'} @@ -3467,6 +4682,10 @@ packages: resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} engines: {node: '>=0.10.0'} + toml-eslint-parser@0.10.0: + resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -3488,9 +4707,18 @@ packages: peerDependencies: typescript: '>=4.2.0' + ts-api-utils@2.0.0: + resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -3499,6 +4727,14 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + typescript@5.5.3: resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} engines: {node: '>=14.17'} @@ -3516,6 +4752,22 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + unimport@3.13.3: resolution: {integrity: sha512-dr7sjOoRFCSDlnARFPAMB8OmjIMc6j14qd749VmB1yiqFEYFbi+1jWPTuc22JoFs/t1kHJXT3vQNiwCy3ZvsTA==} @@ -3523,6 +4775,18 @@ packages: resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} engines: {node: '>=0.10.0'} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -3583,12 +4847,6 @@ packages: resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} engines: {node: '>=0.10.0'} - update-browserslist-db@1.0.16: - resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true @@ -3612,6 +4870,9 @@ packages: util@0.10.4: resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -3752,6 +5013,12 @@ packages: peerDependencies: eslint: '>=6.0.0' + vue-i18n@10.0.5: + resolution: {integrity: sha512-9/gmDlCblz3i8ypu/afiIc/SUIfTTE1mr0mZhb9pk70xo2csHAM9mp2gdQ3KD2O0AM3Hz/5ypb+FycTj/lHlPQ==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + vue-router@4.5.0: resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==} peerDependencies: @@ -3917,6 +5184,10 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml-eslint-parser@1.2.3: + resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==} + engines: {node: ^14.17.0 || >=16.0.0} + yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} @@ -3936,6 +5207,9 @@ packages: zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + snapshots: '@aashutoshrathi/word-wrap@1.2.6': {} @@ -3949,11 +5223,62 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@antfu/eslint-config@3.12.1(@typescript-eslint/utils@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(@vue/compiler-sfc@3.5.13)(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)(vitest@2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@25.0.1)(sass@1.81.0)(terser@5.36.0))': + dependencies: + '@antfu/install-pkg': 0.5.0 + '@clack/prompts': 0.9.0 + '@eslint-community/eslint-plugin-eslint-comments': 4.4.1(eslint@9.15.0(jiti@1.21.6)) + '@eslint/markdown': 6.2.1 + '@stylistic/eslint-plugin': 2.12.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/parser': 8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + '@vitest/eslint-plugin': 1.1.24(@typescript-eslint/utils@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)(vitest@2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@25.0.1)(sass@1.81.0)(terser@5.36.0)) + eslint: 9.15.0(jiti@1.21.6) + eslint-config-flat-gitignore: 0.3.0(eslint@9.15.0(jiti@1.21.6)) + eslint-flat-config-utils: 0.4.0 + eslint-merge-processors: 0.1.0(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-antfu: 2.7.0(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-command: 0.2.7(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-import-x: 4.6.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-jsdoc: 50.6.1(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-jsonc: 2.18.2(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-n: 17.15.1(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-perfectionist: 4.6.0(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-regexp: 2.7.0(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-toml: 0.12.0(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-unicorn: 56.0.1(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-vue: 9.32.0(eslint@9.15.0(jiti@1.21.6)) + eslint-plugin-yml: 1.16.0(eslint@9.15.0(jiti@1.21.6)) + eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.5.13)(eslint@9.15.0(jiti@1.21.6)) + globals: 15.14.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 0.5.1 + parse-gitignore: 2.0.0 + picocolors: 1.1.1 + toml-eslint-parser: 0.10.0 + vue-eslint-parser: 9.4.3(eslint@9.15.0(jiti@1.21.6)) + yaml-eslint-parser: 1.2.3 + yargs: 17.7.2 + transitivePeerDependencies: + - '@eslint/json' + - '@typescript-eslint/utils' + - '@vue/compiler-sfc' + - supports-color + - typescript + - vitest + '@antfu/install-pkg@0.4.1': dependencies: package-manager-detector: 0.2.5 tinyexec: 0.3.1 + '@antfu/install-pkg@0.5.0': + dependencies: + package-manager-detector: 0.2.5 + tinyexec: 0.3.1 + '@antfu/utils@0.7.10': {} '@babel/code-frame@7.24.7': @@ -3961,8 +5286,16 @@ snapshots: '@babel/highlight': 7.24.7 picocolors: 1.0.1 + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.24.7': {} + '@babel/compat-data@7.26.3': {} + '@babel/core@7.24.7': dependencies: '@ampproject/remapping': 2.3.0 @@ -3983,22 +5316,62 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + '@babel/generator@7.26.3': + dependencies: + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.0 '@babel/helper-compilation-targets@7.24.7': dependencies: '@babel/compat-data': 7.24.7 '@babel/helper-validator-option': 7.24.7 - browserslist: 4.23.1 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 lru-cache: 5.1.1 semver: 6.3.1 @@ -4017,34 +5390,79 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.26.4 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + debug: 4.3.7 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + '@babel/helper-environment-visitor@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 '@babel/helper-function-name@7.24.7': dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 '@babel/helper-hoist-variables@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 '@babel/helper-member-expression-to-functions@7.24.7': dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.22.15': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -4059,12 +5477,36 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.26.0 '@babel/helper-plugin-utils@7.24.7': {} + '@babel/helper-plugin-utils@7.25.9': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -4074,23 +5516,39 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 '@babel/helper-string-parser@7.24.7': {} @@ -4102,10 +5560,25 @@ snapshots: '@babel/helper-validator-option@7.24.7': {} + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + '@babel/helpers@7.24.7': dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 + + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 '@babel/highlight@7.24.7': dependencies: @@ -4116,12 +5589,51 @@ snapshots: '@babel/parser@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.26.0 '@babel/parser@7.26.2': dependencies: '@babel/types': 7.26.0 + '@babel/parser@7.26.3': + dependencies: + '@babel/types': 7.26.3 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -4131,16 +5643,30 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -4156,6 +5682,308 @@ snapshots: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 + + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -4166,6 +5994,111 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/preset-env@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.26.0 + esutils: 2.0.3 + '@babel/runtime@7.23.2': dependencies: regenerator-runtime: 0.14.0 @@ -4173,8 +6106,14 @@ snapshots: '@babel/template@7.24.7': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@babel/traverse@7.24.7': dependencies: @@ -4184,9 +6123,21 @@ snapshots: '@babel/helper-function-name': 7.24.7 '@babel/helper-hoist-variables': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 - debug: 4.3.5 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/traverse@7.26.4': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 + debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -4202,6 +6153,28 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.26.3': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@clack/core@0.4.0': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.9.0': + dependencies: + '@clack/core': 0.4.0 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@es-joy/jsdoccomment@0.49.0': + dependencies: + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -4271,15 +6244,30 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true + '@eslint-community/eslint-plugin-eslint-comments@4.4.1(eslint@9.15.0(jiti@1.21.6))': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.15.0(jiti@1.21.6) + ignore: 5.3.1 + '@eslint-community/eslint-utils@4.4.0(eslint@9.15.0(jiti@1.21.6))': dependencies: eslint: 9.15.0(jiti@1.21.6) eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0(jiti@1.21.6))': + dependencies: + eslint: 9.15.0(jiti@1.21.6) + eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.10.0': {} '@eslint-community/regexpp@4.12.1': {} + '@eslint/compat@1.2.4(eslint@9.15.0(jiti@1.21.6))': + optionalDependencies: + eslint: 9.15.0(jiti@1.21.6) + '@eslint/config-array@0.19.0': dependencies: '@eslint/object-schema': 2.1.4 @@ -4293,7 +6281,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.7 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.1 @@ -4306,6 +6294,15 @@ snapshots: '@eslint/js@9.15.0': {} + '@eslint/markdown@6.2.1': + dependencies: + '@eslint/plugin-kit': 0.2.3 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + transitivePeerDependencies: + - supports-color + '@eslint/object-schema@2.1.4': {} '@eslint/plugin-kit@0.2.3': @@ -4347,6 +6344,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@intlify/core-base@10.0.5': + dependencies: + '@intlify/message-compiler': 10.0.5 + '@intlify/shared': 10.0.5 + + '@intlify/message-compiler@10.0.5': + dependencies: + '@intlify/shared': 10.0.5 + source-map-js: 1.2.1 + + '@intlify/shared@10.0.5': {} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -4458,6 +6467,8 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@pkgr/core@0.1.1': {} + '@polka/url@1.0.0-next.25': {} '@popperjs/core@2.11.8': {} @@ -4532,6 +6543,18 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.27.4': optional: true + '@stylistic/eslint-plugin@2.12.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)': + dependencies: + '@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + eslint: 9.15.0(jiti@1.21.6) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + transitivePeerDependencies: + - supports-color + - typescript + '@tailwindcss/typography@0.5.15(tailwindcss@3.4.15)': dependencies: lodash.castarray: 4.4.0 @@ -4568,6 +6591,12 @@ snapshots: '@types/canvas-confetti@1.6.4': {} + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 + + '@types/doctrine@0.0.9': {} + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 8.44.7 @@ -4593,12 +6622,20 @@ snapshots: '@types/linkify-it': 5.0.0 '@types/mdurl': 2.0.0 + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/mdurl@2.0.0': {} + '@types/ms@0.7.34': {} + '@types/node@22.9.4': dependencies: undici-types: 6.19.8 + '@types/normalize-package-data@2.4.4': {} + '@types/stats.js@0.17.3': {} '@types/svgo@2.6.4': @@ -4616,6 +6653,8 @@ snapshots: '@types/trusted-types@2.0.7': optional: true + '@types/unist@3.0.3': {} + '@types/web-bluetooth@0.0.20': {} '@types/webxr@0.5.10': {} @@ -4638,6 +6677,23 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/type-utils': 8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 8.19.1 + eslint: 9.15.0(jiti@1.21.6) + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 2.0.0(typescript@5.5.3) + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)': dependencies: '@typescript-eslint/scope-manager': 8.16.0 @@ -4651,11 +6707,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 8.19.1 + debug: 4.3.7 + eslint: 9.15.0(jiti@1.21.6) + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.16.0': dependencies: '@typescript-eslint/types': 8.16.0 '@typescript-eslint/visitor-keys': 8.16.0 + '@typescript-eslint/scope-manager@8.19.1': + dependencies: + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/type-utils@8.16.0(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)': dependencies: '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.5.3) @@ -4668,8 +6741,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.5.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + debug: 4.3.7 + eslint: 9.15.0(jiti@1.21.6) + ts-api-utils: 2.0.0(typescript@5.5.3) + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@8.16.0': {} + '@typescript-eslint/types@8.19.1': {} + '@typescript-eslint/typescript-estree@8.16.0(typescript@5.5.3)': dependencies: '@typescript-eslint/types': 8.16.0 @@ -4685,6 +6771,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.19.1(typescript@5.5.3)': + dependencies: + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 + debug: 4.3.7 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 2.0.0(typescript@5.5.3) + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.16.0(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0(jiti@1.21.6)) @@ -4697,16 +6797,55 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.5.3) + eslint: 9.15.0(jiti@1.21.6) + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.16.0': dependencies: '@typescript-eslint/types': 8.16.0 eslint-visitor-keys: 4.2.0 + '@typescript-eslint/visitor-keys@8.19.1': + dependencies: + '@typescript-eslint/types': 8.19.1 + eslint-visitor-keys: 4.2.0 + + '@vitejs/plugin-legacy@6.0.0(terser@5.36.0)(vite@5.4.11(@types/node@22.9.4)(sass@1.81.0)(terser@5.36.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + browserslist: 4.24.2 + browserslist-to-esbuild: 2.1.1(browserslist@4.24.2) + core-js: 3.39.0 + magic-string: 0.30.13 + regenerator-runtime: 0.14.1 + systemjs: 6.15.1 + terser: 5.36.0 + vite: 5.4.11(@types/node@22.9.4)(sass@1.81.0)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + '@vitejs/plugin-vue@5.2.0(vite@5.4.11(@types/node@22.9.4)(sass@1.81.0)(terser@5.36.0))(vue@3.5.13(typescript@5.5.3))': dependencies: vite: 5.4.11(@types/node@22.9.4)(sass@1.81.0)(terser@5.36.0) vue: 3.5.13(typescript@5.5.3) + '@vitest/eslint-plugin@1.1.24(@typescript-eslint/utils@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3)(vitest@2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@25.0.1)(sass@1.81.0)(terser@5.36.0))': + dependencies: + '@typescript-eslint/utils': 8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + eslint: 9.15.0(jiti@1.21.6) + optionalDependencies: + typescript: 5.5.3 + vitest: 2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@25.0.1)(sass@1.81.0)(terser@5.36.0) + '@vitest/expect@2.1.5': dependencies: '@vitest/spy': 2.1.5 @@ -4796,12 +6935,12 @@ snapshots: '@babel/core': 7.24.7 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.7 - '@babel/parser': 7.24.7 + '@babel/parser': 7.26.2 '@vue/compiler-sfc': 3.4.31 '@vue/compiler-core@3.4.31': dependencies: - '@babel/parser': 7.24.7 + '@babel/parser': 7.26.2 '@vue/shared': 3.4.31 entities: 4.5.0 estree-walker: 2.0.2 @@ -4827,13 +6966,13 @@ snapshots: '@vue/compiler-sfc@3.4.31': dependencies: - '@babel/parser': 7.24.7 + '@babel/parser': 7.26.2 '@vue/compiler-core': 3.4.31 '@vue/compiler-dom': 3.4.31 '@vue/compiler-ssr': 3.4.31 '@vue/shared': 3.4.31 estree-walker: 2.0.2 - magic-string: 0.30.10 + magic-string: 0.30.13 postcss: 8.4.49 source-map-js: 1.2.0 @@ -5120,6 +7259,8 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + are-docs-informative@0.0.2: {} + arg@5.0.2: {} argparse@2.0.1: {} @@ -5169,6 +7310,30 @@ snapshots: transitivePeerDependencies: - debug + babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + balanced-match@1.0.2: {} base@0.11.2: @@ -5223,12 +7388,10 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.23.1: + browserslist-to-esbuild@2.1.1(browserslist@4.24.2): dependencies: - caniuse-lite: 1.0.30001639 - electron-to-chromium: 1.4.816 - node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.1) + browserslist: 4.24.2 + meow: 13.2.0 browserslist@4.24.2: dependencies: @@ -5239,6 +7402,8 @@ snapshots: buffer-from@1.1.2: {} + builtin-modules@3.3.0: {} + bundle-name@4.1.0: dependencies: run-applescript: 7.0.0 @@ -5269,12 +7434,12 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001639: {} - caniuse-lite@1.0.30001684: {} canvas-confetti@1.9.3: {} + ccount@2.0.1: {} + cfb@1.2.2: dependencies: adler-32: 1.3.1 @@ -5307,6 +7472,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + character-entities@2.0.2: {} + check-error@2.1.1: {} chokidar@3.6.0: @@ -5328,6 +7495,8 @@ snapshots: chrome-trace-event@1.0.3: optional: true + ci-info@4.1.0: {} + class-utils@0.3.6: dependencies: arr-union: 3.1.0 @@ -5335,6 +7504,10 @@ snapshots: isobject: 3.0.1 static-extend: 0.1.2 + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -5374,6 +7547,8 @@ snapshots: commander@7.2.0: {} + comment-parser@1.4.1: {} + component-emitter@1.3.0: {} concat-map@0.0.1: {} @@ -5395,6 +7570,12 @@ snapshots: copy-descriptor@0.1.1: {} + core-js-compat@3.39.0: + dependencies: + browserslist: 4.24.2 + + core-js@3.39.0: {} + cors@2.8.5: dependencies: object-assign: 4.1.1 @@ -5470,6 +7651,10 @@ snapshots: dependencies: ms: 2.0.0 + debug@3.2.7: + dependencies: + ms: 2.1.3 + debug@4.3.4: dependencies: ms: 2.1.2 @@ -5484,6 +7669,10 @@ snapshots: decimal.js@10.4.3: {} + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + decode-uri-component@0.2.2: {} deep-eql@5.0.2: {} @@ -5549,13 +7738,23 @@ snapshots: delayed-stream@1.0.0: {} + dequal@2.0.3: {} + detect-libc@1.0.3: optional: true + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + didyoumean@1.2.2: {} dlv@1.1.3: {} + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + dom-accessibility-api@0.5.16: {} dom-serializer@0.2.2: @@ -5605,8 +7804,6 @@ snapshots: minimatch: 9.0.1 semver: 7.5.4 - electron-to-chromium@1.4.816: {} - electron-to-chromium@1.5.65: {} emoji-regex@8.0.0: {} @@ -5621,12 +7818,21 @@ snapshots: tapable: 2.2.1 optional: true + enhanced-resolve@5.18.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + entities@1.1.2: {} entities@2.2.0: {} entities@4.5.0: {} + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + error-stack-parser-es@0.1.5: {} es-get-iterator@1.1.3: @@ -5679,6 +7885,183 @@ snapshots: escape-string-regexp@5.0.0: {} + eslint-compat-utils@0.5.1(eslint@9.15.0(jiti@1.21.6)): + dependencies: + eslint: 9.15.0(jiti@1.21.6) + semver: 7.6.3 + + eslint-compat-utils@0.6.4(eslint@9.15.0(jiti@1.21.6)): + dependencies: + eslint: 9.15.0(jiti@1.21.6) + semver: 7.6.3 + + eslint-config-flat-gitignore@0.3.0(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@eslint/compat': 1.2.4(eslint@9.15.0(jiti@1.21.6)) + eslint: 9.15.0(jiti@1.21.6) + find-up-simple: 1.0.0 + + eslint-flat-config-utils@0.4.0: + dependencies: + pathe: 1.1.2 + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-json-compat-utils@0.2.1(eslint@9.15.0(jiti@1.21.6))(jsonc-eslint-parser@2.4.0): + dependencies: + eslint: 9.15.0(jiti@1.21.6) + esquery: 1.6.0 + jsonc-eslint-parser: 2.4.0 + + eslint-merge-processors@0.1.0(eslint@9.15.0(jiti@1.21.6)): + dependencies: + eslint: 9.15.0(jiti@1.21.6) + + eslint-plugin-antfu@2.7.0(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@antfu/utils': 0.7.10 + eslint: 9.15.0(jiti@1.21.6) + + eslint-plugin-command@0.2.7(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@es-joy/jsdoccomment': 0.49.0 + eslint: 9.15.0(jiti@1.21.6) + + eslint-plugin-es-x@7.8.0(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@1.21.6)) + '@eslint-community/regexpp': 4.12.1 + eslint: 9.15.0(jiti@1.21.6) + eslint-compat-utils: 0.5.1(eslint@9.15.0(jiti@1.21.6)) + + eslint-plugin-import-x@4.6.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3): + dependencies: + '@types/doctrine': 0.0.9 + '@typescript-eslint/scope-manager': 8.16.0 + '@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + debug: 4.3.7 + doctrine: 3.0.0 + enhanced-resolve: 5.18.0 + eslint: 9.15.0(jiti@1.21.6) + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.8.1 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + stable-hash: 0.0.4 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsdoc@50.6.1(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@es-joy/jsdoccomment': 0.49.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.3.7 + escape-string-regexp: 4.0.0 + eslint: 9.15.0(jiti@1.21.6) + espree: 10.3.0 + esquery: 1.6.0 + parse-imports: 2.2.1 + semver: 7.6.3 + spdx-expression-parse: 4.0.0 + synckit: 0.9.2 + transitivePeerDependencies: + - supports-color + + eslint-plugin-jsonc@2.18.2(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0(jiti@1.21.6)) + eslint: 9.15.0(jiti@1.21.6) + eslint-compat-utils: 0.6.4(eslint@9.15.0(jiti@1.21.6)) + eslint-json-compat-utils: 0.2.1(eslint@9.15.0(jiti@1.21.6))(jsonc-eslint-parser@2.4.0) + espree: 9.6.1 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 + natural-compare: 1.4.0 + synckit: 0.6.2 + transitivePeerDependencies: + - '@eslint/json' + + eslint-plugin-n@17.15.1(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@1.21.6)) + enhanced-resolve: 5.18.0 + eslint: 9.15.0(jiti@1.21.6) + eslint-plugin-es-x: 7.8.0(eslint@9.15.0(jiti@1.21.6)) + get-tsconfig: 4.8.1 + globals: 15.14.0 + ignore: 5.3.2 + minimatch: 9.0.5 + semver: 7.6.3 + + eslint-plugin-no-only-tests@3.3.0: {} + + eslint-plugin-perfectionist@4.6.0(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3): + dependencies: + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/utils': 8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + eslint: 9.15.0(jiti@1.21.6) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-regexp@2.7.0(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0(jiti@1.21.6)) + '@eslint-community/regexpp': 4.12.1 + comment-parser: 1.4.1 + eslint: 9.15.0(jiti@1.21.6) + jsdoc-type-pratt-parser: 4.1.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 + + eslint-plugin-toml@0.12.0(eslint@9.15.0(jiti@1.21.6)): + dependencies: + debug: 4.3.7 + eslint: 9.15.0(jiti@1.21.6) + eslint-compat-utils: 0.6.4(eslint@9.15.0(jiti@1.21.6)) + lodash: 4.17.21 + toml-eslint-parser: 0.10.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-unicorn@56.0.1(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0(jiti@1.21.6)) + ci-info: 4.1.0 + clean-regexp: 1.0.0 + core-js-compat: 3.39.0 + eslint: 9.15.0(jiti@1.21.6) + esquery: 1.6.0 + globals: 15.14.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.1.0 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.6.3 + strip-indent: 3.0.0 + + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.15.0(jiti@1.21.6)): + dependencies: + eslint: 9.15.0(jiti@1.21.6) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.15.0(jiti@1.21.6))(typescript@5.5.3) + eslint-plugin-vue@9.31.0(eslint@9.15.0(jiti@1.21.6)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0(jiti@1.21.6)) @@ -5693,6 +8076,36 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-vue@9.32.0(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0(jiti@1.21.6)) + eslint: 9.15.0(jiti@1.21.6) + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.6.3 + vue-eslint-parser: 9.4.3(eslint@9.15.0(jiti@1.21.6)) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-yml@1.16.0(eslint@9.15.0(jiti@1.21.6)): + dependencies: + debug: 4.3.7 + eslint: 9.15.0(jiti@1.21.6) + eslint-compat-utils: 0.6.4(eslint@9.15.0(jiti@1.21.6)) + lodash: 4.17.21 + natural-compare: 1.4.0 + yaml-eslint-parser: 1.2.3 + transitivePeerDependencies: + - supports-color + + eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.5.13)(eslint@9.15.0(jiti@1.21.6)): + dependencies: + '@vue/compiler-sfc': 3.5.13 + eslint: 9.15.0(jiti@1.21.6) + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 @@ -5770,6 +8183,10 @@ snapshots: dependencies: estraverse: 5.3.0 + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -5885,6 +8302,13 @@ snapshots: dependencies: to-regex-range: 5.0.1 + find-up-simple@1.0.0: {} + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -5958,6 +8382,10 @@ snapshots: get-stream@8.0.1: {} + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + get-value@2.0.6: {} github-markdown-css@5.8.0: {} @@ -5989,6 +8417,8 @@ snapshots: globals@14.0.0: {} + globals@15.14.0: {} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.2 @@ -6056,6 +8486,8 @@ snapshots: hookable@5.5.3: {} + hosted-git-info@2.8.9: {} + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 @@ -6095,6 +8527,8 @@ snapshots: ignore@5.3.1: {} + ignore@5.3.2: {} + image-size@0.5.5: {} immediate@3.0.6: {} @@ -6108,6 +8542,8 @@ snapshots: imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + inherits@2.0.3: {} inherits@2.0.4: {} @@ -6135,6 +8571,8 @@ snapshots: get-intrinsic: 1.2.2 is-typed-array: 1.1.12 + is-arrayish@0.2.1: {} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 @@ -6150,6 +8588,10 @@ snapshots: is-buffer@1.1.6: {} + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + is-callable@1.2.7: {} is-core-module@2.13.1: @@ -6306,6 +8748,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsdoc-type-pratt-parser@4.1.0: {} + jsdom@25.0.1: dependencies: cssstyle: 4.1.0 @@ -6334,12 +8778,17 @@ snapshots: - supports-color - utf-8-validate + jsesc@0.5.0: {} + jsesc@2.5.2: {} + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + json-buffer@3.0.1: {} - json-parse-even-better-errors@2.3.1: - optional: true + json-parse-even-better-errors@2.3.1: {} json-schema-traverse@0.4.1: {} @@ -6351,6 +8800,13 @@ snapshots: json5@2.2.3: {} + jsonc-eslint-parser@2.4.0: + dependencies: + acorn: 8.14.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.6.3 + jsonfile@6.1.0: dependencies: universalify: 2.0.1 @@ -6417,6 +8873,10 @@ snapshots: dependencies: lie: 3.1.1 + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -6425,17 +8885,21 @@ snapshots: lodash.castarray@4.4.0: {} + lodash.debounce@4.0.8: {} + lodash.isplainobject@4.0.6: {} lodash.merge@4.6.2: {} lodash@4.17.21: {} + longest-streak@3.1.0: {} + loupe@3.1.2: {} lru-cache@10.0.2: dependencies: - semver: 7.5.4 + semver: 7.6.3 lru-cache@5.1.1: dependencies: @@ -6449,7 +8913,7 @@ snapshots: magic-string@0.30.10: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 magic-string@0.30.13: dependencies: @@ -6470,10 +8934,116 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 + markdown-table@3.0.4: {} + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdn-data@2.0.14: {} mdurl@2.0.0: {} + meow@13.2.0: {} + merge-options@1.0.1: dependencies: is-plain-obj: 1.1.0 @@ -6484,6 +9054,197 @@ snapshots: meshoptimizer@0.18.1: {} + micromark-core-commonmark@2.0.2: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.2 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-table@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.1 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.1 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.1 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.0.3: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.1: {} + + micromark@4.0.1: + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.7 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.2 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + transitivePeerDependencies: + - supports-color + micromatch@3.1.0: dependencies: arr-diff: 4.0.0 @@ -6521,6 +9282,8 @@ snapshots: mimic-fn@4.0.0: {} + min-indent@1.0.1: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -6598,19 +9361,26 @@ snapshots: natural-compare@1.4.0: {} + natural-orderby@5.0.0: {} + neo-async@2.6.2: {} node-addon-api@7.1.1: optional: true - node-releases@2.0.14: {} - node-releases@2.0.18: {} nopt@7.2.0: dependencies: abbrev: 2.0.0 + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} normalize-range@0.1.2: {} @@ -6685,20 +9455,44 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 + p-try@2.2.0: {} + package-manager-detector@0.2.5: {} parent-module@1.0.1: dependencies: callsites: 3.1.0 + parse-gitignore@2.0.0: {} + + parse-imports@2.2.1: + dependencies: + es-module-lexer: 1.5.4 + slashes: 3.0.12 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + parse5@7.1.2: dependencies: entities: 4.5.0 @@ -6773,6 +9567,8 @@ snapshots: mlly: 1.7.3 pathe: 1.1.2 + pluralize@8.0.0: {} + posix-character-classes@0.1.1: {} postcss-import@15.1.0(postcss@8.4.49): @@ -6892,6 +9688,19 @@ snapshots: dependencies: pify: 2.3.0 + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -6904,19 +9713,61 @@ snapshots: readdirp@4.0.2: {} + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + regenerator-runtime@0.14.0: {} + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.23.2 + regex-not@1.0.2: dependencies: extend-shallow: 3.0.2 safe-regex: 1.1.0 + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + + regexp-tree@0.1.27: {} + regexp.prototype.flags@1.5.1: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + regjsgen@0.8.0: {} + + regjsparser@0.10.0: + dependencies: + jsesc: 0.5.0 + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + repeat-element@1.1.4: {} repeat-string@1.6.1: {} @@ -6925,6 +9776,8 @@ snapshots: resolve-from@4.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve-url@0.2.1: {} resolve@1.22.8: @@ -7014,8 +9867,16 @@ snapshots: ajv-keywords: 3.5.2(ajv@6.12.6) optional: true + scslre@0.3.0: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scule@1.3.0: {} + semver@5.7.2: {} + semver@6.3.1: {} semver@7.5.4: @@ -7073,6 +9934,10 @@ snapshots: mrmime: 2.0.0 totalist: 3.0.1 + sisteransi@1.0.5: {} + + slashes@3.0.12: {} + snapdragon-node@2.1.1: dependencies: define-property: 1.0.0 @@ -7123,6 +9988,25 @@ snapshots: sparticles@1.3.1: {} + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.20 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + + spdx-license-ids@3.0.20: {} + speakingurl@14.0.1: {} split-string@3.1.0: @@ -7133,6 +10017,8 @@ snapshots: dependencies: frac: 1.1.2 + stable-hash@0.0.4: {} + stable@0.1.8: {} stackback@0.0.2: {} @@ -7180,6 +10066,10 @@ snapshots: strip-final-newline@3.0.0: {} + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + strip-json-comments@3.1.1: {} strip-literal@2.1.0: @@ -7253,6 +10143,17 @@ snapshots: symbol-tree@3.2.4: {} + synckit@0.6.2: + dependencies: + tslib: 2.8.1 + + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.1 + + systemjs@6.15.1: {} + tailwindcss@3.4.15: dependencies: '@alloc/quick-lru': 5.2.0 @@ -7280,8 +10181,7 @@ snapshots: transitivePeerDependencies: - ts-node - tapable@2.2.1: - optional: true + tapable@2.2.1: {} terser-webpack-plugin@5.3.9(webpack@5.89.0): dependencies: @@ -7361,6 +10261,10 @@ snapshots: regex-not: 1.0.2 safe-regex: 1.1.0 + toml-eslint-parser@0.10.0: + dependencies: + eslint-visitor-keys: 3.4.3 + totalist@3.0.1: {} tough-cookie@5.0.0: @@ -7377,14 +10281,24 @@ snapshots: dependencies: typescript: 5.5.3 + ts-api-utils@2.0.0(typescript@5.5.3): + dependencies: + typescript: 5.5.3 + ts-interface-checker@0.1.13: {} + tslib@2.8.1: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 type-fest@0.20.2: {} + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + typescript@5.5.3: {} uc.micro@2.1.0: {} @@ -7395,6 +10309,17 @@ snapshots: undici-types@6.19.8: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + unimport@3.13.3(rollup@4.27.4): dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.27.4) @@ -7420,6 +10345,25 @@ snapshots: is-extendable: 0.1.1 set-value: 2.0.1 + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universalify@2.0.1: {} unplugin-auto-import@0.18.5(@vueuse/core@11.3.0(vue@3.5.13(typescript@5.5.3)))(rollup@4.27.4): @@ -7452,7 +10396,7 @@ snapshots: transitivePeerDependencies: - supports-color - unplugin-vue-components@0.27.4(@babel/parser@7.26.2)(rollup@4.27.4)(vue@3.5.13(typescript@5.5.3)): + unplugin-vue-components@0.27.4(@babel/parser@7.26.3)(rollup@4.27.4)(vue@3.5.13(typescript@5.5.3)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.0(rollup@4.27.4) @@ -7466,7 +10410,7 @@ snapshots: unplugin: 1.16.0 vue: 3.5.13(typescript@5.5.3) optionalDependencies: - '@babel/parser': 7.26.2 + '@babel/parser': 7.26.3 transitivePeerDependencies: - rollup - supports-color @@ -7481,12 +10425,6 @@ snapshots: has-value: 0.3.1 isobject: 3.0.1 - update-browserslist-db@1.0.16(browserslist@4.23.1): - dependencies: - browserslist: 4.23.1 - escalade: 3.1.2 - picocolors: 1.0.1 - update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: browserslist: 4.24.2 @@ -7507,6 +10445,11 @@ snapshots: dependencies: inherits: 2.0.3 + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + vary@1.1.2: {} vite-hot-client@0.2.3(vite@5.4.11(@types/node@22.9.4)(sass@1.81.0)(terser@5.36.0)): @@ -7680,6 +10623,13 @@ snapshots: transitivePeerDependencies: - supports-color + vue-i18n@10.0.5(vue@3.5.13(typescript@5.5.3)): + dependencies: + '@intlify/core-base': 10.0.5 + '@intlify/shared': 10.0.5 + '@vue/devtools-api': 6.6.4 + vue: 3.5.13(typescript@5.5.3) + vue-router@4.5.0(vue@3.5.13(typescript@5.5.3)): dependencies: '@vue/devtools-api': 6.6.4 @@ -7862,6 +10812,12 @@ snapshots: yallist@4.0.0: {} + yaml-eslint-parser@1.2.3: + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.3.4 + yaml@2.3.4: {} yargs-parser@21.1.1: {} @@ -7879,3 +10835,5 @@ snapshots: yocto-queue@0.1.0: {} zod@3.23.8: {} + + zwitch@2.0.4: {} diff --git a/public/dog.svg b/public/dog.svg index 323cce2..995606b 100644 --- a/public/dog.svg +++ b/public/dog.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/personListTemplate-en.xlsx b/public/personListTemplate-en.xlsx new file mode 100644 index 0000000..3f45427 Binary files /dev/null and b/public/personListTemplate-en.xlsx differ diff --git a/public/readme-en.md b/public/readme-en.md new file mode 100644 index 0000000..a18f483 --- /dev/null +++ b/public/readme-en.md @@ -0,0 +1,31 @@ +# Operation Guide + +## Steps + +1. Upon first entry, no data will be displayed. You can choose to use default data to view the overall display effect. It is recommended to import your own data for operation. The steps are as follows: + + a. Personnel Configuration - Personnel List - Download Template, download the data template and modify it with your data (please note that the header cannot be modified). + + b. After modification, click 'Upload File' on the same page to upload the modified Excel table. + +2. Enter the Prize Configuration to modify your prize information. Try to keep the name short for better display; "All Participants" indicates whether this award will be drawn from all participants (those who have already won can still participate); "Winners" refers to the number of people to be drawn for this award; "Already Won" cannot be edited; "Selected" means this award has been used, unselecting it will reset the award but not the winners; "Image" is the prize image displayed on the home page (you can upload images in the image list); "Left Icon" is used to adjust the order of prizes. + +Completing the above two steps allows normal use. + +## Function Description + +1. Add Temporary Draw: There is a '+' button in the prize list on the draw page. Clicking it allows you to add a temporary draw. Note: Only one temporary draw can be added at a time. After adding successfully, the current prize will be set to the temporary prize, and after drawing, it will return to the normal prize list. +2. Music and Image List: You can upload files yourself for use. After uploading images successfully, you can select them in the prize configuration for display. After uploading music successfully, it will be added to the play list. +3. Music Playback: Left-click with the mouse to play/pause, right-click to play the next song. +4. Interface Configuration - Pattern Settings: You can use the mouse to click and customize the highlighted patterns on the home page. +5. If you do not want to display the prize list on the home page, uncheck 'Always Show Prize List' in the interface configuration. +6. When clicking buttons on the home page, the button value will not update immediately but will only update after the animation ends. This is a normal phenomenon. + +## Shortcuts + +Shortcuts are set up on the draw page. + +| Shortcut | Description | +| --- | --- | +| Space | Enter Draw / Start / Draw Lucky Winner / Continue | +| Esc | Cancel | \ No newline at end of file diff --git a/public/readme.md b/public/readme-zhCn.md similarity index 100% rename from public/readme.md rename to public/readme-zhCn.md diff --git a/public/人口登记表.xlsx b/public/人口登记表-zhCn.xlsx similarity index 100% rename from public/人口登记表.xlsx rename to public/人口登记表-zhCn.xlsx diff --git a/src/App.vue b/src/App.vue index 7523bee..0aee9b9 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,84 +1,86 @@ diff --git a/src/api/request.ts b/src/api/request.ts index b75c87f..0076f64 100644 --- a/src/api/request.ts +++ b/src/api/request.ts @@ -1,61 +1,62 @@ -import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; -import type { InternalAxiosRequestConfig } from 'axios'; +import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios' +import axios from 'axios' + class Request { - private instance: AxiosInstance; + private instance: AxiosInstance constructor(config: AxiosRequestConfig) { this.instance = axios.create({ baseURL: '/api', timeout: 10000, ...config, - }); + }) // 添加请求拦截器 this.instance.interceptors.request.use( (config: InternalAxiosRequestConfig) => { // 在发送请求之前做些什么 - console.log('请求拦截器被触发'); + console.log('请求拦截器被触发') - return config; + return config }, (error: any) => { // 对请求错误做些什么 - console.error('请求拦截器发生错误:', error); + console.error('请求拦截器发生错误:', error) - return Promise.reject(error); - } - ); + return Promise.reject(error) + }, + ) // 添加响应拦截器 this.instance.interceptors.response.use( (response: AxiosResponse) => { // 对响应数据做些什么 - console.log('响应拦截器被触发'); - const reponseData = response.data; + console.log('响应拦截器被触发') + const responseData = response.data - return reponseData; + return responseData }, (error: any) => { // 对响应错误做些什么 - console.error('响应拦截器发生错误:', error); + console.error('响应拦截器发生错误:', error) - return Promise.reject(error); - } - ); + return Promise.reject(error) + }, + ) } public async request(config: AxiosRequestConfig): Promise { - const response: AxiosResponse = await this.instance.request(config); + const response: AxiosResponse = await this.instance.request(config) - return response.data; + return response.data } } // 函数 function request(config: AxiosRequestConfig): Promise { - const instance = new Request(config); + const instance = new Request(config) - return instance.request(config); + return instance.request(config) } -export default request; +export default request diff --git a/src/components/DaiysuiTable/index.vue b/src/components/DaiysuiTable/index.vue index 2d34699..30c0fa6 100644 --- a/src/components/DaiysuiTable/index.vue +++ b/src/components/DaiysuiTable/index.vue @@ -1,69 +1,78 @@ diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue index 5e0e5f0..408cd08 100644 --- a/src/components/HelloWorld.vue +++ b/src/components/HelloWorld.vue @@ -1,17 +1,19 @@ diff --git a/src/components/ImageSync/index.vue b/src/components/ImageSync/index.vue index 00e982d..6dd2ae0 100644 --- a/src/components/ImageSync/index.vue +++ b/src/components/ImageSync/index.vue @@ -1,41 +1,40 @@ diff --git a/src/components/PlayMusic/index.vue b/src/components/PlayMusic/index.vue index 4ab907b..b85d020 100644 --- a/src/components/PlayMusic/index.vue +++ b/src/components/PlayMusic/index.vue @@ -1,120 +1,127 @@ + diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue index ddca7f8..028e6a3 100644 --- a/src/components/SvgIcon/index.vue +++ b/src/components/SvgIcon/index.vue @@ -1,5 +1,6 @@ + + diff --git a/src/layout/index.vue b/src/layout/index.vue index f1c2593..acd521c 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -1,16 +1,16 @@ @@ -19,16 +19,16 @@ const scrollToTop=()=>{ - +
- - +
+ diff --git a/src/locales/en.ts b/src/locales/en.ts new file mode 100644 index 0000000..a1b698b --- /dev/null +++ b/src/locales/en.ts @@ -0,0 +1,151 @@ +export default { + button: { + enterLottery: 'Enter Lottery', + start: 'Start', + selectLucky: 'Draw the Lucky', + continue: 'Continue', + confirm: 'Confirm', + cancel: 'Cancel', + setting: 'Setting', + delete: 'Delete', + allDelete: 'Delete All', + downloadTemplate: 'Download Template', + importData: 'Import Data', + resetData: 'Reset Data', + exportResult: 'Export Result', + add: 'Add', + resetDefault: 'Reset Default', + resetAllData: 'Reset All Data', + clearPattern: 'Clear Pattern', + DefaultPattern: 'Default Pattern', + upload: 'Upload', + reset: 'Reset', + play: 'Play', + setLayout: 'Set Layout', + close: 'Close', + noInfoAndImport: 'No Info and import it', + useDefault: 'Use Default Data', + }, + sidebar: { + personConfiguration: 'Person Configuration', + personList: 'Person List', + winnerList: 'Winner List', + prizeConfiguration: 'Prize Configuration', + globalSetting: 'Global Configuration', + viewSetting: 'View Setting', + imagesManagement: 'Images Management', + musicManagement: 'Music Management', + operatingInstructions: 'Operating Instructions', + }, + viewTitle: { + personManagement: 'Person Management', + winnerManagement: 'Winner Management', + prizeManagement: 'Prize Management', + globalSetting: 'Global Setting', + operatingInstructions: 'Operating Instructions', + }, + table: { + // person configuration + number: 'Number', + name: 'Name', + prizeName: 'Name', + department: 'Department', + identity: 'Identity', + isLucky: 'Is Lucky', + operation: 'Operation', + setLuckyNumber: 'Set Lucky Number', + luckyPeopleNumber: 'Lucky People Number', + + detail: 'Detail', + noneData: 'No Data', + // prize configuration + fullParticipation: 'FullParticipation', + numberParticipants: 'NumberParticipants', + isDone: 'is Done', + image: 'Image', + onceNumber: 'Once Number', + time: 'Time', + // view setting + title: 'Main Title', + columnNumber: 'Column Number', + theme: 'Theme', + language: 'Language', + cardColor: 'Card Color', + winnerColor: 'Winner Color', + textColor: 'Text Color', + cardWidth: 'Card Width', + cardHeight: 'Card Height', + textSize: 'Text Size', + highlightColor: 'HighLight Color', + patternSetting: 'Pattern Setting', + alwaysDisplay: 'Always Display Prize List', + selectPicture: 'Select a Picture', + backgroundImage: 'Select Background Image', + }, + dialog: { + titleTip: 'Tip!', + titleTemporary: 'Add Temporary Activity', + dialogPCWeb: 'Please use a PC browser to access for optimal display performance', + dialogDelAllPerson: 'This operation will delete all personnel list data. Do you want to continue?', + dialogResetWinner: 'This operation will clear the winning information of personnel. Do you want to continue?', + dialogResetAllData: 'This operation will reset all data. Do you want to continue?', + dialogSingleDrawLimit: 'Only 10 characters can be extracted in a single draw', + dialogLatestBrowser: 'Please use the latest version of Chrome or Edge browser', + tipResetPrize: 'Performing operations may reset data, please proceed with caution', + }, + tooltip: { + settingConfiguration: 'Setting/Configuration', + nextSong: 'Right Click to Next Song', + noSongPlay: 'No Song to Play', + prizeList: 'Prize List', + addActivity: 'Add Activity', + downloadTemplateTip: 'After downloading the file, please fill in the data in Excel and save it in xlsx format', + uploadExcelTip: 'Upload the modified Excel file', + leftClick: 'Left Click to Slice', + toHome: 'to Home', + resetLayout: 'This item is time-consuming and performance intensive', + defaultLayout: 'The default pattern setting is valid for 17 columns, please set the number of other columns yourself', + doneCount: 'Number of winners', + edit: 'Edit', + delete: 'Delete', + }, + error: { + require: 'required field', + requireNumber: 'please enter a number', + minNumber1: 'the minimum is 1', + maxNumber100: 'the maximum is 100', + uploadSuccess: 'Upload Success', + uploadFail: 'Upload Failed', + notImage: 'Not Image', + personIsAllDone: 'All Person Is Done', + personNotEnough: 'Person Is Not Enough', + startDraw: 'Now Draw {count} {leftover} people', + completeInformation: 'Please provide complete information', + }, + placeHolder: { + enterTitle: 'Enter Title', + name: 'Name', + winnerCount: 'Lucky Person Count', + }, + data: { + yes: 'Yes', + no: 'No', + number: 'Number', + isWin: 'isWin', + department: 'Department', + name: 'Name', + identity: 'Identity', + prizeName: 'Prize Name', + prizeTime: 'Prize Time', + operation: 'Operation', + delete: 'Delete', + removePerson: 'Remove the Person', + defaultTitle: 'The Prelude to the Six Ministries of the Ming Dynasty Cabinet', + xlsxName: 'personListTemplate-en.xlsx', + readmeName: 'readme-en.md', + }, + footer: { + 'self-reflection': 'Turn inward and examine yourself when you encounter difficulties in life.', + 'thiefEasy': 'Thief difficult mountain thief easily, breaking heart.', + }, +} diff --git a/src/locales/i18n.ts b/src/locales/i18n.ts new file mode 100644 index 0000000..4a31aad --- /dev/null +++ b/src/locales/i18n.ts @@ -0,0 +1,32 @@ +// i18n配置 +import { createI18n } from 'vue-i18n' +import en from './en' +import zhCn from './zhCn' + +export type Language = 'en' | 'zhCn' + +export const languageList = [ + { + key: 'zhCn', + name: '中文', + flag: 'zh-cn', + }, + { + key: 'en', + name: 'English', + flag: 'en-us', + }, +] +export const browserLanguage = navigator.language.toLowerCase().includes('zh') ? 'zhCn' : 'en' +const globalConfig = JSON.parse(localStorage.getItem('globalConfig') || '{}').globalConfig || {} +// 创建i18n +const i18n = createI18n({ + locale: globalConfig.language || browserLanguage, + legacy: false, + messages: { + zhCn, + en, + }, +}) + +export default i18n diff --git a/src/locales/zhCn.ts b/src/locales/zhCn.ts new file mode 100644 index 0000000..1adf959 --- /dev/null +++ b/src/locales/zhCn.ts @@ -0,0 +1,151 @@ +export default { + button: { + enterLottery: '进入抽奖', + start: '开始', + selectLucky: '抽取幸运儿', + continue: '继续', + confirm: '确认', + cancel: '取消', + setting: '设置', + delete: '删除', + allDelete: '删除全部', + downloadTemplate: '下载模板', + importData: '导入数据', + resetData: '重置数据', + exportResult: '导出结果', + add: '添加', + resetDefault: '重置为默认', + resetAllData: '重置所有数据', + clearPattern: '清除图案', + DefaultPattern: '默认图案', + upload: '上传', + reset: '重置', + play: '播放', + setLayout: '重设布局', + close: '关闭', + noInfoAndImport: '暂无人员信息,前往导入', + useDefault: '使用默认数据', + }, + sidebar: { + personConfiguration: '人员配置', + personList: '人员列表', + winnerList: '中奖人员', + prizeConfiguration: '奖品配置', + globalSetting: '全局配置', + viewSetting: '界面设置', + imagesManagement: '图片管理', + musicManagement: '音乐管理', + operatingInstructions: '操作说明', + }, + viewTitle: { + personManagement: '人员管理', + winnerManagement: '已中奖人员管理', + prizeManagement: '奖项配置', + globalSetting: '全局配置', + operatingInstructions: '操作说明', + }, + table: { + // person configuration + number: '编号', + name: '姓名', + prizeName: '名称', + department: '部门', + identity: '身份', + isLucky: '是否中奖', + operation: '操作', + setLuckyNumber: '设置中奖人数', + luckyPeopleNumber: '中奖人数', + + detail: '详细信息', + noneData: '暂无数据', + // prize configuration + fullParticipation: '全员参加', + numberParticipants: '抽奖人数', + isDone: '已抽取', + image: '图片', + onceNumber: '单次抽取个数', + time: '时间', + // view setting + title: '主标题', + columnNumber: '列数', + theme: '主题', + language: '语言', + cardColor: '卡片颜色', + winnerColor: '中奖卡片颜色', + textColor: '文字颜色', + cardWidth: '卡片宽度', + cardHeight: '卡片高度', + textSize: '文字大小', + highlightColor: '高亮颜色', + patternSetting: '图案设置', + alwaysDisplay: '常显奖项列表', + selectPicture: '选择一张图片', + backgroundImage: '选择背景图片', + }, + dialog: { + titleTip: '提示!', + titleTemporary: '增加临时抽奖', + dialogPCWeb: '请使用PC进行访问以获得最佳显示效果', + dialogDelAllPerson: '该操作会删除所有人员数据,是否继续?', + dialogResetWinner: '该操作会清空人员中奖信息,是否继续?', + dialogResetAllData: '该操作会重置所有数据,是否继续?', + dialogSingleDrawLimit: '单次抽取只能抽取10位', + dialogLatestBrowser: '请使用最新版Chrome或者Edge浏览器', + tipResetPrize: '进行操作可能会重置数据,请谨慎操作', + }, + tooltip: { + settingConfiguration: '设置/配置', + nextSong: '右键点击下一首', + noSongPlay: '没有音乐可以播放', + prizeList: '奖项列表', + addActivity: '添加抽奖', + downloadTemplateTip: '下载文件后,请在excel中填写数据,并保存为xlsx格式', + uploadExcelTip: '上传修改好的excel文件', + leftClick: '左键切割', + toHome: '主页', + resetLayout: '该项比较耗费时间和性能', + defaultLayout: '默认图案设置针对17列时有效,其他列数请自行设置', + doneCount: '已抽取', + edit: '编辑', + delete: '删除', + }, + error: { + require: '必填项', + requireNumber: '请输入数字', + minNumber1: '最小为1', + maxNumber100: '最大为100', + uploadSuccess: '上传成功', + uploadFail: '上传失败', + notImage: '不是图片', + personIsAllDone: '抽奖抽完了', + personNotEnough: '抽奖人数不足', + startDraw: '现在抽取{count}{leftover}人', + completeInformation: '请填写完整信息', + }, + placeHolder: { + enterTitle: '输入标题', + name: '名称', + winnerCount: '中奖人数', + }, + data: { + yes: '是', + no: '否', + number: '编号', + isWin: '是否中奖', + department: '部门', + name: '姓名', + identity: '身份', + prizeName: '获奖', + prizeTime: '获奖时间', + operation: '操作', + delete: '删除', + removePerson: '移入未中奖名单', + defaultTitle: '大明内阁六部御前奏对', + xlsxName: '人口登记表-zhCn.xlsx', + readmeName: 'readme-zhCn.md', + }, + footer: { + 'self-reflection': '行有不得,反求诸己', + 'thiefEasy': '破山中贼易,破心中贼难', + }, +} diff --git a/src/main.ts b/src/main.ts index 9e15246..b90b4ea 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,24 +1,25 @@ -import { createApp } from 'vue'; -import './style.css'; +import svgIcon from '@/components/SvgIcon/index.vue' +import i18n from '@/locales/i18n' +import * as THREE from 'three' +import { createApp } from 'vue' +import VueDOMPurifyHTML from 'vue-dompurify-html' +import App from './App.vue' +import './style.css' import './style/markdown.css' import './style/style.scss' -import * as THREE from 'three'; -import App from './App.vue'; -import VueDOMPurifyHTML from 'vue-dompurify-html' - -const app = createApp(App); // 全局svg组件 -import 'virtual:svg-icons-register'; -import svgIcon from '@/components/SvgIcon/index.vue'; +import 'virtual:svg-icons-register' // svg全局组件// 路由 -import router from '@/router'; +import router from '@/router' // pinia -import { createPinia } from 'pinia'; +import { createPinia } from 'pinia' // pinia持久化 -import piniaPluginPersist from 'pinia-plugin-persist'; -const pinia = createPinia(); -pinia.use(piniaPluginPersist); +import piniaPluginPersist from 'pinia-plugin-persist' -app.config.globalProperties.$THREE = THREE; //挂载到原型 -app.component('svg-icon', svgIcon); -app.use(router).use(VueDOMPurifyHTML).use(pinia).mount('#app'); +const app = createApp(App) +const pinia = createPinia() +pinia.use(piniaPluginPersist) + +app.config.globalProperties.$THREE = THREE // 挂载到原型 +app.component('svg-icon', svgIcon) +app.use(router).use(VueDOMPurifyHTML).use(pinia).use(i18n).mount('#app') diff --git a/src/router/index.ts b/src/router/index.ts index 5eb9e51..1a37f75 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,115 +1,117 @@ -import { createRouter, createWebHistory } from 'vue-router'; -import Layout from '@/layout/index.vue'; -import Home from '@/views/Home/index.vue'; -export const configRoutes={ - path: '/log-lottery/config', - name: 'Config', - component: () => import('@/views/Config/index.vue'), - children: [ +import Layout from '@/layout/index.vue' +import i18n from '@/locales/i18n' +import Home from '@/views/Home/index.vue' +import { createRouter, createWebHistory,createWebHashHistory } from 'vue-router' + +export const configRoutes = { + path: '/log-lottery/config', + name: 'Config', + component: () => import('@/views/Config/index.vue'), + children: [ + { + path: '', + redirect: '/log-lottery/config/person', + }, + { + path: '/log-lottery/config/person', + name: 'PersonConfig', + component: () => import('@/views/Config/Person/PersonConfig.vue'), + meta: { + title: i18n.global.t('sidebar.personConfiguration'), + icon: 'person', + }, + children: [ { - path: '', - redirect: '/log-lottery/config/person', - }, - { - path: '/log-lottery/config/person', - name: 'PersonConfig', - component: () => import('@/views/Config/Person/PersonConfig.vue'), - meta: { - title: '人员配置', - icon: 'person', + path: '', + redirect: '/log-lottery/config/person/all', }, - children:[ - { - path:'', - redirect: '/log-lottery/config/person/all', - }, - { - path:'/log-lottery/config/person/all', - name:'AllPersonConfig', - component:()=>import('@/views/Config/Person/PersonAll.vue'), - meta:{ - title:'人员名单', - icon:'all' - } - }, - { - path:'/log-lottery/config/person/already', - name:'AlreadyPerson', - component:()=>import('@/views/Config/Person/PersonAlready.vue'), - meta:{ - title:'中奖名单人员', - icon:'already' - } - }, - // { - // path:'other', - // name:'OtherPersonConfig', - // component:()=>import('@/views/Config/Person/OtherPersonConfig.vue'), - // meta:{ - // title:'其他配置', - // icon:'other' - // } - // } - ] - }, - { - path: '/log-lottery/config/prize', - name: 'PrizeConfig', - component: () => import('@/views/Config/Prize/PrizeConfig.vue'), - meta:{ - title: '奖品配置', - icon: 'prize' - } - }, - { - path:'/log-lottery/config/global', - name:'GlobalConfig', - redirect: '/log-lottery/config/global/all', - meta:{ - title:'全局配置', - icon:'global' + { + path: '/log-lottery/config/person/all', + name: 'AllPersonConfig', + component: () => import('@/views/Config/Person/PersonAll.vue'), + meta: { + title: i18n.global.t('sidebar.personList'), + icon: 'all', + }, }, - children:[ - { - path:'/log-lottery/config/global/face', - name:'FaceConfig', - component:()=>import('@/views/Config/Global/FaceConfig.vue'), - meta:{ - title:'界面配置', - icon:'face' - } - }, - { - path:'/log-lottery/config/global/image', - name:'ImageConfig', - component:()=>import('@/views/Config/Global/ImageConfig.vue'), - meta:{ - title:'图片列表', - icon:'image' - } - }, - { - path:'/log-lottery/config/global/music', - name:'MusicConfig', - component:()=>import('@/views/Config/Global/MusicConfig.vue'), - meta:{ - title:'音乐列表', - icon:'music' - } - } - ] + { + path: '/log-lottery/config/person/already', + name: 'AlreadyPerson', + component: () => import('@/views/Config/Person/PersonAlready.vue'), + meta: { + title: i18n.global.t('sidebar.winnerList'), + icon: 'already', + }, + }, + // { + // path:'other', + // name:'OtherPersonConfig', + // component:()=>import('@/views/Config/Person/OtherPersonConfig.vue'), + // meta:{ + // title:'其他配置', + // icon:'other' + // } + // } + ], + }, + { + path: '/log-lottery/config/prize', + name: 'PrizeConfig', + component: () => import('@/views/Config/Prize/PrizeConfig.vue'), + meta: { + title: i18n.global.t('sidebar.prizeConfiguration'), + icon: 'prize', }, - { - path: '/log-lottery/config/readme', - name: 'Readme', - component: () => import('@/views/Config/Readme/index.vue'), - meta:{ - title: '操作说明', - icon: 'readme' - } + }, + { + path: '/log-lottery/config/global', + name: 'GlobalConfig', + redirect: '/log-lottery/config/global/all', + meta: { + title: i18n.global.t('sidebar.globalSetting'), + icon: 'global', }, - ] - } + children: [ + { + path: '/log-lottery/config/global/face', + name: 'FaceConfig', + component: () => import('@/views/Config/Global/FaceConfig.vue'), + meta: { + title: i18n.global.t('sidebar.viewSetting'), + icon: 'face', + }, + }, + { + path: '/log-lottery/config/global/image', + name: 'ImageConfig', + component: () => import('@/views/Config/Global/ImageConfig.vue'), + meta: { + title: i18n.global.t('sidebar.imagesManagement'), + icon: 'image', + }, + }, + { + path: '/log-lottery/config/global/music', + name: 'MusicConfig', + component: () => import('@/views/Config/Global/MusicConfig.vue'), + meta: { + title: i18n.global.t('sidebar.musicManagement'), + icon: 'music', + }, + }, + ], + }, + { + path: '/log-lottery/config/readme', + name: 'Readme', + component: () => import('@/views/Config/Readme/index.vue'), + meta: { + title: i18n.global.t('sidebar.operatingInstructions'), + icon: 'readme', + }, + }, + ], +} const routes = [ { path: '/log-lottery', @@ -122,18 +124,19 @@ const routes = [ component: Home, }, { - path:'/log-lottery/demo', - name:'Demo', - component:()=>import('@/views/Demo/index.vue') + path: '/log-lottery/demo', + name: 'Demo', + component: () => import('@/views/Demo/index.vue'), }, configRoutes, ], }, ]; - +const envMode=import.meta.env.MODE; const router = createRouter({ - history: createWebHistory(), + // 读取环境变量 + history: envMode==='file'?createWebHashHistory():createWebHistory(), routes, -}); +}) -export default router; +export default router diff --git a/src/store/data.ts b/src/store/data.ts index 4dfe231..259aa1b 100644 --- a/src/store/data.ts +++ b/src/store/data.ts @@ -1,242 +1,243 @@ -import { IPrizeConfig, IPersonConfig } from '@/types/storeType'; +import type { IPersonConfig, IPrizeConfig } from '@/types/storeType' + export const defaultPersonList = [ { uid: 'U100156001', name: '朱厚熜', department: '皇室', identity: '万岁爷', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500", x: 1, y: 1, id: 0, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156002', name: '朱载垕', department: '皇室', identity: '裕王', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500", x: 2, y: 1, id: 1, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156003', name: '朱翊钧 ', department: '皇室', identity: '裕王世子', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 3, y: 1, id: 2, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156004', name: '严嵩', department: '内阁', identity: '首辅', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 4, y: 1, id: 3, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156005', name: '徐阶', department: '内阁', identity: '次辅、户部尚书', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 5, y: 1, id: 4, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156006', name: '张居正', department: '内阁', identity: '阁臣、兵部侍郞', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 6, y: 1, id: 5, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156007', name: '高拱', department: '内阁', identity: '阁臣、户部侍郞', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 7, y: 1, id: 6, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156008', name: '严世蕃', department: '内阁', identity: '吏部侍郞', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 8, y: 1, id: 7, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156009', name: '胡宗宪', department: '大臣', identity: '浙直总督', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 9, y: 1, id: 8, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156010', name: '戚继光', department: '大臣', identity: '都督佥事', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 10, y: 1, id: 9, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156011', name: '高瀚文', department: '大臣', identity: '杭州知府', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 11, y: 1, id: 10, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156012', name: '赵贞吉', department: '大臣', identity: '江苏巡抚', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 12, y: 1, id: 11, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156013', name: '海瑞', department: '大臣', identity: '淳安知县', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 13, y: 1, id: 12, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156014', name: '何茂才', department: '大臣', identity: '浙江布政使兼按察使', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 14, y: 1, id: 13, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156015', name: '郑泌昌', department: '大臣', identity: '浙江巡抚', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 15, y: 1, id: 14, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156016', name: '王用汲', department: '大臣', identity: '建德知县', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 16, y: 1, id: 15, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156017', name: '谭纶', department: '大臣', identity: '浙直总督府参军', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 17, y: 1, id: 16, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156018', name: '朱七', department: '大臣', identity: '北镇抚司', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 1, y: 2, id: 17, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156019', name: '罗龙文', department: '大臣', identity: '通政使司通政使', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 2, y: 2, id: 18, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156020', name: '马宁远', department: '大臣', identity: '杭州知府', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 3, y: 2, id: 19, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156021', name: '田有禄 ', department: '大臣', identity: '淳安县丞', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 4, y: 2, id: 20, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156022', name: '周云逸', department: '大臣', identity: '钦天监监正', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 5, y: 2, id: 21, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156023', name: '蒋千户', department: '大臣', identity: '浙江按察使司', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 6, y: 2, id: 22, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156024', name: '徐千户', department: '大臣', identity: '浙江按察使司', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 7, y: 2, id: 23, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156025', name: '王牢头 ', department: '大臣', identity: '牢头', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 8, y: 2, id: 24, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156026', name: '赵班头', department: '大臣', identity: '班头', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 9, y: 2, id: 25, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156027', name: '吕芳', department: '太监', identity: '掌印太监', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 10, y: 2, id: 26, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156028', name: '杨金水', department: '太监', identity: '织造局', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 11, y: 2, id: 27, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156029', name: '陈洪', department: '太监', identity: '首席秉笔太监', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 12, y: 2, id: 28, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156030', name: '黄锦', department: '太监', identity: '秉笔太监', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 13, y: 2, id: 29, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156031', name: '李玄', department: '太监', identity: '新安江河道监管', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 14, y: 2, id: 30, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156032', name: '冯保', department: '太监', identity: '世子大伴', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 15, y: 2, id: 31, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156033', name: '李时珍', department: '江湖', identity: '名医', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 16, y: 2, id: 32, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156034', name: '沈一石 ', department: '江湖', identity: '商人', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 17, y: 2, id: 33, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156035', name: '井上十四郎', department: '江湖', identity: '倭寇', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 1, y: 3, id: 34, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }, { uid: 'U100156036', name: '芸娘', department: '江湖', avatar: "https://img1.baidu.com/it/u=2165937980,813753762&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",x: 2, y: 3, id: 35, isWin: false, createTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', updateTime: 'Tue Jan 09 2024 23:20:07 GMT+0800 (China Standard Time)', prizeName: [], prizeTime: [], prizeId: [] }] export const defaultMusicList = [ - { - id: 'Geoff Knorr - China (The Industrial Era).ogg' + new Date().getTime().toString(), - name: 'Geoff Knorr - China (The Industrial Era).ogg', - url: 'https://1kw20.fun/resource/audio/Geoff Knorr - China (The Industrial Era).ogg' - }, - { - id: 'Geoff Knorr&Phill Boucher - China (The Atomic Era).ogg' + new Date().getTime().toString(), - name: 'Geoff Knorr&Phill Boucher - China (The Atomic Era).ogg', - url: 'https://1kw20.fun/resource/audio/Geoff Knorr&Phill Boucher - China (The Atomic Era).ogg' - }, - { - id: 'Radetzky March.mp3' + new Date().getTime().toString(), - name: 'Radetzky March.mp3', - url: 'https://1kw20.fun/resource/audio/Radetzky March.mp3' - }, - { - id: 'Shanghai.mp3' + new Date().getTime().toString(), - name: 'Shanghai.mp3', - url: 'https://1kw20.fun/resource/audio/Shanghai.mp3' - }, - { - id: 'Waltz No.2.mp3' + new Date().getTime().toString(), - name: 'Waltz No.2.mp3', - url: 'https://1kw20.fun/resource/audio/Waltz No.2.mp3' - }, - { - id: 'WildChinaTheme.mp3' + new Date().getTime().toString(), - name: 'WildChinaTheme.mp3', - url: 'https://1kw20.fun/resource/audio/WildChinaTheme.mp3' - }, - { - id: '边程&房东的猫 - 美好事物-再遇少年.ogg' + new Date().getTime().toString(), - name: '边程&房东的猫 - 美好事物-再遇少年.ogg', - url: 'https://1kw20.fun/resource/audio/边程&房东的猫 - 美好事物-再遇少年.ogg' - }, - { - id: '大乔小乔 - 相见难别亦难.ogg' + new Date().getTime().toString(), - name: '大乔小乔 - 相见难别亦难.ogg', - url: 'https://1kw20.fun/resource/audio/大乔小乔 - 相见难别亦难.ogg' - }, - { - id: '你要跳舞吗-新裤子.mp3' + new Date().getTime().toString(), - name: '你要跳舞吗-新裤子.mp3', - url: 'https://1kw20.fun/resource/audio/你要跳舞吗-新裤子.mp3' - }, - { - id: '生命-声音玩具.mp3' + new Date().getTime().toString(), - name: '生命-声音玩具.mp3', - url: 'https://1kw20.fun/resource/audio/生命-声音玩具.mp3' - }, - { - id: '与非门 - Happy New Year.ogg' + new Date().getTime().toString(), - name: '与非门 - Happy New Year.ogg', - url: 'https://1kw20.fun/resource/audio/与非门 - Happy New Year.ogg' - }, + { + id: `Geoff Knorr - China (The Industrial Era).ogg${new Date().getTime().toString()}`, + name: 'Geoff Knorr - China (The Industrial Era).ogg', + url: 'https://1kw20.fun/resource/audio/Geoff Knorr - China (The Industrial Era).ogg', + }, + { + id: `Geoff Knorr&Phill Boucher - China (The Atomic Era).ogg${new Date().getTime().toString()}`, + name: 'Geoff Knorr&Phill Boucher - China (The Atomic Era).ogg', + url: 'https://1kw20.fun/resource/audio/Geoff Knorr&Phill Boucher - China (The Atomic Era).ogg', + }, + { + id: `Radetzky March.mp3${new Date().getTime().toString()}`, + name: 'Radetzky March.mp3', + url: 'https://1kw20.fun/resource/audio/Radetzky March.mp3', + }, + { + id: `Shanghai.mp3${new Date().getTime().toString()}`, + name: 'Shanghai.mp3', + url: 'https://1kw20.fun/resource/audio/Shanghai.mp3', + }, + { + id: `Waltz No.2.mp3${new Date().getTime().toString()}`, + name: 'Waltz No.2.mp3', + url: 'https://1kw20.fun/resource/audio/Waltz No.2.mp3', + }, + { + id: `WildChinaTheme.mp3${new Date().getTime().toString()}`, + name: 'WildChinaTheme.mp3', + url: 'https://1kw20.fun/resource/audio/WildChinaTheme.mp3', + }, + { + id: `边程&房东的猫 - 美好事物-再遇少年.ogg${new Date().getTime().toString()}`, + name: '边程&房东的猫 - 美好事物-再遇少年.ogg', + url: 'https://1kw20.fun/resource/audio/边程&房东的猫 - 美好事物-再遇少年.ogg', + }, + { + id: `大乔小乔 - 相见难别亦难.ogg${new Date().getTime().toString()}`, + name: '大乔小乔 - 相见难别亦难.ogg', + url: 'https://1kw20.fun/resource/audio/大乔小乔 - 相见难别亦难.ogg', + }, + { + id: `你要跳舞吗-新裤子.mp3${new Date().getTime().toString()}`, + name: '你要跳舞吗-新裤子.mp3', + url: 'https://1kw20.fun/resource/audio/你要跳舞吗-新裤子.mp3', + }, + { + id: `生命-声音玩具.mp3${new Date().getTime().toString()}`, + name: '生命-声音玩具.mp3', + url: 'https://1kw20.fun/resource/audio/生命-声音玩具.mp3', + }, + { + id: `与非门 - Happy New Year.ogg${new Date().getTime().toString()}`, + name: '与非门 - Happy New Year.ogg', + url: 'https://1kw20.fun/resource/audio/与非门 - Happy New Year.ogg', + }, ] export const defaultPrizeList = [ - { - id: '001', - name: '三等奖', - sort: 1, - isAll: false, - count: 3, - isUsedCount: 0, - picture: { - id: '2', - name: '三等奖', - url: 'https://1kw20.fun/resource/image/image3.png' - }, - separateCount: { - enable: true, - countList: [] - }, - desc: '三等奖', - isShow: true, - isUsed: false, - frequency: 1, - }, - { - id: '002', - name: '二等奖', - sort: 2, - isAll: false, - count: 2, - isUsedCount: 0, - picture: { - id: '1', - name: '二等奖', - url: 'https://1kw20.fun/resource/image/image2.png' - }, - separateCount: { - enable: false, - countList: [] - }, - desc: '二等奖', - isShow: true, - isUsed: false, - frequency: 1, - }, - { - id: '003', - name: '一等奖', - sort: 3, - isAll: false, - count: 1, - isUsedCount: 0, - picture: { - id: '0', - name: '一等奖', - url: 'https://1kw20.fun/resource/image/image1.png' - }, - separateCount: { - enable: false, - countList: [] - }, - desc: '一等奖', - isShow: true, - isUsed: false, - frequency: 1, - }, - { - id: '004', - name: '超级大奖', - sort: 4, - isAll: false, - count: 1, - isUsedCount: 0, - picture: { - id: '3', - name: '超级奖', - url: 'https://1kw20.fun/resource/image/image4.png' - }, - separateCount: { - enable: false, - countList: [] - }, - desc: '超级大奖', - isShow: true, - isUsed: false, - frequency: 1, - }, - { - id: '005', - name: '特别奖', - sort: 5, - isAll: false, - count: 1, - isUsedCount: 0, - picture: { - id: '4', - name: '特别奖', - url: 'https://1kw20.fun/resource/image/image5.png' - }, - separateCount: { - enable: false, - countList: [] - }, - desc: '特别奖', - isShow: true, - isUsed: false, - frequency: 1, - } -] -export const defaultCurrentPrize = { + { id: '001', name: '三等奖', sort: 1, isAll: false, - count: 12, + count: 3, isUsedCount: 0, picture: { - id: '2', - name: '三等奖', - url: 'https://1kw20.fun/resource/image/image3.png' + id: '2', + name: '三等奖', + url: 'https://1kw20.fun/resource/image/image3.png', }, separateCount: { - enable: true, - countList: [] + enable: true, + countList: [], }, desc: '三等奖', isShow: true, isUsed: false, frequency: 1, -} -export const defaultTemporaryPrize = { - id: '', - name: '', - sort: 0, + }, + { + id: '002', + name: '二等奖', + sort: 2, + isAll: false, + count: 2, + isUsedCount: 0, + picture: { + id: '1', + name: '二等奖', + url: 'https://1kw20.fun/resource/image/image2.png', + }, + separateCount: { + enable: false, + countList: [], + }, + desc: '二等奖', + isShow: true, + isUsed: false, + frequency: 1, + }, + { + id: '003', + name: '一等奖', + sort: 3, isAll: false, count: 1, isUsedCount: 0, picture: { - id: '-1', - name: '', - url: '' + id: '0', + name: '一等奖', + url: 'https://1kw20.fun/resource/image/image1.png', }, separateCount: { - enable: true, - countList: [] + enable: false, + countList: [], }, - desc: '', - isShow: false, + desc: '一等奖', + isShow: true, isUsed: false, frequency: 1, + }, + { + id: '004', + name: '超级大奖', + sort: 4, + isAll: false, + count: 1, + isUsedCount: 0, + picture: { + id: '3', + name: '超级奖', + url: 'https://1kw20.fun/resource/image/image4.png', + }, + separateCount: { + enable: false, + countList: [], + }, + desc: '超级大奖', + isShow: true, + isUsed: false, + frequency: 1, + }, + { + id: '005', + name: '特别奖', + sort: 5, + isAll: false, + count: 1, + isUsedCount: 0, + picture: { + id: '4', + name: '特别奖', + url: 'https://1kw20.fun/resource/image/image5.png', + }, + separateCount: { + enable: false, + countList: [], + }, + desc: '特别奖', + isShow: true, + isUsed: false, + frequency: 1, + }, +] +export const defaultCurrentPrize = { + id: '001', + name: '三等奖', + sort: 1, + isAll: false, + count: 12, + isUsedCount: 0, + picture: { + id: '2', + name: '三等奖', + url: 'https://1kw20.fun/resource/image/image3.png', + }, + separateCount: { + enable: true, + countList: [], + }, + desc: '三等奖', + isShow: true, + isUsed: false, + frequency: 1, +} +export const defaultTemporaryPrize = { + id: '', + name: '', + sort: 0, + isAll: false, + count: 1, + isUsedCount: 0, + picture: { + id: '-1', + name: '', + url: '', + }, + separateCount: { + enable: true, + countList: [], + }, + desc: '', + isShow: false, + isUsed: false, + frequency: 1, } export const defaultImageList = [ - { - id: '0', - name: '一等奖', - url: 'https://1kw20.fun/resource/image/image1.png' - }, - { - id: '1', - name: '二等奖', - url: 'https://1kw20.fun/resource/image/image2.png' - }, - { - id: '2', - name: '三等奖', - url: 'https://1kw20.fun/resource/image/image3.png' - }, - { - id: '3', - name: '超级奖', - url: 'https://1kw20.fun/resource/image/image4.png' - }, - { - id: '4', - name: '特别奖', - url: 'https://1kw20.fun/resource/image/image5.png' - } + { + id: '0', + name: '一等奖', + url: 'https://1kw20.fun/resource/image/image1.png', + }, + { + id: '1', + name: '二等奖', + url: 'https://1kw20.fun/resource/image/image2.png', + }, + { + id: '2', + name: '三等奖', + url: 'https://1kw20.fun/resource/image/image3.png', + }, + { + id: '3', + name: '超级奖', + url: 'https://1kw20.fun/resource/image/image4.png', + }, + { + id: '4', + name: '特别奖', + url: 'https://1kw20.fun/resource/image/image5.png', + }, ] export const defaultPatternList = [21, 38, 55, 54, 53, 70, 87, 88, 89, 23, 40, 57, 74, 91, 92, 93, 76, 59, 42, 25, 24, 27, 28, 29, 46, 63, 62, 61, 78, 95, 96, 97, 20, 19, 31, 48, 65, 66, 67, 84, 101, 100, 99, 32, 33] diff --git a/src/store/globalConfig.ts b/src/store/globalConfig.ts index 4997cd0..855bcb4 100644 --- a/src/store/globalConfig.ts +++ b/src/store/globalConfig.ts @@ -1,258 +1,271 @@ -import { defineStore } from 'pinia'; -import { defaultMusicList, defaultImageList, defaultPatternList } from './data' -import { IMusic, IImage } from '@/types/storeType'; +import type { IImage, IMusic } from '@/types/storeType' +import i18n, { browserLanguage } from '@/locales/i18n' +import { defineStore } from 'pinia' +import { defaultImageList, defaultMusicList, defaultPatternList } from './data' // import { IPrizeConfig } from '@/types/storeType'; export const useGlobalConfig = defineStore('global', { - state() { - return { - globalConfig: { - rowCount: 17, - isSHowPrizeList: true, isShowAvatar: true, - topTitle: '大明内阁六部御前奏对', - theme: { - name: 'dracula', - detail: { primary: '#0f5fd3' }, - cardColor: '#ff79c6', - cardWidth: 140, - cardHeight: 200, - textColor: '#ffffff', - luckyCardColor: '#ECB1AC', - textSize: 30, - patternColor: '#1b66c9', - patternList: defaultPatternList as number[], - }, - musicList: defaultMusicList as IMusic[], - imageList: defaultImageList as IImage[], - }, - currentMusic: { - item: defaultMusicList[0], - paused: true, - }, - }; + state() { + return { + globalConfig: { + rowCount: 17, + isSHowPrizeList: true, + topTitle: i18n.global.t('data.defaultTitle'), + language: browserLanguage, + theme: { + name: 'dracula', + detail: { primary: '#0f5fd3' }, + cardColor: '#ff79c6', + cardWidth: 140, + cardHeight: 200, + textColor: '#ffffff', + luckyCardColor: '#ECB1AC', + textSize: 30, + patternColor: '#1b66c9', + patternList: defaultPatternList as number[], + background: {}, // 背景颜色或图片 + }, + musicList: defaultMusicList as IMusic[], + imageList: defaultImageList as IImage[], + }, + currentMusic: { + item: defaultMusicList[0], + paused: true, + }, + } + }, + getters: { + // 获取全部配置 + getGlobalConfig(state) { + return state.globalConfig }, - getters: { - // 获取全部配置 - getGlobalConfig(state) { - return state.globalConfig; - }, - // 获取标题 - getTopTitle(state) { - return state.globalConfig.topTitle; - }, - // 获取行数 - getRowCount(state) { - return state.globalConfig.rowCount; - }, - // 获取主题 - getTheme(state) { - return state.globalConfig.theme; - }, - // 获取卡片颜色 - getCardColor(state) { - return state.globalConfig.theme.cardColor; - }, - // 获取中奖颜色 - getLuckyColor(state) { - return state.globalConfig.theme.luckyCardColor; - }, - // 获取文字颜色 - getTextColor(state) { - return state.globalConfig.theme.textColor; - }, - // 获取卡片宽高 - getCardSize(state) { - return { - width: state.globalConfig.theme.cardWidth, - height: state.globalConfig.theme.cardHeight - } - }, - // 获取文字大小 - getTextSize(state) { - return state.globalConfig.theme.textSize; - }, - // 获取图案颜色 - getPatterColor(state) { - return state.globalConfig.theme.patternColor; - }, - // 获取图案列表 - getPatternList(state) { - return state.globalConfig.theme.patternList; - }, - // 获取音乐列表 - getMusicList(state) { - return state.globalConfig.musicList; - }, - // 获取当前音乐 - getCurrentMusic(state) { - return state.currentMusic; - }, - // 获取图片列表 - getImageList(state) { - return state.globalConfig.imageList; - }, - // 获取是否显示奖品列表 - getIsShowPrizeList(state) { - return state.globalConfig.isSHowPrizeList; - }, - // 获取是否显示头像 - getIsShowAvatar(state) { - return state.globalConfig.isShowAvatar; + // 获取标题 + getTopTitle(state) { + return state.globalConfig.topTitle + }, + // 获取行数 + getRowCount(state) { + return state.globalConfig.rowCount + }, + // 获取主题 + getTheme(state) { + return state.globalConfig.theme + }, + // 获取卡片颜色 + getCardColor(state) { + return state.globalConfig.theme.cardColor + }, + // 获取中奖颜色 + getLuckyColor(state) { + return state.globalConfig.theme.luckyCardColor + }, + // 获取文字颜色 + getTextColor(state) { + return state.globalConfig.theme.textColor + }, + // 获取卡片宽高 + getCardSize(state) { + return { + width: state.globalConfig.theme.cardWidth, + height: state.globalConfig.theme.cardHeight, + } + }, + // 获取文字大小 + getTextSize(state) { + return state.globalConfig.theme.textSize + }, + // 获取图案颜色 + getPatterColor(state) { + return state.globalConfig.theme.patternColor + }, + // 获取图案列表 + getPatternList(state) { + return state.globalConfig.theme.patternList + }, + // 获取音乐列表 + getMusicList(state) { + return state.globalConfig.musicList + }, + // 获取当前音乐 + getCurrentMusic(state) { + return state.currentMusic + }, + // 获取图片列表 + getImageList(state) { + return state.globalConfig.imageList + }, + // 获取是否显示奖品列表 + getIsShowPrizeList(state) { + return state.globalConfig.isSHowPrizeList + }, + // 获取当前语言 + getLanguage(state) { + return state.globalConfig.language + }, + // 获取背景图片设置 + getBackground(state) { + return state.globalConfig.theme.background + }, + }, + actions: { + // 设置rowCount + setRowCount(rowCount: number) { + this.globalConfig.rowCount = rowCount + }, + // 设置标题 + setTopTitle(topTitle: string) { + this.globalConfig.topTitle = topTitle + }, + // 设置主题 + setTheme(theme: any) { + const { name, detail } = theme + this.globalConfig.theme.name = name + this.globalConfig.theme.detail = detail + }, + // 设置卡片颜色 + setCardColor(cardColor: string) { + this.globalConfig.theme.cardColor = cardColor + }, + // 设置中奖颜色 + setLuckyCardColor(luckyCardColor: string) { + this.globalConfig.theme.luckyCardColor = luckyCardColor + }, + // 设置文字颜色 + setTextColor(textColor: string) { + this.globalConfig.theme.textColor = textColor + }, + // 设置卡片宽高 + setCardSize(cardSize: { width: number, height: number }) { + this.globalConfig.theme.cardWidth = cardSize.width + this.globalConfig.theme.cardHeight = cardSize.height + }, + // 设置文字大小 + setTextSize(textSize: number) { + this.globalConfig.theme.textSize = textSize + }, + // 设置图案颜色 + setPatterColor(patterColor: string) { + this.globalConfig.theme.patternColor = patterColor + }, + // 设置图案列表 + setPatternList(patternList: number[]) { + this.globalConfig.theme.patternList = patternList + }, + // 重置图案列表 + resetPatternList() { + this.globalConfig.theme.patternList = defaultPatternList + }, + // 添加音乐 + addMusic(music: IMusic) { + // 验证音乐是否已存在,看name字段 + for (let i = 0; i < this.globalConfig.musicList.length; i++) { + if (this.globalConfig.musicList[i].name === music.name) { + return } + } + this.globalConfig.musicList.push(music) }, - actions: { - // 设置rowCount - setRowCount(rowCount: number) { - this.globalConfig.rowCount = rowCount; - }, - // 设置标题 - setTopTitle(topTitle: string) { - this.globalConfig.topTitle = topTitle; - }, - // 设置主题 - setTheme(theme: any) { - const { name, detail } = theme; - this.globalConfig.theme.name = name; - this.globalConfig.theme.detail = detail; - }, - // 设置卡片颜色 - setCardColor(cardColor: string) { - this.globalConfig.theme.cardColor = cardColor; - }, - // 设置中奖颜色 - setLuckyCardColor(luckyCardColor: string) { - this.globalConfig.theme.luckyCardColor = luckyCardColor; - }, - // 设置文字颜色 - setTextColor(textColor: string) { - this.globalConfig.theme.textColor = textColor; - }, - // 设置卡片宽高 - setCardSize(cardSize: { width: number, height: number }) { - this.globalConfig.theme.cardWidth = cardSize.width; - this.globalConfig.theme.cardHeight = cardSize.height; - }, - // 设置文字大小 - setTextSize(textSize: number) { - this.globalConfig.theme.textSize = textSize; - }, - // 设置图案颜色 - setPatterColor(patterColor: string) { - this.globalConfig.theme.patternColor = patterColor; - }, - // 设置图案列表 - setPatternList(patternList: number[]) { - this.globalConfig.theme.patternList = patternList; - }, - // 重置图案列表 - resetPatternList() { - this.globalConfig.theme.patternList = defaultPatternList; - }, - // 添加音乐 - addMusic(music: IMusic) { - // 验证音乐是否已存在,看name字段 - for (let i = 0; i < this.globalConfig.musicList.length; i++) { - if (this.globalConfig.musicList[i].name === music.name) { - return; - } - } - this.globalConfig.musicList.push(music); - }, - // 删除音乐 - removeMusic(musicId: string) { - for (let i = 0; i < this.globalConfig.musicList.length; i++) { - if (this.globalConfig.musicList[i].id === musicId) { - this.globalConfig.musicList.splice(i, 1); - break; - } - } - }, - // 设置当前播放音乐 - setCurrentMusic(musicItem: IMusic, paused: boolean = true) { - this.currentMusic = { - item: musicItem, - paused: paused, - } - }, - // 重置音乐列表 - resetMusicList() { - this.globalConfig.musicList = defaultMusicList as IMusic[]; - }, - // 清空音乐列表 - clearMusicList() { - this.globalConfig.musicList = [] as IMusic[]; - }, - // 添加图片 - addImage(image: IImage) { - for (let i = 0; i < this.globalConfig.imageList.length; i++) { - if (this.globalConfig.imageList[i].name === image.name) { - return; - } - } - this.globalConfig.imageList.push(image); - }, - // 删除图片 - removeImage(imageId: string) { - for (let i = 0; i < this.globalConfig.imageList.length; i++) { - if (this.globalConfig.imageList[i].id === imageId) { - this.globalConfig.imageList.splice(i, 1); - break; - } - } - }, - // 重置图片列表 - resetImageList() { - this.globalConfig.imageList = defaultImageList as IImage[]; - }, - // 清空图片列表 - clearImageList() { - this.globalConfig.imageList = [] as IImage[] - }, - // 设置是否显示奖品列表 - setIsShowPrizeList(isShowPrizeList: boolean) { - this.globalConfig.isSHowPrizeList = isShowPrizeList; - }, - // 设置是否显示头像 - setIsShowAvatar(isShowAvatar: boolean) { - this.globalConfig.isShowAvatar = isShowAvatar; - }, - // 重置所有配置 - reset() { - this.globalConfig = { - rowCount: 17, - isSHowPrizeList: true, - isShowAvatar: false, - topTitle: '大明内阁六部御前奏对', - theme: { - name: 'dracula', - detail: { primary: '#0f5fd3' }, - cardColor: '#ff79c6', - cardWidth: 140, - cardHeight: 200, - textColor: '#ffffff', - luckyCardColor: '#ECB1AC', - textSize: 30, - patternColor: '#1b66c9', - patternList: defaultPatternList as number[], - }, - musicList: defaultMusicList as IMusic[], - imageList: defaultImageList as IImage[], - }, - this.currentMusic = { - item: defaultMusicList[0], - paused: true, - } + // 删除音乐 + removeMusic(musicId: string) { + for (let i = 0; i < this.globalConfig.musicList.length; i++) { + if (this.globalConfig.musicList[i].id === musicId) { + this.globalConfig.musicList.splice(i, 1) + break } + } }, - persist: { - enabled: true, - strategies: [ - { - // 如果要存储在localStorage中 - storage: localStorage, - key: 'globalConfig', - paths: ['globalConfig'], - }, - ], + // 设置当前播放音乐 + setCurrentMusic(musicItem: IMusic, paused: boolean = true) { + this.currentMusic = { + item: musicItem, + paused, + } }, + // 重置音乐列表 + resetMusicList() { + this.globalConfig.musicList =JSON.parse(JSON.stringify(defaultMusicList)) as IMusic[] + }, + // 清空音乐列表 + clearMusicList() { + this.globalConfig.musicList = [] as IMusic[] + }, + // 添加图片 + addImage(image: IImage) { + for (let i = 0; i < this.globalConfig.imageList.length; i++) { + if (this.globalConfig.imageList[i].name === image.name) { + return + } + } + this.globalConfig.imageList.push(image) + }, + // 删除图片 + removeImage(imageId: string) { + for (let i = 0; i < this.globalConfig.imageList.length; i++) { + if (this.globalConfig.imageList[i].id === imageId) { + this.globalConfig.imageList.splice(i, 1) + break + } + } + }, + // 重置图片列表 + resetImageList() { + this.globalConfig.imageList = defaultImageList as IImage[] + }, + // 清空图片列表 + clearImageList() { + this.globalConfig.imageList = [] as IImage[] + }, + // 设置是否显示奖品列表 + setIsShowPrizeList(isShowPrizeList: boolean) { + this.globalConfig.isSHowPrizeList = isShowPrizeList + }, + // 设置 + setLanguage(language: string) { + this.globalConfig.language = language + i18n.global.locale.value = language + }, + // 设置背景图片 + setBackground(background: any) { + this.globalConfig.theme.background = background + }, + // 重置所有配置 + reset() { + this.globalConfig = { + rowCount: 17, + isSHowPrizeList: true, + topTitle: i18n.global.t('data.defaultTitle'), + language: browserLanguage, + theme: { + name: 'dracula', + detail: { primary: '#0f5fd3' }, + cardColor: '#ff79c6', + cardWidth: 140, + cardHeight: 200, + textColor: '#ffffff', + luckyCardColor: '#ECB1AC', + textSize: 30, + patternColor: '#1b66c9', + patternList: defaultPatternList as number[], + background: {}, // 背景颜色或图片 + }, + musicList: defaultMusicList as IMusic[], + imageList: defaultImageList as IImage[], + } + this.currentMusic = { + item: defaultMusicList[0], + paused: true, + } + }, + }, + persist: { + enabled: true, + strategies: [ + { + // 如果要存储在localStorage中 + storage: localStorage, + key: 'globalConfig', + paths: ['globalConfig'], + }, + ], + }, }) diff --git a/src/store/index.ts b/src/store/index.ts index 532b46d..5c4d226 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -1,12 +1,13 @@ -import {usePersonConfig} from './personConfig'; -import { usePrizeConfig } from './prizeConfig'; -import {useGlobalConfig} from './globalConfig'; -import {useSystem} from './system'; +import { useGlobalConfig } from './globalConfig' +import { usePersonConfig } from './personConfig' +import { usePrizeConfig } from './prizeConfig' +import { useSystem } from './system' + export default function useStore() { return { - personConfig:usePersonConfig(), - prizeConfig:usePrizeConfig(), - globalConfig:useGlobalConfig(), - system:useSystem(), - }; + personConfig: usePersonConfig(), + prizeConfig: usePrizeConfig(), + globalConfig: useGlobalConfig(), + system: useSystem(), + } } diff --git a/src/store/personConfig.ts b/src/store/personConfig.ts index 7029d2f..06df7d1 100644 --- a/src/store/personConfig.ts +++ b/src/store/personConfig.ts @@ -1,158 +1,159 @@ -import { defineStore } from 'pinia'; -import { IPersonConfig } from '@/types/storeType'; -import { IPrizeConfig } from '@/types/storeType'; -import { defaultPersonList } from './data' -import { usePrizeConfig } from './prizeConfig'; +import type { IPersonConfig, IPrizeConfig } from '@/types/storeType' + import dayjs from 'dayjs' +import { defineStore } from 'pinia' +import { defaultPersonList } from './data' +import { usePrizeConfig } from './prizeConfig' + export const usePersonConfig = defineStore('person', { - state() { - return { - personConfig: { - allPersonList: [] as IPersonConfig[], - alreadyPersonList: [] as IPersonConfig[], - } - }; + state() { + return { + personConfig: { + allPersonList: [] as IPersonConfig[], + alreadyPersonList: [] as IPersonConfig[], + }, + } + }, + getters: { + // 获取全部配置 + getPersonConfig(state) { + return state.personConfig }, - getters: { - // 获取全部配置 - getPersonConfig(state) { - return state.personConfig; - }, - // 获取全部人员名单 - getAllPersonList(state) { - return state.personConfig.allPersonList.filter((item: IPersonConfig) => { - return item - }); - }, - // 获取未获此奖的人员名单 - getNotThisPrizePersonList(state: any) { - const currentPrize = usePrizeConfig().prizeConfig.currentPrize; - const data = state.personConfig.allPersonList.filter((item: IPersonConfig) => { - return !item.prizeId.includes(currentPrize.id as string); - }); - - return data - }, - // 获取已中奖人员名单 - getAlreadyPersonList(state) { - return state.personConfig.allPersonList.filter((item: IPersonConfig) => { - return item.isWin === true; - }); - }, - // 获取中奖人员详情 - getAlreadyPersonDetail(state) { - return state.personConfig.alreadyPersonList - }, - // 获取未中奖人员名单 - getNotPersonList(state) { - return state.personConfig.allPersonList.filter((item: IPersonConfig) => { - return item.isWin === false; - }); - }, + // 获取全部人员名单 + getAllPersonList(state) { + return state.personConfig.allPersonList.filter((item: IPersonConfig) => { + return item + }) }, - actions: { - // 添加未中奖人员 - addNotPersonList(personList: IPersonConfig[]) { - if (personList.length <= 0) { - return - } - personList.forEach((item: IPersonConfig) => { - this.personConfig.allPersonList.push(item); - }); - }, - // 添加已中奖人员 - addAlreadyPersonList(personList: IPersonConfig[], prize: IPrizeConfig | null) { - if (personList.length <= 0) { - return - } - personList.forEach((person: IPersonConfig) => { - this.personConfig.allPersonList.map((item: IPersonConfig) => { - if (item.id === person.id && prize != null) { - item.isWin = true - // person.isWin = true - item.prizeName.push(prize.name) - // person.prizeName += prize.name - item.prizeTime.push(dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')) - // person.prizeTime = new Date().toString() - item.prizeId.push(prize.id as string) - } + // 获取未获此奖的人员名单 + getNotThisPrizePersonList(state: any) { + const currentPrize = usePrizeConfig().prizeConfig.currentPrize + const data = state.personConfig.allPersonList.filter((item: IPersonConfig) => { + return !item.prizeId.includes(currentPrize.id as string) + }) - return item - }); - this.personConfig.alreadyPersonList.push(person); - }); - }, - // 从已中奖移动到未中奖 - moveAlreadyToNot(person: IPersonConfig) { - if (person.id == undefined || person.id == null) { - return - } - const alreadyPersonListLength = this.personConfig.alreadyPersonList.length - for (let i = 0; i < this.personConfig.allPersonList.length; i++) { - if (person.id === this.personConfig.allPersonList[i].id) { - this.personConfig.allPersonList[i].isWin = false - this.personConfig.allPersonList[i].prizeName = [] - this.personConfig.allPersonList[i].prizeTime = [] - this.personConfig.allPersonList[i].prizeId = [] - - break - } - } - for (let i = 0; i < alreadyPersonListLength; i++) { - this.personConfig.alreadyPersonList = this.personConfig.alreadyPersonList.filter((item: IPersonConfig) => - item.id !== person.id - ) - } - }, - // 删除指定人员 - deletePerson(person: IPersonConfig) { - if (person.id != undefined || person.id != null) { - this.personConfig.allPersonList = this.personConfig.allPersonList.filter((item: IPersonConfig) => item.id !== person.id); - this.personConfig.alreadyPersonList = this.personConfig.alreadyPersonList.filter((item: IPersonConfig) => item.id !== person.id); - } - }, - // 删除所有人员 - deleteAllPerson() { - this.personConfig.allPersonList = []; - this.personConfig.alreadyPersonList = []; - }, - - // 删除所有人员 - resetPerson() { - this.personConfig.allPersonList = []; - this.personConfig.alreadyPersonList = []; - }, - // 重置已中奖人员 - resetAlreadyPerson() { - // 把已中奖人员合并到未中奖人员,要验证是否已存在 - this.personConfig.allPersonList.forEach((item: IPersonConfig) => { - item.isWin = false; - item.prizeName = []; - item.prizeTime = []; - item.prizeId = [] - }); - this.personConfig.alreadyPersonList = []; - }, - setDefaultPersonList() { - this.personConfig.allPersonList = defaultPersonList; - this.personConfig.alreadyPersonList = []; - }, - // 重置所有配置 - reset() { - this.personConfig = { - allPersonList: [] as IPersonConfig[], - alreadyPersonList: [] as IPersonConfig[], - } - }, + return data }, - persist: { - enabled: true, - strategies: [ - { - // 如果要存储在localStorage中 - storage: localStorage, - key: 'personConfig', - }, - ], + // 获取已中奖人员名单 + getAlreadyPersonList(state) { + return state.personConfig.allPersonList.filter((item: IPersonConfig) => { + return item.isWin === true + }) }, -}); + // 获取中奖人员详情 + getAlreadyPersonDetail(state) { + return state.personConfig.alreadyPersonList + }, + // 获取未中奖人员名单 + getNotPersonList(state) { + return state.personConfig.allPersonList.filter((item: IPersonConfig) => { + return item.isWin === false + }) + }, + }, + actions: { + // 添加未中奖人员 + addNotPersonList(personList: IPersonConfig[]) { + if (personList.length <= 0) { + return + } + personList.forEach((item: IPersonConfig) => { + this.personConfig.allPersonList.push(item) + }) + }, + // 添加已中奖人员 + addAlreadyPersonList(personList: IPersonConfig[], prize: IPrizeConfig | null) { + if (personList.length <= 0) { + return + } + personList.forEach((person: IPersonConfig) => { + this.personConfig.allPersonList.map((item: IPersonConfig) => { + if (item.id === person.id && prize != null) { + item.isWin = true + // person.isWin = true + item.prizeName.push(prize.name) + // person.prizeName += prize.name + item.prizeTime.push(dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')) + // person.prizeTime = new Date().toString() + item.prizeId.push(prize.id as string) + } + + return item + }) + this.personConfig.alreadyPersonList.push(person) + }) + }, + // 从已中奖移动到未中奖 + moveAlreadyToNot(person: IPersonConfig) { + if (person.id === undefined || person.id == null) { + return + } + const alreadyPersonListLength = this.personConfig.alreadyPersonList.length + for (let i = 0; i < this.personConfig.allPersonList.length; i++) { + if (person.id === this.personConfig.allPersonList[i].id) { + this.personConfig.allPersonList[i].isWin = false + this.personConfig.allPersonList[i].prizeName = [] + this.personConfig.allPersonList[i].prizeTime = [] + this.personConfig.allPersonList[i].prizeId = [] + + break + } + } + for (let i = 0; i < alreadyPersonListLength; i++) { + this.personConfig.alreadyPersonList = this.personConfig.alreadyPersonList.filter((item: IPersonConfig) => + item.id !== person.id, + ) + } + }, + // 删除指定人员 + deletePerson(person: IPersonConfig) { + if (person.id !== undefined || person.id != null) { + this.personConfig.allPersonList = this.personConfig.allPersonList.filter((item: IPersonConfig) => item.id !== person.id) + this.personConfig.alreadyPersonList = this.personConfig.alreadyPersonList.filter((item: IPersonConfig) => item.id !== person.id) + } + }, + // 删除所有人员 + deleteAllPerson() { + this.personConfig.allPersonList = [] + this.personConfig.alreadyPersonList = [] + }, + + // 删除所有人员 + resetPerson() { + this.personConfig.allPersonList = [] + this.personConfig.alreadyPersonList = [] + }, + // 重置已中奖人员 + resetAlreadyPerson() { + // 把已中奖人员合并到未中奖人员,要验证是否已存在 + this.personConfig.allPersonList.forEach((item: IPersonConfig) => { + item.isWin = false + item.prizeName = [] + item.prizeTime = [] + item.prizeId = [] + }) + this.personConfig.alreadyPersonList = [] + }, + setDefaultPersonList() { + this.personConfig.allPersonList = defaultPersonList + this.personConfig.alreadyPersonList = [] + }, + // 重置所有配置 + reset() { + this.personConfig = { + allPersonList: [] as IPersonConfig[], + alreadyPersonList: [] as IPersonConfig[], + } + }, + }, + persist: { + enabled: true, + strategies: [ + { + // 如果要存储在localStorage中 + storage: localStorage, + key: 'personConfig', + }, + ], + }, +}) diff --git a/src/store/prizeConfig.ts b/src/store/prizeConfig.ts index f434a55..0732894 100644 --- a/src/store/prizeConfig.ts +++ b/src/store/prizeConfig.ts @@ -1,176 +1,177 @@ -import { defineStore } from 'pinia'; -import { IPrizeConfig } from '@/types/storeType'; -import { defaultPrizeList, defaultCurrentPrize } from './data'; +import type { IPrizeConfig } from '@/types/storeType' +import { defineStore } from 'pinia' +import { defaultCurrentPrize, defaultPrizeList } from './data' + export const usePrizeConfig = defineStore('prize', { - state() { - return { - prizeConfig: { - prizeList: defaultPrizeList, - currentPrize: defaultCurrentPrize, - temporaryPrize: { - id: '', - name: '', - sort: 0, - isAll: false, - count: 1, - isUsedCount: 0, - picture: { - id: '-1', - name: '', - url: '' - }, - separateCount: { - enable: true, - countList: [] - }, - desc: '', - isShow: false, - isUsed: false, - frequency: 1, - } as IPrizeConfig - } - }; + state() { + return { + prizeConfig: { + prizeList: defaultPrizeList, + currentPrize: defaultCurrentPrize, + temporaryPrize: { + id: '', + name: '', + sort: 0, + isAll: false, + count: 1, + isUsedCount: 0, + picture: { + id: '-1', + name: '', + url: '', + }, + separateCount: { + enable: true, + countList: [], + }, + desc: '', + isShow: false, + isUsed: false, + frequency: 1, + } as IPrizeConfig, + }, + } + }, + getters: { + // 获取全部配置 + getPrizeConfigAll(state) { + return state.prizeConfig }, - getters: { - // 获取全部配置 - getPrizeConfigAll(state) { - return state.prizeConfig; - }, - // 获取奖品列表 - getPrizeConfig(state) { - return state.prizeConfig.prizeList; - }, - // 根据id获取配置 - getPrizeConfigById(state) { - return (id: number | string) => { - return state.prizeConfig.prizeList.find(item => item.id === id); - } - }, - // 获取当前奖项 - getCurrentPrize(state) { - return state.prizeConfig.currentPrize; - }, - // 获取临时的奖项 - getTemporaryPrize(state) { - return state.prizeConfig.temporaryPrize; - }, - + // 获取奖品列表 + getPrizeConfig(state) { + return state.prizeConfig.prizeList + }, + // 根据id获取配置 + getPrizeConfigById(state) { + return (id: number | string) => { + return state.prizeConfig.prizeList.find(item => item.id === id) + } + }, + // 获取当前奖项 + getCurrentPrize(state) { + return state.prizeConfig.currentPrize + }, + // 获取临时的奖项 + getTemporaryPrize(state) { + return state.prizeConfig.temporaryPrize }, - actions: { - // 设置奖项 - setPrizeConfig(prizeList: IPrizeConfig[]) { - this.prizeConfig.prizeList = prizeList; - }, - // 添加奖项 - addPrizeConfig(prizeConfigItem: IPrizeConfig) { - this.prizeConfig.prizeList.push(prizeConfigItem); - }, - // 删除奖项 - deletePrizeConfig(prizeConfigItemId: number | string) { - this.prizeConfig.prizeList = this.prizeConfig.prizeList.filter(item => item.id !== prizeConfigItemId); - }, - // 更新奖项数据 - updatePrizeConfig(prizeConfigItem: IPrizeConfig) { - const prizeListLength = this.prizeConfig.prizeList.length; - if (prizeConfigItem.isUsed && prizeListLength) { - for (let i = 0; i < prizeListLength; i++) { - if (!this.prizeConfig.prizeList[i].isUsed) { - this.setCurrentPrize(this.prizeConfig.prizeList[i]); - break; - } - } - } - else { - return - } - this.resetTemporaryPrize() - }, - // 删除全部奖项 - deleteAllPrizeConfig() { - this.prizeConfig.prizeList = [] as IPrizeConfig[]; - }, - // 设置当前奖项 - setCurrentPrize(prizeConfigItem: IPrizeConfig) { - this.prizeConfig.currentPrize = prizeConfigItem - }, - // 设置临时奖项 - setTemporaryPrize(prizeItem: IPrizeConfig) { - if (prizeItem.isShow == false) { - for (let i = 0; i < this.prizeConfig.prizeList.length; i++) { - if (this.prizeConfig.prizeList[i].isUsed == false) { - this.setCurrentPrize(this.prizeConfig.prizeList[i]); - break - } - } - this.resetTemporaryPrize() - - return - } - - this.prizeConfig.temporaryPrize = prizeItem - }, - // 重置临时奖项 - resetTemporaryPrize() { - this.prizeConfig.temporaryPrize = { - id: '', - name: '', - sort: 0, - isAll: false, - count: 1, - isUsedCount: 0, - picture: { - id: '-1', - name: '', - url: '' - }, - separateCount: { - enable: true, - countList: [] - }, - desc: '', - isShow: false, - isUsed: false, - frequency: 1, - } as IPrizeConfig; - }, - // 重置所有配置 - resetDefault() { - this.prizeConfig = { - prizeList: defaultPrizeList, - currentPrize: defaultCurrentPrize, - temporaryPrize: { - id: '', - name: '', - sort: 0, - isAll: false, - count: 1, - isUsedCount: 0, - picture: { - id: '-1', - name: '', - url: '' - }, - separateCount: { - enable: true, - countList: [] - }, - desc: '', - isShow: false, - isUsed: false, - frequency: 1, - } as IPrizeConfig - } + }, + actions: { + // 设置奖项 + setPrizeConfig(prizeList: IPrizeConfig[]) { + this.prizeConfig.prizeList = prizeList + }, + // 添加奖项 + addPrizeConfig(prizeConfigItem: IPrizeConfig) { + this.prizeConfig.prizeList.push(prizeConfigItem) + }, + // 删除奖项 + deletePrizeConfig(prizeConfigItemId: number | string) { + this.prizeConfig.prizeList = this.prizeConfig.prizeList.filter(item => item.id !== prizeConfigItemId) + }, + // 更新奖项数据 + updatePrizeConfig(prizeConfigItem: IPrizeConfig) { + const prizeListLength = this.prizeConfig.prizeList.length + if (prizeConfigItem.isUsed && prizeListLength) { + for (let i = 0; i < prizeListLength; i++) { + if (!this.prizeConfig.prizeList[i].isUsed) { + this.setCurrentPrize(this.prizeConfig.prizeList[i]) + break + } } + } + else { + return + } + this.resetTemporaryPrize() }, - persist: { - enabled: true, - strategies: [ - { - // 如果要存储在localStorage中 - storage: localStorage, - key: 'prizeConfig', - }, - ], + // 删除全部奖项 + deleteAllPrizeConfig() { + this.prizeConfig.prizeList = [] as IPrizeConfig[] }, -}); + // 设置当前奖项 + setCurrentPrize(prizeConfigItem: IPrizeConfig) { + this.prizeConfig.currentPrize = prizeConfigItem + }, + // 设置临时奖项 + setTemporaryPrize(prizeItem: IPrizeConfig) { + if (prizeItem.isShow === false) { + for (let i = 0; i < this.prizeConfig.prizeList.length; i++) { + if (this.prizeConfig.prizeList[i].isUsed === false) { + this.setCurrentPrize(this.prizeConfig.prizeList[i]) + + break + } + } + this.resetTemporaryPrize() + + return + } + + this.prizeConfig.temporaryPrize = prizeItem + }, + // 重置临时奖项 + resetTemporaryPrize() { + this.prizeConfig.temporaryPrize = { + id: '', + name: '', + sort: 0, + isAll: false, + count: 1, + isUsedCount: 0, + picture: { + id: '-1', + name: '', + url: '', + }, + separateCount: { + enable: true, + countList: [], + }, + desc: '', + isShow: false, + isUsed: false, + frequency: 1, + } as IPrizeConfig + }, + // 重置所有配置 + resetDefault() { + this.prizeConfig = { + prizeList: defaultPrizeList, + currentPrize: defaultCurrentPrize, + temporaryPrize: { + id: '', + name: '', + sort: 0, + isAll: false, + count: 1, + isUsedCount: 0, + picture: { + id: '-1', + name: '', + url: '', + }, + separateCount: { + enable: true, + countList: [], + }, + desc: '', + isShow: false, + isUsed: false, + frequency: 1, + } as IPrizeConfig, + } + }, + }, + persist: { + enabled: true, + strategies: [ + { + // 如果要存储在localStorage中 + storage: localStorage, + key: 'prizeConfig', + }, + ], + }, +}) diff --git a/src/store/system.ts b/src/store/system.ts index d13ba88..771d98f 100644 --- a/src/store/system.ts +++ b/src/store/system.ts @@ -1,37 +1,37 @@ -import { defineStore } from 'pinia'; +import { defineStore } from 'pinia' // import { IPrizeConfig } from '@/types/storeType'; export const useSystem = defineStore('system', { - state() { - return { - isMobile:false, - isChrome:true - }; + state() { + return { + isMobile: false, + isChrome: true, + } + }, + getters: { + getIsMobile(state) { + return state.isMobile }, - getters: { - getIsMobile(state) { - return state.isMobile; - }, - getIsChrome(state) { - return state.isChrome; - }, + getIsChrome(state) { + return state.isChrome }, - actions: { - setIsMobile(isMobile: boolean) { - this.isMobile = isMobile; - }, - setIsChrome(isChrome: boolean) { - this.isChrome = isChrome; - }, + }, + actions: { + setIsMobile(isMobile: boolean) { + this.isMobile = isMobile }, - persist: { - enabled: true, - strategies: [ - { - // 如果要存储在localStorage中 - // storage: localStorage, - // key: 'globalConfig', - // paths: ['globalConfig'], - }, - ], + setIsChrome(isChrome: boolean) { + this.isChrome = isChrome }, + }, + persist: { + enabled: true, + strategies: [ + { + // 如果要存储在localStorage中 + // storage: localStorage, + // key: 'globalConfig', + // paths: ['globalConfig'], + }, + ], + }, }) diff --git a/src/types/storeType.ts b/src/types/storeType.ts index 50e4c01..799d4b8 100644 --- a/src/types/storeType.ts +++ b/src/types/storeType.ts @@ -14,40 +14,40 @@ export interface IPersonConfig { prizeId: string[]; prizeTime: string[]; } -export type Separate = { - id: string, - count: number, - isUsedCount: number, +export interface Separate { + id: string + count: number + isUsedCount: number } export interface IPrizeConfig { - id: number | string; - name: string; - sort: number; - isAll: boolean; - count: number; - isUsedCount: number, - picture: { - id: string | number, - name: string, - url: string - }; - separateCount: { - enable: boolean, - countList: Separate[], - }; - desc: string; - isShow: boolean; - isUsed: boolean, - frequency: number; + id: number | string + name: string + sort: number + isAll: boolean + count: number + isUsedCount: number + picture: { + id: string | number + name: string + url: string + } + separateCount: { + enable: boolean + countList: Separate[] + } + desc: string + isShow: boolean + isUsed: boolean + frequency: number } export interface IMusic { - id: string, - name: string, - url: string, + id: string + name: string + url: string } export interface IImage { - id: string, - name: string, - url: string, + id: string + name: string + url: string } diff --git a/src/utils/auth.ts b/src/utils/auth.ts index 4162234..17034bf 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -1,3 +1,3 @@ export function getToken() { - return window.localStorage.getItem('userToken'); + return window.localStorage.getItem('userToken') } diff --git a/src/utils/color.ts b/src/utils/color.ts index 0fa9767..dd7f7dc 100644 --- a/src/utils/color.ts +++ b/src/utils/color.ts @@ -1,41 +1,71 @@ // 判断颜色是否rgb或者rgba export function isRgbOrRgba(color: string) { - return color.indexOf('rgb') > -1 || color.indexOf('rgba') > -1; + return color.includes('rgb') || color.includes('rgba') } // 判断是否hex形式 export function isHex(color: string) { - return color.indexOf('#') > -1; + return color.includes('#') } // 把hex颜色转成rgb数值类型 export function hexToRgba(hex: string) { - const r = parseInt(hex.slice(1, 3), 16); - const g = parseInt(hex.slice(3, 5), 16); - const b = parseInt(hex.slice(5, 7), 16); - -return {r,g,b} + const r = Number.parseInt(hex.slice(1, 3), 16) + const g = Number.parseInt(hex.slice(3, 5), 16) + const b = Number.parseInt(hex.slice(5, 7), 16) + + return { r, g, b } } // 把rgb数组转化成r g b 数值 export function rgbToRgba(rgb: string) { - const rgbArr = rgb.split('(')[1].split(')')[0].split(','); - -return {r:rgbArr[0],g:rgbArr[1],b:rgbArr[2]} + const rgbArr = rgb.split('(')[1].split(')')[0].split(',') + + return { r: rgbArr[0], g: rgbArr[1], b: rgbArr[2] } } // 组成rgb颜色添加透明度 export function rgba(color: string, opacity: number) { - opacity = opacity || 1; - let rgbaStr='' - // 判断是否是hex颜色 - if (isHex(color)) { - const {r,g,b} = hexToRgba(color); - rgbaStr = `rgba(${r},${g},${b},${opacity})` - } - else{ - const {r,g,b} = rgbToRgba(color) - rgbaStr = `rgba(${r},${g},${b},${opacity})` - } - -return rgbaStr + opacity = opacity || 1 + let rgbaStr = '' + // 判断是否是hex颜色 + if (isHex(color)) { + const { r, g, b } = hexToRgba(color) + rgbaStr = `rgba(${r},${g},${b},${opacity})` + } + else { + const { r, g, b } = rgbToRgba(color) + rgbaStr = `rgba(${r},${g},${b},${opacity})` + } + + return rgbaStr } + +export function rgbToHex(color:string) { + // 去掉字符串中的空格 + color = color.replace(/\s+/g, ''); + + // 匹配rgba或rgb格式的字符串 + const rgbaMatch = color.match(/^rgba?\((\d+),(\d+),(\d+),?(\d*\.?\d+)?\)$/i); + if (!rgbaMatch) { + throw new Error('Invalid color format'); + } + + const r = parseInt(rgbaMatch[1], 10); + const g = parseInt(rgbaMatch[2], 10); + const b = parseInt(rgbaMatch[3], 10); + const a = rgbaMatch[4] !== undefined ? parseFloat(rgbaMatch[4]) : undefined; + + // 将RGB值转换为十六进制 + let hex = "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase(); + + // 如果提供了alpha值,则将其转换为十六进制并附加到结果中 + if (a !== undefined) { + let alphaHex = Math.round(a * 255).toString(16).toUpperCase(); + if (alphaHex.length === 1) { + alphaHex = "0" + alphaHex; // 确保alpha值是两位数 + } + hex += alphaHex; + } + + return hex; +} \ No newline at end of file diff --git a/src/utils/file.ts b/src/utils/file.ts index 2084926..5cc7aa5 100644 --- a/src/utils/file.ts +++ b/src/utils/file.ts @@ -1,19 +1,19 @@ -export const readFileBinary = (file: any): Promise => { - return new Promise(resolve => { - const reader = new FileReader() - reader.readAsBinaryString(file) - reader.onload = (ev: any) => { - resolve(ev.target.result) - } - }) +export function readFileBinary(file: any): Promise { + return new Promise((resolve) => { + const reader = new FileReader() + reader.readAsBinaryString(file) + reader.onload = (ev: any) => { + resolve(ev.target.result) + } + }) } -export const readFileData = (file: any): Promise<{dataUrl:string,fileName:string}> => { - return new Promise(resolve => { - const reader = new FileReader() - reader.readAsDataURL(file) - reader.onload = (ev: any) => { - resolve({dataUrl:ev.target.result,fileName:file.name}) - } - }) +export function readFileData(file: any): Promise<{ dataUrl: string, fileName: string }> { + return new Promise((resolve) => { + const reader = new FileReader() + reader.readAsDataURL(file) + reader.onload = (ev: any) => { + resolve({ dataUrl: ev.target.result, fileName: file.name }) + } + }) } diff --git a/src/utils/index.ts b/src/utils/index.ts index 2d5eca9..a8caa4a 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,41 +1,50 @@ -import dayjs from 'dayjs'; +import dayjs from 'dayjs' // 筛选人员数据 -export const filterData = (tableData: any[], localRowCount: number, startIndex = 0) => { - const dataLength = tableData.length - let j = 0; - for (let i = 0; i < dataLength; i++) { - if (i % localRowCount === 0) { - j++; - } - tableData[i].x = i % localRowCount + 1; - tableData[i].y = j; - tableData[i].id = i; - // 是否中奖 +export function filterData(tableData: any[], localRowCount: number) { + const dataLength = tableData.length + let j = 0 + for (let i = 0; i < dataLength; i++) { + if (i % localRowCount === 0) { + j++ } + tableData[i].x = i % localRowCount + 1 + tableData[i].y = j + tableData[i].id = i + // 是否中奖 + } - return tableData + return tableData } -export const addOtherInfo = (personList: any[]) => { - const len = personList.length; - for (let i = 0; i < len; i++) { - personList[i].id = i - personList[i].createTime = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'); - personList[i].updateTime = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'); - personList[i].prizeName = [] as string[]; - personList[i].prizeTime = [] as string[]; - personList[i].prizeId = []; - personList[i].isWin = false - } +export function addOtherInfo(personList: any[]) { + const len = personList.length + for (let i = 0; i < len; i++) { + personList[i].id = i + personList[i].createTime = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss') + personList[i].updateTime = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss') + personList[i].prizeName = [] as string[] + personList[i].prizeTime = [] as string[] + personList[i].prizeId = [] + personList[i].isWin = false + } - return personList + return personList } -export const selectCard = (cardIndexArr: number[], tableLength: number, personId: number): number => { - const cardIndex = Math.round(Math.random() * (tableLength - 1)); - if (cardIndexArr.includes(cardIndex)) { - return selectCard(cardIndexArr, tableLength, personId) - } +export function selectCard(cardIndexArr: number[], tableLength: number, personId: number): number { + const cardIndex = Math.round(Math.random() * (tableLength - 1)) + if (cardIndexArr.includes(cardIndex)) { + return selectCard(cardIndexArr, tableLength, personId) + } - return cardIndex + return cardIndex +} + +export function themeChange(theme: string) { + // 获取根html + const html = document.querySelectorAll('html') + if (html) { + html[0].setAttribute('data-theme', theme) + localStorage.setItem('theme', theme) + } } diff --git a/src/utils/store.ts b/src/utils/store.ts index adee905..6d2efdc 100644 --- a/src/utils/store.ts +++ b/src/utils/store.ts @@ -1,11 +1,10 @@ // 提取有哪些字段 -export const extractFields = (data: any) => { - const item=data[0]; - // 排除id x y,其他都加入数组 - const keys = Object.keys(item).filter(key => key!== 'id' && key!== 'x' && key!== 'y'); - if(keys.length>0){ - // 返回数组key value - return keys.map(key => ({label:key,value:true})); - } -}; - +export function extractFields(data: any) { + const item = data[0] + // 排除id x y,其他都加入数组 + const keys = Object.keys(item).filter(key => key !== 'id' && key !== 'x' && key !== 'y') + if (keys.length > 0) { + // 返回数组key value + return keys.map(key => ({ label: key, value: true })) + } +} diff --git a/src/views/Config/Global/FaceConfig.vue b/src/views/Config/Global/FaceConfig.vue index f377160..e73dc42 100644 --- a/src/views/Config/Global/FaceConfig.vue +++ b/src/views/Config/Global/FaceConfig.vue @@ -1,26 +1,31 @@ diff --git a/src/views/Config/Global/ImageConfig.vue b/src/views/Config/Global/ImageConfig.vue index 27567c6..c8c6936 100644 --- a/src/views/Config/Global/ImageConfig.vue +++ b/src/views/Config/Global/ImageConfig.vue @@ -1,111 +1,118 @@ diff --git a/src/views/Config/Global/MusicConfig.vue b/src/views/Config/Global/MusicConfig.vue index 6b87209..441f0b6 100644 --- a/src/views/Config/Global/MusicConfig.vue +++ b/src/views/Config/Global/MusicConfig.vue @@ -1,102 +1,113 @@ diff --git a/src/views/Config/Global/components/PatternSetting.vue b/src/views/Config/Global/components/PatternSetting.vue index 338a85a..b1a614c 100644 --- a/src/views/Config/Global/components/PatternSetting.vue +++ b/src/views/Config/Global/components/PatternSetting.vue @@ -1,45 +1,46 @@ diff --git a/src/views/Config/Person/PersonAlready.vue b/src/views/Config/Person/PersonAlready.vue index e70269a..fb68e6a 100644 --- a/src/views/Config/Person/PersonAlready.vue +++ b/src/views/Config/Person/PersonAlready.vue @@ -1,11 +1,14 @@ diff --git a/src/views/Config/Person/PersonConfig.vue b/src/views/Config/Person/PersonConfig.vue index 62b9dda..8d0241b 100644 --- a/src/views/Config/Person/PersonConfig.vue +++ b/src/views/Config/Person/PersonConfig.vue @@ -1,11 +1,9 @@ diff --git a/src/views/Config/Readme/index.vue b/src/views/Config/Readme/index.vue index 983613b..0265930 100644 --- a/src/views/Config/Readme/index.vue +++ b/src/views/Config/Readme/index.vue @@ -1,25 +1,27 @@ diff --git a/src/views/Demo/index.vue b/src/views/Demo/index.vue index 0b1c04e..5e05a68 100644 --- a/src/views/Demo/index.vue +++ b/src/views/Demo/index.vue @@ -2,9 +2,11 @@ +} + diff --git a/src/views/Home/index.vue b/src/views/Home/index.vue index ce5b9fb..154c6f3 100644 --- a/src/views/Home/index.vue +++ b/src/views/Home/index.vue @@ -1,43 +1,40 @@