diff --git a/index.js b/index.js
index 46108b7..4334de1 100644
--- a/index.js
+++ b/index.js
@@ -1,42 +1,47 @@
+///
+///
+
/**
* @typedef {import('mdast').Root} Root
- * @typedef {import('micromark-extension-gfm').Options & import('mdast-util-gfm').Options} Options
+ * @typedef {import('mdast-util-gfm').Options} MdastOptions
+ * @typedef {import('micromark-extension-gfm').Options} MicromarkOptions
* @typedef {import('unified').Processor} Processor
*/
-import {gfm} from 'micromark-extension-gfm'
+/**
+ * @typedef {MicromarkOptions & MdastOptions} Options
+ * Configuration.
+ */
+
import {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'
+import {gfm} from 'micromark-extension-gfm'
+
+/** @type {Options} */
+const emptyOptions = {}
/**
- * Plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists).
+ * Add support GFM (autolink literals, footnotes, strikethrough, tables, tasklists).
*
- * @param {Options | null | undefined} [options='yaml']
- * Configuration (default: `'yaml'`).
+ * @param {Options | null | undefined} [options]
+ * Configuration (optional).
* @returns {undefined}
* Nothing.
*/
-export default function remarkGfm(options = {}) {
+export default function remarkGfm(options) {
// @ts-expect-error: TS is wrong about `this`.
// eslint-disable-next-line unicorn/no-this-assignment
const self = /** @type {Processor} */ (this)
+ const settings = options || emptyOptions
const data = self.data()
- add('micromarkExtensions', gfm(options))
- add('fromMarkdownExtensions', gfmFromMarkdown())
- add('toMarkdownExtensions', gfmToMarkdown(options))
-
- /**
- * @param {string} field
- * @param {unknown} value
- */
- function add(field, value) {
- const list = /** @type {unknown[]} */ (
- // Other extensions
- /* c8 ignore next 2 */
- // @ts-expect-error: to do: remove when remark is released.
- data[field] || (data[field] = [])
- )
+ const micromarkExtensions =
+ data.micromarkExtensions || (data.micromarkExtensions = [])
+ const fromMarkdownExtensions =
+ data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])
+ const toMarkdownExtensions =
+ data.toMarkdownExtensions || (data.toMarkdownExtensions = [])
- list.push(value)
- }
+ micromarkExtensions.push(gfm(settings))
+ fromMarkdownExtensions.push(gfmFromMarkdown())
+ toMarkdownExtensions.push(gfmToMarkdown(settings))
}
diff --git a/package.json b/package.json
index d5a764b..695fed2 100644
--- a/package.json
+++ b/package.json
@@ -40,6 +40,8 @@
"@types/mdast": "^4.0.0",
"mdast-util-gfm": "^3.0.0",
"micromark-extension-gfm": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-stringify": "^11.0.0",
"unified": "^11.0.0"
},
"devDependencies": {
@@ -47,7 +49,7 @@
"c8": "^8.0.0",
"is-hidden": "^2.0.0",
"prettier": "^3.0.0",
- "remark": "^14.0.0",
+ "remark": "^15.0.0",
"remark-cli": "^11.0.0",
"remark-preset-wooorm": "^9.0.0",
"string-width": "^6.0.0",
diff --git a/test/index.js b/test/index.js
index 23140be..efa165b 100644
--- a/test/index.js
+++ b/test/index.js
@@ -62,8 +62,6 @@ test('fixtures', async function (t) {
}
const proc = remark().use(remarkGfm, config)
- /** @type {Root} */
- // @ts-expect-error: remove when remark is released.
const actual = proc.parse(input)
try {