nuclie 1.0.5 → 1.0.7
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/native/README.md +10 -0
- package/native/index.cjs +117 -0
- package/native/index.d.ts +232 -0
- package/native/index.js +594 -0
- package/native/nuclie_native.linux-x64-gnu.node +0 -0
- package/native/package.json +7 -0
- package/package.json +6 -1
package/native/README.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Rust native worker placeholder
|
|
2
|
+
|
|
3
|
+
This folder is a placeholder for a Rust crate that will provide high-performance transforms and analysis.
|
|
4
|
+
|
|
5
|
+
Planned layout:
|
|
6
|
+
- native/worker/Cargo.toml
|
|
7
|
+
- native/worker/src/lib.rs
|
|
8
|
+
- native/bridge/ - Node.js bridge to call the native binary via stdio or FFI
|
|
9
|
+
|
|
10
|
+
For the prototype, native worker will be optional and can be compiled separately.
|
package/native/index.cjs
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// CJS shim for native/index.js — used by Jest to avoid ESM transform issues
|
|
3
|
+
// with __dirname and native require() calls.
|
|
4
|
+
|
|
5
|
+
const path = require('path');
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
|
|
8
|
+
let nativeBinding = null;
|
|
9
|
+
|
|
10
|
+
// Try all known locations for the compiled .node binary
|
|
11
|
+
const candidates = [
|
|
12
|
+
path.join(__dirname, 'nuclie_native.win32-x64-msvc.node'),
|
|
13
|
+
path.join(__dirname, 'nuclie_native.win32-x64-gnu.node'),
|
|
14
|
+
path.join(__dirname, 'nuclie_native.linux-x64-gnu.node'),
|
|
15
|
+
path.join(__dirname, 'nuclie_native.linux-x64-musl.node'),
|
|
16
|
+
path.join(__dirname, 'nuclie_native.darwin-universal.node'),
|
|
17
|
+
path.join(__dirname, 'nuclie_native.darwin-arm64.node'),
|
|
18
|
+
path.join(__dirname, 'nuclie_native.darwin-x64.node'),
|
|
19
|
+
path.join(__dirname, 'nuclie_native.node'),
|
|
20
|
+
path.join(__dirname, '..', 'nuclie_native.node'),
|
|
21
|
+
path.join(__dirname, '..', 'dist', 'nuclie_native.node'),
|
|
22
|
+
path.join(process.cwd(), 'native', 'nuclie_native.win32-x64-msvc.node'),
|
|
23
|
+
path.join(process.cwd(), 'native', 'nuclie_native.linux-x64-gnu.node'),
|
|
24
|
+
path.join(process.cwd(), 'native', 'nuclie_native.darwin-universal.node'),
|
|
25
|
+
path.join(process.cwd(), 'nuclie_native.node'),
|
|
26
|
+
path.join(process.cwd(), 'dist', 'nuclie_native.node'),
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
for (const candidate of candidates) {
|
|
30
|
+
if (fs.existsSync(candidate)) {
|
|
31
|
+
try {
|
|
32
|
+
nativeBinding = require(candidate);
|
|
33
|
+
break;
|
|
34
|
+
} catch (_e) {
|
|
35
|
+
// try next
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// JS fallback stubs — used when native binding is not available (CI without Rust build)
|
|
41
|
+
const stub = {
|
|
42
|
+
BuildCache: class BuildCache {
|
|
43
|
+
constructor() { }
|
|
44
|
+
get(key) { return null; }
|
|
45
|
+
set(key, value) { }
|
|
46
|
+
invalidate(key) { }
|
|
47
|
+
clear() { }
|
|
48
|
+
},
|
|
49
|
+
BuildOrchestrator: class BuildOrchestrator {
|
|
50
|
+
constructor() { }
|
|
51
|
+
async build(config) { return { success: true, modules: [], duration: 0 }; }
|
|
52
|
+
},
|
|
53
|
+
GraphAnalyzer: class GraphAnalyzer {
|
|
54
|
+
constructor() { }
|
|
55
|
+
analyze(graph) { return { cycles: [], order: [] }; }
|
|
56
|
+
},
|
|
57
|
+
NativeWorker: class NativeWorker {
|
|
58
|
+
constructor(threads) { this.threads = threads; }
|
|
59
|
+
async batchTransform(items) {
|
|
60
|
+
return items.map(item => ({ code: item.content || '', map: null }));
|
|
61
|
+
}
|
|
62
|
+
async transform(code, options) { return { code, map: null }; }
|
|
63
|
+
},
|
|
64
|
+
PluginRuntime: class PluginRuntime {
|
|
65
|
+
constructor() { }
|
|
66
|
+
async runPlugin(plugin, context) { return context; }
|
|
67
|
+
},
|
|
68
|
+
BuildStage: { Load: 0, Transform: 1, Optimize: 2, Bundle: 3 },
|
|
69
|
+
batchHash: (items) => items.map(() => 'stub-hash-' + Math.random().toString(36).slice(2)),
|
|
70
|
+
benchmarkGraphAnalysis: () => ({ duration: 0 }),
|
|
71
|
+
benchmarkParallelism: () => ({ duration: 0 }),
|
|
72
|
+
benchmarkTransform: () => ({ duration: 0 }),
|
|
73
|
+
createArtifactKey: (id) => `artifact:${id}`,
|
|
74
|
+
createGraphKey: (id) => `graph:${id}`,
|
|
75
|
+
createInputKey: (id) => `input:${id}`,
|
|
76
|
+
createPlanKey: (id) => `plan:${id}`,
|
|
77
|
+
fastHash: (data) => 'stub-hash-' + Buffer.from(String(data)).toString('hex').slice(0, 8),
|
|
78
|
+
getOptimalParallelism: () => require('os').cpus().length || 4,
|
|
79
|
+
helloRust: () => 'Hello from JS stub!',
|
|
80
|
+
minifySync: (code) => code, // No-op fallback: return code unchanged
|
|
81
|
+
normalizePath: (p) => p.replace(/\\/g, '/'),
|
|
82
|
+
scanImports: (code) => [],
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const binding = nativeBinding || stub;
|
|
86
|
+
|
|
87
|
+
if (!nativeBinding) {
|
|
88
|
+
// Only warn once, not on every import
|
|
89
|
+
if (!global.__nuclie_native_warned) {
|
|
90
|
+
global.__nuclie_native_warned = true;
|
|
91
|
+
process.stderr.write('[nuclie] Native binding not found — using JS fallback stubs. Build/run `npm run build:native` to compile.\n');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
module.exports = binding;
|
|
96
|
+
|
|
97
|
+
// Named exports
|
|
98
|
+
module.exports.BuildCache = binding.BuildCache;
|
|
99
|
+
module.exports.BuildOrchestrator = binding.BuildOrchestrator;
|
|
100
|
+
module.exports.GraphAnalyzer = binding.GraphAnalyzer;
|
|
101
|
+
module.exports.NativeWorker = binding.NativeWorker;
|
|
102
|
+
module.exports.PluginRuntime = binding.PluginRuntime;
|
|
103
|
+
module.exports.batchHash = binding.batchHash;
|
|
104
|
+
module.exports.benchmarkGraphAnalysis = binding.benchmarkGraphAnalysis;
|
|
105
|
+
module.exports.benchmarkParallelism = binding.benchmarkParallelism;
|
|
106
|
+
module.exports.benchmarkTransform = binding.benchmarkTransform;
|
|
107
|
+
module.exports.BuildStage = binding.BuildStage;
|
|
108
|
+
module.exports.createArtifactKey = binding.createArtifactKey;
|
|
109
|
+
module.exports.createGraphKey = binding.createGraphKey;
|
|
110
|
+
module.exports.createInputKey = binding.createInputKey;
|
|
111
|
+
module.exports.createPlanKey = binding.createPlanKey;
|
|
112
|
+
module.exports.fastHash = binding.fastHash;
|
|
113
|
+
module.exports.getOptimalParallelism = binding.getOptimalParallelism;
|
|
114
|
+
module.exports.helloRust = binding.helloRust;
|
|
115
|
+
module.exports.minifySync = binding.minifySync;
|
|
116
|
+
module.exports.normalizePath = binding.normalizePath;
|
|
117
|
+
module.exports.scanImports = binding.scanImports;
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/* auto-generated by NAPI-RS */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/** RocksDB-based build cache */
|
|
4
|
+
export declare class BuildCache {
|
|
5
|
+
/** Create a new build cache at the specified path */
|
|
6
|
+
constructor(cachePath: string)
|
|
7
|
+
/** Get a value from the cache */
|
|
8
|
+
get(key: string): string | null
|
|
9
|
+
/** Set a value in the cache */
|
|
10
|
+
set(key: string, value: string): void
|
|
11
|
+
/** Delete a value from the cache */
|
|
12
|
+
delete(key: string): void
|
|
13
|
+
/** Check if a key exists in the cache */
|
|
14
|
+
has(key: string): boolean
|
|
15
|
+
/** Batch set multiple key-value pairs */
|
|
16
|
+
batchSet(entries: Record<string, string>): void
|
|
17
|
+
/** Clear all entries for a specific target (dev/prod/lib) */
|
|
18
|
+
clearTarget(target: string): number
|
|
19
|
+
/** Clear all cache entries */
|
|
20
|
+
clearAll(): void
|
|
21
|
+
/** Get cache statistics */
|
|
22
|
+
getStats(): CacheStats
|
|
23
|
+
/** Compact the database to reclaim space */
|
|
24
|
+
compact(): void
|
|
25
|
+
/** Close the cache (cleanup) */
|
|
26
|
+
close(): void
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Tokio-based build orchestrator */
|
|
30
|
+
export declare class BuildOrchestrator {
|
|
31
|
+
/** Create a new orchestrator with specified parallelism */
|
|
32
|
+
constructor(parallelism?: number | undefined | null)
|
|
33
|
+
/** Log a build event */
|
|
34
|
+
logEvent(stage: string, message: string, durationMs?: number | undefined | null): Promise<void>
|
|
35
|
+
/** Get all logged events */
|
|
36
|
+
getEvents(): Promise<Array<BuildEvent>>
|
|
37
|
+
/** Clear all events */
|
|
38
|
+
clearEvents(): Promise<void>
|
|
39
|
+
/** Execute tasks in parallel */
|
|
40
|
+
executeParallel(taskCount: number): Promise<OrchestratorStats>
|
|
41
|
+
/** Process items in parallel using Rayon */
|
|
42
|
+
processParallelSync(items: Array<string>): Array<string>
|
|
43
|
+
/** Generate deterministic stable ID from content */
|
|
44
|
+
generateStableId(content: string, prefix: string): string
|
|
45
|
+
/** Batch generate stable IDs */
|
|
46
|
+
batchGenerateIds(items: Array<string>, prefix: string): Array<string>
|
|
47
|
+
/** Get orchestrator statistics */
|
|
48
|
+
getStats(): Promise<OrchestratorStats>
|
|
49
|
+
/** Get parallelism level */
|
|
50
|
+
get parallelism(): number
|
|
51
|
+
/** Shutdown the orchestrator */
|
|
52
|
+
shutdown(): void
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* High-performance graph analyzer using Integer-based Adjacency List
|
|
57
|
+
* Uses string interning to map Strings <-> usize IDs for O(1) lookups and cache efficiency
|
|
58
|
+
*/
|
|
59
|
+
export declare class GraphAnalyzer {
|
|
60
|
+
/** Create a new graph analyzer */
|
|
61
|
+
constructor()
|
|
62
|
+
/** Add a node with its dependencies */
|
|
63
|
+
addNode(id: string, dependencies: Array<string>): void
|
|
64
|
+
/**
|
|
65
|
+
* Batch add nodes to minimize NAPI bridge overhead
|
|
66
|
+
* Format: ids list, and flat list of dependencies with counts
|
|
67
|
+
* This avoids creating thousands of small arrays
|
|
68
|
+
*/
|
|
69
|
+
addBatch(ids: Array<string>, edges: Array<Array<string>>): void
|
|
70
|
+
/**
|
|
71
|
+
* Detect circular dependencies using Iterative DFS
|
|
72
|
+
* Uses explicit stack to avoid stack overflow on deep graphs (unlike JS recursion)
|
|
73
|
+
*/
|
|
74
|
+
detectCycles(): Array<CircularDependency>
|
|
75
|
+
/** Find orphaned nodes (not reachable from any entry point) */
|
|
76
|
+
findOrphanedNodes(entryPoints: Array<string>): Array<string>
|
|
77
|
+
/**
|
|
78
|
+
* Native Tree Shaking: Get all reachable nodes from entry points
|
|
79
|
+
* This is the "marked" set for building the final bundle
|
|
80
|
+
*/
|
|
81
|
+
getReachableNodes(entryPoints: Array<string>): Array<string>
|
|
82
|
+
/** Perform complete graph analysis */
|
|
83
|
+
analyze(entryPoints: Array<string>): GraphAnalysisResult
|
|
84
|
+
/** Topological sort using Kahn's algorithm */
|
|
85
|
+
topologicalSort(): Array<string> | null
|
|
86
|
+
/** Get node count */
|
|
87
|
+
nodeCount(): number
|
|
88
|
+
/** Get edge count */
|
|
89
|
+
edgeCount(): number
|
|
90
|
+
/** Clear all nodes */
|
|
91
|
+
clear(): void
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** High-performance native worker for plugin transformations */
|
|
95
|
+
export declare class NativeWorker {
|
|
96
|
+
/** Create a new native worker with specified pool size */
|
|
97
|
+
constructor(poolSize?: number | undefined | null)
|
|
98
|
+
/** Transform code using native SWC, LightningCSS, or Vue engine */
|
|
99
|
+
transformSync(config: TransformConfig): TransformResult
|
|
100
|
+
/** Parallel Transform: Process multiple modules across all cores */
|
|
101
|
+
batchTransform(items: Array<TransformConfig>): Promise<Array<TransformResult>>
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export declare class PluginRuntime {
|
|
105
|
+
constructor()
|
|
106
|
+
verifyPlugin(wasmBytes: Uint8Array): boolean
|
|
107
|
+
execute(wasmBytes: Uint8Array, input: string, timeoutMs: number): string
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Batch hash multiple files (parallel processing in future) */
|
|
111
|
+
export declare function batchHash(contents: Array<string>): Array<string>
|
|
112
|
+
|
|
113
|
+
/** Benchmark graph operations */
|
|
114
|
+
export declare function benchmarkGraphAnalysis(nodeCount: number, edgeDensity: number): number
|
|
115
|
+
|
|
116
|
+
/** Benchmark parallel vs sequential processing */
|
|
117
|
+
export declare function benchmarkParallelism(itemCount: number): Record<string, number>
|
|
118
|
+
|
|
119
|
+
/** Benchmark function to compare performance */
|
|
120
|
+
export declare function benchmarkTransform(code: string, iterations: number): number
|
|
121
|
+
|
|
122
|
+
/** Build event for structured logging */
|
|
123
|
+
export interface BuildEvent {
|
|
124
|
+
stage: string
|
|
125
|
+
message: string
|
|
126
|
+
timestamp: number
|
|
127
|
+
durationMs?: number
|
|
128
|
+
metadata?: string
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** Build stage for orchestration */
|
|
132
|
+
export declare const enum BuildStage {
|
|
133
|
+
Init = 'Init',
|
|
134
|
+
Graph = 'Graph',
|
|
135
|
+
Plan = 'Plan',
|
|
136
|
+
DeterminismCheck = 'DeterminismCheck',
|
|
137
|
+
Execute = 'Execute',
|
|
138
|
+
Emit = 'Emit'
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/** Cache statistics */
|
|
142
|
+
export interface CacheStats {
|
|
143
|
+
totalEntries: number
|
|
144
|
+
hits: number
|
|
145
|
+
misses: number
|
|
146
|
+
hitRate: number
|
|
147
|
+
sizeBytes: number
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export interface CircularDependency {
|
|
151
|
+
cycle: Array<string>
|
|
152
|
+
entryPoint: string
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/** Create cache key for artifact */
|
|
156
|
+
export declare function createArtifactKey(artifactId: string, target: string): string
|
|
157
|
+
|
|
158
|
+
/** Create cache key for graph hash */
|
|
159
|
+
export declare function createGraphKey(graphHash: string): string
|
|
160
|
+
|
|
161
|
+
/** Create cache key for input fingerprint */
|
|
162
|
+
export declare function createInputKey(filePath: string, contentHash: string): string
|
|
163
|
+
|
|
164
|
+
/** Create cache key for plan hash */
|
|
165
|
+
export declare function createPlanKey(planHash: string, target: string): string
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Fast content hashing for cache keys
|
|
169
|
+
* Uses XXH3 (ultra-fast non-cryptographic hash)
|
|
170
|
+
*/
|
|
171
|
+
export declare function fastHash(content: string): string
|
|
172
|
+
|
|
173
|
+
/** Helper function to get optimal parallelism */
|
|
174
|
+
export declare function getOptimalParallelism(): number
|
|
175
|
+
|
|
176
|
+
export interface GraphAnalysisResult {
|
|
177
|
+
hasCycles: boolean
|
|
178
|
+
cycles: Array<CircularDependency>
|
|
179
|
+
orphanedNodes: Array<string>
|
|
180
|
+
entryPoints: Array<string>
|
|
181
|
+
totalNodes: number
|
|
182
|
+
totalEdges: number
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Fast graph operations for dependency analysis
|
|
187
|
+
*
|
|
188
|
+
* Performance-critical operations implemented in Rust:
|
|
189
|
+
* - Circular dependency detection (DFS-based, O(V+E))
|
|
190
|
+
* - Topological sorting (Kahn's algorithm, O(V+E))
|
|
191
|
+
* - Reachability analysis (BFS, O(V+E))
|
|
192
|
+
* - Tree shaking (mark-and-sweep, O(V+E))
|
|
193
|
+
*/
|
|
194
|
+
export interface GraphNode {
|
|
195
|
+
id: string
|
|
196
|
+
dependencies: Array<string>
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/** Simple function to test native bindings */
|
|
200
|
+
export declare function helloRust(): string
|
|
201
|
+
|
|
202
|
+
/** Global bundle minification pass */
|
|
203
|
+
export declare function minifySync(code: string): string
|
|
204
|
+
|
|
205
|
+
/** Fast string operations for module resolution */
|
|
206
|
+
export declare function normalizePath(path: string): string
|
|
207
|
+
|
|
208
|
+
/** Orchestrator statistics */
|
|
209
|
+
export interface OrchestratorStats {
|
|
210
|
+
totalTasks: number
|
|
211
|
+
completedTasks: number
|
|
212
|
+
failedTasks: number
|
|
213
|
+
totalDurationMs: number
|
|
214
|
+
parallelism: number
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Natively scan for imports/requires (Phase 4.2 Hot Path)
|
|
219
|
+
* This is significantly faster than JS-based regex or full AST parsing
|
|
220
|
+
*/
|
|
221
|
+
export declare function scanImports(code: string): Array<string>
|
|
222
|
+
|
|
223
|
+
export interface TransformConfig {
|
|
224
|
+
path: string
|
|
225
|
+
content: string
|
|
226
|
+
loader: string
|
|
227
|
+
minify?: boolean
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export interface TransformResult {
|
|
231
|
+
code: string
|
|
232
|
+
}
|
package/native/index.js
ADDED
|
@@ -0,0 +1,594 @@
|
|
|
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('./nuclie_native.android-arm64.node')
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadErrors.push(e)
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const binding = require('nuclie-native-android-arm64')
|
|
79
|
+
const bindingPackageVersion = require('nuclie-native-android-arm64/package.json').version
|
|
80
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.android-arm-eabi.node')
|
|
90
|
+
} catch (e) {
|
|
91
|
+
loadErrors.push(e)
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const binding = require('nuclie-native-android-arm-eabi')
|
|
95
|
+
const bindingPackageVersion = require('nuclie-native-android-arm-eabi/package.json').version
|
|
96
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.win32-x64-gnu.node')
|
|
111
|
+
} catch (e) {
|
|
112
|
+
loadErrors.push(e)
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const binding = require('nuclie-native-win32-x64-gnu')
|
|
116
|
+
const bindingPackageVersion = require('nuclie-native-win32-x64-gnu/package.json').version
|
|
117
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.win32-x64-msvc.node')
|
|
127
|
+
} catch (e) {
|
|
128
|
+
loadErrors.push(e)
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const binding = require('nuclie-native-win32-x64-msvc')
|
|
132
|
+
const bindingPackageVersion = require('nuclie-native-win32-x64-msvc/package.json').version
|
|
133
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.win32-ia32-msvc.node')
|
|
144
|
+
} catch (e) {
|
|
145
|
+
loadErrors.push(e)
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const binding = require('nuclie-native-win32-ia32-msvc')
|
|
149
|
+
const bindingPackageVersion = require('nuclie-native-win32-ia32-msvc/package.json').version
|
|
150
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.win32-arm64-msvc.node')
|
|
160
|
+
} catch (e) {
|
|
161
|
+
loadErrors.push(e)
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const binding = require('nuclie-native-win32-arm64-msvc')
|
|
165
|
+
const bindingPackageVersion = require('nuclie-native-win32-arm64-msvc/package.json').version
|
|
166
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.darwin-universal.node')
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadErrors.push(e)
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const binding = require('nuclie-native-darwin-universal')
|
|
184
|
+
const bindingPackageVersion = require('nuclie-native-darwin-universal/package.json').version
|
|
185
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.darwin-x64.node')
|
|
195
|
+
} catch (e) {
|
|
196
|
+
loadErrors.push(e)
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const binding = require('nuclie-native-darwin-x64')
|
|
200
|
+
const bindingPackageVersion = require('nuclie-native-darwin-x64/package.json').version
|
|
201
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.darwin-arm64.node')
|
|
211
|
+
} catch (e) {
|
|
212
|
+
loadErrors.push(e)
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const binding = require('nuclie-native-darwin-arm64')
|
|
216
|
+
const bindingPackageVersion = require('nuclie-native-darwin-arm64/package.json').version
|
|
217
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.freebsd-x64.node')
|
|
231
|
+
} catch (e) {
|
|
232
|
+
loadErrors.push(e)
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
const binding = require('nuclie-native-freebsd-x64')
|
|
236
|
+
const bindingPackageVersion = require('nuclie-native-freebsd-x64/package.json').version
|
|
237
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.freebsd-arm64.node')
|
|
247
|
+
} catch (e) {
|
|
248
|
+
loadErrors.push(e)
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const binding = require('nuclie-native-freebsd-arm64')
|
|
252
|
+
const bindingPackageVersion = require('nuclie-native-freebsd-arm64/package.json').version
|
|
253
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-x64-musl.node')
|
|
268
|
+
} catch (e) {
|
|
269
|
+
loadErrors.push(e)
|
|
270
|
+
}
|
|
271
|
+
try {
|
|
272
|
+
const binding = require('nuclie-native-linux-x64-musl')
|
|
273
|
+
const bindingPackageVersion = require('nuclie-native-linux-x64-musl/package.json').version
|
|
274
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-x64-gnu.node')
|
|
284
|
+
} catch (e) {
|
|
285
|
+
loadErrors.push(e)
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
const binding = require('nuclie-native-linux-x64-gnu')
|
|
289
|
+
const bindingPackageVersion = require('nuclie-native-linux-x64-gnu/package.json').version
|
|
290
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-arm64-musl.node')
|
|
302
|
+
} catch (e) {
|
|
303
|
+
loadErrors.push(e)
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const binding = require('nuclie-native-linux-arm64-musl')
|
|
307
|
+
const bindingPackageVersion = require('nuclie-native-linux-arm64-musl/package.json').version
|
|
308
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-arm64-gnu.node')
|
|
318
|
+
} catch (e) {
|
|
319
|
+
loadErrors.push(e)
|
|
320
|
+
}
|
|
321
|
+
try {
|
|
322
|
+
const binding = require('nuclie-native-linux-arm64-gnu')
|
|
323
|
+
const bindingPackageVersion = require('nuclie-native-linux-arm64-gnu/package.json').version
|
|
324
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-arm-musleabihf.node')
|
|
336
|
+
} catch (e) {
|
|
337
|
+
loadErrors.push(e)
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const binding = require('nuclie-native-linux-arm-musleabihf')
|
|
341
|
+
const bindingPackageVersion = require('nuclie-native-linux-arm-musleabihf/package.json').version
|
|
342
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-arm-gnueabihf.node')
|
|
352
|
+
} catch (e) {
|
|
353
|
+
loadErrors.push(e)
|
|
354
|
+
}
|
|
355
|
+
try {
|
|
356
|
+
const binding = require('nuclie-native-linux-arm-gnueabihf')
|
|
357
|
+
const bindingPackageVersion = require('nuclie-native-linux-arm-gnueabihf/package.json').version
|
|
358
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-loong64-musl.node')
|
|
370
|
+
} catch (e) {
|
|
371
|
+
loadErrors.push(e)
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const binding = require('nuclie-native-linux-loong64-musl')
|
|
375
|
+
const bindingPackageVersion = require('nuclie-native-linux-loong64-musl/package.json').version
|
|
376
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-loong64-gnu.node')
|
|
386
|
+
} catch (e) {
|
|
387
|
+
loadErrors.push(e)
|
|
388
|
+
}
|
|
389
|
+
try {
|
|
390
|
+
const binding = require('nuclie-native-linux-loong64-gnu')
|
|
391
|
+
const bindingPackageVersion = require('nuclie-native-linux-loong64-gnu/package.json').version
|
|
392
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-riscv64-musl.node')
|
|
404
|
+
} catch (e) {
|
|
405
|
+
loadErrors.push(e)
|
|
406
|
+
}
|
|
407
|
+
try {
|
|
408
|
+
const binding = require('nuclie-native-linux-riscv64-musl')
|
|
409
|
+
const bindingPackageVersion = require('nuclie-native-linux-riscv64-musl/package.json').version
|
|
410
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-riscv64-gnu.node')
|
|
420
|
+
} catch (e) {
|
|
421
|
+
loadErrors.push(e)
|
|
422
|
+
}
|
|
423
|
+
try {
|
|
424
|
+
const binding = require('nuclie-native-linux-riscv64-gnu')
|
|
425
|
+
const bindingPackageVersion = require('nuclie-native-linux-riscv64-gnu/package.json').version
|
|
426
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-ppc64-gnu.node')
|
|
437
|
+
} catch (e) {
|
|
438
|
+
loadErrors.push(e)
|
|
439
|
+
}
|
|
440
|
+
try {
|
|
441
|
+
const binding = require('nuclie-native-linux-ppc64-gnu')
|
|
442
|
+
const bindingPackageVersion = require('nuclie-native-linux-ppc64-gnu/package.json').version
|
|
443
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.linux-s390x-gnu.node')
|
|
453
|
+
} catch (e) {
|
|
454
|
+
loadErrors.push(e)
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
const binding = require('nuclie-native-linux-s390x-gnu')
|
|
458
|
+
const bindingPackageVersion = require('nuclie-native-linux-s390x-gnu/package.json').version
|
|
459
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.openharmony-arm64.node')
|
|
473
|
+
} catch (e) {
|
|
474
|
+
loadErrors.push(e)
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const binding = require('nuclie-native-openharmony-arm64')
|
|
478
|
+
const bindingPackageVersion = require('nuclie-native-openharmony-arm64/package.json').version
|
|
479
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.openharmony-x64.node')
|
|
489
|
+
} catch (e) {
|
|
490
|
+
loadErrors.push(e)
|
|
491
|
+
}
|
|
492
|
+
try {
|
|
493
|
+
const binding = require('nuclie-native-openharmony-x64')
|
|
494
|
+
const bindingPackageVersion = require('nuclie-native-openharmony-x64/package.json').version
|
|
495
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.openharmony-arm.node')
|
|
505
|
+
} catch (e) {
|
|
506
|
+
loadErrors.push(e)
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
const binding = require('nuclie-native-openharmony-arm')
|
|
510
|
+
const bindingPackageVersion = require('nuclie-native-openharmony-arm/package.json').version
|
|
511
|
+
if (bindingPackageVersion !== '0.1.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 0.1.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('./nuclie_native.wasi.cjs')
|
|
533
|
+
nativeBinding = wasiBinding
|
|
534
|
+
} catch (err) {
|
|
535
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
536
|
+
wasiBindingError = err
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
if (!nativeBinding) {
|
|
540
|
+
try {
|
|
541
|
+
wasiBinding = require('nuclie-native-wasm32-wasi')
|
|
542
|
+
nativeBinding = wasiBinding
|
|
543
|
+
} catch (err) {
|
|
544
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
545
|
+
wasiBindingError.cause = err
|
|
546
|
+
loadErrors.push(err)
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {
|
|
551
|
+
const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')
|
|
552
|
+
error.cause = wasiBindingError
|
|
553
|
+
throw error
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
if (!nativeBinding) {
|
|
558
|
+
if (loadErrors.length > 0) {
|
|
559
|
+
throw new Error(
|
|
560
|
+
`Cannot find native binding. ` +
|
|
561
|
+
`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
|
|
562
|
+
'Please try `npm i` again after removing both package-lock.json and node_modules directory.',
|
|
563
|
+
{
|
|
564
|
+
cause: loadErrors.reduce((err, cur) => {
|
|
565
|
+
cur.cause = err
|
|
566
|
+
return cur
|
|
567
|
+
}),
|
|
568
|
+
},
|
|
569
|
+
)
|
|
570
|
+
}
|
|
571
|
+
throw new Error(`Failed to load native binding`)
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
module.exports = nativeBinding
|
|
575
|
+
module.exports.BuildCache = nativeBinding.BuildCache
|
|
576
|
+
module.exports.BuildOrchestrator = nativeBinding.BuildOrchestrator
|
|
577
|
+
module.exports.GraphAnalyzer = nativeBinding.GraphAnalyzer
|
|
578
|
+
module.exports.NativeWorker = nativeBinding.NativeWorker
|
|
579
|
+
module.exports.PluginRuntime = nativeBinding.PluginRuntime
|
|
580
|
+
module.exports.batchHash = nativeBinding.batchHash
|
|
581
|
+
module.exports.benchmarkGraphAnalysis = nativeBinding.benchmarkGraphAnalysis
|
|
582
|
+
module.exports.benchmarkParallelism = nativeBinding.benchmarkParallelism
|
|
583
|
+
module.exports.benchmarkTransform = nativeBinding.benchmarkTransform
|
|
584
|
+
module.exports.BuildStage = nativeBinding.BuildStage
|
|
585
|
+
module.exports.createArtifactKey = nativeBinding.createArtifactKey
|
|
586
|
+
module.exports.createGraphKey = nativeBinding.createGraphKey
|
|
587
|
+
module.exports.createInputKey = nativeBinding.createInputKey
|
|
588
|
+
module.exports.createPlanKey = nativeBinding.createPlanKey
|
|
589
|
+
module.exports.fastHash = nativeBinding.fastHash
|
|
590
|
+
module.exports.getOptimalParallelism = nativeBinding.getOptimalParallelism
|
|
591
|
+
module.exports.helloRust = nativeBinding.helloRust
|
|
592
|
+
module.exports.minifySync = nativeBinding.minifySync
|
|
593
|
+
module.exports.normalizePath = nativeBinding.normalizePath
|
|
594
|
+
module.exports.scanImports = nativeBinding.scanImports
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuclie",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "⚡ Fast build tool with HMR, source maps, tree shaking, and module federation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"dist",
|
|
22
|
+
"native/*.js",
|
|
23
|
+
"native/*.cjs",
|
|
24
|
+
"native/*.d.ts",
|
|
25
|
+
"native/*.node",
|
|
26
|
+
"native/package.json",
|
|
22
27
|
"README.md",
|
|
23
28
|
"LICENSE"
|
|
24
29
|
],
|