Skip to content

Commit ac53c5b

Browse files
committed
Use ESM
1 parent ad9f541 commit ac53c5b

File tree

6 files changed

+32
-49
lines changed

6 files changed

+32
-49
lines changed

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
.DS_Store
22
*.log
3-
.nyc_output/
43
coverage/
54
node_modules/
6-
hast-util-interactive.js
7-
hast-util-interactive.min.js
85
yarn.lock

.prettierignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,2 @@
11
coverage/
2-
hast-util-interactive.js
3-
hast-util-interactive.min.js
4-
*.json
52
*.md

index.js

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
1-
'use strict'
2-
3-
var has = require('hast-util-has-property')
4-
5-
module.exports = interactive
1+
import {hasProperty} from 'hast-util-has-property'
62

73
// Always interactive nodes.
8-
var alwaysInteractive = [
4+
var alwaysInteractive = new Set([
95
'button',
106
'details',
117
'embed',
@@ -14,9 +10,9 @@ var alwaysInteractive = [
1410
'label',
1511
'select',
1612
'textarea'
17-
]
13+
])
1814

19-
function interactive(node) {
15+
export function interactive(node) {
2016
var name
2117

2218
if (!node || typeof node !== 'object' || node.type !== 'element') {
@@ -26,13 +22,13 @@ function interactive(node) {
2622
name = node.tagName
2723

2824
return (
29-
(name === 'a' && has(node, 'href')) ||
30-
(name === 'audio' && has(node, 'controls')) ||
31-
(name === 'video' && has(node, 'controls')) ||
32-
(name === 'object' && has(node, 'useMap')) ||
33-
(name === 'img' && has(node, 'useMap')) ||
25+
(name === 'a' && hasProperty(node, 'href')) ||
26+
(name === 'audio' && hasProperty(node, 'controls')) ||
27+
(name === 'video' && hasProperty(node, 'controls')) ||
28+
(name === 'object' && hasProperty(node, 'useMap')) ||
29+
(name === 'img' && hasProperty(node, 'useMap')) ||
3430
(name === 'input' && (node.properties || {}).type !== 'hidden') ||
35-
has(node, 'tabIndex') ||
36-
alwaysInteractive.indexOf(name) !== -1
31+
hasProperty(node, 'tabIndex') ||
32+
alwaysInteractive.has(name)
3733
)
3834
}

package.json

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -24,30 +24,28 @@
2424
"contributors": [
2525
"Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
2626
],
27+
"sideEffects": false,
28+
"type": "module",
29+
"main": "index.js",
2730
"files": [
2831
"index.js"
2932
],
3033
"dependencies": {
31-
"hast-util-has-property": "^1.0.0"
34+
"hast-util-has-property": "^2.0.0"
3235
},
3336
"devDependencies": {
34-
"browserify": "^17.0.0",
35-
"nyc": "^15.0.0",
37+
"c8": "^7.0.0",
3638
"prettier": "^2.0.0",
3739
"remark-cli": "^9.0.0",
3840
"remark-preset-wooorm": "^8.0.0",
3941
"tape": "^5.0.0",
40-
"tinyify": "^3.0.0",
41-
"xo": "^0.35.0"
42+
"xo": "^0.39.0"
4243
},
4344
"scripts": {
4445
"format": "remark . -qfo && prettier . --write --loglevel warn && xo --fix",
45-
"build-bundle": "browserify . -s hastUtilInteractive -o hast-util-interactive.js",
46-
"build-mangle": "browserify . -s hastUtilInteractive -o hast-util-interactive.min.js -p tinyify",
47-
"build": "npm run build-bundle && npm run build-mangle",
48-
"test-api": "node test",
49-
"test-coverage": "nyc --reporter lcov tape test.js",
50-
"test": "npm run format && npm run build && npm run test-coverage"
46+
"test-api": "node test.js",
47+
"test-coverage": "c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov node test.js",
48+
"test": "npm run format && npm run test-coverage"
5149
},
5250
"prettier": {
5351
"tabWidth": 2,
@@ -59,19 +57,10 @@
5957
},
6058
"xo": {
6159
"prettier": true,
62-
"esnext": false,
6360
"rules": {
64-
"unicorn/prefer-includes": "off"
65-
},
66-
"ignores": [
67-
"hast-util-interactive.js"
68-
]
69-
},
70-
"nyc": {
71-
"check-coverage": true,
72-
"lines": 100,
73-
"functions": 100,
74-
"branches": 100
61+
"no-var": "off",
62+
"prefer-arrow-callback": "off"
63+
}
7564
},
7665
"remarkConfig": {
7766
"plugins": [

readme.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212

1313
## Install
1414

15+
This package is [ESM only](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c):
16+
Node 12+ is needed to use it and it must be `import`ed instead of `require`d.
17+
1518
[npm][]:
1619

1720
```sh
@@ -21,7 +24,7 @@ npm install hast-util-interactive
2124
## Use
2225

2326
```js
24-
var interactive = require('hast-util-interactive')
27+
import {interactive} from 'hast-util-interactive'
2528

2629
interactive({
2730
type: 'element',
@@ -47,6 +50,9 @@ interactive({
4750

4851
## API
4952

53+
This package exports the following identifiers: `interactive`.
54+
There is no default export.
55+
5056
### `interactive(node)`
5157

5258
###### Parameters

test.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
'use strict'
2-
3-
var test = require('tape')
4-
var interactive = require('.')
1+
import test from 'tape'
2+
import {interactive} from './index.js'
53

64
test('interactive', function (t) {
75
t.equal(interactive(), false, 'should return `false` without node')

0 commit comments

Comments
 (0)