diff --git a/package.json b/package.json index 21094df9..c7944d06 100644 --- a/package.json +++ b/package.json @@ -101,8 +101,8 @@ "mark.js": "8.11.1", "minisearch": "^6.2.0", "mrmime": "^1.0.1", - "shikiji": "^0.7.0", - "shikiji-transformers": "^0.7.0", + "shikiji": "^0.7.1", + "shikiji-transformers": "^0.7.1", "vite": "^5.0.0", "vue": "^3.3.8" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e63d805f..41ca14be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,11 +45,11 @@ importers: specifier: ^1.0.1 version: 1.0.1 shikiji: - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.7.1 + version: 0.7.1 shikiji-transformers: - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.7.1 + version: 0.7.1 vite: specifier: ^5.0.0 version: 5.0.0(@types/node@20.9.1) @@ -4163,14 +4163,14 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true - /shikiji-transformers@0.7.0: - resolution: {integrity: sha512-IuujhNtUjs6kyNRjrn36k5Aj/Ea7JZpoB5YaM7rqkK+sM6MdIQBcZDAOhvoD/ITgFht4bcamGXvZ8+Aw1j7VZQ==} + /shikiji-transformers@0.7.1: + resolution: {integrity: sha512-Y4MsRl8s/rx6xnO3kckKC6j93YJepeGT8ye9Bnz6ecadrtqKXZbDeERLX9OgkEhKNwxLlvo9Yk9N59oNj/O0QQ==} dependencies: - shikiji: 0.7.0 + shikiji: 0.7.1 dev: false - /shikiji@0.7.0: - resolution: {integrity: sha512-Tzx9pS9ixMVNsfZjeOoJWR3t3Vw054LU/r2euAGSRJPg8/v1sumxZsZQrajai2jpksn0qT3HJXcqzNaiJcJSag==} + /shikiji@0.7.1: + resolution: {integrity: sha512-w/zKRaYe6RhkksZily2WG7yzz/g6qJsqrJom9OVbhLd4pzONXbVNWOlNHYhpMJ1SRvRp7CWVbh3MXy34bLKV4g==} dependencies: hast-util-to-html: 9.0.0 dev: false diff --git a/src/node/markdown/markdown.ts b/src/node/markdown/markdown.ts index fe7215d2..c98ce46f 100644 --- a/src/node/markdown/markdown.ts +++ b/src/node/markdown/markdown.ts @@ -61,13 +61,31 @@ export interface MarkdownOptions extends MarkdownIt.Options { sfc?: SfcPluginOptions theme?: ThemeOptions languages?: LanguageInput[] + languageAlias?: Record toc?: TocPluginOptions externalLinks?: Record cache?: boolean + /** + * Options for `@mdit-vue/plugin-component` + * @see https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-component + */ component?: ComponentPluginOptions + /** + * Enable math support by `markdown-it-mathjax3` + * @default false + * @see https://vitepress.dev/guide/markdown#math-equations + */ math?: boolean | any + /** + * Options for `markdown-it-container` + * @see https://github.com/markdown-it/markdown-it-container + */ container?: ContainerOptions - shikijiTransformers?: ShikijiTransformer[] + /** + * Transformers applied to code blocks + * @see https://github.com/antfu/shikiji#hast-transformers + */ + codeTransformers?: ShikijiTransformer[] } export type MarkdownRenderer = MarkdownIt @@ -91,7 +109,8 @@ export const createMarkdownRenderer = async ( options.languages, options.defaultHighlightLang, logger, - options.shikijiTransformers + options.codeTransformers, + options.languageAlias )), ...options }) diff --git a/src/node/markdown/plugins/highlight.ts b/src/node/markdown/plugins/highlight.ts index 7e12115d..ce3f83d0 100644 --- a/src/node/markdown/plugins/highlight.ts +++ b/src/node/markdown/plugins/highlight.ts @@ -58,14 +58,16 @@ export async function highlight( languages?: LanguageInput[], defaultLang: string = '', logger: Pick = console, - userTransformers: ShikijiTransformer[] = [] + userTransformers: ShikijiTransformer[] = [], + languageAlias: Record = {} ): Promise<(str: string, lang: string, attrs: string) => string> { const highlighter = await getHighlighter({ themes: typeof theme === 'string' || 'name' in theme ? [theme] : [theme.light, theme.dark], - langs: languages?.length ? languages : Object.keys(bundledLanguages) + langs: languages?.length ? languages : Object.keys(bundledLanguages), + langAlias: languageAlias, }) const transformers: ShikijiTransformer[] = [ diff --git a/src/node/markdown/plugins/preWrapper.ts b/src/node/markdown/plugins/preWrapper.ts index b224d742..9e79a4e1 100644 --- a/src/node/markdown/plugins/preWrapper.ts +++ b/src/node/markdown/plugins/preWrapper.ts @@ -44,4 +44,5 @@ function extractLang(info: string) { .replace(/:(no-)?line-numbers({| |$|=\d*).*/, '') .replace(/(-vue|{| ).*$/, '') .replace(/^vue-html$/, 'template') + .replace(/^ansi$/, '') }