Skip to content

Commit 2237e9f

Browse files
chadlwilsonzabil
andauthored
Migrate to use of ES Modules (#667)
- Moves minimum node version to v18 (latest LTS at time of PR) - Changes gauge-js to an ES module, removing all use of CommonJS requires - Prefers use of node: prefixed imports - Upgrades and de-duplicates dependencies to latest ---- Signed-off-by: Chad Wilson <chadw@thoughtworks.com> Signed-off-by: Zabil Cheriya Maliackal <zabilcm@gmail.com> Co-authored-by: Zabil Cheriya Maliackal <zabilcm@gmail.com>
1 parent a315148 commit 2237e9f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+979
-730
lines changed

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,7 @@ The plugin is authored in [Javascript](https://en.wikipedia.org/wiki/JavaScript)
6767
Gauge is authored in golang. These are independent processes talking to each other over TCP on port GAUGE_INTERNAL_PORT (env variable) using [Protobuf](https://github.com/getgauge/gauge-proto).
6868

6969
##### Pre-Requisites
70-
* [Node.js](https://nodejs.org/en/) - Version >= 16
71-
* [Npm](https://www.npmjs.com/get-npm)
70+
* [Node.js](https://nodejs.org/en/) - Version >= 18
7271

7372
##### Compiling
7473
```
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default [
66
mocha
77
},
88
languageOptions: {
9-
ecmaVersion: 8,
9+
ecmaVersion: 11,
1010
globals: {
1111
node: true,
1212
es6: true,

examples/tests/step_implementation.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
/**
66
* Loads the `assert` module provided by NodeJS
77
*/
8-
var assert = require("assert");
9-
8+
import assert from "node:assert";
109

1110
/**
1211
* Loads the local `vowels.js` module present in this directory
1312
*/
14-
var vowels = require("./vowels");
13+
import vowels from "./vowels.js";
1514

1615

1716
// --------------------------

examples/tests/vowels.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
/**
2-
* Use `module.exports` to export an object which can be used with a `require()` on this file.
3-
*/
1+
const vowelList = ["a", "e", "i", "o", "u"];
42

5-
var vowelList = ["a", "e", "i", "o", "u"];
6-
7-
var numVowels = function (word) {
8-
var vowelArr = word.split("").filter(function (elem) { return vowelList.indexOf(elem) > -1; });
3+
const numVowels = function (word) {
4+
const vowelArr = word.split("").filter(function (elem) {
5+
return vowelList.indexOf(elem) > -1;
6+
});
97
return vowelArr.length;
108
};
119

12-
module.exports = {
10+
export default {
1311
vowelList: vowelList,
1412
numVowels: numVowels
1513
};

index.js

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,75 @@
11
#! /usr/bin/env node
22

3-
var version = process.versions.node.split(".");
4-
if (parseInt(version[0]) < 16) {
5-
throw new Error("gauge-js requires Node.js version 16+. Current version: " + process.versions.node);
3+
const minNodeVersion = 18;
4+
const version = process.versions.node.split(".");
5+
if (Number.parseInt(version[0]) < minNodeVersion) {
6+
throw new Error(
7+
`gauge-js requires Node.js version ${minNodeVersion}+. Current version: ${process.versions.node}`,
8+
);
69
}
710

8-
var fs = require("fs"),
9-
path = require("path"),
10-
child_process = require("child_process");
11+
import child_process from "node:child_process";
12+
import fs from "node:fs";
13+
import path from "node:path";
14+
import { fileURLToPath } from "node:url";
15+
const __filename = fileURLToPath(import.meta.url);
16+
const __dirname = path.dirname(__filename);
1117

12-
var skeldir = path.join(__dirname, "skel"),
13-
srcdir = path.join(process.env.GAUGE_PROJECT_ROOT, "tests"),
14-
envdir = path.join(process.env.GAUGE_PROJECT_ROOT, "env", "default"),
15-
testCode = "step_implementation.js",
16-
jsPropertyFile = "js.properties";
1718

18-
if (process.argv[2] === "--init") {
19+
const skeldir = path.join(__dirname, "skel");
20+
const srcdir = path.join(process.env.GAUGE_PROJECT_ROOT, "tests");
21+
const envdir = path.join(process.env.GAUGE_PROJECT_ROOT, "env", "default");
22+
const testCode = "step_implementation.js";
23+
const jsPropertyFile = "js.properties";
1924

25+
if (process.argv[2] === "--init") {
2026
console.log("Initialising Gauge JavaScript project");
21-
fs.mkdir(srcdir, 484, function (err) {
27+
fs.mkdir(srcdir, 484, (err) => {
2228
if (err && err.code !== "EEXIST") {
2329
console.error(err);
2430
} else {
25-
fs.createReadStream(path.join(skeldir, testCode))
26-
.pipe(fs.createWriteStream(path.join(srcdir, testCode)));
31+
fs.createReadStream(path.join(skeldir, testCode)).pipe(
32+
fs.createWriteStream(path.join(srcdir, testCode)),
33+
);
2734
}
2835
});
2936

30-
fs.mkdir(path.dirname(envdir), 484, function (err) {
37+
fs.mkdir(path.dirname(envdir), 484, (err) => {
3138
if (err && err.code !== "EEXIST") {
3239
console.error(err);
3340
} else {
34-
fs.mkdir(envdir, 484, function (err) {
41+
fs.mkdir(envdir, 484, (err) => {
3542
if (err && err.code !== "EEXIST") {
3643
console.error(err);
3744
} else {
38-
fs.createReadStream(path.join(skeldir, jsPropertyFile))
39-
.pipe(fs.createWriteStream(path.join(envdir, jsPropertyFile)));
45+
fs.createReadStream(path.join(skeldir, jsPropertyFile)).pipe(
46+
fs.createWriteStream(path.join(envdir, jsPropertyFile)),
47+
);
4048
}
4149
});
4250
}
4351
});
44-
}
45-
46-
else if (process.argv[2] === "--start") {
47-
var args = ["./src/gauge.js", "--run"];
52+
} else if (process.argv[2] === "--start") {
53+
let args = ["./src/gauge.js", "--run"];
4854
if (process.env.gauge_nodejs_args) {
4955
args = process.env.gauge_nodejs_args.split(" ").concat(args);
5056
}
51-
var cmd = process.env.gauge_nodejs_bin || "node";
52-
var runner = child_process.spawn(cmd, args, { env: process.env, silent: false, stdio: "inherit" });
57+
const cmd = process.env.gauge_nodejs_bin || "node";
58+
const runner = child_process.spawn(cmd, args, {
59+
env: process.env,
60+
silent: false,
61+
stdio: "inherit",
62+
});
5363
process.on("beforeExit", (code) => {
5464
try {
55-
if (!runner.killed) { runner.kill("SIGINT"); }
65+
if (!runner.killed) {
66+
runner.kill("SIGINT");
67+
}
5668
} finally {
5769
process.exit(code);
5870
}
5971
});
60-
runner.on("error", function (err) {
72+
runner.on("error", (err) => {
6173
console.trace(err.stack);
6274
});
6375
}

js.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"--init"
5252
]
5353
},
54-
"version": "4.0.1",
54+
"version": "5.0.0",
5555
"gaugeVersionSupport": {
5656
"minimum": "1.0.7",
5757
"maximum": ""

0 commit comments

Comments
 (0)