diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..f3285368 --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +strict-peer-dependencies=false +shamefully-hoist=true +shell-emulator=true diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 00000000..2e90e84a --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,7 @@ +node_modules + +.cache +.temp + +lib +dist diff --git a/.vscode/settings.json b/.vscode/settings.json index 43e6ae96..acbf31ef 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,8 +10,10 @@ }, "css.validate": false, "scss.validate": false, + "less.validate": false, "typescript.tsdk": "node_modules/typescript/lib", "eslint.experimental.useFlatConfig": true, + "stylelint.packageManager": "pnpm", "eslint.rules.customizations": [ { "rule": "style/*", "severity": "off" }, { "rule": "*-indent", "severity": "off" }, @@ -27,6 +29,7 @@ "source.fixAll": "explicit", "source.fixAll.eslint": "explicit", "source.organizeImports": "never" + // "source.fixAll.stylelint": "explicit" }, "editor.formatOnPaste": true, "eslint.validate": [ @@ -41,6 +44,12 @@ "jsonc", "yaml" ], + "stylelint.validate": [ + "css", + "scss", + "postcss", + "vue" + ], "cSpell.words": [ "bumpp", "caniuse", diff --git a/docs/.vuepress/theme.ts b/docs/.vuepress/theme.ts index 2ffb6d21..625a7243 100644 --- a/docs/.vuepress/theme.ts +++ b/docs/.vuepress/theme.ts @@ -30,6 +30,6 @@ export const theme = themePlume({ // apiKey: '111', // appId: '111', // indexName: '1234', - // }, + // } }, }) diff --git a/docs/2.preview/主题效果预览.md b/docs/2.preview/主题效果预览.md index 553b9d5c..8d1300da 100644 --- a/docs/2.preview/主题效果预览.md +++ b/docs/2.preview/主题效果预览.md @@ -86,9 +86,8 @@ H~2~O [外部链接](https://github.com/pengzhanbo) -![image](/images/1px-lines.png) +![](/images/1px-lines.png) -![image](/images/1px-lines.png) **Badge** @@ -220,6 +219,25 @@ const c = a + b ``` ::: +**GFM alert** + +> [!note] +> note + +> [!info] +> info + +> [!tip] +> tip + +> [!warning] +> warning + +> [!caution] +> caution + +> [!important] +> important **代码演示** @@ -243,3 +261,39 @@ span { ``` ::: + +**选项卡** + +::: tabs +@tab 标题1 +内容区块 + +@tab 标题2 +内容区块 +::: + +:::: warning +::: tabs +@tab 标题1 +内容区块 + +@tab 标题2 +内容区块 +::: +:::: + +**脚注** + +脚注 1 链接[^first]。 + +脚注 2 链接[^second]。 + +行内的脚注^[行内脚注文本] 定义。 + +重复的页脚定义[^second]。 + +[^first]: 脚注 **可以包含特殊标记** + + 也可以由多个段落组成 + +[^second]: 脚注文字。 diff --git a/eslint.config.js b/eslint.config.js index 366d7743..29c01be0 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,9 +1,6 @@ import config from '@pengzhanbo/eslint-config-vue' export default config({ - formatters: { - css: true, - }, ignores: ['lib', 'docs/**/*.md'], globals: { __VUEPRESS_VERSION__: 'readonly', diff --git a/package.json b/package.json index 19633e29..3982cb43 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "1.0.0-rc.15", "private": true, "packageManager": "pnpm@8.14.0", - "author": "pengzhanbo", + "author": "pengzhanbo (https://github.com/pengzhanbo/)", "license": "MIT", "keywords": [ "vuepress", @@ -20,7 +20,6 @@ "scripts": { "build": "pnpm run build:package", "build:package": "pnpm --filter=!vuepress-theme-plume-monorepo --filter=!docs --filter=!plugin-page-collection run -r --stream build", - "commit": "cz", "dev": "concurrently \"pnpm run dev:package\" \"pnpm run docs\"", "dev:package": "pnpm --filter=!vuepress-theme-plume-monorepo --filter=!docs --parallel dev", "dev:theme": "concurrently \"pnpm --filter=vuepress-theme-plume dev\" \"pnpm run docs\"", @@ -28,12 +27,13 @@ "docs:build": "pnpm --filter=docs docs:build", "docs:clean": "pnpm --filter=docs docs:clean", "docs:serve": "pnpm --filter=docs docs:serve", + "commit": "cz", "lint": "eslint .", - "pkg": "node scripts/create/index.js", + "lint:css": "stylelint **/*.{css,scss,vue}", "prepare": "husky install", "release": "pnpm release:check && pnpm release:version && pnpm release:publish", "release:changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", - "release:check": "pnpm lint && pnpm build", + "release:check": "pnpm lint && pnpm lint:css && pnpm build", "release:publish": "pnpm -r publish", "release:version": "bumpp package.json plugins/*/package.json theme/package.json --execute=\"pnpm release:changelog\" --commit \"build: publish v%s\" --all --tag --push" }, @@ -41,50 +41,25 @@ "@commitlint/cli": "^18.4.4", "@commitlint/config-conventional": "^18.4.4", "@pengzhanbo/eslint-config-vue": "^1.5.1", - "@types/minimist": "^1.2.5", + "@pengzhanbo/stylelint-config": "^1.5.1", + "@types/lodash.merge": "^4.6.9", "@types/node": "20.9.1", "@types/webpack-env": "^1.18.4", "bumpp": "^9.2.1", - "chalk": "^5.3.0", "commitizen": "^4.3.0", "concurrently": "^8.2.2", "conventional-changelog-cli": "^4.1.0", "cpx2": "^7.0.1", - "cross-env": "^7.0.3", "cz-conventional-changelog": "^3.3.0", "eslint": "^8.56.0", - "eslint-plugin-format": "^0.1.0", - "execa": "^8.0.1", - "handlebars": "^4.7.8", "husky": "^8.0.3", "lint-staged": "^15.2.0", - "minimist": "^1.2.8", - "ora": "^8.0.1", - "pnpm": "^8.14.0", "rimraf": "^5.0.5", - "sort-package-json": "^2.6.0", - "taze": "^0.13.1", + "stylelint": "^16.1.0", "tsconfig-vuepress": "^4.5.0", "typescript": "^5.3.3", "vite": "^5.0.11" }, - "pnpm": { - "peerDependencyRules": { - "ignoreMissing": [ - "@algolia/client-search", - "@types/react", - "eslint-plugin-import", - "eslint-plugin-n", - "eslint-plugin-promise", - "react", - "react-dom", - "webpack", - "cypress", - "postcss", - "jest" - ] - } - }, "lint-staged": { "*": "eslint --fix" }, diff --git a/plugins/plugin-blog-data/src/client/config.ts b/plugins/plugin-blog-data/src/client/config.ts index c1f026b5..53d15727 100644 --- a/plugins/plugin-blog-data/src/client/config.ts +++ b/plugins/plugin-blog-data/src/client/config.ts @@ -8,15 +8,27 @@ export default defineClientConfig({ enhance({ app }) { const blogPostData = useBlogPostData() + Object.defineProperties(app.config.globalProperties, { + $blogPostData: { + get() { + return blogPostData.value + }, + }, + }) + // setup devtools in dev mode if (__VUEPRESS_DEV__ || __VUE_PROD_DEVTOOLS__) { + const PLUGIN_ID = 'org.vuejs.vuepress' + const PLUGIN_LABEL = 'VuePress' + const INSPECTOR_ID = PLUGIN_ID + setupDevtoolsPlugin( { // fix recursive reference app: app as any, - id: 'org.vuepress-plume.plugin-blog-data', - label: 'VuePress Blog Data Plugin', - packageName: '@vuepress/plugin-blog-data', + id: PLUGIN_ID, + label: PLUGIN_LABEL, + packageName: '@vuepress-plume/plugin-blog-data', homepage: 'https://pengzhanbo.cn', logo: 'https://v2.vuepress.vuejs.org/images/hero.png', componentStateTypes: ['VuePress'], @@ -30,6 +42,26 @@ export default defineClientConfig({ value: blogPostData.value, }) }) + api.on.getInspectorTree((payload) => { + if (payload.inspectorId !== INSPECTOR_ID) + return + payload.rootNodes.push({ + id: 'blog_post_data', + label: 'Blog Post Data', + }) + }) + api.on.getInspectorState((payload) => { + if (payload.inspectorId !== INSPECTOR_ID) + return + if (payload.nodeId === 'blog_post_data') { + payload.state = { + BlogPostData: [{ + key: 'blogPostData', + value: blogPostData.value, + }], + } + } + }) }, ) } diff --git a/plugins/plugin-copy-code/src/client/styles/button.scss b/plugins/plugin-copy-code/src/client/styles/button.scss index 8606b9a1..bf2f8fab 100644 --- a/plugins/plugin-copy-code/src/client/styles/button.scss +++ b/plugins/plugin-copy-code/src/client/styles/button.scss @@ -9,11 +9,11 @@ --vp-code-copy-code-hover-border-color: #e2e2e3; --vp-code-copy-code-hover-bg: #fff; --vp-code-copy-code-active-text: rgba(60, 60, 67, 0.78); - --vp-code-copy-copied-text-content: 'Copied'; + --vp-code-copy-copied-text-content: "Copied"; } -html[lang='zh-CN'] { - --vp-code-copy-copied-text-content: '已复制'; +html[lang="zh-CN"] { + --vp-code-copy-copied-text-content: "已复制"; } .dark { @@ -25,71 +25,76 @@ html[lang='zh-CN'] { } .copy-code-button { - /*rtl:ignore*/ - direction: ltr; position: absolute; top: 12px; - /*rtl:ignore*/ + + /* rtl:ignore */ right: 12px; z-index: 3; - border: 1px solid var(--vp-code-copy-code-border-color); - border-radius: 4px; width: 40px; height: 40px; - background-color: var(--vp-code-copy-code-bg); - opacity: 0; cursor: pointer; + background-color: var(--vp-code-copy-code-bg); background-image: var(--vp-icon-copy); + background-repeat: no-repeat; background-position: 50%; background-size: 20px; - background-repeat: no-repeat; + border: 1px solid var(--vp-code-copy-code-border-color); + border-radius: 4px; + opacity: 0; transition: border-color 0.25s, background-color 0.25s, opacity 0.25s; + + /* rtl:ignore */ + direction: ltr; } -[class*='language-']:hover > .copy-code-button, -[class*='language-'] > .copy-code-button:focus, -[class*='language-'] > .copy-code-button.copied { +[class*="language-"]:hover > .copy-code-button, +[class*="language-"] > .copy-code-button:focus, +[class*="language-"] > .copy-code-button.copied { opacity: 1; } -[class*='language-'] > .copy-code-button:hover, -[class*='language-'] > .copy-code-button.copied { - border-color: var(--vp-code-copy-code-hover-border-color); +[class*="language-"] > .copy-code-button:hover, +[class*="language-"] > .copy-code-button.copied { background-color: var(--vp-code-copy-code-hover-bg); + border-color: var(--vp-code-copy-code-hover-border-color); } -[class*='language-'] > .copy-code-button.copied, -[class*='language-'] > .copy-code-button:hover.copied { - /*rtl:ignore*/ - border-radius: 0 4px 4px 0; +[class*="language-"] > .copy-code-button.copied, +[class*="language-"] > .copy-code-button:hover.copied { background-color: var(--vp-code-copy-code-hover-bg); background-image: var(--vp-icon-copied); + + /* rtl:ignore */ + border-radius: 0 4px 4px 0; } -[class*='language-'] > .copy-code-button.copied::before, -[class*='language-'] > .copy-code-button:hover.copied::before { +[class*="language-"] > .copy-code-button.copied::before, +[class*="language-"] > .copy-code-button:hover.copied::before { position: relative; top: -1px; - /*rtl:ignore*/ - transform: translateX(calc(-100% - 1px)); display: flex; - justify-content: center; align-items: center; - border: 1px solid var(--vp-code-copy-code-hover-border-color); - /*rtl:ignore*/ - border-right: 0; - border-radius: 4px 0 0 4px; - padding: 0 10px; + justify-content: center; width: fit-content; height: 40px; - text-align: center; + padding: 0 10px; font-size: 12px; font-weight: 500; color: var(--vp-code-copy-code-active-text); - background-color: var(--vp-code-copy-code-hover-bg); + text-align: center; white-space: nowrap; content: var(--vp-code-copy-copied-text-content); + background-color: var(--vp-code-copy-code-hover-bg); + border: 1px solid var(--vp-code-copy-code-hover-border-color); + + /* rtl:ignore */ + border-right: 0; + border-radius: 4px 0 0 4px; + + /* rtl:ignore */ + transform: translateX(calc(-100% - 1px)); } diff --git a/plugins/plugin-notes-data/src/client/clientConfig.ts b/plugins/plugin-notes-data/src/client/clientConfig.ts index 7bc00bfc..06a45e15 100644 --- a/plugins/plugin-notes-data/src/client/clientConfig.ts +++ b/plugins/plugin-notes-data/src/client/clientConfig.ts @@ -8,15 +8,27 @@ export default defineClientConfig({ enhance({ app }) { const notesData = useNotesData() + Object.defineProperties(app.config.globalProperties, { + $notesData: { + get() { + return notesData.value + }, + }, + }) + // setup devtools in dev mode if (__VUEPRESS_DEV__ || __VUE_PROD_DEVTOOLS__) { + const PLUGIN_ID = 'org.vuejs.vuepress' + const PLUGIN_LABEL = 'VuePress' + const INSPECTOR_ID = PLUGIN_ID + setupDevtoolsPlugin( { // fix recursive reference app: app as any, - id: 'org.vuepress-plume.plugin-notes-data', - label: 'VuePress Notes Data Plugin', - packageName: '@vuepress/plugin-notes-data', + id: PLUGIN_ID, + label: PLUGIN_LABEL, + packageName: '@vuepress-plume/plugin-notes-data', homepage: 'https://pengzhanbo.cn', logo: 'https://v2.vuepress.vuejs.org/images/hero.png', componentStateTypes: ['VuePress'], @@ -30,6 +42,26 @@ export default defineClientConfig({ value: notesData.value, }) }) + api.on.getInspectorTree((payload) => { + if (payload.inspectorId !== INSPECTOR_ID) + return + payload.rootNodes.push({ + id: 'notes_data', + label: 'Notes Data', + }) + }) + api.on.getInspectorState((payload) => { + if (payload.inspectorId !== INSPECTOR_ID) + return + if (payload.nodeId === 'notes_data') { + payload.state = { + NotesData: [{ + key: 'notesData', + value: notesData.value, + }], + } + } + }) }, ) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ab7ae13..2dc3e9e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,10 +16,13 @@ importers: version: 18.4.4 '@pengzhanbo/eslint-config-vue': specifier: ^1.5.1 - version: 1.5.1(@vue/compiler-sfc@3.4.5)(eslint-plugin-format@0.1.0)(eslint@8.56.0)(typescript@5.3.3) - '@types/minimist': - specifier: ^1.2.5 - version: 1.2.5 + version: 1.5.1(@vue/compiler-sfc@3.4.5)(eslint@8.56.0)(typescript@5.3.3) + '@pengzhanbo/stylelint-config': + specifier: ^1.5.1 + version: 1.5.1(stylelint@16.1.0) + '@types/lodash.merge': + specifier: ^4.6.9 + version: 4.6.9 '@types/node': specifier: 20.9.1 version: 20.9.1 @@ -29,9 +32,6 @@ importers: bumpp: specifier: ^9.2.1 version: 9.2.1 - chalk: - specifier: ^5.3.0 - version: 5.3.0 commitizen: specifier: ^4.3.0 version: 4.3.0(@types/node@20.9.1)(typescript@5.3.3) @@ -44,48 +44,24 @@ importers: cpx2: specifier: ^7.0.1 version: 7.0.1 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 cz-conventional-changelog: specifier: ^3.3.0 version: 3.3.0(@types/node@20.9.1)(typescript@5.3.3) eslint: specifier: ^8.56.0 version: 8.56.0 - eslint-plugin-format: - specifier: ^0.1.0 - version: 0.1.0(eslint@8.56.0) - execa: - specifier: ^8.0.1 - version: 8.0.1 - handlebars: - specifier: ^4.7.8 - version: 4.7.8 husky: specifier: ^8.0.3 version: 8.0.3 lint-staged: specifier: ^15.2.0 version: 15.2.0 - minimist: - specifier: ^1.2.8 - version: 1.2.8 - ora: - specifier: ^8.0.1 - version: 8.0.1 - pnpm: - specifier: ^8.14.0 - version: 8.14.0 rimraf: specifier: ^5.0.5 version: 5.0.5 - sort-package-json: - specifier: ^2.6.0 - version: 2.6.0 - taze: - specifier: ^0.13.1 - version: 0.13.1 + stylelint: + specifier: ^16.1.0 + version: 16.1.0(typescript@5.3.3) tsconfig-vuepress: specifier: ^4.5.0 version: 4.5.0 @@ -121,7 +97,7 @@ importers: version: 1.69.7 sass-loader: specifier: ^13.3.3 - version: 13.3.3(sass@1.69.7) + version: 13.3.3(sass@1.69.7)(webpack@5.89.0) vue: specifier: ^3.4.5 version: 3.4.5(typescript@5.3.3) @@ -432,7 +408,7 @@ importers: version: 2.0.0-rc.0(typescript@5.3.3) '@vuepress/plugin-docsearch': specifier: 2.0.0-rc.0 - version: 2.0.0-rc.0(search-insights@2.7.0)(typescript@5.3.3) + version: 2.0.0-rc.0(@algolia/client-search@4.20.0)(search-insights@2.7.0)(typescript@5.3.3) '@vuepress/plugin-external-link-icon': specifier: 2.0.0-rc.0 version: 2.0.0-rc.0(typescript@5.3.3) @@ -499,10 +475,6 @@ importers: vuepress-plugin-sitemap2: specifier: 2.0.0-rc.10 version: 2.0.0-rc.10(typescript@5.3.3) - devDependencies: - '@types/lodash.merge': - specifier: ^4.6.9 - version: 4.6.9 packages: @@ -511,51 +483,47 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@algolia/autocomplete-core@1.9.3(algoliasearch@4.20.0)(search-insights@2.7.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.7.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(algoliasearch@4.20.0)(search-insights@2.7.0) - '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.20.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.7.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(algoliasearch@4.20.0)(search-insights@2.7.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.7.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.20.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) search-insights: 2.7.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.9.3(algoliasearch@4.20.0): + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - peerDependenciesMeta: - '@algolia/client-search': - optional: true dependencies: - '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.20.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/client-search': 4.20.0 algoliasearch: 4.20.0 dev: false - /@algolia/autocomplete-shared@1.9.3(algoliasearch@4.20.0): + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - peerDependenciesMeta: - '@algolia/client-search': - optional: true dependencies: + '@algolia/client-search': 4.20.0 algoliasearch: 4.20.0 dev: false @@ -654,15 +622,6 @@ packages: engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'} dev: true - /@antfu/ni@0.21.12: - resolution: {integrity: sha512-2aDL3WUv8hMJb2L3r/PIQWsTLyq7RQr3v9xD16fiz6O8ys1xEyLhhTOv8gxtZvJiTzjTF5pHoArvRdesGL1DMQ==} - hasBin: true - dev: true - - /@antfu/utils@0.7.6: - resolution: {integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==} - dev: true - /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -942,6 +901,40 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: false + /@csstools/css-parser-algorithms@2.5.0(@csstools/css-tokenizer@2.2.3): + resolution: {integrity: sha512-abypo6m9re3clXA00eu5syw+oaPHbJTPapu9C4pzNsJ4hdZDzushT50Zhu+iIYXgEe1CxnRMn7ngsbV+MLrlpQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-tokenizer': ^2.2.3 + dependencies: + '@csstools/css-tokenizer': 2.2.3 + dev: true + + /@csstools/css-tokenizer@2.2.3: + resolution: {integrity: sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==} + engines: {node: ^14 || ^16 || >=18} + dev: true + + /@csstools/media-query-list-parser@2.1.7(@csstools/css-parser-algorithms@2.5.0)(@csstools/css-tokenizer@2.2.3): + resolution: {integrity: sha512-lHPKJDkPUECsyAvD60joYfDmp8UERYxHGkFfyLJFTVK/ERJe0sVlIFLXU5XFxdjNDTerp5L4KeaKG+Z5S94qxQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.5.0 + '@csstools/css-tokenizer': ^2.2.3 + dependencies: + '@csstools/css-parser-algorithms': 2.5.0(@csstools/css-tokenizer@2.2.3) + '@csstools/css-tokenizer': 2.2.3 + dev: true + + /@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 + dependencies: + postcss-selector-parser: 6.0.13 + dev: true + /@dabh/diagnostics@2.0.3: resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} dependencies: @@ -962,10 +955,10 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/js@3.5.2(search-insights@2.7.0): + /@docsearch/js@3.5.2(@algolia/client-search@4.20.0)(search-insights@2.7.0): resolution: {integrity: sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==} dependencies: - '@docsearch/react': 3.5.2(search-insights@2.7.0) + '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(search-insights@2.7.0) preact: 10.10.0 transitivePeerDependencies: - '@algolia/client-search' @@ -975,7 +968,7 @@ packages: - search-insights dev: false - /@docsearch/react@3.5.2(search-insights@2.7.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(search-insights@2.7.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -992,8 +985,8 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(algoliasearch@4.20.0)(search-insights@2.7.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(algoliasearch@4.20.0) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.7.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 algoliasearch: 4.20.0 search-insights: 2.7.0 @@ -1001,18 +994,6 @@ packages: - '@algolia/client-search' dev: false - /@dprint/formatter@0.2.1: - resolution: {integrity: sha512-GCzgRt2o4mhZLy8L47k2A+q9EMG/jWhzZebE29EqKsxmjDrSfv2VisEj/Q+39OOf04jTkEfB/TRO+IZSyxHdYg==} - dev: true - - /@dprint/markdown@0.16.3: - resolution: {integrity: sha512-KvwUrCdHR1spFk0EcdW33KEGFLfkcdx6hJN8mwipGBw0b40sl5oPtVUTgRiH70eV7VUhPfycDfIsDutWNHb17w==} - dev: true - - /@dprint/toml@0.5.4: - resolution: {integrity: sha512-d+5GwwzztZD0QixmOBhaO6nWVLsAeYsJ1HJYNxDoDRbASFCpza9BBVshG5ctBRXCkkIHhD9BO1SnbOoRQltUQw==} - dev: true - /@es-joy/jsdoccomment@0.41.0: resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} engines: {node: '>=16'} @@ -1907,10 +1888,6 @@ packages: readable-stream: 4.3.0 dev: false - /@gar/promisify@1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - dev: true - /@grpc/grpc-js@1.8.20: resolution: {integrity: sha512-SPse1wE4PcIFojOISsAnrWXCBsCBwDdcDqz2SS0T8nBSxg9jwmCK70Jy7ypRn2nIspwLy3Ls5TNaKNHo+6dF8A==} engines: {node: ^8.13.0 || >=10.10.0} @@ -3052,123 +3029,6 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.14.0 - /@npmcli/agent@2.2.0: - resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - agent-base: 7.1.0 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - lru-cache: 10.0.2 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@npmcli/config@8.0.3: - resolution: {integrity: sha512-rqRX7/UORvm2YRImY67kyfwD9rpi5+KXXb1j/cpTUKRcUqvpJ9/PMMc7Vv57JVqmrFj8siBBFEmXI3Gg7/TonQ==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/map-workspaces': 3.0.3 - ci-info: 4.0.0 - ini: 4.1.0 - nopt: 7.0.0 - proc-log: 3.0.0 - read-package-json-fast: 3.0.2 - semver: 7.5.4 - walk-up-path: 3.0.1 - dev: true - - /@npmcli/fs@2.1.2: - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.5.4 - dev: true - - /@npmcli/fs@3.1.0: - resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - semver: 7.5.4 - dev: true - - /@npmcli/git@5.0.3: - resolution: {integrity: sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/promise-spawn': 7.0.0 - lru-cache: 10.0.2 - npm-pick-manifest: 9.0.0 - proc-log: 3.0.0 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.5.4 - which: 4.0.0 - transitivePeerDependencies: - - bluebird - dev: true - - /@npmcli/installed-package-contents@2.0.2: - resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - npm-bundled: 3.0.0 - npm-normalize-package-bin: 3.0.0 - dev: true - - /@npmcli/map-workspaces@3.0.3: - resolution: {integrity: sha512-HlCvFuTzw4UNoKyZdqiNrln+qMF71QJkxy2dsusV8QQdoa89e2TF4dATCzBxbl4zzRzdDoWWyP5ADVrNAH9cRQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - '@npmcli/name-from-folder': 2.0.0 - glob: 9.3.5 - minimatch: 7.4.6 - read-package-json-fast: 3.0.2 - dev: true - - /@npmcli/move-file@2.0.1: - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This functionality has been moved to @npmcli/fs - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - dev: true - - /@npmcli/name-from-folder@2.0.0: - resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /@npmcli/node-gyp@3.0.0: - resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /@npmcli/promise-spawn@7.0.0: - resolution: {integrity: sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - which: 4.0.0 - dev: true - - /@npmcli/run-script@7.0.1: - resolution: {integrity: sha512-Od/JMrgkjZ8alyBE0IzeqZDiF1jgMez9Gkc/OYrCkHHiXNwM0wc6s7+h+xM7kYDZkS0tAoOLr9VvygyE5+2F7g==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/node-gyp': 3.0.0 - '@npmcli/promise-spawn': 7.0.0 - node-gyp: 9.3.1 - read-package-json-fast: 3.0.2 - which: 4.0.0 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - /@octokit/auth-token@3.0.2: resolution: {integrity: sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==} engines: {node: '>= 14'} @@ -3943,7 +3803,7 @@ packages: '@parcel/watcher-win32-x64': 2.3.0 dev: false - /@pengzhanbo/eslint-config-vue@1.5.1(@vue/compiler-sfc@3.4.5)(eslint-plugin-format@0.1.0)(eslint@8.56.0)(typescript@5.3.3): + /@pengzhanbo/eslint-config-vue@1.5.1(@vue/compiler-sfc@3.4.5)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-4+ERArSMd5ovP0etk1BcH/chIB7Z/JvG/LoBErTn9Xujdj+g9ANyCJA/JNxMRh88DbMmCRp2ho1+4/b82HTipw==} peerDependencies: '@unocss/eslint-plugin': '>=0.50.0' @@ -3955,7 +3815,7 @@ packages: eslint-plugin-tailwindcss: optional: true dependencies: - '@pengzhanbo/eslint-config': 1.5.1(eslint-plugin-format@0.1.0)(eslint@8.56.0)(typescript@5.3.3)(vue-eslint-parser@9.3.2) + '@pengzhanbo/eslint-config': 1.5.1(eslint@8.56.0)(typescript@5.3.3)(vue-eslint-parser@9.3.2) '@typescript-eslint/parser': 6.16.0(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 eslint-merge-processors: 0.1.0(eslint@8.56.0) @@ -3975,7 +3835,7 @@ packages: - vitest dev: true - /@pengzhanbo/eslint-config@1.5.1(eslint-plugin-format@0.1.0)(eslint@8.56.0)(typescript@5.3.3)(vue-eslint-parser@9.3.2): + /@pengzhanbo/eslint-config@1.5.1(eslint@8.56.0)(typescript@5.3.3)(vue-eslint-parser@9.3.2): resolution: {integrity: sha512-tk1emthQHQnlwz76rwUFcmVB6r04QSJs8ekn7CdKSN3TekHjYDTvicfQaOq0n2Inmdj51Ha8Jri6bCU1cZ7oXg==} peerDependencies: '@unocss/eslint-plugin': '>=0.50.0' @@ -4002,7 +3862,6 @@ packages: eslint-merge-processors: 0.1.0(eslint@8.56.0) eslint-plugin-antfu: 2.1.1(eslint@8.56.0) eslint-plugin-eslint-comments: 3.2.0(eslint@8.56.0) - eslint-plugin-format: 0.1.0(eslint@8.56.0) eslint-plugin-i: 2.29.1(@typescript-eslint/parser@6.16.0)(eslint@8.56.0) eslint-plugin-jsdoc: 47.0.2(eslint@8.56.0) eslint-plugin-jsonc: 2.11.2(eslint@8.56.0) @@ -4033,11 +3892,31 @@ packages: - vue-eslint-parser dev: true + /@pengzhanbo/stylelint-config@1.5.1(stylelint@16.1.0): + resolution: {integrity: sha512-35GLEa62KRgsMTBwONWLXhrC7CNbK6pMWXP4DofOnbrus5UYCKLgiJM+8AwFRp4ymMCMuq7yXof0RHA97p3Vtw==} + peerDependencies: + stylelint: '>=16.0.0' + dependencies: + '@pengzhanbo/utils': 1.1.1 + '@stylelint-types/stylelint-codeguide': 1.0.1(stylelint-define-config@1.1.0)(stylelint@16.1.0) + '@stylelint-types/stylelint-order': 6.0.4(stylelint-define-config@1.1.0)(stylelint@16.1.0) + '@stylelint-types/stylelint-scss': 6.0.0(stylelint-define-config@1.1.0)(stylelint@16.1.0) + local-pkg: 0.5.0 + postcss: 8.4.32 + postcss-html: 1.5.0 + stylelint: 16.1.0(typescript@5.3.3) + stylelint-codeguide: 2.0.0(stylelint@16.1.0) + stylelint-config-html: 1.1.0(postcss-html@1.5.0)(stylelint@16.1.0) + stylelint-config-standard: 36.0.0(stylelint@16.1.0) + stylelint-config-standard-scss: 12.0.0(postcss@8.4.32)(stylelint@16.1.0) + stylelint-define-config: 1.1.0(stylelint@16.1.0) + stylelint-order: 6.0.4(stylelint@16.1.0) + dev: true + /@pengzhanbo/utils@1.1.1: resolution: {integrity: sha512-gY4nPqvkOpP7aCzrxVEurkOXe9VGT0OmUBpTj2TNU/Jycvxbs5u2IrUXMgAATauab/qMHS6/EpvAqneo7EYEsw==} dependencies: throttle-debounce: 5.0.0 - dev: false /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -4045,11 +3924,6 @@ packages: requiresBuild: true optional: true - /@pkgr/core@0.1.0: - resolution: {integrity: sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true - /@pnpm/network.ca-file@1.0.2: resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} @@ -4204,39 +4078,6 @@ packages: requiresBuild: true optional: true - /@sigstore/bundle@2.1.0: - resolution: {integrity: sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@sigstore/protobuf-specs': 0.2.1 - dev: true - - /@sigstore/protobuf-specs@0.2.1: - resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /@sigstore/sign@2.1.0: - resolution: {integrity: sha512-4VRpfJxs+8eLqzLVrZngVNExVA/zAhVbi4UT4zmtLi4xRd7vz5qie834OgkrGsLlLB1B2nz/3wUxT1XAUBe8gw==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@sigstore/bundle': 2.1.0 - '@sigstore/protobuf-specs': 0.2.1 - make-fetch-happen: 13.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@sigstore/tuf@2.2.0: - resolution: {integrity: sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@sigstore/protobuf-specs': 0.2.1 - tuf-js: 2.1.0 - transitivePeerDependencies: - - supports-color - dev: true - /@sindresorhus/is@5.3.0: resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==} engines: {node: '>=14.16'} @@ -4263,6 +4104,48 @@ packages: lodash.deburr: 4.1.0 dev: false + /@stylelint-types/stylelint-codeguide@1.0.1(stylelint-define-config@1.1.0)(stylelint@16.1.0): + resolution: {integrity: sha512-4FGOEYOag/DoHxOL+h/96B474pznbMrpUFb1wNYZc/JvbWAf5F09qUD0wgZvLkvw8pO9c53nTLlBtewoRVz/HA==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} + peerDependencies: + stylelint: '>=16.0.0' + stylelint-define-config: '>=1.0.0' + peerDependenciesMeta: + stylelint: + optional: true + dependencies: + stylelint: 16.1.0(typescript@5.3.3) + stylelint-define-config: 1.1.0(stylelint@16.1.0) + dev: true + + /@stylelint-types/stylelint-order@6.0.4(stylelint-define-config@1.1.0)(stylelint@16.1.0): + resolution: {integrity: sha512-KiwDbjvlFYQm9O1onomzZRLaEZjWZusnXvnEDwFGwN4fs2sq7MwbL6VAVt3UtmsAVt0R20xKEGKbxk0ojzdMmA==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} + peerDependencies: + stylelint: '>=16.0.0' + stylelint-define-config: '>=1.0.0' + peerDependenciesMeta: + stylelint: + optional: true + dependencies: + stylelint: 16.1.0(typescript@5.3.3) + stylelint-define-config: 1.1.0(stylelint@16.1.0) + dev: true + + /@stylelint-types/stylelint-scss@6.0.0(stylelint-define-config@1.1.0)(stylelint@16.1.0): + resolution: {integrity: sha512-+QC709BFp8JEvToB5y50+1igT5UU1whhmY6KUqjE9qOKx85W42LithOfoN+jZIGzEx1JjwYXgQJqvazF1ygowg==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} + peerDependencies: + stylelint: '>=16.0.0' + stylelint-define-config: '>=1.0.0' + peerDependenciesMeta: + stylelint: + optional: true + dependencies: + stylelint: 16.1.0(typescript@5.3.3) + stylelint-define-config: 1.1.0(stylelint@16.1.0) + dev: true + /@stylistic/eslint-plugin-js@1.5.1(eslint@8.56.0): resolution: {integrity: sha512-iZF0rF+uOhAmOJYOJx1Yvmm3CZ1uz9n0SRd9dpBYHA3QAvfABUORh9LADWwZCigjHJkp2QbCZelGFJGwGz7Siw==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4340,11 +4223,6 @@ packages: resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} dev: false - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: true - /@trysound/sax@0.2.0: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -4366,19 +4244,6 @@ packages: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: false - /@tufjs/canonical-json@2.0.0: - resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} - engines: {node: ^16.14.0 || >=18.0.0} - dev: true - - /@tufjs/models@2.0.0: - resolution: {integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.3 - dev: true - /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: @@ -5137,12 +5002,12 @@ packages: - typescript dev: false - /@vuepress/plugin-docsearch@2.0.0-rc.0(search-insights@2.7.0)(typescript@5.3.3): + /@vuepress/plugin-docsearch@2.0.0-rc.0(@algolia/client-search@4.20.0)(search-insights@2.7.0)(typescript@5.3.3): resolution: {integrity: sha512-bFbb+RxNyoLVbojv3Fh3UNfMmx9tszdae5ni9nG2xa05giCRwGKT0wFG3Q6n0a9kIQ6V7z3PjCj9x1k4SALPEA==} dependencies: '@docsearch/css': 3.5.2 - '@docsearch/js': 3.5.2(search-insights@2.7.0) - '@docsearch/react': 3.5.2(search-insights@2.7.0) + '@docsearch/js': 3.5.2(@algolia/client-search@4.20.0)(search-insights@2.7.0) + '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(search-insights@2.7.0) '@vuepress/client': 2.0.0-rc.0(typescript@5.3.3) '@vuepress/core': 2.0.0-rc.0(typescript@5.3.3) '@vuepress/shared': 2.0.0-rc.0 @@ -5521,11 +5386,7 @@ packages: /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - /abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true + dev: false /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -5587,6 +5448,7 @@ packages: debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color + dev: false /agent-base@7.1.0: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} @@ -5597,25 +5459,6 @@ packages: - supports-color dev: true - /agentkeepalive@4.2.1: - resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} - engines: {node: '>= 8.0.0'} - dependencies: - debug: 4.3.4(supports-color@9.2.2) - depd: 1.1.2 - humanize-ms: 1.2.1 - transitivePeerDependencies: - - supports-color - dev: true - - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} @@ -5825,6 +5668,7 @@ packages: /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: false /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} @@ -5872,14 +5716,6 @@ packages: readable-stream: 3.6.0 dev: false - /are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.0 - dev: true - /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: false @@ -5970,6 +5806,11 @@ packages: engines: {node: '>=14'} dev: false + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + /async-limiter@1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} dev: false @@ -6018,9 +5859,6 @@ packages: hasBin: true peerDependencies: postcss: ^8.1.0 - peerDependenciesMeta: - postcss: - optional: true dependencies: browserslist: 4.22.1 caniuse-lite: 1.0.30001547 @@ -6065,6 +5903,10 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + dev: true + /balloon-css@1.2.0: resolution: {integrity: sha512-urXwkHgwp6GsXVF+it01485Z2Cj4pnW02ICnM0TemOlkKmCNnDLmyy+ZZiRXBpwldUXO+aRNr7Hdia4CBvXJ5A==} dev: false @@ -6371,50 +6213,6 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - /cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@npmcli/fs': 2.1.2 - '@npmcli/move-file': 2.0.1 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 8.0.3 - infer-owner: 1.0.4 - lru-cache: 7.14.1 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 9.0.1 - tar: 6.2.0 - unique-filename: 2.0.1 - transitivePeerDependencies: - - bluebird - dev: true - - /cacache@18.0.0: - resolution: {integrity: sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/fs': 3.1.0 - fs-minipass: 3.0.2 - glob: 10.3.10 - lru-cache: 10.0.2 - minipass: 7.0.4 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 4.0.0 - ssri: 10.0.4 - tar: 6.2.0 - unique-filename: 3.0.0 - dev: true - /cache-base@1.0.1: resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} engines: {node: '>=0.10.0'} @@ -6656,11 +6454,6 @@ packages: escape-string-regexp: 1.0.5 dev: true - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true - /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} @@ -6698,6 +6491,7 @@ packages: engines: {node: '>=4'} dependencies: string-width: 4.2.3 + dev: false /cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} @@ -6819,6 +6613,7 @@ packages: /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true + dev: false /color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} @@ -6835,6 +6630,10 @@ packages: color-string: 1.9.1 dev: false + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true + /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -7075,6 +6874,7 @@ packages: /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: false /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} @@ -7422,9 +7222,6 @@ packages: engines: {node: '>= 14.15.0'} peerDependencies: webpack: ^5.1.0 - peerDependenciesMeta: - webpack: - optional: true dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -7492,6 +7289,22 @@ packages: typescript: 5.3.3 dev: true + /cosmiconfig@9.0.0(typescript@5.3.3): + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + typescript: 5.3.3 + dev: true + /cp-file@10.0.0: resolution: {integrity: sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==} engines: {node: '>=14.16'} @@ -7579,14 +7392,6 @@ packages: luxon: 3.3.0 dev: false - /cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - dependencies: - cross-spawn: 7.0.3 - dev: true - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -7606,14 +7411,16 @@ packages: type-fest: 1.4.0 dev: false + /css-functions-list@3.2.1: + resolution: {integrity: sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==} + engines: {node: '>=12 || >=16'} + dev: true + /css-loader@6.8.1(webpack@5.89.0): resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true dependencies: icss-utils: 5.1.0(postcss@8.4.31) postcss: 8.4.31 @@ -7654,6 +7461,14 @@ packages: source-map-js: 1.0.2 dev: false + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -7677,7 +7492,6 @@ packages: /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dev: false /cyclist@1.0.1: resolution: {integrity: sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==} @@ -7826,6 +7640,7 @@ packages: /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + dev: false /default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} @@ -7881,6 +7696,7 @@ packages: /delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: false /denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} @@ -7890,6 +7706,7 @@ packages: /depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} + dev: false /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} @@ -7918,11 +7735,6 @@ packages: engines: {node: '>=8'} dev: true - /detect-indent@7.0.1: - resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} - engines: {node: '>=12.20'} - dev: true - /detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -7934,11 +7746,6 @@ packages: engines: {node: '>=8'} dev: false - /detect-newline@4.0.0: - resolution: {integrity: sha512-1aXUEPdfGdzVPFpzGJJNgq9o81bGg1s09uxTWsqBlo9PI332uyJRQq13+LK/UN4JfxJbFdCXonUFQ9R/p7yCtw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: false @@ -8067,11 +7874,9 @@ packages: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 - dev: false /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: false /domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} @@ -8085,7 +7890,6 @@ packages: engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 - dev: false /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -8101,7 +7905,6 @@ packages: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 - dev: false /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -8191,14 +7994,6 @@ packages: engines: {node: '>= 0.8'} dev: false - /encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - requiresBuild: true - dependencies: - iconv-lite: 0.6.3 - dev: true - optional: true - /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -8248,10 +8043,6 @@ packages: hasBin: true dev: false - /err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - dev: true - /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -8282,9 +8073,6 @@ packages: resolution: {integrity: sha512-kj88m0yrtTEJDeUEF+3TZsq7t9VPzQQj7UmXAzUbIaipoYSrd0UxKAcg4l9CBgP8uVoploiw+nKr8DIv6Y9gXw==} peerDependencies: webpack: ^4.40.0 || ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true dependencies: esbuild: 0.19.11 get-tsconfig: 4.7.2 @@ -8469,15 +8257,6 @@ packages: parse-gitignore: 2.0.0 dev: true - /eslint-formatting-reporter@0.0.0(eslint@8.56.0): - resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} - peerDependencies: - eslint: '>=8.40.0' - dependencies: - eslint: 8.56.0 - prettier-linter-helpers: 1.0.0 - dev: true - /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: @@ -8525,10 +8304,6 @@ packages: - supports-color dev: true - /eslint-parser-plain@0.1.0: - resolution: {integrity: sha512-oOeA6FWU0UJT/Rxc3XF5Cq0nbIZbylm7j8+plqq0CZoE6m4u32OXJrR+9iy4srGMmF6v6pmgvP1zPxSRIGh3sg==} - dev: true - /eslint-plugin-antfu@2.1.1(eslint@8.56.0): resolution: {integrity: sha512-HCPo3IP15/gOaruIb1ce6R4LUv/MKBZCmWzqYiLGDFW43WW4juPURnjaQIE3AgWNSoCURqD3wxerXYKzokKTgA==} peerDependencies: @@ -8560,21 +8335,6 @@ packages: ignore: 5.2.4 dev: true - /eslint-plugin-format@0.1.0(eslint@8.56.0): - resolution: {integrity: sha512-IgOu+GEH+PdKnpuPrFzY8q8QgnzAUijDZsNLhpp5jx0Lbu9u968/STcmEZGnIMVBw3zeTNN/FsU6d2Rdgcy6Aw==} - peerDependencies: - eslint: ^8.40.0 - dependencies: - '@dprint/formatter': 0.2.1 - '@dprint/markdown': 0.16.3 - '@dprint/toml': 0.5.4 - eslint: 8.56.0 - eslint-formatting-reporter: 0.0.0(eslint@8.56.0) - eslint-parser-plain: 0.1.0 - prettier: 3.1.1 - synckit: 0.8.8 - dev: true - /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.16.0)(eslint@8.56.0): resolution: {integrity: sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==} engines: {node: '>=12'} @@ -9162,6 +8922,7 @@ packages: /fast-diff@1.2.0: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + dev: false /fast-equals@3.0.3: resolution: {integrity: sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==} @@ -9220,7 +8981,6 @@ packages: /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - dev: false /fastify-plugin@4.5.0: resolution: {integrity: sha512-79ak0JxddO0utAXAQ5ccKhvs6vX2MGyHHMMsmZkBANrq3hXc1CHzvNPHOcvTsVMEPl5I+NT+RO4YKMGehOfSIg==} @@ -9339,6 +9099,13 @@ packages: flat-cache: 3.0.4 dev: true + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + dependencies: + flat-cache: 4.0.0 + dev: true + /file-type@18.5.0: resolution: {integrity: sha512-yvpl5U868+V6PqXHMmsESpg6unQ5GfnPssl4dxdJudBrr9qy7Fddt7EVX1VLlddFfe8Gj9N7goCZH22FXuSQXQ==} engines: {node: '>=14.16'} @@ -9492,6 +9259,15 @@ packages: rimraf: 3.0.2 dev: true + /flat-cache@4.0.0: + resolution: {integrity: sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA==} + engines: {node: '>=16'} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 5.0.5 + dev: true + /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true @@ -9500,6 +9276,10 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + /flush-write-stream@2.0.0: resolution: {integrity: sha512-uXClqPxT4xW0lcdSBheb2ObVU+kuqUk3Jk64EwieirEXZx9XUrVwp/JuBfKAWaM4T5Td/VL7QLDWPXp/MvGm/g==} dependencies: @@ -9659,13 +9439,6 @@ packages: dependencies: minipass: 3.3.6 - /fs-minipass@3.0.2: - resolution: {integrity: sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - minipass: 5.0.0 - dev: true - /fs-monkey@1.0.3: resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} dev: false @@ -9706,20 +9479,6 @@ packages: wide-align: 1.1.5 dev: false - /gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: true - /get-amd-module-type@5.0.0: resolution: {integrity: sha512-9mUVPLcOJ8n6VvW+9QOCdYC350Rmqg/hK2I+mFrqoV4KtBkZVGZDnINzN8Zo3s5VoxWk8/isVC48W02+auxDaQ==} engines: {node: '>=14'} @@ -9775,11 +9534,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false - /get-stdin@9.0.0: - resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} - engines: {node: '>=12'} - dev: true - /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -9835,10 +9589,6 @@ packages: lit: 3.1.0 dev: false - /git-hooks-list@3.0.0: - resolution: {integrity: sha512-XDfdemBGJIMAsHHOONHQxEH5dX2kCpE6MGZ1IsNvBuDPBZM3p4EAwAC7ygMjn/1/x+BJX0TK1ara1Zrh7JCFdQ==} - dev: true - /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} @@ -9959,16 +9709,7 @@ packages: inherits: 2.0.4 minimatch: 5.1.2 once: 1.4.0 - - /glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.7 - path-scurry: 1.10.1 - dev: true + dev: false /global-cache-dir@4.4.0: resolution: {integrity: sha512-bk0gI6IbbphRjAaCJJn5H+T/CcEck5B3a5KBO2BXSDzjFSV+API17w8GA7YPJ6IXJiasW8M0VsEIig1PCHdfOQ==} @@ -10001,6 +9742,13 @@ packages: resolve-dir: 1.0.1 dev: true + /global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: true + /global-prefix@1.0.2: resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} engines: {node: '>=0.10.0'} @@ -10012,6 +9760,15 @@ packages: which: 1.3.1 dev: true + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true + /globals@13.19.0: resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} engines: {node: '>=8'} @@ -10033,7 +9790,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.2.4 + ignore: 5.3.0 merge2: 1.4.1 slash: 3.0.0 @@ -10046,6 +9803,7 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 + dev: false /globby@14.0.0: resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} @@ -10059,6 +9817,10 @@ packages: unicorn-magic: 0.1.0 dev: false + /globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + dev: true + /gonzales-pe@4.3.0: resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} engines: {node: '>=0.6.0'} @@ -10157,6 +9919,7 @@ packages: /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: false /has-value@0.3.1: resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} @@ -10303,14 +10066,16 @@ packages: terser: 5.17.7 dev: false + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + dev: true + /html-webpack-plugin@5.5.3(webpack@5.89.0): resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} engines: {node: '>=10.13.0'} peerDependencies: webpack: ^5.20.0 - peerDependenciesMeta: - webpack: - optional: true dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -10336,10 +10101,10 @@ packages: domhandler: 5.0.3 domutils: 3.0.1 entities: 4.5.0 - dev: false /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} @@ -10381,27 +10146,6 @@ packages: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: false - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2(supports-color@9.2.2) - debug: 4.3.4(supports-color@9.2.2) - transitivePeerDependencies: - - supports-color - dev: true - - /http-proxy-agent@7.0.0: - resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@9.2.2) - transitivePeerDependencies: - - supports-color - dev: true - /http-proxy-middleware@0.19.2(debug@2.6.9): resolution: {integrity: sha512-aYk1rTKqLTus23X3L96LGNCGNgWpG4cG0XoZIT1GUPhhulEHX/QalnO6Vbo+WmKWi4AL2IidjuC0wZtbpg0yhQ==} engines: {node: '>=4.0.0'} @@ -10495,6 +10239,7 @@ packages: debug: 4.3.4(supports-color@9.2.2) transitivePeerDependencies: - supports-color + dev: false /https-proxy-agent@7.0.2: resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} @@ -10519,12 +10264,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - dependencies: - ms: 2.1.3 - dev: true - /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} @@ -10537,23 +10276,11 @@ packages: dependencies: safer-buffer: 2.1.2 - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dependencies: - safer-buffer: 2.1.2 - dev: true - optional: true - /icss-utils@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - peerDependenciesMeta: - postcss: - optional: true dependencies: postcss: 8.4.31 dev: false @@ -10561,17 +10288,14 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore-walk@6.0.3: - resolution: {integrity: sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - minimatch: 9.0.3 - dev: true - /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + /image-meta@0.2.0: resolution: {integrity: sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg==} dev: false @@ -10604,10 +10328,6 @@ packages: engines: {node: '>=12'} dev: false - /infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - dev: true - /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -10629,11 +10349,6 @@ packages: engines: {node: '>=10'} dev: false - /ini@4.1.0: - resolution: {integrity: sha512-HLR38RSF2iulAzc3I/sma4CoYxQP844rPYCNfzGDOHqa/YqVlwuuZgBx6M50/X8dKgzk0cm1qRg3+47mK2N+cQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - /inquirer-autocomplete-prompt@1.4.0(inquirer@6.5.2): resolution: {integrity: sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==} engines: {node: '>=10'} @@ -10716,10 +10431,6 @@ packages: - supports-color dev: false - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - dev: true - /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -10954,10 +10665,7 @@ packages: /is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} - - /is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - dev: true + dev: false /is-npm@6.0.0: resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} @@ -11005,6 +10713,7 @@ packages: /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + dev: false /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} @@ -11016,7 +10725,6 @@ packages: /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} - dev: false /is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} @@ -11056,11 +10764,7 @@ packages: /is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} - - /is-unicode-supported@2.0.0: - resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} - engines: {node: '>=18'} - dev: true + dev: false /is-url-superb@4.0.0: resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==} @@ -11102,11 +10806,6 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - dev: true - /isobject@2.1.0: resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} engines: {node: '>=0.10.0'} @@ -11184,6 +10883,10 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /js-tokens@8.0.2: + resolution: {integrity: sha512-Olnt+V7xYdvGze9YTbGFZIfQXuGV4R3nQwwl8BrtgaPE/wq8UFpUHWuTNc05saowhSr1ZO6tx+V6RjE9D5YQog==} + dev: true + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -11216,7 +10919,6 @@ packages: /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: false /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -11341,6 +11043,12 @@ packages: json-buffer: 3.0.1 dev: false + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + /kind-of@3.2.2: resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} @@ -11373,6 +11081,10 @@ packages: engines: {node: '>=6'} dev: false + /known-css-properties@0.29.0: + resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} + dev: true + /kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} dev: false @@ -11733,6 +11445,10 @@ packages: resolution: {integrity: sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==} dev: false + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} requiresBuild: true @@ -11774,14 +11490,6 @@ packages: is-unicode-supported: 1.3.0 dev: false - /log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - dependencies: - chalk: 5.3.0 - is-unicode-supported: 1.3.0 - dev: true - /log-update@5.0.1: resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -11864,11 +11572,6 @@ packages: dependencies: yallist: 4.0.0 - /lru-cache@7.14.1: - resolution: {integrity: sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==} - engines: {node: '>=12'} - dev: true - /luxon@3.3.0: resolution: {integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==} engines: {node: '>=12'} @@ -11903,50 +11606,6 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: false - /make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - agentkeepalive: 4.2.1 - cacache: 16.1.3 - http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1(supports-color@9.2.2) - is-lambda: 1.0.1 - lru-cache: 7.14.1 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 2.1.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 9.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /make-fetch-happen@13.0.0: - resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/agent': 2.2.0 - cacache: 18.0.0 - http-cache-semantics: 4.1.1 - is-lambda: 1.0.1 - minipass: 7.0.4 - minipass-fetch: 3.0.3 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - ssri: 10.0.4 - transitivePeerDependencies: - - supports-color - dev: true - /map-cache@0.2.2: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} @@ -12005,6 +11664,10 @@ packages: uc.micro: 1.0.6 dev: false + /mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + dev: true + /maxstache-stream@1.0.4: resolution: {integrity: sha512-v8qlfPN0pSp7bdSoLo1NTjG43GXGqk5W2NWFnOCq2GlmFFqebGzPCjLKSbShuqIOVorOtZSAy7O/S1OCCRONUw==} dependencies: @@ -12053,6 +11716,10 @@ packages: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} dev: false + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true + /mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: false @@ -12082,6 +11749,11 @@ packages: engines: {node: '>=16.10'} dev: true + /meow@13.1.0: + resolution: {integrity: sha512-o5R/R3Tzxq0PJ3v3qcQJtSvSE9nKOLSAaDuuoMzDVuGTwHdccMWcYomh9Xolng2tjT6O/Y83d+0coVGof6tqmA==} + engines: {node: '>=18'} + dev: true + /meow@8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} @@ -12232,9 +11904,6 @@ packages: engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true dependencies: schema-utils: 4.0.0 webpack: 5.89.0 @@ -12254,20 +11923,7 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true + dev: false /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -12290,74 +11946,12 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: true - - /minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - dev: true - - /minipass-fetch@3.0.3: - resolution: {integrity: sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - minipass: 5.0.0 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - dev: true - - /minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: true - - /minipass-json-stream@1.0.1: - resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} - dependencies: - jsonparse: 1.3.1 - minipass: 3.3.6 - dev: true - - /minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: true - - /minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: true - /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 - /minipass@4.2.7: - resolution: {integrity: sha512-ScVIgqHcXRMyfflqHmEW0bm8z8rb5McHyOY3ewX9JBgZaR77G7nxq9L/mtV96/QbAAwtbCAHVVLzD1kkyfFQEw==} - engines: {node: '>=8'} - dev: true - /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} @@ -12535,6 +12129,7 @@ packages: /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + dev: false /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -12784,26 +12379,6 @@ packages: hasBin: true dev: false - /node-gyp@9.3.1: - resolution: {integrity: sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==} - engines: {node: ^12.13 || ^14.13 || >=16} - hasBin: true - dependencies: - env-paths: 2.2.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - make-fetch-happen: 10.2.1 - nopt: 6.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 - semver: 7.5.4 - tar: 6.2.0 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: false @@ -12852,22 +12427,6 @@ packages: abbrev: 1.1.1 dev: false - /nopt@6.0.0: - resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: true - - /nopt@7.0.0: - resolution: {integrity: sha512-e6Qw1rcrGoSxEH0hQ4GBSdUjkMOtXGhGFXdNT/3ZR0S37eR9DMj5za3dEDWE6o1T3/DP8ZOsPP4MIiky0c3QeA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - abbrev: 2.0.0 - dev: true - /normalize-node-version@12.4.0: resolution: {integrity: sha512-0oLZN5xcyKVrSHMk8/9RuNblEe7HEsXAt5Te2xmMiZD9VX7bqWYe0HMyfqSYFD3xv0949lZuXaEwjTqle1uWWQ==} engines: {node: '>=14.18.0'} @@ -12925,67 +12484,6 @@ packages: engines: {node: '>=14.16'} dev: false - /npm-bundled@3.0.0: - resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - npm-normalize-package-bin: 3.0.0 - dev: true - - /npm-install-checks@6.1.1: - resolution: {integrity: sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - semver: 7.5.4 - dev: true - - /npm-normalize-package-bin@3.0.0: - resolution: {integrity: sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /npm-package-arg@11.0.1: - resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - hosted-git-info: 7.0.1 - proc-log: 3.0.0 - semver: 7.5.4 - validate-npm-package-name: 5.0.0 - dev: true - - /npm-packlist@8.0.0: - resolution: {integrity: sha512-ErAGFB5kJUciPy1mmx/C2YFbvxoJ0QJ9uwkCZOeR6CqLLISPZBOiFModAbSXnjjlwW5lOhuhXva+fURsSGJqyw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - ignore-walk: 6.0.3 - dev: true - - /npm-pick-manifest@9.0.0: - resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - npm-install-checks: 6.1.1 - npm-normalize-package-bin: 3.0.0 - npm-package-arg: 11.0.1 - semver: 7.5.4 - dev: true - - /npm-registry-fetch@16.1.0: - resolution: {integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - make-fetch-happen: 13.0.0 - minipass: 7.0.4 - minipass-fetch: 3.0.3 - minipass-json-stream: 1.0.1 - minizlib: 2.1.2 - npm-package-arg: 11.0.1 - proc-log: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -13007,16 +12505,6 @@ packages: set-blocking: 2.0.0 dev: false - /npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - dev: true - /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -13219,21 +12707,6 @@ packages: strip-ansi: 7.1.0 dev: false - /ora@8.0.1: - resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} - engines: {node: '>=18'} - dependencies: - chalk: 5.3.0 - cli-cursor: 4.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.0.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.1 - string-width: 7.0.0 - strip-ansi: 7.1.0 - dev: true - /os-locale@1.4.0: resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==} engines: {node: '>=0.10.0'} @@ -13347,13 +12820,6 @@ packages: engines: {node: '>=6'} dev: false - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: true - /p-map@5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} @@ -13436,34 +12902,6 @@ packages: semver: 7.5.4 dev: false - /pacote@17.0.5: - resolution: {integrity: sha512-TAE0m20zSDMnchPja9vtQjri19X3pZIyRpm2TJVeI+yU42leJBBDTRYhOcWFsPhaMxf+3iwQkFiKz16G9AEeeA==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - dependencies: - '@npmcli/git': 5.0.3 - '@npmcli/installed-package-contents': 2.0.2 - '@npmcli/promise-spawn': 7.0.0 - '@npmcli/run-script': 7.0.1 - cacache: 18.0.0 - fs-minipass: 3.0.2 - minipass: 7.0.4 - npm-package-arg: 11.0.1 - npm-packlist: 8.0.0 - npm-pick-manifest: 9.0.0 - npm-registry-fetch: 16.1.0 - proc-log: 3.0.0 - promise-retry: 2.0.1 - read-package-json: 7.0.0 - read-package-json-fast: 3.0.2 - sigstore: 2.1.0 - ssri: 10.0.4 - tar: 6.2.0 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - /parallel-transform@1.2.0: resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} dependencies: @@ -13715,12 +13153,6 @@ packages: engines: {node: '>=4'} dev: true - /pnpm@8.14.0: - resolution: {integrity: sha512-XUv5ezSfrxpRMYqhuoh+mdnDbiA9vLVZOKkf3dJFQkbLAHI9ZkL1TUY6D1KicB2t+N4AKjf8YTyc3JTtVnXdzg==} - engines: {node: '>=16.14'} - hasBin: true - dev: true - /portfinder@1.0.32: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} @@ -13742,14 +13174,21 @@ packages: engines: {node: ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} peerDependencies: postcss: ^8.0.0 - peerDependenciesMeta: - postcss: - optional: true dependencies: csso: 5.0.5 postcss: 8.4.31 dev: false + /postcss-html@1.5.0: + resolution: {integrity: sha512-kCMRWJRHKicpA166kc2lAVUGxDZL324bkj/pVOb6RhjB0Z5Krl7mN0AsVkBhVIRZZirY0lyQXG38HCVaoKVNoA==} + engines: {node: ^12 || >=14} + dependencies: + htmlparser2: 8.0.1 + js-tokens: 8.0.2 + postcss: 8.4.32 + postcss-safe-parser: 6.0.0(postcss@8.4.32) + dev: true + /postcss-load-config@4.0.1(postcss@8.4.31): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} @@ -13773,11 +13212,6 @@ packages: peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 - peerDependenciesMeta: - postcss: - optional: true - webpack: - optional: true dependencies: cosmiconfig: 8.2.0 jiti: 1.20.0 @@ -13786,14 +13220,15 @@ packages: webpack: 5.89.0 dev: false + /postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + dev: true + /postcss-modules-extract-imports@3.0.0(postcss@8.4.31): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - peerDependenciesMeta: - postcss: - optional: true dependencies: postcss: 8.4.31 dev: false @@ -13803,9 +13238,6 @@ packages: engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - peerDependenciesMeta: - postcss: - optional: true dependencies: icss-utils: 5.1.0(postcss@8.4.31) postcss: 8.4.31 @@ -13818,9 +13250,6 @@ packages: engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - peerDependenciesMeta: - postcss: - optional: true dependencies: postcss: 8.4.31 postcss-selector-parser: 6.0.13 @@ -13831,14 +13260,42 @@ packages: engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - peerDependenciesMeta: - postcss: - optional: true dependencies: icss-utils: 5.1.0(postcss@8.4.31) postcss: 8.4.31 dev: false + /postcss-resolve-nested-selector@0.1.1: + resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} + dev: true + + /postcss-safe-parser@6.0.0(postcss@8.4.32): + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + 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'} + peerDependencies: + postcss: ^8.4.29 + dependencies: + postcss: 8.4.32 + dev: true + /postcss-selector-parser@6.0.13: resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} engines: {node: '>=4'} @@ -13846,18 +13303,22 @@ packages: cssesc: 3.0.0 util-deprecate: 1.0.2 + /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: false /postcss-values-parser@6.0.2(postcss@8.4.32): resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==} engines: {node: '>=10'} peerDependencies: postcss: ^8.2.9 - peerDependenciesMeta: - postcss: - optional: true dependencies: color-name: 1.1.4 is-url-superb: 4.0.0 @@ -13941,19 +13402,6 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - dependencies: - fast-diff: 1.2.0 - dev: true - - /prettier@3.1.1: - resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} - engines: {node: '>=14'} - hasBin: true - dev: true - /pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} dependencies: @@ -13985,11 +13433,6 @@ packages: minimist: 1.2.8 dev: false - /proc-log@3.0.0: - resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false @@ -14008,23 +13451,6 @@ packages: engines: {node: '>= 0.6.0'} dev: false - /promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - dev: true - - /promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - dev: true - /promise-timeout@1.3.0: resolution: {integrity: sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg==} dev: false @@ -14210,24 +13636,6 @@ packages: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: false - /read-package-json-fast@3.0.2: - resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - json-parse-even-better-errors: 3.0.0 - npm-normalize-package-bin: 3.0.0 - dev: true - - /read-package-json@7.0.0: - resolution: {integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - glob: 10.3.10 - json-parse-even-better-errors: 3.0.0 - normalize-package-data: 6.0.0 - npm-normalize-package-bin: 3.0.0 - dev: true - /read-pkg-up@10.1.0: resolution: {integrity: sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==} engines: {node: '>=16'} @@ -14573,11 +13981,6 @@ packages: engines: {node: '>=4'} dev: false - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - dev: true - /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -14682,7 +14085,7 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /sass-loader@13.3.3(sass@1.69.7): + /sass-loader@13.3.3(sass@1.69.7)(webpack@5.89.0): resolution: {integrity: sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -14700,11 +14103,10 @@ packages: optional: true sass-embedded: optional: true - webpack: - optional: true dependencies: neo-async: 2.6.2 sass: 1.69.7 + webpack: 5.89.0 dev: false /sass@1.69.7: @@ -14853,6 +14255,7 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false /set-cookie-parser@2.5.1: resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} @@ -14946,18 +14349,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - /sigstore@2.1.0: - resolution: {integrity: sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@sigstore/bundle': 2.1.0 - '@sigstore/protobuf-specs': 0.2.1 - '@sigstore/sign': 2.1.0 - '@sigstore/tuf': 2.2.0 - transitivePeerDependencies: - - supports-color - dev: true - /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} dev: false @@ -14997,12 +14388,22 @@ packages: /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} + dev: false /slash@5.1.0: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} dev: false + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -15018,11 +14419,6 @@ packages: is-fullwidth-code-point: 5.0.0 dev: true - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: true - /snapdragon-node@2.1.1: resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} engines: {node: '>=0.10.0'} @@ -15063,36 +14459,6 @@ packages: websocket-driver: 0.7.4 dev: false - /socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - dependencies: - agent-base: 6.0.2(supports-color@9.2.2) - debug: 4.3.4(supports-color@9.2.2) - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - dev: true - - /socks-proxy-agent@8.0.2: - resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@9.2.2) - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - dev: true - - /socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - dependencies: - ip: 2.0.0 - smart-buffer: 4.2.0 - dev: true - /sonic-boom@3.2.1: resolution: {integrity: sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==} dependencies: @@ -15113,23 +14479,6 @@ packages: is-plain-obj: 1.1.0 dev: false - /sort-object-keys@1.1.3: - resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} - dev: true - - /sort-package-json@2.6.0: - resolution: {integrity: sha512-XSQ+lY9bAYA8ZsoChcEoPlgcSMaheziEp1beox1JVxy1SV4F2jSq9+h2rJ+3mC/Dhu9Ius1DLnInD5AWcsDXZw==} - hasBin: true - dependencies: - detect-indent: 7.0.1 - detect-newline: 4.0.0 - get-stdin: 9.0.0 - git-hooks-list: 3.0.0 - globby: 13.2.2 - is-plain-obj: 4.1.0 - sort-object-keys: 1.1.3 - dev: true - /source-list-map@2.0.1: resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} dev: false @@ -15257,20 +14606,6 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: false - /ssri@10.0.4: - resolution: {integrity: sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - minipass: 5.0.0 - dev: true - - /ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minipass: 3.3.6 - dev: true - /stack-generator@2.0.10: resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} dependencies: @@ -15318,11 +14653,6 @@ packages: bl: 5.1.0 dev: false - /stdin-discarder@0.2.1: - resolution: {integrity: sha512-wRXvkxiYhOAduH+LFL/Qpim5zIWKYH1yEGvU0W8PgmabrZZ29iC1LKS8i443SYct12oZmQH7nyEonKiV8RTIsg==} - engines: {node: '>=18'} - dev: true - /streamx@2.15.0: resolution: {integrity: sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==} dependencies: @@ -15505,13 +14835,186 @@ packages: engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true dependencies: webpack: 5.89.0 dev: false + /style-search@0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + dev: true + + /stylelint-codeguide@2.0.0(stylelint@16.1.0): + resolution: {integrity: sha512-FN+8LMOIaNfQamr8WDRfYTRVbSZP7dgbiki0gIX0ycl4NXzNKjYTl48cOmangBBtd1+3armmFBJfSryyKVGdzA==} + engines: {node: ^18.12 || >=20.9} + deprecated: This package has been deprecated in favor of @stylistic/stylelint-plugin + peerDependencies: + stylelint: ^16.0.2 + dependencies: + '@csstools/css-parser-algorithms': 2.5.0(@csstools/css-tokenizer@2.2.3) + '@csstools/css-tokenizer': 2.2.3 + '@csstools/media-query-list-parser': 2.1.7(@csstools/css-parser-algorithms@2.5.0)(@csstools/css-tokenizer@2.2.3) + 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.1.0(typescript@5.3.3) + dev: true + + /stylelint-config-html@1.1.0(postcss-html@1.5.0)(stylelint@16.1.0): + resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + dependencies: + postcss-html: 1.5.0 + stylelint: 16.1.0(typescript@5.3.3) + dev: true + + /stylelint-config-recommended-scss@14.0.0(postcss@8.4.32)(stylelint@16.1.0): + resolution: {integrity: sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw==} + engines: {node: '>=18.12.0'} + peerDependencies: + postcss: ^8.3.3 + stylelint: ^16.0.2 + peerDependenciesMeta: + postcss: + optional: true + dependencies: + postcss: 8.4.32 + postcss-scss: 4.0.9(postcss@8.4.32) + stylelint: 16.1.0(typescript@5.3.3) + stylelint-config-recommended: 14.0.0(stylelint@16.1.0) + stylelint-scss: 6.0.0(stylelint@16.1.0) + dev: true + + /stylelint-config-recommended@14.0.0(stylelint@16.1.0): + resolution: {integrity: sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.0 + dependencies: + stylelint: 16.1.0(typescript@5.3.3) + dev: true + + /stylelint-config-standard-scss@12.0.0(postcss@8.4.32)(stylelint@16.1.0): + resolution: {integrity: sha512-ATh3EcEOLZq0iwlFaBdIsSavrla0lNtJ7mO7hdE7DgVT6imozRggFSqd4cFcjzVnOLKv/uJT63MmqA1acIflbw==} + engines: {node: '>=18.12.0'} + peerDependencies: + postcss: ^8.3.3 + stylelint: ^16.0.2 + peerDependenciesMeta: + postcss: + optional: true + dependencies: + postcss: 8.4.32 + stylelint: 16.1.0(typescript@5.3.3) + stylelint-config-recommended-scss: 14.0.0(postcss@8.4.32)(stylelint@16.1.0) + stylelint-config-standard: 35.0.0(stylelint@16.1.0) + dev: true + + /stylelint-config-standard@35.0.0(stylelint@16.1.0): + resolution: {integrity: sha512-JyQrNZk2BZwVKFauGGxW2U6RuhIfQ4XoHHo+rBzMHcAkLnwI/knpszwXjzxiMgSfcxbZBckM7Vq4LHoANTR85g==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.0 + dependencies: + stylelint: 16.1.0(typescript@5.3.3) + stylelint-config-recommended: 14.0.0(stylelint@16.1.0) + dev: true + + /stylelint-config-standard@36.0.0(stylelint@16.1.0): + resolution: {integrity: sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.1.0 + dependencies: + stylelint: 16.1.0(typescript@5.3.3) + stylelint-config-recommended: 14.0.0(stylelint@16.1.0) + dev: true + + /stylelint-define-config@1.1.0(stylelint@16.1.0): + resolution: {integrity: sha512-IHdvvW1MpT5CNQpIi3UqiAvAbP9dEGsw1ULLsFtqMlYpm619VM5thCOzryG+zIWII3Cqdo0Twsp+UJ9A5kGLfw==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} + peerDependencies: + stylelint: '>=16.0.0' + dependencies: + csstype: 3.1.3 + stylelint: 16.1.0(typescript@5.3.3) + dev: true + + /stylelint-order@6.0.4(stylelint@16.1.0): + 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.1.0(typescript@5.3.3) + dev: true + + /stylelint-scss@6.0.0(stylelint@16.1.0): + 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: 16.1.0(typescript@5.3.3) + dev: true + + /stylelint@16.1.0(typescript@5.3.3): + resolution: {integrity: sha512-Sh1rRV0lN1qxz/QsuuooLWsIZ/ona7NKw/fRZd6y6PyXYdD2W0EAzJ8yJcwSx4Iw/muz0CF09VZ+z4EiTAcKmg==} + engines: {node: '>=18.12.0'} + hasBin: true + dependencies: + '@csstools/css-parser-algorithms': 2.5.0(@csstools/css-tokenizer@2.2.3) + '@csstools/css-tokenizer': 2.2.3 + '@csstools/media-query-list-parser': 2.1.7(@csstools/css-parser-algorithms@2.5.0)(@csstools/css-tokenizer@2.2.3) + '@csstools/selector-specificity': 3.0.1(postcss-selector-parser@6.0.13) + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.3.3) + css-functions-list: 3.2.1 + css-tree: 2.3.1 + debug: 4.3.4(supports-color@9.2.2) + fast-glob: 3.3.2 + fastest-levenshtein: 1.0.16 + file-entry-cache: 8.0.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + 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: 13.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.32 + postcss-resolve-nested-selector: 0.1.1 + 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: 7.1.0 + supports-hyperlinks: 3.0.0 + svg-tags: 1.0.0 + table: 6.8.1 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /subarg@1.0.0: resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} dependencies: @@ -15585,10 +15088,22 @@ packages: supports-color: 7.2.0 dev: false + /supports-hyperlinks@3.0.0: + resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} + engines: {node: '>=14.18'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + dev: true + /svgo@3.0.3: resolution: {integrity: sha512-X4UZvLhOglD5Xrp834HzGHf8RKUW0Ahigg/08yRO1no9t2NxffOkMiQ0WmaMIbaGlVTlSst2zWANsdhz5ybXgA==} engines: {node: '>=14.0.0'} @@ -15602,12 +15117,15 @@ packages: picocolors: 1.0.0 dev: false - /synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} + /table@6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} dependencies: - '@pkgr/core': 0.1.0 - tslib: 2.6.2 + ajv: 8.12.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 dev: true /tabtab@3.0.2: @@ -15675,27 +15193,6 @@ packages: mkdirp: 1.0.4 yallist: 4.0.0 - /taze@0.13.1: - resolution: {integrity: sha512-viIeTWEezE1mtQ9M9dtvIwfF7WkNRXVZP7g/NsGDFxwwzJIVJReSiZiyfsJccdJo6XUe7FaYzvrG1VD6Tnj4Jg==} - hasBin: true - dependencies: - '@antfu/ni': 0.21.12 - '@npmcli/config': 8.0.3 - cli-progress: 3.12.0 - deepmerge: 4.3.1 - detect-indent: 7.0.1 - execa: 8.0.1 - pacote: 17.0.5 - picocolors: 1.0.0 - prompts: 2.4.2 - semver: 7.5.4 - unconfig: 0.3.11 - yargs: 17.7.2 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -15754,8 +15251,6 @@ packages: optional: true uglify-js: optional: true - webpack: - optional: true dependencies: '@jridgewell/trace-mapping': 0.3.18 jest-worker: 27.5.1 @@ -15813,7 +15308,6 @@ packages: /throttle-debounce@5.0.0: resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} engines: {node: '>=12.22'} - dev: false /through2-filter@3.0.0: resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} @@ -16031,6 +15525,7 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false /tsutils@3.21.0(typescript@5.3.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -16042,17 +15537,6 @@ packages: typescript: 5.3.3 dev: false - /tuf-js@2.1.0: - resolution: {integrity: sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@tufjs/models': 2.0.0 - debug: 4.3.4(supports-color@9.2.2) - make-fetch-happen: 13.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: @@ -16169,15 +15653,6 @@ packages: through: 2.3.8 dev: false - /unconfig@0.3.11: - resolution: {integrity: sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==} - dependencies: - '@antfu/utils': 0.7.6 - defu: 6.1.3 - jiti: 1.20.0 - mlly: 1.4.2 - dev: true - /uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} dev: false @@ -16214,34 +15689,6 @@ packages: set-value: 2.0.1 dev: false - /unique-filename@2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - unique-slug: 3.0.0 - dev: true - - /unique-filename@3.0.0: - resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - unique-slug: 4.0.0 - dev: true - - /unique-slug@3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - imurmurhash: 0.1.4 - dev: true - - /unique-slug@4.0.0: - resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - imurmurhash: 0.1.4 - dev: true - /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -16479,13 +15926,6 @@ packages: builtins: 5.0.1 dev: false - /validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - builtins: 5.0.1 - dev: true - /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -16571,8 +16011,6 @@ packages: optional: true vue: optional: true - webpack: - optional: true dependencies: '@vue/compiler-sfc': 3.4.5 chalk: 4.1.2 @@ -16893,10 +16331,6 @@ packages: - supports-color dev: false - /walk-up-path@3.0.1: - resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} - dev: true - /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} @@ -16938,9 +16372,6 @@ packages: engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true dependencies: colorette: 2.0.20 memfs: 3.4.7 @@ -17102,18 +16533,11 @@ packages: dependencies: isexe: 2.0.0 - /which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - isexe: 3.1.1 - dev: true - /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: string-width: 4.2.3 + dev: false /widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} @@ -17231,7 +16655,6 @@ packages: dependencies: imurmurhash: 0.1.4 signal-exit: 4.1.0 - dev: false /ws@5.2.3: resolution: {integrity: sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==} diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index d6e4bb60..00000000 --- a/scripts/README.md +++ /dev/null @@ -1,16 +0,0 @@ -## scripts/create - -在 `packages/` 目录下生成一个新的 插件包 - -``` sh -pnpm pkg [--option] -``` - -- `package-name` 插件名称 - -### Option - -- `--client,-c` 是否生成 `client` 目录及其文件,默认不生成 -- `--shared,-s` 是否生成 `shared` 目录及其文件,默认不生成 - -- `--help,-h` 显示帮助信息 diff --git a/scripts/create/generator.js b/scripts/create/generator.js deleted file mode 100644 index 63ed78e0..00000000 --- a/scripts/create/generator.js +++ /dev/null @@ -1,97 +0,0 @@ -import path from 'node:path' -import fs from 'node:fs' -import { fileURLToPath } from 'node:url' -import handlebars from 'handlebars' -import chalk from 'chalk' -import ora from 'ora' -import { execa } from 'execa' -import { readTemplateList } from './readTpl.js' -import { lowerCase, packageName, upperCase } from './utils.js' -import { writeFile } from './writeFile.js' - -const compile = handlebars.compile - -const _dirname - = typeof __dirname !== 'undefined' - ? __dirname - : path.dirname(fileURLToPath(import.meta.url)) - -const packagesRoot = path.join(_dirname, '../../packages') -const spinner = ora() - -const pkg = JSON.parse( - fs.readFileSync(path.join(_dirname, '../../package.json'), 'utf-8'), -) - -async function generatorFile(config) { - const templateList = readTemplateList(path.join(_dirname, './template')) - - const { name, client, shared } = config - const pkgName = packageName(name) - const targetDir = path.join(packagesRoot, pkgName) - const data = { - pkgName, - upperName: upperCase(name), - lowerName: lowerCase(name), - client, - shared, - version: pkg.version, - } - const include = [ - !client && 'client', - !shared && 'shared', - !shared && 'client/index.js', - ] - .filter(Boolean) - .join('|') - const filterRE = new RegExp(`/(${include})/`) - const templates = templateList - .filter(({ file }) => { - return !filterRE.test(file) - }) - .map(({ file, content }) => { - return { - file, - template: compile(content), - } - }) - spinner.start(`${chalk.cyan(pkgName)} generating....`) - templates.forEach(async ({ file, template }) => { - try { - const filepath = path.join(targetDir, file) - await writeFile(filepath, template(data)) - } - catch (e) { - spinner.fail(`Failed to generate ${chalk.cyan(pkgName)}`) - throw e - } - }) - spinner.succeed(`${chalk.cyan(pkgName)} generated !`) -} - -async function initPackage(config) { - const { name, client } = config - const pkgName = packageName(name) - const targetDir = path.join(packagesRoot, pkgName) - const dependencies = [ - '@vuepress/core@next', - '@vuepress/utils@next', - '@vuepress/shared@next', - ] - client && dependencies.push('@vuepress/client@next') - - spinner.start(chalk.cyan('Installing...')) - try { - await execa('pnpm', ['add', ...dependencies], { cwd: targetDir }) - spinner.succeed('Installed.') - } - catch (e) { - spinner.fail('Failed to Installed') - throw e - } -} - -export async function generator(config) { - await generatorFile(config) - await initPackage(config) -} diff --git a/scripts/create/getConfig.js b/scripts/create/getConfig.js deleted file mode 100644 index f9e9f524..00000000 --- a/scripts/create/getConfig.js +++ /dev/null @@ -1,29 +0,0 @@ -import process from 'node:process' -import minimist from 'minimist' - -const defaultOptions = { - s: false, - shared: false, - c: false, - client: false, - h: false, - help: false, -} - -function normalizeArgv(argv) { - return { - name: argv._[0] || '', - client: argv.client || argv.c, - shared: argv.shared || argv.s, - help: argv.h || argv.help, - } -} - -export function getConfig() { - const argv = Object.assign( - {}, - defaultOptions, - minimist(process.argv.slice(2)), - ) - return normalizeArgv(argv) -} diff --git a/scripts/create/getHelp.js b/scripts/create/getHelp.js deleted file mode 100644 index d92015cf..00000000 --- a/scripts/create/getHelp.js +++ /dev/null @@ -1,18 +0,0 @@ -import chalk from 'chalk' - -export function getHelp() { - console.log(` this command will generator a package to ${chalk.cyan('packages')}. - command: ${chalk.green('pnpm pkg [--options]')} - - ${chalk.green('package-name')}: 包名 - - options: - ${chalk.green('--client, -c')}: 是否生成 ${chalk.cyan('client/')} 目录 - ${chalk.green('--shared, -s')}: 是否生成 ${chalk.cyan('shared/')} 目录 - - ${chalk.green('--help, -h')}: show help message. - - exp: ${chalk.green('pnpm pkg caniuse -c -s')} - It will generator to ${chalk.cyan('packages/plugin-caniuse')} - `) -} diff --git a/scripts/create/index.js b/scripts/create/index.js deleted file mode 100644 index 68963fc8..00000000 --- a/scripts/create/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import process from 'node:process' -import { getConfig } from './getConfig.js' -import { getHelp } from './getHelp.js' -import { generator } from './generator.js' - -const config = getConfig() - -if (config.help) { - getHelp() - process.exit(0) -} -else { - generator(config).catch((err) => { - console.error(err) - process.exit(1) - }) -} diff --git a/scripts/create/readTpl.js b/scripts/create/readTpl.js deleted file mode 100644 index 605eb9d8..00000000 --- a/scripts/create/readTpl.js +++ /dev/null @@ -1,33 +0,0 @@ -import fs from 'node:fs' -import path from 'node:path' - -const tplRE = /\.tpl$/ -function readFileList(dir, fileList = {}) { - const files = fs.readdirSync(dir) - files.forEach((file) => { - const filepath = path.join(dir, file) - const stat = fs.statSync(filepath) - if (stat.isDirectory()) { - readFileList(filepath, fileList) - } - else { - const extname = path.extname(filepath) - if (tplRE.test(extname)) - fileList[filepath.replace(tplRE, '')] = fs.readFileSync(filepath, 'utf-8') - } - }) - return fileList -} - -export function readTemplateList(dir) { - const templateMap = readFileList(dir) - const result = [] - Object.keys(templateMap).forEach((key) => { - const file = path.relative(dir, key) - result.push({ - file, - content: templateMap[key], - }) - }) - return result -} diff --git a/scripts/create/template/LICENSE.tpl b/scripts/create/template/LICENSE.tpl deleted file mode 100644 index 9f677c90..00000000 --- a/scripts/create/template/LICENSE.tpl +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (C) 2021 - PRESENT by pengzhanbo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/scripts/create/template/README.md.tpl b/scripts/create/template/README.md.tpl deleted file mode 100644 index 4c2c83fe..00000000 --- a/scripts/create/template/README.md.tpl +++ /dev/null @@ -1,18 +0,0 @@ -# `@vuepress-plume/{{ pkgName }}` - -## Install -``` -yarn add @vuepress-plume/{{ pkgName }} -``` -## Usage -``` js -// .vuepress/config.js -const {{ lowerName }}Plugin = require('@vuepress-plume/{{ pkgName }}') -module.exports = { - //... - plugins: [ - {{ lowerName }}Plugin() - ] - // ... -} -``` diff --git a/scripts/create/template/package.json.tpl b/scripts/create/template/package.json.tpl deleted file mode 100644 index ea1e0361..00000000 --- a/scripts/create/template/package.json.tpl +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "@vuepress-plume/{{ pkgName }}", - "version": "{{ version }}", - "description": "The Plugin for VuePres 2", - "keyword": [ - "VuePress", - "vuepress plugin", - "{{ lowerName }}", - "vuepress-plugin-{{ pkgName }}" - ], - "homepage": "https://github.com/pengzhanbo/vuepress-theme-plume#readme", - "bugs": { - "url": "https://github.com/pengzhanbo/vuepress-theme-plume/issues" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/pengzhanbo/vuepress-theme-plume.git" - }, - "license": "MIT", - "author": "pengzhanbo ", - "type": "module", - "exports": { - ".": "./lib/node/index.js", - {{#if shared }} - "./client": "./lib/client/index.js", - {{/if}} - "./package.json": "./package.json" - }, - "main": "lib/node/index.js", - "types": "./lib/node/index.d.ts", - "scripts": { - "build": "pnpm run clean && pnpm run copy && pnpm run ts", - "clean": "rimraf lib *.tsbuildinfo", - "copy": "cpx \"src/**/*.{d.ts,vue,css,scss,jpg,png}\" lib", - "copy:watch": "cpx \"src/**/*.{d.ts,vue,css,scss,jpg,png}\" lib -w", - "dev": "concurrently \"pnpm copy:watch\" \"pnpm ts:watch\"", - "ts": "tsc -b tsconfig.build.json", - "ts:watch": "tsc -b tsconfig.build.json --watch" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/scripts/create/template/src/client/clientConfig.ts.tpl b/scripts/create/template/src/client/clientConfig.ts.tpl deleted file mode 100644 index e5214719..00000000 --- a/scripts/create/template/src/client/clientConfig.ts.tpl +++ /dev/null @@ -1,8 +0,0 @@ -import { defineClientConfig } from '@vuepress/client' - - -export default defineClientConfig({ - setup() { - // do something - }, -}) diff --git a/scripts/create/template/src/client/index.ts.tpl b/scripts/create/template/src/client/index.ts.tpl deleted file mode 100644 index 72593733..00000000 --- a/scripts/create/template/src/client/index.ts.tpl +++ /dev/null @@ -1 +0,0 @@ -export * from '../shared/index.js' diff --git a/scripts/create/template/src/node/index.ts.tpl b/scripts/create/template/src/node/index.ts.tpl deleted file mode 100644 index cecc69ed..00000000 --- a/scripts/create/template/src/node/index.ts.tpl +++ /dev/null @@ -1,8 +0,0 @@ -import { {{ lowerName }}Plugin } from './plugin.js' - -export * from './plugin.js' -{{#if shared }} -export * from '../shared/index.js' -{{/if}} - -export default {{ lowerName }}Plugin diff --git a/scripts/create/template/src/node/plugin.ts.tpl b/scripts/create/template/src/node/plugin.ts.tpl deleted file mode 100644 index 5561d9e2..00000000 --- a/scripts/create/template/src/node/plugin.ts.tpl +++ /dev/null @@ -1,23 +0,0 @@ -import type { App, Plugin } from '@vuepress/core' -{{#if client}} -import { path } from '@vuepress/utils' -{{/if}} -{{#if shared}} -import type { {{ upperName }}Options } from '../shared/index.js' -{{else}} - -export interface {{ upperName }}Options { - a?: string -} -{{/if}} - -export const {{ lowerName }}Plugin = (options: {{ upperName }}Options): Plugin => { - return (app: App) => { - return { - name: '@vuepress-plume/{{ pkgName }}', - {{#if client}} - clientConfigFile: path.resolve(__dirname, '../client/clientConfig.js'), - {{/if}} - } - } -} diff --git a/scripts/create/template/src/shared/index.ts.tpl b/scripts/create/template/src/shared/index.ts.tpl deleted file mode 100644 index e22084f5..00000000 --- a/scripts/create/template/src/shared/index.ts.tpl +++ /dev/null @@ -1,3 +0,0 @@ -export interface {{ upperName }}Options { - a?: string -} diff --git a/scripts/create/template/tsconfig.build.json.tpl b/scripts/create/template/tsconfig.build.json.tpl deleted file mode 100644 index 66824ada..00000000 --- a/scripts/create/template/tsconfig.build.json.tpl +++ /dev/null @@ -1,8 +0,0 @@ -{ -"extends": "../tsconfig.build.json", -"compilerOptions": { -"rootDir": "./src", -"outDir": "./lib" -}, -"include": ["./src"] -} diff --git a/scripts/create/utils.js b/scripts/create/utils.js deleted file mode 100644 index 279d4e19..00000000 --- a/scripts/create/utils.js +++ /dev/null @@ -1,14 +0,0 @@ -export function upperCase(str) { - return str.split(/-|\s+/).filter(Boolean).map((s) => { - return s[0].toUpperCase() + s.slice(1) - }).join('') -} - -export function lowerCase(str) { - str = upperCase(str) - return str[0].toLowerCase() + str.slice(1) -} - -export function packageName(name) { - return `plugin-${name.trim().split(/-|\s+/).filter(Boolean).join('-')}` -} diff --git a/scripts/create/writeFile.js b/scripts/create/writeFile.js deleted file mode 100644 index f3ace897..00000000 --- a/scripts/create/writeFile.js +++ /dev/null @@ -1,17 +0,0 @@ -import path from 'node:path' -import fs from 'node:fs' - -export async function writeFile(filepath, content) { - const dirname = path.dirname(filepath) - if (!fs.existsSync(dirname)) - fs.mkdirSync(dirname, { recursive: true }) - - return new Promise((resolve, reject) => { - fs.writeFile(filepath, content, 'utf-8', (err) => { - if (err) - reject(err) - else - resolve() - }) - }) -} diff --git a/stylelint.config.js b/stylelint.config.js new file mode 100644 index 00000000..2227808a --- /dev/null +++ b/stylelint.config.js @@ -0,0 +1,19 @@ +import { stylelintConfig } from '@pengzhanbo/stylelint-config' + +export default stylelintConfig({ + rules: { + 'selector-pseudo-element-no-unknown': [true, { + ignorePseudoElements: ['input-placeholder'], + }], + 'no-descending-specificity': null, + 'custom-property-empty-line-before': null, + 'property-no-vendor-prefix': null, + 'selector-no-vendor-prefix': null, + 'property-no-unknown': [true, { + ignoreProperties: ['r', 'font-named-instance'], + }], + 'declaration-block-no-redundant-longhand-properties': [true, { + ignoreShorthands: ['inset'], + }], + }, +}) diff --git a/theme/package.json b/theme/package.json index 5183f643..d3e1c590 100644 --- a/theme/package.json +++ b/theme/package.json @@ -89,8 +89,5 @@ "vuepress-plugin-reading-time2": "2.0.0-rc.10", "vuepress-plugin-seo2": "2.0.0-rc.10", "vuepress-plugin-sitemap2": "2.0.0-rc.10" - }, - "devDependencies": { - "@types/lodash.merge": "^4.6.9" } } diff --git a/theme/src/client/components/Archives.vue b/theme/src/client/components/Archives.vue index 0b2c7cbf..31bd7311 100644 --- a/theme/src/client/components/Archives.vue +++ b/theme/src/client/components/Archives.vue @@ -28,18 +28,19 @@ const { archives } = useArchives() diff --git a/theme/src/client/components/AutoLink.vue b/theme/src/client/components/AutoLink.vue index fc8f6191..db2ee1ce 100644 --- a/theme/src/client/components/AutoLink.vue +++ b/theme/src/client/components/AutoLink.vue @@ -46,10 +46,10 @@ function linkTo(e: Event) { diff --git a/theme/src/client/components/BlogExtract.vue b/theme/src/client/components/BlogExtract.vue index 364e0900..afa630c7 100644 --- a/theme/src/client/components/BlogExtract.vue +++ b/theme/src/client/components/BlogExtract.vue @@ -85,19 +85,19 @@ const showBlogExtract = computed(() => { diff --git a/theme/src/client/components/DocOutlineItem.vue b/theme/src/client/components/DocOutlineItem.vue index 0cf328a3..16280089 100644 --- a/theme/src/client/components/DocOutlineItem.vue +++ b/theme/src/client/components/DocOutlineItem.vue @@ -36,13 +36,13 @@ function onClick({ target: el }: Event) { .outline-link { display: block; + overflow: hidden; + font-weight: 400; line-height: 28px; color: var(--vp-c-text-2); - white-space: nowrap; - overflow: hidden; text-overflow: ellipsis; + white-space: nowrap; transition: color 0.5s; - font-weight: 400; } .outline-link:hover, diff --git a/theme/src/client/components/Flyout/MenuGroup.vue b/theme/src/client/components/Flyout/MenuGroup.vue index f430fb39..d62ea735 100644 --- a/theme/src/client/components/Flyout/MenuGroup.vue +++ b/theme/src/client/components/Flyout/MenuGroup.vue @@ -23,15 +23,15 @@ defineProps<{ diff --git a/theme/src/client/components/FriendsItem.vue b/theme/src/client/components/FriendsItem.vue index c2561ff9..c6fb11de 100644 --- a/theme/src/client/components/FriendsItem.vue +++ b/theme/src/client/components/FriendsItem.vue @@ -28,12 +28,12 @@ defineProps<{ display: flex; align-items: flex-start; padding: 16px; - border-radius: 6px; - border: 1px solid var(--vp-friends-border-color); margin-bottom: 8px; - transition: all 0.25s; background-color: var(--vp-friends-bg-color); + border: 1px solid var(--vp-friends-border-color); + border-radius: 6px; box-shadow: var(--vp-shadow-1); + transition: all 0.25s; } .friend:hover { @@ -48,35 +48,36 @@ defineProps<{ .avatar { width: 64px; height: 64px; - border-radius: 100%; - background-size: cover; background-color: var(--vp-c-default-soft); + background-size: cover; + border-radius: 100%; } + .content { flex: 1; } .content .title { display: block; - font-weight: 700; - font-size: 18px; - color: var(--vp-friends-link-color); - padding-left: 16px; padding-bottom: 8px; - margin-left: -16px; + padding-left: 16px; margin-bottom: 8px; + margin-left: -16px; + font-size: 18px; + font-weight: 700; + color: var(--vp-friends-link-color); border-bottom: 1px dashed var(--vp-friends-border-color); } .content p { + display: -webkit-box; + padding-top: 8px; + overflow: hidden; font-size: 0.875rem; line-height: 1.5; - padding-top: 8px; - display: -webkit-box; - overflow: hidden; + color: var(--vp-friends-text-color); -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; - color: var(--vp-friends-text-color); } diff --git a/theme/src/client/components/Home.vue b/theme/src/client/components/Home.vue index 222fe1f7..1a04305c 100644 --- a/theme/src/client/components/Home.vue +++ b/theme/src/client/components/Home.vue @@ -75,11 +75,11 @@ const actions = computed(() => { diff --git a/theme/src/client/components/LocalNav.vue b/theme/src/client/components/LocalNav.vue index 29a4a7ca..6adb41fd 100644 --- a/theme/src/client/components/LocalNav.vue +++ b/theme/src/client/components/LocalNav.vue @@ -71,17 +71,18 @@ const showLocalNav = computed(() => { .local-nav { position: sticky; top: 0; - /*rtl:ignore*/ + + /* rtl:ignore */ left: 0; z-index: var(--vp-z-index-local-nav); display: flex; - justify-content: space-between; align-items: center; + justify-content: space-between; + width: 100%; + padding-top: var(--vp-layout-top-height, 0); + background-color: var(--vp-local-nav-bg-color); border-top: 1px solid var(--vp-c-gutter); border-bottom: 1px solid var(--vp-c-gutter); - padding-top: var(--vp-layout-top-height, 0px); - width: 100%; - background-color: var(--vp-local-nav-bg-color); transition: border-color 0.5s, background-color 0.5s; @@ -95,7 +96,7 @@ const showLocalNav = computed(() => { border-top-color: transparent; } -@media (min-width: 960px) { +@media (width >= 960px) { .local-nav { display: none; } @@ -111,9 +112,9 @@ const showLocalNav = computed(() => { display: flex; align-items: center; padding: 12px 24px 11px; - line-height: 24px; font-size: 12px; font-weight: 500; + line-height: 24px; color: var(--vp-c-text-2); transition: color 0.5s; } @@ -127,25 +128,25 @@ const showLocalNav = computed(() => { transition: color 0.25s; } -@media (min-width: 768px) { +@media (width >= 768px) { .menu { padding: 0 32px; } } .menu-icon { - margin-right: 8px; width: 16px; height: 16px; - fill: currentColor; + margin-right: 8px; + fill: currentcolor; } .top-link { display: block; padding: 12px 24px 11px; - line-height: 24px; font-size: 12px; font-weight: 500; + line-height: 24px; color: var(--vp-c-text-2); transition: color 0.5s; } @@ -155,7 +156,7 @@ const showLocalNav = computed(() => { transition: color 0.25s; } -@media (min-width: 768px) { +@media (width >= 768px) { .top-link { padding: 12px 32px 11px; } diff --git a/theme/src/client/components/LocalNavOutlineDropdown.vue b/theme/src/client/components/LocalNavOutlineDropdown.vue index d37c79c5..cc867e50 100644 --- a/theme/src/client/components/LocalNavOutlineDropdown.vue +++ b/theme/src/client/components/LocalNavOutlineDropdown.vue @@ -78,13 +78,13 @@ function scrollToTop() { } .local-nav-outline-dropdown button { + position: relative; display: block; font-size: 12px; font-weight: 500; line-height: 24px; color: var(--vp-c-text-2); transition: color 0.5s; - position: relative; } .local-nav-outline-dropdown button:hover { @@ -98,16 +98,16 @@ function scrollToTop() { .icon { display: inline-block; - vertical-align: middle; - margin-left: 2px; width: 14px; height: 14px; - fill: currentColor; + margin-left: 2px; + vertical-align: middle; + fill: currentcolor; } :deep(.outline-link) { - font-size: 14px; padding: 2px 0; + font-size: 14px; } .open > .icon { @@ -121,11 +121,11 @@ function scrollToTop() { left: 16px; display: grid; gap: 1px; - border: 1px solid var(--vp-c-border); - border-radius: 8px; - background-color: var(--vp-c-gutter); max-height: calc(var(--vp-vh, 100vh) - 86px); overflow: hidden auto; + background-color: var(--vp-c-gutter); + border: 1px solid var(--vp-c-border); + border-radius: 8px; box-shadow: var(--vp-shadow-3); } @@ -136,9 +136,9 @@ function scrollToTop() { .top-link { display: block; padding: 0 16px; - line-height: 48px; font-size: 14px; font-weight: 500; + line-height: 48px; color: var(--vp-c-brand-1); } diff --git a/theme/src/client/components/Nav/NavBar.vue b/theme/src/client/components/Nav/NavBar.vue index 3e6e67f9..4f606d73 100644 --- a/theme/src/client/components/Nav/NavBar.vue +++ b/theme/src/client/components/Nav/NavBar.vue @@ -61,36 +61,36 @@ watchPostEffect(() => { diff --git a/theme/src/client/components/Nav/NavBarAppearance.vue b/theme/src/client/components/Nav/NavBarAppearance.vue index b04ed1fd..05b8a8b4 100644 --- a/theme/src/client/components/Nav/NavBarAppearance.vue +++ b/theme/src/client/components/Nav/NavBarAppearance.vue @@ -16,7 +16,7 @@ const theme = useThemeLocaleData() display: none; } -@media (min-width: 1280px) { +@media (width >= 1280px) { .navbar-appearance { display: flex; align-items: center; diff --git a/theme/src/client/components/Nav/NavBarExtra.vue b/theme/src/client/components/Nav/NavBarExtra.vue index caf2a8f2..ddc824f4 100644 --- a/theme/src/client/components/Nav/NavBarExtra.vue +++ b/theme/src/client/components/Nav/NavBarExtra.vue @@ -55,13 +55,13 @@ const hasExtraContent = computed( margin-right: -12px; } -@media (min-width: 768px) { +@media (width >= 768px) { .navbar-extra { display: block; } } -@media (min-width: 1280px) { +@media (width >= 1280px) { .navbar-extra { display: none; } @@ -69,9 +69,9 @@ const hasExtraContent = computed( .trans-title { padding: 0 24px 0 12px; - line-height: 32px; font-size: 14px; font-weight: 700; + line-height: 32px; color: var(--vp-c-text-1); } diff --git a/theme/src/client/components/Nav/NavBarHamburger.vue b/theme/src/client/components/Nav/NavBarHamburger.vue index 45f6809b..708af8a0 100644 --- a/theme/src/client/components/Nav/NavBarHamburger.vue +++ b/theme/src/client/components/Nav/NavBarHamburger.vue @@ -27,13 +27,13 @@ defineEmits<(e: 'click') => void>() diff --git a/theme/src/client/components/Nav/NavBarSocialLinks.vue b/theme/src/client/components/Nav/NavBarSocialLinks.vue index 9f1f494c..02c84746 100644 --- a/theme/src/client/components/Nav/NavBarSocialLinks.vue +++ b/theme/src/client/components/Nav/NavBarSocialLinks.vue @@ -18,7 +18,7 @@ const theme = useThemeLocaleData() display: none; } -@media (min-width: 1280px) { +@media (width >= 1280px) { .navbar-social-links { display: flex; align-items: center; diff --git a/theme/src/client/components/Nav/NavBarTitle.vue b/theme/src/client/components/Nav/NavBarTitle.vue index 7c3835bf..1846cf16 100644 --- a/theme/src/client/components/Nav/NavBarTitle.vue +++ b/theme/src/client/components/Nav/NavBarTitle.vue @@ -27,12 +27,12 @@ const { hasSidebar } = useSidebar() .title { display: flex; align-items: center; - border-bottom: 1px solid transparent; width: 100%; height: var(--vp-nav-height); font-size: 16px; font-weight: 600; color: var(--vp-c-text-1); + border-bottom: 1px solid transparent; transition: opacity 0.25s; } @@ -40,7 +40,7 @@ const { hasSidebar } = useSidebar() opacity: 0.6; } -@media (min-width: 960px) { +@media (width >= 960px) { .title { flex-shrink: 0; } @@ -51,7 +51,7 @@ const { hasSidebar } = useSidebar() } :deep(.logo) { - margin-right: 8px; height: 24px; + margin-right: 8px; } diff --git a/theme/src/client/components/Nav/NavBarTranslations.vue b/theme/src/client/components/Nav/NavBarTranslations.vue index c3b362f0..eebb752b 100644 --- a/theme/src/client/components/Nav/NavBarTranslations.vue +++ b/theme/src/client/components/Nav/NavBarTranslations.vue @@ -33,7 +33,7 @@ const { currentLang, localeLinks } = useLangs() display: none; } -@media (min-width: 1280px) { +@media (width >= 1280px) { .navbar-translations { display: flex; align-items: center; @@ -42,9 +42,9 @@ const { currentLang, localeLinks } = useLangs() .title { padding: 0 24px 0 12px; - line-height: 32px; font-size: 14px; font-weight: 700; + line-height: 32px; color: var(--vp-c-text-1); } diff --git a/theme/src/client/components/Nav/NavScreen.vue b/theme/src/client/components/Nav/NavScreen.vue index 26c7c3db..0af8d229 100644 --- a/theme/src/client/components/Nav/NavScreen.vue +++ b/theme/src/client/components/Nav/NavScreen.vue @@ -33,19 +33,18 @@ const isLocked = useScrollLock(inBrowser ? document.body : null) diff --git a/theme/src/client/components/Nav/NavScreenMenuGroup.vue b/theme/src/client/components/Nav/NavScreenMenuGroup.vue index f40608e3..b6f8803f 100644 --- a/theme/src/client/components/Nav/NavScreenMenuGroup.vue +++ b/theme/src/client/components/Nav/NavScreenMenuGroup.vue @@ -60,9 +60,9 @@ function toggle() { diff --git a/theme/src/client/components/Nav/index.vue b/theme/src/client/components/Nav/index.vue index d20b7ecb..ca2a4586 100644 --- a/theme/src/client/components/Nav/index.vue +++ b/theme/src/client/components/Nav/index.vue @@ -29,8 +29,9 @@ provide('close-screen', closeScreen) diff --git a/theme/src/client/components/PostItem.vue b/theme/src/client/components/PostItem.vue index ae0a69fe..a85070e3 100644 --- a/theme/src/client/components/PostItem.vue +++ b/theme/src/client/components/PostItem.vue @@ -65,6 +65,12 @@ const createTime = computed(() => { .post-item { padding-top: 1rem; margin: 0 1.75rem 2rem; + + @media (width >= 960px) { + h3 { + font-size: 20px; + } + } // border-bottom: solid 1px var(--vp-c-divider); &:last-of-type { @@ -74,10 +80,10 @@ const createTime = computed(() => { h3 { display: flex; align-items: center; + margin-bottom: 0.75rem; font-size: 18px; font-weight: 600; transition: color var(--t-color); - margin-bottom: 0.75rem; } h3:hover { @@ -88,34 +94,28 @@ const createTime = computed(() => { } } - @media (min-width: 960px) { - h3 { - font-size: 20px; - } - } - .sticky { display: inline-block; - font-weight: 600; padding: 3px 6px; margin-left: 0.5rem; - border-radius: 4px; - line-height: 1; font-size: 13px; + font-weight: 600; + line-height: 1; color: var(--vp-c-text-2); background-color: var(--vp-c-default-soft); + border-radius: 4px; } } .post-meta { display: flex; + flex-wrap: wrap; align-items: center; justify-content: flex-start; - flex-wrap: wrap; + margin-bottom: 0.5rem; font-size: 14px; font-weight: 400; color: var(--vp-c-text-2); - margin-bottom: 0.5rem; > div { display: flex; @@ -148,9 +148,11 @@ const createTime = computed(() => { .plume-content :deep(p) { margin: 0.5rem 0; } + .plume-content :deep(p:first-of-type) { margin-top: 0; } + .plume-content :deep(p:last-of-type) { margin-bottom: 0; } diff --git a/theme/src/client/components/PostList.vue b/theme/src/client/components/PostList.vue index 2b90265c..968d7304 100644 --- a/theme/src/client/components/PostList.vue +++ b/theme/src/client/components/PostList.vue @@ -31,8 +31,8 @@ const { diff --git a/theme/src/client/components/ShortPostList.vue b/theme/src/client/components/ShortPostList.vue index 51bb5568..9b835b57 100644 --- a/theme/src/client/components/ShortPostList.vue +++ b/theme/src/client/components/ShortPostList.vue @@ -25,8 +25,8 @@ defineProps<{ diff --git a/theme/src/client/components/SidebarItem.vue b/theme/src/client/components/SidebarItem.vue index 1ca964f2..28d98cdb 100644 --- a/theme/src/client/components/SidebarItem.vue +++ b/theme/src/client/components/SidebarItem.vue @@ -147,8 +147,8 @@ function onCaretClick() { .text { flex-grow: 1; padding: 4px 0; - line-height: 24px; font-size: 14px; + line-height: 24px; transition: color 0.25s; } @@ -195,11 +195,11 @@ function onCaretClick() { .caret { display: flex; - justify-content: center; align-items: center; - margin-right: -7px; + justify-content: center; width: 32px; height: 32px; + margin-right: -7px; color: var(--vp-c-text-3); cursor: pointer; transition: color 0.25s; @@ -216,9 +216,9 @@ function onCaretClick() { .caret-icon { width: 18px; height: 18px; - fill: currentColor; - transform: rotate(90deg); + fill: currentcolor; transition: transform 0.25s; + transform: rotate(90deg); } .sidebar-item.collapsed .caret-icon { @@ -230,8 +230,8 @@ function onCaretClick() { .sidebar-item.level-3 .items, .sidebar-item.level-4 .items, .sidebar-item.level-5 .items { - border-left: 1px solid var(--vp-c-divider); padding-left: 16px; + border-left: 1px solid var(--vp-c-divider); } .sidebar-item.collapsed .items { diff --git a/theme/src/client/components/SkipLink.vue b/theme/src/client/components/SkipLink.vue index a4eb6070..b9c73e00 100644 --- a/theme/src/client/components/SkipLink.vue +++ b/theme/src/client/components/SkipLink.vue @@ -44,25 +44,25 @@ function focusOnTargetAnchor({ target }: Event) { .skip-link { top: 8px; left: 8px; - padding: 8px 16px; z-index: 999; - border-radius: 8px; + padding: 8px 16px; font-size: 12px; font-weight: bold; - text-decoration: none; color: var(--vp-c-brand-1); - box-shadow: var(--vp-shadow-3); + text-decoration: none; background-color: var(--vp-c-bg); + border-radius: 8px; + box-shadow: var(--vp-shadow-3); } .skip-link:focus { - height: auto; width: auto; + height: auto; clip: auto; clip-path: none; } -@media (min-width: 1280px) { +@media (width >= 1280px) { .skip-link { top: 14px; left: 16px; diff --git a/theme/src/client/components/SocialLink.vue b/theme/src/client/components/SocialLink.vue index 0fe81894..fb866493 100644 --- a/theme/src/client/components/SocialLink.vue +++ b/theme/src/client/components/SocialLink.vue @@ -29,8 +29,8 @@ const svg = computed(() => { diff --git a/theme/src/client/components/Switch.vue b/theme/src/client/components/Switch.vue index 6d997e03..05eba422 100644 --- a/theme/src/client/components/Switch.vue +++ b/theme/src/client/components/Switch.vue @@ -11,13 +11,13 @@ diff --git a/theme/src/client/components/Tags.vue b/theme/src/client/components/Tags.vue index 26a0d738..1e4a8e8e 100644 --- a/theme/src/client/components/Tags.vue +++ b/theme/src/client/components/Tags.vue @@ -37,69 +37,75 @@ const { tags: tagsLink } = useBlogExtract() diff --git a/theme/src/client/components/VFooter.vue b/theme/src/client/components/VFooter.vue index 2b45dec2..a293aa14 100644 --- a/theme/src/client/components/VFooter.vue +++ b/theme/src/client/components/VFooter.vue @@ -31,9 +31,9 @@ const { hasSidebar } = useSidebar() .plume-footer { position: relative; z-index: var(--vp-z-index-footer); - border-top: 1px solid var(--vp-c-gutter); padding: 32px 24px; background-color: var(--vp-c-bg); + border-top: 1px solid var(--vp-c-gutter); transition: all 0.25s; } @@ -54,23 +54,23 @@ const { hasSidebar } = useSidebar() text-underline-offset: 4px; } -@media (min-width: 768px) { +@media (width >= 768px) { .plume-footer { padding: 32px; } } .container { - margin: 0 auto; max-width: var(--vp-layout-max-width); + margin: 0 auto; text-align: center; } .message, .copyright { - line-height: 24px; font-size: 14px; font-weight: 500; + line-height: 24px; color: var(--vp-c-text-2); } diff --git a/theme/src/client/components/global/Badge.vue b/theme/src/client/components/global/Badge.vue index 32e3b55f..5adc871b 100644 --- a/theme/src/client/components/global/Badge.vue +++ b/theme/src/client/components/global/Badge.vue @@ -18,13 +18,13 @@ withDefaults(defineProps(), { diff --git a/theme/src/client/components/global/ExternalLinkIcon.vue b/theme/src/client/components/global/ExternalLinkIcon.vue index db7214fe..190a68f3 100644 --- a/theme/src/client/components/global/ExternalLinkIcon.vue +++ b/theme/src/client/components/global/ExternalLinkIcon.vue @@ -9,11 +9,11 @@ import IconExternalLink from '../icons/IconExternalLink.vue' diff --git a/theme/src/client/composables/blog.ts b/theme/src/client/composables/blog.ts index ab6957bc..86c61aa5 100644 --- a/theme/src/client/composables/blog.ts +++ b/theme/src/client/composables/blog.ts @@ -1,8 +1,8 @@ import { usePageLang } from '@vuepress/client' import { useBlogPostData } from '@vuepress-plume/plugin-blog-data/client' -import { computed, ref } from 'vue' +import { computed } from 'vue' import type { PlumeThemeBlogPostItem } from '../../shared/index.js' -import { useLocaleLink, useThemeLocaleData } from '../composables/index.js' +import { useLocaleLink, useRouteQuery, useThemeLocaleData } from '../composables/index.js' import { getRandomColor, toArray } from '../utils/index.js' export function useLocalePostList() { @@ -33,10 +33,18 @@ export function usePostListControl() { return next.sticky > prev.sticky ? 1 : -1 }), ...otherList, - ] + ] as PlumeThemeBlogPostItem[] }) - const page = ref(1) + const page = useRouteQuery('p', 1, { + mode: 'push', + transform(val) { + const page = Number(val) + if (!Number.isNaN(page) && page > 0) + return page + return 1 + }, + }) const totalPage = computed(() => { if (blog.value.pagination === false) @@ -133,14 +141,15 @@ export function useTags() { })) }) - const postList = ref([]) - const currentTag = ref() + const currentTag = useRouteQuery('tag') - const handleTagClick = (tag: string) => { - currentTag.value = tag - postList.value = list.value.filter((item) => { + const postList = computed(() => { + if (!currentTag.value) + return [] + + return list.value.filter((item) => { if (item.tags) - return toArray(item.tags).includes(tag) + return toArray(item.tags).includes(currentTag.value) return false }).map(item => ({ @@ -148,6 +157,10 @@ export function useTags() { path: item.path, createTime: item.createTime.split(' ')[0].replace(/\//g, '-'), })) + }) + + const handleTagClick = (tag: string) => { + currentTag.value = tag } return { diff --git a/theme/src/client/composables/index.ts b/theme/src/client/composables/index.ts index 77c180f4..7b4e0e11 100644 --- a/theme/src/client/composables/index.ts +++ b/theme/src/client/composables/index.ts @@ -8,3 +8,4 @@ export * from './page.js' export * from './readingTime.js' export * from './blog.js' export * from './locale.js' +export * from './useRouteQuery.js' diff --git a/theme/src/client/composables/useRouteQuery.ts b/theme/src/client/composables/useRouteQuery.ts new file mode 100644 index 00000000..b4eb7e63 --- /dev/null +++ b/theme/src/client/composables/useRouteQuery.ts @@ -0,0 +1,126 @@ +import { customRef, nextTick, toValue, watch } from 'vue' +import type { MaybeRef, MaybeRefOrGetter, Ref } from 'vue' +import { useRoute, useRouter } from 'vue-router' +import type { RouteParamValueRaw, Router } from 'vue-router' +import { tryOnScopeDispose } from '@vueuse/core' + +export type RouteQueryValueRaw = RouteParamValueRaw | string[] + +export interface ReactiveRouteOptions { + /** + * Mode to update the router query, ref is also acceptable + * + * @default 'replace' + */ + mode?: MaybeRef<'replace' | 'push'> + + /** + * Route instance, use `useRoute()` if not given + */ + route?: ReturnType + + /** + * Router instance, use `useRouter()` if not given + */ + router?: ReturnType +} + +export interface ReactiveRouteOptionsWithTransform extends ReactiveRouteOptions { + /** + * Function to transform data before return + */ + transform?: (val: V) => R +} + +const _queue = new WeakMap>() + +export function useRouteQuery( + name: string +): Ref + +export function useRouteQuery< + T extends RouteQueryValueRaw = RouteQueryValueRaw, + K = T, +>( + name: string, + defaultValue?: MaybeRefOrGetter, + options?: ReactiveRouteOptionsWithTransform +): Ref + +export function useRouteQuery< + T extends RouteQueryValueRaw = RouteQueryValueRaw, + K = T, +>( + name: string, + defaultValue?: MaybeRefOrGetter, + options: ReactiveRouteOptionsWithTransform = {}, +): Ref { + const { + mode = 'replace', + route = useRoute(), + router = useRouter(), + transform = value => value as any as K, + } = options + + if (!_queue.has(router)) + _queue.set(router, new Map()) + + const _queriesQueue = _queue.get(router)! + + let query = route.query[name] as any + + tryOnScopeDispose(() => { + query = undefined + }) + + let _trigger: () => void + + const proxy = customRef((track, trigger) => { + _trigger = trigger + + return { + get() { + track() + + return transform(query !== undefined ? query : toValue(defaultValue)) + }, + set(v) { + if (query === v) + return + + query = v + _queriesQueue.set(name, v) + + trigger() + + nextTick(() => { + if (_queriesQueue.size === 0) + return + + const newQueries = Object.fromEntries(_queriesQueue.entries()) + _queriesQueue.clear() + + const { params, query, hash } = route + + router[toValue(mode)]({ + params, + query: { ...query, ...newQueries }, + hash, + }) + }) + }, + } + }) + + watch( + () => route.query[name], + (v) => { + query = v + + _trigger() + }, + { flush: 'sync' }, + ) + + return proxy as any as Ref +} diff --git a/theme/src/client/layouts/NotFound.vue b/theme/src/client/layouts/NotFound.vue index 892794e3..96155109 100644 --- a/theme/src/client/layouts/NotFound.vue +++ b/theme/src/client/layouts/NotFound.vue @@ -46,36 +46,36 @@ const themeData = useThemeLocaleData() text-align: center; } -@media (min-width: 768px) { +@media (width >= 768px) { .not-found { padding: 96px 32px 168px; } } .code { - line-height: 64px; font-size: 64px; font-weight: 600; + line-height: 64px; } .title { padding-top: 12px; - letter-spacing: 2px; - line-height: 20px; font-size: 20px; font-weight: 700; + line-height: 20px; + letter-spacing: 2px; } .divider { - margin: 24px auto 18px; width: 64px; height: 1px; + margin: 24px auto 18px; background-color: var(--vp-c-divider); } .quote { - margin: 0 auto; max-width: 256px; + margin: 0 auto; font-size: 14px; font-weight: 500; color: var(--vp-c-text-2); @@ -87,19 +87,19 @@ const themeData = useThemeLocaleData() .link { display: inline-block; - border: 1px solid var(--vp-c-brand); - border-radius: 16px; padding: 3px 16px; font-size: 14px; font-weight: 500; color: var(--vp-c-brand); + border: 1px solid var(--vp-c-brand); + border-radius: 16px; transition: border-color 0.25s, color 0.25s; } .link:hover { - border-color: var(--vp-c-brand-dark); color: var(--vp-c-brand-dark); + border-color: var(--vp-c-brand-dark); } diff --git a/theme/src/client/styles/code.scss b/theme/src/client/styles/code.scss index 02fa7182..1af415c7 100644 --- a/theme/src/client/styles/code.scss +++ b/theme/src/client/styles/code.scss @@ -9,19 +9,19 @@ html:not(.dark) .vp-code span { .plume-content { pre { padding: 1.3rem 1.5rem; - margin: 0 0 0.85rem 0; - border-radius: 6px; + margin: 0 0 0.85rem; overflow: auto; + font-size: 14px; + border-radius: 6px; scrollbar-width: thin; scrollbar-color: var(--vp-c-brand-1) var(--vp-c-border); - font-size: 14px; code { - color: #fff; padding: 0; + color: #fff; + overflow-wrap: unset; background-color: transparent; border-radius: 0; - overflow-wrap: unset; -webkit-font-smoothing: auto; -moz-osx-font-smoothing: auto; } @@ -32,26 +32,26 @@ html:not(.dark) .vp-code span { } .code-tabs { - .div[class*='language-'] { + .div[class*="language-"] { border-top-left-radius: 0; border-top-right-radius: 0; } } } -div[class*='language-'] { +div[class*="language-"] { position: relative; background-color: var(--vp-code-block-bg); border-radius: 6px; &::before { - content: attr(data-ext); position: absolute; - z-index: 3; top: 0.8em; right: 1em; + z-index: 3; font-size: 0.75rem; color: var(--vp-code-line-number-color); + content: attr(data-ext); } code { @@ -60,20 +60,21 @@ div[class*='language-'] { } pre { - // force override the background color to be compatible with shiki - background: transparent !important; position: relative; z-index: 1; + + // force override the background color to be compatible with shiki + background: transparent !important; } .highlight-lines { - user-select: none; - padding-top: 1.3rem; position: absolute; top: 0; left: 0; width: 100%; + padding-top: 1.3rem; line-height: 1.5; + user-select: none; .highlight-line { background-color: var(--vp-c-default-soft); @@ -91,19 +92,19 @@ div[class*='language-'] { position: relative; &::before { - content: ' '; position: absolute; - z-index: 2; - left: 0; top: 0; + left: 0; + z-index: 2; display: block; height: 100%; + content: " "; } } pre { - margin-left: 2rem; padding-left: 1rem; + margin-left: 2rem; vertical-align: middle; } @@ -111,40 +112,40 @@ div[class*='language-'] { position: absolute; top: 0; left: 0; + z-index: 1; width: 2rem; height: 100%; - text-align: center; - z-index: 1; - color: var(--vp-code-line-number-color); padding-top: 1.25rem; line-height: var(--vp-code-line-height); + color: var(--vp-code-line-number-color); + text-align: center; counter-reset: line-number; border-right: var(--vp-code-block-divider-color) 1px solid; .line-number { position: relative; z-index: 3; - user-select: none; height: 1.5rem; + user-select: none; &::before { - counter-increment: line-number; - content: counter(line-number); font-size: 0.85em; + content: counter(line-number); + counter-increment: line-number; } } } } } -.plume-content [class*='language-'] code .highlighted { +.plume-content [class*="language-"] code .highlighted { + z-index: 2; + display: inline-block; + width: calc(100% + 2 * 24px); + padding: 0 24px; + margin: 0 -24px; background-color: var(--vp-code-line-highlight-color); transition: background-color 0.5s; - margin: 0 -24px; - padding: 0 24px; - width: calc(100% + 2 * 24px); - display: inline-block; - z-index: 2; &.error { background-color: var(--vp-code-line-error-color); @@ -155,12 +156,12 @@ div[class*='language-'] { } } -.plume-content [class*='language-'] code .diff { - transition: background-color 0.5s; - margin: 0 -24px; - padding: 0 24px; - width: calc(100% + 2 * 24px); +.plume-content [class*="language-"] code .diff { display: inline-block; + width: calc(100% + 2 * 24px); + padding: 0 24px; + margin: 0 -24px; + transition: background-color 0.5s; &::before { position: absolute; @@ -173,8 +174,8 @@ div[class*='language-'] { } &.remove::before { - content: '-'; color: var(--vp-code-line-diff-remove-symbol-color); + content: "-"; transform: translateX(-6px); } @@ -183,13 +184,13 @@ div[class*='language-'] { } &.add::before { - content: '+'; color: var(--vp-code-line-diff-add-symbol-color); + content: "+"; transform: translateX(-6px); } } -.plume-content [class*='language-'] .has-focused-lines .line:not(.has-focus) { +.plume-content [class*="language-"] .has-focused-lines .line:not(.has-focus) { filter: blur(0.095rem); opacity: 0.7; transition: @@ -197,27 +198,24 @@ div[class*='language-'] { opacity 0.35s; } -.plume-content - [class*='language-']:hover - .has-focused-lines - .line:not(.has-focus) { +.plume-content [class*="language-"]:hover .has-focused-lines .line:not(.has-focus) { filter: blur(0); opacity: 1; } .code-tabs-nav { - margin-bottom: 0rem; + margin-bottom: 0; } // narrow mobile -@media (max-width: 419px) { +@media (width <= 419px) { .plume-content { - div[class*='language-'] { + div[class*="language-"] { margin: 0.85rem -1.5rem; border-radius: 0; } - .hint-container div[class*='language-'] { + .hint-container div[class*="language-"] { margin: 0.85rem -1rem 0.85rem -1.25rem; } } diff --git a/theme/src/client/styles/content.scss b/theme/src/client/styles/content.scss index 8946d105..8ac8e934 100644 --- a/theme/src/client/styles/content.scss +++ b/theme/src/client/styles/content.scss @@ -14,18 +14,18 @@ } .plume-content h1 { - letter-spacing: -0.02em; - line-height: 40px; font-size: 28px; + line-height: 40px; + letter-spacing: -0.02em; } .plume-content h2 { - margin: 48px 0 16px; - border-top: 1px solid var(--vp-c-divider); padding-top: 24px; - letter-spacing: -0.02em; - line-height: 32px; + margin: 48px 0 16px; font-size: 24px; + line-height: 32px; + letter-spacing: -0.02em; + border-top: 1px solid var(--vp-c-divider); } .plume-content h2:first-of-type { @@ -34,15 +34,15 @@ .plume-content h3 { margin: 32px 0 0; - letter-spacing: -0.01em; - line-height: 28px; font-size: 20px; + line-height: 28px; + letter-spacing: -0.01em; } .plume-content .header-anchor { float: left; - margin-left: -0.87em; padding-right: 0.23em; + margin-left: -0.87em; font-weight: 500; user-select: none; opacity: 0; @@ -66,11 +66,11 @@ opacity: 1; } -@media (min-width: 768px) { +@media (width >= 768px) { .plume-content h1 { - letter-spacing: -0.02em; - line-height: 40px; font-size: 32px; + line-height: 40px; + letter-spacing: -0.02em; } } @@ -100,9 +100,9 @@ } .plume-content blockquote { + padding-left: 16px; margin: 16px 0; border-left: 2px solid var(--vp-c-divider); - padding-left: 16px; transition: border-color 0.5s; } @@ -166,9 +166,9 @@ .plume-content table { display: block; - border-collapse: collapse; margin: 20px 0; overflow-x: auto; + border-collapse: collapse; } .plume-content tr { @@ -183,15 +183,15 @@ .plume-content th, .plume-content td { - border: 1px solid var(--vp-c-divider); padding: 8px 16px; + border: 1px solid var(--vp-c-divider); } .plume-content th { - text-align: left; font-size: 14px; font-weight: 600; color: var(--vp-c-text-2); + text-align: left; background-color: var(--vp-c-bg-soft); } @@ -263,9 +263,9 @@ } .plume-content :not(pre) > code { - border-radius: 4px; padding: 3px 6px; background-color: var(--vp-code-bg); + border-radius: 4px; transition: color 0.25s, background-color 0.5s; diff --git a/theme/src/client/styles/fonts.scss b/theme/src/client/styles/fonts.scss index 394728cc..d1a4eee9 100644 --- a/theme/src/client/styles/fonts.scss +++ b/theme/src/client/styles/fonts.scss @@ -1,165 +1,239 @@ /* webfont-marker-begin */ -@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap'); +@import "https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"; html body { font-synthesis: style; } + /* webfont-marker-end */ @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: normal; - font-named-instance: 'Regular'; - src: url('../fonts/inter-roman-cyrillic.woff2') format('woff2'); + font-weight: 100 900; + src: url("../fonts/inter-roman-cyrillic.woff2") format("woff2"); + font-display: swap; unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; + font-named-instance: "Regular"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: normal; - font-named-instance: 'Regular'; - src: url('../fonts/inter-roman-cyrillic-ext.woff2') format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + font-weight: 100 900; + src: url("../fonts/inter-roman-cyrillic-ext.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0460-052F, + U+1C80-1C88, + U+20B4, + U+2DE0-2DFF, + U+A640-A69F, U+FE2E-FE2F; + font-named-instance: "Regular"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: normal; - font-named-instance: 'Regular'; - src: url('../fonts/inter-roman-greek.woff2') format('woff2'); + font-weight: 100 900; + src: url("../fonts/inter-roman-greek.woff2") format("woff2"); + font-display: swap; unicode-range: U+0370-03FF; + font-named-instance: "Regular"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: normal; - font-named-instance: 'Regular'; - src: url('../fonts/inter-roman-greek-ext.woff2') format('woff2'); + font-weight: 100 900; + src: url("../fonts/inter-roman-greek-ext.woff2") format("woff2"); + font-display: swap; unicode-range: U+1F00-1FFF; + font-named-instance: "Regular"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: normal; - font-named-instance: 'Regular'; - src: url('../fonts/inter-roman-latin.woff2') format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; + font-weight: 100 900; + src: url("../fonts/inter-roman-latin.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0000-00FF, + U+0131, + U+0152-0153, + U+02BB-02BC, + U+02C6, + U+02DA, + U+02DC, + U+2000-206F, + U+2074, + U+20AC, + U+2122, + U+2191, + U+2193, + U+2212, + U+2215, + U+FEFF, + U+FFFD; + font-named-instance: "Regular"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: normal; - font-named-instance: 'Regular'; - src: url('../fonts/inter-roman-latin-ext.woff2') format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, - U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; + font-weight: 100 900; + src: url("../fonts/inter-roman-latin-ext.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0100-024F, + U+0259, + U+1E00-1EFF, + U+2020, + U+20A0-20AB, + U+20AD-20CF, + U+2113, + U+2C60-2C7F, + U+A720-A7FF; + font-named-instance: "Regular"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: normal; - font-named-instance: 'Regular'; - src: url('../fonts/inter-roman-vietnamese.woff2') format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, - U+01AF-01B0, U+1EA0-1EF9, U+20AB; + font-weight: 100 900; + src: url("../fonts/inter-roman-vietnamese.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0102-0103, + U+0110-0111, + U+0128-0129, + U+0168-0169, + U+01A0-01A1, + U+01AF-01B0, + U+1EA0-1EF9, + U+20AB; + font-named-instance: "Regular"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: italic; - font-named-instance: 'Italic'; - src: url('../fonts/inter-italic-cyrillic.woff2') format('woff2'); + font-weight: 100 900; + src: url("../fonts/inter-italic-cyrillic.woff2") format("woff2"); + font-display: swap; unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; + font-named-instance: "Italic"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: italic; - font-named-instance: 'Italic'; - src: url('../fonts/inter-italic-cyrillic-ext.woff2') format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + font-weight: 100 900; + src: url("../fonts/inter-italic-cyrillic-ext.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0460-052F, + U+1C80-1C88, + U+20B4, + U+2DE0-2DFF, + U+A640-A69F, U+FE2E-FE2F; + font-named-instance: "Italic"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: italic; - font-named-instance: 'Italic'; - src: url('../fonts/inter-italic-greek.woff2') format('woff2'); + font-weight: 100 900; + src: url("../fonts/inter-italic-greek.woff2") format("woff2"); + font-display: swap; unicode-range: U+0370-03FF; + font-named-instance: "Italic"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: italic; - font-named-instance: 'Italic'; - src: url('../fonts/inter-italic-greek-ext.woff2') format('woff2'); + font-weight: 100 900; + src: url("../fonts/inter-italic-greek-ext.woff2") format("woff2"); + font-display: swap; unicode-range: U+1F00-1FFF; + font-named-instance: "Italic"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: italic; - font-named-instance: 'Italic'; - src: url('../fonts/inter-italic-latin.woff2') format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; + font-weight: 100 900; + src: url("../fonts/inter-italic-latin.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0000-00FF, + U+0131, + U+0152-0153, + U+02BB-02BC, + U+02C6, + U+02DA, + U+02DC, + U+2000-206F, + U+2074, + U+20AC, + U+2122, + U+2191, + U+2193, + U+2212, + U+2215, + U+FEFF, + U+FFFD; + font-named-instance: "Italic"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: italic; - font-named-instance: 'Italic'; - src: url('../fonts/inter-italic-latin-ext.woff2') format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, - U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; + font-weight: 100 900; + src: url("../fonts/inter-italic-latin-ext.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0100-024F, + U+0259, + U+1E00-1EFF, + U+2020, + U+20A0-20AB, + U+20AD-20CF, + U+2113, + U+2C60-2C7F, + U+A720-A7FF; + font-named-instance: "Italic"; } @font-face { - font-family: 'Inter var'; - font-weight: 100 900; - font-display: swap; + font-family: "Inter var"; font-style: italic; - font-named-instance: 'Italic'; - src: url('../fonts/inter-italic-vietnamese.woff2') format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, - U+01AF-01B0, U+1EA0-1EF9, U+20AB; + font-weight: 100 900; + src: url("../fonts/inter-italic-vietnamese.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0102-0103, + U+0110-0111, + U+0128-0129, + U+0168-0169, + U+01A0-01A1, + U+01AF-01B0, + U+1EA0-1EF9, + U+20AB; + font-named-instance: "Italic"; } /* Chinese quotes rendering fix. 中英文弯引号共享 Unicode 码位,确保引号使用中文字体渲染 */ @font-face { - font-family: 'Chinese Quotes'; - src: local('PingFang SC Regular'), local('PingFang SC'), local('SimHei'), - local('Source Han Sans SC'); + font-family: "Chinese Quotes"; + src: + local("PingFang SC Regular"), + local("PingFang SC"), + local("SimHei"), + local("Source Han Sans SC"); unicode-range: U+2018, U+2019, U+201C, U+201D; /* 分别是 ‘’“” */ } diff --git a/theme/src/client/styles/index.scss b/theme/src/client/styles/index.scss index eedffd8c..47417456 100644 --- a/theme/src/client/styles/index.scss +++ b/theme/src/client/styles/index.scss @@ -1,13 +1,11 @@ -@import '@vuepress/plugin-palette/palette'; - -@import 'vars'; -@import 'fonts'; -@import 'normalize'; -@import 'nprogress'; -@import 'utils'; -@import 'content'; -@import 'code'; -@import 'md-enhance'; -@import 'search'; - -@import '@vuepress/plugin-palette/style'; +@import "@vuepress/plugin-palette/palette"; +@import "vars"; +@import "fonts"; +@import "normalize"; +@import "nprogress"; +@import "utils"; +@import "content"; +@import "code"; +@import "md-enhance"; +@import "search"; +@import "@vuepress/plugin-palette/style"; diff --git a/theme/src/client/styles/md-enhance.scss b/theme/src/client/styles/md-enhance.scss index 53d8f906..d676d233 100644 --- a/theme/src/client/styles/md-enhance.scss +++ b/theme/src/client/styles/md-enhance.scss @@ -1,14 +1,20 @@ .plume-content { + @media (width <= 419px) { + .vp-code-demo { + margin: 8px -12px; + } + } + .hint-container { - border-radius: 8px; padding: 16px 16px 8px; - line-height: 24px; font-size: var(--vp-custom-block-font-size); + line-height: 24px; color: var(--vp-c-text-2); + border-radius: 8px; .hint-container-title { - font-weight: 600; margin-top: 0; + font-weight: 600; } p + p { @@ -20,18 +26,18 @@ color: inherit; } - div[class*='language-'] { + div[class*="language-"] { margin: 8px 0; } - div[class*='language-'] code { + div[class*="language-"] code { font-weight: 400; background-color: transparent; } &.note { - border-radius: 0; color: var(--vp-c-text-3); + border-radius: 0; } &.info { @@ -56,8 +62,8 @@ summary { margin: -1.5rem -1.5rem -1.1rem; font-weight: 700; - cursor: pointer; color: var(--vp-c-text-1); + cursor: pointer; } summary + p { @@ -73,39 +79,46 @@ code { color: var(--vp-c-brand-1); } + a:hover { color: var(--vp-c-brand-2); } } + &.important { a, code { color: var(--vp-c-purple-1); } + a:hover { color: var(--vp-c-purple-2); } } + &.warning { a, code { color: var(--vp-c-warning-1); } + a:hover { color: var(--vp-c-warning-2); } } + &.caution { a, code { color: var(--vp-c-danger-1); } + a:hover { color: var(--vp-c-danger-2); } } - [class*='language-'] .line-numbers { + [class*="language-"] .line-numbers { padding-top: 21px; } @@ -117,8 +130,15 @@ } .vp-code-demo { - border: solid 1px var(--vp-c-divider); overflow: hidden; + border: solid 1px var(--vp-c-divider); + + @media (width <= 419px) { + .vp-code-demo-codes div[class*="language-"] { + margin: 0; + border-radius: 0; + } + } &:hover { box-shadow: none; @@ -155,38 +175,27 @@ background-color: transparent; } - .vp-code-demo-codes div[class*='language-'] { + .vp-code-demo-codes div[class*="language-"] { border-bottom: 2px dashed var(--vp-c-divider); &:first-of-type { border-top: 1px solid var(--vp-c-divider); } + &:last-of-type { border-bottom: none; } } - .vp-code-demo-codes div[class*='language-'] pre { + .vp-code-demo-codes div[class*="language-"] pre { margin-bottom: 0; border-radius: 0; } - - @media (max-width: 419px) { - .vp-code-demo-codes div[class*='language-'] { - margin: 0; - border-radius: 0; - } - } - } - - @media (max-width: 419px) { - .vp-code-demo { - margin: 8px -12px; - } } .task-list-container { padding-left: 0; + .task-list-item { input { width: 0; @@ -194,30 +203,169 @@ padding: 0; margin: 0; } + label { margin-left: 1.2em; } + input::before, input::after { - content: none; position: absolute; top: -1em; left: 0; - font-size: 1em; display: inline-block; + font-size: 1em; + content: none; } input::after { content: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" viewBox="0 0 32 32"%3E%3Cpath fill="%23c2c2c4" d="M26 27.5H6A1.5 1.5 0 0 1 4.5 26V6c0-.83.67-1.5 1.5-1.5h20c.828 0 1.5.67 1.5 1.5v20a1.5 1.5 0 0 1-1.5 1.5m-18.5-3h17v-17h-17z"%2F%3E%3C%2Fsvg%3E'); - border: none; background-color: transparent; + border: none; } input:checked[disabled]::after { content: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" viewBox="0 0 32 32"%3E%3Cpath fill="%23299764" d="M29.548 3.043a2.5 2.5 0 0 0-3.513.4L16 16.067l-3.508-4.414a2.5 2.5 0 0 0-3.915 3.112l5.465 6.875c.474.597 1.195.943 1.957.943s1.482-.35 1.957-.944L29.95 6.555c.86-1.08.68-2.654-.402-3.513zM24.5 24.5h-17v-17h12.756l2.385-3H6c-.83 0-1.5.67-1.5 1.5v20c0 .828.67 1.5 1.5 1.5h20a1.5 1.5 0 0 0 1.5-1.5V12.85l-3 3.774z"%2F%3E%3C%2Fsvg%3E'); - border: none; background-color: transparent; + border: none; } } } + + .vp-tabs { + margin: 1.5rem -0.75rem; + overflow: hidden; + border: 1px solid var(--vp-c-divider); + } + + .hint-container .vp-tabs { + margin: 1rem -0.45rem 1rem -0.75rem; + + .vp-tab { + padding: 0.45rem 0.75rem; + font-size: 14px; + + p { + margin: 8px 0; + } + } + } + + .footnotes-sep { + margin-top: 48px; + } + + .footnotes { + position: relative; + padding: 48px 0 12px 16px; + margin-left: -16px; + font-size: 14px; + border-left: 4px solid var(--vp-c-default-soft); + + @media (width >= 419px) { + & { + margin-left: 0; + } + } + + &::before { + position: absolute; + top: 12px; + left: 16px; + font-size: 16px; + font-weight: 700; + + [lang="zh-CN"] & { + content: "脚注:"; + } + + [lang="en-US"] & { + content: "Footnotes:"; + } + } + + ol { + margin: 0; + + p { + margin: 8px 0; + } + + li:first-of-type p:first-of-type { + margin-top: 0; + } + + li:last-of-type p:last-of-type { + margin-bottom: 0; + } + } + } + + .footnote-item { + padding-top: 0; + margin-top: 0; + + > p { + margin-bottom: 0; + } + } + + .footnote-backref { + position: relative; + color: transparent; + text-decoration: none; + + &:hover { + color: transparent; + } + + &::before { + position: absolute; + top: -0.4em; + left: 0; + font-size: 1em; + content: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" viewBox="0 0 48 48"%3E%3Cg fill="none" stroke="%23c2c2c4" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"%3E%3Cpath d="m13 8l-7 6l7 7"%2F%3E%3Cpath d="M6 14h22.994c6.883 0 12.728 5.62 12.996 12.5c.284 7.27-5.723 13.5-12.996 13.5H11.998"%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E'); + } + } + + .footnote-anchor { + top: 0; + } +} + +.plume-content { + figure { + position: relative; + display: flex; + flex-direction: column; + width: auto; + margin: 1rem auto; + text-align: center; + + img { + margin: 0 auto; + overflow: hidden; + } + + > a { + &[href^="http://"], + &[href^="https://"] { + &::after { + @media print { + content: ""; + } + } + } + + .external-icon { + display: none; + } + } + + figcaption { + display: inline-block; + margin: 6px auto; + font-size: 0.8rem; + } + } } diff --git a/theme/src/client/styles/normalize.scss b/theme/src/client/styles/normalize.scss index 6acd1076..0810c23f 100644 --- a/theme/src/client/styles/normalize.scss +++ b/theme/src/client/styles/normalize.scss @@ -2,13 +2,13 @@ *, ::before, ::after { - animation-delay: -1ms !important; - animation-duration: 1ms !important; - animation-iteration-count: 1 !important; background-attachment: initial !important; - scroll-behavior: auto !important; - transition-duration: 0s !important; transition-delay: 0s !important; + transition-duration: 0s !important; + animation-duration: 1ms !important; + animation-delay: -1ms !important; + animation-iteration-count: 1 !important; + scroll-behavior: auto !important; } } @@ -28,7 +28,7 @@ html { body { -webkit-text-size-adjust: 100%; font-synthesis: none; - text-rendering: optimizeLegibility; + text-rendering: optimizelegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -38,13 +38,13 @@ html.dark { } body { - margin: 0; width: 100%; min-width: 320px; min-height: 100vh; - line-height: 24px; + margin: 0; font-family: var(--vp-font-family-base); font-weight: 400; + line-height: 24px; direction: ltr; } @@ -52,8 +52,8 @@ html, body { color: var(--vp-c-text-1); background-color: var(--vp-c-bg); - transition-duration: 0.25s; transition-timing-function: ease; + transition-duration: 0.25s; transition-property: color, background-color; } @@ -68,9 +68,9 @@ h4, h5, h6 { margin: 0; - line-height: 24px; font-size: 16px; font-weight: 400; + line-height: 24px; } p { @@ -100,7 +100,7 @@ b { a, area, button, -[role='button'], +[role="button"], input, label, select, @@ -116,9 +116,9 @@ a { ol, ul { - list-style: none; - margin: 0; padding: 0; + margin: 0; + list-style: none; } blockquote { @@ -158,10 +158,10 @@ input, optgroup, select, textarea { - border: 0; padding: 0; line-height: inherit; color: inherit; + border: 0; } button { @@ -172,7 +172,7 @@ button { } button:enabled, -[role='button']:enabled { +[role="button"]:enabled { cursor: pointer; } @@ -220,11 +220,11 @@ textarea::placeholder { input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { - -webkit-appearance: none; margin: 0; + -webkit-appearance: none; } -input[type='number'] { +input[type="number"] { -moz-appearance: textfield; appearance: textfield; } @@ -239,8 +239,8 @@ select { } fieldset { - margin: 0; padding: 0; + margin: 0; } h1, diff --git a/theme/src/client/styles/search.scss b/theme/src/client/styles/search.scss index d6fe52bf..529d28e0 100644 --- a/theme/src/client/styles/search.scss +++ b/theme/src/client/styles/search.scss @@ -1,8 +1,8 @@ .search-box .suggestions { - box-shadow: var(--vp-shadow-3); top: 2.5rem; right: -1rem; - border-radius: 12px; padding: 16px 12px; background-color: var(--vp-c-bg); + border-radius: 12px; + box-shadow: var(--vp-shadow-3); } diff --git a/theme/src/client/styles/utils.scss b/theme/src/client/styles/utils.scss index ddb87b22..41bfe23e 100644 --- a/theme/src/client/styles/utils.scss +++ b/theme/src/client/styles/utils.scss @@ -2,10 +2,10 @@ position: absolute; width: 1px; height: 1px; - white-space: nowrap; + overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); - overflow: hidden; + white-space: nowrap; } .icon { diff --git a/theme/src/client/styles/vars.scss b/theme/src/client/styles/vars.scss index 82004a03..175cf89a 100644 --- a/theme/src/client/styles/vars.scss +++ b/theme/src/client/styles/vars.scss @@ -3,9 +3,8 @@ * -------------------------------------------------------------------------- */ :root { - --vp-c-white: #ffffff; - --vp-c-black: #000000; - + --vp-c-white: #fff; + --vp-c-black: #000; --vp-c-neutral: var(--vp-c-black); --vp-c-neutral-inverse: var(--vp-c-white); } @@ -125,9 +124,9 @@ * -------------------------------------------------------------------------- */ :root { - --vp-c-bg: #ffffff; + --vp-c-bg: #fff; --vp-c-bg-alt: #f6f6f7; - --vp-c-bg-elv: #ffffff; + --vp-c-bg-elv: #fff; --vp-c-bg-soft: #f6f6f7; } @@ -160,7 +159,7 @@ .dark { --vp-c-border: #3c3f44; --vp-c-divider: #2e2e32; - --vp-c-gutter: #000000; + --vp-c-gutter: #000; } /** @@ -245,12 +244,35 @@ * -------------------------------------------------------------------------- */ :root { - --vp-font-family-base: 'Chinese Quotes', 'Inter var', 'Inter', ui-sans-serif, - system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, - 'Helvetica Neue', Helvetica, Arial, 'Noto Sans', sans-serif, - 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; - --vp-font-family-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Monaco, - Consolas, 'Liberation Mono', 'Courier New', monospace; + --vp-font-family-base: + "Chinese Quotes", + "Inter var", + "Inter", + ui-sans-serif, + system-ui, + -apple-system, + blinkmacsystemfont, + "Segoe UI", + roboto, + "Helvetica Neue", + helvetica, + arial, + "Noto Sans", + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + --vp-font-family-mono: + ui-monospace, + sfmono-regular, + "SF Mono", + menlo, + monaco, + consolas, + "Liberation Mono", + "Courier New", + monospace; } /** @@ -301,7 +323,7 @@ * -------------------------------------------------------------------------- */ :root { - --vp-header-anchor-symbol: '#'; + --vp-header-anchor-symbol: "#"; } /** @@ -339,7 +361,7 @@ --vp-code-copy-code-hover-border-color: var(--vp-c-divider); --vp-code-copy-code-hover-bg: var(--vp-c-bg); --vp-code-copy-code-active-text: var(--vp-c-text-2); - --vp-code-copy-copied-text-content: 'Copied'; + --vp-code-copy-copied-text-content: "Copied"; // --vp-code-tab-divider: var(--vp-code-block-divider-color); // --vp-code-tab-text-color: var(--vp-c-text-2); @@ -349,8 +371,8 @@ // --vp-code-tab-active-bar-color: var(--vp-c-brand-1); } -html[lang='zh-CN'] { - --vp-code-copy-copied-text-content: '已复制'; +html[lang="zh-CN"] { + --vp-code-copy-copied-text-content: "已复制"; } /** @@ -509,6 +531,7 @@ html[lang='zh-CN'] { --vp-friends-link-color: var(--vp-c-brand-1); --vp-friends-border-color: var(--vp-c-border); } + /** * Component: Badge * -------------------------------------------------------------------------- */ @@ -631,6 +654,14 @@ html.dark { --code-demo-header-bg-color: var(--vp-c-bg-soft); } +/* md enhance tabs */ +:root { + --tab-bg-color: var(--vp-c-bg); + --tab-nav-bg-color: var(--vp-c-bg-soft); + --tab-nav-hover-color: var(--vp-c-bg); + --tab-nav-text-color: var(--vp-c-text-1); +} + :root { --t-color: 250ms ease; --code-bg-color: var(--vp-code-block-bg); diff --git a/theme/src/node/defaultOptions.ts b/theme/src/node/defaultOptions.ts index 9164b778..3a813158 100644 --- a/theme/src/node/defaultOptions.ts +++ b/theme/src/node/defaultOptions.ts @@ -18,9 +18,10 @@ const defaultLocales: NonNullable = { blog: { pagination: { prevPageText: '上一页', nextPageText: '下一页' } }, - outlineLabel: '内容大纲', + outlineLabel: '此页内容', returnToTopLabel: '返回顶部', editLinkText: '编辑此页', + contributorsText: '贡献者', lastUpdatedText: '上次更新', prevPageLabel: '上一页', nextPageLabel: '下一页', diff --git a/theme/src/node/plugins.ts b/theme/src/node/plugins.ts index 6d53c5d0..157d80c4 100644 --- a/theme/src/node/plugins.ts +++ b/theme/src/node/plugins.ts @@ -161,6 +161,7 @@ export function setupPlugins( { hint: true, // info note tip warning danger details codetabs: true, + tabs: true, align: true, mark: true, tasklist: true, @@ -168,6 +169,8 @@ export function setupPlugins( attrs: true, sup: true, sub: true, + alert: true, + footnote: true, katex: true, } as MarkdownEnhanceOptions, options.markdownEnhance || {}, @@ -175,8 +178,8 @@ export function setupPlugins( )) } - if (options.comment !== false) - plugins.push(commentPlugin(options.comment || {})) + if (options.comment) + plugins.push(commentPlugin(options.comment)) if (options.baiduTongji !== false && options.baiduTongji?.key) plugins.push(baiduTongjiPlugin(options.baiduTongji)) diff --git a/tsconfig.json b/tsconfig.json index 4f8e6589..9fdaa2c3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,6 +14,7 @@ "@internal/*": ["./docs/.vuepress/.temp/internal/*"], "@vuepress-plume/*": ["./plugins/*/src/node/index.ts"], "vuepress-theme-plume": ["./theme/src/node/index.ts"], + "@vuepress-plume/*/client": ["./plugins/*/src/client/index.ts"], "vuepress-plugin-netlify-functions": [ "./plugins/plugin-netlify-functions/src/node/index.ts" ]