|
| 1 | +/// <reference types="remark-parse" /> |
| 2 | +/// <reference types="remark-stringify" /> |
| 3 | + |
1 | 4 | /**
|
2 | 5 | * @typedef {import('mdast').Root} Root
|
3 |
| - * @typedef {import('micromark-extension-gfm').Options & import('mdast-util-gfm').Options} Options |
| 6 | + * @typedef {import('mdast-util-gfm').Options} MdastOptions |
| 7 | + * @typedef {import('micromark-extension-gfm').Options} MicromarkOptions |
4 | 8 | * @typedef {import('unified').Processor<Root>} Processor
|
5 | 9 | */
|
6 | 10 |
|
7 |
| -import {gfm} from 'micromark-extension-gfm' |
| 11 | +/** |
| 12 | + * @typedef {MicromarkOptions & MdastOptions} Options |
| 13 | + * Configuration. |
| 14 | + */ |
| 15 | + |
8 | 16 | import {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'
|
| 17 | +import {gfm} from 'micromark-extension-gfm' |
| 18 | + |
| 19 | +/** @type {Options} */ |
| 20 | +const emptyOptions = {} |
9 | 21 |
|
10 | 22 | /**
|
11 |
| - * Plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists). |
| 23 | + * Add support GFM (autolink literals, footnotes, strikethrough, tables, tasklists). |
12 | 24 | *
|
13 |
| - * @param {Options | null | undefined} [options='yaml'] |
14 |
| - * Configuration (default: `'yaml'`). |
| 25 | + * @param {Options | null | undefined} [options] |
| 26 | + * Configuration (optional). |
15 | 27 | * @returns {undefined}
|
16 | 28 | * Nothing.
|
17 | 29 | */
|
18 |
| -export default function remarkGfm(options = {}) { |
| 30 | +export default function remarkGfm(options) { |
19 | 31 | // @ts-expect-error: TS is wrong about `this`.
|
20 | 32 | // eslint-disable-next-line unicorn/no-this-assignment
|
21 | 33 | const self = /** @type {Processor} */ (this)
|
| 34 | + const settings = options || emptyOptions |
22 | 35 | const data = self.data()
|
23 | 36 |
|
24 |
| - add('micromarkExtensions', gfm(options)) |
25 |
| - add('fromMarkdownExtensions', gfmFromMarkdown()) |
26 |
| - add('toMarkdownExtensions', gfmToMarkdown(options)) |
27 |
| - |
28 |
| - /** |
29 |
| - * @param {string} field |
30 |
| - * @param {unknown} value |
31 |
| - */ |
32 |
| - function add(field, value) { |
33 |
| - const list = /** @type {unknown[]} */ ( |
34 |
| - // Other extensions |
35 |
| - /* c8 ignore next 2 */ |
36 |
| - // @ts-expect-error: to do: remove when remark is released. |
37 |
| - data[field] || (data[field] = []) |
38 |
| - ) |
| 37 | + const micromarkExtensions = |
| 38 | + data.micromarkExtensions || (data.micromarkExtensions = []) |
| 39 | + const fromMarkdownExtensions = |
| 40 | + data.fromMarkdownExtensions || (data.fromMarkdownExtensions = []) |
| 41 | + const toMarkdownExtensions = |
| 42 | + data.toMarkdownExtensions || (data.toMarkdownExtensions = []) |
39 | 43 |
|
40 |
| - list.push(value) |
41 |
| - } |
| 44 | + micromarkExtensions.push(gfm(settings)) |
| 45 | + fromMarkdownExtensions.push(gfmFromMarkdown()) |
| 46 | + toMarkdownExtensions.push(gfmToMarkdown(settings)) |
42 | 47 | }
|
0 commit comments