From 795d428ed8a8fc6ce02f0026d387648a35daa6e4 Mon Sep 17 00:00:00 2001 From: Hooray Hu <304327508@qq.com> Date: Fri, 22 Dec 2023 16:45:00 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=96=B0stylelint=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .lintstagedrc | 4 +- .stylelintignore | 4 - .stylelintrc | 45 -- package.json | 17 +- pnpm-lock.yaml | 502 +++++++----------- public/browser_upgrade/index.css | 16 +- public/loading.css | 30 +- src/assets/styles/globals.scss | 8 +- src/assets/styles/nprogress.scss | 16 +- src/assets/styles/resources/utils.scss | 4 +- src/components/ImagePreview/index.vue | 8 +- src/components/ImageUpload/index.vue | 18 +- src/components/ImagesUpload/index.vue | 18 +- src/layouts/components/Header/index.vue | 22 +- src/layouts/components/MainSidebar/index.vue | 4 +- src/layouts/components/SubSidebar/index.vue | 6 +- .../components/Topbar/Toolbar/index.vue | 2 +- src/layouts/components/Topbar/index.vue | 2 +- src/layouts/components/views/link.vue | 4 +- src/layouts/index.vue | 26 +- src/views/index.vue | 4 +- src/views/login.vue | 30 +- stylelint.config.js | 117 ++++ 23 files changed, 418 insertions(+), 489 deletions(-) delete mode 100755 .stylelintignore delete mode 100755 .stylelintrc create mode 100644 stylelint.config.js diff --git a/.lintstagedrc b/.lintstagedrc index 66075ec..f256a76 100755 --- a/.lintstagedrc +++ b/.lintstagedrc @@ -1,4 +1,4 @@ { - "*.{ts,tsx,vue}": "eslint . --cache --fix", - "*.{css,scss,vue}": "stylelint src/**/*.{css,scss,vue} --cache --fix --allow-empty-input" + "*.{ts,tsx,vue}": "eslint --cache --fix", + "*.{css,scss,vue}": "stylelint --cache --fix" } diff --git a/.stylelintignore b/.stylelintignore deleted file mode 100755 index 138aa4c..0000000 --- a/.stylelintignore +++ /dev/null @@ -1,4 +0,0 @@ -dist -node_modules -src/assets/sprites -public/tinymce diff --git a/.stylelintrc b/.stylelintrc deleted file mode 100755 index 5fd0012..0000000 --- a/.stylelintrc +++ /dev/null @@ -1,45 +0,0 @@ -{ - "extends": [ - "stylelint-stylistic/config", - "stylelint-config-standard-scss", - "stylelint-config-standard-vue/scss" - ], - "plugins": [ - "stylelint-scss" - ], - "rules": { - "stylistic/max-line-length": null, - "stylistic/block-closing-brace-newline-after": [ - "always", - { - "ignoreAtRules": ["if", "else"] - } - ], - "at-rule-no-unknown": null, - "no-descending-specificity": null, - "property-no-unknown": null, - "font-family-no-missing-generic-family-keyword": null, - "selector-class-pattern": null, - "function-no-unknown": [ - true, - { - "ignoreFunctions": [ - "v-bind", - "map-get", - "lighten", - "darken" - ] - } - ], - "selector-pseudo-element-no-unknown": [ - true, - { - "ignorePseudoElements": [ - "/^view-transition/" - ] - } - ], - "scss/double-slash-comment-empty-line-before": null, - "scss/no-global-function-names": null - } -} diff --git a/package.json b/package.json index 5d7f1e0..7107114 100755 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "lint": "npm-run-all -s lint:tsc lint:eslint lint:stylelint", "lint:tsc": "vue-tsc", "lint:eslint": "eslint . --cache --fix", - "lint:stylelint": "stylelint src/**/*.{css,scss,vue} --cache --fix --allow-empty-input", + "lint:stylelint": "stylelint \"src/**/*.{css,scss,vue}\" --cache --fix", "postinstall": "simple-git-hooks", "preinstall": "npx only-allow pnpm", "commit": "git cz", @@ -48,12 +48,13 @@ }, "devDependencies": { "@antfu/eslint-config": "2.4.6", - "@iconify/json": "^2.2.160", + "@iconify/json": "^2.2.161", "@iconify/vue": "^4.1.1", + "@stylistic/stylelint-plugin": "^2.0.0", "@types/lodash-es": "^4.17.12", "@types/nprogress": "^0.2.3", "@types/path-browserify": "^1.0.2", - "@types/qs": "^6.9.10", + "@types/qs": "^6.9.11", "@unocss/eslint-plugin": "^0.58.0", "@vitejs/plugin-legacy": "^5.2.0", "@vitejs/plugin-vue": "^4.5.2", @@ -71,11 +72,11 @@ "plop": "^4.0.0", "sass": "^1.69.5", "simple-git-hooks": "^2.9.0", - "stylelint": "^15.11.0", - "stylelint-config-standard-scss": "^11.1.0", + "stylelint": "^16.0.2", + "stylelint-config-recess-order": "^4.4.0", + "stylelint-config-standard-scss": "^12.0.0", "stylelint-config-standard-vue": "^1.0.0", - "stylelint-scss": "^5.3.1", - "stylelint-stylistic": "^0.4.3", + "stylelint-scss": "^6.0.0", "svgo": "^3.1.0", "terser": "^5.26.0", "typescript": "^5.3.3", @@ -90,7 +91,7 @@ "vite-plugin-svg-icons": "^2.0.1", "vite-plugin-vue-inspector": "^4.0.2", "vite-plugin-vue-meta-layouts": "^0.3.4", - "vue-tsc": "^1.8.25" + "vue-tsc": "^1.8.26" }, "simple-git-hooks": { "pre-commit": "pnpm lint-staged", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c0dfda7..357e492 100755 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -86,11 +86,14 @@ devDependencies: specifier: 2.4.6 version: 2.4.6(@unocss/eslint-plugin@0.58.0)(@vue/compiler-sfc@3.3.13)(eslint@8.56.0)(typescript@5.3.3) '@iconify/json': - specifier: ^2.2.160 - version: 2.2.160 + specifier: ^2.2.161 + version: 2.2.161 '@iconify/vue': specifier: ^4.1.1 version: 4.1.1(vue@3.3.13) + '@stylistic/stylelint-plugin': + specifier: ^2.0.0 + version: 2.0.0(stylelint@16.0.2) '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 @@ -101,8 +104,8 @@ devDependencies: specifier: ^1.0.2 version: 1.0.2 '@types/qs': - specifier: ^6.9.10 - version: 6.9.10 + specifier: ^6.9.11 + version: 6.9.11 '@unocss/eslint-plugin': specifier: ^0.58.0 version: 0.58.0(eslint@8.56.0)(typescript@5.3.3) @@ -155,20 +158,20 @@ devDependencies: specifier: ^2.9.0 version: 2.9.0 stylelint: - specifier: ^15.11.0 - version: 15.11.0(typescript@5.3.3) + specifier: ^16.0.2 + version: 16.0.2(typescript@5.3.3) + stylelint-config-recess-order: + specifier: ^4.4.0 + version: 4.4.0(stylelint@16.0.2) stylelint-config-standard-scss: - specifier: ^11.1.0 - version: 11.1.0(postcss@8.4.32)(stylelint@15.11.0) + specifier: ^12.0.0 + version: 12.0.0(postcss@8.4.32)(stylelint@16.0.2) stylelint-config-standard-vue: specifier: ^1.0.0 - version: 1.0.0(postcss-html@1.5.0)(stylelint@15.11.0) + version: 1.0.0(postcss-html@1.5.0)(stylelint@16.0.2) stylelint-scss: - specifier: ^5.3.1 - version: 5.3.1(stylelint@15.11.0) - stylelint-stylistic: - specifier: ^0.4.3 - version: 0.4.3(stylelint@15.11.0) + specifier: ^6.0.0 + version: 6.0.0(stylelint@16.0.2) svgo: specifier: ^3.1.0 version: 3.1.0 @@ -212,8 +215,8 @@ devDependencies: specifier: ^0.3.4 version: 0.3.4(vite@5.0.10)(vue-router@4.2.5) vue-tsc: - specifier: ^1.8.25 - version: 1.8.25(typescript@5.3.3) + specifier: ^1.8.26 + version: 1.8.26(typescript@5.3.3) packages: @@ -1922,33 +1925,33 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - /@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1): - resolution: {integrity: sha512-sLYGdAdEY2x7TSw9FtmdaTrh2wFtRJO5VMbBrA8tEqEod7GEggFmxTSK9XqExib3yMuYNcvcTdCZIP6ukdjAIA==} + /@csstools/css-parser-algorithms@2.4.0(@csstools/css-tokenizer@2.2.2): + resolution: {integrity: sha512-/PPLr2g5PAUCKAPEbfyk6/baZA+WJHQtUhPkoCQMpyRE8I0lXrG1QFRN8e5s3ZYxM8d/g5BZc6lH3s8Op7/VEg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: - '@csstools/css-tokenizer': ^2.2.1 + '@csstools/css-tokenizer': ^2.2.2 dependencies: - '@csstools/css-tokenizer': 2.2.1 + '@csstools/css-tokenizer': 2.2.2 dev: true - /@csstools/css-tokenizer@2.2.1: - resolution: {integrity: sha512-Zmsf2f/CaEPWEVgw29odOj+WEVoiJy9s9NOv5GgNY9mZ1CZ7394By6wONrONrTsnNDv6F9hR02nvFihrGVGHBg==} + /@csstools/css-tokenizer@2.2.2: + resolution: {integrity: sha512-wCDUe/MAw7npAHFLyW3QjSyLA66S5QFaV1jIXlNQvdJ8RzXDSgALa49eWcUO6P55ARQaz0TsDdAgdRgkXFYY8g==} engines: {node: ^14 || ^16 || >=18} dev: true - /@csstools/media-query-list-parser@2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1): - resolution: {integrity: sha512-IxVBdYzR8pYe89JiyXQuYk4aVVoCPhMJkz6ElRwlVysjwURTsTk/bmY/z4FfeRE+CRBMlykPwXEVUg8lThv7AQ==} + /@csstools/media-query-list-parser@2.1.6(@csstools/css-parser-algorithms@2.4.0)(@csstools/css-tokenizer@2.2.2): + resolution: {integrity: sha512-R6AKl9vaU0It7D7TR2lQn0pre5aQfdeqHRePlaRCY8rHL3l9eVlNRpsEVDKFi/zAjzv68CxH2M5kqbhPFPKjvw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: - '@csstools/css-parser-algorithms': ^2.3.2 - '@csstools/css-tokenizer': ^2.2.1 + '@csstools/css-parser-algorithms': ^2.4.0 + '@csstools/css-tokenizer': ^2.2.2 dependencies: - '@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1) - '@csstools/css-tokenizer': 2.2.1 + '@csstools/css-parser-algorithms': 2.4.0(@csstools/css-tokenizer@2.2.2) + '@csstools/css-tokenizer': 2.2.2 dev: true - /@csstools/selector-specificity@3.0.0(postcss-selector-parser@6.0.13): - resolution: {integrity: sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==} + /@csstools/selector-specificity@3.0.1(postcss-selector-parser@6.0.13): + resolution: {integrity: sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 @@ -2488,8 +2491,8 @@ packages: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true - /@iconify/json@2.2.160: - resolution: {integrity: sha512-mjVikrD2ohux47NDrG22qzVBIf0BGS3W4HUZO3d+dnk7Sk3AYrmWVsGiMW6aoSGrBMIKAXpkLqCqgu57eu1oIw==} + /@iconify/json@2.2.161: + resolution: {integrity: sha512-yxkCLeZdzHFjfhH1BRmyMU5DEUnbTsiuSpgcd/DxKM8eMzUab/CbfxAVSqiNIrSeXhe4RUsws767wfTKhblTSw==} dependencies: '@iconify/types': 2.0.0 pathe: 1.1.1 @@ -2807,6 +2810,22 @@ packages: - typescript dev: true + /@stylistic/stylelint-plugin@2.0.0(stylelint@16.0.2): + resolution: {integrity: sha512-dHKuT6PGd1WGZLOTuozAM7GdQzdmlmnFXYzvV1jYJXXpcCpV/OJ3+n8TXpMkoOeKHpJydY43EOoZTO1W/FOA4Q==} + engines: {node: ^18.12 || >=20.9} + peerDependencies: + stylelint: ^16.0.2 + dependencies: + '@csstools/css-parser-algorithms': 2.4.0(@csstools/css-tokenizer@2.2.2) + '@csstools/css-tokenizer': 2.2.2 + '@csstools/media-query-list-parser': 2.1.6(@csstools/css-parser-algorithms@2.4.0)(@csstools/css-tokenizer@2.2.2) + is-plain-object: 5.0.0 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + style-search: 0.1.0 + stylelint: 16.0.2(typescript@5.3.3) + dev: true + /@sxzz/popperjs-es@2.11.7: resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} dev: false @@ -2862,10 +2881,6 @@ packages: '@types/unist': 2.0.10 dev: true - /@types/minimist@1.2.4: - resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==} - dev: true - /@types/mockjs@1.0.7: resolution: {integrity: sha512-OCxXz6hEaJOVpRwuJMiVY5a6LtJcih+br9gwB/Q8ooOBikvk5FpBQ31OlNimXo3EqKha1Z7PFBni+q9m+8NCWg==} dev: true @@ -2882,10 +2897,6 @@ packages: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: true - /@types/normalize-package-data@2.4.3: - resolution: {integrity: sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==} - dev: true - /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true @@ -2898,8 +2909,8 @@ packages: resolution: {integrity: sha512-ZkC5IUqqIFPXx3ASTTybTzmQdwHwe2C0u3eL75ldQ6T9E9IWFJodn6hIfbZGab73DfyiHN4Xw15gNxUq2FbvBA==} dev: true - /@types/qs@6.9.10: - resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} + /@types/qs@6.9.11: + resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} dev: true /@types/semver@7.5.6: @@ -3519,8 +3530,8 @@ packages: resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} dev: false - /@vue/language-core@1.8.25(typescript@5.3.3): - resolution: {integrity: sha512-NJk/5DnAZlpvXX8BdWmHI45bWGLViUaS3R/RMrmFSvFMSbJKuEODpM4kR0F0Ofv5SFzCWuNiMhxameWpVdQsnA==} + /@vue/language-core@1.8.26(typescript@5.3.3): + resolution: {integrity: sha512-9cmza/Y2YTiOnKZ0Mi9zsNn7Irw+aKirP+5LLWVSNaL3fjKJjW1cD3HGBckasY2RuVh4YycvdA9/Q6EBpVd/7Q==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3529,8 +3540,8 @@ packages: dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.3.10 - '@vue/shared': 3.3.10 + '@vue/compiler-dom': 3.3.13 + '@vue/shared': 3.3.13 computeds: 0.0.1 minimatch: 9.0.3 muggle-string: 0.3.1 @@ -3847,11 +3858,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: true - /assign-symbols@1.0.0: resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} engines: {node: '>=0.10.0'} @@ -4205,16 +4211,6 @@ packages: tslib: 2.6.2 dev: true - /camelcase-keys@7.0.2: - resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} - engines: {node: '>=12'} - dependencies: - camelcase: 6.3.0 - map-obj: 4.3.0 - quick-lru: 5.1.1 - type-fest: 1.4.0 - dev: true - /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -4554,8 +4550,8 @@ packages: engines: {node: '>= 0.4.0'} dev: true - /cosmiconfig@8.3.6(typescript@5.3.3): - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + /cosmiconfig@9.0.0(typescript@5.3.3): + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -4563,10 +4559,10 @@ packages: typescript: optional: true dependencies: + env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - path-type: 4.0.0 typescript: 5.3.3 dev: true @@ -4714,24 +4710,6 @@ packages: ms: 2.1.2 dev: true - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: true - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true - - /decamelize@5.0.1: - resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} - engines: {node: '>=10'} - dev: true - /decode-uri-component@0.2.0: resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} engines: {node: '>=0.10'} @@ -5060,6 +5038,11 @@ packages: engines: {node: '>=0.12'} dev: true + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -6075,17 +6058,6 @@ packages: micromatch: 4.0.5 dev: true - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -6131,11 +6103,11 @@ packages: flat-cache: 3.2.0 dev: true - /file-entry-cache@7.0.1: - resolution: {integrity: sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==} + /file-entry-cache@7.0.2: + resolution: {integrity: sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==} engines: {node: '>=12.0.0'} dependencies: - flat-cache: 3.1.1 + flat-cache: 3.2.0 dev: true /fill-range@4.0.0: @@ -6212,15 +6184,6 @@ packages: engines: {node: '>= 10.13.0'} dev: true - /flat-cache@3.1.1: - resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} - engines: {node: '>=12.0.0'} - dependencies: - flatted: 3.2.9 - keyv: 4.5.4 - rimraf: 3.0.2 - dev: true - /flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -6531,8 +6494,8 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.0 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -6586,11 +6549,6 @@ packages: uglify-js: 3.17.4 dev: true - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true - /has-ansi@2.0.0: resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} engines: {node: '>=0.10.0'} @@ -6711,13 +6669,6 @@ packages: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: true - /hotkeys-js@3.13.3: resolution: {integrity: sha512-IEiMBNRJZMhWyNDsvww8LYC8vZYyj2/w2GgXPg0ljq/K3SYvOJH6NRMqzF7z2Fwaq2AzKSvmvECREzFleKSeow==} dev: false @@ -6859,11 +6810,6 @@ packages: resolve-from: 4.0.0 dev: true - /import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - dev: true - /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -7708,16 +7654,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true - - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true - /map-visit@1.0.0: resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} engines: {node: '>=0.10.0'} @@ -7766,22 +7702,9 @@ packages: engines: {node: '>= 0.10.0'} dev: true - /meow@10.1.5: - resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - '@types/minimist': 1.2.4 - camelcase-keys: 7.0.2 - decamelize: 5.0.1 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 8.0.0 - redent: 4.0.0 - trim-newlines: 4.1.1 - type-fest: 1.4.0 - yargs-parser: 20.2.9 + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} dev: true /merge-options@1.0.1: @@ -7884,15 +7807,6 @@ packages: brace-expansion: 2.0.1 dev: true - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true - /minimist@1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true @@ -8002,12 +7916,6 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -8091,16 +7999,6 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - dev: true - /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -8657,15 +8555,6 @@ packages: resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.31): - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.3.3 - dependencies: - postcss: 8.4.31 - dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.32): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} @@ -8675,6 +8564,15 @@ packages: postcss: 8.4.32 dev: true + /postcss-safe-parser@7.0.0(postcss@8.4.32): + resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.32 + dev: true + /postcss-scss@4.0.9(postcss@8.4.32): resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} engines: {node: '>=12.0'} @@ -8692,6 +8590,14 @@ packages: util-deprecate: 1.0.2 dev: true + /postcss-sorting@8.0.2(postcss@8.4.32): + resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} + peerDependencies: + postcss: ^8.4.20 + dependencies: + postcss: 8.4.32 + dev: true + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true @@ -8706,24 +8612,6 @@ packages: supports-color: 3.2.3 dev: true - /postcss@8.4.26: - resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /postcss@8.4.32: resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} engines: {node: ^10 || ^12 || >=14} @@ -8807,11 +8695,6 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true - /rc9@2.1.1: resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==} dependencies: @@ -8829,15 +8712,6 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg-up@8.0.0: - resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} - engines: {node: '>=12'} - dependencies: - find-up: 5.0.0 - read-pkg: 6.0.0 - type-fest: 1.4.0 - dev: true - /read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} @@ -8857,16 +8731,6 @@ packages: type-fest: 0.6.0 dev: true - /read-pkg@6.0.0: - resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} - engines: {node: '>=12'} - dependencies: - '@types/normalize-package-data': 2.4.3 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 1.4.0 - dev: true - /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -8890,14 +8754,6 @@ packages: resolve: 1.22.6 dev: true - /redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - dependencies: - indent-string: 5.0.0 - strip-indent: 4.0.0 - dev: true - /regenerate-unicode-properties@10.1.1: resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} @@ -9608,13 +9464,6 @@ packages: min-indent: 1.0.1 dev: true - /strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - dependencies: - min-indent: 1.0.1 - dev: true - /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -9630,7 +9479,7 @@ packages: resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} dev: true - /stylelint-config-html@1.1.0(postcss-html@1.5.0)(stylelint@15.11.0): + /stylelint-config-html@1.1.0(postcss-html@1.5.0)(stylelint@16.0.2): resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} engines: {node: ^12 || >=14} peerDependencies: @@ -9638,26 +9487,36 @@ packages: stylelint: '>=14.0.0' dependencies: postcss-html: 1.5.0 - stylelint: 15.11.0(typescript@5.3.3) + stylelint: 16.0.2(typescript@5.3.3) dev: true - /stylelint-config-recommended-scss@13.1.0(postcss@8.4.32)(stylelint@15.11.0): - resolution: {integrity: sha512-8L5nDfd+YH6AOoBGKmhH8pLWF1dpfY816JtGMePcBqqSsLU+Ysawx44fQSlMOJ2xTfI9yTGpup5JU77c17w1Ww==} + /stylelint-config-recess-order@4.4.0(stylelint@16.0.2): + resolution: {integrity: sha512-Q99kvZyIM/aoPEV4dRDkzD3fZLzH0LXi+pawCf1r700uUeF/PHQ5PZXjwFUuGrWhOzd1N+cuVm+OUGsY2fRN5A==} + peerDependencies: + stylelint: '>=15' + dependencies: + stylelint: 16.0.2(typescript@5.3.3) + stylelint-order: 6.0.4(stylelint@16.0.2) + dev: true + + /stylelint-config-recommended-scss@14.0.0(postcss@8.4.32)(stylelint@16.0.2): + resolution: {integrity: sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw==} + engines: {node: '>=18.12.0'} peerDependencies: postcss: ^8.3.3 - stylelint: ^15.10.0 + stylelint: ^16.0.2 peerDependenciesMeta: postcss: optional: true dependencies: postcss: 8.4.32 postcss-scss: 4.0.9(postcss@8.4.32) - stylelint: 15.11.0(typescript@5.3.3) - stylelint-config-recommended: 13.0.0(stylelint@15.11.0) - stylelint-scss: 5.3.1(stylelint@15.11.0) + stylelint: 16.0.2(typescript@5.3.3) + stylelint-config-recommended: 14.0.0(stylelint@16.0.2) + stylelint-scss: 6.0.0(stylelint@16.0.2) dev: true - /stylelint-config-recommended-vue@1.4.0(postcss-html@1.5.0)(stylelint@15.11.0): + /stylelint-config-recommended-vue@1.4.0(postcss-html@1.5.0)(stylelint@16.0.2): resolution: {integrity: sha512-DVJqyX2KvMCn9U0+keL12r7xlsH26K4Vg8NrIZuq5MoF7g82DpMp326Om4E0Q+Il1o+bTHuUyejf2XAI0iD04Q==} engines: {node: ^12 || >=14} peerDependencies: @@ -9666,36 +9525,46 @@ packages: dependencies: postcss-html: 1.5.0 semver: 7.5.4 - stylelint: 15.11.0(typescript@5.3.3) - stylelint-config-html: 1.1.0(postcss-html@1.5.0)(stylelint@15.11.0) - stylelint-config-recommended: 13.0.0(stylelint@15.11.0) + stylelint: 16.0.2(typescript@5.3.3) + stylelint-config-html: 1.1.0(postcss-html@1.5.0)(stylelint@16.0.2) + stylelint-config-recommended: 13.0.0(stylelint@16.0.2) dev: true - /stylelint-config-recommended@13.0.0(stylelint@15.11.0): + /stylelint-config-recommended@13.0.0(stylelint@16.0.2): resolution: {integrity: sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==} engines: {node: ^14.13.1 || >=16.0.0} peerDependencies: stylelint: ^15.10.0 dependencies: - stylelint: 15.11.0(typescript@5.3.3) + stylelint: 16.0.2(typescript@5.3.3) dev: true - /stylelint-config-standard-scss@11.1.0(postcss@8.4.32)(stylelint@15.11.0): - resolution: {integrity: sha512-5gnBgeNTgRVdchMwiFQPuBOtj9QefYtfXiddrOMJA2pI22zxt6ddI2s+e5Oh7/6QYl7QLJujGnaUR5YyGq72ow==} + /stylelint-config-recommended@14.0.0(stylelint@16.0.2): + resolution: {integrity: sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.0 + dependencies: + stylelint: 16.0.2(typescript@5.3.3) + dev: true + + /stylelint-config-standard-scss@12.0.0(postcss@8.4.32)(stylelint@16.0.2): + resolution: {integrity: sha512-ATh3EcEOLZq0iwlFaBdIsSavrla0lNtJ7mO7hdE7DgVT6imozRggFSqd4cFcjzVnOLKv/uJT63MmqA1acIflbw==} + engines: {node: '>=18.12.0'} peerDependencies: postcss: ^8.3.3 - stylelint: ^15.10.0 + stylelint: ^16.0.2 peerDependenciesMeta: postcss: optional: true dependencies: postcss: 8.4.32 - stylelint: 15.11.0(typescript@5.3.3) - stylelint-config-recommended-scss: 13.1.0(postcss@8.4.32)(stylelint@15.11.0) - stylelint-config-standard: 34.0.0(stylelint@15.11.0) + stylelint: 16.0.2(typescript@5.3.3) + stylelint-config-recommended-scss: 14.0.0(postcss@8.4.32)(stylelint@16.0.2) + stylelint-config-standard: 35.0.0(stylelint@16.0.2) dev: true - /stylelint-config-standard-vue@1.0.0(postcss-html@1.5.0)(stylelint@15.11.0): + /stylelint-config-standard-vue@1.0.0(postcss-html@1.5.0)(stylelint@16.0.2): resolution: {integrity: sha512-wAzU7p6DSlo04pWfCbOcaMq09Nojt0FEsbdxhCBTdC7IguD9ZVl7FP/bvyA0HAHjZGC4JkW7m6WiQaoVMDSuFw==} engines: {node: ^12 || >=14} peerDependencies: @@ -9703,89 +9572,95 @@ packages: stylelint: '>=14.0.0' dependencies: postcss-html: 1.5.0 - stylelint: 15.11.0(typescript@5.3.3) - stylelint-config-html: 1.1.0(postcss-html@1.5.0)(stylelint@15.11.0) - stylelint-config-recommended-vue: 1.4.0(postcss-html@1.5.0)(stylelint@15.11.0) - stylelint-config-standard: 34.0.0(stylelint@15.11.0) + stylelint: 16.0.2(typescript@5.3.3) + stylelint-config-html: 1.1.0(postcss-html@1.5.0)(stylelint@16.0.2) + stylelint-config-recommended-vue: 1.4.0(postcss-html@1.5.0)(stylelint@16.0.2) + stylelint-config-standard: 34.0.0(stylelint@16.0.2) dev: true - /stylelint-config-standard@34.0.0(stylelint@15.11.0): + /stylelint-config-standard@34.0.0(stylelint@16.0.2): resolution: {integrity: sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==} engines: {node: ^14.13.1 || >=16.0.0} peerDependencies: stylelint: ^15.10.0 dependencies: - stylelint: 15.11.0(typescript@5.3.3) - stylelint-config-recommended: 13.0.0(stylelint@15.11.0) + stylelint: 16.0.2(typescript@5.3.3) + stylelint-config-recommended: 13.0.0(stylelint@16.0.2) dev: true - /stylelint-scss@5.3.1(stylelint@15.11.0): - resolution: {integrity: sha512-5I9ZDIm77BZrjOccma5WyW2nJEKjXDd4Ca8Kk+oBapSO4pewSlno3n+OyimcyVJJujQZkBN2D+xuMkIamSc6hA==} + /stylelint-config-standard@35.0.0(stylelint@16.0.2): + resolution: {integrity: sha512-JyQrNZk2BZwVKFauGGxW2U6RuhIfQ4XoHHo+rBzMHcAkLnwI/knpszwXjzxiMgSfcxbZBckM7Vq4LHoANTR85g==} + engines: {node: '>=18.12.0'} peerDependencies: - stylelint: ^14.5.1 || ^15.0.0 + stylelint: ^16.0.0 + dependencies: + stylelint: 16.0.2(typescript@5.3.3) + stylelint-config-recommended: 14.0.0(stylelint@16.0.2) + dev: true + + /stylelint-order@6.0.4(stylelint@16.0.2): + resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} + peerDependencies: + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + dependencies: + postcss: 8.4.32 + postcss-sorting: 8.0.2(postcss@8.4.32) + stylelint: 16.0.2(typescript@5.3.3) + dev: true + + /stylelint-scss@6.0.0(stylelint@16.0.2): + resolution: {integrity: sha512-N1xV/Ef5PNRQQt9E45unzGvBUN1KZxCI8B4FgN/pMfmyRYbZGVN4y9qWlvOMdScU17c8VVCnjIHTVn38Bb6qSA==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.2 dependencies: known-css-properties: 0.29.0 postcss-media-query-parser: 0.2.3 postcss-resolve-nested-selector: 0.1.1 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 - stylelint: 15.11.0(typescript@5.3.3) + stylelint: 16.0.2(typescript@5.3.3) dev: true - /stylelint-stylistic@0.4.3(stylelint@15.11.0): - resolution: {integrity: sha512-WphmneK3MRrm5ixvRPWy7+c9+EQUh0FPvNMXW/N9VD85vyqtpxUejpD+mxubVVht0fRgidcqBxtW3s3tU2Ujhw==} - peerDependencies: - stylelint: ^15.0.0 - dependencies: - is-plain-object: 5.0.0 - postcss: 8.4.26 - postcss-media-query-parser: 0.2.3 - postcss-value-parser: 4.2.0 - style-search: 0.1.0 - stylelint: 15.11.0(typescript@5.3.3) - dev: true - - /stylelint@15.11.0(typescript@5.3.3): - resolution: {integrity: sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==} - engines: {node: ^14.13.1 || >=16.0.0} + /stylelint@16.0.2(typescript@5.3.3): + resolution: {integrity: sha512-SxA/rg3VWxdoHZlW0nmVueWO1E7TAKW4W6mmA3iTxxEF9bIeQdFZu2oiBlQYyNe1pGnOamOqo2XYnI7cs5Bgow==} + engines: {node: '>=18.12.0'} hasBin: true dependencies: - '@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1) - '@csstools/css-tokenizer': 2.2.1 - '@csstools/media-query-list-parser': 2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) - '@csstools/selector-specificity': 3.0.0(postcss-selector-parser@6.0.13) + '@csstools/css-parser-algorithms': 2.4.0(@csstools/css-tokenizer@2.2.2) + '@csstools/css-tokenizer': 2.2.2 + '@csstools/media-query-list-parser': 2.1.6(@csstools/css-parser-algorithms@2.4.0)(@csstools/css-tokenizer@2.2.2) + '@csstools/selector-specificity': 3.0.1(postcss-selector-parser@6.0.13) balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 8.3.6(typescript@5.3.3) + cosmiconfig: 9.0.0(typescript@5.3.3) css-functions-list: 3.2.1 css-tree: 2.3.1 debug: 4.3.4 - fast-glob: 3.3.1 + fast-glob: 3.3.2 fastest-levenshtein: 1.0.16 - file-entry-cache: 7.0.1 + file-entry-cache: 7.0.2 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 5.2.4 - import-lazy: 4.0.0 + ignore: 5.3.0 imurmurhash: 0.1.4 is-plain-object: 5.0.0 known-css-properties: 0.29.0 mathml-tag-names: 2.1.3 - meow: 10.1.5 + meow: 12.1.1 micromatch: 4.0.5 normalize-path: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.31 + postcss: 8.4.32 postcss-resolve-nested-selector: 0.1.1 - postcss-safe-parser: 6.0.0(postcss@8.4.31) + postcss-safe-parser: 7.0.0(postcss@8.4.32) postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 - strip-ansi: 6.0.1 - style-search: 0.1.0 + strip-ansi: 7.1.0 supports-hyperlinks: 3.0.0 svg-tags: 1.0.0 table: 6.8.1 @@ -10006,11 +9881,6 @@ packages: resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==} dev: true - /trim-newlines@4.1.1: - resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} - engines: {node: '>=12'} - dev: true - /ts-api-utils@1.0.3(typescript@5.3.3): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} @@ -10068,11 +9938,6 @@ packages: engines: {node: '>=8'} dev: true - /type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - dev: true - /type-fest@3.13.1: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} @@ -10625,14 +10490,14 @@ packages: he: 1.2.0 dev: true - /vue-tsc@1.8.25(typescript@5.3.3): - resolution: {integrity: sha512-lHsRhDc/Y7LINvYhZ3pv4elflFADoEOo67vfClAfF2heVHpHmVquLSjojgCSIwzA4F0Pc4vowT/psXCYcfk+iQ==} + /vue-tsc@1.8.26(typescript@5.3.3): + resolution: {integrity: sha512-jMEJ4aqU/l1hdgmeExH5h1TFoN+hbho0A2ZAhHy53/947DGm7Qj/bpB85VpECOCwV00h7JYNVnvoD2ceOorB4Q==} hasBin: true peerDependencies: typescript: '*' dependencies: '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.25(typescript@5.3.3) + '@vue/language-core': 1.8.26(typescript@5.3.3) semver: 7.5.4 typescript: 5.3.3 dev: true @@ -10806,11 +10671,6 @@ packages: engines: {node: '>= 14'} dev: true - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: true - /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} diff --git a/public/browser_upgrade/index.css b/public/browser_upgrade/index.css index c1c7026..576e442 100755 --- a/public/browser_upgrade/index.css +++ b/public/browser_upgrade/index.css @@ -1,20 +1,20 @@ #browser-upgrade { position: absolute; - z-index: 10001; top: 0; left: 0; - height: 100%; - width: 100%; + z-index: 10001; display: none; - user-select: none; + width: 100%; + height: 100%; color: #736477; + user-select: none; background-color: snow; } #browser-upgrade .title { margin: 40px 0; - text-align: center; font-size: 24px; + text-align: center; } #browser-upgrade .browsers { @@ -24,8 +24,8 @@ #browser-upgrade .browsers .browser { display: inline-block; margin: 0 20px; - cursor: pointer; text-decoration: none; + cursor: pointer; } #browser-upgrade .browsers .browser .browser-icon { @@ -37,10 +37,10 @@ } #browser-upgrade .browsers .browser .browser-name { - text-align: center; - margin-top: 10px; padding-bottom: 2px; + margin-top: 10px; color: #736477; + text-align: center; border-bottom: 1px solid transparent; } diff --git a/public/loading.css b/public/loading.css index 1fe770c..f9a8a12 100755 --- a/public/loading.css +++ b/public/loading.css @@ -4,43 +4,43 @@ .fantastic-admin-home { position: absolute; - z-index: 10000; top: 0; left: 0; - height: 100%; - width: 100%; + z-index: 10000; display: flex; + flex-direction: column; align-items: center; justify-content: center; - flex-direction: column; - user-select: none; + width: 100%; + height: 100%; color: #736477; + user-select: none; background-color: snow; } .fantastic-admin-home .loading { - height: 40px; - width: 40px; display: flex; + flex-wrap: wrap; align-items: center; justify-content: center; - flex-wrap: wrap; + width: 40px; + height: 40px; } .fantastic-admin-home .loading .square { display: flex; align-items: center; justify-content: center; - height: 20px; width: 20px; + height: 20px; } .fantastic-admin-home .loading .square::before { - content: ""; width: 10px; height: 10px; - border-radius: 15%; + content: ""; border: 3px solid #8c858f; + border-radius: 15%; animation: square-to-dot-animation 2s linear infinite; } @@ -63,30 +63,30 @@ @keyframes square-to-dot-animation { 15%, 25% { - border-radius: 100%; width: 0; height: 0; margin: 5px; border-width: 5px; + border-radius: 100%; } 40% { - border-radius: 15%; width: 10px; height: 10px; margin: initial; border-width: 3px; + border-radius: 15%; } } .fantastic-admin-home .text { position: relative; - font-size: 24px; margin-top: 20px; + font-size: 24px; } .fantastic-admin-home .text::after { - content: "…"; position: absolute; padding-left: 5px; + content: "…"; } diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss index acc186e..9523d07 100755 --- a/src/assets/styles/globals.scss +++ b/src/assets/styles/globals.scss @@ -17,8 +17,8 @@ :root { &::view-transition-old(root), &::view-transition-new(root) { - animation: none; mix-blend-mode: normal; + animation: none; } &::view-transition-old(root) { @@ -70,10 +70,10 @@ body { } body { - margin: 0; - background-color: var(--g-container-bg); box-sizing: border-box; + margin: 0; font-family: Lato, "PingFang SC", "Microsoft YaHei", sans-serif; + background-color: var(--g-container-bg); -webkit-tap-highlight-color: transparent; &.overflow-hidden { @@ -88,8 +88,8 @@ body { // 右侧内容区针对fixed元素,有横向铺满的需求,可在fixed元素上设置 [data-fixed-calc-width] [data-fixed-calc-width] { position: fixed; - left: 50%; right: 0; + left: 50%; width: calc(100% - var(--g-main-sidebar-actual-width) - var(--g-sub-sidebar-actual-width)); transform: translateX(-50%) translateX(calc(var(--g-main-sidebar-actual-width) / 2)) translateX(calc(var(--g-sub-sidebar-actual-width) / 2)); } diff --git a/src/assets/styles/nprogress.scss b/src/assets/styles/nprogress.scss index a63e3cf..c5ab78e 100755 --- a/src/assets/styles/nprogress.scss +++ b/src/assets/styles/nprogress.scss @@ -3,48 +3,48 @@ .bar { position: fixed; - z-index: 1031; top: 0; left: 0; + z-index: 1031; width: 100%; height: 2px; background: rgb(var(--ui-primary)); } .peg { - display: block; position: absolute; right: 0; + display: block; width: 100px; height: 100%; + box-shadow: 0 0 10px rgb(var(--ui-primary)), 0 0 5px rgb(var(--ui-primary)); opacity: 1; transform: rotate(3deg) translate(0, -4px); - box-shadow: 0 0 10px rgb(var(--ui-primary)), 0 0 5px rgb(var(--ui-primary)); } .spinner { - display: block; position: fixed; - z-index: 1031; top: 11px; right: 14px; + z-index: 1031; + display: block; .spinner-icon { + box-sizing: border-box; width: 18px; height: 18px; - box-sizing: border-box; border: solid 2px transparent; - border-radius: 50%; border-top-color: rgb(var(--ui-primary)); border-left-color: rgb(var(--ui-primary)); + border-radius: 50%; animation: nprogress-spinner 400ms linear infinite; } } } .nprogress-custom-parent { - overflow: hidden; position: relative; + overflow: hidden; #nprogress .spinner, #nprogress .bar { diff --git a/src/assets/styles/resources/utils.scss b/src/assets/styles/resources/utils.scss index 270747c..e1ae9af 100755 --- a/src/assets/styles/resources/utils.scss +++ b/src/assets/styles/resources/utils.scss @@ -28,8 +28,8 @@ } @if $type == xy { - left: 50%; top: 50%; + left: 50%; transform: translateX(-50%) translateY(-50%); } } @@ -46,8 +46,8 @@ &::before, &::after { - content: ""; display: block; clear: both; + content: ""; } } diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue index 083f2a5..b61e5be 100755 --- a/src/components/ImagePreview/index.vue +++ b/src/components/ImagePreview/index.vue @@ -36,14 +36,14 @@ const realHeight = computed(() => { diff --git a/src/components/ImageUpload/index.vue b/src/components/ImageUpload/index.vue index 9df0a1c..2d39816 100755 --- a/src/components/ImageUpload/index.vue +++ b/src/components/ImageUpload/index.vue @@ -146,33 +146,33 @@ const onSuccess: UploadProps['onSuccess'] = (res) => { .image { position: relative; - border-radius: 6px; overflow: hidden; + border-radius: 6px; .mask { - opacity: 0; position: absolute; top: 0; width: 100%; height: 100%; background-color: var(--el-overlay-color-lighter); + opacity: 0; transition: opacity 0.3s; .actions { - width: 100px; - height: 100px; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; + width: 100px; + height: 100px; @include position-center(xy); span { width: 50%; + color: var(--el-color-white); text-align: center; cursor: pointer; - color: var(--el-color-white); transition: color 0.1s, transform 0.1s; &:hover { @@ -207,8 +207,8 @@ const onSuccess: UploadProps['onSuccess'] = (res) => { .image-slot { display: flex; - justify-content: center; align-items: center; + justify-content: center; width: 100%; height: 100%; color: var(--el-text-color-placeholder); @@ -224,12 +224,12 @@ const onSuccess: UploadProps['onSuccess'] = (res) => { top: 0; &::after { - content: ""; position: absolute; + top: 0; + left: 0; width: 100%; height: 100%; - left: 0; - top: 0; + content: ""; background-color: var(--el-overlay-color-lighter); } diff --git a/src/components/ImagesUpload/index.vue b/src/components/ImagesUpload/index.vue index af45266..1260a9d 100755 --- a/src/components/ImagesUpload/index.vue +++ b/src/components/ImagesUpload/index.vue @@ -169,34 +169,34 @@ const onSuccess: UploadProps['onSuccess'] = (res) => { position: relative; display: inline-block; margin-right: 10px; + overflow: hidden; border: 1px dashed var(--el-border-color); border-radius: 6px; - overflow: hidden; .mask { - opacity: 0; position: absolute; top: 0; width: 100%; height: 100%; background-color: var(--el-overlay-color-lighter); + opacity: 0; transition: opacity 0.3s; .actions { - width: 100px; - height: 100px; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; + width: 100px; + height: 100px; @include position-center(xy); span { width: 50%; + color: var(--el-color-white); text-align: center; cursor: pointer; - color: var(--el-color-white); transition: color 0.1s, transform 0.1s; &.disabled { @@ -236,8 +236,8 @@ const onSuccess: UploadProps['onSuccess'] = (res) => { .image-slot { display: flex; - justify-content: center; align-items: center; + justify-content: center; width: 100%; height: 100%; color: var(--el-text-color-placeholder); @@ -253,12 +253,12 @@ const onSuccess: UploadProps['onSuccess'] = (res) => { top: 0; &::after { - content: ""; position: absolute; + top: 0; + left: 0; width: 100%; height: 100%; - left: 0; - top: 0; + content: ""; background-color: var(--el-overlay-color-lighter); } diff --git a/src/layouts/components/Header/index.vue b/src/layouts/components/Header/index.vue index 74bd52c..f0d8bb5 100755 --- a/src/layouts/components/Header/index.vue +++ b/src/layouts/components/Header/index.vue @@ -64,32 +64,32 @@ function handlerMouserScroll(event: WheelEvent) { diff --git a/src/layouts/index.vue b/src/layouts/index.vue index e10b1ce..b90ee02 100755 --- a/src/layouts/index.vue +++ b/src/layouts/index.vue @@ -152,9 +152,9 @@ const enableAppSetting = import.meta.env.VITE_APP_SETTING === 'true' .sidebar-container { position: fixed; - z-index: 1010; top: 0; bottom: 0; + z-index: 1010; display: flex; width: calc(var(--g-main-sidebar-actual-width) + var(--g-sub-sidebar-actual-width)); box-shadow: -1px 0 0 0 var(--g-border-color), 1px 0 0 0 var(--g-border-color); @@ -163,21 +163,21 @@ const enableAppSetting = import.meta.env.VITE_APP_SETTING === 'true' .sidebar-mask { position: fixed; - z-index: 1000; top: 0; left: 0; + z-index: 1000; width: 100%; height: 100%; + visibility: hidden; background-image: radial-gradient(transparent 1px, rgb(0 0 0 / 30%) 1px); background-size: 4px 4px; backdrop-filter: saturate(50%) blur(4px); - transition: all 0.2s; opacity: 0; - visibility: hidden; + transition: all 0.2s; &.show { - opacity: 1; visibility: visible; + opacity: 1; } } @@ -195,9 +195,9 @@ const enableAppSetting = import.meta.env.VITE_APP_SETTING === 'true' transition: margin-left 0.3s, background-color 0.3s, box-shadow 0.3s; .main { - height: 100%; - flex: auto; position: relative; + flex: auto; + height: 100%; overflow: hidden; transition: 0.3s; } @@ -234,18 +234,18 @@ header:not(.header-leave-active) + .wrapper { --at-apply: text-white dark:text-dark bg-ui-primary; position: fixed; - z-index: 10; - right: 0; top: calc(50% + 250px); + right: 0; + z-index: 10; display: flex; align-items: center; justify-content: center; width: 50px; height: 50px; - border-top-left-radius: 5px; - border-bottom-left-radius: 5px; font-size: 24px; cursor: pointer; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; .icon { animation: rotate 5s linear infinite; @@ -272,12 +272,12 @@ header:not(.header-leave-active) + .wrapper { } .slide-right-enter-from { - opacity: 0; margin-left: -20px; + opacity: 0; } .slide-right-leave-to { - opacity: 0; margin-left: 20px; + opacity: 0; } diff --git a/src/views/index.vue b/src/views/index.vue index 45d9303..49bba75 100755 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -141,7 +141,7 @@ function open(url: string) { - + @@ -168,7 +168,7 @@ function open(url: string) { - + diff --git a/src/views/login.vue b/src/views/login.vue index 7ba2ecc..e1717f5 100755 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -306,15 +306,15 @@ function testAccount(account: string) { [data-mode="mobile"] { #login-box { position: relative; - width: 100%; - height: 100%; top: inherit; left: inherit; - transform: translateX(0) translateY(0); flex-direction: column; justify-content: start; + width: 100%; + height: 100%; border-radius: 0; box-shadow: none; + transform: translateX(0) translateY(0); .login-banner { width: 100%; @@ -322,12 +322,12 @@ function testAccount(account: string) { .banner { position: relative; + top: inherit; right: inherit; + display: inherit; width: 100%; max-width: 375px; margin: 0 auto; - display: inherit; - top: inherit; transform: translateY(0); } } @@ -357,22 +357,22 @@ function testAccount(account: string) { } #login-box { - display: flex; - justify-content: space-between; position: absolute; top: 50%; left: 50%; - transform: translateX(-50%) translateY(-50%); + display: flex; + justify-content: space-between; + overflow: hidden; background-color: var(--g-container-bg); border-radius: 10px; - overflow: hidden; box-shadow: var(--el-box-shadow); + transform: translateX(-50%) translateY(-50%); .login-banner { position: relative; width: 450px; - background-color: var(--g-bg); overflow: hidden; + background-color: var(--g-bg); .banner { width: 100%; @@ -394,8 +394,8 @@ function testAccount(account: string) { display: flex; flex-direction: column; justify-content: center; - min-height: 500px; width: 500px; + min-height: 500px; padding: 50px; overflow: hidden; @@ -403,10 +403,10 @@ function testAccount(account: string) { position: relative; .title { - font-size: 1.3em; - color: var(--el-text-color-primary); margin: 0 auto 30px; + font-size: 1.3em; font-weight: bold; + color: var(--el-text-color-primary); } } } @@ -415,9 +415,9 @@ function testAccount(account: string) { margin-bottom: 24px; :deep(.el-input) { + width: 100%; height: 48px; line-height: inherit; - width: 100%; input { height: 48px; @@ -467,8 +467,8 @@ function testAccount(account: string) { .copyright { position: absolute; bottom: 0; + width: 100%; padding: 20px; margin: 0; - width: 100%; } diff --git a/stylelint.config.js b/stylelint.config.js new file mode 100644 index 0000000..974239e --- /dev/null +++ b/stylelint.config.js @@ -0,0 +1,117 @@ +export default { + extends: [ + 'stylelint-config-standard-scss', + 'stylelint-config-standard-vue/scss', + 'stylelint-config-recess-order', + ], + plugins: [ + 'stylelint-scss', + '@stylistic/stylelint-plugin', + ], + rules: { + 'at-rule-no-unknown': null, + 'no-descending-specificity': null, + 'property-no-unknown': null, + 'font-family-no-missing-generic-family-keyword': null, + 'selector-class-pattern': null, + 'function-no-unknown': [ + true, + { + ignoreFunctions: [ + 'v-bind', + 'map-get', + 'lighten', + 'darken', + ], + }, + ], + 'selector-pseudo-element-no-unknown': [ + true, + { + ignorePseudoElements: [ + '/^view-transition/', + ], + }, + ], + 'scss/double-slash-comment-empty-line-before': null, + 'scss/no-global-function-names': null, + // 提取自 https://github.com/elirasza/stylelint-stylistic/blob/main/config/index.js + '@stylistic/at-rule-name-case': 'lower', + '@stylistic/at-rule-name-space-after': 'always-single-line', + '@stylistic/at-rule-semicolon-newline-after': 'always', + '@stylistic/block-closing-brace-empty-line-before': 'never', + '@stylistic/block-closing-brace-newline-after': 'always', + '@stylistic/block-closing-brace-newline-before': 'always-multi-line', + '@stylistic/block-closing-brace-space-before': 'always-single-line', + '@stylistic/block-opening-brace-newline-after': 'always-multi-line', + '@stylistic/block-opening-brace-space-after': 'always-single-line', + '@stylistic/block-opening-brace-space-before': 'always', + '@stylistic/color-hex-case': 'lower', + '@stylistic/declaration-bang-space-after': 'never', + '@stylistic/declaration-bang-space-before': 'always', + '@stylistic/declaration-block-semicolon-newline-after': 'always-multi-line', + '@stylistic/declaration-block-semicolon-space-after': 'always-single-line', + '@stylistic/declaration-block-semicolon-space-before': 'never', + '@stylistic/declaration-block-trailing-semicolon': 'always', + '@stylistic/declaration-colon-newline-after': 'always-multi-line', + '@stylistic/declaration-colon-space-after': 'always-single-line', + '@stylistic/declaration-colon-space-before': 'never', + '@stylistic/function-comma-newline-after': 'always-multi-line', + '@stylistic/function-comma-space-after': 'always-single-line', + '@stylistic/function-comma-space-before': 'never', + '@stylistic/function-max-empty-lines': 0, + '@stylistic/function-parentheses-newline-inside': 'always-multi-line', + '@stylistic/function-parentheses-space-inside': 'never-single-line', + '@stylistic/function-whitespace-after': 'always', + '@stylistic/indentation': 2, + '@stylistic/max-empty-lines': 1, + '@stylistic/max-line-length': 120, + '@stylistic/media-feature-colon-space-after': 'always', + '@stylistic/media-feature-colon-space-before': 'never', + '@stylistic/media-feature-name-case': 'lower', + '@stylistic/media-feature-parentheses-space-inside': 'never', + '@stylistic/media-feature-range-operator-space-after': 'always', + '@stylistic/media-feature-range-operator-space-before': 'always', + '@stylistic/media-query-list-comma-newline-after': 'always-multi-line', + '@stylistic/media-query-list-comma-space-after': 'always-single-line', + '@stylistic/media-query-list-comma-space-before': 'never', + '@stylistic/no-empty-first-line': true, + '@stylistic/no-eol-whitespace': true, + '@stylistic/no-extra-semicolons': true, + '@stylistic/no-missing-end-of-source-newline': true, + '@stylistic/number-leading-zero': 'always', + '@stylistic/number-no-trailing-zeros': true, + '@stylistic/property-case': 'lower', + '@stylistic/selector-attribute-brackets-space-inside': 'never', + '@stylistic/selector-attribute-operator-space-after': 'never', + '@stylistic/selector-attribute-operator-space-before': 'never', + '@stylistic/selector-combinator-space-after': 'always', + '@stylistic/selector-combinator-space-before': 'always', + '@stylistic/selector-descendant-combinator-no-non-space': true, + '@stylistic/selector-list-comma-newline-after': 'always', + '@stylistic/selector-list-comma-space-before': 'never', + '@stylistic/selector-max-empty-lines': 0, + '@stylistic/selector-pseudo-class-case': 'lower', + '@stylistic/selector-pseudo-class-parentheses-space-inside': 'never', + '@stylistic/selector-pseudo-element-case': 'lower', + '@stylistic/string-quotes': 'double', + '@stylistic/unit-case': 'lower', + '@stylistic/value-list-comma-newline-after': 'always-multi-line', + '@stylistic/value-list-comma-space-after': 'always-single-line', + '@stylistic/value-list-comma-space-before': 'never', + '@stylistic/value-list-max-empty-lines': 0, + // 根据需要覆盖部分规则 + '@stylistic/max-line-length': null, + '@stylistic/block-closing-brace-newline-after': [ + 'always', + { + ignoreAtRules: ['if', 'else'], + }, + ], + }, + allowEmptyInput: true, + ignoreFiles: [ + 'node_modules/**/*', + 'dist*/**/*', + ], +}