Skip to content

Commit 2c41fb4

Browse files
committed
Support Node.js >= 12.
- Update changelog and add special note. - Update workflow. - Add browserify testing to workflow. - Update dependencies. - Remove unneeded dependencies. - Update dependencies that required newer Node.js versions. - Remove node6 code generation. - Remove other earlier Node.js version hacks.
1 parent 5e44c20 commit 2c41fb4

File tree

7 files changed

+66
-61
lines changed

7 files changed

+66
-61
lines changed

.github/workflows/main.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
timeout-minutes: 10
99
strategy:
1010
matrix:
11-
node-version: [10.x, 12.x, 14.x]
11+
node-version: [12.x, 14.x]
1212
steps:
1313
- uses: actions/checkout@v2
1414
- name: Use Node.js ${{ matrix.node-version }}
@@ -27,6 +27,7 @@ jobs:
2727
strategy:
2828
matrix:
2929
node-version: [14.x]
30+
bundler: [webpack, browserify]
3031
steps:
3132
- uses: actions/checkout@v2
3233
- name: Use Node.js ${{ matrix.node-version }}
@@ -39,6 +40,8 @@ jobs:
3940
run: npm run fetch-test-suites
4041
- name: Run karma tests
4142
run: npm run test-karma
43+
env:
44+
BUNDLER: ${{ matrix.bundler }}
4245
lint:
4346
runs-on: ubuntu-latest
4447
timeout-minutes: 10

CHANGELOG.md

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,33 @@
22

33
## 5.0.0 - TBD
44

5+
### Notes
6+
- Support is dropped for Node.js versions earlier than v12. This reduces the
7+
maintenance burden of being limited by older APIs, development tools, and
8+
dependencies. If you need to use an earlier Node.js then either use a
9+
previous jsonld.js version or use translation tools and polyfills as needed.
10+
(The built-in process to make browser bundles may work for this.) Bug fixes
11+
and updates may be back-ported to previous versions from time to time or on
12+
request (preferably with a patch).
13+
514
### Changed
6-
- Node documentLoader now uses `@digitalbazaar/http-client` instead of
15+
- Node.js documentLoader now uses `@digitalbazaar/http-client` instead of
716
`request`.
8-
- **BREAKING** Supported node version is now node >= 10.
17+
- **BREAKING** Only support Node.js >= 12. Remove related unneeded polyfills,
18+
tests, and `node6` output. Update dependencies that needed newer Node.js
19+
versions.
920
- Use Babel `usage` mode rather than listing individual polyfills. May increase
10-
bundle size but is more automated and likely more accurately supporting
11-
intended output targets.
21+
bundle size due to more accurate support of intended output targets.
1222

1323
### Added
1424
- Distribute a `jsonld.esm.min.js` bundle optimized for the features available
1525
in browsers that support ES Modules.
1626

1727
### Removed
18-
- Use of deprecated library `request` in node documentLoader.
19-
- **BREAKING** Parameter `request` has been removed from the node
28+
- Use of deprecated library `request` in Node.js documentLoader.
29+
- **BREAKING** Parameter `request` has been removed from the Node.js
2030
documentLoader.
21-
- Node documentLoader should no longer be included in browser build.
31+
- Node.js documentLoader should no longer be included in browser build.
2232

2333
## 4.0.1 - 2021-02-11
2434

karma.conf.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,25 @@ module.exports = function(config) {
131131
},
132132

133133
browserify: {
134-
debug: true
135-
//transform: ['uglifyify']
134+
debug: false,
135+
transform: [
136+
//'uglifyify',
137+
[
138+
'envify', {
139+
BAIL: process.env.BAIL,
140+
EARL: process.env.EARL,
141+
JSONLD_BENCHMARK: process.env.JSONLD_BENCHMARK,
142+
JSONLD_TESTS: process.env.JSONLD_TESTS,
143+
TEST_ROOT_DIR: __dirname,
144+
VERBOSE_SKIP: process.env.VERBOSE_SKIP
145+
}
146+
]
147+
],
148+
plugin: [
149+
[
150+
require('esmify')
151+
]
152+
]
136153
},
137154

138155
// test results reporter to use

lib/index.js

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,6 @@
33
*
44
* @author Dave Longley
55
*
6-
* Copyright 2010-2017 Digital Bazaar, Inc.
6+
* Copyright 2010-2021 Digital Bazaar, Inc.
77
*/
8-
// FIXME: remove after change to core-js 3 and dropping node6 support
9-
const fromEntries = require('object.fromentries');
10-
if(!Object.fromEntries) {
11-
fromEntries.shim();
12-
}
13-
14-
if(require('semver').gte(process.version, '8.6.0')) {
15-
module.exports = require('./jsonld');
16-
} else {
17-
require('core-js/fn/object/entries');
18-
module.exports = require('../dist/node6/lib/jsonld');
19-
}
8+
module.exports = require('./jsonld');

package.json

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,16 @@
2525
"files": [
2626
"dist/*.js",
2727
"dist/*.js.map",
28-
"dist/node6/**/*.js",
2928
"lib/*.js",
3029
"lib/**/*.js"
3130
],
3231
"dependencies": {
3332
"@digitalbazaar/http-client": "^1.0.0",
3433
"canonicalize": "^1.0.1",
35-
"lru-cache": "^5.1.1",
36-
"object.fromentries": "^2.0.4",
37-
"rdf-canonize": "^2.0.1",
38-
"semver": "^6.3.0"
34+
"lru-cache": "^6.0.0",
35+
"rdf-canonize": "^2.0.1"
3936
},
4037
"devDependencies": {
41-
"@babel/cli": "^7.13.10",
4238
"@babel/core": "^7.13.10",
4339
"@babel/plugin-proposal-object-rest-spread": "^7.13.8",
4440
"@babel/plugin-transform-modules-commonjs": "^7.13.8",
@@ -48,39 +44,42 @@
4844
"@babel/runtime": "^7.13.10",
4945
"babel-loader": "^8.0.5",
5046
"benchmark": "^2.1.4",
51-
"browserify": "^16.2.3",
47+
"browserify": "^17.0.0",
5248
"chai": "^4.3.3",
5349
"core-js": "^3.9.1",
5450
"cors": "^2.7.1",
55-
"cross-env": "^5.2.0",
56-
"eslint": "^6.8.0",
57-
"eslint-config-digitalbazaar": "2.5.x",
51+
"cross-env": "^7.0.3",
52+
"envify": "^4.1.0",
53+
"eslint": "^7.21.0",
54+
"eslint-config-digitalbazaar": "^2.6.1",
55+
"esmify": "^2.1.1",
5856
"express": "^4.16.4",
59-
"fs-extra": "^8.1.0",
57+
"fs-extra": "^9.1.0",
6058
"join-path-js": "0.0.0",
61-
"karma": "^4.4.1",
59+
"karma": "^5.2.3",
6260
"karma-babel-preprocessor": "^8.0.0",
63-
"karma-browserify": "^6.0.0",
64-
"karma-chrome-launcher": "^2.2.0",
61+
"karma-browserify": "^8.0.0",
62+
"karma-chrome-launcher": "^3.1.0",
6563
"karma-edge-launcher": "^0.4.2",
66-
"karma-firefox-launcher": "^1.1.0",
64+
"karma-firefox-launcher": "^2.1.0",
6765
"karma-ie-launcher": "^1.0.0",
68-
"karma-mocha": "^1.3.0",
66+
"karma-mocha": "^2.0.1",
6967
"karma-mocha-reporter": "^2.2.5",
7068
"karma-safari-launcher": "^1.0.0",
7169
"karma-server-side": "^1.7.0",
7270
"karma-sourcemap-loader": "^0.3.7",
7371
"karma-tap-reporter": "0.0.6",
7472
"karma-webpack": "^4.0.2",
75-
"mocha": "^6.2.2",
73+
"mocha": "^8.3.1",
7674
"mocha-lcov-reporter": "^1.3.0",
77-
"nyc": "^14.1.1",
75+
"nyc": "^15.1.0",
76+
"watchify": "^3.11.1",
7877
"webpack": "^4.29.5",
79-
"webpack-cli": "^3.2.3",
80-
"webpack-merge": "^4.2.1"
78+
"webpack-cli": "^4.5.0",
79+
"webpack-merge": "^5.7.3"
8180
},
8281
"engines": {
83-
"node": ">=10"
82+
"node": ">=12"
8483
},
8584
"keywords": [
8685
"JSON",
@@ -92,9 +91,8 @@
9291
],
9392
"scripts": {
9493
"prepublish": "npm run build",
95-
"build": "npm run build-webpack && npm run build-node6",
94+
"build": "npm run build-webpack",
9695
"build-webpack": "webpack",
97-
"build-node6": "BROWSERSLIST='node 6' babel --no-babelrc lib --out-dir dist/node6/lib --presets=@babel/preset-env",
9896
"fetch-test-suites": "npm run fetch-json-ld-wg-test-suite && npm run fetch-json-ld-org-test-suite && npm run fetch-normalization-test-suite",
9997
"fetch-json-ld-wg-test-suite": "npm run fetch-json-ld-api-test-suite && npm run fetch-json-ld-framing-test-suite",
10098
"fetch-json-ld-api-test-suite": "if [ ! -e test-suites/json-wg-api ]; then git clone --depth 1 https://github.com/w3c/json-ld-api.git test-suites/json-ld-api; fi",

tests/test.js

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,6 @@
2222
*
2323
* Copyright (c) 2011-2019 Digital Bazaar, Inc. All rights reserved.
2424
*/
25-
26-
// support async/await tests in node6
27-
if(!require('semver').gte(process.version, '8.6.0')) {
28-
require('@babel/register')({
29-
presets: [
30-
[
31-
'@babel/preset-env', {
32-
targets: 'node 6'
33-
}
34-
]
35-
]
36-
});
37-
}
38-
3925
const assert = require('chai').assert;
4026
const common = require('./test-common');
4127
const fs = require('fs-extra');

webpack.config.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
* Copyright 2010-2017 Digital Bazaar, Inc.
77
*/
88
const path = require('path');
9-
const webpackMerge = require('webpack-merge');
9+
const {
10+
merge: webpackMerge
11+
} = require('webpack-merge');
1012

1113
// build multiple outputs
1214
module.exports = [];

0 commit comments

Comments
 (0)