From b46d6d3a204f5ce347647bfd1ab8073bf313afd6 Mon Sep 17 00:00:00 2001 From: Heptazhou Date: Sat, 12 Oct 2024 09:21:30 +0000 Subject: [PATCH 001/308] fix: broken rewrites on windows (#4268) --- src/node/markdownToVue.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/node/markdownToVue.ts b/src/node/markdownToVue.ts index 458837c0..21ea491b 100644 --- a/src/node/markdownToVue.ts +++ b/src/node/markdownToVue.ts @@ -63,14 +63,14 @@ export async function createMarkdownToVueRenderFn( const dynamicRoutes = new Map( siteConfig?.dynamicRoutes?.routes.map((r) => [ r.fullPath, - path.join(srcDir, r.route) + slash(path.join(srcDir, r.route)) ]) || [] ) const rewrites = new Map( Object.entries(siteConfig?.rewrites.map || {}).map(([key, value]) => [ - path.join(srcDir, key), - path.join(srcDir, value!) + slash(path.join(srcDir, key)), + slash(path.join(srcDir, value!)) ]) || [] ) From 461a5b001d29f95169f60fe28bc610e3f6e8fd66 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sat, 12 Oct 2024 17:15:11 +0530 Subject: [PATCH 002/308] fix(client): wrong script async check --- src/client/app/composables/head.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/app/composables/head.ts b/src/client/app/composables/head.ts index 708c16eb..f0296b18 100644 --- a/src/client/app/composables/head.ts +++ b/src/client/app/composables/head.ts @@ -87,7 +87,7 @@ function createHeadElement([tag, attrs, innerHTML]: HeadConfig) { if (innerHTML) { el.innerHTML = innerHTML } - if (tag === 'script' && !attrs.async) { + if (tag === 'script' && attrs.async == null) { // async is true by default for dynamically created scripts ;(el as HTMLScriptElement).async = false } From 92b92aefcab9fbb28b51da70ee8ab21724098277 Mon Sep 17 00:00:00 2001 From: Gunther Konig Date: Sat, 12 Oct 2024 15:09:36 +0300 Subject: [PATCH 003/308] fix(theme): improve local search input a11y (#4066) Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> --- .../components/VPLocalSearchBox.vue | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/client/theme-default/components/VPLocalSearchBox.vue b/src/client/theme-default/components/VPLocalSearchBox.vue index c8aded40..70624e42 100644 --- a/src/client/theme-default/components/VPLocalSearchBox.vue +++ b/src/client/theme-default/components/VPLocalSearchBox.vue @@ -440,10 +440,20 @@ function formMarkRegex(terms: Set) {
diff --git a/src/client/theme-default/components/VPNavBarMenuLink.vue b/src/client/theme-default/components/VPNavBarMenuLink.vue index e5c166a0..01e6ae75 100644 --- a/src/client/theme-default/components/VPNavBarMenuLink.vue +++ b/src/client/theme-default/components/VPNavBarMenuLink.vue @@ -22,13 +22,12 @@ const { page } = useData() ) }" :href="item.link" - :noIcon="item.noIcon" :target="item.target" :rel="item.rel" + :no-icon="item.noIcon" tabindex="0" - > - - + v-html="item.text" + /> + + +## VS Code IntelliSense Support + + + +Vue provides IntelliSense support out of the box via the [Vue - Official VS Code plugin](https://marketplace.visualstudio.com/items?itemName=Vue.volar). However, to enable it for `.md` files, you need to make some adjustments to the configuration files. + + +1. Add `.md` pattern to the `include` and `vueCompilerOptions.vitePressExtensions` options in the tsconfig/jsconfig file: + +::: code-group +```json [tsconfig.json] +{ + "include": [ + "docs/**/*.ts", + "docs/**/*.vue", + "docs/**/*.md", + ], + "vueCompilerOptions": { + "vitePressExtensions": [".md"], + }, +} +``` +::: + +2. Add `markdown` to the `vue.server.includeLanguages` option in the VS Code setting: + +::: code-group +```json [.vscode/settings.json] +{ + "vue.server.includeLanguages": ["vue", "markdown"] +} +``` +::: \ No newline at end of file diff --git a/docs/es/guide/using-vue.md b/docs/es/guide/using-vue.md index 97cfbf93..9d18d92d 100644 --- a/docs/es/guide/using-vue.md +++ b/docs/es/guide/using-vue.md @@ -254,3 +254,36 @@ import ComponentInHeader from '../../components/ComponentInHeader.vue' padding: 0 20px; } + +## Soporte de IntelliSense en VS Code + + + +Vue ofrece soporte para IntelliSense de forma predeterminada mediante el [Plugin oficial de Vue para VS Code](https://marketplace.visualstudio.com/items?itemName=Vue.volar). Sin embargo, para habilitarlo en archivos `.md`, es necesario realizar algunos ajustes en los archivos de configuración. + +1. Agrega el patrón `.md` a las opciones `include` y `vueCompilerOptions.vitePressExtensions` en el archivo tsconfig/jsconfig: + +::: code-group +```json [tsconfig.json] +{ + "include": [ + "docs/**/*.ts", + "docs/**/*.vue", + "docs/**/*.md", + ], + "vueCompilerOptions": { + "vitePressExtensions": [".md"], + }, +} +``` +::: + +2. Agrega `markdown` a la opción `vue.server.includeLanguages` en el archivo de configuración de VS Code + +::: code-group +```json [.vscode/settings.json] +{ + "vue.server.includeLanguages": ["vue", "markdown"] +} +``` +::: \ No newline at end of file From cfcc37d9aab5d2b8ff9a60f04f46ddace21c25ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8C=86=E5=8C=86=E5=AD=91=E7=84=B6?= <91577863+ccjr1120@users.noreply.github.com> Date: Fri, 18 Oct 2024 05:26:33 +0800 Subject: [PATCH 021/308] docs: fix use pnpm action-setup (#4294) Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> --- docs/en/guide/deploy.md | 4 +++- docs/es/guide/deploy.md | 2 ++ docs/ko/guide/deploy.md | 2 ++ docs/pt/guide/deploy.md | 2 ++ docs/ru/guide/deploy.md | 2 ++ docs/zh/guide/deploy.md | 4 +++- 6 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/en/guide/deploy.md b/docs/en/guide/deploy.md index 852fb868..fe7ac715 100644 --- a/docs/en/guide/deploy.md +++ b/docs/en/guide/deploy.md @@ -156,7 +156,9 @@ Don't enable options like _Auto Minify_ for HTML code. It will remove comments f uses: actions/checkout@v4 with: fetch-depth: 0 # Not needed if lastUpdated is not enabled - # - uses: pnpm/action-setup@v3 # Uncomment this if you're using pnpm + # - uses: pnpm/action-setup@v3 # Uncomment this block if you're using pnpm + # with: + # version: 9 # Not needed if you've set "packageManager" in package.json # - uses: oven-sh/setup-bun@v1 # Uncomment this if you're using Bun - name: Setup Node uses: actions/setup-node@v4 diff --git a/docs/es/guide/deploy.md b/docs/es/guide/deploy.md index a73f4316..77ec8c13 100644 --- a/docs/es/guide/deploy.md +++ b/docs/es/guide/deploy.md @@ -157,6 +157,8 @@ No active opciones como _Auto Minify_ para código HTML. Eso removera comentario with: fetch-depth: 0 # No necesario se lastUpdated no estuviera habilitado # - uses: pnpm/action-setup@v3 # Desconecte eso si estuviera usando pnpm + # with: + # version: 9 # - uses: oven-sh/setup-bun@v1 # Desconecte eso se estuviera usando Bun - name: Setup Node uses: actions/setup-node@v4 diff --git a/docs/ko/guide/deploy.md b/docs/ko/guide/deploy.md index 5da3efa3..145d7a78 100644 --- a/docs/ko/guide/deploy.md +++ b/docs/ko/guide/deploy.md @@ -156,6 +156,8 @@ HTML 코드에 대해 _Auto Minify_ 옵션을 활성화하지 마세요. 이는 with: fetch-depth: 0 # lastUpdated가 활성화되지 않은 경우 필요하지 않음 # - uses: pnpm/action-setup@v3 # pnpm을 사용하는 경우 주석 해제 + # with: + # version: 9 # - uses: oven-sh/setup-bun@v1 # Bun을 사용하는 경우 주석 해제 - name: Setup Node uses: actions/setup-node@v4 diff --git a/docs/pt/guide/deploy.md b/docs/pt/guide/deploy.md index e853aa37..01d02671 100644 --- a/docs/pt/guide/deploy.md +++ b/docs/pt/guide/deploy.md @@ -157,6 +157,8 @@ Não ative opções como _Auto Minify_ para código HTML. Isso removerá coment with: fetch-depth: 0 # Não necessário se lastUpdated não estiver habilitado # - uses: pnpm/action-setup@v3 # Descomente isso se estiver usando pnpm + # with: + # version: 9 # - uses: oven-sh/setup-bun@v1 # Descomente isso se estiver usando Bun - name: Setup Node uses: actions/setup-node@v4 diff --git a/docs/ru/guide/deploy.md b/docs/ru/guide/deploy.md index 7825cbdd..2b1fd2e6 100644 --- a/docs/ru/guide/deploy.md +++ b/docs/ru/guide/deploy.md @@ -157,6 +157,8 @@ Cache-Control: max-age=31536000,immutable with: fetch-depth: 0 # Не требуется, если функция lastUpdated не включена # - uses: pnpm/action-setup@v3 # Раскомментируйте, если вы используете pnpm + # with: + # version: 9 # - uses: oven-sh/setup-bun@v1 # Раскомментируйте, если вы используете Bun - name: Setup Node uses: actions/setup-node@v4 diff --git a/docs/zh/guide/deploy.md b/docs/zh/guide/deploy.md index 26a51df0..36ff9570 100644 --- a/docs/zh/guide/deploy.md +++ b/docs/zh/guide/deploy.md @@ -156,7 +156,9 @@ Cache-Control: max-age=31536000,immutable uses: actions/checkout@v4 with: fetch-depth: 0 # 如果未启用 lastUpdated,则不需要 - # - uses: pnpm/action-setup@v3 # 如果使用 pnpm,请取消注释 + # - uses: pnpm/action-setup@v3 # 如果使用 pnpm,请取消此区域注释 + # with: + # version: 9 # - uses: oven-sh/setup-bun@v1 # 如果使用 Bun,请取消注释 - name: Setup Node uses: actions/setup-node@v4 From 668e9f7050f236d571fe2fc2f41e5548d974b503 Mon Sep 17 00:00:00 2001 From: Jungzl <13jungzl@gmail.com> Date: Fri, 18 Oct 2024 14:16:31 +0800 Subject: [PATCH 022/308] fix(theme): remove some explicit Chinese fonts (#4286) --- src/client/theme-default/styles/vars.css | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/client/theme-default/styles/vars.css b/src/client/theme-default/styles/vars.css index 8d75d59b..bea317d1 100644 --- a/src/client/theme-default/styles/vars.css +++ b/src/client/theme-default/styles/vars.css @@ -270,9 +270,8 @@ :root:where(:lang(zh)) { --vp-font-family-base: 'Punctuation SC', 'Inter', ui-sans-serif, system-ui, - 'PingFang SC', 'Noto Sans CJK SC', 'Noto Sans SC', 'Heiti SC', - 'Microsoft YaHei', 'DengXian', sans-serif, 'Apple Color Emoji', - 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + 'PingFang SC', 'Noto Sans CJK SC', 'Noto Sans SC', sans-serif, + 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } /** From b8935502fbb590449e7d094bdde9c9ae1ac67d0c Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Fri, 18 Oct 2024 14:04:53 +0530 Subject: [PATCH 023/308] fix: remove explicit chinese fonts these are already handled by `sans-serif` PingFang SC is used on macOS Noto Sans CJK is used on Ubuntu Microsoft YaHei is used on Windows follow up on #4286 --- src/client/theme-default/styles/vars.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/client/theme-default/styles/vars.css b/src/client/theme-default/styles/vars.css index bea317d1..1a84f90b 100644 --- a/src/client/theme-default/styles/vars.css +++ b/src/client/theme-default/styles/vars.css @@ -270,8 +270,8 @@ :root:where(:lang(zh)) { --vp-font-family-base: 'Punctuation SC', 'Inter', ui-sans-serif, system-ui, - 'PingFang SC', 'Noto Sans CJK SC', 'Noto Sans SC', sans-serif, - 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; } /** From d870ba48ea30aa496cfeb2198a21344047c5867b Mon Sep 17 00:00:00 2001 From: dmnq <147017156+dmnq2000@users.noreply.github.com> Date: Tue, 22 Oct 2024 17:09:17 +0800 Subject: [PATCH 024/308] docs(zh): fix postcss configuration file path (#4301) --- docs/zh/guide/markdown.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/guide/markdown.md b/docs/zh/guide/markdown.md index 8755c330..b3cab727 100644 --- a/docs/zh/guide/markdown.md +++ b/docs/zh/guide/markdown.md @@ -245,7 +245,7 @@ Wraps in a From 81fc1481989b49eaa3fb1740ffff997755ca6e37 Mon Sep 17 00:00:00 2001 From: "Sun .P.M" <35005831+sunpm@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:42:48 +0800 Subject: [PATCH 026/308] style(theme): do not copy `lang` when copying text (#4316) style(theme/vp-doc): let lang unselectable. --- src/client/theme-default/styles/components/vp-doc.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/client/theme-default/styles/components/vp-doc.css b/src/client/theme-default/styles/components/vp-doc.css index 379a94ce..a13ddc27 100644 --- a/src/client/theme-default/styles/components/vp-doc.css +++ b/src/client/theme-default/styles/components/vp-doc.css @@ -514,6 +514,7 @@ z-index: 2; font-size: 12px; font-weight: 500; + user-select: none; color: var(--vp-code-lang-color); transition: color 0.4s, From 45968cdc509e04f8e191d28ba7d8d97b08fc578e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9ban?= Date: Tue, 29 Oct 2024 14:44:37 +0100 Subject: [PATCH 027/308] fix: cache markdown it instance and properly dispose shiki on config reload (#4321) This results in over 5x speedup in build times of certain projects. But this comes at the cost of correctness. `createMarkdownRenderer` now ignores any arguments passed by user. But from our GitHub code search we didn't find any user passing options different than their siteConfig to this function. If you are doing that, please open an issue and we can discuss the best way forward. --- Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> --- package.json | 34 +- pnpm-lock.yaml | 624 +++++++++++++------------ src/node/contentLoader.ts | 29 +- src/node/markdown/markdown.ts | 36 +- src/node/markdown/plugins/highlight.ts | 167 +++---- src/node/plugin.ts | 2 + 6 files changed, 469 insertions(+), 423 deletions(-) diff --git a/package.json b/package.json index 22320213..5ee61255 100644 --- a/package.json +++ b/package.json @@ -100,20 +100,20 @@ "dependencies": { "@docsearch/css": "^3.6.2", "@docsearch/js": "^3.6.2", - "@shikijs/core": "^1.22.0", - "@shikijs/transformers": "^1.22.0", - "@shikijs/types": "^1.22.0", + "@shikijs/core": "^1.22.2", + "@shikijs/transformers": "^1.22.2", + "@shikijs/types": "^1.22.2", "@types/markdown-it": "^14.1.2", "@vitejs/plugin-vue": "^5.1.4", - "@vue/devtools-api": "^7.4.6", + "@vue/devtools-api": "^7.5.4", "@vue/shared": "^3.5.12", "@vueuse/core": "^11.1.0", "@vueuse/integrations": "^11.1.0", "focus-trap": "^7.6.0", "mark.js": "8.11.1", "minisearch": "^7.1.0", - "shiki": "^1.22.0", - "vite": "^5.4.8", + "shiki": "^1.22.2", + "vite": "^5.4.10", "vue": "^3.5.12" }, "devDependencies": { @@ -127,7 +127,7 @@ "@mdit-vue/shared": "^2.1.3", "@polka/compression": "^1.0.0-next.28", "@rollup/plugin-alias": "^5.1.1", - "@rollup/plugin-commonjs": "^28.0.0", + "@rollup/plugin-commonjs": "^28.0.1", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.3.0", "@rollup/plugin-replace": "^6.0.1", @@ -141,7 +141,7 @@ "@types/markdown-it-emoji": "^3.0.1", "@types/micromatch": "^4.0.9", "@types/minimist": "^1.2.5", - "@types/node": "^22.7.5", + "@types/node": "^22.8.2", "@types/postcss-prefix-selector": "^1.16.3", "@types/prompts": "^2.4.9", "chokidar": "^3.6.0", @@ -149,7 +149,7 @@ "cross-spawn": "^7.0.3", "debug": "^4.3.7", "esbuild": "^0.24.0", - "execa": "^9.4.0", + "execa": "^9.5.1", "fs-extra": "^11.2.0", "get-port": "^7.1.0", "gray-matter": "^4.0.3", @@ -164,20 +164,20 @@ "markdown-it-mathjax3": "^4.3.2", "micromatch": "^4.0.8", "minimist": "^1.2.8", - "nanoid": "^5.0.7", + "nanoid": "^5.0.8", "ora": "^8.1.0", "p-map": "^7.0.2", "path-to-regexp": "^6.3.0", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "pkg-dir": "^8.0.0", - "playwright-chromium": "^1.48.0", + "playwright-chromium": "^1.48.2", "polka": "^1.0.0-next.28", "postcss-prefix-selector": "^2.1.0", "prettier": "^3.3.3", "prompts": "^2.4.2", "punycode": "^2.3.1", "rimraf": "^6.0.1", - "rollup": "^4.24.0", + "rollup": "^4.24.2", "rollup-plugin-dts": "^6.1.1", "rollup-plugin-esbuild": "^6.1.1", "semver": "^7.6.3", @@ -185,10 +185,10 @@ "sirv": "^3.0.0", "sitemap": "^8.0.0", "supports-color": "^9.4.0", - "tinyglobby": "^0.2.9", + "tinyglobby": "^0.2.10", "typescript": "^5.6.3", - "vitest": "^2.1.2", - "vue-tsc": "^2.1.6", + "vitest": "^2.1.4", + "vue-tsc": "^2.1.8", "wait-on": "^8.0.1" }, "peerDependencies": { @@ -203,7 +203,7 @@ "optional": true } }, - "packageManager": "pnpm@9.12.1", + "packageManager": "pnpm@9.12.3", "pnpm": { "peerDependencyRules": { "ignoreMissing": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46afb51a..333cabfa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,23 +23,23 @@ importers: specifier: ^3.6.2 version: 3.6.2(@algolia/client-search@4.24.0) '@shikijs/core': - specifier: ^1.22.0 - version: 1.22.0 + specifier: ^1.22.2 + version: 1.22.2 '@shikijs/transformers': - specifier: ^1.22.0 - version: 1.22.0 + specifier: ^1.22.2 + version: 1.22.2 '@shikijs/types': - specifier: ^1.22.0 - version: 1.22.0 + specifier: ^1.22.2 + version: 1.22.2 '@types/markdown-it': specifier: ^14.1.2 version: 14.1.2 '@vitejs/plugin-vue': specifier: ^5.1.4 - version: 5.1.4(vite@5.4.8(@types/node@22.7.5))(vue@3.5.12(typescript@5.6.3)) + version: 5.1.4(vite@5.4.10(@types/node@22.8.2))(vue@3.5.12(typescript@5.6.3)) '@vue/devtools-api': - specifier: ^7.4.6 - version: 7.4.6 + specifier: ^7.5.4 + version: 7.5.4 '@vue/shared': specifier: ^3.5.12 version: 3.5.12 @@ -59,11 +59,11 @@ importers: specifier: ^7.1.0 version: 7.1.0 shiki: - specifier: ^1.22.0 - version: 1.22.0 + specifier: ^1.22.2 + version: 1.22.2 vite: - specifier: ^5.4.8 - version: 5.4.8(@types/node@22.7.5) + specifier: ^5.4.10 + version: 5.4.10(@types/node@22.8.2) vue: specifier: ^3.5.12 version: 3.5.12(typescript@5.6.3) @@ -97,19 +97,19 @@ importers: version: 1.0.0-next.28 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.24.0) + version: 5.1.1(rollup@4.24.2) '@rollup/plugin-commonjs': - specifier: ^28.0.0 - version: 28.0.0(rollup@4.24.0) + specifier: ^28.0.1 + version: 28.0.1(rollup@4.24.2) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.24.0) + version: 6.1.0(rollup@4.24.2) '@rollup/plugin-node-resolve': specifier: ^15.3.0 - version: 15.3.0(rollup@4.24.0) + version: 15.3.0(rollup@4.24.2) '@rollup/plugin-replace': specifier: ^6.0.1 - version: 6.0.1(rollup@4.24.0) + version: 6.0.1(rollup@4.24.2) '@types/cross-spawn': specifier: ^6.0.6 version: 6.0.6 @@ -141,8 +141,8 @@ importers: specifier: ^1.2.5 version: 1.2.5 '@types/node': - specifier: ^22.7.5 - version: 22.7.5 + specifier: ^22.8.2 + version: 22.8.2 '@types/postcss-prefix-selector': specifier: ^1.16.3 version: 1.16.3 @@ -165,8 +165,8 @@ importers: specifier: ^0.24.0 version: 0.24.0 execa: - specifier: ^9.4.0 - version: 9.4.0 + specifier: ^9.5.1 + version: 9.5.1 fs-extra: specifier: ^11.2.0 version: 11.2.0 @@ -210,8 +210,8 @@ importers: specifier: ^1.2.8 version: 1.2.8 nanoid: - specifier: ^5.0.7 - version: 5.0.7 + specifier: ^5.0.8 + version: 5.0.8 ora: specifier: ^8.1.0 version: 8.1.0 @@ -222,14 +222,14 @@ importers: specifier: ^6.3.0 version: 6.3.0 picocolors: - specifier: ^1.1.0 - version: 1.1.0 + specifier: ^1.1.1 + version: 1.1.1 pkg-dir: specifier: ^8.0.0 version: 8.0.0 playwright-chromium: - specifier: ^1.48.0 - version: 1.48.0 + specifier: ^1.48.2 + version: 1.48.2 polka: specifier: ^1.0.0-next.28 version: 1.0.0-next.28 @@ -249,14 +249,14 @@ importers: specifier: ^6.0.1 version: 6.0.1 rollup: - specifier: ^4.24.0 - version: 4.24.0 + specifier: ^4.24.2 + version: 4.24.2 rollup-plugin-dts: specifier: ^6.1.1 - version: 6.1.1(rollup@4.24.0)(typescript@5.6.3) + version: 6.1.1(rollup@4.24.2)(typescript@5.6.3) rollup-plugin-esbuild: specifier: ^6.1.1 - version: 6.1.1(esbuild@0.24.0)(rollup@4.24.0)(supports-color@9.4.0) + version: 6.1.1(esbuild@0.24.0)(rollup@4.24.2)(supports-color@9.4.0) semver: specifier: ^7.6.3 version: 7.6.3 @@ -273,17 +273,17 @@ importers: specifier: ^9.4.0 version: 9.4.0 tinyglobby: - specifier: ^0.2.9 - version: 0.2.9 + specifier: ^0.2.10 + version: 0.2.10 typescript: specifier: ^5.6.3 version: 5.6.3 vitest: - specifier: ^2.1.2 - version: 2.1.2(@types/node@22.7.5)(supports-color@9.4.0) + specifier: ^2.1.4 + version: 2.1.4(@types/node@22.8.2)(supports-color@9.4.0) vue-tsc: - specifier: ^2.1.6 - version: 2.1.6(typescript@5.6.3) + specifier: ^2.1.8 + version: 2.1.8(typescript@5.6.3) wait-on: specifier: ^8.0.1 version: 8.0.1(debug@4.3.7(supports-color@9.4.0)) @@ -812,8 +812,8 @@ packages: rollup: optional: true - '@rollup/plugin-commonjs@28.0.0': - resolution: {integrity: sha512-BJcu+a+Mpq476DMXG+hevgPSl56bkUoi88dKT8t3RyUp8kGuOh+2bU8Gs7zXDlu+fyZggnJ+iOBGrb/O1SorYg==} + '@rollup/plugin-commonjs@28.0.1': + resolution: {integrity: sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -857,103 +857,113 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.24.0': - resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + '@rollup/rollup-android-arm-eabi@4.24.2': + resolution: {integrity: sha512-ufoveNTKDg9t/b7nqI3lwbCG/9IJMhADBNjjz/Jn6LxIZxD7T5L8l2uO/wD99945F1Oo8FvgbbZJRguyk/BdzA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.0': - resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + '@rollup/rollup-android-arm64@4.24.2': + resolution: {integrity: sha512-iZoYCiJz3Uek4NI0J06/ZxUgwAfNzqltK0MptPDO4OR0a88R4h0DSELMsflS6ibMCJ4PnLvq8f7O1d7WexUvIA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.0': - resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + '@rollup/rollup-darwin-arm64@4.24.2': + resolution: {integrity: sha512-/UhrIxobHYCBfhi5paTkUDQ0w+jckjRZDZ1kcBL132WeHZQ6+S5v9jQPVGLVrLbNUebdIRpIt00lQ+4Z7ys4Rg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.0': - resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + '@rollup/rollup-darwin-x64@4.24.2': + resolution: {integrity: sha512-1F/jrfhxJtWILusgx63WeTvGTwE4vmsT9+e/z7cZLKU8sBMddwqw3UV5ERfOV+H1FuRK3YREZ46J4Gy0aP3qDA==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': - resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + '@rollup/rollup-freebsd-arm64@4.24.2': + resolution: {integrity: sha512-1YWOpFcGuC6iGAS4EI+o3BV2/6S0H+m9kFOIlyFtp4xIX5rjSnL3AwbTBxROX0c8yWtiWM7ZI6mEPTI7VkSpZw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.24.2': + resolution: {integrity: sha512-3qAqTewYrCdnOD9Gl9yvPoAoFAVmPJsBvleabvx4bnu1Kt6DrB2OALeRVag7BdWGWLhP1yooeMLEi6r2nYSOjg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.2': + resolution: {integrity: sha512-ArdGtPHjLqWkqQuoVQ6a5UC5ebdX8INPuJuJNWRe0RGa/YNhVvxeWmCTFQ7LdmNCSUzVZzxAvUznKaYx645Rig==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.24.0': - resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + '@rollup/rollup-linux-arm-musleabihf@4.24.2': + resolution: {integrity: sha512-B6UHHeNnnih8xH6wRKB0mOcJGvjZTww1FV59HqJoTJ5da9LCG6R4SEBt6uPqzlawv1LoEXSS0d4fBlHNWl6iYw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.24.0': - resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + '@rollup/rollup-linux-arm64-gnu@4.24.2': + resolution: {integrity: sha512-kr3gqzczJjSAncwOS6i7fpb4dlqcvLidqrX5hpGBIM1wtt0QEVtf4wFaAwVv8QygFU8iWUMYEoJZWuWxyua4GQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.24.0': - resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + '@rollup/rollup-linux-arm64-musl@4.24.2': + resolution: {integrity: sha512-TDdHLKCWgPuq9vQcmyLrhg/bgbOvIQ8rtWQK7MRxJ9nvaxKx38NvY7/Lo6cYuEnNHqf6rMqnivOIPIQt6H2AoA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': - resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.24.2': + resolution: {integrity: sha512-xv9vS648T3X4AxFFZGWeB5Dou8ilsv4VVqJ0+loOIgDO20zIhYfDLkk5xoQiej2RiSQkld9ijF/fhLeonrz2mw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.24.0': - resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + '@rollup/rollup-linux-riscv64-gnu@4.24.2': + resolution: {integrity: sha512-tbtXwnofRoTt223WUZYiUnbxhGAOVul/3StZ947U4A5NNjnQJV5irKMm76G0LGItWs6y+SCjUn/Q0WaMLkEskg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.24.0': - resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + '@rollup/rollup-linux-s390x-gnu@4.24.2': + resolution: {integrity: sha512-gc97UebApwdsSNT3q79glOSPdfwgwj5ELuiyuiMY3pEWMxeVqLGKfpDFoum4ujivzxn6veUPzkGuSYoh5deQ2Q==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.24.0': - resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + '@rollup/rollup-linux-x64-gnu@4.24.2': + resolution: {integrity: sha512-jOG/0nXb3z+EM6SioY8RofqqmZ+9NKYvJ6QQaa9Mvd3RQxlH68/jcB/lpyVt4lCiqr04IyaC34NzhUqcXbB5FQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.24.0': - resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + '@rollup/rollup-linux-x64-musl@4.24.2': + resolution: {integrity: sha512-XAo7cJec80NWx9LlZFEJQxqKOMz/lX3geWs2iNT5CHIERLFfd90f3RYLLjiCBm1IMaQ4VOX/lTC9lWfzzQm14Q==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.24.0': - resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + '@rollup/rollup-win32-arm64-msvc@4.24.2': + resolution: {integrity: sha512-A+JAs4+EhsTjnPQvo9XY/DC0ztaws3vfqzrMNMKlwQXuniBKOIIvAAI8M0fBYiTCxQnElYu7mLk7JrhlQ+HeOw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.0': - resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + '@rollup/rollup-win32-ia32-msvc@4.24.2': + resolution: {integrity: sha512-ZhcrakbqA1SCiJRMKSU64AZcYzlZ/9M5LaYil9QWxx9vLnkQ9Vnkve17Qn4SjlipqIIBFKjBES6Zxhnvh0EAEw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.0': - resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + '@rollup/rollup-win32-x64-msvc@4.24.2': + resolution: {integrity: sha512-2mLH46K1u3r6uwc95hU+OR9q/ggYMpnS7pSp83Ece1HUQgF9Nh/QwTK5rcgbFnV9j+08yBrU5sA/P0RK2MSBNA==} cpu: [x64] os: [win32] '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@shikijs/core@1.22.0': - resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} + '@shikijs/core@1.22.2': + resolution: {integrity: sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==} - '@shikijs/engine-javascript@1.22.0': - resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} + '@shikijs/engine-javascript@1.22.2': + resolution: {integrity: sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==} - '@shikijs/engine-oniguruma@1.22.0': - resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} + '@shikijs/engine-oniguruma@1.22.2': + resolution: {integrity: sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==} - '@shikijs/transformers@1.22.0': - resolution: {integrity: sha512-k7iMOYuGQA62KwAuJOQBgH2IQb5vP8uiB3lMvAMGUgAMMurePOx3Z7oNqJdcpxqZP6I9cc7nc4DNqSKduCxmdg==} + '@shikijs/transformers@1.22.2': + resolution: {integrity: sha512-8f78OiBa6pZDoZ53lYTmuvpFPlWtevn23bzG+azpPVvZg7ITax57o/K3TC91eYL3OMJOO0onPbgnQyZjRos8XQ==} - '@shikijs/types@1.22.0': - resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} + '@shikijs/types@1.22.2': + resolution: {integrity: sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==} '@shikijs/vscode-textmate@9.3.0': resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} @@ -1040,8 +1050,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@22.7.5': - resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + '@types/node@22.8.2': + resolution: {integrity: sha512-NzaRNFV+FZkvK/KLCsNdTvID0SThyrs5SHB6tsD/lajr22FGC73N2QeDPM2wHtVde8mgcXuSsHQkH5cX1pbPLw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1080,13 +1090,13 @@ packages: vite: ^5.0.0 vue: ^3.2.25 - '@vitest/expect@2.1.2': - resolution: {integrity: sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==} + '@vitest/expect@2.1.4': + resolution: {integrity: sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==} - '@vitest/mocker@2.1.2': - resolution: {integrity: sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==} + '@vitest/mocker@2.1.4': + resolution: {integrity: sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==} peerDependencies: - msw: ^2.3.5 + msw: ^2.4.9 vite: ^5.0.0 peerDependenciesMeta: msw: @@ -1094,29 +1104,29 @@ packages: vite: optional: true - '@vitest/pretty-format@2.1.2': - resolution: {integrity: sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==} + '@vitest/pretty-format@2.1.4': + resolution: {integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==} - '@vitest/runner@2.1.2': - resolution: {integrity: sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==} + '@vitest/runner@2.1.4': + resolution: {integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==} - '@vitest/snapshot@2.1.2': - resolution: {integrity: sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==} + '@vitest/snapshot@2.1.4': + resolution: {integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==} - '@vitest/spy@2.1.2': - resolution: {integrity: sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==} + '@vitest/spy@2.1.4': + resolution: {integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==} - '@vitest/utils@2.1.2': - resolution: {integrity: sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==} + '@vitest/utils@2.1.4': + resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==} - '@volar/language-core@2.4.6': - resolution: {integrity: sha512-FxUfxaB8sCqvY46YjyAAV6c3mMIq/NWQMVvJ+uS4yxr1KzOvyg61gAuOnNvgCvO4TZ7HcLExBEsWcDu4+K4E8A==} + '@volar/language-core@2.4.8': + resolution: {integrity: sha512-K/GxMOXGq997bO00cdFhTNuR85xPxj0BEEAy+BaqqayTmy9Tmhfgmq2wpJcVspRhcwfgPoE2/mEJa26emUhG/g==} - '@volar/source-map@2.4.6': - resolution: {integrity: sha512-Nsh7UW2ruK+uURIPzjJgF0YRGP5CX9nQHypA2OMqdM2FKy7rh+uv3XgPnWPw30JADbKvZ5HuBzG4gSbVDYVtiw==} + '@volar/source-map@2.4.8': + resolution: {integrity: sha512-jeWJBkC/WivdelMwxKkpFL811uH/jJ1kVxa+c7OvG48DXc3VrP7pplSWPP2W1dLMqBxD+awRlg55FQQfiup4cA==} - '@volar/typescript@2.4.6': - resolution: {integrity: sha512-NMIrA7y5OOqddL9VtngPWYmdQU03htNKFtAYidbYfWA0TOhyGVd9tfcP4TsLWQ+RBWDZCbBqsr8xzU0ZOxYTCQ==} + '@volar/typescript@2.4.8': + resolution: {integrity: sha512-6xkIYJ5xxghVBhVywMoPMidDDAFT1OoQeXwa27HSgJ6AiIKRe61RXLoik+14Z7r0JvnblXVsjsRLmCr42SGzqg==} '@vue/compiler-core@3.5.12': resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} @@ -1133,17 +1143,17 @@ packages: '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - '@vue/devtools-api@7.4.6': - resolution: {integrity: sha512-XipBV5k0/IfTr0sNBDTg7OBUCp51cYMMXyPxLXJZ4K/wmUeMqt8cVdr2ZZGOFq+si/jTyCYnNxeKoyev5DOUUA==} + '@vue/devtools-api@7.5.4': + resolution: {integrity: sha512-j9UC/KeYUNZ6AyCJxBROBCbogB5YHW6PZv9VnCNp2ntE4rq426Lfc8WP5B9V+rXBwqWmrgZTGYBa31CBSxdAUg==} - '@vue/devtools-kit@7.4.6': - resolution: {integrity: sha512-NbYBwPWgEic1AOd9bWExz9weBzFdjiIfov0yRn4DrRfR+EQJCI9dn4I0XS7IxYGdkmUJi8mFW42LLk18WsGqew==} + '@vue/devtools-kit@7.5.4': + resolution: {integrity: sha512-0i7WFgc1B2TL52tstn82zlb9opSA0aIiHfkUYFXtZb8CIpmlFMTkHtgwVl6PMWNBj3LNhYou1YJCLpCYvJYYoA==} - '@vue/devtools-shared@7.4.6': - resolution: {integrity: sha512-rPeSBzElnHYMB05Cc056BQiJpgocQjY8XVulgni+O9a9Gr9tNXgPteSzFFD+fT/iWMxNuUgGKs9CuW5DZewfIg==} + '@vue/devtools-shared@7.5.4': + resolution: {integrity: sha512-dwuq4YmwTyLc7eBOqX63s3JB8il7qnKsNgENglSMkUPwiItHkVAYYfPESN1rxSdYkl1RCux1l5TBidYqfUDNAA==} - '@vue/language-core@2.1.6': - resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} + '@vue/language-core@2.1.8': + resolution: {integrity: sha512-DtPUKrIRqqzY1joGfVHxHWZoxXZbCQLmVtW+QTifuPInfcs1R/3UAdlJXDp+lpSpP9lI5m+jMYYlwDXXu3KSTg==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -1223,6 +1233,9 @@ packages: algoliasearch@4.24.0: resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} + alien-signals@0.2.0: + resolution: {integrity: sha512-StlonZhBBrsPPwrDjiPAiVTf/rolxffLxVPT60Qv/t88BZ81BvUVzHgGqEFvJ1ii8HXtm1+zU2Icr59tfWEcag==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -1308,8 +1321,8 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.1.1: - resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} chalk@2.4.2: @@ -1394,9 +1407,6 @@ packages: compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - computeds@0.0.1: - resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} - conventional-changelog-angular@8.0.0: resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} engines: {node: '>=18'} @@ -1616,10 +1626,14 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - execa@9.4.0: - resolution: {integrity: sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==} + execa@9.5.1: + resolution: {integrity: sha512-QY5PPtSonnGwhhHDNI7+3RvY285c7iuJFFB+lU+oEzMY/gEGJ808owqJsrr8Otd1E/x07po1LkUBmdAc5duPAg==} engines: {node: ^18.19.0 || >=20.5.0} + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -1639,6 +1653,14 @@ packages: picomatch: optional: true + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + figures@6.1.0: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} @@ -2104,8 +2126,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.0.7: - resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + nanoid@5.0.8: + resolution: {integrity: sha512-TcJPw+9RV9dibz1hHUzlLVy8N4X9TnwirAjrU08Juo6BNKggzVfP2ZJ/3ZUSq15Xl5i85i+Z89XBO90pB2PghQ==} engines: {node: ^18 || >=20} hasBin: true @@ -2223,6 +2245,9 @@ packages: picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -2240,13 +2265,13 @@ packages: resolution: {integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==} engines: {node: '>=18'} - playwright-chromium@1.48.0: - resolution: {integrity: sha512-jPFKhB4+zGEcAwc+h1mTLa8L08Rb+FwGKFqd/o7mWSGyxAtwBu5R4QxSG/a8KcHbewOj4DLBUVVK2N/uKrYmiQ==} + playwright-chromium@1.48.2: + resolution: {integrity: sha512-bMBvYPlj5X6yyifahATDy5ZQySyNRDD75Q8ZCMcvn234CCA7m8vxgJIlrbJq+jcmuZVsCzNybRtEJHVGqg+v4w==} engines: {node: '>=18'} hasBin: true - playwright-core@1.48.0: - resolution: {integrity: sha512-RBvzjM9rdpP7UUFrQzRwR8L/xR4HyC1QXMzGYTbf1vjw25/ya9NRAVnXi/0fvFopjebvyPzsmoK58xxeEOaVvA==} + playwright-core@1.48.2: + resolution: {integrity: sha512-sjjw+qrLFlriJo64du+EK0kJgZzoQPsabGF4lBvsid+3CNIZIYLgnMj9V6JY5VhM2Peh20DJWIVpVljLLnlawA==} engines: {node: '>=18'} hasBin: true @@ -2360,8 +2385,8 @@ packages: esbuild: '>=0.18.0' rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - rollup@4.24.0: - resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + rollup@4.24.2: + resolution: {integrity: sha512-do/DFGq5g6rdDhdpPq5qb2ecoczeK6y+2UAjdJ5trjQJj5f1AiVdLRWRc9A9/fFukfvJRgM0UXzxBIYMovm5ww==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2398,8 +2423,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.22.0: - resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} + shiki@1.22.2: + resolution: {integrity: sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -2562,11 +2587,11 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.0: - resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} - tinyglobby@0.2.9: - resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} tinypool@1.0.1: @@ -2688,13 +2713,13 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@2.1.2: - resolution: {integrity: sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==} + vite-node@2.1.4: + resolution: {integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.4.8: - resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + vite@5.4.10: + resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -2724,15 +2749,15 @@ packages: terser: optional: true - vitest@2.1.2: - resolution: {integrity: sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==} + vitest@2.1.4: + resolution: {integrity: sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.2 - '@vitest/ui': 2.1.2 + '@vitest/browser': 2.1.4 + '@vitest/ui': 2.1.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -2763,8 +2788,8 @@ packages: '@vue/composition-api': optional: true - vue-tsc@2.1.6: - resolution: {integrity: sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==} + vue-tsc@2.1.8: + resolution: {integrity: sha512-6+vjb7JLxKIzeD/1ktoUBZGAr+148FQoEFl8Lv5EpDJLO2PrUalhp7atMEuzEkLnoooM5bg3pJqjZI+oobxIaQ==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -2947,7 +2972,7 @@ snapshots: '@babel/code-frame@7.25.7': dependencies: '@babel/highlight': 7.25.7 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/helper-string-parser@7.25.7': {} @@ -2958,7 +2983,7 @@ snapshots: '@babel/helper-validator-identifier': 7.25.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/parser@7.25.8': dependencies: @@ -2972,13 +2997,13 @@ snapshots: '@clack/core@0.3.4': dependencies: - picocolors: 1.1.0 + picocolors: 1.1.1 sisteransi: 1.0.5 '@clack/prompts@0.7.0': dependencies: '@clack/core': 0.3.4 - picocolors: 1.1.0 + picocolors: 1.1.1 sisteransi: 1.0.5 '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)': @@ -3257,128 +3282,134 @@ snapshots: '@polka/url@1.0.0-next.28': {} - '@rollup/plugin-alias@5.1.1(rollup@4.24.0)': + '@rollup/plugin-alias@5.1.1(rollup@4.24.2)': optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.2 - '@rollup/plugin-commonjs@28.0.0(rollup@4.24.0)': + '@rollup/plugin-commonjs@28.0.1(rollup@4.24.2)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.2(rollup@4.24.2) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.0(picomatch@2.3.1) + fdir: 6.4.0(picomatch@4.0.2) is-reference: 1.2.1 magic-string: 0.30.12 - picomatch: 2.3.1 + picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.2 - '@rollup/plugin-json@6.1.0(rollup@4.24.0)': + '@rollup/plugin-json@6.1.0(rollup@4.24.2)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.2(rollup@4.24.2) optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.2 - '@rollup/plugin-node-resolve@15.3.0(rollup@4.24.0)': + '@rollup/plugin-node-resolve@15.3.0(rollup@4.24.2)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.2(rollup@4.24.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.2 - '@rollup/plugin-replace@6.0.1(rollup@4.24.0)': + '@rollup/plugin-replace@6.0.1(rollup@4.24.2)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.2(rollup@4.24.2) magic-string: 0.30.12 optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.2 - '@rollup/pluginutils@5.1.2(rollup@4.24.0)': + '@rollup/pluginutils@5.1.2(rollup@4.24.2)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.2 + + '@rollup/rollup-android-arm-eabi@4.24.2': + optional: true + + '@rollup/rollup-android-arm64@4.24.2': + optional: true - '@rollup/rollup-android-arm-eabi@4.24.0': + '@rollup/rollup-darwin-arm64@4.24.2': optional: true - '@rollup/rollup-android-arm64@4.24.0': + '@rollup/rollup-darwin-x64@4.24.2': optional: true - '@rollup/rollup-darwin-arm64@4.24.0': + '@rollup/rollup-freebsd-arm64@4.24.2': optional: true - '@rollup/rollup-darwin-x64@4.24.0': + '@rollup/rollup-freebsd-x64@4.24.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + '@rollup/rollup-linux-arm-gnueabihf@4.24.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.0': + '@rollup/rollup-linux-arm-musleabihf@4.24.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.0': + '@rollup/rollup-linux-arm64-gnu@4.24.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.0': + '@rollup/rollup-linux-arm64-musl@4.24.2': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.0': + '@rollup/rollup-linux-riscv64-gnu@4.24.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.0': + '@rollup/rollup-linux-s390x-gnu@4.24.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.0': + '@rollup/rollup-linux-x64-gnu@4.24.2': optional: true - '@rollup/rollup-linux-x64-musl@4.24.0': + '@rollup/rollup-linux-x64-musl@4.24.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.0': + '@rollup/rollup-win32-arm64-msvc@4.24.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.0': + '@rollup/rollup-win32-ia32-msvc@4.24.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.0': + '@rollup/rollup-win32-x64-msvc@4.24.2': optional: true '@sec-ant/readable-stream@0.4.1': {} - '@shikijs/core@1.22.0': + '@shikijs/core@1.22.2': dependencies: - '@shikijs/engine-javascript': 1.22.0 - '@shikijs/engine-oniguruma': 1.22.0 - '@shikijs/types': 1.22.0 + '@shikijs/engine-javascript': 1.22.2 + '@shikijs/engine-oniguruma': 1.22.2 + '@shikijs/types': 1.22.2 '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 - '@shikijs/engine-javascript@1.22.0': + '@shikijs/engine-javascript@1.22.2': dependencies: - '@shikijs/types': 1.22.0 + '@shikijs/types': 1.22.2 '@shikijs/vscode-textmate': 9.3.0 oniguruma-to-js: 0.4.3 - '@shikijs/engine-oniguruma@1.22.0': + '@shikijs/engine-oniguruma@1.22.2': dependencies: - '@shikijs/types': 1.22.0 + '@shikijs/types': 1.22.2 '@shikijs/vscode-textmate': 9.3.0 - '@shikijs/transformers@1.22.0': + '@shikijs/transformers@1.22.2': dependencies: - shiki: 1.22.0 + shiki: 1.22.2 - '@shikijs/types@1.22.0': + '@shikijs/types@1.22.2': dependencies: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -3401,7 +3432,7 @@ snapshots: '@types/cross-spawn@6.0.6': dependencies: - '@types/node': 22.7.5 + '@types/node': 22.8.2 '@types/debug@4.1.12': dependencies: @@ -3412,7 +3443,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.7.5 + '@types/node': 22.8.2 '@types/hast@3.0.4': dependencies: @@ -3424,7 +3455,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.7.5 + '@types/node': 22.8.2 '@types/linkify-it@5.0.0': {} @@ -3471,7 +3502,7 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@22.7.5': + '@types/node@22.8.2': dependencies: undici-types: 6.19.8 @@ -3483,14 +3514,14 @@ snapshots: '@types/prompts@2.4.9': dependencies: - '@types/node': 22.7.5 + '@types/node': 22.8.2 kleur: 3.0.3 '@types/resolve@1.20.2': {} '@types/sax@1.2.7': dependencies: - '@types/node': 22.7.5 + '@types/node': 22.8.2 '@types/semver@7.5.8': {} @@ -3502,60 +3533,60 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@22.7.5))(vue@3.5.12(typescript@5.6.3))': + '@vitejs/plugin-vue@5.1.4(vite@5.4.10(@types/node@22.8.2))(vue@3.5.12(typescript@5.6.3))': dependencies: - vite: 5.4.8(@types/node@22.7.5) + vite: 5.4.10(@types/node@22.8.2) vue: 3.5.12(typescript@5.6.3) - '@vitest/expect@2.1.2': + '@vitest/expect@2.1.4': dependencies: - '@vitest/spy': 2.1.2 - '@vitest/utils': 2.1.2 - chai: 5.1.1 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 + chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.2(vite@5.4.8(@types/node@22.7.5))': + '@vitest/mocker@2.1.4(vite@5.4.10(@types/node@22.8.2))': dependencies: - '@vitest/spy': 2.1.2 + '@vitest/spy': 2.1.4 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.8(@types/node@22.7.5) + vite: 5.4.10(@types/node@22.8.2) - '@vitest/pretty-format@2.1.2': + '@vitest/pretty-format@2.1.4': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.2': + '@vitest/runner@2.1.4': dependencies: - '@vitest/utils': 2.1.2 + '@vitest/utils': 2.1.4 pathe: 1.1.2 - '@vitest/snapshot@2.1.2': + '@vitest/snapshot@2.1.4': dependencies: - '@vitest/pretty-format': 2.1.2 + '@vitest/pretty-format': 2.1.4 magic-string: 0.30.12 pathe: 1.1.2 - '@vitest/spy@2.1.2': + '@vitest/spy@2.1.4': dependencies: tinyspy: 3.0.2 - '@vitest/utils@2.1.2': + '@vitest/utils@2.1.4': dependencies: - '@vitest/pretty-format': 2.1.2 + '@vitest/pretty-format': 2.1.4 loupe: 3.1.2 tinyrainbow: 1.2.0 - '@volar/language-core@2.4.6': + '@volar/language-core@2.4.8': dependencies: - '@volar/source-map': 2.4.6 + '@volar/source-map': 2.4.8 - '@volar/source-map@2.4.6': {} + '@volar/source-map@2.4.8': {} - '@volar/typescript@2.4.6': + '@volar/typescript@2.4.8': dependencies: - '@volar/language-core': 2.4.6 + '@volar/language-core': 2.4.8 path-browserify: 1.0.1 vscode-uri: 3.0.8 @@ -3594,13 +3625,13 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - '@vue/devtools-api@7.4.6': + '@vue/devtools-api@7.5.4': dependencies: - '@vue/devtools-kit': 7.4.6 + '@vue/devtools-kit': 7.5.4 - '@vue/devtools-kit@7.4.6': + '@vue/devtools-kit@7.5.4': dependencies: - '@vue/devtools-shared': 7.4.6 + '@vue/devtools-shared': 7.5.4 birpc: 0.2.19 hookable: 5.5.3 mitt: 3.0.1 @@ -3608,17 +3639,17 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.1 - '@vue/devtools-shared@7.4.6': + '@vue/devtools-shared@7.5.4': dependencies: rfdc: 1.4.1 - '@vue/language-core@2.1.6(typescript@5.6.3)': + '@vue/language-core@2.1.8(typescript@5.6.3)': dependencies: - '@volar/language-core': 2.4.6 + '@volar/language-core': 2.4.8 '@vue/compiler-dom': 3.5.12 '@vue/compiler-vue2': 2.7.16 '@vue/shared': 3.5.12 - computeds: 0.0.1 + alien-signals: 0.2.0 minimatch: 9.0.5 muggle-string: 0.4.1 path-browserify: 1.0.1 @@ -3700,6 +3731,8 @@ snapshots: '@algolia/requester-node-http': 4.24.0 '@algolia/transporter': 4.24.0 + alien-signals@0.2.0: {} + ansi-colors@4.1.3: {} ansi-escapes@7.0.0: @@ -3771,7 +3804,7 @@ snapshots: ccount@2.0.1: {} - chai@5.1.1: + chai@5.1.2: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 @@ -3867,8 +3900,6 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 - computeds@0.0.1: {} - conventional-changelog-angular@8.0.0: dependencies: compare-func: 2.0.0 @@ -4127,7 +4158,7 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.4.0: + execa@9.5.1: dependencies: '@sindresorhus/merge-streams': 4.0.0 cross-spawn: 7.0.3 @@ -4142,6 +4173,8 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.1.1 + expect-type@1.1.0: {} + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 @@ -4158,11 +4191,11 @@ snapshots: dependencies: reusify: 1.0.4 - fdir@6.4.0(picomatch@2.3.1): + fdir@6.4.0(picomatch@4.0.2): optionalDependencies: - picomatch: 2.3.1 + picomatch: 4.0.2 - fdir@6.4.0(picomatch@4.0.2): + fdir@6.4.2(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -4625,7 +4658,7 @@ snapshots: nanoid@3.3.7: {} - nanoid@5.0.7: {} + nanoid@5.0.8: {} neo-async@2.6.2: {} @@ -4736,6 +4769,8 @@ snapshots: picocolors@1.1.0: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} picomatch@4.0.2: {} @@ -4746,11 +4781,11 @@ snapshots: dependencies: find-up-simple: 1.0.0 - playwright-chromium@1.48.0: + playwright-chromium@1.48.2: dependencies: - playwright-core: 1.48.0 + playwright-core: 1.48.2 - playwright-core@1.48.0: {} + playwright-core@1.48.2: {} polka@1.0.0-next.28: dependencies: @@ -4764,7 +4799,7 @@ snapshots: postcss@8.4.47: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 preact@10.24.2: {} @@ -4844,45 +4879,47 @@ snapshots: glob: 11.0.0 package-json-from-dist: 1.0.1 - rollup-plugin-dts@6.1.1(rollup@4.24.0)(typescript@5.6.3): + rollup-plugin-dts@6.1.1(rollup@4.24.2)(typescript@5.6.3): dependencies: magic-string: 0.30.12 - rollup: 4.24.0 + rollup: 4.24.2 typescript: 5.6.3 optionalDependencies: '@babel/code-frame': 7.25.7 - rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.24.0)(supports-color@9.4.0): + rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.24.2)(supports-color@9.4.0): dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.2(rollup@4.24.2) debug: 4.3.7(supports-color@9.4.0) es-module-lexer: 1.5.4 esbuild: 0.24.0 get-tsconfig: 4.8.1 - rollup: 4.24.0 + rollup: 4.24.2 transitivePeerDependencies: - supports-color - rollup@4.24.0: + rollup@4.24.2: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.0 - '@rollup/rollup-android-arm64': 4.24.0 - '@rollup/rollup-darwin-arm64': 4.24.0 - '@rollup/rollup-darwin-x64': 4.24.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 - '@rollup/rollup-linux-arm-musleabihf': 4.24.0 - '@rollup/rollup-linux-arm64-gnu': 4.24.0 - '@rollup/rollup-linux-arm64-musl': 4.24.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 - '@rollup/rollup-linux-riscv64-gnu': 4.24.0 - '@rollup/rollup-linux-s390x-gnu': 4.24.0 - '@rollup/rollup-linux-x64-gnu': 4.24.0 - '@rollup/rollup-linux-x64-musl': 4.24.0 - '@rollup/rollup-win32-arm64-msvc': 4.24.0 - '@rollup/rollup-win32-ia32-msvc': 4.24.0 - '@rollup/rollup-win32-x64-msvc': 4.24.0 + '@rollup/rollup-android-arm-eabi': 4.24.2 + '@rollup/rollup-android-arm64': 4.24.2 + '@rollup/rollup-darwin-arm64': 4.24.2 + '@rollup/rollup-darwin-x64': 4.24.2 + '@rollup/rollup-freebsd-arm64': 4.24.2 + '@rollup/rollup-freebsd-x64': 4.24.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.2 + '@rollup/rollup-linux-arm-musleabihf': 4.24.2 + '@rollup/rollup-linux-arm64-gnu': 4.24.2 + '@rollup/rollup-linux-arm64-musl': 4.24.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.2 + '@rollup/rollup-linux-riscv64-gnu': 4.24.2 + '@rollup/rollup-linux-s390x-gnu': 4.24.2 + '@rollup/rollup-linux-x64-gnu': 4.24.2 + '@rollup/rollup-linux-x64-musl': 4.24.2 + '@rollup/rollup-win32-arm64-msvc': 4.24.2 + '@rollup/rollup-win32-ia32-msvc': 4.24.2 + '@rollup/rollup-win32-x64-msvc': 4.24.2 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -4912,12 +4949,12 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.22.0: + shiki@1.22.2: dependencies: - '@shikijs/core': 1.22.0 - '@shikijs/engine-javascript': 1.22.0 - '@shikijs/engine-oniguruma': 1.22.0 - '@shikijs/types': 1.22.0 + '@shikijs/core': 1.22.2 + '@shikijs/engine-javascript': 1.22.2 + '@shikijs/engine-oniguruma': 1.22.2 + '@shikijs/types': 1.22.2 '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -5075,11 +5112,11 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.0: {} + tinyexec@0.3.1: {} - tinyglobby@0.2.9: + tinyglobby@0.2.10: dependencies: - fdir: 6.4.0(picomatch@4.0.2) + fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 tinypool@1.0.1: {} @@ -5180,12 +5217,12 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@2.1.2(@types/node@22.7.5)(supports-color@9.4.0): + vite-node@2.1.4(@types/node@22.8.2)(supports-color@9.4.0): dependencies: cac: 6.7.14 debug: 4.3.7(supports-color@9.4.0) pathe: 1.1.2 - vite: 5.4.8(@types/node@22.7.5) + vite: 5.4.10(@types/node@22.8.2) transitivePeerDependencies: - '@types/node' - less @@ -5197,38 +5234,39 @@ snapshots: - supports-color - terser - vite@5.4.8(@types/node@22.7.5): + vite@5.4.10(@types/node@22.8.2): dependencies: esbuild: 0.21.5 postcss: 8.4.47 - rollup: 4.24.0 + rollup: 4.24.2 optionalDependencies: - '@types/node': 22.7.5 + '@types/node': 22.8.2 fsevents: 2.3.3 - vitest@2.1.2(@types/node@22.7.5)(supports-color@9.4.0): + vitest@2.1.4(@types/node@22.8.2)(supports-color@9.4.0): dependencies: - '@vitest/expect': 2.1.2 - '@vitest/mocker': 2.1.2(vite@5.4.8(@types/node@22.7.5)) - '@vitest/pretty-format': 2.1.2 - '@vitest/runner': 2.1.2 - '@vitest/snapshot': 2.1.2 - '@vitest/spy': 2.1.2 - '@vitest/utils': 2.1.2 - chai: 5.1.1 + '@vitest/expect': 2.1.4 + '@vitest/mocker': 2.1.4(vite@5.4.10(@types/node@22.8.2)) + '@vitest/pretty-format': 2.1.4 + '@vitest/runner': 2.1.4 + '@vitest/snapshot': 2.1.4 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 + chai: 5.1.2 debug: 4.3.7(supports-color@9.4.0) + expect-type: 1.1.0 magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.7.0 tinybench: 2.9.0 - tinyexec: 0.3.0 + tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.8(@types/node@22.7.5) - vite-node: 2.1.2(@types/node@22.7.5)(supports-color@9.4.0) + vite: 5.4.10(@types/node@22.8.2) + vite-node: 2.1.4(@types/node@22.8.2)(supports-color@9.4.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.7.5 + '@types/node': 22.8.2 transitivePeerDependencies: - less - lightningcss @@ -5246,10 +5284,10 @@ snapshots: dependencies: vue: 3.5.12(typescript@5.6.3) - vue-tsc@2.1.6(typescript@5.6.3): + vue-tsc@2.1.8(typescript@5.6.3): dependencies: - '@volar/typescript': 2.4.6 - '@vue/language-core': 2.1.6(typescript@5.6.3) + '@volar/typescript': 2.4.8 + '@vue/language-core': 2.1.8(typescript@5.6.3) semver: 7.6.3 typescript: 5.6.3 diff --git a/src/node/contentLoader.ts b/src/node/contentLoader.ts index 3cce19d0..bde3108a 100644 --- a/src/node/contentLoader.ts +++ b/src/node/contentLoader.ts @@ -4,10 +4,7 @@ import { glob, type GlobOptions } from 'tinyglobby' import type { SiteConfig } from './config' import matter from 'gray-matter' import { normalizePath } from 'vite' -import { - createMarkdownRenderer, - type MarkdownRenderer -} from './markdown/markdown' +import { createMarkdownRenderer } from './markdown/markdown' export interface ContentOptions { /** @@ -100,15 +97,7 @@ export function createContentLoader( if (typeof pattern === 'string') pattern = [pattern] pattern = pattern.map((p) => normalizePath(path.join(config.srcDir, p))) - let md: MarkdownRenderer - - const cache = new Map< - string, - { - data: any - timestamp: number - } - >() + const cache = new Map() return { watch: pattern, @@ -124,14 +113,12 @@ export function createContentLoader( ).sort() } - md = - md || - (await createMarkdownRenderer( - config.srcDir, - config.markdown, - config.site.base, - config.logger - )) + const md = await createMarkdownRenderer( + config.srcDir, + config.markdown, + config.site.base, + config.logger + ) const raw: ContentData[] = [] diff --git a/src/node/markdown/markdown.ts b/src/node/markdown/markdown.ts index d08e11d4..8849c547 100644 --- a/src/node/markdown/markdown.ts +++ b/src/node/markdown/markdown.ts @@ -28,7 +28,7 @@ import type { import type { Logger } from 'vite' import { containerPlugin, type ContainerOptions } from './plugins/containers' import { gitHubAlertsPlugin } from './plugins/githubAlerts' -import { highlight } from './plugins/highlight' +import { highlight as createHighlighter } from './plugins/highlight' import { highlightLinePlugin } from './plugins/highlightLines' import { imagePlugin, type Options as ImageOptions } from './plugins/image' import { lineNumberPlugin } from './plugins/lineNumbers' @@ -173,7 +173,7 @@ export interface MarkdownOptions extends Options { */ container?: ContainerOptions /** - * Math support (experimental) + * Math support * * You need to install `markdown-it-mathjax3` and set `math` to `true` to enable it. * You can also pass options to `markdown-it-mathjax3` here. @@ -192,22 +192,38 @@ export interface MarkdownOptions extends Options { export type MarkdownRenderer = MarkdownIt -export const createMarkdownRenderer = async ( +let md: MarkdownRenderer | undefined +let _disposeHighlighter: (() => void) | undefined + +export function disposeMdItInstance() { + if (md) { + md = undefined + _disposeHighlighter?.() + } +} + +/** + * @experimental + */ +export async function createMarkdownRenderer( srcDir: string, options: MarkdownOptions = {}, base = '/', logger: Pick = console -): Promise => { +): Promise { + if (md) return md + const theme = options.theme ?? { light: 'github-light', dark: 'github-dark' } const codeCopyButtonTitle = options.codeCopyButtonTitle || 'Copy Code' const hasSingleTheme = typeof theme === 'string' || 'name' in theme - const md = MarkdownIt({ - html: true, - linkify: true, - highlight: options.highlight || (await highlight(theme, options, logger)), - ...options - }) + let [highlight, dispose] = options.highlight + ? [options.highlight, () => {}] + : await createHighlighter(theme, options, logger) + + _disposeHighlighter = dispose + + md = MarkdownIt({ html: true, linkify: true, highlight, ...options }) md.linkify.set({ fuzzyLink: false }) md.use(restoreEntities) diff --git a/src/node/markdown/plugins/highlight.ts b/src/node/markdown/plugins/highlight.ts index 40b0cf9e..26c72c22 100644 --- a/src/node/markdown/plugins/highlight.ts +++ b/src/node/markdown/plugins/highlight.ts @@ -23,7 +23,7 @@ const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz', 10) * 2. convert line numbers into line options: * [{ line: number, classes: string[] }] */ -const attrsToLines = (attrs: string): TransformerCompactLineOption[] => { +function attrsToLines(attrs: string): TransformerCompactLineOption[] { attrs = attrs.replace(/^(?:\[.*?\])?.*?([\d,-]+).*/, '$1').trim() const result: number[] = [] if (!attrs) { @@ -51,7 +51,7 @@ export async function highlight( theme: ThemeOptions, options: MarkdownOptions, logger: Pick = console -): Promise<(str: string, lang: string, attrs: string) => string> { +): Promise<[(str: string, lang: string, attrs: string) => string, () => void]> { const { defaultHighlightLang: defaultLang = '', codeTransformers: userTransformers = [] @@ -95,93 +95,96 @@ export async function highlight( const lineNoRE = /:(no-)?line-numbers(=\d*)?$/ const mustacheRE = /\{\{.*?\}\}/g - return (str: string, lang: string, attrs: string) => { - const vPre = vueRE.test(lang) ? '' : 'v-pre' - lang = - lang - .replace(lineNoStartRE, '') - .replace(lineNoRE, '') - .replace(vueRE, '') - .toLowerCase() || defaultLang + return [ + (str: string, lang: string, attrs: string) => { + const vPre = vueRE.test(lang) ? '' : 'v-pre' + lang = + lang + .replace(lineNoStartRE, '') + .replace(lineNoRE, '') + .replace(vueRE, '') + .toLowerCase() || defaultLang - if (lang) { - const langLoaded = highlighter.getLoadedLanguages().includes(lang as any) - if (!langLoaded && !isSpecialLang(lang)) { - logger.warn( - c.yellow( - `\nThe language '${lang}' is not loaded, falling back to '${ - defaultLang || 'txt' - }' for syntax highlighting.` + if (lang) { + const langLoaded = highlighter.getLoadedLanguages().includes(lang) + if (!langLoaded && !isSpecialLang(lang)) { + logger.warn( + c.yellow( + `\nThe language '${lang}' is not loaded, falling back to '${ + defaultLang || 'txt' + }' for syntax highlighting.` + ) ) - ) - lang = defaultLang + lang = defaultLang + } } - } - const lineOptions = attrsToLines(attrs) - const mustaches = new Map() + const lineOptions = attrsToLines(attrs) + const mustaches = new Map() - const removeMustache = (s: string) => { - if (vPre) return s - return s.replace(mustacheRE, (match) => { - let marker = mustaches.get(match) - if (!marker) { - marker = nanoid() - mustaches.set(match, marker) - } - return marker - }) - } + const removeMustache = (s: string) => { + if (vPre) return s + return s.replace(mustacheRE, (match) => { + let marker = mustaches.get(match) + if (!marker) { + marker = nanoid() + mustaches.set(match, marker) + } + return marker + }) + } - const restoreMustache = (s: string) => { - mustaches.forEach((marker, match) => { - s = s.replaceAll(marker, match) - }) - return s - } + const restoreMustache = (s: string) => { + mustaches.forEach((marker, match) => { + s = s.replaceAll(marker, match) + }) + return s + } - str = removeMustache(str).trimEnd() + str = removeMustache(str).trimEnd() - const highlighted = highlighter.codeToHtml(str, { - lang, - transformers: [ - ...transformers, - transformerCompactLineOptions(lineOptions), - { - name: 'vitepress:v-pre', - pre(node) { - if (vPre) node.properties['v-pre'] = '' - } - }, - { - name: 'vitepress:empty-line', - code(hast) { - hast.children.forEach((span) => { - if ( - span.type === 'element' && - span.tagName === 'span' && - Array.isArray(span.properties.class) && - span.properties.class.includes('line') && - span.children.length === 0 - ) { - span.children.push({ - type: 'element', - tagName: 'wbr', - properties: {}, - children: [] - }) - } - }) - } - }, - ...userTransformers - ], - meta: { __raw: attrs }, - ...(typeof theme === 'object' && 'light' in theme && 'dark' in theme - ? { themes: theme, defaultColor: false } - : { theme }) - }) + const highlighted = highlighter.codeToHtml(str, { + lang, + transformers: [ + ...transformers, + transformerCompactLineOptions(lineOptions), + { + name: 'vitepress:v-pre', + pre(node) { + if (vPre) node.properties['v-pre'] = '' + } + }, + { + name: 'vitepress:empty-line', + code(hast) { + hast.children.forEach((span) => { + if ( + span.type === 'element' && + span.tagName === 'span' && + Array.isArray(span.properties.class) && + span.properties.class.includes('line') && + span.children.length === 0 + ) { + span.children.push({ + type: 'element', + tagName: 'wbr', + properties: {}, + children: [] + }) + } + }) + } + }, + ...userTransformers + ], + meta: { __raw: attrs }, + ...(typeof theme === 'object' && 'light' in theme && 'dark' in theme + ? { themes: theme, defaultColor: false } + : { theme }) + }) - return restoreMustache(highlighted) - } + return restoreMustache(highlighted) + }, + highlighter.dispose + ] } diff --git a/src/node/plugin.ts b/src/node/plugin.ts index 8132ad82..7aa0a9ad 100644 --- a/src/node/plugin.ts +++ b/src/node/plugin.ts @@ -16,6 +16,7 @@ import { resolveAliases } from './alias' import { resolvePages, resolveUserConfig, type SiteConfig } from './config' +import { disposeMdItInstance } from './markdown/markdown' import { clearCache, createMarkdownToVueRenderFn, @@ -388,6 +389,7 @@ export async function createVitePressPlugin( return } + disposeMdItInstance() clearCache() await recreateServer?.() return From acfe97f60872d251c75c5985ca9841f84392850d Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 29 Oct 2024 21:47:25 +0530 Subject: [PATCH 028/308] fix: dispose mdit instance on manual restart too --- src/node/shortcuts.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/node/shortcuts.ts b/src/node/shortcuts.ts index 84aa03ec..f8db986c 100644 --- a/src/node/shortcuts.ts +++ b/src/node/shortcuts.ts @@ -1,6 +1,7 @@ import type { ViteDevServer } from 'vite' import c from 'picocolors' import { clearCache } from './markdownToVue' +import { disposeMdItInstance } from './markdown/markdown' type CreateDevServer = () => Promise @@ -81,6 +82,7 @@ const SHORTCUTS: CLIShortcut[] = [ clear: true, timestamp: true }) + disposeMdItInstance() clearCache() await server.close() await createDevServer() From 615aed5df700ad98f82a74fbc785d290d1c5a018 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 29 Oct 2024 22:38:04 +0530 Subject: [PATCH 029/308] fix(regression): hmr not working with markdown includes due to wrong cache key closes #4289 closes #4303 --- src/node/plugin.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node/plugin.ts b/src/node/plugin.ts index 7aa0a9ad..248c21f1 100644 --- a/src/node/plugin.ts +++ b/src/node/plugin.ts @@ -431,7 +431,7 @@ export async function createVitePressPlugin( return [ ...modules, ...importers.map((id) => { - clearCache(id) + clearCache(slash(path.relative(srcDir, id))) return server.moduleGraph.getModuleById(id) }) ].filter(Boolean) as ModuleNode[] From 67b7d5d87814ecf55cf39536de74272b1b76ff6d Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 29 Oct 2024 23:06:05 +0530 Subject: [PATCH 030/308] release: v1.4.2 --- CHANGELOG.md | 11 +++++++++++ package.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 916d92b0..9c5c37b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## [1.4.2](https://github.com/vuejs/vitepress/compare/v1.4.1...v1.4.2) (2024-10-29) + +### Bug Fixes + +- cache markdown-it instance and properly dispose shiki on config reload ([#4321](https://github.com/vuejs/vitepress/issues/4321)) ([45968cd](https://github.com/vuejs/vitepress/commit/45968cdc509e04f8e191d28ba7d8d97b08fc578e)) ([acfe97f](https://github.com/vuejs/vitepress/commit/acfe97f60872d251c75c5985ca9841f84392850d)) +- **regression:** hmr not working with markdown includes due to wrong cache key ([615aed5](https://github.com/vuejs/vitepress/commit/615aed5df700ad98f82a74fbc785d290d1c5a018)), closes [#4289](https://github.com/vuejs/vitepress/issues/4289) [#4303](https://github.com/vuejs/vitepress/issues/4303) +- remove explicit chinese fonts ([#4286](https://github.com/vuejs/vitepress/issues/4286)) ([668e9f7](https://github.com/vuejs/vitepress/commit/668e9f7050f236d571fe2fc2f41e5548d974b503)) ([b893550](https://github.com/vuejs/vitepress/commit/b8935502fbb590449e7d094bdde9c9ae1ac67d0c)), closes [#4286](https://github.com/vuejs/vitepress/issues/4286) +- **theme/a11y:** don't select search result unless mouse is actually moved ([e638d85](https://github.com/vuejs/vitepress/commit/e638d855cfc8e4e0c9b95c284548ae31233139f5)), closes [#4297](https://github.com/vuejs/vitepress/issues/4297) +- **theme:** add types for `VPLink`, `VPSocialLink` and `VPSocialLinks` exports ([#4284](https://github.com/vuejs/vitepress/issues/4284)) ([fcae4d5](https://github.com/vuejs/vitepress/commit/fcae4d5554df2130b9a7e5ad8e0cc83eccf88bec)) +- **theme:** don't escape html in `siteTitle` ([#4308](https://github.com/vuejs/vitepress/issues/4308)) ([bd690d6](https://github.com/vuejs/vitepress/commit/bd690d6a9b895f15d5906d245b404f02cfce7489)) + ## [1.4.1](https://github.com/vuejs/vitepress/compare/v1.4.0...v1.4.1) (2024-10-13) ### Bug Fixes diff --git a/package.json b/package.json index 5ee61255..4cef1f81 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vitepress", - "version": "1.4.1", + "version": "1.4.2", "description": "Vite & Vue powered static site generator", "keywords": [ "vite", From c61775a54f1742a181dd685d92dc29bd60de6440 Mon Sep 17 00:00:00 2001 From: Bugo Date: Wed, 30 Oct 2024 07:13:01 +0500 Subject: [PATCH 031/308] docs(ru): update translations (#4323) * Update ru/reference/site-config.md * Update ru/guide/using-vue.md --- docs/ru/guide/using-vue.md | 34 ++++++++++++++++++++++++++++++++ docs/ru/reference/site-config.md | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/docs/ru/guide/using-vue.md b/docs/ru/guide/using-vue.md index 56e0293d..8b6051aa 100644 --- a/docs/ru/guide/using-vue.md +++ b/docs/ru/guide/using-vue.md @@ -251,3 +251,37 @@ import ComponentInHeader from '../../components/ComponentInHeader.vue' padding: 0 20px; } + + +## Поддержка VS Code IntelliSense + + + +Vue предоставляет поддержку IntelliSense из коробки через [официальный плагин Vue для VS Code](https://marketplace.visualstudio.com/items?itemName=Vue.volar). Однако, чтобы включить её для файлов `.md`, вам нужно внести некоторые изменения в файлы конфигурации. + +1. Добавьте шаблон `.md` в параметры `include` и `vueCompilerOptions.vitePressExtensions` в файле tsconfig/jsconfig: + +::: code-group +```json [tsconfig.json] +{ + "include": [ + "docs/**/*.ts", + "docs/**/*.vue", + "docs/**/*.md", + ], + "vueCompilerOptions": { + "vitePressExtensions": [".md"], + }, +} +``` +::: + +2. Добавьте `markdown` в параметр `vue.server.includeLanguages` в настройках VS Code: + +::: code-group +```json [.vscode/settings.json] +{ + "vue.server.includeLanguages": ["vue", "markdown"] +} +``` +::: \ No newline at end of file diff --git a/docs/ru/reference/site-config.md b/docs/ru/reference/site-config.md index b159c911..8ba3a110 100644 --- a/docs/ru/reference/site-config.md +++ b/docs/ru/reference/site-config.md @@ -387,7 +387,7 @@ export default { ### srcExclude {#srcexclude} -- Тип: `string` +- Тип: `string[]` - По умолчанию: `undefined` [Шаблон](https://github.com/mrmlnc/fast-glob#pattern-syntax) для поиска файлов, которые должны быть исключены из исходного содержимого. From 829977876a21da4f0af5d27593a2d81eb9af0c33 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Thu, 31 Oct 2024 17:40:27 +0530 Subject: [PATCH 032/308] perf: lazy load shiki languages (#4326) --- package.json | 1 + pnpm-lock.yaml | 18 ++++++++++++ rollup.config.ts | 17 +++++++---- src/node/markdown/plugins/highlight.ts | 40 ++++++++++++++++++-------- src/node/worker_shikiResolveLang.ts | 14 +++++++++ 5 files changed, 72 insertions(+), 18 deletions(-) create mode 100644 src/node/worker_shikiResolveLang.ts diff --git a/package.json b/package.json index 4cef1f81..a5aa040b 100644 --- a/package.json +++ b/package.json @@ -185,6 +185,7 @@ "sirv": "^3.0.0", "sitemap": "^8.0.0", "supports-color": "^9.4.0", + "synckit": "^0.9.2", "tinyglobby": "^0.2.10", "typescript": "^5.6.3", "vitest": "^2.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 333cabfa..3c7b1692 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -272,6 +272,9 @@ importers: supports-color: specifier: ^9.4.0 version: 9.4.0 + synckit: + specifier: ^0.9.2 + version: 0.9.2 tinyglobby: specifier: ^0.2.10 version: 0.2.10 @@ -796,6 +799,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@polka/compression@1.0.0-next.28': resolution: {integrity: sha512-aDmrBhgHJtxE+jy145WfhW9WmTAFmES/dNnn1LAs8UnnkFgBUj4T8I4ScQ9+rOkpDZStvnVP5iqhN3tvt7O1NA==} engines: {node: '>=6'} @@ -2569,6 +2576,10 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} @@ -3278,6 +3289,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@pkgr/core@0.1.1': {} + '@polka/compression@1.0.0-next.28': {} '@polka/url@1.0.0-next.28': {} @@ -5095,6 +5108,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.7.0 + tabbable@6.2.0: {} temp-dir@3.0.0: {} diff --git a/rollup.config.ts b/rollup.config.ts index f50d4d5f..ed7841b2 100644 --- a/rollup.config.ts +++ b/rollup.config.ts @@ -1,7 +1,7 @@ -import { promises as fs } from 'fs' -import { builtinModules, createRequire } from 'module' -import { resolve } from 'path' -import { fileURLToPath } from 'url' +import * as fs from 'node:fs/promises' +import { builtinModules, createRequire } from 'node:module' +import { resolve } from 'node:path' +import { fileURLToPath } from 'node:url' import { type RollupOptions, defineConfig } from 'rollup' import { nodeResolve } from '@rollup/plugin-node-resolve' import commonjs from '@rollup/plugin-commonjs' @@ -10,6 +10,7 @@ import json from '@rollup/plugin-json' import replace from '@rollup/plugin-replace' import alias from '@rollup/plugin-alias' import dts from 'rollup-plugin-dts' +import { globSync } from 'tinyglobby' const ROOT = fileURLToPath(import.meta.url) const r = (p: string) => resolve(ROOT, '..', p) @@ -43,11 +44,15 @@ const plugins = [ ] const esmBuild: RollupOptions = { - input: [r('src/node/index.ts'), r('src/node/cli.ts')], + input: [ + r('src/node/index.ts'), + r('src/node/cli.ts'), + ...globSync(r('src/node/worker_*.ts')) + ], output: { format: 'esm', entryFileNames: `[name].js`, - chunkFileNames: 'serve-[hash].js', + chunkFileNames: 'chunk-[hash].js', dir: r('dist/node'), sourcemap: DEV }, diff --git a/src/node/markdown/plugins/highlight.ts b/src/node/markdown/plugins/highlight.ts index 26c72c22..4afe83cc 100644 --- a/src/node/markdown/plugins/highlight.ts +++ b/src/node/markdown/plugins/highlight.ts @@ -1,7 +1,3 @@ -import { customAlphabet } from 'nanoid' -import c from 'picocolors' -import type { ShikiTransformer } from 'shiki' -import { bundledLanguages, createHighlighter, isSpecialLang } from 'shiki' import { transformerCompactLineOptions, transformerNotationDiff, @@ -10,9 +6,21 @@ import { transformerNotationHighlight, type TransformerCompactLineOption } from '@shikijs/transformers' +import { customAlphabet } from 'nanoid' +import { createRequire } from 'node:module' +import c from 'picocolors' +import type { ShikiTransformer } from 'shiki' +import { createHighlighter, isSpecialLang } from 'shiki' +import { createSyncFn } from 'synckit' import type { Logger } from 'vite' +import type { ShikiResolveLang } from 'worker_shikiResolveLang' import type { MarkdownOptions, ThemeOptions } from '../markdown' +const require = createRequire(import.meta.url) + +const resolveLangSync = createSyncFn( + require.resolve('vitepress/dist/node/worker_shikiResolveLang.js') +) const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz', 10) /** @@ -62,7 +70,10 @@ export async function highlight( typeof theme === 'object' && 'light' in theme && 'dark' in theme ? [theme.light, theme.dark] : [theme], - langs: [...Object.keys(bundledLanguages), ...(options.languages || [])], + langs: [ + ...(options.languages || []), + ...Object.values(options.languageAlias || {}) + ], langAlias: options.languageAlias }) @@ -108,14 +119,19 @@ export async function highlight( if (lang) { const langLoaded = highlighter.getLoadedLanguages().includes(lang) if (!langLoaded && !isSpecialLang(lang)) { - logger.warn( - c.yellow( - `\nThe language '${lang}' is not loaded, falling back to '${ - defaultLang || 'txt' - }' for syntax highlighting.` + const resolvedLang = resolveLangSync(lang) + if (!resolvedLang) { + logger.warn( + c.yellow( + `\nThe language '${lang}' is not loaded, falling back to '${ + defaultLang || 'txt' + }' for syntax highlighting.` + ) ) - ) - lang = defaultLang + lang = defaultLang + } else { + highlighter.loadLanguageSync(resolvedLang) + } } } diff --git a/src/node/worker_shikiResolveLang.ts b/src/node/worker_shikiResolveLang.ts new file mode 100644 index 00000000..524a5ad5 --- /dev/null +++ b/src/node/worker_shikiResolveLang.ts @@ -0,0 +1,14 @@ +import { bundledLanguages, type DynamicImportLanguageRegistration } from 'shiki' +import { runAsWorker } from 'synckit' + +async function resolveLang(lang: string) { + return ( + (bundledLanguages as Record) + [lang]?.() + .then((m) => m.default) || [] + ) +} + +runAsWorker(resolveLang) + +export type ShikiResolveLang = typeof resolveLang From 8f052753deee4645e527797d7ca9b664e3c5d34e Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Thu, 31 Oct 2024 17:42:48 +0530 Subject: [PATCH 033/308] chore: adjust type cast --- src/node/worker_shikiResolveLang.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/node/worker_shikiResolveLang.ts b/src/node/worker_shikiResolveLang.ts index 524a5ad5..22a2c228 100644 --- a/src/node/worker_shikiResolveLang.ts +++ b/src/node/worker_shikiResolveLang.ts @@ -3,7 +3,12 @@ import { runAsWorker } from 'synckit' async function resolveLang(lang: string) { return ( - (bundledLanguages as Record) + ( + bundledLanguages as Record< + string, + DynamicImportLanguageRegistration | undefined + > + ) [lang]?.() .then((m) => m.default) || [] ) From 2b3cd95ab112ffce3a168b41c8cca1446d3fb920 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Thu, 31 Oct 2024 18:08:19 +0530 Subject: [PATCH 034/308] release: v1.4.3 --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c5c37b8..014c4c6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## [1.4.3](https://github.com/vuejs/vitepress/compare/v1.4.2...v1.4.3) (2024-10-31) + +### Performance Improvements + +- lazy load shiki languages ([#4326](https://github.com/vuejs/vitepress/issues/4326)) ([8299778](https://github.com/vuejs/vitepress/commit/829977876a21da4f0af5d27593a2d81eb9af0c33)) + ## [1.4.2](https://github.com/vuejs/vitepress/compare/v1.4.1...v1.4.2) (2024-10-29) ### Bug Fixes diff --git a/package.json b/package.json index a5aa040b..482d015f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vitepress", - "version": "1.4.2", + "version": "1.4.3", "description": "Vite & Vue powered static site generator", "keywords": [ "vite", From 08a88440ba66c0b50324430373ed9d2b0f69db3f Mon Sep 17 00:00:00 2001 From: yanrudykh <157956496+yanrudykh@users.noreply.github.com> Date: Fri, 1 Nov 2024 18:56:33 +1000 Subject: [PATCH 035/308] Translation fix (#4328) --- docs/ru/guide/asset-handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ru/guide/asset-handling.md b/docs/ru/guide/asset-handling.md index 3b002e13..7236e32d 100644 --- a/docs/ru/guide/asset-handling.md +++ b/docs/ru/guide/asset-handling.md @@ -8,7 +8,7 @@ ![Изображение](./image.png) ``` -Вы можете ссылаться на статические ресурсы в ваших файлах разметки, компоненты `*.vue` в теме, стили и обычные файлы `.css`, используя абсолютные пути (основанные на корне проекта) или относительные пути (основанные на вашей файловой системе). Последнее похоже на поведение, к которому вы привыкли, если использовали Vite, Vue CLI или `file-loader` в webpack. +Вы можете ссылаться на статические ресурсы в ваших файлах разметки, ваших компонентах `*.vue` в теме, стилях и обычных файлах `.css`, используя абсолютные пути (основанные на корне проекта) или относительные пути (основанные на вашей файловой системе). Последнее похоже на поведение, к которому вы привыкли, если использовали Vite, Vue CLI или `file-loader` в webpack. Распространённые типы файлов изображений, мультимедиа и шрифтов определяются и включаются в качестве ресурсов автоматически. From dcb8450f1166d7731c26a0eb5ec6d931bc283172 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sun, 3 Nov 2024 14:30:31 +0530 Subject: [PATCH 036/308] fix: typo in missing language check --- src/node/markdown/plugins/highlight.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node/markdown/plugins/highlight.ts b/src/node/markdown/plugins/highlight.ts index 4afe83cc..0ae9ed75 100644 --- a/src/node/markdown/plugins/highlight.ts +++ b/src/node/markdown/plugins/highlight.ts @@ -120,7 +120,7 @@ export async function highlight( const langLoaded = highlighter.getLoadedLanguages().includes(lang) if (!langLoaded && !isSpecialLang(lang)) { const resolvedLang = resolveLangSync(lang) - if (!resolvedLang) { + if (!resolvedLang.length) { logger.warn( c.yellow( `\nThe language '${lang}' is not loaded, falling back to '${ From 4dac35fc9ec3eecb4371befa619626ee4db1ba58 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sun, 3 Nov 2024 17:09:29 +0530 Subject: [PATCH 037/308] fix: (temporary patch) lang lazy load not working with twoslash --- src/node/cli.ts | 6 ++- src/node/markdown/plugins/highlight.ts | 52 ++++++++++++++++---------- src/node/worker_shikiResolveLang.ts | 8 +++- 3 files changed, 43 insertions(+), 23 deletions(-) diff --git a/src/node/cli.ts b/src/node/cli.ts index fb60c6f6..6b7f977c 100644 --- a/src/node/cli.ts +++ b/src/node/cli.ts @@ -2,10 +2,14 @@ import minimist from 'minimist' import c from 'picocolors' import { createLogger } from 'vite' import { build, createServer, serve } from '.' -import { init } from './init/init' import { version } from '../../package.json' +import { init } from './init/init' import { bindShortcuts } from './shortcuts' +if (process.env.DEBUG) { + Error.stackTraceLimit = Infinity +} + const argv: any = minimist(process.argv.slice(2)) const logVersion = (logger = createLogger()) => { diff --git a/src/node/markdown/plugins/highlight.ts b/src/node/markdown/plugins/highlight.ts index 0ae9ed75..5e0abf28 100644 --- a/src/node/markdown/plugins/highlight.ts +++ b/src/node/markdown/plugins/highlight.ts @@ -9,7 +9,7 @@ import { import { customAlphabet } from 'nanoid' import { createRequire } from 'node:module' import c from 'picocolors' -import type { ShikiTransformer } from 'shiki' +import type { LanguageRegistration, ShikiTransformer } from 'shiki' import { createHighlighter, isSpecialLang } from 'shiki' import { createSyncFn } from 'synckit' import type { Logger } from 'vite' @@ -61,10 +61,14 @@ export async function highlight( logger: Pick = console ): Promise<[(str: string, lang: string, attrs: string) => string, () => void]> { const { - defaultHighlightLang: defaultLang = '', + defaultHighlightLang: defaultLang = 'txt', codeTransformers: userTransformers = [] } = options + const usingTwoslash = userTransformers.some( + ({ name }) => name === '@shikijs/vitepress-twoslash' + ) + const highlighter = await createHighlighter({ themes: typeof theme === 'object' && 'light' in theme && 'dark' in theme @@ -72,11 +76,29 @@ export async function highlight( : [theme], langs: [ ...(options.languages || []), - ...Object.values(options.languageAlias || {}) + ...Object.values(options.languageAlias || {}), + + // patch for twoslash - https://github.com/vuejs/vitepress/issues/4334 + ...(usingTwoslash + ? Object.keys((await import('shiki')).bundledLanguages) + : []) ], langAlias: options.languageAlias }) + function loadLanguage(name: string | LanguageRegistration) { + const lang = typeof name === 'string' ? name : name.name + if ( + !isSpecialLang(lang) && + !highlighter.getLoadedLanguages().includes(lang) + ) { + const resolvedLang = resolveLangSync(lang) + if (resolvedLang.length) highlighter.loadLanguageSync(resolvedLang) + else return false + } + return true + } + await options?.shikiSetup?.(highlighter) const transformers: ShikiTransformer[] = [ @@ -116,23 +138,13 @@ export async function highlight( .replace(vueRE, '') .toLowerCase() || defaultLang - if (lang) { - const langLoaded = highlighter.getLoadedLanguages().includes(lang) - if (!langLoaded && !isSpecialLang(lang)) { - const resolvedLang = resolveLangSync(lang) - if (!resolvedLang.length) { - logger.warn( - c.yellow( - `\nThe language '${lang}' is not loaded, falling back to '${ - defaultLang || 'txt' - }' for syntax highlighting.` - ) - ) - lang = defaultLang - } else { - highlighter.loadLanguageSync(resolvedLang) - } - } + if (!loadLanguage(lang)) { + logger.warn( + c.yellow( + `\nThe language '${lang}' is not loaded, falling back to '${defaultLang}' for syntax highlighting.` + ) + ) + lang = defaultLang } const lineOptions = attrsToLines(attrs) diff --git a/src/node/worker_shikiResolveLang.ts b/src/node/worker_shikiResolveLang.ts index 22a2c228..644caf9e 100644 --- a/src/node/worker_shikiResolveLang.ts +++ b/src/node/worker_shikiResolveLang.ts @@ -1,4 +1,8 @@ -import { bundledLanguages, type DynamicImportLanguageRegistration } from 'shiki' +import { + bundledLanguages, + type DynamicImportLanguageRegistration, + type LanguageRegistration +} from 'shiki' import { runAsWorker } from 'synckit' async function resolveLang(lang: string) { @@ -10,7 +14,7 @@ async function resolveLang(lang: string) { > ) [lang]?.() - .then((m) => m.default) || [] + .then((m) => m.default) || ([] as LanguageRegistration[]) ) } From 11eb13756506e021f14b20005813b899bde9e19e Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sun, 3 Nov 2024 17:12:52 +0530 Subject: [PATCH 038/308] release: v1.4.4 --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 014c4c6c..e8a31b25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [1.4.4](https://github.com/vuejs/vitepress/compare/v1.4.3...v1.4.4) (2024-11-03) + +### Bug Fixes + +- (temporary patch) lang lazy load not working with twoslash ([4dac35f](https://github.com/vuejs/vitepress/commit/4dac35fc9ec3eecb4371befa619626ee4db1ba58)) +- typo in missing language check ([dcb8450](https://github.com/vuejs/vitepress/commit/dcb8450f1166d7731c26a0eb5ec6d931bc283172)) + ## [1.4.3](https://github.com/vuejs/vitepress/compare/v1.4.2...v1.4.3) (2024-10-31) ### Performance Improvements diff --git a/package.json b/package.json index 482d015f..9d1fb1aa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vitepress", - "version": "1.4.3", + "version": "1.4.4", "description": "Vite & Vue powered static site generator", "keywords": [ "vite", From fc92a77a5d871b5252bcb82639f5c3551d5c70bb Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sun, 3 Nov 2024 18:07:34 +0530 Subject: [PATCH 039/308] fix: lazy load language definition on twoslash too closes #4334 --- src/node/markdown/plugins/highlight.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/node/markdown/plugins/highlight.ts b/src/node/markdown/plugins/highlight.ts index 5e0abf28..12852caf 100644 --- a/src/node/markdown/plugins/highlight.ts +++ b/src/node/markdown/plugins/highlight.ts @@ -65,10 +65,6 @@ export async function highlight( codeTransformers: userTransformers = [] } = options - const usingTwoslash = userTransformers.some( - ({ name }) => name === '@shikijs/vitepress-twoslash' - ) - const highlighter = await createHighlighter({ themes: typeof theme === 'object' && 'light' in theme && 'dark' in theme @@ -76,12 +72,7 @@ export async function highlight( : [theme], langs: [ ...(options.languages || []), - ...Object.values(options.languageAlias || {}), - - // patch for twoslash - https://github.com/vuejs/vitepress/issues/4334 - ...(usingTwoslash - ? Object.keys((await import('shiki')).bundledLanguages) - : []) + ...Object.values(options.languageAlias || {}) ], langAlias: options.languageAlias }) @@ -99,6 +90,14 @@ export async function highlight( return true } + // patch for twoslash - https://github.com/vuejs/vitepress/issues/4334 + const internal = highlighter.getInternalContext() + const getLanguage = internal.getLanguage + internal.getLanguage = (name) => { + loadLanguage(name) + return getLanguage.call(internal, name) + } + await options?.shikiSetup?.(highlighter) const transformers: ShikiTransformer[] = [ From 1e4917eb309a69c99022d6b56c8ec08d64f2e995 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sun, 3 Nov 2024 18:11:12 +0530 Subject: [PATCH 040/308] release: v1.4.5 --- CHANGELOG.md | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8a31b25..4cc58d57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,8 @@ -## [1.4.4](https://github.com/vuejs/vitepress/compare/v1.4.3...v1.4.4) (2024-11-03) +## [1.4.5](https://github.com/vuejs/vitepress/compare/v1.4.4...v1.4.5) (2024-11-03) ### Bug Fixes -- (temporary patch) lang lazy load not working with twoslash ([4dac35f](https://github.com/vuejs/vitepress/commit/4dac35fc9ec3eecb4371befa619626ee4db1ba58)) +- lang lazy load not working with twoslash ([fc92a77](https://github.com/vuejs/vitepress/commit/fc92a77a5d871b5252bcb82639f5c3551d5c70bb)), closes [#4334](https://github.com/vuejs/vitepress/issues/4334) - typo in missing language check ([dcb8450](https://github.com/vuejs/vitepress/commit/dcb8450f1166d7731c26a0eb5ec6d931bc283172)) ## [1.4.3](https://github.com/vuejs/vitepress/compare/v1.4.2...v1.4.3) (2024-10-31) diff --git a/package.json b/package.json index 9d1fb1aa..b486493c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vitepress", - "version": "1.4.4", + "version": "1.4.5", "description": "Vite & Vue powered static site generator", "keywords": [ "vite", From 602ae7ba9d27dfc6a55793e62efc936fd0859c2e Mon Sep 17 00:00:00 2001 From: Aether Chen <15167799+chenjunyu19@users.noreply.github.com> Date: Mon, 4 Nov 2024 00:34:30 +0800 Subject: [PATCH 041/308] chore: remove redundant spaces in theme template css (#4337) --- template/.vitepress/theme/style.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/template/.vitepress/theme/style.css b/template/.vitepress/theme/style.css index a72e96e6..12ae89a4 100644 --- a/template/.vitepress/theme/style.css +++ b/template/.vitepress/theme/style.css @@ -8,7 +8,7 @@ * * Each colors have exact same color scale system with 3 levels of solid * colors with different brightness, and 1 soft color. - * + * * - `XXX-1`: The most solid color used mainly for colored text. It must * satisfy the contrast ratio against when used on top of `XXX-soft`. * @@ -43,7 +43,7 @@ * in custom container, badges, etc. * -------------------------------------------------------------------------- */ - :root { +:root { --vp-c-default-1: var(--vp-c-gray-1); --vp-c-default-2: var(--vp-c-gray-2); --vp-c-default-3: var(--vp-c-gray-3); From 05f2f0d26153ace74b6c023184224d4fada137c2 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Mon, 4 Nov 2024 21:02:31 +0530 Subject: [PATCH 042/308] feat: on demand social icons (#4339) --- docs/en/reference/default-theme-config.md | 17 +-- docs/es/reference/default-theme-config.md | 16 +-- docs/ko/reference/default-theme-config.md | 16 +-- docs/pt/reference/default-theme-config.md | 16 +-- docs/ru/reference/default-theme-config.md | 16 +-- docs/zh/reference/default-theme-config.md | 16 +-- package.json | 2 + pnpm-lock.yaml | 101 ++++++++++++++++++ src/client/app/ssr.ts | 2 +- .../theme-default/components/VPSocialLink.vue | 29 ++++- src/client/theme-default/styles/icons.css | 33 ------ src/node/build/build.ts | 26 ++++- src/node/build/render.ts | 10 +- types/default-theme.d.ts | 14 +-- types/shared.d.ts | 2 + 15 files changed, 170 insertions(+), 146 deletions(-) diff --git a/docs/en/reference/default-theme-config.md b/docs/en/reference/default-theme-config.md index 4a431538..90232aea 100644 --- a/docs/en/reference/default-theme-config.md +++ b/docs/en/reference/default-theme-config.md @@ -228,6 +228,7 @@ You may define this option to show your social account links with icons in nav. export default { themeConfig: { socialLinks: [ + // You can add any icon from simple-icons (https://simpleicons.org/): { icon: 'github', link: 'https://github.com/vuejs/vitepress' }, { icon: 'twitter', link: '...' }, // You can also add custom icons by passing SVG as string: @@ -246,24 +247,10 @@ export default { ```ts interface SocialLink { - icon: SocialLinkIcon + icon: string | { svg: string } link: string ariaLabel?: string } - -type SocialLinkIcon = - | 'discord' - | 'facebook' - | 'github' - | 'instagram' - | 'linkedin' - | 'mastodon' - | 'npm' - | 'slack' - | 'twitter' - | 'x' - | 'youtube' - | { svg: string } ``` ## footer diff --git a/docs/es/reference/default-theme-config.md b/docs/es/reference/default-theme-config.md index 72cebed7..129f16f6 100644 --- a/docs/es/reference/default-theme-config.md +++ b/docs/es/reference/default-theme-config.md @@ -233,24 +233,10 @@ export default { ```ts interface SocialLink { - icon: SocialLinkIcon + icon: string | { svg: string } link: string ariaLabel?: string } - -type SocialLinkIcon = - | 'discord' - | 'facebook' - | 'github' - | 'instagram' - | 'linkedin' - | 'mastodon' - | 'npm' - | 'slack' - | 'twitter' - | 'x' - | 'youtube' - | { svg: string } ``` ## footer diff --git a/docs/ko/reference/default-theme-config.md b/docs/ko/reference/default-theme-config.md index b9ae6987..b0df3361 100644 --- a/docs/ko/reference/default-theme-config.md +++ b/docs/ko/reference/default-theme-config.md @@ -246,24 +246,10 @@ export default { ```ts interface SocialLink { - icon: SocialLinkIcon + icon: string | { svg: string } link: string ariaLabel?: string } - -type SocialLinkIcon = - | 'discord' - | 'facebook' - | 'github' - | 'instagram' - | 'linkedin' - | 'mastodon' - | 'npm' - | 'slack' - | 'twitter' - | 'x' - | 'youtube' - | { svg: string } ``` ## footer diff --git a/docs/pt/reference/default-theme-config.md b/docs/pt/reference/default-theme-config.md index 417cbc30..54e53e4a 100644 --- a/docs/pt/reference/default-theme-config.md +++ b/docs/pt/reference/default-theme-config.md @@ -233,24 +233,10 @@ export default { ```ts interface SocialLink { - icon: SocialLinkIcon + icon: string | { svg: string } link: string ariaLabel?: string } - -type SocialLinkIcon = - | 'discord' - | 'facebook' - | 'github' - | 'instagram' - | 'linkedin' - | 'mastodon' - | 'npm' - | 'slack' - | 'twitter' - | 'x' - | 'youtube' - | { svg: string } ``` ## footer diff --git a/docs/ru/reference/default-theme-config.md b/docs/ru/reference/default-theme-config.md index 265d17f1..56c802e6 100644 --- a/docs/ru/reference/default-theme-config.md +++ b/docs/ru/reference/default-theme-config.md @@ -233,24 +233,10 @@ export default { ```ts interface SocialLink { - icon: SocialLinkIcon + icon: string | { svg: string } link: string ariaLabel?: string } - -type SocialLinkIcon = - | 'discord' - | 'facebook' - | 'github' - | 'instagram' - | 'linkedin' - | 'mastodon' - | 'npm' - | 'slack' - | 'twitter' - | 'x' - | 'youtube' - | { svg: string } ``` ## footer {#footer} diff --git a/docs/zh/reference/default-theme-config.md b/docs/zh/reference/default-theme-config.md index a7028f16..dd7e86b3 100644 --- a/docs/zh/reference/default-theme-config.md +++ b/docs/zh/reference/default-theme-config.md @@ -233,24 +233,10 @@ export default { ```ts interface SocialLink { - icon: SocialLinkIcon + icon: string | { svg: string } link: string ariaLabel?: string } - -type SocialLinkIcon = - | 'discord' - | 'facebook' - | 'github' - | 'instagram' - | 'linkedin' - | 'mastodon' - | 'npm' - | 'slack' - | 'twitter' - | 'x' - | 'youtube' - | { svg: string } ``` ## footer diff --git a/package.json b/package.json index b486493c..350380e3 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,7 @@ "dependencies": { "@docsearch/css": "^3.6.2", "@docsearch/js": "^3.6.2", + "@iconify-json/simple-icons": "^1.2.10", "@shikijs/core": "^1.22.2", "@shikijs/transformers": "^1.22.2", "@shikijs/types": "^1.22.2", @@ -118,6 +119,7 @@ }, "devDependencies": { "@clack/prompts": "^0.7.0", + "@iconify/utils": "^2.1.33", "@mdit-vue/plugin-component": "^2.1.3", "@mdit-vue/plugin-frontmatter": "^2.1.3", "@mdit-vue/plugin-headers": "^2.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3c7b1692..3fbd6a8f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,9 @@ importers: '@docsearch/js': specifier: ^3.6.2 version: 3.6.2(@algolia/client-search@4.24.0) + '@iconify-json/simple-icons': + specifier: ^1.2.10 + version: 1.2.10 '@shikijs/core': specifier: ^1.22.2 version: 1.22.2 @@ -71,6 +74,9 @@ importers: '@clack/prompts': specifier: ^0.7.0 version: 0.7.0 + '@iconify/utils': + specifier: ^2.1.33 + version: 2.1.33(supports-color@9.4.0) '@mdit-vue/plugin-component': specifier: ^2.1.3 version: 2.1.3 @@ -385,6 +391,12 @@ packages: '@algolia/transporter@4.24.0': resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} + '@antfu/install-pkg@0.4.1': + resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + '@babel/code-frame@7.25.7': resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} @@ -745,6 +757,15 @@ packages: resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} engines: {node: '>=10.13.0'} + '@iconify-json/simple-icons@1.2.10': + resolution: {integrity: sha512-9OK1dsSjXlH36lhu5n+BlSoXuqFjHUErGLtNdzHpq0vHq4YFBuGYWtZ+vZTHLreRQ8ijPRv/6EsgkV+nf6AReQ==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.1.33': + resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1234,6 +1255,11 @@ packages: '@vueuse/shared@11.1.0': resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==} + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + add-stream@1.0.0: resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} @@ -1414,6 +1440,9 @@ packages: compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + conventional-changelog-angular@8.0.0: resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} engines: {node: '>=18'} @@ -1947,6 +1976,9 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} @@ -1963,6 +1995,10 @@ packages: resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} engines: {node: '>=18.0.0'} + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + lodash._reinterpolate@3.0.0: resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} @@ -2118,6 +2154,9 @@ packages: mj-context-menu@0.6.1: resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} + mlly@1.7.2: + resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} + mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -2200,6 +2239,9 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@0.2.2: + resolution: {integrity: sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==} + parse-json@8.1.0: resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} engines: {node: '>=18'} @@ -2272,6 +2314,9 @@ packages: resolution: {integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==} engines: {node: '>=18'} + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + playwright-chromium@1.48.2: resolution: {integrity: sha512-bMBvYPlj5X6yyifahATDy5ZQySyNRDD75Q8ZCMcvn234CCA7m8vxgJIlrbJq+jcmuZVsCzNybRtEJHVGqg+v4w==} engines: {node: '>=18'} @@ -2666,6 +2711,9 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} @@ -2980,6 +3028,13 @@ snapshots: '@algolia/logger-common': 4.24.0 '@algolia/requester-common': 4.24.0 + '@antfu/install-pkg@0.4.1': + dependencies: + package-manager-detector: 0.2.2 + tinyexec: 0.3.1 + + '@antfu/utils@0.7.10': {} + '@babel/code-frame@7.25.7': dependencies: '@babel/highlight': 7.25.7 @@ -3196,6 +3251,24 @@ snapshots: '@hutson/parse-repository-url@5.0.0': {} + '@iconify-json/simple-icons@1.2.10': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.1.33(supports-color@9.4.0)': + dependencies: + '@antfu/install-pkg': 0.4.1 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.3.7(supports-color@9.4.0) + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.7.2 + transitivePeerDependencies: + - supports-color + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -3724,6 +3797,8 @@ snapshots: - '@vue/composition-api' - vue + acorn@8.14.0: {} + add-stream@1.0.0: {} algoliasearch@4.24.0: @@ -3913,6 +3988,8 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 + confbox@0.1.8: {} + conventional-changelog-angular@8.0.0: dependencies: compare-func: 2.0.0 @@ -4481,6 +4558,8 @@ snapshots: kleur@3.0.3: {} + kolorist@1.8.0: {} + lilconfig@3.1.2: {} linkify-it@5.0.0: @@ -4511,6 +4590,11 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.0 + local-pkg@0.5.0: + dependencies: + mlly: 1.7.2 + pkg-types: 1.2.1 + lodash._reinterpolate@3.0.0: {} lodash.template@4.5.0: @@ -4663,6 +4747,13 @@ snapshots: mj-context-menu@0.6.1: {} + mlly@1.7.2: + dependencies: + acorn: 8.14.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + mrmime@2.0.0: {} ms@2.1.3: {} @@ -4743,6 +4834,8 @@ snapshots: package-json-from-dist@1.0.1: {} + package-manager-detector@0.2.2: {} + parse-json@8.1.0: dependencies: '@babel/code-frame': 7.25.7 @@ -4794,6 +4887,12 @@ snapshots: dependencies: find-up-simple: 1.0.0 + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.2 + pathe: 1.1.2 + playwright-chromium@1.48.2: dependencies: playwright-core: 1.48.2 @@ -5176,6 +5275,8 @@ snapshots: uc.micro@2.1.0: {} + ufo@1.5.4: {} + uglify-js@3.19.3: optional: true diff --git a/src/client/app/ssr.ts b/src/client/app/ssr.ts index eb408cc7..984335f0 100644 --- a/src/client/app/ssr.ts +++ b/src/client/app/ssr.ts @@ -6,7 +6,7 @@ import type { SSGContext } from '../shared' export async function render(path: string) { const { app, router } = await createApp() await router.go(path) - const ctx: SSGContext = { content: '' } + const ctx: SSGContext = { content: '', vpSocialIcons: new Set() } ctx.content = await renderToString(app, ctx) return ctx } diff --git a/src/client/theme-default/components/VPSocialLink.vue b/src/client/theme-default/components/VPSocialLink.vue index 1c0a8ab3..905ec897 100644 --- a/src/client/theme-default/components/VPSocialLink.vue +++ b/src/client/theme-default/components/VPSocialLink.vue @@ -1,6 +1,7 @@ - + ``` diff --git a/docs/ko/reference/default-theme-sidebar.md b/docs/ko/reference/default-theme-sidebar.md index 21e19ccc..8e4709cd 100644 --- a/docs/ko/reference/default-theme-sidebar.md +++ b/docs/ko/reference/default-theme-sidebar.md @@ -180,36 +180,3 @@ export default { } } ``` - -## `useSidebar` - -사이드바 관련 데이터를 반환합니다. 반환된 객체는 다음과 같은 타입을 가집니다: - -```ts -export interface DocSidebar { - isOpen: Ref - sidebar: ComputedRef - sidebarGroups: ComputedRef - hasSidebar: ComputedRef - hasAside: ComputedRef - leftAside: ComputedRef - isSidebarEnabled: ComputedRef - open: () => void - close: () => void - toggle: () => void -} -``` - -**예제:** - -```vue - - - -``` diff --git a/docs/ko/reference/default-theme-team-page.md b/docs/ko/reference/default-theme-team-page.md index 2123f349..b4fddb0f 100644 --- a/docs/ko/reference/default-theme-team-page.md +++ b/docs/ko/reference/default-theme-team-page.md @@ -53,12 +53,12 @@ const members = [ Say hello to our awesome team. - + ``` 위 코드는 카드 형태의 엘리먼트로 팀 구성원을 표시합니다. 아래와 비슷한 형태로 표시됩니다. - + `` 컴포넌트는 `small`과 `medium` 두 가지 크기로 제공됩니다. 개인의 선호도에 따라 선택할 수 있지만, 일반적으로 `small` 사이즈가 문서 페이지에 더 적합합니다. 또한, 각 구성원에 "설명"이나 "후원" 버튼과 같은 프로퍼티를 추가할 수도 있습니다. 자세한 내용은 [``](#vpteammembers)에서 확인할 수 있습니다. @@ -107,9 +107,7 @@ const members = [ team, some of whom have chosen to be featured below. - + ``` diff --git a/docs/pt/reference/default-theme-sidebar.md b/docs/pt/reference/default-theme-sidebar.md index 62c3b3b1..0d8baf8d 100644 --- a/docs/pt/reference/default-theme-sidebar.md +++ b/docs/pt/reference/default-theme-sidebar.md @@ -180,36 +180,3 @@ export default { } } ``` - -## `useSidebar` - -Retorna dados relacionados à barra lateral. O objeto retornado tem o seguinte tipo: - -```ts -export interface DocSidebar { - isOpen: Ref - sidebar: ComputedRef - sidebarGroups: ComputedRef - hasSidebar: ComputedRef - hasAside: ComputedRef - leftAside: ComputedRef - isSidebarEnabled: ComputedRef - open: () => void - close: () => void - toggle: () => void -} -``` - -**Exemplo:** - -```vue - - - -``` diff --git a/docs/pt/reference/default-theme-team-page.md b/docs/pt/reference/default-theme-team-page.md index 1daa47a5..32a9db0d 100644 --- a/docs/pt/reference/default-theme-team-page.md +++ b/docs/pt/reference/default-theme-team-page.md @@ -53,12 +53,12 @@ const members = [ Diga olá à nossa equipe incrível. - + ``` O código acima exibirá um membro da equipe em um elemento tipo cartão. Ele deve exibir algo semelhante ao abaixo. - + O componente `` vem em 2 tamanhos diferentes, pequeno `small` e médio `medium`. Enquanto é uma questão de preferência, geralmente o tamanho `small` deve encaixar melhor quando usado na página de documento. Além disso, você pode adicionar mais propriedades a cada membro, como adicionar o botão "descrição" ou "patrocinador". Saiba mais sobre em [``](#vpteammembers). @@ -107,9 +107,7 @@ const members = [ alguns dos membros escolheram ser apresentados abaixo. - + ``` diff --git a/docs/ru/reference/default-theme-sidebar.md b/docs/ru/reference/default-theme-sidebar.md index 92fd89c1..bdc6e338 100644 --- a/docs/ru/reference/default-theme-sidebar.md +++ b/docs/ru/reference/default-theme-sidebar.md @@ -178,36 +178,3 @@ export default { } } ``` - -## `useSidebar` {#usesidebar} - -Возвращает данные, связанные с сайдбаром. Возвращаемый объект имеет следующий тип: - -```ts -export interface DocSidebar { - isOpen: Ref - sidebar: ComputedRef - sidebarGroups: ComputedRef - hasSidebar: ComputedRef - hasAside: ComputedRef - leftAside: ComputedRef - isSidebarEnabled: ComputedRef - open: () => void - close: () => void - toggle: () => void -} -``` - -**Пример:** - -```vue - - - -``` diff --git a/docs/ru/reference/default-theme-team-page.md b/docs/ru/reference/default-theme-team-page.md index 0eebaa24..615692bb 100644 --- a/docs/ru/reference/default-theme-team-page.md +++ b/docs/ru/reference/default-theme-team-page.md @@ -51,12 +51,12 @@ const members = [ # Поприветствуйте нашу замечательную команду - + ``` Вышеуказанное отобразит члена команды в виде карточки. Должно отобразиться что-то похожее на то, что показано ниже. - + Компонент `` поставляется в двух различных размерах, `small` и `medium`. Хотя это зависит от ваших предпочтений, обычно размер `small` лучше подходит для использования на странице с макетом `doc`. Кроме того, вы можете добавить дополнительные свойства для карточки члена команды, например, добавить «описание» или кнопку «спонсировать». Подробнее об этом в секции [``](#vpteammembers). @@ -104,7 +104,7 @@ layout: page которой представлены ниже. - + ``` diff --git a/docs/zh/reference/default-theme-sidebar.md b/docs/zh/reference/default-theme-sidebar.md index ba9a9adc..e353ef78 100644 --- a/docs/zh/reference/default-theme-sidebar.md +++ b/docs/zh/reference/default-theme-sidebar.md @@ -178,36 +178,3 @@ export default { } } ``` - -## `useSidebar` - -返回侧边栏相关数据。返回的对象具有以下类型: - -```ts -export interface DocSidebar { - isOpen: Ref - sidebar: ComputedRef - sidebarGroups: ComputedRef - hasSidebar: ComputedRef - hasAside: ComputedRef - leftAside: ComputedRef - isSidebarEnabled: ComputedRef - open: () => void - close: () => void - toggle: () => void -} -``` - -**示例:** - -```vue - - - -``` diff --git a/docs/zh/reference/default-theme-team-page.md b/docs/zh/reference/default-theme-team-page.md index 0341f0f2..9f155cf2 100644 --- a/docs/zh/reference/default-theme-team-page.md +++ b/docs/zh/reference/default-theme-team-page.md @@ -53,12 +53,12 @@ const members = [ Say hello to our awesome team. - + ``` 以上将在卡片外观元素中显示团队成员。它应该显示类似于下面的内容。 - + `` 组件有 2 种不同的尺寸,`small` 和 `medium`。虽然它取决于你的偏好,但通常尺寸在文档页面中使用时 `small` 应该更适合。此外,你可以为每个成员添加更多属性,例如添加“描述”或“赞助”按钮。在 [``](#vpteammembers) 中了解更多信息。 @@ -107,9 +107,7 @@ const members = [ team, some of whom have chosen to be featured below. - + ``` diff --git a/src/client/app/utils.ts b/src/client/app/utils.ts index 53ef6e51..b734179c 100644 --- a/src/client/app/utils.ts +++ b/src/client/app/utils.ts @@ -1,10 +1,5 @@ -import { - h, - onMounted, - onUnmounted, - shallowRef, - type AsyncComponentLoader -} from 'vue' +import { tryOnUnmounted } from '@vueuse/core' +import { h, onMounted, shallowRef, type AsyncComponentLoader } from 'vue' import { EXTERNAL_URL_RE, inBrowser, @@ -81,7 +76,7 @@ export let contentUpdatedCallbacks: (() => any)[] = [] */ export function onContentUpdated(fn: () => any) { contentUpdatedCallbacks.push(fn) - onUnmounted(() => { + tryOnUnmounted(() => { contentUpdatedCallbacks = contentUpdatedCallbacks.filter((f) => f !== fn) }) } diff --git a/src/client/theme-default/Layout.vue b/src/client/theme-default/Layout.vue index 69284148..30ebe491 100644 --- a/src/client/theme-default/Layout.vue +++ b/src/client/theme-default/Layout.vue @@ -1,6 +1,5 @@