11import type { Header } from '@valaxyjs/utils'
22
33import type { ResolvedValaxyOptions } from '../../types'
4- import type { MarkdownItAsync } from './async'
54import type { MarkdownBase } from './base'
5+ import type { MarkdownRenderer } from './renderer'
66
77import { logger } from '../../logger'
8- import { createMarkdownItAsync } from './async'
98import { getSharedHighlighter } from './highlighterCache'
9+ import { createMarkdownEngine } from './renderer'
1010import { defaultCodeTheme , setupMarkdownPageMetadata , setupMarkdownPlugins } from './setup'
1111
12- export * from './async'
1312export * from './env'
13+ export * from './renderer'
1414export * from './setup'
1515export * from './transform'
1616
@@ -27,7 +27,7 @@ export function disposePreviewMdItInstance() {
2727 _disposeHighlighter = undefined
2828}
2929
30- export async function createMarkdownRenderer ( options ?: ResolvedValaxyOptions , base ?: MarkdownBase ) : Promise < MarkdownItAsync > {
30+ export async function createMarkdownRenderer ( options ?: ResolvedValaxyOptions , base ?: MarkdownBase ) : Promise < MarkdownRenderer > {
3131 const mdOptions = options ?. config . markdown || { }
3232 const theme = mdOptions . theme ?? defaultCodeTheme
3333
@@ -37,7 +37,7 @@ export async function createMarkdownRenderer(options?: ResolvedValaxyOptions, ba
3737
3838 _disposeHighlighter = dispose
3939
40- const md = createMarkdownItAsync ( {
40+ const md = createMarkdownEngine ( {
4141 html : true ,
4242 linkify : true ,
4343 ...mdOptions . options ,
@@ -47,9 +47,8 @@ export async function createMarkdownRenderer(options?: ResolvedValaxyOptions, ba
4747 md . linkify . set ( { fuzzyLink : false } )
4848
4949 await setupMarkdownPlugins ( md , options , base )
50- await mdOptions . markdownItSetup ?.(
51- md as unknown as Parameters < NonNullable < typeof mdOptions . markdownItSetup > > [ 0 ] ,
52- )
50+ const userMarkdownSetup = mdOptions . markdownSetup ?? mdOptions . markdownItSetup
51+ await userMarkdownSetup ?.( md )
5352 setupMarkdownPageMetadata ( md , options )
5453 return md
5554}
@@ -59,7 +58,7 @@ export async function createMarkdownRenderer(options?: ResolvedValaxyOptions, ba
5958 * Used by localSearchPlugin where HTML output is stripped anyway,
6059 * saving ~20-50 MB of Shiki theme/grammar data.
6160 */
62- export async function createLightMarkdownRenderer ( options ?: ResolvedValaxyOptions , base ?: MarkdownBase ) : Promise < MarkdownItAsync > {
61+ export async function createLightMarkdownRenderer ( options ?: ResolvedValaxyOptions , base ?: MarkdownBase ) : Promise < MarkdownRenderer > {
6362 const mdOptions = options ?. config . markdown || { }
6463
6564 // Define highlight separately to avoid circular type inference
@@ -73,7 +72,7 @@ export async function createLightMarkdownRenderer(options?: ResolvedValaxyOption
7372 return `<pre><code>${ escaped } </code></pre>`
7473 }
7574
76- const md = createMarkdownItAsync ( {
75+ const md = createMarkdownEngine ( {
7776 html : true ,
7877 linkify : true ,
7978 ...mdOptions . options ,
@@ -83,6 +82,8 @@ export async function createLightMarkdownRenderer(options?: ResolvedValaxyOption
8382 md . linkify . set ( { fuzzyLink : false } )
8483
8584 await setupMarkdownPlugins ( md , options , base )
85+ const userMarkdownSetup = mdOptions . markdownSetup ?? mdOptions . markdownItSetup
86+ await userMarkdownSetup ?.( md )
8687 setupMarkdownPageMetadata ( md , options )
8788 return md
8889}
0 commit comments