/** * @typedef {import('mdast').Root} Root * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions * @typedef {import('unified').Parser} Parser * @typedef {import('unified').Processor} Processor */ /** * @typedef {Omit} Options */ import {fromMarkdown} from 'mdast-util-from-markdown' /** * Aadd support for parsing from markdown. * * @param {Readonly | null | undefined} [options] * Configuration (optional). * @returns {undefined} * Nothing. */ export default function remarkParse(options) { /** @type {Processor} */ // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly. const self = this self.parser = parser /** * @type {Parser} */ function parser(doc) { return fromMarkdown(doc, { ...self.data('settings'), ...options, // Note: these options are not in the readme. // The goal is for them to be set by plugins on `data` instead of being // passed by users. extensions: self.data('micromarkExtensions') || [], mdastExtensions: self.data('fromMarkdownExtensions') || [] }) } }