@vibecook/truffle-native 0.1.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/index.d.ts +312 -0
- package/index.js +582 -0
- package/package.json +75 -0
- package/truffle.darwin-arm64.node +0 -0
package/index.d.ts
ADDED
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/* auto-generated by NAPI-RS */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* NapiFileTransferAdapter - Node.js wrapper for file transfer signaling.
|
|
5
|
+
*
|
|
6
|
+
* Handles file transfer offer/accept/reject/cancel via the mesh message bus.
|
|
7
|
+
* Progress events use the broadcast channel (drops allowed for lag recovery).
|
|
8
|
+
*/
|
|
9
|
+
export declare class NapiFileTransferAdapter {
|
|
10
|
+
/**
|
|
11
|
+
* Create a new FileTransferAdapter.
|
|
12
|
+
*
|
|
13
|
+
* Sets up the underlying FileTransferManager and adapter with default TCP dial.
|
|
14
|
+
*/
|
|
15
|
+
constructor(config: NapiFileTransferAdapterConfig)
|
|
16
|
+
/**
|
|
17
|
+
* Initiate sending a file to a target device.
|
|
18
|
+
* Returns the transfer ID.
|
|
19
|
+
*/
|
|
20
|
+
sendFile(targetDeviceId: string, filePath: string): Promise<string>
|
|
21
|
+
/** Accept an incoming file transfer offer. */
|
|
22
|
+
acceptTransfer(offer: NapiFileTransferOffer, savePath?: string | undefined | null): Promise<void>
|
|
23
|
+
/** Reject an incoming file transfer offer. */
|
|
24
|
+
rejectTransfer(offer: NapiFileTransferOffer, reason: string): Promise<void>
|
|
25
|
+
/** Cancel an active transfer. */
|
|
26
|
+
cancelTransfer(transferId: string): Promise<void>
|
|
27
|
+
/** Get all tracked transfers. */
|
|
28
|
+
getTransfers(): Promise<Array<NapiAdapterTransferInfo>>
|
|
29
|
+
/**
|
|
30
|
+
* Handle an incoming message from the mesh bus.
|
|
31
|
+
* Call this when a file-transfer namespace message arrives.
|
|
32
|
+
*/
|
|
33
|
+
handleBusMessage(msgType: string, payload: any): Promise<void>
|
|
34
|
+
/**
|
|
35
|
+
* Subscribe to adapter events (offers, progress, completed, failed, cancelled).
|
|
36
|
+
*
|
|
37
|
+
* Only one subscriber allowed. Progress events may be dropped if the JS
|
|
38
|
+
* handler is slow (broadcast channel). Critical events are never dropped.
|
|
39
|
+
*/
|
|
40
|
+
onEvent(callback: (err: null | Error, event: NapiFileTransferEvent) => void): void
|
|
41
|
+
/**
|
|
42
|
+
* Subscribe to outgoing bus messages.
|
|
43
|
+
*
|
|
44
|
+
* The adapter generates outgoing messages (OFFER, ACCEPT, REJECT, CANCEL)
|
|
45
|
+
* that must be sent via the mesh message bus. This callback delivers them
|
|
46
|
+
* so the JS layer can relay them.
|
|
47
|
+
*/
|
|
48
|
+
onBusMessage(callback: (err: null | Error, message: NapiBusMessage) => void): void
|
|
49
|
+
/**
|
|
50
|
+
* Start forwarding manager events to the adapter.
|
|
51
|
+
*
|
|
52
|
+
* The FileTransferManager emits events (progress, complete, error) that
|
|
53
|
+
* the adapter needs to process. Call this once after construction.
|
|
54
|
+
*/
|
|
55
|
+
startManagerEvents(): void
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* NapiMeshNode - Node.js wrapper for truffle-core MeshNode.
|
|
60
|
+
*
|
|
61
|
+
* SAFETY: No panics in any method. All errors returned via napi::Result.
|
|
62
|
+
* Event delivery uses ThreadsafeFunction with Blocking mode.
|
|
63
|
+
*/
|
|
64
|
+
export declare class NapiMeshNode {
|
|
65
|
+
/**
|
|
66
|
+
* Create a new MeshNode.
|
|
67
|
+
*
|
|
68
|
+
* The `config` parameter matches the TypeScript `MeshNodeConfig` interface.
|
|
69
|
+
*/
|
|
70
|
+
constructor(config: NapiMeshNodeConfig)
|
|
71
|
+
/** Start the mesh node. */
|
|
72
|
+
start(): Promise<void>
|
|
73
|
+
/** Stop the mesh node. */
|
|
74
|
+
stop(): Promise<void>
|
|
75
|
+
/** Check if the node is running. */
|
|
76
|
+
isRunning(): Promise<boolean>
|
|
77
|
+
/** Get the local device info. */
|
|
78
|
+
localDevice(): Promise<NapiBaseDevice>
|
|
79
|
+
/** Get the local device ID. */
|
|
80
|
+
deviceId(): Promise<string>
|
|
81
|
+
/** Get all known devices. */
|
|
82
|
+
devices(): Promise<Array<NapiBaseDevice>>
|
|
83
|
+
/** Get a device by ID. */
|
|
84
|
+
deviceById(id: string): Promise<NapiBaseDevice | null>
|
|
85
|
+
/** Check if this node is the primary. */
|
|
86
|
+
isPrimary(): Promise<boolean>
|
|
87
|
+
/** Get the current primary device ID. */
|
|
88
|
+
primaryId(): Promise<string | null>
|
|
89
|
+
/** Get the current role as a string ("primary" or "secondary"). */
|
|
90
|
+
role(): Promise<string>
|
|
91
|
+
/**
|
|
92
|
+
* Send a mesh envelope to a specific device.
|
|
93
|
+
* Returns true if the message was sent successfully.
|
|
94
|
+
*/
|
|
95
|
+
sendEnvelope(deviceId: string, namespace: string, msgType: string, payload: any): Promise<boolean>
|
|
96
|
+
/** Broadcast a mesh envelope to all connected devices. */
|
|
97
|
+
broadcastEnvelope(namespace: string, msgType: string, payload: any): Promise<void>
|
|
98
|
+
/** Get the message bus for namespace-based pub/sub. */
|
|
99
|
+
messageBus(): NapiMessageBus
|
|
100
|
+
/** Handle tailnet peers update from the sidecar. */
|
|
101
|
+
handleTailnetPeers(peers: Array<NapiTailnetPeer>): Promise<void>
|
|
102
|
+
/** Set the local device as online with its Tailscale IP. */
|
|
103
|
+
setLocalOnline(tailscaleIp: string, dnsName?: string | undefined | null): Promise<void>
|
|
104
|
+
/**
|
|
105
|
+
* Subscribe to mesh events.
|
|
106
|
+
*
|
|
107
|
+
* Uses ThreadsafeFunction with Blocking mode per RFC 003:
|
|
108
|
+
* - Critical events (device join/leave, election, errors) are never dropped
|
|
109
|
+
* - If the JS event queue is full, Rust waits rather than dropping events
|
|
110
|
+
*
|
|
111
|
+
* The callback receives NapiMeshEvent objects with event_type, device_id, and payload.
|
|
112
|
+
*/
|
|
113
|
+
onEvent(callback: (err: null | Error, event: NapiMeshEvent) => void): void
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* NapiMessageBus - Node.js wrapper for MeshMessageBus.
|
|
118
|
+
*
|
|
119
|
+
* Provides namespace-based pub/sub for application-level messages.
|
|
120
|
+
*/
|
|
121
|
+
export declare class NapiMessageBus {
|
|
122
|
+
/** Get all subscribed namespaces. */
|
|
123
|
+
subscribedNamespaces(): Promise<Array<string>>
|
|
124
|
+
/** Dispose the message bus, clearing all handlers. */
|
|
125
|
+
dispose(): Promise<void>
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* NapiStoreSyncAdapter - Node.js wrapper for cross-device state sync.
|
|
130
|
+
*
|
|
131
|
+
* In the JS layer, stores are registered via the SyncableStore trait.
|
|
132
|
+
* For NAPI, we expose the adapter's lifecycle and message handling.
|
|
133
|
+
*/
|
|
134
|
+
export declare class NapiStoreSyncAdapter {
|
|
135
|
+
/**
|
|
136
|
+
* Create a new StoreSyncAdapter.
|
|
137
|
+
*
|
|
138
|
+
* Note: In the NAPI layer, stores must be registered separately.
|
|
139
|
+
* This constructor creates the adapter with an empty store list.
|
|
140
|
+
*/
|
|
141
|
+
constructor(config: NapiStoreSyncConfig)
|
|
142
|
+
/** Start syncing. */
|
|
143
|
+
start(): Promise<void>
|
|
144
|
+
/** Stop syncing. */
|
|
145
|
+
stop(): Promise<void>
|
|
146
|
+
/** Dispose the adapter. */
|
|
147
|
+
dispose(): Promise<void>
|
|
148
|
+
/** Handle an incoming sync message from a remote device. */
|
|
149
|
+
handleSyncMessage(from: string | undefined | null, msgType: string, payload: any): Promise<void>
|
|
150
|
+
/** Handle a device going offline. */
|
|
151
|
+
handleDeviceOffline(deviceId: string): Promise<void>
|
|
152
|
+
/** Handle a new device being discovered. */
|
|
153
|
+
handleDeviceDiscovered(deviceId: string): Promise<void>
|
|
154
|
+
/** Notify that a local store changed (triggers sync broadcast). */
|
|
155
|
+
handleLocalChanged(storeId: string, slice: NapiDeviceSlice): Promise<void>
|
|
156
|
+
/**
|
|
157
|
+
* Subscribe to outgoing sync messages.
|
|
158
|
+
*
|
|
159
|
+
* The callback receives messages that should be broadcast to all devices
|
|
160
|
+
* via the mesh message bus.
|
|
161
|
+
*/
|
|
162
|
+
onOutgoing(callback: (err: null | Error, message: NapiOutgoingSyncMessage) => void): void
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/** Transfer info returned to JS. */
|
|
166
|
+
export interface NapiAdapterTransferInfo {
|
|
167
|
+
transferId: string
|
|
168
|
+
direction: string
|
|
169
|
+
state: string
|
|
170
|
+
peerDeviceId: string
|
|
171
|
+
fileName: string
|
|
172
|
+
fileSize: number
|
|
173
|
+
bytesTransferred: number
|
|
174
|
+
percent: number
|
|
175
|
+
bytesPerSecond: number
|
|
176
|
+
eta: number
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/** A device in the mesh network (JS representation). */
|
|
180
|
+
export interface NapiBaseDevice {
|
|
181
|
+
id: string
|
|
182
|
+
deviceType: string
|
|
183
|
+
name: string
|
|
184
|
+
tailscaleHostname: string
|
|
185
|
+
tailscaleDnsName?: string
|
|
186
|
+
tailscaleIp?: string
|
|
187
|
+
role?: string
|
|
188
|
+
status: string
|
|
189
|
+
capabilities: Array<string>
|
|
190
|
+
metadata?: any
|
|
191
|
+
lastSeen?: number
|
|
192
|
+
startedAt?: number
|
|
193
|
+
os?: string
|
|
194
|
+
latencyMs?: number
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/** Outgoing bus message (sent from adapter to be relayed via mesh). */
|
|
198
|
+
export interface NapiBusMessage {
|
|
199
|
+
targetDeviceId: string
|
|
200
|
+
messageType: string
|
|
201
|
+
payload: string
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** Device slice (JS representation). */
|
|
205
|
+
export interface NapiDeviceSlice {
|
|
206
|
+
deviceId: string
|
|
207
|
+
data: any
|
|
208
|
+
updatedAt: number
|
|
209
|
+
version: number
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/** File transfer adapter configuration (JS representation). */
|
|
213
|
+
export interface NapiFileTransferAdapterConfig {
|
|
214
|
+
/** Local device ID. */
|
|
215
|
+
deviceId: string
|
|
216
|
+
/** Local address for file transfers (e.g. "host.ts.net:9417"). */
|
|
217
|
+
localAddr: string
|
|
218
|
+
/** Default output directory for received files. */
|
|
219
|
+
outputDir: string
|
|
220
|
+
/** Maximum file size in bytes. */
|
|
221
|
+
maxFileSize?: number
|
|
222
|
+
/** Max concurrent incoming transfers. */
|
|
223
|
+
maxConcurrentRecv?: number
|
|
224
|
+
/** Progress event interval in milliseconds. */
|
|
225
|
+
progressIntervalMs?: number
|
|
226
|
+
/** Progress event byte threshold. */
|
|
227
|
+
progressBytes?: number
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/** File transfer event delivered to JS. */
|
|
231
|
+
export interface NapiFileTransferEvent {
|
|
232
|
+
eventType: string
|
|
233
|
+
transferId?: string
|
|
234
|
+
payload: any
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/** File transfer offer (JS representation, for accept/reject). */
|
|
238
|
+
export interface NapiFileTransferOffer {
|
|
239
|
+
transferId: string
|
|
240
|
+
senderDeviceId: string
|
|
241
|
+
senderAddr: string
|
|
242
|
+
fileName: string
|
|
243
|
+
fileSize: number
|
|
244
|
+
fileSha256: string
|
|
245
|
+
token: string
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/** An incoming mesh message from a peer (JS representation). */
|
|
249
|
+
export interface NapiIncomingMessage {
|
|
250
|
+
from?: string
|
|
251
|
+
connectionId: string
|
|
252
|
+
namespace: string
|
|
253
|
+
msgType: string
|
|
254
|
+
payload: any
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/** A mesh event delivered to JS via ThreadsafeFunction. */
|
|
258
|
+
export interface NapiMeshEvent {
|
|
259
|
+
eventType: string
|
|
260
|
+
deviceId?: string
|
|
261
|
+
payload: any
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/** Configuration for creating a MeshNode. */
|
|
265
|
+
export interface NapiMeshNodeConfig {
|
|
266
|
+
deviceId: string
|
|
267
|
+
deviceName: string
|
|
268
|
+
deviceType: string
|
|
269
|
+
hostnamePrefix: string
|
|
270
|
+
/**
|
|
271
|
+
* Path to the Go sidecar binary. Optional — use `resolveSidecarPath()`
|
|
272
|
+
* from `@vibecook/truffle` for automatic platform detection.
|
|
273
|
+
*/
|
|
274
|
+
sidecarPath?: string
|
|
275
|
+
stateDir?: string
|
|
276
|
+
authKey?: string
|
|
277
|
+
preferPrimary?: boolean
|
|
278
|
+
staticPath?: string
|
|
279
|
+
capabilities?: Array<string>
|
|
280
|
+
timing?: NapiMeshTimingConfig
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/** Timing configuration for the mesh. */
|
|
284
|
+
export interface NapiMeshTimingConfig {
|
|
285
|
+
announceIntervalMs?: number
|
|
286
|
+
discoveryTimeoutMs?: number
|
|
287
|
+
electionTimeoutMs?: number
|
|
288
|
+
primaryLossGraceMs?: number
|
|
289
|
+
heartbeatPingMs?: number
|
|
290
|
+
heartbeatTimeoutMs?: number
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/** Outgoing sync message delivered to JS for broadcasting. */
|
|
294
|
+
export interface NapiOutgoingSyncMessage {
|
|
295
|
+
msgType: string
|
|
296
|
+
payload: any
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/** Store sync configuration (JS representation). */
|
|
300
|
+
export interface NapiStoreSyncConfig {
|
|
301
|
+
localDeviceId: string
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/** Tailnet peer info (JS representation). */
|
|
305
|
+
export interface NapiTailnetPeer {
|
|
306
|
+
id: string
|
|
307
|
+
hostname: string
|
|
308
|
+
dnsName: string
|
|
309
|
+
tailscaleIps: Array<string>
|
|
310
|
+
online: boolean
|
|
311
|
+
os?: string
|
|
312
|
+
}
|
package/index.js
ADDED
|
@@ -0,0 +1,582 @@
|
|
|
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('./truffle.android-arm64.node')
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadErrors.push(e)
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const binding = require('@vibecook/truffle-native-android-arm64')
|
|
79
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.android-arm-eabi.node')
|
|
90
|
+
} catch (e) {
|
|
91
|
+
loadErrors.push(e)
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const binding = require('@vibecook/truffle-native-android-arm-eabi')
|
|
95
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.win32-x64-gnu.node')
|
|
111
|
+
} catch (e) {
|
|
112
|
+
loadErrors.push(e)
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const binding = require('@vibecook/truffle-native-win32-x64-gnu')
|
|
116
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.win32-x64-msvc.node')
|
|
127
|
+
} catch (e) {
|
|
128
|
+
loadErrors.push(e)
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const binding = require('@vibecook/truffle-native-win32-x64-msvc')
|
|
132
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.win32-ia32-msvc.node')
|
|
144
|
+
} catch (e) {
|
|
145
|
+
loadErrors.push(e)
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const binding = require('@vibecook/truffle-native-win32-ia32-msvc')
|
|
149
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.win32-arm64-msvc.node')
|
|
160
|
+
} catch (e) {
|
|
161
|
+
loadErrors.push(e)
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const binding = require('@vibecook/truffle-native-win32-arm64-msvc')
|
|
165
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.darwin-universal.node')
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadErrors.push(e)
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const binding = require('@vibecook/truffle-native-darwin-universal')
|
|
184
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.darwin-x64.node')
|
|
195
|
+
} catch (e) {
|
|
196
|
+
loadErrors.push(e)
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const binding = require('@vibecook/truffle-native-darwin-x64')
|
|
200
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.darwin-arm64.node')
|
|
211
|
+
} catch (e) {
|
|
212
|
+
loadErrors.push(e)
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const binding = require('@vibecook/truffle-native-darwin-arm64')
|
|
216
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.freebsd-x64.node')
|
|
231
|
+
} catch (e) {
|
|
232
|
+
loadErrors.push(e)
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
const binding = require('@vibecook/truffle-native-freebsd-x64')
|
|
236
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.freebsd-arm64.node')
|
|
247
|
+
} catch (e) {
|
|
248
|
+
loadErrors.push(e)
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const binding = require('@vibecook/truffle-native-freebsd-arm64')
|
|
252
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-x64-musl.node')
|
|
268
|
+
} catch (e) {
|
|
269
|
+
loadErrors.push(e)
|
|
270
|
+
}
|
|
271
|
+
try {
|
|
272
|
+
const binding = require('@vibecook/truffle-native-linux-x64-musl')
|
|
273
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-x64-gnu.node')
|
|
284
|
+
} catch (e) {
|
|
285
|
+
loadErrors.push(e)
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
const binding = require('@vibecook/truffle-native-linux-x64-gnu')
|
|
289
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-arm64-musl.node')
|
|
302
|
+
} catch (e) {
|
|
303
|
+
loadErrors.push(e)
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const binding = require('@vibecook/truffle-native-linux-arm64-musl')
|
|
307
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-arm64-gnu.node')
|
|
318
|
+
} catch (e) {
|
|
319
|
+
loadErrors.push(e)
|
|
320
|
+
}
|
|
321
|
+
try {
|
|
322
|
+
const binding = require('@vibecook/truffle-native-linux-arm64-gnu')
|
|
323
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-arm-musleabihf.node')
|
|
336
|
+
} catch (e) {
|
|
337
|
+
loadErrors.push(e)
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const binding = require('@vibecook/truffle-native-linux-arm-musleabihf')
|
|
341
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-arm-gnueabihf.node')
|
|
352
|
+
} catch (e) {
|
|
353
|
+
loadErrors.push(e)
|
|
354
|
+
}
|
|
355
|
+
try {
|
|
356
|
+
const binding = require('@vibecook/truffle-native-linux-arm-gnueabihf')
|
|
357
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-loong64-musl.node')
|
|
370
|
+
} catch (e) {
|
|
371
|
+
loadErrors.push(e)
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const binding = require('@vibecook/truffle-native-linux-loong64-musl')
|
|
375
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-loong64-gnu.node')
|
|
386
|
+
} catch (e) {
|
|
387
|
+
loadErrors.push(e)
|
|
388
|
+
}
|
|
389
|
+
try {
|
|
390
|
+
const binding = require('@vibecook/truffle-native-linux-loong64-gnu')
|
|
391
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-riscv64-musl.node')
|
|
404
|
+
} catch (e) {
|
|
405
|
+
loadErrors.push(e)
|
|
406
|
+
}
|
|
407
|
+
try {
|
|
408
|
+
const binding = require('@vibecook/truffle-native-linux-riscv64-musl')
|
|
409
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-riscv64-gnu.node')
|
|
420
|
+
} catch (e) {
|
|
421
|
+
loadErrors.push(e)
|
|
422
|
+
}
|
|
423
|
+
try {
|
|
424
|
+
const binding = require('@vibecook/truffle-native-linux-riscv64-gnu')
|
|
425
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-ppc64-gnu.node')
|
|
437
|
+
} catch (e) {
|
|
438
|
+
loadErrors.push(e)
|
|
439
|
+
}
|
|
440
|
+
try {
|
|
441
|
+
const binding = require('@vibecook/truffle-native-linux-ppc64-gnu')
|
|
442
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.linux-s390x-gnu.node')
|
|
453
|
+
} catch (e) {
|
|
454
|
+
loadErrors.push(e)
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
const binding = require('@vibecook/truffle-native-linux-s390x-gnu')
|
|
458
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.openharmony-arm64.node')
|
|
473
|
+
} catch (e) {
|
|
474
|
+
loadErrors.push(e)
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const binding = require('@vibecook/truffle-native-openharmony-arm64')
|
|
478
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.openharmony-x64.node')
|
|
489
|
+
} catch (e) {
|
|
490
|
+
loadErrors.push(e)
|
|
491
|
+
}
|
|
492
|
+
try {
|
|
493
|
+
const binding = require('@vibecook/truffle-native-openharmony-x64')
|
|
494
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.openharmony-arm.node')
|
|
505
|
+
} catch (e) {
|
|
506
|
+
loadErrors.push(e)
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
const binding = require('@vibecook/truffle-native-openharmony-arm')
|
|
510
|
+
const bindingPackageVersion = require('@vibecook/truffle-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('./truffle.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('@vibecook/truffle-native-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.NapiFileTransferAdapter = nativeBinding.NapiFileTransferAdapter
|
|
580
|
+
module.exports.NapiMeshNode = nativeBinding.NapiMeshNode
|
|
581
|
+
module.exports.NapiMessageBus = nativeBinding.NapiMessageBus
|
|
582
|
+
module.exports.NapiStoreSyncAdapter = nativeBinding.NapiStoreSyncAdapter
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vibecook/truffle-native",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Mesh networking for local-first apps, built on Tailscale (native addon)",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"types": "index.d.ts",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "James Yong",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/jamesyong-42/truffle.git",
|
|
12
|
+
"directory": "crates/truffle-napi"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/jamesyong-42/truffle#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/jamesyong-42/truffle/issues"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"mesh",
|
|
20
|
+
"networking",
|
|
21
|
+
"tailscale",
|
|
22
|
+
"local-first",
|
|
23
|
+
"p2p",
|
|
24
|
+
"napi",
|
|
25
|
+
"rust"
|
|
26
|
+
],
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=18"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"sideEffects": false,
|
|
34
|
+
"files": [
|
|
35
|
+
"index.js",
|
|
36
|
+
"index.d.ts",
|
|
37
|
+
"*.node"
|
|
38
|
+
],
|
|
39
|
+
"napi": {
|
|
40
|
+
"binaryName": "truffle",
|
|
41
|
+
"targets": [
|
|
42
|
+
"x86_64-apple-darwin",
|
|
43
|
+
"aarch64-apple-darwin",
|
|
44
|
+
"x86_64-unknown-linux-gnu",
|
|
45
|
+
"aarch64-unknown-linux-gnu",
|
|
46
|
+
"x86_64-unknown-linux-musl",
|
|
47
|
+
"aarch64-unknown-linux-musl",
|
|
48
|
+
"aarch64-linux-android",
|
|
49
|
+
"x86_64-pc-windows-msvc",
|
|
50
|
+
"aarch64-pc-windows-msvc",
|
|
51
|
+
"armv7-unknown-linux-gnueabihf"
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@napi-rs/cli": "^3.0.0"
|
|
56
|
+
},
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": "napi build --platform --release",
|
|
59
|
+
"build:debug": "napi build --platform",
|
|
60
|
+
"prepublishOnly": "napi prepublish -t npm",
|
|
61
|
+
"artifacts": "napi artifacts"
|
|
62
|
+
},
|
|
63
|
+
"optionalDependencies": {
|
|
64
|
+
"@vibecook/truffle-native-darwin-x64": "0.1.0",
|
|
65
|
+
"@vibecook/truffle-native-darwin-arm64": "0.1.0",
|
|
66
|
+
"@vibecook/truffle-native-linux-x64-gnu": "0.1.0",
|
|
67
|
+
"@vibecook/truffle-native-linux-arm64-gnu": "0.1.0",
|
|
68
|
+
"@vibecook/truffle-native-linux-x64-musl": "0.1.0",
|
|
69
|
+
"@vibecook/truffle-native-linux-arm64-musl": "0.1.0",
|
|
70
|
+
"@vibecook/truffle-native-android-arm64": "0.1.0",
|
|
71
|
+
"@vibecook/truffle-native-win32-x64-msvc": "0.1.0",
|
|
72
|
+
"@vibecook/truffle-native-win32-arm64-msvc": "0.1.0",
|
|
73
|
+
"@vibecook/truffle-native-linux-arm-gnueabihf": "0.1.0"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
Binary file
|