Skip to content

Commit 59fe0c3

Browse files
committed
chore: wip
1 parent 348e4ef commit 59fe0c3

File tree

5 files changed

+56
-13
lines changed

5 files changed

+56
-13
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
"taze": "catalog:",
7575
"typescript": "catalog:",
7676
"unbuild": "catalog:",
77+
"unplugin-quansync": "^0.3.3",
7778
"vite": "catalog:",
7879
"vite-tsconfig-paths": "catalog:",
7980
"vitepress-plugin-mermaid": "catalog:",

packages/core/build.config.ts

+6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { defineBuildConfig } from 'unbuild'
2+
import Quansync from 'unplugin-quansync/rollup'
23

34
export default defineBuildConfig({
45
entries: [
@@ -20,4 +21,9 @@ export default defineBuildConfig({
2021
externals: [
2122
'hast',
2223
],
24+
hooks: {
25+
'rollup:options': (ctx, options) => {
26+
options.plugins.push(Quansync())
27+
},
28+
},
2329
})

packages/core/src/highlight/code-to-hast.ts

+13-13
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@ import type {
1515
Text,
1616
} from 'hast'
1717
import { FontStyle } from '@shikijs/vscode-textmate'
18-
import { quansync, toGenerator } from 'quansync'
18+
import { quansync } from 'quansync/macro'
1919
import { getLastGrammarStateFromMap, setLastGrammarStateToMap } from '../textmate/grammar-state'
2020
import { addClassToHast, getTokenStyleObject, stringifyTokenStyle } from '../utils'
2121
import { getAsyncTransformers } from './_get-transformers'
2222
import { codeToTokens } from './code-to-tokens'
2323

24-
const $tokensToHast = quansync(function* (
24+
const $tokensToHast = quansync(async (
2525
tokens: ThemedToken[][],
2626
options: CodeToHastRenderOptions & AsyncTransformerOptions,
2727
transformerContext: ShikiTransformerContextSource,
2828
grammarState: GrammarState | undefined = getLastGrammarStateFromMap(tokens),
29-
): Generator<unknown, Root> {
29+
): Promise<Root> => {
3030
const transformers = getAsyncTransformers(options)
3131

3232
const lines: (Element | Text)[] = []
@@ -131,7 +131,7 @@ const $tokensToHast = quansync(function* (
131131

132132
for (const transformer of transformers) {
133133
if (transformer?.span)
134-
tokenNode = (yield* toGenerator(transformer.span.call(context, tokenNode, idx + 1, col, lineNode, token))) || tokenNode
134+
tokenNode = (await transformer.span.call(context, tokenNode, idx + 1, col, lineNode, token)) || tokenNode
135135
}
136136

137137
if (structure === 'inline')
@@ -144,7 +144,7 @@ const $tokensToHast = quansync(function* (
144144
if (structure === 'classic') {
145145
for (const transformer of transformers) {
146146
if (transformer?.line)
147-
lineNode = (yield* toGenerator(transformer.line.call(context, lineNode, idx + 1))) || lineNode
147+
lineNode = await transformer.line.call(context, lineNode, idx + 1) || lineNode
148148
}
149149

150150
lineNodes.push(lineNode)
@@ -155,14 +155,14 @@ const $tokensToHast = quansync(function* (
155155
if (structure === 'classic') {
156156
for (const transformer of transformers) {
157157
if (transformer?.code)
158-
codeNode = (yield* toGenerator(transformer.code.call(context, codeNode))) || codeNode
158+
codeNode = await transformer.code.call(context, codeNode) || codeNode
159159
}
160160

161161
preNode.children.push(codeNode)
162162

163163
for (const transformer of transformers) {
164164
if (transformer?.pre)
165-
preNode = (yield* toGenerator(transformer.pre.call(context, preNode))) || preNode
165+
preNode = await transformer.pre.call(context, preNode) || preNode
166166
}
167167

168168
root.children.push(preNode)
@@ -171,7 +171,7 @@ const $tokensToHast = quansync(function* (
171171
let result = root
172172
for (const transformer of transformers) {
173173
if (transformer?.root)
174-
result = (yield* toGenerator(transformer.root.call(context, result))) || result
174+
result = await transformer.root.call(context, result) || result
175175
}
176176

177177
if (grammarState)
@@ -182,7 +182,7 @@ const $tokensToHast = quansync(function* (
182182

183183
export const tokensToHast = $tokensToHast.sync
184184

185-
const $codeToHast = quansync(function* (
185+
const $codeToHast = quansync(async (
186186
internal: ShikiInternal,
187187
code: string,
188188
options: CodeToHastOptions & AsyncTransformerOptions,
@@ -192,14 +192,14 @@ const $codeToHast = quansync(function* (
192192
codeToHast: (_code, _options) => $codeToHast.sync(internal, _code, _options),
193193
codeToTokens: (_code, _options) => codeToTokens(internal, _code, _options),
194194
},
195-
): Generator<unknown, Root> {
195+
): Promise<Root> => {
196196
let input = code
197197

198198
const transformers = getAsyncTransformers(options)
199199

200200
for (const transformer of transformers) {
201201
if (transformer?.preprocess)
202-
input = (yield* toGenerator(transformer.preprocess.call(transformerContext, input, options))) || input
202+
input = await transformer.preprocess.call(transformerContext, input, options) || input
203203
}
204204

205205
let {
@@ -229,10 +229,10 @@ const $codeToHast = quansync(function* (
229229

230230
for (const transformer of transformers) {
231231
if (transformer?.tokens)
232-
tokens = (yield* toGenerator(transformer.tokens.call(contextSource, tokens))) || tokens
232+
tokens = await transformer.tokens.call(contextSource, tokens) || tokens
233233
}
234234

235-
const hast = yield* $tokensToHast(
235+
const hast = await $tokensToHast(
236236
tokens,
237237
{
238238
...options,

pnpm-lock.yaml

+34
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vitest.config.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
import Quansync from 'unplugin-quansync/vite'
12
import tsconfigPaths from 'vite-tsconfig-paths'
23
import { defineConfig } from 'vitest/config'
34
import { wasmPlugin } from './packages/engine-oniguruma/rollup.config.mjs'
45

56
export default defineConfig({
67
plugins: [
8+
Quansync(),
79
wasmPlugin(),
810
tsconfigPaths(),
911
],

0 commit comments

Comments
 (0)