@medicomind/rolldown-compression 2.1.6 → 2.1.8
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/CHANGELOG.md +14 -0
- package/README.md +16 -15
- package/index.js +703 -0
- package/package.json +10 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @medicomind/rolldown-compression
|
|
2
2
|
|
|
3
|
+
## 2.1.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`f15e4b4`](https://github.com/Medico-Mind/rolldown-compression/commit/f15e4b4ed61eec6ea449ef61a08518b6cf5f5541) Thanks [@Mnwa](https://github.com/Mnwa)! - Reduce allocations in the native compression path: gzip now compresses through a buffered reader with a tighter worst-case output bound, and brotli reuses thread-local scratch buffers instead of allocating them per call.
|
|
8
|
+
|
|
9
|
+
- [`3ff01c1`](https://github.com/Medico-Mind/rolldown-compression/commit/3ff01c1272ee5c618b746f39b0e8493203206b29) Thanks [@Mnwa](https://github.com/Mnwa)! - Fix the published `wasm32-wasi` package manifest, which had drifted behind the napi-rs CLI: it no longer declares `cpu: ["wasm32"]` (the WASI binding runs on any host architecture), now declares `type: module` for its loaders, ships and points `types` at `rolldown-compression.wasi.d.cts`, and pins the `@emnapi/core` / `@emnapi/runtime` versions the binding is actually built against.
|
|
10
|
+
|
|
11
|
+
## 2.1.7
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [`addbfa5`](https://github.com/Medico-Mind/rolldown-compression/commit/addbfa564547d9553eef6c29633d4df6b0f44389) Thanks [@Mnwa](https://github.com/Mnwa)! - Fix build
|
|
16
|
+
|
|
3
17
|
## 2.1.6
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -185,33 +185,34 @@ after: npm run build 537.24s user 5.59s system 740% cpu 1:13.29 total
|
|
|
185
185
|
|
|
186
186
|
`npm run bench` (or `node benchmark/index.mjs --quick`) generates a dist-shaped fixture set — 202 files / ~85 MB with a long-tail size distribution, including two monolithic >16 MiB bundles that exercise the multithreaded brotli path — and compresses it with the native core vs `node:zlib` driven at full parallelism via `Promise.all` (the reference plugin's best case). Both sides always use the same levels.
|
|
187
187
|
|
|
188
|
-
Results on an Apple
|
|
188
|
+
Results on an Apple M5 Pro (18 cores), Node 26, default `UV_THREADPOOL_SIZE`:
|
|
189
189
|
|
|
190
190
|
#### With PGO
|
|
191
191
|
| scenario | output | native (rust) | node:zlib | speedup |
|
|
192
192
|
|-----------------------------------|----------|---------------|-----------|---------|
|
|
193
|
-
| gzip+brotli (ref. defaults: 9/11) | 15.06 MB |
|
|
194
|
-
| gzip (level 9) | 9.62 MB | 0.
|
|
195
|
-
| gzip (level 6) | 9.86 MB | 0.
|
|
196
|
-
| brotli (quality 11) | 5.45 MB |
|
|
197
|
-
| brotli (quality 6) | 9.88 MB | 0.
|
|
198
|
-
| zstd (level 19) | 5.54 MB |
|
|
193
|
+
| gzip+brotli (ref. defaults: 9/11) | 15.06 MB | 7.06s | 23.57s | 3.34x |
|
|
194
|
+
| gzip (level 9) | 9.62 MB | 0.18s | 0.53s | 2.93x |
|
|
195
|
+
| gzip (level 6) | 9.86 MB | 0.11s | 0.24s | 2.08x |
|
|
196
|
+
| brotli (quality 11) | 5.45 MB | 6.91s | 23.43s | 3.39x |
|
|
197
|
+
| brotli (quality 6) | 9.88 MB | 0.12s | 0.23s | 1.99x |
|
|
198
|
+
| zstd (level 19) | 5.54 MB | 5.03s | 8.41s | 1.67x |
|
|
199
199
|
|
|
200
200
|
#### Without PGO
|
|
201
201
|
| scenario | output | native (rust) | node:zlib | speedup |
|
|
202
202
|
|-----------------------------------|----------|---------------|-----------|---------|
|
|
203
|
-
| gzip+brotli (ref. defaults: 9/11) | 15.06 MB |
|
|
204
|
-
| gzip (level 9) | 9.62 MB | 0.
|
|
205
|
-
| gzip (level 6) | 9.86 MB | 0.
|
|
206
|
-
| brotli (quality 11) | 5.45 MB |
|
|
207
|
-
| brotli (quality 6) | 9.88 MB | 0.
|
|
208
|
-
| zstd (level 19) | 5.54 MB |
|
|
203
|
+
| gzip+brotli (ref. defaults: 9/11) | 15.06 MB | 6.55s | 23.58s | 3.60x |
|
|
204
|
+
| gzip (level 9) | 9.62 MB | 0.16s | 0.54s | 3.31x |
|
|
205
|
+
| gzip (level 6) | 9.86 MB | 0.11s | 0.24s | 2.06x |
|
|
206
|
+
| brotli (quality 11) | 5.45 MB | 6.62s | 23.61s | 3.56x |
|
|
207
|
+
| brotli (quality 6) | 9.88 MB | 0.11s | 0.23s | 2.04x |
|
|
208
|
+
| zstd (level 19) | 5.54 MB | 5.06s | 8.43s | 1.67x |
|
|
209
209
|
|
|
210
210
|
Reading these numbers honestly:
|
|
211
211
|
|
|
212
212
|
- **gzip** and **zstd** are faster per core ([zlib-rs](https://github.com/trifectatechfoundation/zlib-rs), ~2.4x faster per core than node's bundled zlib in our measurements; libzstd) *and* use every core, while `node:zlib` is capped at `UV_THREADPOOL_SIZE` (default 4) threads. The two >16 MiB bundles temper the headline numbers: neither algorithm has a sectioned mode, so each giant file occupies a single thread on both sides and that tail runs at the per-core ratio rather than the thread-count ratio.
|
|
213
213
|
- **brotli at quality 11** is the bound on the combined number: the Rust `brotli` crate is at per-core parity with node's C brotli (we measured a 1.01 single-thread ratio), so the speedup is parallelism — every core against `UV_THREADPOOL_SIZE` threads across the many small files, plus the sectioned worker pool (4 x 4 MiB sections) on the >16 MiB bundles that `node:zlib` has to compress one thread per file.
|
|
214
|
-
- The speedup grows with core count and shrinks if you raise `UV_THREADPOOL_SIZE` for the JS side — the benchmark prints both so runs are comparable.
|
|
214
|
+
- The speedup grows with core count and shrinks if you raise `UV_THREADPOOL_SIZE` for the JS side — the benchmark prints both so runs are comparable. The 10-core M1 Pro these tables previously covered landed around 2.4x on the combined scenario; the 18-core M5 Pro reaches 3.3–3.6x against the same 4-thread JS side.
|
|
215
|
+
- The two tables above are single runs of each binding, so the small differences *between* them are run-to-run noise, not a PGO effect — see [PGO / BOLT builds](#pgo--bolt-builds) for an interleaved median comparison of the same two binaries.
|
|
215
216
|
|
|
216
217
|
### PGO / BOLT builds
|
|
217
218
|
|
|
@@ -231,7 +232,7 @@ Reading these numbers honestly:
|
|
|
231
232
|
| baseline | plain `--release` (fat LTO, `codegen-units = 1`) |
|
|
232
233
|
| pgo / pgo+bolt | same flags plus `-Cprofile-use` (and BOLT layout on Linux) |
|
|
233
234
|
|
|
234
|
-
Expect modest gains: the baseline already ships fat LTO with `codegen-units = 1`, so PGO
|
|
235
|
+
Expect modest gains at best: the baseline already ships fat LTO with `codegen-units = 1`, so there is little left for PGO to find. On an M5 Pro the interleaved medians come out at parity (0.98x–1.02x across the compression-heavy scenarios); an earlier M1 Pro run measured ~1.1x on brotli quality 11. Treat single-digit-percent deltas in either direction — and every sub-second scenario — as measurement noise rather than a real speedup or regression.
|
|
235
236
|
|
|
236
237
|
The release workflow builds every published binary with PGO. Cross-compiled targets run the training workload through an emulation layer — x64 Node under Rosetta 2 for `x86_64-apple-darwin`, an arm64 Node container under QEMU for `aarch64-unknown-linux-gnu`, and an Alpine container for musl — so each target trains on its own instrumented binding.
|
|
237
238
|
|
package/index.js
ADDED
|
@@ -0,0 +1,703 @@
|
|
|
1
|
+
// prettier-ignore
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
/* auto-generated by NAPI-RS */
|
|
5
|
+
|
|
6
|
+
const { readFileSync } = require('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 (process.report && 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('./rolldown-compression.android-arm64.node')
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadErrors.push(e)
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const binding = require('@medicomind/rolldown-compression-android-arm64')
|
|
79
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-android-arm64/package.json').version
|
|
80
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.android-arm-eabi.node')
|
|
90
|
+
} catch (e) {
|
|
91
|
+
loadErrors.push(e)
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const binding = require('@medicomind/rolldown-compression-android-arm-eabi')
|
|
95
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-android-arm-eabi/package.json').version
|
|
96
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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 && process.config.variables && process.config.variables.shlib_suffix === 'dll.a') || (process.config && process.config.variables && process.config.variables.node_target_type === 'shared_library')) {
|
|
109
|
+
try {
|
|
110
|
+
return require('./rolldown-compression.win32-x64-gnu.node')
|
|
111
|
+
} catch (e) {
|
|
112
|
+
loadErrors.push(e)
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const binding = require('@medicomind/rolldown-compression-win32-x64-gnu')
|
|
116
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-win32-x64-gnu/package.json').version
|
|
117
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.win32-x64-msvc.node')
|
|
127
|
+
} catch (e) {
|
|
128
|
+
loadErrors.push(e)
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const binding = require('@medicomind/rolldown-compression-win32-x64-msvc')
|
|
132
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-win32-x64-msvc/package.json').version
|
|
133
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.win32-ia32-msvc.node')
|
|
144
|
+
} catch (e) {
|
|
145
|
+
loadErrors.push(e)
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const binding = require('@medicomind/rolldown-compression-win32-ia32-msvc')
|
|
149
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-win32-ia32-msvc/package.json').version
|
|
150
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.win32-arm64-msvc.node')
|
|
160
|
+
} catch (e) {
|
|
161
|
+
loadErrors.push(e)
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const binding = require('@medicomind/rolldown-compression-win32-arm64-msvc')
|
|
165
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-win32-arm64-msvc/package.json').version
|
|
166
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.darwin-universal.node')
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadErrors.push(e)
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const binding = require('@medicomind/rolldown-compression-darwin-universal')
|
|
184
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-darwin-universal/package.json').version
|
|
185
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.darwin-x64.node')
|
|
195
|
+
} catch (e) {
|
|
196
|
+
loadErrors.push(e)
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const binding = require('@medicomind/rolldown-compression-darwin-x64')
|
|
200
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-darwin-x64/package.json').version
|
|
201
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.darwin-arm64.node')
|
|
211
|
+
} catch (e) {
|
|
212
|
+
loadErrors.push(e)
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const binding = require('@medicomind/rolldown-compression-darwin-arm64')
|
|
216
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-darwin-arm64/package.json').version
|
|
217
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.freebsd-x64.node')
|
|
231
|
+
} catch (e) {
|
|
232
|
+
loadErrors.push(e)
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
const binding = require('@medicomind/rolldown-compression-freebsd-x64')
|
|
236
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-freebsd-x64/package.json').version
|
|
237
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.freebsd-arm64.node')
|
|
247
|
+
} catch (e) {
|
|
248
|
+
loadErrors.push(e)
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const binding = require('@medicomind/rolldown-compression-freebsd-arm64')
|
|
252
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-freebsd-arm64/package.json').version
|
|
253
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-x64-musl.node')
|
|
268
|
+
} catch (e) {
|
|
269
|
+
loadErrors.push(e)
|
|
270
|
+
}
|
|
271
|
+
try {
|
|
272
|
+
const binding = require('@medicomind/rolldown-compression-linux-x64-musl')
|
|
273
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-x64-musl/package.json').version
|
|
274
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-x64-gnu.node')
|
|
284
|
+
} catch (e) {
|
|
285
|
+
loadErrors.push(e)
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
const binding = require('@medicomind/rolldown-compression-linux-x64-gnu')
|
|
289
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-x64-gnu/package.json').version
|
|
290
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-arm64-musl.node')
|
|
302
|
+
} catch (e) {
|
|
303
|
+
loadErrors.push(e)
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const binding = require('@medicomind/rolldown-compression-linux-arm64-musl')
|
|
307
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-arm64-musl/package.json').version
|
|
308
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-arm64-gnu.node')
|
|
318
|
+
} catch (e) {
|
|
319
|
+
loadErrors.push(e)
|
|
320
|
+
}
|
|
321
|
+
try {
|
|
322
|
+
const binding = require('@medicomind/rolldown-compression-linux-arm64-gnu')
|
|
323
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-arm64-gnu/package.json').version
|
|
324
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-arm-musleabihf.node')
|
|
336
|
+
} catch (e) {
|
|
337
|
+
loadErrors.push(e)
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const binding = require('@medicomind/rolldown-compression-linux-arm-musleabihf')
|
|
341
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-arm-musleabihf/package.json').version
|
|
342
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-arm-gnueabihf.node')
|
|
352
|
+
} catch (e) {
|
|
353
|
+
loadErrors.push(e)
|
|
354
|
+
}
|
|
355
|
+
try {
|
|
356
|
+
const binding = require('@medicomind/rolldown-compression-linux-arm-gnueabihf')
|
|
357
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-arm-gnueabihf/package.json').version
|
|
358
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-loong64-musl.node')
|
|
370
|
+
} catch (e) {
|
|
371
|
+
loadErrors.push(e)
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const binding = require('@medicomind/rolldown-compression-linux-loong64-musl')
|
|
375
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-loong64-musl/package.json').version
|
|
376
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-loong64-gnu.node')
|
|
386
|
+
} catch (e) {
|
|
387
|
+
loadErrors.push(e)
|
|
388
|
+
}
|
|
389
|
+
try {
|
|
390
|
+
const binding = require('@medicomind/rolldown-compression-linux-loong64-gnu')
|
|
391
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-loong64-gnu/package.json').version
|
|
392
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-riscv64-musl.node')
|
|
404
|
+
} catch (e) {
|
|
405
|
+
loadErrors.push(e)
|
|
406
|
+
}
|
|
407
|
+
try {
|
|
408
|
+
const binding = require('@medicomind/rolldown-compression-linux-riscv64-musl')
|
|
409
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-riscv64-musl/package.json').version
|
|
410
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-riscv64-gnu.node')
|
|
420
|
+
} catch (e) {
|
|
421
|
+
loadErrors.push(e)
|
|
422
|
+
}
|
|
423
|
+
try {
|
|
424
|
+
const binding = require('@medicomind/rolldown-compression-linux-riscv64-gnu')
|
|
425
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-riscv64-gnu/package.json').version
|
|
426
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-ppc64-gnu.node')
|
|
437
|
+
} catch (e) {
|
|
438
|
+
loadErrors.push(e)
|
|
439
|
+
}
|
|
440
|
+
try {
|
|
441
|
+
const binding = require('@medicomind/rolldown-compression-linux-ppc64-gnu')
|
|
442
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-ppc64-gnu/package.json').version
|
|
443
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.linux-s390x-gnu.node')
|
|
453
|
+
} catch (e) {
|
|
454
|
+
loadErrors.push(e)
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
const binding = require('@medicomind/rolldown-compression-linux-s390x-gnu')
|
|
458
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-linux-s390x-gnu/package.json').version
|
|
459
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.openharmony-arm64.node')
|
|
473
|
+
} catch (e) {
|
|
474
|
+
loadErrors.push(e)
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const binding = require('@medicomind/rolldown-compression-openharmony-arm64')
|
|
478
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-openharmony-arm64/package.json').version
|
|
479
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.openharmony-x64.node')
|
|
489
|
+
} catch (e) {
|
|
490
|
+
loadErrors.push(e)
|
|
491
|
+
}
|
|
492
|
+
try {
|
|
493
|
+
const binding = require('@medicomind/rolldown-compression-openharmony-x64')
|
|
494
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-openharmony-x64/package.json').version
|
|
495
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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('./rolldown-compression.openharmony-arm.node')
|
|
505
|
+
} catch (e) {
|
|
506
|
+
loadErrors.push(e)
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
const binding = require('@medicomind/rolldown-compression-openharmony-arm')
|
|
510
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-openharmony-arm/package.json').version
|
|
511
|
+
if (bindingPackageVersion !== '2.1.8' && 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 2.1.8 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
|
+
function createLoadErrorChain(errors) {
|
|
527
|
+
return errors.reduce((previous, current) => {
|
|
528
|
+
let message
|
|
529
|
+
try {
|
|
530
|
+
message =
|
|
531
|
+
current && typeof current.message === 'string'
|
|
532
|
+
? current.message
|
|
533
|
+
: String(current)
|
|
534
|
+
} catch {
|
|
535
|
+
message = 'Unknown error'
|
|
536
|
+
}
|
|
537
|
+
const error = new Error(message)
|
|
538
|
+
error.cause = previous
|
|
539
|
+
return error
|
|
540
|
+
}, null)
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
// NAPI_RS_FORCE_WASI is a tri-state flag:
|
|
544
|
+
// unset / any other value → native binding preferred, WASI is only a fallback
|
|
545
|
+
// 'true' → prefer WASI, but retain native as a lazy fallback
|
|
546
|
+
// 'error' → require WASI without initializing a native fallback
|
|
547
|
+
// Treating any non-empty string as truthy (the historical behavior) meant
|
|
548
|
+
// NAPI_RS_FORCE_WASI=false, NAPI_RS_FORCE_WASI=0, etc. inadvertently triggered
|
|
549
|
+
// the WASI path, causing ENOENT for packages shipped without a .wasi.cjs file.
|
|
550
|
+
//
|
|
551
|
+
// NAPI_RS_WASI_FLAVOR selects one exact generated flavor and implies strict
|
|
552
|
+
// WASI loading. It never crosses into another flavor or falls back to native.
|
|
553
|
+
const __napiWasiFlavors = ["wasm32-wasi"]
|
|
554
|
+
const __napiWasiFlavor = process.env.NAPI_RS_WASI_FLAVOR
|
|
555
|
+
const __napiWasiFlavorRequested =
|
|
556
|
+
typeof __napiWasiFlavor === 'string' && __napiWasiFlavor.length > 0
|
|
557
|
+
if (
|
|
558
|
+
__napiWasiFlavorRequested &&
|
|
559
|
+
__napiWasiFlavors.indexOf(__napiWasiFlavor) === -1
|
|
560
|
+
) {
|
|
561
|
+
throw new Error(
|
|
562
|
+
'Unsupported WASI flavor "' +
|
|
563
|
+
__napiWasiFlavor +
|
|
564
|
+
'". Available flavors: ' +
|
|
565
|
+
__napiWasiFlavors.join(', '),
|
|
566
|
+
)
|
|
567
|
+
}
|
|
568
|
+
const forceWasiError = process.env.NAPI_RS_FORCE_WASI === 'error'
|
|
569
|
+
const forceWasi =
|
|
570
|
+
process.env.NAPI_RS_FORCE_WASI === 'true' ||
|
|
571
|
+
forceWasiError ||
|
|
572
|
+
__napiWasiFlavorRequested
|
|
573
|
+
|
|
574
|
+
if (!forceWasi) {
|
|
575
|
+
nativeBinding = requireNative()
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
if (!nativeBinding || forceWasi) {
|
|
579
|
+
let wasiBinding = null
|
|
580
|
+
let wasiBindingLoaded = false
|
|
581
|
+
const wasiBindingErrors = []
|
|
582
|
+
const __napiWasiResolveCandidate = (specifier, isPackage, localArtifacts) => {
|
|
583
|
+
try {
|
|
584
|
+
require.resolve(specifier)
|
|
585
|
+
} catch (resolveError) {
|
|
586
|
+
if (!resolveError || resolveError.code !== 'MODULE_NOT_FOUND') {
|
|
587
|
+
throw resolveError
|
|
588
|
+
}
|
|
589
|
+
if (isPackage) {
|
|
590
|
+
try {
|
|
591
|
+
require.resolve(specifier + '/package.json')
|
|
592
|
+
} catch (packageError) {
|
|
593
|
+
if (packageError && packageError.code === 'MODULE_NOT_FOUND') {
|
|
594
|
+
return resolveError
|
|
595
|
+
}
|
|
596
|
+
// An exports restriction proves the package exists even when its
|
|
597
|
+
// package.json is not public. Preserve the root resolution failure.
|
|
598
|
+
throw resolveError
|
|
599
|
+
}
|
|
600
|
+
// The package exists but its main/export target is broken.
|
|
601
|
+
throw resolveError
|
|
602
|
+
}
|
|
603
|
+
return resolveError
|
|
604
|
+
}
|
|
605
|
+
if (localArtifacts) {
|
|
606
|
+
let artifactError = null
|
|
607
|
+
for (let i = 0; i < localArtifacts.length; i++) {
|
|
608
|
+
try {
|
|
609
|
+
require.resolve(localArtifacts[i])
|
|
610
|
+
return null
|
|
611
|
+
} catch (resolveError) {
|
|
612
|
+
if (!resolveError || resolveError.code !== 'MODULE_NOT_FOUND') {
|
|
613
|
+
throw resolveError
|
|
614
|
+
}
|
|
615
|
+
artifactError = resolveError
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
return artifactError
|
|
619
|
+
}
|
|
620
|
+
return null
|
|
621
|
+
}
|
|
622
|
+
if (!wasiBindingLoaded && (!__napiWasiFlavorRequested || __napiWasiFlavor === "wasm32-wasi")) {
|
|
623
|
+
let candidateError = null
|
|
624
|
+
let candidateFailed = false
|
|
625
|
+
try {
|
|
626
|
+
candidateError = __napiWasiResolveCandidate('./rolldown-compression.wasi.cjs', false, ["./rolldown-compression.wasm32-wasi.debug.wasm","./rolldown-compression.wasm32-wasi.wasm"])
|
|
627
|
+
candidateFailed = candidateError !== null
|
|
628
|
+
if (!candidateFailed) {
|
|
629
|
+
wasiBinding = require('./rolldown-compression.wasi.cjs')
|
|
630
|
+
nativeBinding = wasiBinding
|
|
631
|
+
wasiBindingLoaded = true
|
|
632
|
+
}
|
|
633
|
+
} catch (err) {
|
|
634
|
+
candidateError = err
|
|
635
|
+
candidateFailed = true
|
|
636
|
+
}
|
|
637
|
+
if (candidateFailed) {
|
|
638
|
+
wasiBindingErrors.push(candidateError)
|
|
639
|
+
loadErrors.push(candidateError)
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
if (!wasiBindingLoaded && (!__napiWasiFlavorRequested || __napiWasiFlavor === "wasm32-wasi")) {
|
|
643
|
+
let candidateError = null
|
|
644
|
+
let candidateFailed = false
|
|
645
|
+
try {
|
|
646
|
+
candidateError = __napiWasiResolveCandidate('@medicomind/rolldown-compression-wasm32-wasi', true, undefined)
|
|
647
|
+
candidateFailed = candidateError !== null
|
|
648
|
+
if (!candidateFailed) {
|
|
649
|
+
if (process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
650
|
+
const bindingPackageVersion = require('@medicomind/rolldown-compression-wasm32-wasi/package.json').version
|
|
651
|
+
if (bindingPackageVersion !== '2.1.8') {
|
|
652
|
+
throw new Error(`WASI binding package version mismatch, expected 2.1.8 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
wasiBinding = require('@medicomind/rolldown-compression-wasm32-wasi')
|
|
656
|
+
nativeBinding = wasiBinding
|
|
657
|
+
wasiBindingLoaded = true
|
|
658
|
+
}
|
|
659
|
+
} catch (err) {
|
|
660
|
+
candidateError = err
|
|
661
|
+
candidateFailed = true
|
|
662
|
+
}
|
|
663
|
+
if (candidateFailed) {
|
|
664
|
+
wasiBindingErrors.push(candidateError)
|
|
665
|
+
loadErrors.push(candidateError)
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
if (
|
|
669
|
+
!wasiBindingLoaded &&
|
|
670
|
+
forceWasi &&
|
|
671
|
+
!forceWasiError &&
|
|
672
|
+
!__napiWasiFlavorRequested
|
|
673
|
+
) {
|
|
674
|
+
nativeBinding = requireNative()
|
|
675
|
+
}
|
|
676
|
+
if ((forceWasiError || __napiWasiFlavorRequested) && !wasiBindingLoaded) {
|
|
677
|
+
const error = new Error(
|
|
678
|
+
__napiWasiFlavorRequested
|
|
679
|
+
? 'WASI binding for flavor "' + __napiWasiFlavor + '" not found'
|
|
680
|
+
: 'WASI binding not found and NAPI_RS_FORCE_WASI is set to error',
|
|
681
|
+
)
|
|
682
|
+
error.cause = createLoadErrorChain(wasiBindingErrors)
|
|
683
|
+
throw error
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
if (!nativeBinding) {
|
|
688
|
+
if (loadErrors.length > 0) {
|
|
689
|
+
const error = new Error(
|
|
690
|
+
`Cannot find native binding. ` +
|
|
691
|
+
`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
|
|
692
|
+
'Please try `npm i` again after removing both package-lock.json and node_modules directory.',
|
|
693
|
+
)
|
|
694
|
+
// assign instead of the `new Error(message, { cause })` options form,
|
|
695
|
+
// which Node < 16.9 silently ignores
|
|
696
|
+
error.cause = createLoadErrorChain(loadErrors)
|
|
697
|
+
throw error
|
|
698
|
+
}
|
|
699
|
+
throw new Error(`Failed to load native binding`)
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
module.exports = nativeBinding
|
|
703
|
+
module.exports.compressBuffers = nativeBinding.compressBuffers
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@medicomind/rolldown-compression",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.8",
|
|
4
4
|
"description": "Fast native (Rust) gzip / brotli / zstd compression plugin for Rolldown, powered by napi-rs",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"rolldown",
|
|
@@ -91,18 +91,20 @@
|
|
|
91
91
|
"rolldown": "^1.0.0"
|
|
92
92
|
},
|
|
93
93
|
"optionalDependencies": {
|
|
94
|
-
"@medicomind/rolldown-compression-darwin-arm64": "2.1.
|
|
95
|
-
"@medicomind/rolldown-compression-darwin-x64": "2.1.
|
|
96
|
-
"@medicomind/rolldown-compression-linux-arm64-gnu": "2.1.
|
|
97
|
-
"@medicomind/rolldown-compression-linux-x64-gnu": "2.1.
|
|
98
|
-
"@medicomind/rolldown-compression-linux-x64-musl": "2.1.
|
|
99
|
-
"@medicomind/rolldown-compression-wasm32-wasi": "2.1.
|
|
100
|
-
"@medicomind/rolldown-compression-win32-x64-msvc": "2.1.
|
|
94
|
+
"@medicomind/rolldown-compression-darwin-arm64": "2.1.8",
|
|
95
|
+
"@medicomind/rolldown-compression-darwin-x64": "2.1.8",
|
|
96
|
+
"@medicomind/rolldown-compression-linux-arm64-gnu": "2.1.8",
|
|
97
|
+
"@medicomind/rolldown-compression-linux-x64-gnu": "2.1.8",
|
|
98
|
+
"@medicomind/rolldown-compression-linux-x64-musl": "2.1.8",
|
|
99
|
+
"@medicomind/rolldown-compression-wasm32-wasi": "2.1.8",
|
|
100
|
+
"@medicomind/rolldown-compression-win32-x64-msvc": "2.1.8"
|
|
101
101
|
},
|
|
102
102
|
"devDependencies": {
|
|
103
103
|
"@biomejs/biome": "^2.5.3",
|
|
104
104
|
"@changesets/changelog-github": "^0.7.0",
|
|
105
105
|
"@changesets/cli": "^2.31.0",
|
|
106
|
+
"@emnapi/core": "2.0.0-alpha.3",
|
|
107
|
+
"@emnapi/runtime": "2.0.0-alpha.3",
|
|
106
108
|
"@napi-rs/cli": "^3.7.2",
|
|
107
109
|
"@napi-rs/wasm-runtime": "^1.1.6",
|
|
108
110
|
"@types/node": "^26.1.1",
|