@@ -15,18 +15,18 @@ import type {
15
15
Text ,
16
16
} from 'hast'
17
17
import { FontStyle } from '@shikijs/vscode-textmate'
18
- import { quansync , toGenerator } from 'quansync'
18
+ import { quansync } from 'quansync/macro '
19
19
import { getLastGrammarStateFromMap , setLastGrammarStateToMap } from '../textmate/grammar-state'
20
20
import { addClassToHast , getTokenStyleObject , stringifyTokenStyle } from '../utils'
21
21
import { getAsyncTransformers } from './_get-transformers'
22
22
import { codeToTokens } from './code-to-tokens'
23
23
24
- const $tokensToHast = quansync ( function * (
24
+ const $tokensToHast = quansync ( async (
25
25
tokens : ThemedToken [ ] [ ] ,
26
26
options : CodeToHastRenderOptions & AsyncTransformerOptions ,
27
27
transformerContext : ShikiTransformerContextSource ,
28
28
grammarState : GrammarState | undefined = getLastGrammarStateFromMap ( tokens ) ,
29
- ) : Generator < unknown , Root > {
29
+ ) : Promise < Root > = > {
30
30
const transformers = getAsyncTransformers ( options )
31
31
32
32
const lines : ( Element | Text ) [ ] = [ ]
@@ -131,7 +131,7 @@ const $tokensToHast = quansync(function* (
131
131
132
132
for ( const transformer of transformers ) {
133
133
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
135
135
}
136
136
137
137
if ( structure === 'inline' )
@@ -144,7 +144,7 @@ const $tokensToHast = quansync(function* (
144
144
if ( structure === 'classic' ) {
145
145
for ( const transformer of transformers ) {
146
146
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
148
148
}
149
149
150
150
lineNodes . push ( lineNode )
@@ -155,14 +155,14 @@ const $tokensToHast = quansync(function* (
155
155
if ( structure === 'classic' ) {
156
156
for ( const transformer of transformers ) {
157
157
if ( transformer ?. code )
158
- codeNode = ( yield * toGenerator ( transformer . code . call ( context , codeNode ) ) ) || codeNode
158
+ codeNode = await transformer . code . call ( context , codeNode ) || codeNode
159
159
}
160
160
161
161
preNode . children . push ( codeNode )
162
162
163
163
for ( const transformer of transformers ) {
164
164
if ( transformer ?. pre )
165
- preNode = ( yield * toGenerator ( transformer . pre . call ( context , preNode ) ) ) || preNode
165
+ preNode = await transformer . pre . call ( context , preNode ) || preNode
166
166
}
167
167
168
168
root . children . push ( preNode )
@@ -171,7 +171,7 @@ const $tokensToHast = quansync(function* (
171
171
let result = root
172
172
for ( const transformer of transformers ) {
173
173
if ( transformer ?. root )
174
- result = ( yield * toGenerator ( transformer . root . call ( context , result ) ) ) || result
174
+ result = await transformer . root . call ( context , result ) || result
175
175
}
176
176
177
177
if ( grammarState )
@@ -182,7 +182,7 @@ const $tokensToHast = quansync(function* (
182
182
183
183
export const tokensToHast = $tokensToHast . sync
184
184
185
- const $codeToHast = quansync ( function * (
185
+ const $codeToHast = quansync ( async (
186
186
internal : ShikiInternal ,
187
187
code : string ,
188
188
options : CodeToHastOptions & AsyncTransformerOptions ,
@@ -192,14 +192,14 @@ const $codeToHast = quansync(function* (
192
192
codeToHast : ( _code , _options ) => $codeToHast . sync ( internal , _code , _options ) ,
193
193
codeToTokens : ( _code , _options ) => codeToTokens ( internal , _code , _options ) ,
194
194
} ,
195
- ) : Generator < unknown , Root > {
195
+ ) : Promise < Root > = > {
196
196
let input = code
197
197
198
198
const transformers = getAsyncTransformers ( options )
199
199
200
200
for ( const transformer of transformers ) {
201
201
if ( transformer ?. preprocess )
202
- input = ( yield * toGenerator ( transformer . preprocess . call ( transformerContext , input , options ) ) ) || input
202
+ input = await transformer . preprocess . call ( transformerContext , input , options ) || input
203
203
}
204
204
205
205
let {
@@ -229,10 +229,10 @@ const $codeToHast = quansync(function* (
229
229
230
230
for ( const transformer of transformers ) {
231
231
if ( transformer ?. tokens )
232
- tokens = ( yield * toGenerator ( transformer . tokens . call ( contextSource , tokens ) ) ) || tokens
232
+ tokens = await transformer . tokens . call ( contextSource , tokens ) || tokens
233
233
}
234
234
235
- const hast = yield * $tokensToHast (
235
+ const hast = await $tokensToHast (
236
236
tokens ,
237
237
{
238
238
...options ,
0 commit comments