Skip to content

Commit 5b26e60

Browse files
committed
feat!: bump engines to Node.js 22
BREAKING CHANGE: bumps minimum Node.js version to 22
1 parent 117e620 commit 5b26e60

File tree

8 files changed

+169
-722
lines changed

8 files changed

+169
-722
lines changed

.github/workflows/release.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
- name: Setup Node.js
2525
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
2626
with:
27-
node-version: 20.x
27+
node-version-file: '.nvmrc'
2828
cache: 'yarn'
2929
- name: Install
3030
run: yarn install --frozen-lockfile

.github/workflows/test.yml

+1-7
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,11 @@ jobs:
1717
strategy:
1818
matrix:
1919
node-version:
20-
- '20.10'
21-
- '18.18'
22-
- '16.20'
23-
- '14.21'
20+
- 22.12.x
2421
os:
2522
- macos-latest
2623
- ubuntu-latest
2724
- windows-latest
28-
exclude:
29-
- os: macos-latest
30-
node-version: '14.21'
3125
runs-on: "${{ matrix.os }}"
3226
steps:
3327
- name: Checkout

.github/workflows/update-abi.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
token: ${{ steps.generate-token.outputs.token }}
2020
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
2121
with:
22-
node-version: '20.x'
22+
node-version-file: '.nvmrc'
2323
- name: Get npm cache directory
2424
id: npm-cache
2525
run: |

.nvmrc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
22.12

index.js

+23-23
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
var semver = require('semver')
1+
const semver = require('semver')
22

33
function getNextTarget (runtime, targets) {
44
if (targets == null) targets = allTargets
5-
var latest = targets.filter(function (t) { return t.runtime === runtime }).slice(-1)[0]
6-
var increment = runtime === 'electron' ? 'minor' : 'major'
7-
var next = semver.inc(latest.target, increment)
5+
const latest = targets.filter(function (t) { return t.runtime === runtime }).slice(-1)[0]
6+
const increment = runtime === 'electron' ? 'minor' : 'major'
7+
let next = semver.inc(latest.target, increment)
88
// Electron releases appear in the registry in their beta form, sometimes there is
99
// no active beta line. During this time we need to double bump
1010
if (runtime === 'electron' && semver.parse(latest.target).prerelease.length) {
@@ -23,11 +23,11 @@ function getAbi (target, runtime) {
2323
if (target === process.versions.node) return process.versions.modules
2424
}
2525

26-
var abi
27-
var lastTarget
26+
let abi
27+
let lastTarget
2828

29-
for (var i = 0; i < allTargets.length; i++) {
30-
var t = allTargets[i]
29+
for (let i = 0; i < allTargets.length; i++) {
30+
const t = allTargets[i]
3131
if (t.runtime !== runtime) continue
3232
if (semver.lte(t.target, target) && (!lastTarget || semver.gte(t.target, lastTarget))) {
3333
abi = t.abi
@@ -45,15 +45,15 @@ function getTarget (abi, runtime) {
4545

4646
if (runtime === 'node' && !abi) return process.versions.node
4747

48-
var match = allTargets
48+
const match = allTargets
4949
.filter(function (t) {
5050
return t.abi === abi && t.runtime === runtime
5151
})
5252
.map(function (t) {
5353
return t.target
5454
})
5555
if (match.length) {
56-
var betaSeparatorIndex = match[0].indexOf("-")
56+
const betaSeparatorIndex = match[0].indexOf("-")
5757
return betaSeparatorIndex > -1
5858
? match[0].substring(0, betaSeparatorIndex)
5959
: match[0]
@@ -63,31 +63,31 @@ function getTarget (abi, runtime) {
6363
}
6464

6565
function sortByTargetFn (a, b) {
66-
var abiComp = Number(a.abi) - Number(b.abi)
66+
const abiComp = Number(a.abi) - Number(b.abi)
6767
if (abiComp !== 0) return abiComp
6868
if (a.target < b.target) return -1
6969
if (a.target > b.target) return 1
7070
return 0
7171
}
7272

7373
function loadGeneratedTargets () {
74-
var registry = require('./abi_registry.json')
75-
var targets = {
74+
const registry = require('./abi_registry.json')
75+
const targets = {
7676
supported: [],
7777
additional: [],
7878
future: []
7979
}
8080

8181
registry.forEach(function (item) {
82-
var target = {
82+
const target = {
8383
runtime: item.runtime,
8484
target: item.target,
8585
abi: item.abi
8686
}
8787
if (item.lts) {
88-
var startDate = new Date(Date.parse(item.lts[0]))
89-
var endDate = new Date(Date.parse(item.lts[1]))
90-
var currentDate = new Date()
88+
const startDate = new Date(Date.parse(item.lts[0]))
89+
const endDate = new Date(Date.parse(item.lts[1]))
90+
const currentDate = new Date()
9191
target.lts = startDate < currentDate && currentDate < endDate
9292
} else {
9393
target.lts = false
@@ -109,9 +109,9 @@ function loadGeneratedTargets () {
109109
return targets
110110
}
111111

112-
var generatedTargets = loadGeneratedTargets()
112+
const generatedTargets = loadGeneratedTargets()
113113

114-
var supportedTargets = [
114+
const supportedTargets = [
115115
{runtime: 'node', target: '5.0.0', abi: '47', lts: false},
116116
{runtime: 'node', target: '6.0.0', abi: '48', lts: false},
117117
{runtime: 'node', target: '7.0.0', abi: '51', lts: false},
@@ -134,7 +134,7 @@ var supportedTargets = [
134134

135135
supportedTargets.push.apply(supportedTargets, generatedTargets.supported)
136136

137-
var additionalTargets = [
137+
const additionalTargets = [
138138
{runtime: 'node-webkit', target: '0.13.0', abi: '47', lts: false},
139139
{runtime: 'node-webkit', target: '0.15.0', abi: '48', lts: false},
140140
{runtime: 'node-webkit', target: '0.18.3', abi: '51', lts: false},
@@ -144,7 +144,7 @@ var additionalTargets = [
144144

145145
additionalTargets.push.apply(additionalTargets, generatedTargets.additional)
146146

147-
var deprecatedTargets = [
147+
const deprecatedTargets = [
148148
{runtime: 'node', target: '0.2.0', abi: '1', lts: false},
149149
{runtime: 'node', target: '0.9.1', abi: '0x000A', lts: false},
150150
{runtime: 'node', target: '0.9.9', abi: '0x000B', lts: false},
@@ -162,9 +162,9 @@ var deprecatedTargets = [
162162
{runtime: 'electron', target: '0.33.0', abi: '46', lts: false}
163163
]
164164

165-
var futureTargets = generatedTargets.future
165+
const futureTargets = generatedTargets.future
166166

167-
var allTargets = deprecatedTargets
167+
const allTargets = deprecatedTargets
168168
.concat(supportedTargets)
169169
.concat(additionalTargets)
170170
.concat(futureTargets)

package.json

+6-7
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
"name": "node-abi",
33
"version": "0.0.0-development",
44
"description": "Get the Node ABI for a given target and runtime, and vice versa.",
5-
"main": "index.js",
5+
"type": "module",
6+
"exports": "./index.js",
67
"scripts": {
7-
"test": "tape test/index.js",
8+
"test": "node --test test/index.js",
89
"update-abi-registry": "node --unhandled-rejections=strict scripts/update-abi-registry.js"
910
},
1011
"files": [
@@ -27,14 +28,12 @@
2728
"url": "https://github.com/electron/node-abi/issues"
2829
},
2930
"homepage": "https://github.com/electron/node-abi#readme",
30-
"devDependencies": {
31-
"tape": "^5.3.1"
32-
},
31+
"devDependencies": {},
3332
"dependencies": {
34-
"semver": "^7.3.5"
33+
"semver": "^7.6.3"
3534
},
3635
"engines": {
37-
"node": ">=10"
36+
"node": ">=22.12.0"
3837
},
3938
"publishConfig": {
4039
"provenance": true

0 commit comments

Comments
 (0)