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 0e76edc..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" ] 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/README.md b/README.md index 51e5aea..954cbcd 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ or - [x] 🧨 国际化多语言 - [x] 🍃 更换背景图片 - [x] 🚅 添加docker构建 +- [x] 😘 弹幕(开发中) - [ ] 🧵 卡片组成多种形状 ... 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 1ea427d..8e2b59f 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "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", @@ -31,6 +32,7 @@ "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", @@ -38,6 +40,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", @@ -56,6 +61,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 625a47d..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 @@ -126,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 @@ -207,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==} @@ -871,6 +935,16 @@ packages: 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'} @@ -1009,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} @@ -1023,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} @@ -1039,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} @@ -1079,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'} @@ -1214,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==} @@ -1337,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: @@ -1369,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==} @@ -1390,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==} @@ -1408,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==} @@ -1425,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} @@ -1435,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} @@ -1449,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} @@ -1462,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} @@ -1472,10 +1647,21 @@ 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} @@ -1490,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==} @@ -1764,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==} @@ -1893,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'} @@ -1926,6 +2133,9 @@ packages: 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'} @@ -1946,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'} @@ -1962,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'} @@ -2014,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==} @@ -2119,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'} @@ -2149,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'} @@ -2204,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==} @@ -2271,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==} @@ -2281,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==} @@ -2315,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'} @@ -2363,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'} @@ -2463,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'} @@ -2546,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'} @@ -2582,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==} @@ -2660,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'} @@ -2696,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'} @@ -2715,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==} @@ -2739,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==} @@ -2753,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'} @@ -2936,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'} @@ -2945,6 +3374,10 @@ 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'} @@ -2981,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==} @@ -3046,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'} @@ -3068,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==} @@ -3104,6 +3548,42 @@ 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==} @@ -3128,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'} @@ -3152,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==} @@ -3218,6 +3786,10 @@ 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==} @@ -3232,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'} @@ -3301,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==} @@ -3316,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==} @@ -3414,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'} @@ -3535,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'} @@ -3547,6 +4158,10 @@ 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'} @@ -3567,6 +4182,14 @@ packages: 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'} @@ -3578,6 +4201,10 @@ packages: 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 @@ -3598,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 @@ -3685,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 @@ -3744,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'} @@ -3790,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'} @@ -3802,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' @@ -3851,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'} @@ -3905,6 +4571,14 @@ 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==} @@ -4008,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'} @@ -4029,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'} @@ -4040,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'} @@ -4080,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'} @@ -4163,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'} @@ -4303,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: @@ -4468,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'} @@ -4487,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': {} @@ -4500,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': @@ -5384,6 +6158,23 @@ snapshots: '@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 @@ -5453,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 @@ -5475,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 @@ -5488,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': @@ -5529,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 @@ -5640,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': {} @@ -5714,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 @@ -5750,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 @@ -5775,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': @@ -5798,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': {} @@ -5820,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 @@ -5833,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) @@ -5850,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 @@ -5867,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)) @@ -5879,11 +6797,27 @@ 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 @@ -5904,6 +6838,14 @@ snapshots: 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 @@ -6317,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: {} @@ -6458,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 @@ -6492,6 +7438,8 @@ snapshots: canvas-confetti@1.9.3: {} + ccount@2.0.1: {} + cfb@1.2.2: dependencies: adler-32: 1.3.1 @@ -6524,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: @@ -6545,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 @@ -6552,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 @@ -6591,6 +7547,8 @@ snapshots: commander@7.2.0: {} + comment-parser@1.4.1: {} + component-emitter@1.3.0: {} concat-map@0.0.1: {} @@ -6693,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 @@ -6707,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: {} @@ -6772,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: @@ -6842,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: @@ -6900,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)) @@ -6914,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 @@ -6991,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 @@ -7106,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 @@ -7179,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: {} @@ -7210,6 +8417,8 @@ snapshots: globals@14.0.0: {} + globals@15.14.0: {} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.2 @@ -7277,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 @@ -7316,6 +8527,8 @@ snapshots: ignore@5.3.1: {} + ignore@5.3.2: {} + image-size@0.5.5: {} immediate@3.0.6: {} @@ -7329,6 +8542,8 @@ snapshots: imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + inherits@2.0.3: {} inherits@2.0.4: {} @@ -7356,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 @@ -7371,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: @@ -7527,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 @@ -7555,6 +8778,8 @@ snapshots: - supports-color - utf-8-validate + jsesc@0.5.0: {} + jsesc@2.5.2: {} jsesc@3.0.2: {} @@ -7563,8 +8788,7 @@ snapshots: 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: {} @@ -7576,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 @@ -7642,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 @@ -7658,6 +8893,8 @@ snapshots: lodash@4.17.21: {} + longest-streak@3.1.0: {} + loupe@3.1.2: {} lru-cache@10.0.2: @@ -7697,6 +8934,110 @@ 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: {} @@ -7713,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 @@ -7750,6 +9282,8 @@ snapshots: mimic-fn@4.0.0: {} + min-indent@1.0.1: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -7827,6 +9361,8 @@ snapshots: natural-compare@1.4.0: {} + natural-orderby@5.0.0: {} + neo-async@2.6.2: {} node-addon-api@7.1.1: @@ -7838,6 +9374,13 @@ snapshots: 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: {} @@ -7912,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 @@ -8000,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): @@ -8119,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 @@ -8131,6 +9713,10 @@ 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 @@ -8150,6 +9736,13 @@ snapshots: 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 @@ -8167,6 +9760,10 @@ snapshots: regjsgen@0.8.0: {} + regjsparser@0.10.0: + dependencies: + jsesc: 0.5.0 + regjsparser@0.12.0: dependencies: jsesc: 3.0.2 @@ -8179,6 +9776,8 @@ snapshots: resolve-from@4.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve-url@0.2.1: {} resolve@1.22.8: @@ -8268,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: @@ -8327,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 @@ -8377,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: @@ -8387,6 +10017,8 @@ snapshots: dependencies: frac: 1.1.2 + stable-hash@0.0.4: {} + stable@0.1.8: {} stackback@0.0.2: {} @@ -8434,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: @@ -8507,6 +10143,15 @@ 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: @@ -8536,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: @@ -8617,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: @@ -8633,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: {} @@ -8687,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): @@ -8768,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)): @@ -8941,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 @@ -9123,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: {} @@ -9140,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..0ff99ae 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,84 +1,90 @@ 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 bbf3377..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/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 42b1041..1a37f75 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,115 +1,117 @@ -import { createRouter, createWebHistory,createWebHashHistory } 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,9 +124,9 @@ 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, ], @@ -135,6 +137,6 @@ const router = createRouter({ // 读取环境变量 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 1e0310c..0ef5de1 100644 --- a/src/store/data.ts +++ b/src/store/data.ts @@ -1,241 +1,278 @@ -import { IPrizeConfig, IPersonConfig } from '@/types/storeType'; +import type { IPersonConfig, IPrizeConfig } from '@/types/storeType' + export const defaultPersonList = [ - { uid: 'U100156001', name: '朱厚熜', department: '皇室', identity: '万岁爷', 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: '裕王', 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: '裕王世子', 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: '首辅', 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: '次辅、户部尚书', 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: '阁臣、兵部侍郞', 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: '阁臣、户部侍郞', 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: '吏部侍郞', 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: '浙直总督', 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: '都督佥事', 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: '杭州知府', 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: '江苏巡抚', 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: '淳安知县', 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: '浙江布政使兼按察使', 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: '浙江巡抚', 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: '建德知县', 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: '浙直总督府参军', 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: '北镇抚司', 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: '通政使司通政使', 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: '杭州知府', 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: '淳安县丞', 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: '钦天监监正', 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: '浙江按察使司', 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: '浙江按察使司', 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: '牢头', 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: '班头', 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: '掌印太监', 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: '织造局', 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: '首席秉笔太监', 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: '秉笔太监', 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: '新安江河道监管', 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: '世子大伴', 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: '名医', 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: '商人', 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: '倭寇', 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: '江湖', 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: [] }] + { uid: 'U100156001', name: '朱厚熜', department: '皇室', identity: '万岁爷', 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: '裕王', 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: '裕王世子', 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: '首辅', 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: '次辅、户部尚书', 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: '阁臣、兵部侍郞', 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: '阁臣、户部侍郞', 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: '吏部侍郞', 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: '浙直总督', 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: '都督佥事', 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: '杭州知府', 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: '江苏巡抚', 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: '淳安知县', 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: '浙江布政使兼按察使', 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: '浙江巡抚', 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: '建德知县', 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: '浙直总督府参军', 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: '北镇抚司', 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: '通政使司通政使', 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: '杭州知府', 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: '淳安县丞', 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: '钦天监监正', 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: '浙江按察使司', 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: '浙江按察使司', 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: '牢头', 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: '班头', 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: '掌印太监', 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: '织造局', 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: '首席秉笔太监', 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: '秉笔太监', 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: '新安江河道监管', 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: '世子大伴', 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: '名医', 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: '商人', 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: '倭寇', 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: '江湖', 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 d5a5c5c..e5eb0a5 100644 --- a/src/store/globalConfig.ts +++ b/src/store/globalConfig.ts @@ -1,258 +1,270 @@ -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, - 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[], - background:{}, // 背景颜色或图片 - }, - 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; - }, - // 获取背景图片设置 - getBackground(state){ - return state.globalConfig.theme.background - }, + // 获取标题 + getTopTitle(state) { + return state.globalConfig.topTitle }, - 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; - }, - // 设置背景图片 - setBackground(background:{}){ - this.globalConfig.theme.background = background - }, - // 重置所有配置 - reset() { - this.globalConfig = { - rowCount: 17, - isSHowPrizeList: 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[], - background:{}, // 背景图片 - }, - musicList: defaultMusicList as IMusic[], - imageList: defaultImageList as IImage[], - }, - this.currentMusic = { - item: defaultMusicList[0], - paused: true, - } + // 获取行数 + 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) }, - persist: { - enabled: true, - strategies: [ - { - // 如果要存储在localStorage中 - storage: localStorage, - key: 'globalConfig', - paths: ['globalConfig'], - }, - ], + // 删除音乐 + 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, + } + }, + // 重置音乐列表 + 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 + }, + // 设置 + 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 9ab7682..fc9e781 100644 --- a/src/types/storeType.ts +++ b/src/types/storeType.ts @@ -1,52 +1,52 @@ export interface IPersonConfig { - id: number; - uid: string; - name: string; - department: string; - identity: string; - isWin: boolean; - x: number; - y: number - createTime: string; - updateTime: string; - prizeName: string[]; - prizeId: string[]; - prizeTime: string[]; + id: number + uid: string + name: string + department: string + identity: string + isWin: boolean + x: number + y: number + createTime: string + updateTime: string + prizeName: string[] + 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 28960f4..dd7f7dc 100644 --- a/src/utils/color.ts +++ b/src/utils/color.ts @@ -1,43 +1,43 @@ // 判断颜色是否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) { 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..08e7678 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,41 +1,41 @@ -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 } 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 02c6d62..6a8a3f6 100644 --- a/src/views/Config/Global/FaceConfig.vue +++ b/src/views/Config/Global/FaceConfig.vue @@ -1,39 +1,31 @@ diff --git a/src/views/Config/Global/ImageConfig.vue b/src/views/Config/Global/ImageConfig.vue index 27567c6..8e8a221 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 625ab72..e523426 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 ad6769d..3641d78 100644 --- a/src/views/Home/index.vue +++ b/src/views/Home/index.vue @@ -1,56 +1,39 @@