Skip to content

Commit 8062235

Browse files
antfubrc-dd
andauthored
feat: use markdown-it-async, remove synckit (#4507)
BREAKING CHANGES: markdown-it-async is used instead of markdown-it --------- Co-authored-by: Divyansh Singh <[email protected]>
1 parent 74a0222 commit 8062235

22 files changed

+193
-216
lines changed

__tests__/e2e/.vitepress/config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,8 @@ export default defineConfig({
165165
search: {
166166
provider: 'local',
167167
options: {
168-
_render(src, env, md) {
169-
const html = md.render(src, env)
168+
async _render(src, env, md) {
169+
const html = await md.renderAsync(src, env)
170170
if (env.frontmatter?.search === false) return ''
171171
if (env.relativePath.startsWith('local-search/excluded')) return ''
172172
return html

docs/en/reference/default-theme-search.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,9 @@ export default defineConfig({
124124
/**
125125
* @param {string} src
126126
* @param {import('vitepress').MarkdownEnv} env
127-
* @param {import('markdown-it')} md
127+
* @param {import('markdown-it-async')} md
128128
*/
129-
_render(src, env, md) {
129+
async _render(src, env, md) {
130130
// return html string
131131
}
132132
}
@@ -149,8 +149,8 @@ export default defineConfig({
149149
search: {
150150
provider: 'local',
151151
options: {
152-
_render(src, env, md) {
153-
const html = md.render(src, env)
152+
async _render(src, env, md) {
153+
const html = await md.renderAsync(src, env)
154154
if (env.frontmatter?.search === false) return ''
155155
if (env.relativePath.startsWith('some/path')) return ''
156156
return html
@@ -162,7 +162,7 @@ export default defineConfig({
162162
```
163163

164164
::: warning Note
165-
In case a custom `_render` function is provided, you need to handle the `search: false` frontmatter yourself. Also, the `env` object won't be completely populated before `md.render` is called, so any checks on optional `env` properties like `frontmatter` should be done after that.
165+
In case a custom `_render` function is provided, you need to handle the `search: false` frontmatter yourself. Also, the `env` object won't be completely populated before `md.renderAsync` is called, so any checks on optional `env` properties like `frontmatter` should be done after that.
166166
:::
167167

168168
#### Example: Transforming content - adding anchors
@@ -175,10 +175,10 @@ export default defineConfig({
175175
search: {
176176
provider: 'local',
177177
options: {
178-
_render(src, env, md) {
179-
const html = md.render(src, env)
178+
async _render(src, env, md) {
179+
const html = await md.renderAsync(src, env)
180180
if (env.frontmatter?.title)
181-
return md.render(`# ${env.frontmatter.title}`) + html
181+
return await md.renderAsync(`# ${env.frontmatter.title}`) + html
182182
return html
183183
}
184184
}

docs/es/reference/default-theme-search.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,9 @@ export default defineConfig({
113113
/**
114114
* @param {string} src
115115
* @param {import('vitepress').MarkdownEnv} env
116-
* @param {import('markdown-it')} md
116+
* @param {import('markdown-it-async')} md
117117
*/
118-
_render(src, env, md) {
118+
async _render(src, env, md) {
119119
// retorne un string HTML
120120
}
121121
}
@@ -138,8 +138,8 @@ export default defineConfig({
138138
search: {
139139
provider: 'local',
140140
options: {
141-
_render(src, env, md) {
142-
const html = md.render(src, env)
141+
async _render(src, env, md) {
142+
const html = await md.renderAsync(src, env)
143143
if (env.frontmatter?.search === false) return ''
144144
if (env.relativePath.startsWith('algum/caminho')) return ''
145145
return html
@@ -151,7 +151,7 @@ export default defineConfig({
151151
```
152152

153153
::: warning Nota
154-
En este caso, una función `_render` se proporciona, es necesario manipular el `search: false` desde el frente por su cuenta. Además, el objeto `env` no estará completamente poblado antes que `md.render` se llama, luego verifica las propiedades opcionales `env`, como `frontmatter`, debe hacerse después de eso.
154+
En este caso, una función `_render` se proporciona, es necesario manipular el `search: false` desde el frente por su cuenta. Además, el objeto `env` no estará completamente poblado antes que `md.renderAsync` se llama, luego verifica las propiedades opcionales `env`, como `frontmatter`, debe hacerse después de eso.
155155
:::
156156

157157
#### Ejemplo: Transformar contenido - agregar anclajes {#example-transforming-content-adding-anchors}
@@ -164,10 +164,10 @@ export default defineConfig({
164164
search: {
165165
provider: 'local',
166166
options: {
167-
_render(src, env, md) {
168-
const html = md.render(src, env)
167+
async _render(src, env, md) {
168+
const html = await md.renderAsync(src, env)
169169
if (env.frontmatter?.title)
170-
return md.render(`# ${env.frontmatter.title}`) + html
170+
return await md.renderAsync(`# ${env.frontmatter.title}`) + html
171171
return html
172172
}
173173
}

docs/fa/reference/default-theme-search.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ export default defineConfig({
120120
/**
121121
* @param {string} src
122122
* @param {import('vitepress').MarkdownEnv} env
123-
* @param {import('markdown-it')} md
123+
* @param {import('markdown-it-async')} md
124124
*/
125-
_render(src, env, md) {
125+
async _render(src, env, md) {
126126
// بازگشت رشته HTML
127127
}
128128
}
@@ -145,8 +145,8 @@ export default defineConfig({
145145
search: {
146146
provider: 'local',
147147
options: {
148-
_render(src, env, md) {
149-
const html = md.render(src, env)
148+
async _render(src, env, md) {
149+
const html = await md.renderAsync(src, env)
150150
if (env.frontmatter?.search === false) return ''
151151
if (env.relativePath.startsWith('some/path')) return ''
152152
return html
@@ -158,7 +158,7 @@ export default defineConfig({
158158
```
159159

160160
::: warning توجه
161-
در صورت ارائه تابع `_render` سفارشی، باید خودتان بررسی کنید که آیا frontmatter `search: false` را مدیریت می‌کند یا خیر. همچنین، شی env قبل از فراخوانی `md.render` کاملاً پر نمی‌شود، بنابراین هر بررسی‌ای روی ویژگی‌های اختیاری env مانند `frontmatter` باید بعد از آن انجام شود.
161+
در صورت ارائه تابع `_render` سفارشی، باید خودتان بررسی کنید که آیا frontmatter `search: false` را مدیریت می‌کند یا خیر. همچنین، شی env قبل از فراخوانی `md.renderAsync` کاملاً پر نمی‌شود، بنابراین هر بررسی‌ای روی ویژگی‌های اختیاری env مانند `frontmatter` باید بعد از آن انجام شود.
162162
:::
163163

164164
#### مثال: تبدیل محتوا - افزودن لینک‌های صفحه {#example-transforming-content-adding-anchors}
@@ -171,10 +171,10 @@ export default defineConfig({
171171
search: {
172172
provider: 'local',
173173
options: {
174-
_render(src, env, md) {
175-
const html = md.render(src, env)
174+
async _render(src, env, md) {
175+
const html = await md.renderAsync(src, env)
176176
if (env.frontmatter?.title)
177-
return md.render(`# ${env.frontmatter.title}`) + html
177+
return await md.renderAsync(`# ${env.frontmatter.title}`) + html
178178
return html
179179
}
180180
}
@@ -383,4 +383,4 @@ img[src="/search.png"] {
383383
width: 100%;
384384
aspect-ratio: 1 / 1;
385385
}
386-
</style>
386+
</style>

docs/ko/reference/default-theme-search.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ export default defineConfig({
120120
/**
121121
* @param {string} src
122122
* @param {import('vitepress').MarkdownEnv} env
123-
* @param {import('markdown-it')} md
123+
* @param {import('markdown-it-async')} md
124124
*/
125-
_render(src, env, md) {
125+
async _render(src, env, md) {
126126
// return html string
127127
}
128128
}
@@ -145,8 +145,8 @@ export default defineConfig({
145145
search: {
146146
provider: 'local',
147147
options: {
148-
_render(src, env, md) {
149-
const html = md.render(src, env)
148+
async _render(src, env, md) {
149+
const html = await md.renderAsync(src, env)
150150
if (env.frontmatter?.search === false) return ''
151151
if (env.relativePath.startsWith('some/path')) return ''
152152
return html
@@ -158,7 +158,7 @@ export default defineConfig({
158158
```
159159

160160
::: warning 참고
161-
커스텀 `_render` 함수가 제공된 경우, `search: false` 전문을 직접 처리해야 합니다. 또한, `md.render`가 호출되기 전에 `env` 객체가 완전히 채워지지 않으므로, `frontmatter`와 같은 선택적 `env` 프로퍼티에 대한 검사는 그 이후에 수행해야 합니다.
161+
커스텀 `_render` 함수가 제공된 경우, `search: false` 전문을 직접 처리해야 합니다. 또한, `md.renderAsync`가 호출되기 전에 `env` 객체가 완전히 채워지지 않으므로, `frontmatter`와 같은 선택적 `env` 프로퍼티에 대한 검사는 그 이후에 수행해야 합니다.
162162
:::
163163

164164
#### 예제: 콘텐츠 변환 - 앵커 추가 {#example-transforming-content-adding-anchors}
@@ -171,10 +171,10 @@ export default defineConfig({
171171
search: {
172172
provider: 'local',
173173
options: {
174-
_render(src, env, md) {
175-
const html = md.render(src, env)
174+
async _render(src, env, md) {
175+
const html = await md.renderAsync(src, env)
176176
if (env.frontmatter?.title)
177-
return md.render(`# ${env.frontmatter.title}`) + html
177+
return await md.renderAsync(`# ${env.frontmatter.title}`) + html
178178
return html
179179
}
180180
}

docs/pt/reference/default-theme-search.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,9 @@ export default defineConfig({
113113
/**
114114
* @param {string} src
115115
* @param {import('vitepress').MarkdownEnv} env
116-
* @param {import('markdown-it')} md
116+
* @param {import('markdown-it-async')} md
117117
*/
118-
_render(src, env, md) {
118+
async _render(src, env, md) {
119119
// retorne a string HTML
120120
}
121121
}
@@ -138,8 +138,8 @@ export default defineConfig({
138138
search: {
139139
provider: 'local',
140140
options: {
141-
_render(src, env, md) {
142-
const html = md.render(src, env)
141+
async _render(src, env, md) {
142+
const html = await md.renderAsync(src, env)
143143
if (env.frontmatter?.search === false) return ''
144144
if (env.relativePath.startsWith('algum/caminho')) return ''
145145
return html
@@ -151,7 +151,7 @@ export default defineConfig({
151151
```
152152

153153
::: warning Nota
154-
No caso uma função `_render` personalizada ser fornecida, você precisa manipular o `search: false` do frontmatter por conta própria. Além disso, o objeto `env` não estará completamente populado antes que `md.render` seja chamado, então verificações em propriedades opcionais `env`, como `frontmatter`, devem ser feitas após isso.
154+
No caso uma função `_render` personalizada ser fornecida, você precisa manipular o `search: false` do frontmatter por conta própria. Além disso, o objeto `env` não estará completamente populado antes que `md.renderAsync` seja chamado, então verificações em propriedades opcionais `env`, como `frontmatter`, devem ser feitas após isso.
155155
:::
156156

157157
#### Exemplo: Transformando conteúdo - adicionando âncoras {#example-transforming-content-adding-anchors}
@@ -164,10 +164,10 @@ export default defineConfig({
164164
search: {
165165
provider: 'local',
166166
options: {
167-
_render(src, env, md) {
168-
const html = md.render(src, env)
167+
async _render(src, env, md) {
168+
const html = await md.renderAsync(src, env)
169169
if (env.frontmatter?.title)
170-
return md.render(`# ${env.frontmatter.title}`) + html
170+
return await md.renderAsync(`# ${env.frontmatter.title}`) + html
171171
return html
172172
}
173173
}

docs/ru/reference/default-theme-search.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,9 @@ export default defineConfig({
124124
/**
125125
* @param {string} src
126126
* @param {import('vitepress').MarkdownEnv} env
127-
* @param {import('markdown-it')} md
127+
* @param {import('markdown-it-async')} md
128128
*/
129-
_render(src, env, md) {
129+
async _render(src, env, md) {
130130
// возвращаем html
131131
}
132132
}
@@ -149,8 +149,8 @@ export default defineConfig({
149149
search: {
150150
provider: 'local',
151151
options: {
152-
_render(src, env, md) {
153-
const html = md.render(src, env)
152+
async _render(src, env, md) {
153+
const html = await md.renderAsync(src, env)
154154
if (env.frontmatter?.search === false) return ''
155155
if (env.relativePath.startsWith('some/path')) return ''
156156
return html
@@ -162,7 +162,7 @@ export default defineConfig({
162162
```
163163

164164
::: warning ПРИМЕЧАНИЕ
165-
В случае, если предоставляется пользовательская функция `_render`, вам нужно самостоятельно обработать заголовок `search: false`. Кроме того, объект `env` не будет полностью заполнен до вызова `md.render`, поэтому любые проверки необязательных свойств `env`, таких как `frontmatter`, должны быть выполнены после этого.
165+
В случае, если предоставляется пользовательская функция `_render`, вам нужно самостоятельно обработать заголовок `search: false`. Кроме того, объект `env` не будет полностью заполнен до вызова `md.renderAsync`, поэтому любые проверки необязательных свойств `env`, таких как `frontmatter`, должны быть выполнены после этого.
166166
:::
167167

168168
#### Пример: Преобразование содержимого - добавление якорей {#example-transforming-content-adding-anchors}
@@ -175,10 +175,10 @@ export default defineConfig({
175175
search: {
176176
provider: 'local',
177177
options: {
178-
_render(src, env, md) {
179-
const html = md.render(src, env)
178+
async _render(src, env, md) {
179+
const html = await md.renderAsync(src, env)
180180
if (env.frontmatter?.title)
181-
return md.render(`# ${env.frontmatter.title}`) + html
181+
return await md.renderAsync(`# ${env.frontmatter.title}`) + html
182182
return html
183183
}
184184
}

docs/zh/reference/default-theme-search.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,9 @@ export default defineConfig({
113113
/**
114114
* @param {string} src
115115
* @param {import('vitepress').MarkdownEnv} env
116-
* @param {import('markdown-it')} md
116+
* @param {import('markdown-it-async')} md
117117
*/
118-
_render(src, env, md) {
118+
async _render(src, env, md) {
119119
// 返回 html 字符串
120120
}
121121
}
@@ -138,8 +138,8 @@ export default defineConfig({
138138
search: {
139139
provider: 'local',
140140
options: {
141-
_render(src, env, md) {
142-
const html = md.render(src, env)
141+
async _render(src, env, md) {
142+
const html = await md.renderAsync(src, env)
143143
if (env.frontmatter?.search === false) return ''
144144
if (env.relativePath.startsWith('some/path')) return ''
145145
return html
@@ -151,7 +151,7 @@ export default defineConfig({
151151
```
152152

153153
::: warning 注意
154-
如果提供了自定义的 `_render` 函数,你需要自己处理 `search: false` 的 frontmatter。此外,在调用 `md.render` 之前,`env` 对象不会完全填充,因此对可选 `env` 属性 (如 `frontmatter`) 的任何检查都应该在此之后完成。
154+
如果提供了自定义的 `_render` 函数,你需要自己处理 `search: false` 的 frontmatter。此外,在调用 `md.renderAsync` 之前,`env` 对象不会完全填充,因此对可选 `env` 属性 (如 `frontmatter`) 的任何检查都应该在此之后完成。
155155
:::
156156

157157
#### 示例:转换内容——添加锚点 {#example-transforming-content-adding-anchors}
@@ -164,10 +164,10 @@ export default defineConfig({
164164
search: {
165165
provider: 'local',
166166
options: {
167-
_render(src, env, md) {
168-
const html = md.render(src, env)
167+
async _render(src, env, md) {
168+
const html = await md.renderAsync(src, env)
169169
if (env.frontmatter?.title)
170-
return md.render(`# ${env.frontmatter.title}`) + html
170+
return await md.renderAsync(`# ${env.frontmatter.title}`) + html
171171
return html
172172
}
173173
}

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@
101101
"@shikijs/core": "^2.1.0",
102102
"@shikijs/transformers": "^2.1.0",
103103
"@shikijs/types": "^2.1.0",
104-
"@types/markdown-it": "^14.1.2",
105104
"@vitejs/plugin-vue": "^5.2.1",
106105
"@vue/devtools-api": "^7.7.0",
107106
"@vue/shared": "^3.5.13",
@@ -135,6 +134,7 @@
135134
"@types/fs-extra": "^11.0.4",
136135
"@types/lodash.template": "^4.5.3",
137136
"@types/mark.js": "^8.11.12",
137+
"@types/markdown-it": "^14.1.2",
138138
"@types/markdown-it-attrs": "^4.1.3",
139139
"@types/markdown-it-container": "^2.0.10",
140140
"@types/markdown-it-emoji": "^3.0.1",
@@ -157,6 +157,7 @@
157157
"lru-cache": "^11.0.2",
158158
"markdown-it": "^14.1.0",
159159
"markdown-it-anchor": "^9.2.0",
160+
"markdown-it-async": "^2.0.0",
160161
"markdown-it-attrs": "^4.3.1",
161162
"markdown-it-container": "^4.0.0",
162163
"markdown-it-emoji": "^3.0.0",
@@ -183,7 +184,6 @@
183184
"simple-git-hooks": "^2.11.1",
184185
"sirv": "^3.0.0",
185186
"sitemap": "^8.0.0",
186-
"synckit": "^0.9.2",
187187
"tinyglobby": "^0.2.10",
188188
"typescript": "^5.7.3",
189189
"vitest": "^3.0.4",
@@ -215,7 +215,8 @@
215215
"ora>string-width": "^5"
216216
},
217217
"patchedDependencies": {
218-
218+
"@types/[email protected]": "patches/@[email protected]",
219+
219220
}
220221
}
221222
}

patches/[email protected]

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
diff --git a/types/index.d.ts b/types/index.d.ts
2+
index 40c25c0be1add8b0fc2c51489c25a423dbc49d2c..807bc1b0e434d660c6a298b1dee1c87935bfac86 100644
3+
--- a/types/index.d.ts
4+
+++ b/types/index.d.ts
5+
@@ -1,10 +1,8 @@
6+
import MarkdownIt from 'markdown-it';
7+
-import { default as MarkdownItToken } from 'markdown-it/lib/token.mjs';
8+
-import { default as MarkdownItState} from 'markdown-it/lib/rules_core/state_core.mjs';
9+
+import { default as Token } from 'markdown-it/lib/token.mjs';
10+
+import { default as State } from 'markdown-it/lib/rules_core/state_core.mjs';
11+
12+
declare namespace anchor {
13+
- export type Token = MarkdownItToken
14+
- export type State = MarkdownItState
15+
export type RenderHref = (slug: string, state: State) => string;
16+
export type RenderAttrs = (slug: string, state: State) => Record<string, string | number>;
17+

0 commit comments

Comments
 (0)