|
| 1 | +/** |
| 2 | + * @typedef {import('mdast').Literal} Literal |
| 3 | + * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension |
| 4 | + * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle |
| 5 | + * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension |
| 6 | + * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle |
| 7 | + * @typedef {import('estree-jsx').Program} Estree |
| 8 | + * |
| 9 | + * @typedef {Literal & {type: 'mdxjsEsm', data: {estree?: Estree}}} MDXJSEsm |
| 10 | + */ |
| 11 | + |
| 12 | +/** @type {FromMarkdownExtension} */ |
1 | 13 | export const mdxjsEsmFromMarkdown = { |
2 | 14 | enter: {mdxjsEsm: enterMdxjsEsm}, |
3 | 15 | exit: {mdxjsEsm: exitMdxjsEsm, mdxjsEsmData: exitMdxjsEsmData} |
4 | 16 | } |
5 | 17 |
|
| 18 | +/** @type {ToMarkdownExtension} */ |
6 | 19 | export const mdxjsEsmToMarkdown = {handlers: {mdxjsEsm: handleMdxjsEsm}} |
7 | 20 |
|
| 21 | +/** @type {FromMarkdownHandle} */ |
8 | 22 | function enterMdxjsEsm(token) { |
| 23 | + // @ts-expect-error: custom. |
9 | 24 | this.enter({type: 'mdxjsEsm', value: ''}, token) |
10 | 25 | this.buffer() // Capture EOLs |
11 | 26 | } |
12 | 27 |
|
| 28 | +/** @type {FromMarkdownHandle} */ |
13 | 29 | function exitMdxjsEsm(token) { |
14 | 30 | const value = this.resume() |
15 | 31 | const node = this.exit(token) |
| 32 | + /** @type {Estree?} */ |
| 33 | + // @ts-expect-error: custom. |
| 34 | + const estree = token.estree |
16 | 35 |
|
17 | 36 | node.value = value |
18 | 37 |
|
19 | | - if (token.estree) { |
20 | | - node.data = {estree: token.estree} |
| 38 | + if (estree) { |
| 39 | + node.data = {estree} |
21 | 40 | } |
22 | 41 | } |
23 | 42 |
|
| 43 | +/** @type {FromMarkdownHandle} */ |
24 | 44 | function exitMdxjsEsmData(token) { |
25 | 45 | this.config.enter.data.call(this, token) |
26 | 46 | this.config.exit.data.call(this, token) |
27 | 47 | } |
28 | 48 |
|
| 49 | +/** |
| 50 | + * @type {ToMarkdownHandle} |
| 51 | + * @param {MDXJSEsm} node |
| 52 | + */ |
29 | 53 | function handleMdxjsEsm(node) { |
30 | 54 | return node.value || '' |
31 | 55 | } |
0 commit comments