Skip to content

Commit 81931d4

Browse files
committed
feat(esm): export pure ESM, no more CommonJS support
BREAKING CHANGE: Requires ESM and Node >= 12.20
1 parent bff8ab8 commit 81931d4

File tree

8 files changed

+42
-17
lines changed

8 files changed

+42
-17
lines changed

.github/workflows/branches.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
node-version:
1919
- 12.x
2020
- 14.x
21-
- 15.x
21+
- 16.x
2222
steps:
2323
- uses: actions/checkout@v2
2424
- name: Use Node.js ${{ matrix.node-version }}

.github/workflows/master.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
node-version:
1818
- 12.x
1919
- 14.x
20-
- 15.x
20+
- 16.x
2121
steps:
2222
- uses: actions/checkout@v2
2323
- name: Use Node.js ${{ matrix.node-version }}

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
node_modules
22
dist
33
coverage
4-
yarn.lock
4+
yarn*

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
Construct a `RotatedArraySet`, optionally provide a *stringify* method, converting `T` to `string` (this is not necessary for primitive types).
1717

1818

19+
## Versions
20+
21+
* Since v2 this is a [pure ESM][pure-esm] package, and requires Node.js >=12.20. It cannot be used from CommonJS.
22+
23+
1924
## Example
2025

2126
```ts
@@ -62,3 +67,4 @@ tree.values( ); // [ [ user1, user2, user3 ] ]
6267
[lgtm-url]: https://lgtm.com/projects/g/grantila/rotated-array-set/context:javascript
6368
[node-version]: https://img.shields.io/node/v/rotated-array-set
6469
[node-url]: https://nodejs.org/en/
70+
[pure-esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

babel.config.cjs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module.exports = {
2+
presets: [
3+
[
4+
'@babel/preset-env',
5+
{
6+
targets: {
7+
node: 'current',
8+
},
9+
},
10+
],
11+
'@babel/preset-typescript',
12+
],
13+
}

jest.config.js

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

package.json

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,19 @@
99
},
1010
"homepage": "https://github.com/grantila/rotated-array-set#readme",
1111
"main": "./dist/index.js",
12+
"exports": "./dist/index.js",
1213
"types": "./dist/index.d.ts",
13-
"directories": {},
14+
"type": "module",
15+
"sideEffects": false,
1416
"engines": {
15-
"node": ">=12"
17+
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1618
},
1719
"files": [
1820
"dist"
1921
],
2022
"scripts": {
2123
"build": "rimraf dist && tsc -p tsconfig.prod.json",
22-
"test": "jest --coverage",
24+
"test": "NODE_OPTIONS=--experimental-vm-modules jest --coverage",
2325
"cz": "git-cz"
2426
},
2527
"repository": {
@@ -33,17 +35,26 @@
3335
"arrays"
3436
],
3537
"devDependencies": {
36-
"@types/jest": "^26.0.20",
37-
"@types/node": "^14.14.31",
38+
"@babel/preset-env": "^7.15.6",
39+
"@babel/preset-typescript": "^7.15.0",
40+
"@types/jest": "^27.0.1",
41+
"@types/node": "^16.9.1",
3842
"cz-conventional-changelog": "^3.1.0",
39-
"jest": "^26.6.3",
43+
"jest": "^27.1.1",
4044
"rimraf": "^3.0.1",
41-
"ts-jest": "^26.5.2",
42-
"typescript": "^4.2.2"
45+
"typescript": "^4.4.3"
4346
},
4447
"config": {
4548
"commitizen": {
4649
"path": "./node_modules/cz-conventional-changelog"
4750
}
51+
},
52+
"jest": {
53+
"testEnvironment": "node",
54+
"coverageReporters": [
55+
"lcov",
56+
"text",
57+
"html"
58+
]
4859
}
4960
}

tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
],
1111
"noEmit": true,
1212
"target": "ES2019",
13-
"module": "CommonJS",
13+
"module": "ES2020",
1414
"moduleResolution": "node",
1515
"noImplicitAny": true,
1616
"noUnusedLocals": true,

0 commit comments

Comments
 (0)