diff --git a/src/node/markdown/markdown.ts b/src/node/markdown/markdown.ts index 1b204b14..934f15e2 100644 --- a/src/node/markdown/markdown.ts +++ b/src/node/markdown/markdown.ts @@ -39,15 +39,10 @@ export interface MarkdownParsedData { headers?: Header[] } -export interface MarkdownRenderer { +export interface MarkdownRenderer extends MarkdownIt { __path: string __relativePath: string __data: MarkdownParsedData - render: ( - src: string, - path: string, - relatiovePath: string - ) => { html: string; data: any } } export type { Header } @@ -100,20 +95,5 @@ export const createMarkdownRenderer = ( md.use(lineNumberPlugin) } - const wrappedMd = md as any as MarkdownRenderer - - // wrap render so that we can return both the html and extracted data. - const render = md.render - wrappedMd.render = (src, path, relativePath) => { - wrappedMd.__data = {} - wrappedMd.__path = path - wrappedMd.__relativePath = relativePath - const html = render.call(md, src) - return { - html, - data: wrappedMd.__data - } - } - - return wrappedMd + return md as MarkdownRenderer } diff --git a/src/node/markdown/plugins/header.ts b/src/node/markdown/plugins/header.ts index df44d2ca..8c6e5923 100644 --- a/src/node/markdown/plugins/header.ts +++ b/src/node/markdown/plugins/header.ts @@ -1,7 +1,7 @@ -import MarkdownIt from 'markdown-it' -import { MarkdownParsedData } from '../markdown' +import { MarkdownRenderer } from '../markdown' import { deeplyParseHeader } from '../../utils/parseHeader' import { slugify } from './slugify' +import MarkdownIt from 'markdown-it' export const extractHeaderPlugin = (md: MarkdownIt, include = ['h2', 'h3']) => { md.renderer.rules.heading_open = (tokens, i, options, env, self) => { @@ -10,7 +10,7 @@ export const extractHeaderPlugin = (md: MarkdownIt, include = ['h2', 'h3']) => { const title = tokens[i + 1].content const idAttr = token.attrs!.find(([name]) => name === 'id') const slug = idAttr && idAttr[1] - const data = (md as any).__data as MarkdownParsedData + const data = (md as MarkdownRenderer).__data const headers = data.headers || (data.headers = []) headers.push({ level: parseInt(token.tag.slice(1), 10), diff --git a/src/node/markdown/plugins/hoist.ts b/src/node/markdown/plugins/hoist.ts index 2a152d0e..ca309d5f 100644 --- a/src/node/markdown/plugins/hoist.ts +++ b/src/node/markdown/plugins/hoist.ts @@ -1,5 +1,5 @@ import MarkdownIt from 'markdown-it' -import { MarkdownParsedData } from '../markdown' +import { MarkdownRenderer } from '../markdown' // hoist