@smarlhens/npm-check-engines 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +55 -0
- package/README.md +265 -0
- package/index.d.ts +38 -0
- package/index.js +585 -0
- package/package.json +32 -10
package/LICENSE.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Blue Oak Model License
|
|
2
|
+
|
|
3
|
+
Version 1.0.0
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
This license gives everyone as much permission to work with
|
|
8
|
+
this software as possible, while protecting contributors
|
|
9
|
+
from liability.
|
|
10
|
+
|
|
11
|
+
## Acceptance
|
|
12
|
+
|
|
13
|
+
In order to receive this license, you must agree to its
|
|
14
|
+
rules. The rules of this license are both obligations
|
|
15
|
+
under that agreement and conditions to your license.
|
|
16
|
+
You must not do anything with this software that triggers
|
|
17
|
+
a rule that you cannot or will not follow.
|
|
18
|
+
|
|
19
|
+
## Copyright
|
|
20
|
+
|
|
21
|
+
Each contributor licenses you to do everything with this
|
|
22
|
+
software that would otherwise infringe that contributor's
|
|
23
|
+
copyright in it.
|
|
24
|
+
|
|
25
|
+
## Notices
|
|
26
|
+
|
|
27
|
+
You must ensure that everyone who gets a copy of
|
|
28
|
+
any part of this software from you, with or without
|
|
29
|
+
changes, also gets the text of this license or a link to
|
|
30
|
+
<https://blueoakcouncil.org/license/1.0.0>.
|
|
31
|
+
|
|
32
|
+
## Excuse
|
|
33
|
+
|
|
34
|
+
If anyone notifies you in writing that you have not
|
|
35
|
+
complied with [Notices](#notices), you can keep your
|
|
36
|
+
license by taking all practical steps to comply within 30
|
|
37
|
+
days after the notice. If you do not do so, your license
|
|
38
|
+
ends immediately.
|
|
39
|
+
|
|
40
|
+
## Patent
|
|
41
|
+
|
|
42
|
+
Each contributor licenses you to do everything with this
|
|
43
|
+
software that would otherwise infringe any patent claims
|
|
44
|
+
they can license or become able to license.
|
|
45
|
+
|
|
46
|
+
## Reliability
|
|
47
|
+
|
|
48
|
+
No contributor can revoke this license.
|
|
49
|
+
|
|
50
|
+
## No Liability
|
|
51
|
+
|
|
52
|
+
**_As far as the law allows, this software comes as is,
|
|
53
|
+
without any warranty or condition, and no contributor
|
|
54
|
+
will be liable to anyone for any damages related to this
|
|
55
|
+
software or this license, under any kind of legal claim._**
|
package/README.md
ADDED
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# NPM check engines
|
|
2
|
+
|
|
3
|
+
[](https://github.com/smarlhens/riri-node-tools/actions/workflows/ci.yml)
|
|
4
|
+
[](https://github.com/smarlhens/riri-node-tools/actions/workflows/napi-nce.yml)
|
|
5
|
+

|
|
6
|
+
[](https://github.com/smarlhens/riri-node-tools/blob/main/LICENSE.md)
|
|
7
|
+
[](https://conventionalcommits.org)
|
|
8
|
+
|
|
9
|
+
**npm-check-engines upgrades your package.json node engines constraint to the most restrictive used by your dependencies.**
|
|
10
|
+
|
|
11
|
+
This package ships a native Rust core via [NAPI-RS](https://napi.rs/) as part of the [riri-node-tools](https://github.com/smarlhens/riri-node-tools) monorepo.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Table of Contents
|
|
16
|
+
|
|
17
|
+
- [Prerequisites](#prerequisites)
|
|
18
|
+
- [Installation](#installation)
|
|
19
|
+
- [Usage](#usage)
|
|
20
|
+
- [CLI](#cli)
|
|
21
|
+
- [Node API](#node-api)
|
|
22
|
+
- [CLI Options](#cli-options)
|
|
23
|
+
- [Debug](#debug)
|
|
24
|
+
- [Thanks](#thanks)
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Prerequisites
|
|
29
|
+
|
|
30
|
+
- [Node.js](https://nodejs.org/en/download/) **version `^22.13.0 || ^24.0.0 || ^25.0.0 || >=26.0.0`**
|
|
31
|
+
|
|
32
|
+
Supported platforms:
|
|
33
|
+
|
|
34
|
+
| OS | Arch |
|
|
35
|
+
| ------- | ------------------------------------ |
|
|
36
|
+
| Linux | x64 (glibc/musl), arm64 (glibc/musl) |
|
|
37
|
+
| macOS | x64, arm64 |
|
|
38
|
+
| Windows | x64 |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Installation
|
|
43
|
+
|
|
44
|
+
Install globally:
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
npm install -g @smarlhens/npm-check-engines
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Or run with [npx](https://docs.npmjs.com/cli/v8/commands/npx):
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
npx @smarlhens/npm-check-engines
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Usage
|
|
59
|
+
|
|
60
|
+
### CLI
|
|
61
|
+
|
|
62
|
+
Compute the most restrictive `engines.node` constraint for the project in the current directory based on the lockfile (`package-lock.json`, `yarn.lock`, or `pnpm-lock.yaml`):
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
nce
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Sample output (against `fixtures/nce-policy-supported-eol-bump`):
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
node >=18.0.0 → ^22.0.0 || ^24.0.0 || ^25.0.0 || >=26.0.0
|
|
72
|
+
npm * → >=10.5.1
|
|
73
|
+
|
|
74
|
+
Run nce -u to upgrade package.json.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Update `package.json` (and lockfile, when relevant) with the computed ranges:
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
nce -u
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Emit machine-readable JSON:
|
|
84
|
+
|
|
85
|
+
```sh
|
|
86
|
+
nce --json
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Node API
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import { checkEngines } from '@smarlhens/npm-check-engines';
|
|
93
|
+
|
|
94
|
+
const packageJson = '...'; // stringified package.json
|
|
95
|
+
const lockfileContent = '...'; // stringified lockfile
|
|
96
|
+
|
|
97
|
+
const { computedEngines, changes } = checkEngines({
|
|
98
|
+
packageJson,
|
|
99
|
+
lockfileContent,
|
|
100
|
+
lockfileType: 'npm', // optional: 'npm' | 'yarn' | 'pnpm' — auto-detected when omitted
|
|
101
|
+
filterEngines: ['node'], // optional: restrict which engines to compute
|
|
102
|
+
precision: 'patch', // optional: 'major' | 'minor' | 'patch'
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
console.log(computedEngines); // { node: '^20.17.0 || ^22.13.0 || >=23.5.0', ... }
|
|
106
|
+
for (const { engine, from, to } of changes) {
|
|
107
|
+
console.log(`${engine}: "${from}" → "${to}"`);
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Additional helpers exported by the package:
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import {
|
|
115
|
+
humanizeRange,
|
|
116
|
+
intersects,
|
|
117
|
+
isSubsetOf,
|
|
118
|
+
restrictiveRange,
|
|
119
|
+
satisfies,
|
|
120
|
+
runCli,
|
|
121
|
+
} from '@smarlhens/npm-check-engines';
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
- `humanizeRange(input, precision?)` — trim trailing zero components per precision rule
|
|
125
|
+
- `intersects(a, b)` — do two ranges overlap
|
|
126
|
+
- `isSubsetOf(a, b)` — is `a` fully contained in `b`
|
|
127
|
+
- `restrictiveRange(a, b)` — return the most restrictive of two ranges
|
|
128
|
+
- `satisfies(range, version)` — does a concrete version satisfy a range
|
|
129
|
+
- `runCli(argv)` — run the `nce` CLI in-process; `argv[0]` must be the program name. Returns exit code.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## CLI Options
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
Check and update Node.js engine constraints in package.json based on the dependency tree from the lockfile
|
|
137
|
+
|
|
138
|
+
Usage: nce [OPTIONS]
|
|
139
|
+
|
|
140
|
+
Options:
|
|
141
|
+
-q, --quiet
|
|
142
|
+
Silent mode — no output
|
|
143
|
+
|
|
144
|
+
-v, --verbose
|
|
145
|
+
Verbose output
|
|
146
|
+
|
|
147
|
+
-d, --debug
|
|
148
|
+
Debug mode — detailed logging
|
|
149
|
+
|
|
150
|
+
-e, --engines <ENGINES>
|
|
151
|
+
Engine keys to check (e.g. node, npm, yarn). Defaults to all
|
|
152
|
+
|
|
153
|
+
-u, --update
|
|
154
|
+
Update package.json (and lockfile) with computed ranges
|
|
155
|
+
|
|
156
|
+
--enable-engine-strict
|
|
157
|
+
Create or update .npmrc with engine-strict=true
|
|
158
|
+
|
|
159
|
+
--json
|
|
160
|
+
Output results as JSON
|
|
161
|
+
|
|
162
|
+
--sort
|
|
163
|
+
Sort package.json keys (sort-package-json conventions); writes the file even without --update or pending changes
|
|
164
|
+
|
|
165
|
+
--precision <PRECISION>
|
|
166
|
+
Version precision in output: major (e.g. >=24), minor (e.g. >=24.0), or patch (e.g. >=24.0.0). Trailing .0 components are trimmed accordingly. Non-zero components are never dropped
|
|
167
|
+
|
|
168
|
+
Possible values:
|
|
169
|
+
- major: Trim all trailing .0 (minimum 1 component)
|
|
170
|
+
- minor: Trim trailing .0 patch only (minimum 2 components)
|
|
171
|
+
- patch: Always show major.minor.patch
|
|
172
|
+
|
|
173
|
+
[default: patch]
|
|
174
|
+
|
|
175
|
+
--node-policy <NODE_POLICY>
|
|
176
|
+
Node.js lifecycle policy gate for engines.node
|
|
177
|
+
|
|
178
|
+
[default: supported]
|
|
179
|
+
[possible values: any, stable, supported, lts, maintenance]
|
|
180
|
+
|
|
181
|
+
--allow-eol
|
|
182
|
+
Suppress EOL warnings (does not widen the policy)
|
|
183
|
+
|
|
184
|
+
--bump-npm
|
|
185
|
+
Bump engines.npm floor to match the lowest node major in range
|
|
186
|
+
|
|
187
|
+
--no-bump-npm
|
|
188
|
+
Disable the npm coupling pass
|
|
189
|
+
|
|
190
|
+
--npm-precision <NPM_PRECISION>
|
|
191
|
+
Precision applied to the npm bump floor
|
|
192
|
+
|
|
193
|
+
Possible values:
|
|
194
|
+
- major: Trim all trailing .0 (minimum 1 component)
|
|
195
|
+
- minor: Trim trailing .0 patch only (minimum 2 components)
|
|
196
|
+
- patch: Always show major.minor.patch
|
|
197
|
+
|
|
198
|
+
[default: major]
|
|
199
|
+
|
|
200
|
+
--refresh
|
|
201
|
+
Fetch fresh lifecycle data from upstream and update the user cache. Continues with the rest of the run after writing the cache
|
|
202
|
+
|
|
203
|
+
-h, --help
|
|
204
|
+
Print help (see a summary with '-h')
|
|
205
|
+
|
|
206
|
+
-V, --version
|
|
207
|
+
Print version
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Debug
|
|
213
|
+
|
|
214
|
+
```sh
|
|
215
|
+
nce -d
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
The `-d/--debug` flag enables detailed logging to stderr. No environment variable is required.
|
|
219
|
+
|
|
220
|
+
<details>
|
|
221
|
+
<summary>Sample debug output (against <code>fixtures/nce-policy-supported-eol-bump</code>)</summary>
|
|
222
|
+
|
|
223
|
+
```text
|
|
224
|
+
▸ Detecting lockfile......
|
|
225
|
+
✓ Detected package-lock.json
|
|
226
|
+
▸ Reading package.json......
|
|
227
|
+
✓ Read package.json
|
|
228
|
+
▸ Parsing lockfile......
|
|
229
|
+
✓ Parsed lockfile
|
|
230
|
+
▸ Computing engine constraints......
|
|
231
|
+
Compare: * and >=18.0.0 engine=node package=<root>
|
|
232
|
+
New most restrictive range: >=18.0.0 engine=node
|
|
233
|
+
Final computed engine range constraint: >=18.0.0 engine=node
|
|
234
|
+
Compare: * and >=18.0.0 engine=node package=<root>
|
|
235
|
+
New most restrictive range: >=18.0.0 engine=node
|
|
236
|
+
Final computed engine range constraint: >=18.0.0 engine=node
|
|
237
|
+
Package has no engines engine=npm package=<root>
|
|
238
|
+
Final computed engine range constraint: * engine=npm
|
|
239
|
+
Package has no engines engine=npm package=<root>
|
|
240
|
+
Final computed engine range constraint: * engine=npm
|
|
241
|
+
Package has no engines engine=yarn package=<root>
|
|
242
|
+
Final computed engine range constraint: * engine=yarn
|
|
243
|
+
Package has no engines engine=yarn package=<root>
|
|
244
|
+
Final computed engine range constraint: * engine=yarn
|
|
245
|
+
Rewriting node range under policy gate: >=18.0.0 policy=Supported
|
|
246
|
+
Bumped disjunct: >=18.0.0 → ^22.0.0 || ^24.0.0 || ^25.0.0 || >=26.0.0
|
|
247
|
+
Rewritten node range: ^22.0.0 || ^24.0.0 || ^25.0.0 || >=26.0.0
|
|
248
|
+
npm floor derived from node range: target 10.5.1 (declared: Some("*")) apply=true
|
|
249
|
+
Bumping engines.npm floor to: >=10.5.1
|
|
250
|
+
✓ Computed engine constraints
|
|
251
|
+
node >=18.0.0 → ^22.0.0 || ^24.0.0 || ^25.0.0 || >=26.0.0
|
|
252
|
+
npm * → >=10.5.1
|
|
253
|
+
|
|
254
|
+
Run nce -d -u to upgrade package.json.
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
</details>
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## Thanks
|
|
262
|
+
|
|
263
|
+
Originally inspired by [npm-check-updates](https://github.com/raineorshine/npm-check-updates).
|
|
264
|
+
|
|
265
|
+
---
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* auto-generated by NAPI-RS */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
export declare function checkEngines(options: CheckEnginesOptions): CheckEnginesResult
|
|
4
|
+
|
|
5
|
+
export interface CheckEnginesOptions {
|
|
6
|
+
packageJson: string
|
|
7
|
+
lockfileContent: string
|
|
8
|
+
lockfileType?: string
|
|
9
|
+
filterEngines?: Array<string>
|
|
10
|
+
precision?: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface CheckEnginesResult {
|
|
14
|
+
computedEngines: Record<string, string>
|
|
15
|
+
changes: Array<EngineChange>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface EngineChange {
|
|
19
|
+
engine: string
|
|
20
|
+
from: string
|
|
21
|
+
to: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export declare function humanizeRange(input: string, precision?: string | undefined | null): string
|
|
25
|
+
|
|
26
|
+
export declare function intersects(range1: string, range2: string): boolean
|
|
27
|
+
|
|
28
|
+
export declare function isSubsetOf(range1: string, range2: string): boolean
|
|
29
|
+
|
|
30
|
+
export declare function restrictiveRange(range1: string, range2: string): string
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Run the `nce` CLI in-process. `argv` must include the program name at
|
|
34
|
+
* index 0 (e.g. `["nce", "--json"]`). Returns the exit code.
|
|
35
|
+
*/
|
|
36
|
+
export declare function runCli(argv: Array<string>): number
|
|
37
|
+
|
|
38
|
+
export declare function satisfies(range: string, version: string): boolean
|
package/index.js
ADDED
|
@@ -0,0 +1,585 @@
|
|
|
1
|
+
// prettier-ignore
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
/* auto-generated by NAPI-RS */
|
|
5
|
+
|
|
6
|
+
const { readFileSync } = require('node:fs')
|
|
7
|
+
let nativeBinding = null
|
|
8
|
+
const loadErrors = []
|
|
9
|
+
|
|
10
|
+
const isMusl = () => {
|
|
11
|
+
let musl = false
|
|
12
|
+
if (process.platform === 'linux') {
|
|
13
|
+
musl = isMuslFromFilesystem()
|
|
14
|
+
if (musl === null) {
|
|
15
|
+
musl = isMuslFromReport()
|
|
16
|
+
}
|
|
17
|
+
if (musl === null) {
|
|
18
|
+
musl = isMuslFromChildProcess()
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return musl
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')
|
|
25
|
+
|
|
26
|
+
const isMuslFromFilesystem = () => {
|
|
27
|
+
try {
|
|
28
|
+
return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')
|
|
29
|
+
} catch {
|
|
30
|
+
return null
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const isMuslFromReport = () => {
|
|
35
|
+
let report = null
|
|
36
|
+
if (typeof process.report?.getReport === 'function') {
|
|
37
|
+
process.report.excludeNetwork = true
|
|
38
|
+
report = process.report.getReport()
|
|
39
|
+
}
|
|
40
|
+
if (!report) {
|
|
41
|
+
return null
|
|
42
|
+
}
|
|
43
|
+
if (report.header && report.header.glibcVersionRuntime) {
|
|
44
|
+
return false
|
|
45
|
+
}
|
|
46
|
+
if (Array.isArray(report.sharedObjects)) {
|
|
47
|
+
if (report.sharedObjects.some(isFileMusl)) {
|
|
48
|
+
return true
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return false
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const isMuslFromChildProcess = () => {
|
|
55
|
+
try {
|
|
56
|
+
return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')
|
|
57
|
+
} catch (e) {
|
|
58
|
+
// If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false
|
|
59
|
+
return false
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function requireNative() {
|
|
64
|
+
if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) {
|
|
65
|
+
try {
|
|
66
|
+
return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
loadErrors.push(err)
|
|
69
|
+
}
|
|
70
|
+
} else if (process.platform === 'android') {
|
|
71
|
+
if (process.arch === 'arm64') {
|
|
72
|
+
try {
|
|
73
|
+
return require('./npm-check-engines.android-arm64.node')
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadErrors.push(e)
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const binding = require('@smarlhens/npm-check-engines-android-arm64')
|
|
79
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-android-arm64/package.json').version
|
|
80
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
81
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
82
|
+
}
|
|
83
|
+
return binding
|
|
84
|
+
} catch (e) {
|
|
85
|
+
loadErrors.push(e)
|
|
86
|
+
}
|
|
87
|
+
} else if (process.arch === 'arm') {
|
|
88
|
+
try {
|
|
89
|
+
return require('./npm-check-engines.android-arm-eabi.node')
|
|
90
|
+
} catch (e) {
|
|
91
|
+
loadErrors.push(e)
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const binding = require('@smarlhens/npm-check-engines-android-arm-eabi')
|
|
95
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-android-arm-eabi/package.json').version
|
|
96
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
97
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
98
|
+
}
|
|
99
|
+
return binding
|
|
100
|
+
} catch (e) {
|
|
101
|
+
loadErrors.push(e)
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))
|
|
105
|
+
}
|
|
106
|
+
} else if (process.platform === 'win32') {
|
|
107
|
+
if (process.arch === 'x64') {
|
|
108
|
+
if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') {
|
|
109
|
+
try {
|
|
110
|
+
return require('./npm-check-engines.win32-x64-gnu.node')
|
|
111
|
+
} catch (e) {
|
|
112
|
+
loadErrors.push(e)
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const binding = require('@smarlhens/npm-check-engines-win32-x64-gnu')
|
|
116
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-win32-x64-gnu/package.json').version
|
|
117
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
118
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
119
|
+
}
|
|
120
|
+
return binding
|
|
121
|
+
} catch (e) {
|
|
122
|
+
loadErrors.push(e)
|
|
123
|
+
}
|
|
124
|
+
} else {
|
|
125
|
+
try {
|
|
126
|
+
return require('./npm-check-engines.win32-x64-msvc.node')
|
|
127
|
+
} catch (e) {
|
|
128
|
+
loadErrors.push(e)
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const binding = require('@smarlhens/npm-check-engines-win32-x64-msvc')
|
|
132
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-win32-x64-msvc/package.json').version
|
|
133
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
134
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
135
|
+
}
|
|
136
|
+
return binding
|
|
137
|
+
} catch (e) {
|
|
138
|
+
loadErrors.push(e)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
} else if (process.arch === 'ia32') {
|
|
142
|
+
try {
|
|
143
|
+
return require('./npm-check-engines.win32-ia32-msvc.node')
|
|
144
|
+
} catch (e) {
|
|
145
|
+
loadErrors.push(e)
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const binding = require('@smarlhens/npm-check-engines-win32-ia32-msvc')
|
|
149
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-win32-ia32-msvc/package.json').version
|
|
150
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
151
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
152
|
+
}
|
|
153
|
+
return binding
|
|
154
|
+
} catch (e) {
|
|
155
|
+
loadErrors.push(e)
|
|
156
|
+
}
|
|
157
|
+
} else if (process.arch === 'arm64') {
|
|
158
|
+
try {
|
|
159
|
+
return require('./npm-check-engines.win32-arm64-msvc.node')
|
|
160
|
+
} catch (e) {
|
|
161
|
+
loadErrors.push(e)
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const binding = require('@smarlhens/npm-check-engines-win32-arm64-msvc')
|
|
165
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-win32-arm64-msvc/package.json').version
|
|
166
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
167
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
168
|
+
}
|
|
169
|
+
return binding
|
|
170
|
+
} catch (e) {
|
|
171
|
+
loadErrors.push(e)
|
|
172
|
+
}
|
|
173
|
+
} else {
|
|
174
|
+
loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
|
|
175
|
+
}
|
|
176
|
+
} else if (process.platform === 'darwin') {
|
|
177
|
+
try {
|
|
178
|
+
return require('./npm-check-engines.darwin-universal.node')
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadErrors.push(e)
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const binding = require('@smarlhens/npm-check-engines-darwin-universal')
|
|
184
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-darwin-universal/package.json').version
|
|
185
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
186
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
187
|
+
}
|
|
188
|
+
return binding
|
|
189
|
+
} catch (e) {
|
|
190
|
+
loadErrors.push(e)
|
|
191
|
+
}
|
|
192
|
+
if (process.arch === 'x64') {
|
|
193
|
+
try {
|
|
194
|
+
return require('./npm-check-engines.darwin-x64.node')
|
|
195
|
+
} catch (e) {
|
|
196
|
+
loadErrors.push(e)
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const binding = require('@smarlhens/npm-check-engines-darwin-x64')
|
|
200
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-darwin-x64/package.json').version
|
|
201
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
202
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
203
|
+
}
|
|
204
|
+
return binding
|
|
205
|
+
} catch (e) {
|
|
206
|
+
loadErrors.push(e)
|
|
207
|
+
}
|
|
208
|
+
} else if (process.arch === 'arm64') {
|
|
209
|
+
try {
|
|
210
|
+
return require('./npm-check-engines.darwin-arm64.node')
|
|
211
|
+
} catch (e) {
|
|
212
|
+
loadErrors.push(e)
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const binding = require('@smarlhens/npm-check-engines-darwin-arm64')
|
|
216
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-darwin-arm64/package.json').version
|
|
217
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
218
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
219
|
+
}
|
|
220
|
+
return binding
|
|
221
|
+
} catch (e) {
|
|
222
|
+
loadErrors.push(e)
|
|
223
|
+
}
|
|
224
|
+
} else {
|
|
225
|
+
loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))
|
|
226
|
+
}
|
|
227
|
+
} else if (process.platform === 'freebsd') {
|
|
228
|
+
if (process.arch === 'x64') {
|
|
229
|
+
try {
|
|
230
|
+
return require('./npm-check-engines.freebsd-x64.node')
|
|
231
|
+
} catch (e) {
|
|
232
|
+
loadErrors.push(e)
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
const binding = require('@smarlhens/npm-check-engines-freebsd-x64')
|
|
236
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-freebsd-x64/package.json').version
|
|
237
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
238
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
239
|
+
}
|
|
240
|
+
return binding
|
|
241
|
+
} catch (e) {
|
|
242
|
+
loadErrors.push(e)
|
|
243
|
+
}
|
|
244
|
+
} else if (process.arch === 'arm64') {
|
|
245
|
+
try {
|
|
246
|
+
return require('./npm-check-engines.freebsd-arm64.node')
|
|
247
|
+
} catch (e) {
|
|
248
|
+
loadErrors.push(e)
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const binding = require('@smarlhens/npm-check-engines-freebsd-arm64')
|
|
252
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-freebsd-arm64/package.json').version
|
|
253
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
254
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
255
|
+
}
|
|
256
|
+
return binding
|
|
257
|
+
} catch (e) {
|
|
258
|
+
loadErrors.push(e)
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))
|
|
262
|
+
}
|
|
263
|
+
} else if (process.platform === 'linux') {
|
|
264
|
+
if (process.arch === 'x64') {
|
|
265
|
+
if (isMusl()) {
|
|
266
|
+
try {
|
|
267
|
+
return require('./npm-check-engines.linux-x64-musl.node')
|
|
268
|
+
} catch (e) {
|
|
269
|
+
loadErrors.push(e)
|
|
270
|
+
}
|
|
271
|
+
try {
|
|
272
|
+
const binding = require('@smarlhens/npm-check-engines-linux-x64-musl')
|
|
273
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-x64-musl/package.json').version
|
|
274
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
275
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
276
|
+
}
|
|
277
|
+
return binding
|
|
278
|
+
} catch (e) {
|
|
279
|
+
loadErrors.push(e)
|
|
280
|
+
}
|
|
281
|
+
} else {
|
|
282
|
+
try {
|
|
283
|
+
return require('./npm-check-engines.linux-x64-gnu.node')
|
|
284
|
+
} catch (e) {
|
|
285
|
+
loadErrors.push(e)
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
const binding = require('@smarlhens/npm-check-engines-linux-x64-gnu')
|
|
289
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-x64-gnu/package.json').version
|
|
290
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
291
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
292
|
+
}
|
|
293
|
+
return binding
|
|
294
|
+
} catch (e) {
|
|
295
|
+
loadErrors.push(e)
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
} else if (process.arch === 'arm64') {
|
|
299
|
+
if (isMusl()) {
|
|
300
|
+
try {
|
|
301
|
+
return require('./npm-check-engines.linux-arm64-musl.node')
|
|
302
|
+
} catch (e) {
|
|
303
|
+
loadErrors.push(e)
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const binding = require('@smarlhens/npm-check-engines-linux-arm64-musl')
|
|
307
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-arm64-musl/package.json').version
|
|
308
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
309
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
310
|
+
}
|
|
311
|
+
return binding
|
|
312
|
+
} catch (e) {
|
|
313
|
+
loadErrors.push(e)
|
|
314
|
+
}
|
|
315
|
+
} else {
|
|
316
|
+
try {
|
|
317
|
+
return require('./npm-check-engines.linux-arm64-gnu.node')
|
|
318
|
+
} catch (e) {
|
|
319
|
+
loadErrors.push(e)
|
|
320
|
+
}
|
|
321
|
+
try {
|
|
322
|
+
const binding = require('@smarlhens/npm-check-engines-linux-arm64-gnu')
|
|
323
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-arm64-gnu/package.json').version
|
|
324
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
325
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
326
|
+
}
|
|
327
|
+
return binding
|
|
328
|
+
} catch (e) {
|
|
329
|
+
loadErrors.push(e)
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
} else if (process.arch === 'arm') {
|
|
333
|
+
if (isMusl()) {
|
|
334
|
+
try {
|
|
335
|
+
return require('./npm-check-engines.linux-arm-musleabihf.node')
|
|
336
|
+
} catch (e) {
|
|
337
|
+
loadErrors.push(e)
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const binding = require('@smarlhens/npm-check-engines-linux-arm-musleabihf')
|
|
341
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-arm-musleabihf/package.json').version
|
|
342
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
343
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
344
|
+
}
|
|
345
|
+
return binding
|
|
346
|
+
} catch (e) {
|
|
347
|
+
loadErrors.push(e)
|
|
348
|
+
}
|
|
349
|
+
} else {
|
|
350
|
+
try {
|
|
351
|
+
return require('./npm-check-engines.linux-arm-gnueabihf.node')
|
|
352
|
+
} catch (e) {
|
|
353
|
+
loadErrors.push(e)
|
|
354
|
+
}
|
|
355
|
+
try {
|
|
356
|
+
const binding = require('@smarlhens/npm-check-engines-linux-arm-gnueabihf')
|
|
357
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-arm-gnueabihf/package.json').version
|
|
358
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
359
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
360
|
+
}
|
|
361
|
+
return binding
|
|
362
|
+
} catch (e) {
|
|
363
|
+
loadErrors.push(e)
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
} else if (process.arch === 'loong64') {
|
|
367
|
+
if (isMusl()) {
|
|
368
|
+
try {
|
|
369
|
+
return require('./npm-check-engines.linux-loong64-musl.node')
|
|
370
|
+
} catch (e) {
|
|
371
|
+
loadErrors.push(e)
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const binding = require('@smarlhens/npm-check-engines-linux-loong64-musl')
|
|
375
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-loong64-musl/package.json').version
|
|
376
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
377
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
378
|
+
}
|
|
379
|
+
return binding
|
|
380
|
+
} catch (e) {
|
|
381
|
+
loadErrors.push(e)
|
|
382
|
+
}
|
|
383
|
+
} else {
|
|
384
|
+
try {
|
|
385
|
+
return require('./npm-check-engines.linux-loong64-gnu.node')
|
|
386
|
+
} catch (e) {
|
|
387
|
+
loadErrors.push(e)
|
|
388
|
+
}
|
|
389
|
+
try {
|
|
390
|
+
const binding = require('@smarlhens/npm-check-engines-linux-loong64-gnu')
|
|
391
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-loong64-gnu/package.json').version
|
|
392
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
393
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
394
|
+
}
|
|
395
|
+
return binding
|
|
396
|
+
} catch (e) {
|
|
397
|
+
loadErrors.push(e)
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
} else if (process.arch === 'riscv64') {
|
|
401
|
+
if (isMusl()) {
|
|
402
|
+
try {
|
|
403
|
+
return require('./npm-check-engines.linux-riscv64-musl.node')
|
|
404
|
+
} catch (e) {
|
|
405
|
+
loadErrors.push(e)
|
|
406
|
+
}
|
|
407
|
+
try {
|
|
408
|
+
const binding = require('@smarlhens/npm-check-engines-linux-riscv64-musl')
|
|
409
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-riscv64-musl/package.json').version
|
|
410
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
411
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
412
|
+
}
|
|
413
|
+
return binding
|
|
414
|
+
} catch (e) {
|
|
415
|
+
loadErrors.push(e)
|
|
416
|
+
}
|
|
417
|
+
} else {
|
|
418
|
+
try {
|
|
419
|
+
return require('./npm-check-engines.linux-riscv64-gnu.node')
|
|
420
|
+
} catch (e) {
|
|
421
|
+
loadErrors.push(e)
|
|
422
|
+
}
|
|
423
|
+
try {
|
|
424
|
+
const binding = require('@smarlhens/npm-check-engines-linux-riscv64-gnu')
|
|
425
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-riscv64-gnu/package.json').version
|
|
426
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
427
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
428
|
+
}
|
|
429
|
+
return binding
|
|
430
|
+
} catch (e) {
|
|
431
|
+
loadErrors.push(e)
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
} else if (process.arch === 'ppc64') {
|
|
435
|
+
try {
|
|
436
|
+
return require('./npm-check-engines.linux-ppc64-gnu.node')
|
|
437
|
+
} catch (e) {
|
|
438
|
+
loadErrors.push(e)
|
|
439
|
+
}
|
|
440
|
+
try {
|
|
441
|
+
const binding = require('@smarlhens/npm-check-engines-linux-ppc64-gnu')
|
|
442
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-ppc64-gnu/package.json').version
|
|
443
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
444
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
445
|
+
}
|
|
446
|
+
return binding
|
|
447
|
+
} catch (e) {
|
|
448
|
+
loadErrors.push(e)
|
|
449
|
+
}
|
|
450
|
+
} else if (process.arch === 's390x') {
|
|
451
|
+
try {
|
|
452
|
+
return require('./npm-check-engines.linux-s390x-gnu.node')
|
|
453
|
+
} catch (e) {
|
|
454
|
+
loadErrors.push(e)
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
const binding = require('@smarlhens/npm-check-engines-linux-s390x-gnu')
|
|
458
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-linux-s390x-gnu/package.json').version
|
|
459
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
460
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
461
|
+
}
|
|
462
|
+
return binding
|
|
463
|
+
} catch (e) {
|
|
464
|
+
loadErrors.push(e)
|
|
465
|
+
}
|
|
466
|
+
} else {
|
|
467
|
+
loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))
|
|
468
|
+
}
|
|
469
|
+
} else if (process.platform === 'openharmony') {
|
|
470
|
+
if (process.arch === 'arm64') {
|
|
471
|
+
try {
|
|
472
|
+
return require('./npm-check-engines.openharmony-arm64.node')
|
|
473
|
+
} catch (e) {
|
|
474
|
+
loadErrors.push(e)
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const binding = require('@smarlhens/npm-check-engines-openharmony-arm64')
|
|
478
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-openharmony-arm64/package.json').version
|
|
479
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
480
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
481
|
+
}
|
|
482
|
+
return binding
|
|
483
|
+
} catch (e) {
|
|
484
|
+
loadErrors.push(e)
|
|
485
|
+
}
|
|
486
|
+
} else if (process.arch === 'x64') {
|
|
487
|
+
try {
|
|
488
|
+
return require('./npm-check-engines.openharmony-x64.node')
|
|
489
|
+
} catch (e) {
|
|
490
|
+
loadErrors.push(e)
|
|
491
|
+
}
|
|
492
|
+
try {
|
|
493
|
+
const binding = require('@smarlhens/npm-check-engines-openharmony-x64')
|
|
494
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-openharmony-x64/package.json').version
|
|
495
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
496
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
497
|
+
}
|
|
498
|
+
return binding
|
|
499
|
+
} catch (e) {
|
|
500
|
+
loadErrors.push(e)
|
|
501
|
+
}
|
|
502
|
+
} else if (process.arch === 'arm') {
|
|
503
|
+
try {
|
|
504
|
+
return require('./npm-check-engines.openharmony-arm.node')
|
|
505
|
+
} catch (e) {
|
|
506
|
+
loadErrors.push(e)
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
const binding = require('@smarlhens/npm-check-engines-openharmony-arm')
|
|
510
|
+
const bindingPackageVersion = require('@smarlhens/npm-check-engines-openharmony-arm/package.json').version
|
|
511
|
+
if (bindingPackageVersion !== '1.2.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
512
|
+
throw new Error(`Native binding package version mismatch, expected 1.2.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
513
|
+
}
|
|
514
|
+
return binding
|
|
515
|
+
} catch (e) {
|
|
516
|
+
loadErrors.push(e)
|
|
517
|
+
}
|
|
518
|
+
} else {
|
|
519
|
+
loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`))
|
|
520
|
+
}
|
|
521
|
+
} else {
|
|
522
|
+
loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
nativeBinding = requireNative()
|
|
527
|
+
|
|
528
|
+
if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
|
|
529
|
+
let wasiBinding = null
|
|
530
|
+
let wasiBindingError = null
|
|
531
|
+
try {
|
|
532
|
+
wasiBinding = require('./npm-check-engines.wasi.cjs')
|
|
533
|
+
nativeBinding = wasiBinding
|
|
534
|
+
} catch (err) {
|
|
535
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
536
|
+
wasiBindingError = err
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
|
|
540
|
+
try {
|
|
541
|
+
wasiBinding = require('@smarlhens/npm-check-engines-wasm32-wasi')
|
|
542
|
+
nativeBinding = wasiBinding
|
|
543
|
+
} catch (err) {
|
|
544
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
545
|
+
if (!wasiBindingError) {
|
|
546
|
+
wasiBindingError = err
|
|
547
|
+
} else {
|
|
548
|
+
wasiBindingError.cause = err
|
|
549
|
+
}
|
|
550
|
+
loadErrors.push(err)
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {
|
|
555
|
+
const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')
|
|
556
|
+
error.cause = wasiBindingError
|
|
557
|
+
throw error
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
if (!nativeBinding) {
|
|
562
|
+
if (loadErrors.length > 0) {
|
|
563
|
+
throw new Error(
|
|
564
|
+
`Cannot find native binding. ` +
|
|
565
|
+
`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
|
|
566
|
+
'Please try `npm i` again after removing both package-lock.json and node_modules directory.',
|
|
567
|
+
{
|
|
568
|
+
cause: loadErrors.reduce((err, cur) => {
|
|
569
|
+
cur.cause = err
|
|
570
|
+
return cur
|
|
571
|
+
}),
|
|
572
|
+
},
|
|
573
|
+
)
|
|
574
|
+
}
|
|
575
|
+
throw new Error(`Failed to load native binding`)
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
module.exports = nativeBinding
|
|
579
|
+
module.exports.checkEngines = nativeBinding.checkEngines
|
|
580
|
+
module.exports.humanizeRange = nativeBinding.humanizeRange
|
|
581
|
+
module.exports.intersects = nativeBinding.intersects
|
|
582
|
+
module.exports.isSubsetOf = nativeBinding.isSubsetOf
|
|
583
|
+
module.exports.restrictiveRange = nativeBinding.restrictiveRange
|
|
584
|
+
module.exports.runCli = nativeBinding.runCli
|
|
585
|
+
module.exports.satisfies = nativeBinding.satisfies
|
package/package.json
CHANGED
|
@@ -1,7 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smarlhens/npm-check-engines",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Check and update Node.js engine constraints in package.json",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"cli",
|
|
7
|
+
"engine-strict",
|
|
8
|
+
"engines",
|
|
9
|
+
"eol",
|
|
10
|
+
"lifecycle",
|
|
11
|
+
"lockfile",
|
|
12
|
+
"napi",
|
|
13
|
+
"node",
|
|
14
|
+
"node-engines",
|
|
15
|
+
"node-lts",
|
|
16
|
+
"node-version",
|
|
17
|
+
"nodejs",
|
|
18
|
+
"npm",
|
|
19
|
+
"package.json",
|
|
20
|
+
"pnpm",
|
|
21
|
+
"rust",
|
|
22
|
+
"semver",
|
|
23
|
+
"typescript",
|
|
24
|
+
"yarn"
|
|
25
|
+
],
|
|
5
26
|
"license": "BlueOak-1.0.0",
|
|
6
27
|
"author": "Samuel MARLHENS <samuel.marlhens@proton.me>",
|
|
7
28
|
"repository": {
|
|
@@ -27,7 +48,7 @@
|
|
|
27
48
|
"artifacts": "napi artifacts",
|
|
28
49
|
"build": "napi build --platform --release",
|
|
29
50
|
"build:debug": "napi build --platform",
|
|
30
|
-
"prepublishOnly": "napi prepublish -t npm",
|
|
51
|
+
"prepublishOnly": "napi prepublish -t npm --no-gh-release",
|
|
31
52
|
"version": "napi version"
|
|
32
53
|
},
|
|
33
54
|
"devDependencies": {
|
|
@@ -46,15 +67,16 @@
|
|
|
46
67
|
]
|
|
47
68
|
},
|
|
48
69
|
"engines": {
|
|
49
|
-
"node": "^
|
|
70
|
+
"node": "^22.13.0 || ^24.0.0 || ^25.0.0 || >=26.0.0",
|
|
71
|
+
"npm": ">=10.9.2"
|
|
50
72
|
},
|
|
51
73
|
"optionalDependencies": {
|
|
52
|
-
"@smarlhens/npm-check-engines-linux-x64-gnu": "1.
|
|
53
|
-
"@smarlhens/npm-check-engines-linux-x64-musl": "1.
|
|
54
|
-
"@smarlhens/npm-check-engines-linux-arm64-gnu": "1.
|
|
55
|
-
"@smarlhens/npm-check-engines-linux-arm64-musl": "1.
|
|
56
|
-
"@smarlhens/npm-check-engines-darwin-x64": "1.
|
|
57
|
-
"@smarlhens/npm-check-engines-darwin-arm64": "1.
|
|
58
|
-
"@smarlhens/npm-check-engines-win32-x64-msvc": "1.
|
|
74
|
+
"@smarlhens/npm-check-engines-linux-x64-gnu": "1.2.0",
|
|
75
|
+
"@smarlhens/npm-check-engines-linux-x64-musl": "1.2.0",
|
|
76
|
+
"@smarlhens/npm-check-engines-linux-arm64-gnu": "1.2.0",
|
|
77
|
+
"@smarlhens/npm-check-engines-linux-arm64-musl": "1.2.0",
|
|
78
|
+
"@smarlhens/npm-check-engines-darwin-x64": "1.2.0",
|
|
79
|
+
"@smarlhens/npm-check-engines-darwin-arm64": "1.2.0",
|
|
80
|
+
"@smarlhens/npm-check-engines-win32-x64-msvc": "1.2.0"
|
|
59
81
|
}
|
|
60
82
|
}
|