Skip to content

Commit a840260

Browse files
committed
Use ESM
1 parent 04214da commit a840260

9 files changed

+100
-113
lines changed

.gitignore

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
.DS_Store
2-
*.log
3-
.nyc_output/
41
coverage/
52
node_modules/
3+
.DS_Store
4+
*.log
65
yarn.lock

.prettierignore

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
coverage/
22
*.html
3-
*.json
43
*.md

from-markdown.js

-42
This file was deleted.

index.js

+57-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,57 @@
1-
exports.fromMarkdown = require('./from-markdown.js')
2-
exports.toMarkdown = require('./to-markdown.js')
1+
import gfmAutolinkLiteralFromMarkdown from 'mdast-util-gfm-autolink-literal/from-markdown.js'
2+
import gfmAutolinkLiteralToMarkdown from 'mdast-util-gfm-autolink-literal/to-markdown.js'
3+
import gfmStrikethroughFromMarkdown from 'mdast-util-gfm-strikethrough/from-markdown.js'
4+
import gfmStrikethroughToMarkdown from 'mdast-util-gfm-strikethrough/to-markdown.js'
5+
import gfmTableFromMarkdown from 'mdast-util-gfm-table/from-markdown.js'
6+
import gfmTableToMarkdown from 'mdast-util-gfm-table/to-markdown.js'
7+
import gfmTaskListItemFromMarkdown from 'mdast-util-gfm-task-list-item/from-markdown.js'
8+
import gfmTaskListItemToMarkdown from 'mdast-util-gfm-task-list-item/to-markdown.js'
9+
10+
var own = {}.hasOwnProperty
11+
12+
export const gfmFromMarkdown = configure([
13+
gfmAutolinkLiteralFromMarkdown,
14+
gfmStrikethroughFromMarkdown,
15+
gfmTableFromMarkdown,
16+
gfmTaskListItemFromMarkdown
17+
])
18+
19+
export function gfmToMarkdown(options) {
20+
return {
21+
extensions: [
22+
gfmAutolinkLiteralToMarkdown,
23+
gfmStrikethroughToMarkdown,
24+
gfmTableToMarkdown(options),
25+
gfmTaskListItemToMarkdown
26+
]
27+
}
28+
}
29+
30+
function configure(extensions) {
31+
var config = {transforms: [], canContainEols: []}
32+
var length = extensions.length
33+
var index = -1
34+
35+
while (++index < length) {
36+
extension(config, extensions[index])
37+
}
38+
39+
return config
40+
}
41+
42+
function extension(config, extension) {
43+
var key
44+
var left
45+
var right
46+
47+
for (key in extension) {
48+
left = own.call(config, key) ? config[key] : (config[key] = {})
49+
right = extension[key]
50+
51+
if (key === 'canContainEols' || key === 'transforms') {
52+
config[key] = [].concat(left, right)
53+
} else {
54+
Object.assign(left, right)
55+
}
56+
}
57+
}

package.json

+12-16
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@
3030
"contributors": [
3131
"Titus Wormer <[email protected]> (https://wooorm.com)"
3232
],
33+
"sideEffects": false,
34+
"type": "module",
35+
"main": "index.js",
3336
"files": [
34-
"from-markdown.js",
35-
"index.js",
36-
"to-markdown.js"
37+
"index.js"
3738
],
3839
"dependencies": {
3940
"mdast-util-gfm-autolink-literal": "^0.1.0",
@@ -43,32 +44,26 @@
4344
"mdast-util-to-markdown": "^0.6.1"
4445
},
4546
"devDependencies": {
47+
"c8": "^7.0.0",
4648
"github-slugger": "^1.0.0",
47-
"hast-util-to-html": "^7.0.0",
49+
"hast-util-to-html": "^8.0.0",
4850
"mdast-util-from-markdown": "^0.8.0",
49-
"mdast-util-to-hast": "^10.0.0",
51+
"mdast-util-to-hast": "^11.0.0",
5052
"micromark-extension-gfm": "^0.3.0",
5153
"node-fetch": "^2.0.0",
52-
"nyc": "^15.0.0",
5354
"prettier": "^2.0.0",
5455
"remark-cli": "^9.0.0",
5556
"remark-preset-wooorm": "^8.0.0",
5657
"tape": "^5.0.0",
57-
"xo": "^0.38.0"
58+
"xo": "^0.39.0"
5859
},
5960
"scripts": {
6061
"format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix",
6162
"crawl": "node script/crawl-tests",
62-
"test-api": "node test",
63-
"test-coverage": "nyc --reporter lcov tape test/index.js",
63+
"test-api": "node --conditions development test/index.js",
64+
"test-coverage": "c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov node --conditions development test/index.js",
6465
"test": "npm run format && npm run test-coverage"
6566
},
66-
"nyc": {
67-
"check-coverage": true,
68-
"lines": 100,
69-
"functions": 100,
70-
"branches": 100
71-
},
7267
"prettier": {
7368
"tabWidth": 2,
7469
"useTabs": false,
@@ -79,8 +74,9 @@
7974
},
8075
"xo": {
8176
"prettier": true,
82-
"esnext": false,
8377
"rules": {
78+
"no-var": "off",
79+
"prefer-arrow-callback": "off",
8480
"guard-for-in": "off",
8581
"unicorn/prefer-optional-catch-binding": "off"
8682
}

readme.md

+8-5
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ Alternatively, the extensions can be used separately:
3030

3131
## Install
3232

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

3538
```sh
@@ -212,13 +215,13 @@ Now, running `node example` yields:
212215

213216
## API
214217

215-
### `gfm.fromMarkdown`
218+
This package exports the following identifier: `gfmFromMarkdown`,
219+
`gfmToMarkdown`.
220+
There is no default export.
216221

217-
### `gfm.toMarkdown(options?)`
222+
### `gfmFromMarkdown`
218223

219-
> Note: the separate extensions are also available at
220-
> `mdast-util-gfm/from-markdown` and
221-
> `mdast-util-gfm/to-markdown`.
224+
### `gfmToMarkdown(options?)`
222225

223226
Support GFM.
224227
The exports of `fromMarkdown` is an extension for

script/crawl-tests.js

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
'use strict'
2-
3-
var fs = require('fs')
4-
var path = require('path')
5-
var fetch = require('node-fetch')
1+
import fs from 'fs'
2+
import path from 'path'
3+
import fetch from 'node-fetch'
64

75
fetch(
86
'https://api.github.com/repos/micromark/micromark-extension-gfm/contents/test/spec.json',

test/index.js

+18-17
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
var fs = require('fs')
2-
var path = require('path')
3-
var test = require('tape')
4-
var slug = require('github-slugger').slug
5-
var toHast = require('mdast-util-to-hast')
6-
var toHtml = require('hast-util-to-html')
7-
var fromMarkdown = require('mdast-util-from-markdown')
8-
var toMarkdown = require('mdast-util-to-markdown')
9-
var syntax = require('micromark-extension-gfm')()
10-
var gfm = require('../index.js')
11-
var spec = require('./spec.json')
1+
import fs from 'fs'
2+
import path from 'path'
3+
import test from 'tape'
4+
import Slugger from 'github-slugger'
5+
import {toHast} from 'mdast-util-to-hast'
6+
import {toHtml} from 'hast-util-to-html'
7+
import fromMarkdown from 'mdast-util-from-markdown'
8+
import toMarkdown from 'mdast-util-to-markdown'
9+
import gfm from 'micromark-extension-gfm'
10+
import {gfmFromMarkdown, gfmToMarkdown} from '../index.js'
11+
12+
const spec = JSON.parse(fs.readFileSync(path.join('test', 'spec.json')))
1213

1314
test('markdown -> mdast', function (t) {
1415
const files = spec.filter(
@@ -18,19 +19,19 @@ test('markdown -> mdast', function (t) {
1819

1920
while (++index < files.length) {
2021
const example = files[index]
21-
var category = slug(example.category)
22+
var category = Slugger.slug(example.category)
2223
var name = index + '-' + category
23-
var fixtureHtmlPath = path.join(__dirname, name + '.html')
24-
var fixtureMarkdownPath = path.join(__dirname, name + '.md')
24+
var fixtureHtmlPath = path.join('test', name + '.html')
25+
var fixtureMarkdownPath = path.join('test', name + '.md')
2526
var fixtureHtml
2627
var fixtureMarkdown
2728
var mdast
2829
var html
2930
var md
3031

3132
mdast = fromMarkdown(example.input, {
32-
extensions: [syntax],
33-
mdastExtensions: [gfm.fromMarkdown]
33+
extensions: [gfm()],
34+
mdastExtensions: [gfmFromMarkdown]
3435
})
3536

3637
html = toHtml(toHast(mdast, {allowDangerousHtml: true, commonmark: true}), {
@@ -45,7 +46,7 @@ test('markdown -> mdast', function (t) {
4546
fixtureHtml = example.output.slice(0, -1)
4647
}
4748

48-
md = toMarkdown(mdast, {extensions: [gfm.toMarkdown()]})
49+
md = toMarkdown(mdast, {extensions: [gfmToMarkdown()]})
4950

5051
try {
5152
fixtureMarkdown = String(fs.readFileSync(fixtureMarkdownPath))

to-markdown.js

-22
This file was deleted.

0 commit comments

Comments
 (0)