Skip to content

Commit

Permalink
Refactor to reorganize lib
Browse files Browse the repository at this point in the history
  • Loading branch information
wooorm committed Jul 12, 2023
1 parent 94c2074 commit de6c1e6
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 65 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ node_modules/
*.d.ts
.DS_Store
yarn.lock
!/index.d.ts
15 changes: 15 additions & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
export type {
MdxFlowExpression,
MdxTextExpression
} from 'mdast-util-mdx-expression'
export type {
MdxJsxAttribute,
MdxJsxAttributeValueExpression,
MdxJsxExpressionAttribute,
MdxJsxFlowElement,
MdxJsxTextElement,
ToMarkdownOptions
} from 'mdast-util-mdx-jsx'
export type {MdxjsEsm} from 'mdast-util-mdxjs-esm'

export {mdxFromMarkdown, mdxToMarkdown} from './lib/index.js'
62 changes: 2 additions & 60 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,60 +1,2 @@
/**
* @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension
* @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension
*
* @typedef {import('mdast-util-mdx-expression').MdxFlowExpression} MdxFlowExpression
* @typedef {import('mdast-util-mdx-expression').MdxTextExpression} MdxTextExpression
* @typedef {import('mdast-util-mdx-jsx').MdxJsxAttributeValueExpression} MdxJsxAttributeValueExpression
* @typedef {import('mdast-util-mdx-jsx').MdxJsxAttribute} MdxJsxAttribute
* @typedef {import('mdast-util-mdx-jsx').MdxJsxExpressionAttribute} MdxJsxExpressionAttribute
* @typedef {import('mdast-util-mdx-jsx').MdxJsxFlowElement} MdxJsxFlowElement
* @typedef {import('mdast-util-mdx-jsx').MdxJsxTextElement} MdxJsxTextElement
* @typedef {import('mdast-util-mdx-jsx').ToMarkdownOptions} ToMarkdownOptions
* @typedef {import('mdast-util-mdxjs-esm').MdxjsEsm} MdxjsEsm
*/

import {
mdxExpressionFromMarkdown,
mdxExpressionToMarkdown
} from 'mdast-util-mdx-expression'
import {mdxJsxFromMarkdown, mdxJsxToMarkdown} from 'mdast-util-mdx-jsx'
import {mdxjsEsmFromMarkdown, mdxjsEsmToMarkdown} from 'mdast-util-mdxjs-esm'

/**
* Create an extension for `mdast-util-from-markdown` to enable MDX (ESM, JSX,
* expressions).
*
* @returns {Array<FromMarkdownExtension>}
* Extension for `mdast-util-from-markdown` to enable MDX (ESM, JSX,
* expressions).
*
* When using the syntax extensions with `addResult`, ESM and expression
* nodes will have `data.estree` fields set to ESTree `Program` node.
*/
export function mdxFromMarkdown() {
return [
mdxExpressionFromMarkdown(),
mdxJsxFromMarkdown(),
mdxjsEsmFromMarkdown()
]
}

/**
* Create an extension for `mdast-util-to-markdown` to enable MDX (ESM, JSX,
* expressions).
*
* @param {ToMarkdownOptions | null | undefined} [options]
* Configuration (optional).
* @returns {ToMarkdownExtension}
* Extension for `mdast-util-to-markdown` to enable MDX (ESM, JSX,
* expressions).
*/
export function mdxToMarkdown(options) {
return {
extensions: [
mdxExpressionToMarkdown(),
mdxJsxToMarkdown(options),
mdxjsEsmToMarkdown()
]
}
}
// Note: types exposed from `index.d.ts`.
export {mdxFromMarkdown, mdxToMarkdown} from './lib/index.js'
51 changes: 51 additions & 0 deletions lib/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/**
* @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension
* @typedef {import('mdast-util-mdx-jsx').ToMarkdownOptions} ToMarkdownOptions
* @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension
*/

import {
mdxExpressionFromMarkdown,
mdxExpressionToMarkdown
} from 'mdast-util-mdx-expression'
import {mdxJsxFromMarkdown, mdxJsxToMarkdown} from 'mdast-util-mdx-jsx'
import {mdxjsEsmFromMarkdown, mdxjsEsmToMarkdown} from 'mdast-util-mdxjs-esm'

/**
* Create an extension for `mdast-util-from-markdown` to enable MDX (ESM, JSX,
* expressions).
*
* @returns {Array<FromMarkdownExtension>}
* Extension for `mdast-util-from-markdown` to enable MDX (ESM, JSX,
* expressions).
*
* When using the syntax extensions with `addResult`, ESM and expression
* nodes will have `data.estree` fields set to ESTree `Program` node.
*/
export function mdxFromMarkdown() {
return [
mdxExpressionFromMarkdown(),
mdxJsxFromMarkdown(),
mdxjsEsmFromMarkdown()
]
}

/**
* Create an extension for `mdast-util-to-markdown` to enable MDX (ESM, JSX,
* expressions).
*
* @param {ToMarkdownOptions | null | undefined} [options]
* Configuration (optional).
* @returns {ToMarkdownExtension}
* Extension for `mdast-util-to-markdown` to enable MDX (ESM, JSX,
* expressions).
*/
export function mdxToMarkdown(options) {
return {
extensions: [
mdxExpressionToMarkdown(),
mdxJsxToMarkdown(options),
mdxjsEsmToMarkdown()
]
}
}
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"main": "index.js",
"types": "index.d.ts",
"files": [
"lib/",
"index.d.ts",
"index.js"
],
Expand Down
15 changes: 11 additions & 4 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -350,10 +350,17 @@ See their readmes for the node types supported in the tree:
## Types

This package is fully typed with [TypeScript][].
It exports the additional types `MdxFlowExpression`, `MdxTextExpression`,
`MdxjsEsm`, `MdxJsxAttributeValueExpression`, `MdxJsxAttribute`,
`MdxJsxExpressionAttribute`, `MdxJsxFlowElement`,
`MdxJsxTextElement`, and [`ToMarkdownOptions`][api-to-markdown-options].
It exports the additional types
`MdxFlowExpression` and `MdxTextExpression`
from `mdast-util-mdx-expression`;
`MdxJsxAttribute`,
`MdxJsxAttributeValueExpression`,
`MdxJsxExpressionAttribute`,
`MdxJsxFlowElement`,
`MdxJsxTextElement`,
and [`ToMarkdownOptions`][api-to-markdown-options]
from `mdast-util-mdx-jsx`;
and `MdxjsEsm` from `mdast-util-mdxjs-esm`.

It also registers the node types with `@types/mdast` and `@types/hast`.
If you’re working with the syntax tree, make sure to import this utility
Expand Down
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@
"target": "es2020"
},
"exclude": ["coverage/", "node_modules/"],
"include": ["**/*.js"]
"include": ["**/*.js", "index.d.ts"]
}

0 comments on commit de6c1e6

Please sign in to comment.