aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/node-abi
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--node_modules/node-abi/LICENSE21
-rw-r--r--node_modules/node-abi/README.md54
-rw-r--r--node_modules/node-abi/abi_registry.json453
-rw-r--r--node_modules/node-abi/index.js179
-rw-r--r--node_modules/node-abi/package.json45
5 files changed, 752 insertions, 0 deletions
diff --git a/node_modules/node-abi/LICENSE b/node_modules/node-abi/LICENSE
new file mode 100644
index 0000000..5513de0
--- /dev/null
+++ b/node_modules/node-abi/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2016 Lukas Geiger
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/node-abi/README.md b/node_modules/node-abi/README.md
new file mode 100644
index 0000000..680a0d0
--- /dev/null
+++ b/node_modules/node-abi/README.md
@@ -0,0 +1,54 @@
+# Node.js ABI
+
+[![Build Status](https://github.com/electron/node-abi/actions/workflows/test.yml/badge.svg)](https://github.com/electron/node-abi/actions/workflows/test.yml)
+[![Auto-update ABI JSON file](https://github.com/electron/node-abi/actions/workflows/update-abi.yml/badge.svg)](https://github.com/electron/node-abi/actions/workflows/update-abi.yml)
+[![Snyk badge](https://snyk.io/test/github/electron/node-abi/badge.svg)](https://snyk.io/test/github/electron/node-abi)
+[![npm version](http://img.shields.io/npm/v/node-abi.svg)](https://npmjs.org/package/node-abi)
+
+Get the Node ABI (application binary interface) for a given target and runtime, and vice versa.
+
+## Installation
+
+```shell
+npm install node-abi
+```
+
+## Usage
+
+```javascript
+const nodeAbi = require('node-abi')
+
+nodeAbi.getAbi('7.2.0', 'node')
+// '51'
+nodeAbi.getAbi('1.4.10', 'electron')
+// '50'
+nodeAbi.getTarget('51', 'node')
+// '7.2.0'
+nodeAbi.getTarget('50', 'electron')
+// '1.4.15'
+
+nodeAbi.allTargets
+// [
+// { runtime: 'node', target: '0.10.48', abi: '11', lts: false },
+// { runtime: 'node', target: '0.12.17', abi: '14', lts: false },
+// { runtime: 'node', target: '4.6.1', abi: '46', lts: true },
+// { runtime: 'node', target: '5.12.0', abi: '47', lts: false },
+// { runtime: 'node', target: '6.9.4', abi: '48', lts: true },
+// { runtime: 'node', target: '7.4.0', abi: '51', lts: false },
+// { runtime: 'electron', target: '1.0.2', abi: '47', lts: false },
+// { runtime: 'electron', target: '1.2.8', abi: '48', lts: false },
+// { runtime: 'electron', target: '1.3.13', abi: '49', lts: false },
+// { runtime: 'electron', target: '1.4.15', abi: '50', lts: false }
+// ]
+nodeAbi.deprecatedTargets
+nodeAbi.supportedTargets
+nodeAbi.additionalTargets
+nodeAbi.futureTargets
+// ...
+```
+
+## References
+
+- https://github.com/lgeiger/electron-abi
+- https://nodejs.org/en/download/releases/
+- https://github.com/nodejs/Release
diff --git a/node_modules/node-abi/abi_registry.json b/node_modules/node-abi/abi_registry.json
new file mode 100644
index 0000000..00687b4
--- /dev/null
+++ b/node_modules/node-abi/abi_registry.json
@@ -0,0 +1,453 @@
+[
+ {
+ "runtime": "node",
+ "target": "11.0.0",
+ "lts": false,
+ "future": false,
+ "abi": "67"
+ },
+ {
+ "runtime": "node",
+ "target": "12.0.0",
+ "lts": [
+ "2019-10-21",
+ "2020-11-30"
+ ],
+ "future": false,
+ "abi": "72"
+ },
+ {
+ "runtime": "node",
+ "target": "13.0.0",
+ "lts": false,
+ "future": false,
+ "abi": "79"
+ },
+ {
+ "runtime": "node",
+ "target": "14.0.0",
+ "lts": [
+ "2020-10-27",
+ "2021-10-19"
+ ],
+ "future": false,
+ "abi": "83"
+ },
+ {
+ "runtime": "node",
+ "target": "15.0.0",
+ "lts": false,
+ "future": false,
+ "abi": "88"
+ },
+ {
+ "runtime": "node",
+ "target": "16.0.0",
+ "lts": [
+ "2021-10-26",
+ "2022-10-18"
+ ],
+ "future": false,
+ "abi": "93"
+ },
+ {
+ "runtime": "node",
+ "target": "17.0.0",
+ "lts": false,
+ "future": false,
+ "abi": "102"
+ },
+ {
+ "runtime": "node",
+ "target": "18.0.0",
+ "lts": [
+ "2022-10-25",
+ "2023-10-18"
+ ],
+ "future": false,
+ "abi": "108"
+ },
+ {
+ "runtime": "node",
+ "target": "19.0.0",
+ "lts": false,
+ "future": false,
+ "abi": "111"
+ },
+ {
+ "runtime": "node",
+ "target": "20.0.0",
+ "lts": [
+ "2023-10-24",
+ "2024-10-22"
+ ],
+ "future": false,
+ "abi": "115"
+ },
+ {
+ "runtime": "node",
+ "target": "21.0.0",
+ "lts": false,
+ "future": false,
+ "abi": "120"
+ },
+ {
+ "runtime": "node",
+ "target": "22.0.0",
+ "lts": [
+ "2024-10-29",
+ "2025-10-21"
+ ],
+ "future": false,
+ "abi": "127"
+ },
+ {
+ "runtime": "node",
+ "target": "23.0.0",
+ "lts": false,
+ "future": false,
+ "abi": "131"
+ },
+ {
+ "runtime": "node",
+ "target": "24.0.0",
+ "lts": [
+ "2025-10-28",
+ "2026-10-20"
+ ],
+ "future": false,
+ "abi": "137"
+ },
+ {
+ "runtime": "node",
+ "target": "25.0.0",
+ "lts": false,
+ "future": false,
+ "abi": "141"
+ },
+ {
+ "runtime": "node",
+ "target": "26.0.0",
+ "lts": [
+ "2026-10-28",
+ "2027-10-20"
+ ],
+ "future": false,
+ "abi": "147"
+ },
+ {
+ "abi": "70",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "5.0.0-beta.9"
+ },
+ {
+ "abi": "73",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "6.0.0-beta.1"
+ },
+ {
+ "abi": "75",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "7.0.0-beta.1"
+ },
+ {
+ "abi": "76",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "9.0.0-beta.1"
+ },
+ {
+ "abi": "76",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "8.0.0-beta.1"
+ },
+ {
+ "abi": "80",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "9.0.0-beta.2"
+ },
+ {
+ "abi": "82",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "11.0.0-beta.1"
+ },
+ {
+ "abi": "82",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "10.0.0-beta.1"
+ },
+ {
+ "abi": "85",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "11.0.0-beta.11"
+ },
+ {
+ "abi": "87",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "12.0.0-beta.1"
+ },
+ {
+ "abi": "89",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "15.0.0-alpha.1"
+ },
+ {
+ "abi": "89",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "14.0.0-beta.1"
+ },
+ {
+ "abi": "89",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "13.0.0-beta.2"
+ },
+ {
+ "abi": "97",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "14.0.2"
+ },
+ {
+ "abi": "98",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "15.0.0-beta.7"
+ },
+ {
+ "abi": "99",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "16.0.0-alpha.1"
+ },
+ {
+ "abi": "101",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "17.0.0-alpha.1"
+ },
+ {
+ "abi": "103",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "18.0.0-alpha.1"
+ },
+ {
+ "abi": "106",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "19.0.0-alpha.1"
+ },
+ {
+ "abi": "107",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "20.0.0-alpha.1"
+ },
+ {
+ "abi": "109",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "21.0.0-alpha.1"
+ },
+ {
+ "abi": "110",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "22.0.0-alpha.1"
+ },
+ {
+ "abi": "113",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "23.0.0-alpha.1"
+ },
+ {
+ "abi": "114",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "24.0.0-alpha.1"
+ },
+ {
+ "abi": "116",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "26.0.0-alpha.1"
+ },
+ {
+ "abi": "116",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "25.0.0-alpha.1"
+ },
+ {
+ "abi": "118",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "27.0.0-alpha.1"
+ },
+ {
+ "abi": "119",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "28.0.0-alpha.1"
+ },
+ {
+ "abi": "121",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "29.0.0-alpha.1"
+ },
+ {
+ "abi": "123",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "31.0.0-alpha.1"
+ },
+ {
+ "abi": "123",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "30.0.0-alpha.1"
+ },
+ {
+ "abi": "125",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "31.0.0-beta.7"
+ },
+ {
+ "abi": "128",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "32.0.0-alpha.1"
+ },
+ {
+ "abi": "130",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "33.0.0-alpha.1"
+ },
+ {
+ "abi": "132",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "34.0.0-alpha.1"
+ },
+ {
+ "abi": "133",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "35.0.0-alpha.1"
+ },
+ {
+ "abi": "135",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "36.0.0-alpha.1"
+ },
+ {
+ "abi": "136",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "37.0.0-alpha.1"
+ },
+ {
+ "abi": "139",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "38.0.0-alpha.1"
+ },
+ {
+ "abi": "140",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "39.0.0-alpha.1"
+ },
+ {
+ "abi": "143",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "40.0.0-alpha.2"
+ },
+ {
+ "abi": "145",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "41.0.0-alpha.1"
+ },
+ {
+ "abi": "146",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "42.0.0-alpha.1"
+ },
+ {
+ "abi": "148",
+ "future": false,
+ "lts": false,
+ "runtime": "electron",
+ "target": "43.0.0-alpha.1"
+ },
+ {
+ "abi": "149",
+ "future": true,
+ "lts": false,
+ "runtime": "electron",
+ "target": "44.0.0-alpha.1"
+ }
+] \ No newline at end of file
diff --git a/node_modules/node-abi/index.js b/node_modules/node-abi/index.js
new file mode 100644
index 0000000..f656135
--- /dev/null
+++ b/node_modules/node-abi/index.js
@@ -0,0 +1,179 @@
+var semver = require('semver')
+
+function getNextTarget (runtime, targets) {
+ if (targets == null) targets = allTargets
+ var latest = targets.filter(function (t) { return t.runtime === runtime }).slice(-1)[0]
+ var increment = runtime === 'electron' ? 'minor' : 'major'
+ var next = semver.inc(latest.target, increment)
+ // Electron releases appear in the registry in their beta form, sometimes there is
+ // no active beta line. During this time we need to double bump
+ if (runtime === 'electron' && semver.parse(latest.target).prerelease.length) {
+ next = semver.inc(next, 'major')
+ }
+ return next
+}
+
+function getAbi (target, runtime) {
+ if (target === String(Number(target))) return target
+ if (target) target = target.replace(/^v/, '')
+ if (!runtime) runtime = 'node'
+
+ if (runtime === 'node') {
+ if (!target) return process.versions.modules
+ if (target === process.versions.node) return process.versions.modules
+ }
+
+ var abi
+ var lastTarget
+
+ for (var i = 0; i < allTargets.length; i++) {
+ var t = allTargets[i]
+ if (t.runtime !== runtime) continue
+ if (semver.lte(t.target, target) && (!lastTarget || semver.gte(t.target, lastTarget))) {
+ abi = t.abi
+ lastTarget = t.target
+ }
+ }
+
+ if (abi && semver.lt(target, getNextTarget(runtime))) return abi
+ throw new Error('Could not detect abi for version ' + target + ' and runtime ' + runtime + '. Updating "node-abi" might help solve this issue if it is a new release of ' + runtime)
+}
+
+function getTarget (abi, runtime) {
+ if (abi && abi !== String(Number(abi))) return abi
+ if (!runtime) runtime = 'node'
+
+ if (runtime === 'node' && !abi) return process.versions.node
+
+ var match = allTargets
+ .filter(function (t) {
+ return t.abi === abi && t.runtime === runtime
+ })
+ .map(function (t) {
+ return t.target
+ })
+ if (match.length) {
+ var betaSeparatorIndex = match[0].indexOf("-")
+ return betaSeparatorIndex > -1
+ ? match[0].substring(0, betaSeparatorIndex)
+ : match[0]
+ }
+
+ throw new Error('Could not detect target for abi ' + abi + ' and runtime ' + runtime)
+}
+
+function sortByTargetFn (a, b) {
+ var abiComp = Number(a.abi) - Number(b.abi)
+ if (abiComp !== 0) return abiComp
+ if (a.target < b.target) return -1
+ if (a.target > b.target) return 1
+ return 0
+}
+
+function loadGeneratedTargets () {
+ var registry = require('./abi_registry.json')
+ var targets = {
+ supported: [],
+ additional: [],
+ future: []
+ }
+
+ registry.forEach(function (item) {
+ var target = {
+ runtime: item.runtime,
+ target: item.target,
+ abi: item.abi
+ }
+ if (item.lts) {
+ var startDate = new Date(Date.parse(item.lts[0]))
+ var endDate = new Date(Date.parse(item.lts[1]))
+ var currentDate = new Date()
+ target.lts = startDate < currentDate && currentDate < endDate
+ } else {
+ target.lts = false
+ }
+
+ if (target.runtime === 'node-webkit') {
+ targets.additional.push(target)
+ } else if (item.future) {
+ targets.future.push(target)
+ } else {
+ targets.supported.push(target)
+ }
+ })
+
+ targets.supported.sort(sortByTargetFn)
+ targets.additional.sort(sortByTargetFn)
+ targets.future.sort(sortByTargetFn)
+
+ return targets
+}
+
+var generatedTargets = loadGeneratedTargets()
+
+var supportedTargets = [
+ {runtime: 'node', target: '5.0.0', abi: '47', lts: false},
+ {runtime: 'node', target: '6.0.0', abi: '48', lts: false},
+ {runtime: 'node', target: '7.0.0', abi: '51', lts: false},
+ {runtime: 'node', target: '8.0.0', abi: '57', lts: false},
+ {runtime: 'node', target: '9.0.0', abi: '59', lts: false},
+ {runtime: 'node', target: '10.0.0', abi: '64', lts: new Date(2018, 10, 1) < new Date() && new Date() < new Date(2020, 4, 31)},
+ {runtime: 'electron', target: '0.36.0', abi: '47', lts: false},
+ {runtime: 'electron', target: '1.1.0', abi: '48', lts: false},
+ {runtime: 'electron', target: '1.3.0', abi: '49', lts: false},
+ {runtime: 'electron', target: '1.4.0', abi: '50', lts: false},
+ {runtime: 'electron', target: '1.5.0', abi: '51', lts: false},
+ {runtime: 'electron', target: '1.6.0', abi: '53', lts: false},
+ {runtime: 'electron', target: '1.7.0', abi: '54', lts: false},
+ {runtime: 'electron', target: '1.8.0', abi: '57', lts: false},
+ {runtime: 'electron', target: '2.0.0', abi: '57', lts: false},
+ {runtime: 'electron', target: '3.0.0', abi: '64', lts: false},
+ {runtime: 'electron', target: '4.0.0', abi: '64', lts: false},
+ {runtime: 'electron', target: '4.0.4', abi: '69', lts: false}
+]
+
+supportedTargets.push.apply(supportedTargets, generatedTargets.supported)
+
+var additionalTargets = [
+ {runtime: 'node-webkit', target: '0.13.0', abi: '47', lts: false},
+ {runtime: 'node-webkit', target: '0.15.0', abi: '48', lts: false},
+ {runtime: 'node-webkit', target: '0.18.3', abi: '51', lts: false},
+ {runtime: 'node-webkit', target: '0.23.0', abi: '57', lts: false},
+ {runtime: 'node-webkit', target: '0.26.5', abi: '59', lts: false}
+]
+
+additionalTargets.push.apply(additionalTargets, generatedTargets.additional)
+
+var deprecatedTargets = [
+ {runtime: 'node', target: '0.2.0', abi: '1', lts: false},
+ {runtime: 'node', target: '0.9.1', abi: '0x000A', lts: false},
+ {runtime: 'node', target: '0.9.9', abi: '0x000B', lts: false},
+ {runtime: 'node', target: '0.10.4', abi: '11', lts: false},
+ {runtime: 'node', target: '0.11.0', abi: '0x000C', lts: false},
+ {runtime: 'node', target: '0.11.8', abi: '13', lts: false},
+ {runtime: 'node', target: '0.11.11', abi: '14', lts: false},
+ {runtime: 'node', target: '1.0.0', abi: '42', lts: false},
+ {runtime: 'node', target: '1.1.0', abi: '43', lts: false},
+ {runtime: 'node', target: '2.0.0', abi: '44', lts: false},
+ {runtime: 'node', target: '3.0.0', abi: '45', lts: false},
+ {runtime: 'node', target: '4.0.0', abi: '46', lts: false},
+ {runtime: 'electron', target: '0.30.0', abi: '44', lts: false},
+ {runtime: 'electron', target: '0.31.0', abi: '45', lts: false},
+ {runtime: 'electron', target: '0.33.0', abi: '46', lts: false}
+]
+
+var futureTargets = generatedTargets.future
+
+var allTargets = deprecatedTargets
+ .concat(supportedTargets)
+ .concat(additionalTargets)
+ .concat(futureTargets)
+
+exports.getAbi = getAbi
+exports.getTarget = getTarget
+exports.deprecatedTargets = deprecatedTargets
+exports.supportedTargets = supportedTargets
+exports.additionalTargets = additionalTargets
+exports.futureTargets = futureTargets
+exports.allTargets = allTargets
+exports._getNextTarget = getNextTarget
diff --git a/node_modules/node-abi/package.json b/node_modules/node-abi/package.json
new file mode 100644
index 0000000..db15590
--- /dev/null
+++ b/node_modules/node-abi/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "node-abi",
+ "version": "3.94.0",
+ "description": "Get the Node ABI for a given target and runtime, and vice versa.",
+ "main": "index.js",
+ "scripts": {
+ "test": "tape test/index.js",
+ "update-abi-registry": "node --unhandled-rejections=strict scripts/update-abi-registry.js"
+ },
+ "files": [
+ "abi_registry.json"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/electron/node-abi.git"
+ },
+ "keywords": [
+ "node",
+ "electron",
+ "node_module_version",
+ "abi",
+ "v8"
+ ],
+ "author": "Lukas Geiger",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/electron/node-abi/issues"
+ },
+ "homepage": "https://github.com/electron/node-abi#readme",
+ "devDependencies": {
+ "@semantic-release/npm": "13.0.0-alpha.15",
+ "semantic-release": "^24.2.7",
+ "tape": "^5.3.1"
+ },
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "publishConfig": {
+ "provenance": true
+ },
+ "packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f"
+}