├── .eslintrc.js ├── .gitignore ├── .vscode └── extensions.json ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── public └── favicon.ico ├── src ├── App.vue ├── assets │ ├── images │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── bg.jpg │ │ └── text.png │ └── logo.png ├── components │ └── HelloWorld.vue ├── env.d.ts ├── main.ts ├── permission.ts ├── router │ └── index.ts ├── style │ ├── index.scss │ └── stage.scss ├── utils │ ├── stage.ts │ └── utils.ts └── views │ └── stage │ ├── mobile.vue │ └── pc.vue ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.export = { 2 | root: true, 3 | parserOptions: { 4 | sourceType: "module", 5 | }, 6 | parser: "vue-eslint-parser", 7 | extends: [ 8 | "plugin:vue/vue3-essential", 9 | "plugin:vue/vue3-strongly-recommended", 10 | "plugin:vue/vue3-recommended", 11 | ], 12 | env: { 13 | browser: true, 14 | node: true, 15 | es6: true, 16 | }, 17 | rules: { 18 | "no-console": "off", 19 | "comma-dangle": [2, "never"], // 禁止使用拖尾逗号 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar"] 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue 3 + TypeScript + Vite 2 | 3 | 这是一个消消乐小游戏 4 | 5 | 游戏体验地址(pc/手机皆可):https://wmuhua.com/games/xxl 6 | 7 | 更多详细代码注释请移步:https://juejin.cn/post/7101954563015458846 8 | 9 | 感谢点赞 👍🏻 10 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xxl", 3 | "version": "0.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/parser": { 8 | "version": "7.18.0", 9 | "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.0.tgz", 10 | "integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==" 11 | }, 12 | "@ctrl/tinycolor": { 13 | "version": "3.4.1", 14 | "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", 15 | "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" 16 | }, 17 | "@element-plus/icons-vue": { 18 | "version": "1.1.4", 19 | "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-1.1.4.tgz", 20 | "integrity": "sha512-Iz/nHqdp1sFPmdzRwHkEQQA3lKvoObk8azgABZ81QUOpW9s/lUyQVUSh0tNtEPZXQlKwlSh7SPgoVxzrE0uuVQ==" 21 | }, 22 | "@eslint/eslintrc": { 23 | "version": "1.3.0", 24 | "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", 25 | "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", 26 | "dev": true, 27 | "requires": { 28 | "ajv": "^6.12.4", 29 | "debug": "^4.3.2", 30 | "espree": "^9.3.2", 31 | "globals": "^13.15.0", 32 | "ignore": "^5.2.0", 33 | "import-fresh": "^3.2.1", 34 | "js-yaml": "^4.1.0", 35 | "minimatch": "^3.1.2", 36 | "strip-json-comments": "^3.1.1" 37 | } 38 | }, 39 | "@floating-ui/core": { 40 | "version": "0.7.1", 41 | "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-0.7.1.tgz", 42 | "integrity": "sha512-grcqEmI8DTIolufpxhJagVeJmvloxBXE6xxSrVnSXz/Wz1uUIsC85ad+UNBqAoBOvzLxE42wvDj3YkmSGqWRxA==" 43 | }, 44 | "@floating-ui/dom": { 45 | "version": "0.5.1", 46 | "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.5.1.tgz", 47 | "integrity": "sha512-dkPSy5JPiQEtljc3VpG9lauYctxfLlqj/8N9f+lmsR92gQaSVMAWuBbFBH2keY5DmdQn3p4Dv1dQd+e8osH+/g==", 48 | "requires": { 49 | "@floating-ui/core": "^0.7.1" 50 | } 51 | }, 52 | "@humanwhocodes/config-array": { 53 | "version": "0.9.5", 54 | "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", 55 | "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", 56 | "dev": true, 57 | "requires": { 58 | "@humanwhocodes/object-schema": "^1.2.1", 59 | "debug": "^4.1.1", 60 | "minimatch": "^3.0.4" 61 | } 62 | }, 63 | "@humanwhocodes/object-schema": { 64 | "version": "1.2.1", 65 | "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 66 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 67 | "dev": true 68 | }, 69 | "@types/lodash": { 70 | "version": "4.14.182", 71 | "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.182.tgz", 72 | "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" 73 | }, 74 | "@types/lodash-es": { 75 | "version": "4.17.6", 76 | "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz", 77 | "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", 78 | "requires": { 79 | "@types/lodash": "*" 80 | } 81 | }, 82 | "@types/node": { 83 | "version": "17.0.35", 84 | "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.35.tgz", 85 | "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", 86 | "dev": true 87 | }, 88 | "@vitejs/plugin-vue": { 89 | "version": "2.3.3", 90 | "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz", 91 | "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==", 92 | "dev": true 93 | }, 94 | "@volar/code-gen": { 95 | "version": "0.34.15", 96 | "resolved": "https://registry.npmmirror.com/@volar/code-gen/-/code-gen-0.34.15.tgz", 97 | "integrity": "sha512-g30glPo5N9bJocf1NBt802UcmqgZ3UtPst9b/Tangj+zR+K2RV5S2Un/suR6ZRiETXtg3nmrUcCgsTSJ6PC29A==", 98 | "dev": true, 99 | "requires": { 100 | "@volar/source-map": "0.34.15" 101 | } 102 | }, 103 | "@volar/source-map": { 104 | "version": "0.34.15", 105 | "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-0.34.15.tgz", 106 | "integrity": "sha512-Y3sENK/kqsgD7Vtve6gq6/Dor6JuoJWR+s9iwHcHTcA4VDkJnJRGHcvP8S3SVBsWl7T9qtlnvH3WCbFj7WlXrw==", 107 | "dev": true 108 | }, 109 | "@volar/vue-code-gen": { 110 | "version": "0.34.15", 111 | "resolved": "https://registry.npmmirror.com/@volar/vue-code-gen/-/vue-code-gen-0.34.15.tgz", 112 | "integrity": "sha512-GglGsHxPPb7mW2v//5MUrkzxAO68YEIL5bRwpZD0Cp9np34keQdd1SHB5DXdoyU38cnfHJWjBlqCYpTnz2CR/w==", 113 | "dev": true, 114 | "requires": { 115 | "@volar/code-gen": "0.34.15", 116 | "@volar/source-map": "0.34.15", 117 | "@vue/compiler-core": "^3.2.31", 118 | "@vue/compiler-dom": "^3.2.31", 119 | "@vue/shared": "^3.2.31" 120 | } 121 | }, 122 | "@volar/vue-typescript": { 123 | "version": "0.34.15", 124 | "resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-0.34.15.tgz", 125 | "integrity": "sha512-7jwhYl1NQB0uYgTO74x+OBSD4SPF7bI3m1KFQ98Wt/NOTXr57YcUyOkDBImcTKRLX3PHG9ex6OfT7u3jiZ2Zzg==", 126 | "dev": true, 127 | "requires": { 128 | "@volar/code-gen": "0.34.15", 129 | "@volar/source-map": "0.34.15", 130 | "@volar/vue-code-gen": "0.34.15", 131 | "@vue/compiler-sfc": "^3.2.31", 132 | "@vue/reactivity": "^3.2.31" 133 | } 134 | }, 135 | "@vue/compiler-core": { 136 | "version": "3.2.35", 137 | "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.35.tgz", 138 | "integrity": "sha512-1Mtmh8ceVUoUsn/PME5oM+Dus648rCeV/fBaZ4ERLFbTHBJXj6QmDPrSn9mfEyPDXE0RYIwyJNn884NdWK+Yiw==", 139 | "requires": { 140 | "@babel/parser": "^7.16.4", 141 | "@vue/shared": "3.2.35", 142 | "estree-walker": "^2.0.2", 143 | "source-map": "^0.6.1" 144 | } 145 | }, 146 | "@vue/compiler-dom": { 147 | "version": "3.2.35", 148 | "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.35.tgz", 149 | "integrity": "sha512-I4bXB9MkRSTJ3gVXRQ4iaYJgABZGew+K/CCBoAh9fdLaeY7A7uUlS5nWGOlICSVfOH0/xk4QlcXeGZYCJkEleA==", 150 | "requires": { 151 | "@vue/compiler-core": "3.2.35", 152 | "@vue/shared": "3.2.35" 153 | } 154 | }, 155 | "@vue/compiler-sfc": { 156 | "version": "3.2.35", 157 | "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.35.tgz", 158 | "integrity": "sha512-2wKQtnuHfwBFc7uV2Cmtms3Cc7u/u6kKJI3F+i0A+9xnuahK39cCMNJKHzI9x93Xai+uft64fDc5JSh8zDQBQA==", 159 | "requires": { 160 | "@babel/parser": "^7.16.4", 161 | "@vue/compiler-core": "3.2.35", 162 | "@vue/compiler-dom": "3.2.35", 163 | "@vue/compiler-ssr": "3.2.35", 164 | "@vue/reactivity-transform": "3.2.35", 165 | "@vue/shared": "3.2.35", 166 | "estree-walker": "^2.0.2", 167 | "magic-string": "^0.25.7", 168 | "postcss": "^8.1.10", 169 | "source-map": "^0.6.1" 170 | } 171 | }, 172 | "@vue/compiler-ssr": { 173 | "version": "3.2.35", 174 | "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.35.tgz", 175 | "integrity": "sha512-dJyqB8fZbvVQEnWl5VGxkWHTqx0ERnZXXqInFzyOX8FpTEidmQbUSmDrXidea7bZTdeg6ly94kZFGPYXT29mgQ==", 176 | "requires": { 177 | "@vue/compiler-dom": "3.2.35", 178 | "@vue/shared": "3.2.35" 179 | } 180 | }, 181 | "@vue/devtools-api": { 182 | "version": "6.1.4", 183 | "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.1.4.tgz", 184 | "integrity": "sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==" 185 | }, 186 | "@vue/reactivity": { 187 | "version": "3.2.35", 188 | "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.35.tgz", 189 | "integrity": "sha512-6j9N9R1SwHVcJas4YqAzwdRS/cgmj3Z9aUert5Mv1jk5B9H9ivN/zot/fgMUbseWXigkkmX60OsfRbz49o8kCw==", 190 | "requires": { 191 | "@vue/shared": "3.2.35" 192 | } 193 | }, 194 | "@vue/reactivity-transform": { 195 | "version": "3.2.35", 196 | "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.35.tgz", 197 | "integrity": "sha512-VjdQU4nIrgsh1iPqAdYZufWgFqdH9fIl6ttO2PCFlLsrQl7b8BcuawM6moSBLF8damBzSNcqvbvQDBhsI3fyVQ==", 198 | "requires": { 199 | "@babel/parser": "^7.16.4", 200 | "@vue/compiler-core": "3.2.35", 201 | "@vue/shared": "3.2.35", 202 | "estree-walker": "^2.0.2", 203 | "magic-string": "^0.25.7" 204 | } 205 | }, 206 | "@vue/runtime-core": { 207 | "version": "3.2.35", 208 | "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.35.tgz", 209 | "integrity": "sha512-P8AeGPRGyIiYdOdvLc/7KR8VSdbUGG8Jxdx6Xlj5okEjyV9IYxeHRIQIoye85K0lZXBH4zuh1syD1mX+oZ0KqQ==", 210 | "requires": { 211 | "@vue/reactivity": "3.2.35", 212 | "@vue/shared": "3.2.35" 213 | } 214 | }, 215 | "@vue/runtime-dom": { 216 | "version": "3.2.35", 217 | "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.35.tgz", 218 | "integrity": "sha512-M5xrVJ/b0KqssjPQMdpwLp3KwzG1Tn2w/IrOptVqGY5c9fEBluIbm18AeO4Fr3YxfeyaPWm1rY8POrEso0UE3w==", 219 | "requires": { 220 | "@vue/runtime-core": "3.2.35", 221 | "@vue/shared": "3.2.35", 222 | "csstype": "^2.6.8" 223 | } 224 | }, 225 | "@vue/server-renderer": { 226 | "version": "3.2.35", 227 | "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.35.tgz", 228 | "integrity": "sha512-ZMF8V+bZ0EIjSB7yzPEmDlxRDOIXj04iqG4Rw/H5rIuBCf0b7rNTleiOldlX5haG++zUq6uiL2AVp/A9uyz+cw==", 229 | "requires": { 230 | "@vue/compiler-ssr": "3.2.35", 231 | "@vue/shared": "3.2.35" 232 | } 233 | }, 234 | "@vue/shared": { 235 | "version": "3.2.35", 236 | "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.35.tgz", 237 | "integrity": "sha512-/sxDqMcy0MsfQ3LQixKYDxIinDYNy1dXTsF2Am0pv0toImWabymFQ8cFmPJnPt+gh5ElKwwn7KzQcDbLHar60A==" 238 | }, 239 | "@vueuse/core": { 240 | "version": "8.5.0", 241 | "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-8.5.0.tgz", 242 | "integrity": "sha512-VEJ6sGNsPlUp0o9BGda2YISvDZbhWJSOJu5zlp2TufRGVrLcYUKr31jyFEOj6RXzG3k/H4aCYeZyjpItfU8glw==", 243 | "requires": { 244 | "@vueuse/metadata": "8.5.0", 245 | "@vueuse/shared": "8.5.0", 246 | "vue-demi": "*" 247 | } 248 | }, 249 | "@vueuse/metadata": { 250 | "version": "8.5.0", 251 | "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.5.0.tgz", 252 | "integrity": "sha512-WxsD+Cd+bn+HcjpY6Dl9FJ8ywTRTT9pTwk3bCQpzEhXVYAyNczKDSahk50fCfIJKeWHhyI4B2+/ZEOxQAkUr0g==" 253 | }, 254 | "@vueuse/shared": { 255 | "version": "8.5.0", 256 | "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.5.0.tgz", 257 | "integrity": "sha512-qKG+SZb44VvGD4dU5cQ63z4JE2Yk39hQUecR0a9sEdJA01cx+XrxAvFKJfPooxwoiqalAVw/ktWK6xbyc/jS3g==", 258 | "requires": { 259 | "vue-demi": "*" 260 | } 261 | }, 262 | "acorn": { 263 | "version": "8.7.1", 264 | "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.7.1.tgz", 265 | "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", 266 | "dev": true 267 | }, 268 | "acorn-jsx": { 269 | "version": "5.3.2", 270 | "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 271 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 272 | "dev": true 273 | }, 274 | "ajv": { 275 | "version": "6.12.6", 276 | "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", 277 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 278 | "dev": true, 279 | "requires": { 280 | "fast-deep-equal": "^3.1.1", 281 | "fast-json-stable-stringify": "^2.0.0", 282 | "json-schema-traverse": "^0.4.1", 283 | "uri-js": "^4.2.2" 284 | } 285 | }, 286 | "ansi-regex": { 287 | "version": "5.0.1", 288 | "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", 289 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 290 | "dev": true 291 | }, 292 | "ansi-styles": { 293 | "version": "4.3.0", 294 | "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", 295 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 296 | "dev": true, 297 | "requires": { 298 | "color-convert": "^2.0.1" 299 | } 300 | }, 301 | "anymatch": { 302 | "version": "3.1.2", 303 | "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", 304 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 305 | "dev": true, 306 | "requires": { 307 | "normalize-path": "^3.0.0", 308 | "picomatch": "^2.0.4" 309 | } 310 | }, 311 | "argparse": { 312 | "version": "2.0.1", 313 | "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", 314 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 315 | "dev": true 316 | }, 317 | "async-validator": { 318 | "version": "4.1.1", 319 | "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.1.1.tgz", 320 | "integrity": "sha512-p4DO/JXwjs8klJyJL8Q2oM4ks5fUTze/h5k10oPPKMiLe1fj3G1QMzPHNmN1Py4ycOk7WlO2DcGXv1qiESJCZA==" 321 | }, 322 | "balanced-match": { 323 | "version": "1.0.2", 324 | "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", 325 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 326 | "dev": true 327 | }, 328 | "binary-extensions": { 329 | "version": "2.2.0", 330 | "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", 331 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 332 | "dev": true 333 | }, 334 | "boolbase": { 335 | "version": "1.0.0", 336 | "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", 337 | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", 338 | "dev": true 339 | }, 340 | "brace-expansion": { 341 | "version": "1.1.11", 342 | "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", 343 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 344 | "dev": true, 345 | "requires": { 346 | "balanced-match": "^1.0.0", 347 | "concat-map": "0.0.1" 348 | } 349 | }, 350 | "braces": { 351 | "version": "3.0.2", 352 | "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", 353 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 354 | "dev": true, 355 | "requires": { 356 | "fill-range": "^7.0.1" 357 | } 358 | }, 359 | "callsites": { 360 | "version": "3.1.0", 361 | "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", 362 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 363 | "dev": true 364 | }, 365 | "chalk": { 366 | "version": "4.1.2", 367 | "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", 368 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 369 | "dev": true, 370 | "requires": { 371 | "ansi-styles": "^4.1.0", 372 | "supports-color": "^7.1.0" 373 | } 374 | }, 375 | "chokidar": { 376 | "version": "3.5.3", 377 | "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", 378 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 379 | "dev": true, 380 | "requires": { 381 | "anymatch": "~3.1.2", 382 | "braces": "~3.0.2", 383 | "fsevents": "~2.3.2", 384 | "glob-parent": "~5.1.2", 385 | "is-binary-path": "~2.1.0", 386 | "is-glob": "~4.0.1", 387 | "normalize-path": "~3.0.0", 388 | "readdirp": "~3.6.0" 389 | }, 390 | "dependencies": { 391 | "glob-parent": { 392 | "version": "5.1.2", 393 | "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", 394 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 395 | "dev": true, 396 | "requires": { 397 | "is-glob": "^4.0.1" 398 | } 399 | } 400 | } 401 | }, 402 | "color-convert": { 403 | "version": "2.0.1", 404 | "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", 405 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 406 | "dev": true, 407 | "requires": { 408 | "color-name": "~1.1.4" 409 | } 410 | }, 411 | "color-name": { 412 | "version": "1.1.4", 413 | "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", 414 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 415 | "dev": true 416 | }, 417 | "concat-map": { 418 | "version": "0.0.1", 419 | "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", 420 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 421 | "dev": true 422 | }, 423 | "cross-spawn": { 424 | "version": "7.0.3", 425 | "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", 426 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 427 | "dev": true, 428 | "requires": { 429 | "path-key": "^3.1.0", 430 | "shebang-command": "^2.0.0", 431 | "which": "^2.0.1" 432 | } 433 | }, 434 | "cssesc": { 435 | "version": "3.0.0", 436 | "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", 437 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 438 | "dev": true 439 | }, 440 | "csstype": { 441 | "version": "2.6.20", 442 | "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz", 443 | "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" 444 | }, 445 | "dayjs": { 446 | "version": "1.11.2", 447 | "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.2.tgz", 448 | "integrity": "sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw==" 449 | }, 450 | "debug": { 451 | "version": "4.3.4", 452 | "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", 453 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 454 | "dev": true, 455 | "requires": { 456 | "ms": "2.1.2" 457 | } 458 | }, 459 | "deep-is": { 460 | "version": "0.1.4", 461 | "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", 462 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 463 | "dev": true 464 | }, 465 | "doctrine": { 466 | "version": "3.0.0", 467 | "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", 468 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 469 | "dev": true, 470 | "requires": { 471 | "esutils": "^2.0.2" 472 | } 473 | }, 474 | "element-plus": { 475 | "version": "2.2.1", 476 | "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.1.tgz", 477 | "integrity": "sha512-+U3Rq6S2lrzgFWlO1IvqBRtWuOGfyA84OSJOTDC8DHG6XkbNE507Thueb+9Ghk8eIqjGtpvje5hEQRWOJ85+pA==", 478 | "requires": { 479 | "@ctrl/tinycolor": "^3.4.1", 480 | "@element-plus/icons-vue": "^1.1.4", 481 | "@floating-ui/dom": "^0.5.0", 482 | "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", 483 | "@types/lodash": "^4.14.182", 484 | "@types/lodash-es": "^4.17.6", 485 | "@vueuse/core": "^8.5.0", 486 | "async-validator": "^4.1.1", 487 | "dayjs": "^1.11.2", 488 | "escape-html": "^1.0.3", 489 | "lodash": "^4.17.21", 490 | "lodash-es": "^4.17.21", 491 | "lodash-unified": "^1.0.2", 492 | "memoize-one": "^6.0.0", 493 | "normalize-wheel-es": "^1.1.2" 494 | }, 495 | "dependencies": { 496 | "@popperjs/core": { 497 | "version": "npm:@sxzz/popperjs-es@2.11.7", 498 | "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", 499 | "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" 500 | } 501 | } 502 | }, 503 | "esbuild": { 504 | "version": "0.14.39", 505 | "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.39.tgz", 506 | "integrity": "sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==", 507 | "dev": true, 508 | "requires": { 509 | "esbuild-android-64": "0.14.39", 510 | "esbuild-android-arm64": "0.14.39", 511 | "esbuild-darwin-64": "0.14.39", 512 | "esbuild-darwin-arm64": "0.14.39", 513 | "esbuild-freebsd-64": "0.14.39", 514 | "esbuild-freebsd-arm64": "0.14.39", 515 | "esbuild-linux-32": "0.14.39", 516 | "esbuild-linux-64": "0.14.39", 517 | "esbuild-linux-arm": "0.14.39", 518 | "esbuild-linux-arm64": "0.14.39", 519 | "esbuild-linux-mips64le": "0.14.39", 520 | "esbuild-linux-ppc64le": "0.14.39", 521 | "esbuild-linux-riscv64": "0.14.39", 522 | "esbuild-linux-s390x": "0.14.39", 523 | "esbuild-netbsd-64": "0.14.39", 524 | "esbuild-openbsd-64": "0.14.39", 525 | "esbuild-sunos-64": "0.14.39", 526 | "esbuild-windows-32": "0.14.39", 527 | "esbuild-windows-64": "0.14.39", 528 | "esbuild-windows-arm64": "0.14.39" 529 | } 530 | }, 531 | "esbuild-android-64": { 532 | "version": "0.14.39", 533 | "resolved": "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz", 534 | "integrity": "sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==", 535 | "dev": true, 536 | "optional": true 537 | }, 538 | "esbuild-android-arm64": { 539 | "version": "0.14.39", 540 | "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz", 541 | "integrity": "sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==", 542 | "dev": true, 543 | "optional": true 544 | }, 545 | "esbuild-darwin-64": { 546 | "version": "0.14.39", 547 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz", 548 | "integrity": "sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==", 549 | "dev": true, 550 | "optional": true 551 | }, 552 | "esbuild-darwin-arm64": { 553 | "version": "0.14.39", 554 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz", 555 | "integrity": "sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==", 556 | "dev": true, 557 | "optional": true 558 | }, 559 | "esbuild-freebsd-64": { 560 | "version": "0.14.39", 561 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz", 562 | "integrity": "sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==", 563 | "dev": true, 564 | "optional": true 565 | }, 566 | "esbuild-freebsd-arm64": { 567 | "version": "0.14.39", 568 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz", 569 | "integrity": "sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==", 570 | "dev": true, 571 | "optional": true 572 | }, 573 | "esbuild-linux-32": { 574 | "version": "0.14.39", 575 | "resolved": "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz", 576 | "integrity": "sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==", 577 | "dev": true, 578 | "optional": true 579 | }, 580 | "esbuild-linux-64": { 581 | "version": "0.14.39", 582 | "resolved": "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz", 583 | "integrity": "sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==", 584 | "dev": true, 585 | "optional": true 586 | }, 587 | "esbuild-linux-arm": { 588 | "version": "0.14.39", 589 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz", 590 | "integrity": "sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==", 591 | "dev": true, 592 | "optional": true 593 | }, 594 | "esbuild-linux-arm64": { 595 | "version": "0.14.39", 596 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz", 597 | "integrity": "sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==", 598 | "dev": true, 599 | "optional": true 600 | }, 601 | "esbuild-linux-mips64le": { 602 | "version": "0.14.39", 603 | "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz", 604 | "integrity": "sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==", 605 | "dev": true, 606 | "optional": true 607 | }, 608 | "esbuild-linux-ppc64le": { 609 | "version": "0.14.39", 610 | "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz", 611 | "integrity": "sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==", 612 | "dev": true, 613 | "optional": true 614 | }, 615 | "esbuild-linux-riscv64": { 616 | "version": "0.14.39", 617 | "resolved": "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz", 618 | "integrity": "sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==", 619 | "dev": true, 620 | "optional": true 621 | }, 622 | "esbuild-linux-s390x": { 623 | "version": "0.14.39", 624 | "resolved": "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz", 625 | "integrity": "sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==", 626 | "dev": true, 627 | "optional": true 628 | }, 629 | "esbuild-netbsd-64": { 630 | "version": "0.14.39", 631 | "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz", 632 | "integrity": "sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==", 633 | "dev": true, 634 | "optional": true 635 | }, 636 | "esbuild-openbsd-64": { 637 | "version": "0.14.39", 638 | "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz", 639 | "integrity": "sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==", 640 | "dev": true, 641 | "optional": true 642 | }, 643 | "esbuild-sunos-64": { 644 | "version": "0.14.39", 645 | "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz", 646 | "integrity": "sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==", 647 | "dev": true, 648 | "optional": true 649 | }, 650 | "esbuild-windows-32": { 651 | "version": "0.14.39", 652 | "resolved": "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz", 653 | "integrity": "sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==", 654 | "dev": true, 655 | "optional": true 656 | }, 657 | "esbuild-windows-64": { 658 | "version": "0.14.39", 659 | "resolved": "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz", 660 | "integrity": "sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==", 661 | "dev": true, 662 | "optional": true 663 | }, 664 | "esbuild-windows-arm64": { 665 | "version": "0.14.39", 666 | "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz", 667 | "integrity": "sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==", 668 | "dev": true, 669 | "optional": true 670 | }, 671 | "escape-html": { 672 | "version": "1.0.3", 673 | "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", 674 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 675 | }, 676 | "escape-string-regexp": { 677 | "version": "4.0.0", 678 | "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 679 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 680 | "dev": true 681 | }, 682 | "eslint": { 683 | "version": "8.16.0", 684 | "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.16.0.tgz", 685 | "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", 686 | "dev": true, 687 | "requires": { 688 | "@eslint/eslintrc": "^1.3.0", 689 | "@humanwhocodes/config-array": "^0.9.2", 690 | "ajv": "^6.10.0", 691 | "chalk": "^4.0.0", 692 | "cross-spawn": "^7.0.2", 693 | "debug": "^4.3.2", 694 | "doctrine": "^3.0.0", 695 | "escape-string-regexp": "^4.0.0", 696 | "eslint-scope": "^7.1.1", 697 | "eslint-utils": "^3.0.0", 698 | "eslint-visitor-keys": "^3.3.0", 699 | "espree": "^9.3.2", 700 | "esquery": "^1.4.0", 701 | "esutils": "^2.0.2", 702 | "fast-deep-equal": "^3.1.3", 703 | "file-entry-cache": "^6.0.1", 704 | "functional-red-black-tree": "^1.0.1", 705 | "glob-parent": "^6.0.1", 706 | "globals": "^13.15.0", 707 | "ignore": "^5.2.0", 708 | "import-fresh": "^3.0.0", 709 | "imurmurhash": "^0.1.4", 710 | "is-glob": "^4.0.0", 711 | "js-yaml": "^4.1.0", 712 | "json-stable-stringify-without-jsonify": "^1.0.1", 713 | "levn": "^0.4.1", 714 | "lodash.merge": "^4.6.2", 715 | "minimatch": "^3.1.2", 716 | "natural-compare": "^1.4.0", 717 | "optionator": "^0.9.1", 718 | "regexpp": "^3.2.0", 719 | "strip-ansi": "^6.0.1", 720 | "strip-json-comments": "^3.1.0", 721 | "text-table": "^0.2.0", 722 | "v8-compile-cache": "^2.0.3" 723 | } 724 | }, 725 | "eslint-plugin-vue": { 726 | "version": "9.0.1", 727 | "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.0.1.tgz", 728 | "integrity": "sha512-/w/9/vzz+4bSYtp5UqXgJ0CfycXTMtpp6lkz7/fMp0CcJxPWyRP6Pr88ihhrsNEcVt2ZweMupWRNYa+5Md41LQ==", 729 | "dev": true, 730 | "requires": { 731 | "eslint-utils": "^3.0.0", 732 | "natural-compare": "^1.4.0", 733 | "nth-check": "^2.0.1", 734 | "postcss-selector-parser": "^6.0.9", 735 | "semver": "^7.3.5", 736 | "vue-eslint-parser": "^9.0.1", 737 | "xml-name-validator": "^4.0.0" 738 | } 739 | }, 740 | "eslint-scope": { 741 | "version": "7.1.1", 742 | "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", 743 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 744 | "dev": true, 745 | "requires": { 746 | "esrecurse": "^4.3.0", 747 | "estraverse": "^5.2.0" 748 | } 749 | }, 750 | "eslint-utils": { 751 | "version": "3.0.0", 752 | "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", 753 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 754 | "dev": true, 755 | "requires": { 756 | "eslint-visitor-keys": "^2.0.0" 757 | }, 758 | "dependencies": { 759 | "eslint-visitor-keys": { 760 | "version": "2.1.0", 761 | "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 762 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 763 | "dev": true 764 | } 765 | } 766 | }, 767 | "eslint-visitor-keys": { 768 | "version": "3.3.0", 769 | "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 770 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 771 | "dev": true 772 | }, 773 | "espree": { 774 | "version": "9.3.2", 775 | "resolved": "https://registry.npmmirror.com/espree/-/espree-9.3.2.tgz", 776 | "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", 777 | "dev": true, 778 | "requires": { 779 | "acorn": "^8.7.1", 780 | "acorn-jsx": "^5.3.2", 781 | "eslint-visitor-keys": "^3.3.0" 782 | } 783 | }, 784 | "esquery": { 785 | "version": "1.4.0", 786 | "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", 787 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 788 | "dev": true, 789 | "requires": { 790 | "estraverse": "^5.1.0" 791 | } 792 | }, 793 | "esrecurse": { 794 | "version": "4.3.0", 795 | "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", 796 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 797 | "dev": true, 798 | "requires": { 799 | "estraverse": "^5.2.0" 800 | } 801 | }, 802 | "estraverse": { 803 | "version": "5.3.0", 804 | "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", 805 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 806 | "dev": true 807 | }, 808 | "estree-walker": { 809 | "version": "2.0.2", 810 | "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", 811 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 812 | }, 813 | "esutils": { 814 | "version": "2.0.3", 815 | "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", 816 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 817 | "dev": true 818 | }, 819 | "fast-deep-equal": { 820 | "version": "3.1.3", 821 | "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 822 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 823 | "dev": true 824 | }, 825 | "fast-json-stable-stringify": { 826 | "version": "2.1.0", 827 | "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 828 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 829 | "dev": true 830 | }, 831 | "fast-levenshtein": { 832 | "version": "2.0.6", 833 | "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 834 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 835 | "dev": true 836 | }, 837 | "file-entry-cache": { 838 | "version": "6.0.1", 839 | "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 840 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 841 | "dev": true, 842 | "requires": { 843 | "flat-cache": "^3.0.4" 844 | } 845 | }, 846 | "fill-range": { 847 | "version": "7.0.1", 848 | "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", 849 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 850 | "dev": true, 851 | "requires": { 852 | "to-regex-range": "^5.0.1" 853 | } 854 | }, 855 | "flat-cache": { 856 | "version": "3.0.4", 857 | "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", 858 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 859 | "dev": true, 860 | "requires": { 861 | "flatted": "^3.1.0", 862 | "rimraf": "^3.0.2" 863 | } 864 | }, 865 | "flatted": { 866 | "version": "3.2.5", 867 | "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.5.tgz", 868 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 869 | "dev": true 870 | }, 871 | "fs.realpath": { 872 | "version": "1.0.0", 873 | "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", 874 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 875 | "dev": true 876 | }, 877 | "fsevents": { 878 | "version": "2.3.2", 879 | "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", 880 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 881 | "dev": true, 882 | "optional": true 883 | }, 884 | "function-bind": { 885 | "version": "1.1.1", 886 | "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", 887 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 888 | "dev": true 889 | }, 890 | "functional-red-black-tree": { 891 | "version": "1.0.1", 892 | "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 893 | "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 894 | "dev": true 895 | }, 896 | "glob": { 897 | "version": "7.2.3", 898 | "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", 899 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 900 | "dev": true, 901 | "requires": { 902 | "fs.realpath": "^1.0.0", 903 | "inflight": "^1.0.4", 904 | "inherits": "2", 905 | "minimatch": "^3.1.1", 906 | "once": "^1.3.0", 907 | "path-is-absolute": "^1.0.0" 908 | } 909 | }, 910 | "glob-parent": { 911 | "version": "6.0.2", 912 | "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", 913 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 914 | "dev": true, 915 | "requires": { 916 | "is-glob": "^4.0.3" 917 | } 918 | }, 919 | "globals": { 920 | "version": "13.15.0", 921 | "resolved": "https://registry.npmmirror.com/globals/-/globals-13.15.0.tgz", 922 | "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", 923 | "dev": true, 924 | "requires": { 925 | "type-fest": "^0.20.2" 926 | } 927 | }, 928 | "has": { 929 | "version": "1.0.3", 930 | "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", 931 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 932 | "dev": true, 933 | "requires": { 934 | "function-bind": "^1.1.1" 935 | } 936 | }, 937 | "has-flag": { 938 | "version": "4.0.0", 939 | "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", 940 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 941 | "dev": true 942 | }, 943 | "ignore": { 944 | "version": "5.2.0", 945 | "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", 946 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 947 | "dev": true 948 | }, 949 | "immutable": { 950 | "version": "4.0.0", 951 | "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.0.0.tgz", 952 | "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", 953 | "dev": true 954 | }, 955 | "import-fresh": { 956 | "version": "3.3.0", 957 | "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", 958 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 959 | "dev": true, 960 | "requires": { 961 | "parent-module": "^1.0.0", 962 | "resolve-from": "^4.0.0" 963 | } 964 | }, 965 | "imurmurhash": { 966 | "version": "0.1.4", 967 | "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", 968 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 969 | "dev": true 970 | }, 971 | "inflight": { 972 | "version": "1.0.6", 973 | "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", 974 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 975 | "dev": true, 976 | "requires": { 977 | "once": "^1.3.0", 978 | "wrappy": "1" 979 | } 980 | }, 981 | "inherits": { 982 | "version": "2.0.4", 983 | "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", 984 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 985 | "dev": true 986 | }, 987 | "is-binary-path": { 988 | "version": "2.1.0", 989 | "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", 990 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 991 | "dev": true, 992 | "requires": { 993 | "binary-extensions": "^2.0.0" 994 | } 995 | }, 996 | "is-core-module": { 997 | "version": "2.9.0", 998 | "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz", 999 | "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", 1000 | "dev": true, 1001 | "requires": { 1002 | "has": "^1.0.3" 1003 | } 1004 | }, 1005 | "is-extglob": { 1006 | "version": "2.1.1", 1007 | "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", 1008 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1009 | "dev": true 1010 | }, 1011 | "is-glob": { 1012 | "version": "4.0.3", 1013 | "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", 1014 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1015 | "dev": true, 1016 | "requires": { 1017 | "is-extglob": "^2.1.1" 1018 | } 1019 | }, 1020 | "is-number": { 1021 | "version": "7.0.0", 1022 | "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", 1023 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1024 | "dev": true 1025 | }, 1026 | "isexe": { 1027 | "version": "2.0.0", 1028 | "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", 1029 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1030 | "dev": true 1031 | }, 1032 | "js-yaml": { 1033 | "version": "4.1.0", 1034 | "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", 1035 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1036 | "dev": true, 1037 | "requires": { 1038 | "argparse": "^2.0.1" 1039 | } 1040 | }, 1041 | "json-schema-traverse": { 1042 | "version": "0.4.1", 1043 | "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1044 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1045 | "dev": true 1046 | }, 1047 | "json-stable-stringify-without-jsonify": { 1048 | "version": "1.0.1", 1049 | "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1050 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1051 | "dev": true 1052 | }, 1053 | "klona": { 1054 | "version": "2.0.5", 1055 | "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz", 1056 | "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", 1057 | "dev": true 1058 | }, 1059 | "levn": { 1060 | "version": "0.4.1", 1061 | "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", 1062 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1063 | "dev": true, 1064 | "requires": { 1065 | "prelude-ls": "^1.2.1", 1066 | "type-check": "~0.4.0" 1067 | } 1068 | }, 1069 | "lodash": { 1070 | "version": "4.17.21", 1071 | "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", 1072 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1073 | }, 1074 | "lodash-es": { 1075 | "version": "4.17.21", 1076 | "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", 1077 | "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" 1078 | }, 1079 | "lodash-unified": { 1080 | "version": "1.0.2", 1081 | "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz", 1082 | "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==" 1083 | }, 1084 | "lodash.merge": { 1085 | "version": "4.6.2", 1086 | "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", 1087 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1088 | "dev": true 1089 | }, 1090 | "lru-cache": { 1091 | "version": "6.0.0", 1092 | "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", 1093 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1094 | "dev": true, 1095 | "requires": { 1096 | "yallist": "^4.0.0" 1097 | } 1098 | }, 1099 | "magic-string": { 1100 | "version": "0.25.9", 1101 | "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", 1102 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 1103 | "requires": { 1104 | "sourcemap-codec": "^1.4.8" 1105 | } 1106 | }, 1107 | "memoize-one": { 1108 | "version": "6.0.0", 1109 | "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", 1110 | "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" 1111 | }, 1112 | "minimatch": { 1113 | "version": "3.1.2", 1114 | "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", 1115 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1116 | "dev": true, 1117 | "requires": { 1118 | "brace-expansion": "^1.1.7" 1119 | } 1120 | }, 1121 | "ms": { 1122 | "version": "2.1.2", 1123 | "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", 1124 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1125 | "dev": true 1126 | }, 1127 | "nanoid": { 1128 | "version": "3.3.4", 1129 | "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz", 1130 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" 1131 | }, 1132 | "natural-compare": { 1133 | "version": "1.4.0", 1134 | "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", 1135 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1136 | "dev": true 1137 | }, 1138 | "neo-async": { 1139 | "version": "2.6.2", 1140 | "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", 1141 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 1142 | "dev": true 1143 | }, 1144 | "normalize-path": { 1145 | "version": "3.0.0", 1146 | "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", 1147 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1148 | "dev": true 1149 | }, 1150 | "normalize-wheel-es": { 1151 | "version": "1.1.2", 1152 | "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.1.2.tgz", 1153 | "integrity": "sha512-scX83plWJXYH1J4+BhAuIHadROzxX0UBF3+HuZNY2Ks8BciE7tSTQ+5JhTsvzjaO0/EJdm4JBGrfObKxFf3Png==" 1154 | }, 1155 | "nth-check": { 1156 | "version": "2.0.1", 1157 | "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.0.1.tgz", 1158 | "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", 1159 | "dev": true, 1160 | "requires": { 1161 | "boolbase": "^1.0.0" 1162 | } 1163 | }, 1164 | "once": { 1165 | "version": "1.4.0", 1166 | "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", 1167 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1168 | "dev": true, 1169 | "requires": { 1170 | "wrappy": "1" 1171 | } 1172 | }, 1173 | "optionator": { 1174 | "version": "0.9.1", 1175 | "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", 1176 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1177 | "dev": true, 1178 | "requires": { 1179 | "deep-is": "^0.1.3", 1180 | "fast-levenshtein": "^2.0.6", 1181 | "levn": "^0.4.1", 1182 | "prelude-ls": "^1.2.1", 1183 | "type-check": "^0.4.0", 1184 | "word-wrap": "^1.2.3" 1185 | } 1186 | }, 1187 | "parent-module": { 1188 | "version": "1.0.1", 1189 | "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", 1190 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1191 | "dev": true, 1192 | "requires": { 1193 | "callsites": "^3.0.0" 1194 | } 1195 | }, 1196 | "path-is-absolute": { 1197 | "version": "1.0.1", 1198 | "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1199 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1200 | "dev": true 1201 | }, 1202 | "path-key": { 1203 | "version": "3.1.1", 1204 | "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", 1205 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1206 | "dev": true 1207 | }, 1208 | "path-parse": { 1209 | "version": "1.0.7", 1210 | "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", 1211 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1212 | "dev": true 1213 | }, 1214 | "picocolors": { 1215 | "version": "1.0.0", 1216 | "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", 1217 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1218 | }, 1219 | "picomatch": { 1220 | "version": "2.3.1", 1221 | "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", 1222 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1223 | "dev": true 1224 | }, 1225 | "postcss": { 1226 | "version": "8.4.14", 1227 | "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.14.tgz", 1228 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 1229 | "requires": { 1230 | "nanoid": "^3.3.4", 1231 | "picocolors": "^1.0.0", 1232 | "source-map-js": "^1.0.2" 1233 | } 1234 | }, 1235 | "postcss-selector-parser": { 1236 | "version": "6.0.10", 1237 | "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", 1238 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 1239 | "dev": true, 1240 | "requires": { 1241 | "cssesc": "^3.0.0", 1242 | "util-deprecate": "^1.0.2" 1243 | } 1244 | }, 1245 | "prelude-ls": { 1246 | "version": "1.2.1", 1247 | "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", 1248 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1249 | "dev": true 1250 | }, 1251 | "punycode": { 1252 | "version": "2.1.1", 1253 | "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", 1254 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1255 | "dev": true 1256 | }, 1257 | "readdirp": { 1258 | "version": "3.6.0", 1259 | "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", 1260 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1261 | "dev": true, 1262 | "requires": { 1263 | "picomatch": "^2.2.1" 1264 | } 1265 | }, 1266 | "regexpp": { 1267 | "version": "3.2.0", 1268 | "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", 1269 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 1270 | "dev": true 1271 | }, 1272 | "resolve": { 1273 | "version": "1.22.0", 1274 | "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz", 1275 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 1276 | "dev": true, 1277 | "requires": { 1278 | "is-core-module": "^2.8.1", 1279 | "path-parse": "^1.0.7", 1280 | "supports-preserve-symlinks-flag": "^1.0.0" 1281 | } 1282 | }, 1283 | "resolve-from": { 1284 | "version": "4.0.0", 1285 | "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", 1286 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1287 | "dev": true 1288 | }, 1289 | "rimraf": { 1290 | "version": "3.0.2", 1291 | "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", 1292 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1293 | "dev": true, 1294 | "requires": { 1295 | "glob": "^7.1.3" 1296 | } 1297 | }, 1298 | "rollup": { 1299 | "version": "2.74.1", 1300 | "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.74.1.tgz", 1301 | "integrity": "sha512-K2zW7kV8Voua5eGkbnBtWYfMIhYhT9Pel2uhBk2WO5eMee161nPze/XRfvEQPFYz7KgrCCnmh2Wy0AMFLGGmMA==", 1302 | "dev": true, 1303 | "requires": { 1304 | "fsevents": "~2.3.2" 1305 | } 1306 | }, 1307 | "sass": { 1308 | "version": "1.52.1", 1309 | "resolved": "https://registry.npmmirror.com/sass/-/sass-1.52.1.tgz", 1310 | "integrity": "sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q==", 1311 | "dev": true, 1312 | "requires": { 1313 | "chokidar": ">=3.0.0 <4.0.0", 1314 | "immutable": "^4.0.0", 1315 | "source-map-js": ">=0.6.2 <2.0.0" 1316 | } 1317 | }, 1318 | "sass-loader": { 1319 | "version": "13.0.0", 1320 | "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-13.0.0.tgz", 1321 | "integrity": "sha512-IHCFecI+rbPvXE2zO/mqdVFe8MU7ElGrwga9hh2H65Ru4iaBJAMRteum1c4Gsxi9Cq1FOtTEDd6+/AEYuQDM4Q==", 1322 | "dev": true, 1323 | "requires": { 1324 | "klona": "^2.0.4", 1325 | "neo-async": "^2.6.2" 1326 | } 1327 | }, 1328 | "semver": { 1329 | "version": "7.3.7", 1330 | "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", 1331 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 1332 | "dev": true, 1333 | "requires": { 1334 | "lru-cache": "^6.0.0" 1335 | } 1336 | }, 1337 | "shebang-command": { 1338 | "version": "2.0.0", 1339 | "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", 1340 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1341 | "dev": true, 1342 | "requires": { 1343 | "shebang-regex": "^3.0.0" 1344 | } 1345 | }, 1346 | "shebang-regex": { 1347 | "version": "3.0.0", 1348 | "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", 1349 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1350 | "dev": true 1351 | }, 1352 | "source-map": { 1353 | "version": "0.6.1", 1354 | "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", 1355 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1356 | }, 1357 | "source-map-js": { 1358 | "version": "1.0.2", 1359 | "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", 1360 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 1361 | }, 1362 | "sourcemap-codec": { 1363 | "version": "1.4.8", 1364 | "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1365 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" 1366 | }, 1367 | "strip-ansi": { 1368 | "version": "6.0.1", 1369 | "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", 1370 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1371 | "dev": true, 1372 | "requires": { 1373 | "ansi-regex": "^5.0.1" 1374 | } 1375 | }, 1376 | "strip-json-comments": { 1377 | "version": "3.1.1", 1378 | "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1379 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1380 | "dev": true 1381 | }, 1382 | "supports-color": { 1383 | "version": "7.2.0", 1384 | "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", 1385 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1386 | "dev": true, 1387 | "requires": { 1388 | "has-flag": "^4.0.0" 1389 | } 1390 | }, 1391 | "supports-preserve-symlinks-flag": { 1392 | "version": "1.0.0", 1393 | "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1394 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1395 | "dev": true 1396 | }, 1397 | "text-table": { 1398 | "version": "0.2.0", 1399 | "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", 1400 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 1401 | "dev": true 1402 | }, 1403 | "to-regex-range": { 1404 | "version": "5.0.1", 1405 | "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", 1406 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1407 | "dev": true, 1408 | "requires": { 1409 | "is-number": "^7.0.0" 1410 | } 1411 | }, 1412 | "type-check": { 1413 | "version": "0.4.0", 1414 | "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", 1415 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1416 | "dev": true, 1417 | "requires": { 1418 | "prelude-ls": "^1.2.1" 1419 | } 1420 | }, 1421 | "type-fest": { 1422 | "version": "0.20.2", 1423 | "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", 1424 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1425 | "dev": true 1426 | }, 1427 | "typescript": { 1428 | "version": "4.6.4", 1429 | "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.6.4.tgz", 1430 | "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", 1431 | "dev": true 1432 | }, 1433 | "uri-js": { 1434 | "version": "4.4.1", 1435 | "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", 1436 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1437 | "dev": true, 1438 | "requires": { 1439 | "punycode": "^2.1.0" 1440 | } 1441 | }, 1442 | "util-deprecate": { 1443 | "version": "1.0.2", 1444 | "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", 1445 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 1446 | "dev": true 1447 | }, 1448 | "v8-compile-cache": { 1449 | "version": "2.3.0", 1450 | "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 1451 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 1452 | "dev": true 1453 | }, 1454 | "vite": { 1455 | "version": "2.9.9", 1456 | "resolved": "https://registry.npmmirror.com/vite/-/vite-2.9.9.tgz", 1457 | "integrity": "sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==", 1458 | "dev": true, 1459 | "requires": { 1460 | "esbuild": "^0.14.27", 1461 | "fsevents": "~2.3.2", 1462 | "postcss": "^8.4.13", 1463 | "resolve": "^1.22.0", 1464 | "rollup": "^2.59.0" 1465 | } 1466 | }, 1467 | "vue": { 1468 | "version": "3.2.35", 1469 | "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.35.tgz", 1470 | "integrity": "sha512-mc/15B0Wjd/4JMMGOcXUQAeXfjyg8MImA2EVZucNdyDPJe1nXhMNbYXOEVPEGfk/mCeyszCzl44dSAhHhQVH8g==", 1471 | "requires": { 1472 | "@vue/compiler-dom": "3.2.35", 1473 | "@vue/compiler-sfc": "3.2.35", 1474 | "@vue/runtime-dom": "3.2.35", 1475 | "@vue/server-renderer": "3.2.35", 1476 | "@vue/shared": "3.2.35" 1477 | } 1478 | }, 1479 | "vue-demi": { 1480 | "version": "0.12.5", 1481 | "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.5.tgz", 1482 | "integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==" 1483 | }, 1484 | "vue-eslint-parser": { 1485 | "version": "9.0.2", 1486 | "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.0.2.tgz", 1487 | "integrity": "sha512-uCPQwTGjOtAYrwnU+76pYxalhjsh7iFBsHwBqDHiOPTxtICDaraO4Szw54WFTNZTAEsgHHzqFOu1mmnBOBRzDA==", 1488 | "dev": true, 1489 | "requires": { 1490 | "debug": "^4.3.4", 1491 | "eslint-scope": "^7.1.1", 1492 | "eslint-visitor-keys": "^3.3.0", 1493 | "espree": "^9.3.1", 1494 | "esquery": "^1.4.0", 1495 | "lodash": "^4.17.21", 1496 | "semver": "^7.3.6" 1497 | } 1498 | }, 1499 | "vue-router": { 1500 | "version": "4.0.15", 1501 | "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.15.tgz", 1502 | "integrity": "sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg==", 1503 | "requires": { 1504 | "@vue/devtools-api": "^6.0.0" 1505 | } 1506 | }, 1507 | "vue-tsc": { 1508 | "version": "0.34.15", 1509 | "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-0.34.15.tgz", 1510 | "integrity": "sha512-xRNaOpg/UCHnRcz9vOdbIjB7uCQ0mifHpqNaejAho7em4WLOzNdJx4R9HMJrqWek44keg7AblIiwM+86QfXx9g==", 1511 | "dev": true, 1512 | "requires": { 1513 | "@volar/vue-typescript": "0.34.15" 1514 | } 1515 | }, 1516 | "which": { 1517 | "version": "2.0.2", 1518 | "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", 1519 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1520 | "dev": true, 1521 | "requires": { 1522 | "isexe": "^2.0.0" 1523 | } 1524 | }, 1525 | "word-wrap": { 1526 | "version": "1.2.3", 1527 | "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", 1528 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1529 | "dev": true 1530 | }, 1531 | "wrappy": { 1532 | "version": "1.0.2", 1533 | "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", 1534 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1535 | "dev": true 1536 | }, 1537 | "xml-name-validator": { 1538 | "version": "4.0.0", 1539 | "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", 1540 | "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", 1541 | "dev": true 1542 | }, 1543 | "yallist": { 1544 | "version": "4.0.0", 1545 | "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", 1546 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1547 | "dev": true 1548 | } 1549 | } 1550 | } 1551 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xxl", 3 | "private": true, 4 | "version": "0.0.0", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vue-tsc --noEmit && vite build", 8 | "preview": "vite preview" 9 | }, 10 | "dependencies": { 11 | "element-plus": "^2.2.1", 12 | "vue": "^3.2.25", 13 | "vue-router": "^4.0.15" 14 | }, 15 | "devDependencies": { 16 | "@types/node": "^17.0.35", 17 | "@vitejs/plugin-vue": "^2.3.3", 18 | "eslint": "^8.16.0", 19 | "eslint-plugin-vue": "^9.0.1", 20 | "sass": "^1.52.1", 21 | "sass-loader": "^13.0.0", 22 | "typescript": "^4.5.4", 23 | "vite": "^2.9.9", 24 | "vue-tsc": "^0.34.7" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/public/favicon.ico -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /src/assets/images/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/assets/images/0.png -------------------------------------------------------------------------------- /src/assets/images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/assets/images/1.png -------------------------------------------------------------------------------- /src/assets/images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/assets/images/2.png -------------------------------------------------------------------------------- /src/assets/images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/assets/images/3.png -------------------------------------------------------------------------------- /src/assets/images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/assets/images/4.png -------------------------------------------------------------------------------- /src/assets/images/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/assets/images/5.png -------------------------------------------------------------------------------- /src/assets/images/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/assets/images/6.png -------------------------------------------------------------------------------- /src/assets/images/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/assets/images/bg.jpg -------------------------------------------------------------------------------- /src/assets/images/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/assets/images/text.png -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/assets/logo.png -------------------------------------------------------------------------------- /src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 35 | 36 | 53 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue' 5 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 6 | const component: DefineComponent<{}, {}, any> 7 | export default component 8 | } 9 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue" 2 | import App from "./App.vue" 3 | import ElementPlus from "element-plus" 4 | import router from "@/router/index" 5 | import "element-plus/dist/index.css" 6 | import "./style/index" 7 | import "./permission" 8 | createApp(App).use(ElementPlus).use(router).mount("#app") 9 | -------------------------------------------------------------------------------- /src/permission.ts: -------------------------------------------------------------------------------- 1 | import router from "@/router/index" 2 | import { _isMobile } from "./utils/utils" 3 | 4 | router.beforeEach((to, from, next) => { 5 | if (_isMobile()) { 6 | if (to.path == "/mobile") next() 7 | else next({ path: "/mobile" }) 8 | } else { 9 | if (to.path == "/" || to.path == "/pc") next() 10 | else next({ path: "/pc" }) 11 | } 12 | }) 13 | -------------------------------------------------------------------------------- /src/router/index.ts: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router" 2 | const routes: Array = [ 3 | { 4 | path: "/", 5 | name: "home", 6 | redirect: { name: "pc" }, 7 | }, 8 | { 9 | path: "/pc", 10 | name: "pc", 11 | component: () => import("@/views/stage/pc.vue"), 12 | }, 13 | { 14 | path: "/mobile", 15 | name: "mobile", 16 | component: () => import("@/views/stage/mobile.vue"), 17 | }, 18 | ] 19 | const router = createRouter({ 20 | history: createWebHashHistory(), 21 | routes, 22 | }) 23 | export default router 24 | -------------------------------------------------------------------------------- /src/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "./stage.scss"; 2 | 3 | // 全局样式 4 | html, 5 | body { 6 | width: 100%; 7 | height: 100%; 8 | -moz-osx-font-smoothing: grayscale; 9 | -webkit-font-smoothing: antialiased; 10 | text-rendering: optimizeLegibility; 11 | font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, 12 | Microsoft YaHei, Arial, sans-serif; 13 | box-sizing: border-box; 14 | } 15 | * { 16 | margin: 0; 17 | padding: 0; 18 | } 19 | 20 | label { 21 | font-weight: 700; 22 | } 23 | 24 | #app { 25 | // height: 100%; 26 | font-family: Avenir, Helvetica, Arial, sans-serif; 27 | -webkit-font-smoothing: antialiased; 28 | -moz-osx-font-smoothing: grayscale; 29 | color: #2c3e50; 30 | } 31 | 32 | *, 33 | *:before, 34 | *:after { 35 | box-sizing: inherit; 36 | } 37 | 38 | a:focus, 39 | a:active { 40 | outline: none; 41 | } 42 | 43 | a, 44 | a:focus, 45 | a:hover { 46 | cursor: pointer; 47 | color: inherit; 48 | text-decoration: none; 49 | } 50 | 51 | div:focus { 52 | outline: none; 53 | } 54 | 55 | .clearfix { 56 | &:after { 57 | visibility: hidden; 58 | display: block; 59 | font-size: 0; 60 | content: " "; 61 | clear: both; 62 | height: 0; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/style/stage.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wmuhua/vue3-xxl/41be141462606a7533eb7af25e286835392a6af1/src/style/stage.scss -------------------------------------------------------------------------------- /src/utils/stage.ts: -------------------------------------------------------------------------------- 1 | interface IXXL { 2 | x: number // 游戏舞台行列方块个数 3 | y: number 4 | size: number // 方块大小 5 | typeCount: number // 方块内容种类个数 6 | matrix: Array // 方块矩阵,用于每次消除之后根据矩阵规则生成新的游戏棋盘 7 | data: Array // 用于渲染页面 8 | score: number // 分数 9 | isHandle: boolean // 游戏是否正在消除/下落/添加处理中 10 | isSelect: boolean // 是否有选择 11 | target1: any // 选择的目标 12 | target2: any 13 | } 14 | export default class Stage implements IXXL { 15 | x: number 16 | y: number 17 | size: number 18 | typeCount = 7 19 | matrix: Array = [] 20 | data: Array = [] 21 | isHandle = false 22 | isSelect = false 23 | score = 0 24 | target1: any = { active: false } 25 | target2: any = {} 26 | constructor(x: number, y: number, size: number) { 27 | this.x = x 28 | this.y = y 29 | this.size = size 30 | this.getMatrix() 31 | this.init(true) 32 | } 33 | // 点击小方块 34 | click(target: any) { 35 | if (this.isHandle) return 36 | // console.log(target) 37 | const { isSelect } = this 38 | if (!isSelect) { 39 | // 选择第一个 40 | target.active = true 41 | this.target1 = target 42 | this.isSelect = true 43 | } else { 44 | // 选择第二个 45 | if (this.target1 === target) return 46 | this.target1.active = false 47 | // 如果是相邻的 48 | if ( 49 | ["left", "top", "bottom", "right"].some( 50 | (item) => this.target1[item] == target 51 | ) 52 | ) { 53 | this.target2 = target 54 | ;(async () => { 55 | // 调换位置 56 | await this.swap() 57 | let res = await this.gameLoop() 58 | // 还原 59 | if (!res) { 60 | await this.swap() 61 | } 62 | })() 63 | this.isSelect = false 64 | } else { 65 | // 如果不是相邻的 66 | target.active = true 67 | this.target1 = target 68 | this.isSelect = true 69 | } 70 | } 71 | } 72 | // 换位置 73 | swap() { 74 | return new Promise((resolve, reject) => { 75 | const { target1, target2, data } = this 76 | const { positionLeft: pl1, positionTop: pt1, x: x1, y: y1 } = target1 77 | const { positionLeft: pl2, positionTop: pt2, x: x2, y: y2 } = target2 78 | setTimeout(() => { 79 | target1.positionLeft = pl2 80 | target1.positionTop = pt2 81 | target1.x = x2 82 | target1.y = y2 83 | target2.positionLeft = pl1 84 | target2.positionTop = pt1 85 | target2.x = x1 86 | target2.y = y1 87 | data.forEach((square) => { 88 | square.left = data.find( 89 | (item) => item.x == square.x - 1 && item.y == square.y 90 | ) 91 | square.right = data.find( 92 | (item) => item.x == square.x + 1 && item.y == square.y 93 | ) 94 | square.top = data.find( 95 | (item) => item.x == square.x && item.y == square.y - 1 96 | ) 97 | square.bottom = data.find( 98 | (item) => item.x == square.x && item.y == square.y + 1 99 | ) 100 | }) 101 | }, 0) 102 | setTimeout(() => { 103 | resolve(true) 104 | }, 500) 105 | }) 106 | } 107 | // 游戏开始 108 | async gameLoop(bool: boolean = false) { 109 | if (bool) this.score = 0 110 | this.isHandle = true 111 | // 要等清除动画执行完,所以用await 112 | await this.remove() 113 | let status = this.data.some((item) => item.status === "remove") 114 | while (this.data.some((item) => item.status === "remove")) { 115 | await this.down() 116 | await this.add() 117 | await this.remove() 118 | } 119 | this.isHandle = false 120 | return status 121 | } 122 | // 清除 123 | remove() { 124 | return new Promise((resolve, reject) => { 125 | const { data } = this 126 | data.forEach((item) => { 127 | const { left, right, top, bottom, type } = item 128 | if (left?.type == type && right?.type == type) { 129 | left.status = "remove" 130 | item.status = "remove" 131 | right.status = "remove" 132 | } 133 | if (top?.type == type && bottom?.type == type) { 134 | top.status = "remove" 135 | item.status = "remove" 136 | bottom.status = "remove" 137 | } 138 | }) 139 | setTimeout(() => { 140 | data.forEach((item, index) => { 141 | if (item.status === "remove") { 142 | item.scale = 0 143 | this.score += 1 144 | } 145 | }) 146 | }, 100) 147 | setTimeout(() => { 148 | resolve(true) 149 | }, 500) 150 | }) 151 | } 152 | // 下落 153 | down() { 154 | return new Promise((resolve, reject) => { 155 | const { data, size, x, y } = this 156 | data.forEach((item, index) => { 157 | let distance = 0 // 移动格数 158 | if (item.status === "remove") { 159 | // 删除的位置上移,调整新增格子的位置 160 | let top = item.top 161 | while (top) { 162 | if (top.status !== "remove") { 163 | distance += 1 164 | } 165 | top = top.top 166 | } 167 | // 上移 168 | if (distance) { 169 | item.y -= distance 170 | item.positionTop = item.positionTop - size * distance 171 | } 172 | } else { 173 | let bottom = item.bottom 174 | while (bottom) { 175 | if (bottom.status === "remove") { 176 | distance += 1 177 | } 178 | bottom = bottom.bottom 179 | } 180 | // 下落 181 | if (distance) { 182 | item.y += distance 183 | item.positionTop = item.positionTop + size * distance 184 | } 185 | } 186 | }) 187 | setTimeout(() => { 188 | resolve(true) 189 | }, 500) 190 | }) 191 | } 192 | // 添加 193 | add() { 194 | return new Promise((resolve, reject) => { 195 | const { size, matrix } = this 196 | // 重置矩阵 197 | this.getMatrix() 198 | this.matrix = matrix.map((row, rowIndex) => 199 | row.map((col: any, colIndex: number) => { 200 | return this.data.find((item) => { 201 | return colIndex == item.x && rowIndex == item.y 202 | }) 203 | }) 204 | ) 205 | // 根据矩阵需要清除的位置替换新方块 206 | this.init() 207 | setTimeout(() => { 208 | this.data.forEach((item) => { 209 | if (item.status === "add") { 210 | item.scale = 1 211 | item.status = "normal" 212 | } 213 | }) 214 | }, 100) 215 | setTimeout(() => { 216 | resolve(true) 217 | }, 500) 218 | }) 219 | } 220 | // 获取矩阵 221 | getMatrix() { 222 | const { x, y } = this 223 | const row = new Array(x).fill(undefined) 224 | const matrix = new Array(y).fill(undefined).map((item) => row) 225 | this.matrix = matrix 226 | } 227 | // 生成小方块 228 | init(bool: boolean = false) { 229 | const { x, y, typeCount, matrix, size } = this 230 | const data: Array = [] 231 | let _x = 0 232 | let _y = 0 233 | for (let i = 0, len = Math.pow(x, 2); i < len; i++) { 234 | let item 235 | try { 236 | item = matrix[_y][_x] 237 | } catch (e) {} 238 | let flag: boolean = item && item.status !== "remove" 239 | let obj = { 240 | type: flag ? item.type : Math.floor(Math.random() * typeCount), 241 | x: _x, 242 | y: _y, 243 | status: bool ? "normal" : flag ? "normal" : "add", 244 | positionLeft: flag ? item.positionLeft : size * _x, 245 | positionTop: flag ? item.positionTop : size * _y, 246 | left: undefined, 247 | top: undefined, 248 | bottom: undefined, 249 | right: undefined, 250 | scale: bool ? 1 : flag ? 1 : 0, 251 | key: item ? item.key + i : `${_x}${_y}`, 252 | active: false, 253 | } 254 | data.push(obj) 255 | _x++ 256 | if (_x == x) { 257 | _x = 0 258 | _y++ 259 | } 260 | } 261 | data.forEach((square) => { 262 | square.left = data.find( 263 | (item) => item.x == square.x - 1 && item.y == square.y 264 | ) 265 | square.right = data.find( 266 | (item) => item.x == square.x + 1 && item.y == square.y 267 | ) 268 | square.top = data.find( 269 | (item) => item.x == square.x && item.y == square.y - 1 270 | ) 271 | square.bottom = data.find( 272 | (item) => item.x == square.x && item.y == square.y + 1 273 | ) 274 | }) 275 | this.data = data 276 | } 277 | } 278 | -------------------------------------------------------------------------------- /src/utils/utils.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @returns 是否是移动端 4 | */ 5 | export function _isMobile() { 6 | let flag = navigator.userAgent.match( 7 | /(phone|pad|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows phone)/i 8 | ) 9 | return flag 10 | } 11 | -------------------------------------------------------------------------------- /src/views/stage/mobile.vue: -------------------------------------------------------------------------------- 1 | 32 | 62 | 156 | -------------------------------------------------------------------------------- /src/views/stage/pc.vue: -------------------------------------------------------------------------------- 1 | 32 | 57 | 155 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "useDefineForClassFields": true, 5 | "module": "esnext", 6 | "moduleResolution": "node", 7 | "strict": true, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "isolatedModules": true, 12 | "esModuleInterop": true, 13 | "lib": ["esnext", "dom"], 14 | "skipLibCheck": true, 15 | "baseUrl": ".", 16 | "paths": { 17 | "@/*": ["src/*"] 18 | } 19 | }, 20 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 21 | "references": [{ "path": "./tsconfig.node.json" }] 22 | } 23 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "esnext", 5 | "moduleResolution": "node" 6 | }, 7 | "include": ["vite.config.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite" 2 | import vue from "@vitejs/plugin-vue" 3 | import { resolve } from "path" 4 | 5 | // https://vitejs.dev/config/ 6 | export default defineConfig({ 7 | base: "./", 8 | plugins: [vue()], 9 | resolve: { 10 | extensions: [".js", ".vue", ".scss", ".ts"], 11 | alias: [{ find: "@", replacement: resolve(__dirname, "src") }], 12 | }, 13 | }) 14 | --------------------------------------------------------------------------------