Skip to content

Commit 61f5e56

Browse files
committed
Use ESM
1 parent 433bf41 commit 61f5e56

8 files changed

+82
-93
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
.nyc_output/
21
coverage/
32
node_modules/
43
*.log

.prettierignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
coverage/
2-
*.html
3-
*.json
42
*.md

from-markdown.js

Lines changed: 0 additions & 35 deletions
This file was deleted.

index.js

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,46 @@
1-
exports.fromMarkdown = require('./from-markdown.js')
2-
exports.toMarkdown = require('./to-markdown.js')
1+
import mdxExpressionFromMarkdown from 'mdast-util-mdx-expression/from-markdown.js'
2+
import mdxExpressionToMarkdown from 'mdast-util-mdx-expression/to-markdown.js'
3+
import mdxJsxFromMarkdown from 'mdast-util-mdx-jsx/from-markdown.js'
4+
import mdxJsxToMarkdown from 'mdast-util-mdx-jsx/to-markdown.js'
5+
import mdxjsEsmFromMarkdown from 'mdast-util-mdxjs-esm/from-markdown.js'
6+
import mdxjsEsmToMarkdown from 'mdast-util-mdxjs-esm/to-markdown.js'
7+
8+
var own = {}.hasOwnProperty
9+
10+
export const mdxFromMarkdown = configure([
11+
mdxExpressionFromMarkdown,
12+
mdxJsxFromMarkdown,
13+
mdxjsEsmFromMarkdown
14+
])
15+
16+
function configure(extensions) {
17+
var config = {canContainEols: []}
18+
var index = -1
19+
20+
while (++index < extensions.length) {
21+
extension(config, extensions[index])
22+
}
23+
24+
return config
25+
}
26+
27+
function extension(config, extension) {
28+
var key
29+
var left
30+
var right
31+
32+
for (key in extension) {
33+
left = own.call(config, key) ? config[key] : (config[key] = {})
34+
right = extension[key]
35+
36+
if (key === 'canContainEols') {
37+
config[key] = [].concat(left, right)
38+
} else {
39+
Object.assign(left, right)
40+
}
41+
}
42+
}
43+
44+
export const mdxToMarkdown = {
45+
extensions: [mdxExpressionToMarkdown, mdxJsxToMarkdown, mdxjsEsmToMarkdown]
46+
}

package.json

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,40 +27,34 @@
2727
"contributors": [
2828
"Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
2929
],
30+
"sideEffects": false,
31+
"type": "module",
32+
"main": "index.js",
3033
"files": [
31-
"from-markdown.js",
32-
"index.js",
33-
"to-markdown.js"
34+
"index.js"
3435
],
3536
"dependencies": {
3637
"mdast-util-mdx-expression": "~0.1.0",
3738
"mdast-util-mdx-jsx": "~0.1.0",
38-
"mdast-util-mdxjs-esm": "~0.1.0",
39-
"mdast-util-to-markdown": "^0.6.1"
39+
"mdast-util-mdxjs-esm": "~0.1.0"
4040
},
4141
"devDependencies": {
42+
"c8": "^7.0.0",
4243
"mdast-util-from-markdown": "^0.8.0",
4344
"micromark-extension-mdx": "^0.2.0",
4445
"micromark-extension-mdxjs": "^0.3.0",
45-
"nyc": "^15.0.0",
4646
"prettier": "^2.0.0",
4747
"remark-cli": "^9.0.0",
4848
"remark-preset-wooorm": "^8.0.0",
4949
"tape": "^5.0.0",
50-
"xo": "^0.38.0"
50+
"xo": "^0.39.0"
5151
},
5252
"scripts": {
5353
"format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix",
54-
"test-api": "node test",
55-
"test-coverage": "nyc --reporter lcov tape test.js",
54+
"test-api": "node --conditions development test.js",
55+
"test-coverage": "c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov node --conditions development test.js",
5656
"test": "npm run format && npm run test-coverage"
5757
},
58-
"nyc": {
59-
"check-coverage": true,
60-
"lines": 100,
61-
"functions": 100,
62-
"branches": 100
63-
},
6458
"prettier": {
6559
"tabWidth": 2,
6660
"useTabs": false,
@@ -71,8 +65,9 @@
7165
},
7266
"xo": {
7367
"prettier": true,
74-
"esnext": false,
7568
"rules": {
69+
"no-var": "off",
70+
"prefer-arrow-callback": "off",
7671
"guard-for-in": "off",
7772
"unicorn/prefer-optional-catch-binding": "off"
7873
}

readme.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ Alternatively, the extensions can be used separately:
2828

2929
## Install
3030

31+
This package is [ESM only](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c):
32+
Node 12+ is needed to use it and it must be `import`ed instead of `require`d.
33+
3134
[npm][]:
3235

3336
```sh
@@ -219,17 +222,17 @@ Which you can also put inline: {1+1}.
219222

220223
## API
221224

222-
### `mdx.fromMarkdown`
225+
This package exports the following identifier: `mdxFromMarkdown`,
226+
`mdxToMarkdown`.
227+
There is no default export.
223228

224-
### `mdx.toMarkdown`
229+
### `mdxFromMarkdown`
225230

226-
> Note: the separate extensions are also available at
227-
> `mdast-util-mdx/from-markdown` and `mdast-util-mdx/to-markdown`.
231+
### `mdxToMarkdown`
228232

229233
Support MDX (or MDX.js).
230-
The exports of `fromMarkdown` is an extension for
231-
[`mdast-util-from-markdown`][from-markdown].
232-
The export of `toMarkdown` is an extension for
234+
The exports are respectively an extension for
235+
[`mdast-util-from-markdown`][from-markdown] and
233236
[`mdast-util-to-markdown`][to-markdown].
234237

235238
There are no options.

test.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
var test = require('tape')
2-
var fromMarkdown = require('mdast-util-from-markdown')
3-
var toMarkdown = require('mdast-util-to-markdown')
4-
var syntax = require('micromark-extension-mdxjs')
5-
var mdx = require('.')
1+
import test from 'tape'
2+
import fromMarkdown from 'mdast-util-from-markdown'
3+
import toMarkdown from 'mdast-util-to-markdown'
4+
import mdxjs from 'micromark-extension-mdxjs'
5+
import {mdxFromMarkdown, mdxToMarkdown} from './index.js'
66

77
test('markdown -> mdast', function (t) {
88
t.deepEqual(
99
JSON.parse(
1010
JSON.stringify(
1111
fromMarkdown('import a from "b"', {
12-
extensions: [syntax()],
13-
mdastExtensions: [mdx.fromMarkdown]
12+
extensions: [mdxjs()],
13+
mdastExtensions: [mdxFromMarkdown]
1414
})
1515
)
1616
),
@@ -94,8 +94,8 @@ test('markdown -> mdast', function (t) {
9494

9595
t.deepEqual(
9696
fromMarkdown('<x/>', {
97-
extensions: [syntax()],
98-
mdastExtensions: [mdx.fromMarkdown]
97+
extensions: [mdxjs()],
98+
mdastExtensions: [mdxFromMarkdown]
9999
}),
100100
{
101101
type: 'root',
@@ -123,8 +123,8 @@ test('markdown -> mdast', function (t) {
123123
JSON.parse(
124124
JSON.stringify(
125125
fromMarkdown('{1 + 1}', {
126-
extensions: [syntax()],
127-
mdastExtensions: [mdx.fromMarkdown]
126+
extensions: [mdxjs()],
127+
mdastExtensions: [mdxFromMarkdown]
128128
})
129129
)
130130
),
@@ -210,7 +210,7 @@ test('mdast -> markdown', function (t) {
210210
t.equal(
211211
toMarkdown(
212212
{type: 'mdxjsEsm', value: 'import a from "b"'},
213-
{extensions: [mdx.toMarkdown]}
213+
{extensions: [mdxToMarkdown]}
214214
),
215215
'import a from "b"\n',
216216
'should support esm'
@@ -219,7 +219,7 @@ test('mdast -> markdown', function (t) {
219219
t.equal(
220220
toMarkdown(
221221
{type: 'mdxJsxFlowElement', name: 'x'},
222-
{extensions: [mdx.toMarkdown]}
222+
{extensions: [mdxToMarkdown]}
223223
),
224224
'<x/>\n',
225225
'should support jsx'
@@ -228,7 +228,7 @@ test('mdast -> markdown', function (t) {
228228
t.deepEqual(
229229
toMarkdown(
230230
{type: 'mdxFlowExpression', value: '1 + 1'},
231-
{extensions: [mdx.toMarkdown]}
231+
{extensions: [mdxToMarkdown]}
232232
),
233233
'{1 + 1}\n',
234234
'should support expressions'
@@ -241,7 +241,7 @@ test('mdast -> markdown', function (t) {
241241
url: 'tel:123',
242242
children: [{type: 'text', value: 'tel:123'}]
243243
},
244-
{extensions: [mdx.toMarkdown]}
244+
{extensions: [mdxToMarkdown]}
245245
),
246246
'[tel:123](tel:123)\n',
247247
'should use link (resource) instead of link (auto)'

to-markdown.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)