@napi-rs/cli 3.0.0-alpha.52 → 3.0.0-alpha.53
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/dist/api/artifacts.js.map +1 -1
- package/dist/api/templates/ci-template.js +1 -1
- package/dist/api/templates/load-wasi-template.js +14 -3
- package/dist/api/templates/load-wasi-template.js.map +1 -1
- package/dist/api/templates/wasi-worker-template.d.ts +1 -1
- package/dist/api/templates/wasi-worker-template.js +11 -9
- package/dist/api/templates/wasi-worker-template.js.map +1 -1
- package/dist/api/universalize.js.map +1 -1
- package/dist/index.cjs +27 -14
- package/package.json +2 -2
- package/src/api/artifacts.ts +2 -2
- package/src/api/templates/ci-template.ts +1 -1
- package/src/api/templates/load-wasi-template.ts +15 -3
- package/src/api/templates/wasi-worker-template.ts +11 -9
- package/src/api/universalize.ts +7 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/api/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAEvC,OAAO,KAAK,MAAM,MAAM,WAAW,CAAA;AAEnC,OAAO,EACL,4BAA4B,GAE7B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAE1B,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;AAEvC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAA6B;IAClE,MAAM,OAAO,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAA;IAEzD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAClE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,GACxC,MAAM,cAAc,CAAC,eAAe,CAAC,CAAA;IAEvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACxC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAC5D,CAAA;IAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,OAAO;SACJ,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC;SACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/api/artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,14 @@ const __wasi = new __WASI({
|
|
|
15
15
|
const __wasi = new __WASI({
|
|
16
16
|
version: 'preview1',
|
|
17
17
|
})`;
|
|
18
|
+
const workerFsHandler = fs
|
|
19
|
+
? `\n worker.addEventListener('message', __wasmCreateOnMessageForFsProxy(__fs))\n`
|
|
20
|
+
: '';
|
|
18
21
|
return `import {
|
|
19
22
|
instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync,
|
|
20
23
|
getDefaultContext as __emnapiGetDefaultContext,
|
|
21
24
|
WASI as __WASI,
|
|
25
|
+
createOnMessage as __wasmCreateOnMessageForFsProxy,
|
|
22
26
|
} from '@napi-rs/wasm-runtime'
|
|
23
27
|
${fsImport}
|
|
24
28
|
import __wasmUrl from './${wasiFilename}.wasm?url'
|
|
@@ -43,9 +47,11 @@ const {
|
|
|
43
47
|
asyncWorkPoolSize: 4,
|
|
44
48
|
wasi: __wasi,
|
|
45
49
|
onCreateWorker() {
|
|
46
|
-
|
|
50
|
+
const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), {
|
|
47
51
|
type: 'module',
|
|
48
52
|
})
|
|
53
|
+
${workerFsHandler}
|
|
54
|
+
return worker
|
|
49
55
|
},
|
|
50
56
|
overwriteImports(importObject) {
|
|
51
57
|
importObject.env = {
|
|
@@ -73,7 +79,7 @@ export const createWasiBinding = (wasmFileName, packageName, wasiRegisterFunctio
|
|
|
73
79
|
|
|
74
80
|
/* auto-generated by NAPI-RS */
|
|
75
81
|
|
|
76
|
-
const __nodeFs= require('node:fs')
|
|
82
|
+
const __nodeFs = require('node:fs')
|
|
77
83
|
const __nodePath = require('node:path')
|
|
78
84
|
const { WASI: __nodeWASI } = require('node:wasi')
|
|
79
85
|
const { Worker } = require('node:worker_threads')
|
|
@@ -81,6 +87,7 @@ const { Worker } = require('node:worker_threads')
|
|
|
81
87
|
const {
|
|
82
88
|
instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync,
|
|
83
89
|
getDefaultContext: __emnapiGetDefaultContext,
|
|
90
|
+
createOnMessage: __wasmCreateOnMessageForFsProxy,
|
|
84
91
|
} = require('@napi-rs/wasm-runtime')
|
|
85
92
|
|
|
86
93
|
const __rootDir = __nodePath.parse(process.cwd()).root
|
|
@@ -127,10 +134,14 @@ const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule
|
|
|
127
134
|
})(),
|
|
128
135
|
wasi: __wasi,
|
|
129
136
|
onCreateWorker() {
|
|
130
|
-
|
|
137
|
+
const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), {
|
|
131
138
|
env: process.env,
|
|
132
139
|
execArgv: ['--experimental-wasi-unstable-preview1'],
|
|
133
140
|
})
|
|
141
|
+
worker.onmessage = ({ data }) => {
|
|
142
|
+
__wasmCreateOnMessageForFsProxy(__nodeFs)(data)
|
|
143
|
+
}
|
|
144
|
+
return worker
|
|
134
145
|
},
|
|
135
146
|
overwriteImports(importObject) {
|
|
136
147
|
importObject.env = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-wasi-template.js","sourceRoot":"","sources":["../../../src/api/templates/load-wasi-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,YAAoB,EACpB,qBAA+B,EAC/B,aAAa,GAAG,IAAI,EACpB,aAAa,GAAG,KAAK,EACrB,EAAE,GAAG,KAAK,EACV,EAAE;IACF,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7E,MAAM,YAAY,GAAG,EAAE;QACrB,CAAC,CAAC;;;;;;;;;GASH;QACC,CAAC,CAAC;;;GAGH,CAAA;IAED,OAAO
|
|
1
|
+
{"version":3,"file":"load-wasi-template.js","sourceRoot":"","sources":["../../../src/api/templates/load-wasi-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,YAAoB,EACpB,qBAA+B,EAC/B,aAAa,GAAG,IAAI,EACpB,aAAa,GAAG,KAAK,EACrB,EAAE,GAAG,KAAK,EACV,EAAE;IACF,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7E,MAAM,YAAY,GAAG,EAAE;QACrB,CAAC,CAAC;;;;;;;;;GASH;QACC,CAAC,CAAC;;;GAGH,CAAA;IAED,MAAM,eAAe,GAAG,EAAE;QACxB,CAAC,CAAC,mFAAmF;QACrF,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO;;;;;;EAMP,QAAQ;2BACiB,YAAY;EACrC,YAAY;;;;;aAKD,aAAa;aACb,aAAa;;;;;;;;;;;;;;;;;;MAkBpB,eAAe;;;;;;;;;;;;;;;;;;EAkBnB,qBAAqB;SACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,6BAA6B,IAAI,QAAQ,CAAC;SACxD,IAAI,CAAC,IAAI,CAAC;;CAEZ,CAAA;AACD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,YAAoB,EACpB,WAAmB,EACnB,qBAA+B,EAC/B,aAAa,GAAG,IAAI,EACpB,aAAa,GAAG,KAAK,EACrB,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BQ,aAAa;aACb,aAAa;;;;mDAIyB,YAAY;0DACL,YAAY;;;;;;2CAM3B,WAAW;;mCAEnB,YAAY,mBAAmB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyC3E,qBAAqB;KACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,6BAA6B,IAAI,QAAQ,CAAC;KACxD,IAAI,CAAC,IAAI,CAAC;;CAEZ,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const WASI_WORKER_TEMPLATE = "import fs from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { WASI } from \"node:wasi\";\nimport { parentPort, Worker } from \"node:worker_threads\";\n\nconst require = createRequire(import.meta.url);\n\nconst { instantiateNapiModuleSync, MessageHandler, getDefaultContext } = require(\"@napi-rs/wasm-runtime\");\n\nif (parentPort) {\n parentPort.on(\"message\", (data) => {\n globalThis.onmessage({ data });\n });\n}\n\nObject.assign(globalThis, {\n self: globalThis,\n require,\n Worker,\n importScripts: function (f) {\n ;(0, eval)(fs.readFileSync(f, \"utf8\") + \"//# sourceURL=\" + f);\n },\n postMessage: function (msg) {\n if (parentPort) {\n parentPort.postMessage(msg);\n }\n },\n});\n\nconst emnapiContext = getDefaultContext()\n\nconst handler = new MessageHandler({\n onLoad({ wasmModule, wasmMemory }) {\n const wasi = new WASI({\n version: 'preview1',\n env: process.env,\n preopens: {\n
|
|
1
|
+
export declare const WASI_WORKER_TEMPLATE = "import fs from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { parse } from \"node:path\";\nimport { WASI } from \"node:wasi\";\nimport { parentPort, Worker } from \"node:worker_threads\";\n\nconst require = createRequire(import.meta.url);\n\nconst { instantiateNapiModuleSync, MessageHandler, getDefaultContext } = require(\"@napi-rs/wasm-runtime\");\n\nif (parentPort) {\n parentPort.on(\"message\", (data) => {\n globalThis.onmessage({ data });\n });\n}\n\nObject.assign(globalThis, {\n self: globalThis,\n require,\n Worker,\n importScripts: function (f) {\n ;(0, eval)(fs.readFileSync(f, \"utf8\") + \"//# sourceURL=\" + f);\n },\n postMessage: function (msg) {\n if (parentPort) {\n parentPort.postMessage(msg);\n }\n },\n});\n\nconst emnapiContext = getDefaultContext();\n\nconst __rootDir = parse(process.cwd()).root;\n\nconst handler = new MessageHandler({\n onLoad({ wasmModule, wasmMemory }) {\n const wasi = new WASI({\n version: 'preview1',\n env: process.env,\n preopens: {\n [__rootDir]: __rootDir,\n },\n });\n\n return instantiateNapiModuleSync(wasmModule, {\n childThread: true,\n wasi,\n context: emnapiContext,\n overwriteImports(importObject) {\n importObject.env = {\n ...importObject.env,\n ...importObject.napi,\n ...importObject.emnapi,\n memory: wasmMemory\n };\n },\n });\n },\n});\n\nglobalThis.onmessage = function (e) {\n handler.handle(e);\n};\n";
|
|
2
2
|
export declare const createWasiBrowserWorkerBinding: (fs: boolean) => string;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const WASI_WORKER_TEMPLATE = `import fs from "node:fs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
|
+
import { parse } from "node:path";
|
|
3
4
|
import { WASI } from "node:wasi";
|
|
4
5
|
import { parentPort, Worker } from "node:worker_threads";
|
|
5
6
|
|
|
@@ -27,7 +28,9 @@ Object.assign(globalThis, {
|
|
|
27
28
|
},
|
|
28
29
|
});
|
|
29
30
|
|
|
30
|
-
const emnapiContext = getDefaultContext()
|
|
31
|
+
const emnapiContext = getDefaultContext();
|
|
32
|
+
|
|
33
|
+
const __rootDir = parse(process.cwd()).root;
|
|
31
34
|
|
|
32
35
|
const handler = new MessageHandler({
|
|
33
36
|
onLoad({ wasmModule, wasmMemory }) {
|
|
@@ -35,7 +38,7 @@ const handler = new MessageHandler({
|
|
|
35
38
|
version: 'preview1',
|
|
36
39
|
env: process.env,
|
|
37
40
|
preopens: {
|
|
38
|
-
|
|
41
|
+
[__rootDir]: __rootDir,
|
|
39
42
|
},
|
|
40
43
|
});
|
|
41
44
|
|
|
@@ -61,21 +64,20 @@ globalThis.onmessage = function (e) {
|
|
|
61
64
|
`;
|
|
62
65
|
export const createWasiBrowserWorkerBinding = (fs) => {
|
|
63
66
|
const fsImport = fs
|
|
64
|
-
? `import {
|
|
67
|
+
? `import { memfsExported as __memfsExported } from '@napi-rs/wasm-runtime/fs'
|
|
65
68
|
|
|
66
|
-
const fs =
|
|
67
|
-
Volume.fromJSON({
|
|
68
|
-
'/': null,
|
|
69
|
-
}),
|
|
70
|
-
)`
|
|
69
|
+
const fs = createFsProxy(__memfsExported)`
|
|
71
70
|
: '\nconst fs = null';
|
|
72
|
-
return `import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime'
|
|
71
|
+
return `import { instantiateNapiModuleSync, MessageHandler, WASI, createFsProxy } from '@napi-rs/wasm-runtime'
|
|
73
72
|
${fsImport}
|
|
74
73
|
|
|
75
74
|
const handler = new MessageHandler({
|
|
76
75
|
onLoad({ wasmModule, wasmMemory }) {
|
|
77
76
|
const wasi = new WASI({
|
|
78
77
|
fs,
|
|
78
|
+
preopens: {
|
|
79
|
+
'/': '/',
|
|
80
|
+
},
|
|
79
81
|
print: function () {
|
|
80
82
|
// eslint-disable-next-line no-console
|
|
81
83
|
console.log.apply(console, arguments)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasi-worker-template.js","sourceRoot":"","sources":["../../../src/api/templates/wasi-worker-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG
|
|
1
|
+
{"version":3,"file":"wasi-worker-template.js","sourceRoot":"","sources":["../../../src/api/templates/wasi-worker-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DnC,CAAA;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAAW,EAAE,EAAE;IAC5D,MAAM,QAAQ,GAAG,EAAE;QACjB,CAAC,CAAC;;0CAEoC;QACtC,CAAC,CAAC,mBAAmB,CAAA;IACvB,OAAO;EACP,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCT,CAAA;AACD,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universalize.js","sourceRoot":"","sources":["../../src/api/universalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EACL,+BAA+B,GAEhC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,CAAC,CAAA;AAE1C,MAAM,cAAc,GAEhB;IACF,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QACzB,SAAS,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;YAC3D,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAgC;IACzE,MAAM,OAAO,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAA;IAE5D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAElE,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,eAAe,EACf,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAC1E,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CACjE,CAAA;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,kCAAkC,OAAO,CAAC,QAAQ,wBAAwB,CAC3E,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"universalize.js","sourceRoot":"","sources":["../../src/api/universalize.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -16327,7 +16327,7 @@ jobs:
|
|
|
16327
16327
|
- uses: goto-bus-stop/setup-zig@v2
|
|
16328
16328
|
if: \${{ contains(matrix.settings.target, 'musl') }}
|
|
16329
16329
|
with:
|
|
16330
|
-
version: 0.
|
|
16330
|
+
version: 0.12.0
|
|
16331
16331
|
|
|
16332
16332
|
- name: Setup toolchain
|
|
16333
16333
|
run: \${{ matrix.settings.setup }}
|
|
@@ -17136,10 +17136,14 @@ const __wasi = new __WASI({
|
|
|
17136
17136
|
const __wasi = new __WASI({
|
|
17137
17137
|
version: 'preview1',
|
|
17138
17138
|
})`;
|
|
17139
|
+
const workerFsHandler = fs2 ? `
|
|
17140
|
+
worker.addEventListener('message', __wasmCreateOnMessageForFsProxy(__fs))
|
|
17141
|
+
` : "";
|
|
17139
17142
|
return `import {
|
|
17140
17143
|
instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync,
|
|
17141
17144
|
getDefaultContext as __emnapiGetDefaultContext,
|
|
17142
17145
|
WASI as __WASI,
|
|
17146
|
+
createOnMessage as __wasmCreateOnMessageForFsProxy,
|
|
17143
17147
|
} from '@napi-rs/wasm-runtime'
|
|
17144
17148
|
${fsImport}
|
|
17145
17149
|
import __wasmUrl from './${wasiFilename}.wasm?url'
|
|
@@ -17164,9 +17168,11 @@ const {
|
|
|
17164
17168
|
asyncWorkPoolSize: 4,
|
|
17165
17169
|
wasi: __wasi,
|
|
17166
17170
|
onCreateWorker() {
|
|
17167
|
-
|
|
17171
|
+
const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), {
|
|
17168
17172
|
type: 'module',
|
|
17169
17173
|
})
|
|
17174
|
+
${workerFsHandler}
|
|
17175
|
+
return worker
|
|
17170
17176
|
},
|
|
17171
17177
|
overwriteImports(importObject) {
|
|
17172
17178
|
importObject.env = {
|
|
@@ -17192,7 +17198,7 @@ var createWasiBinding = (wasmFileName, packageName, wasiRegisterFunctions, initi
|
|
|
17192
17198
|
|
|
17193
17199
|
/* auto-generated by NAPI-RS */
|
|
17194
17200
|
|
|
17195
|
-
const __nodeFs= require('node:fs')
|
|
17201
|
+
const __nodeFs = require('node:fs')
|
|
17196
17202
|
const __nodePath = require('node:path')
|
|
17197
17203
|
const { WASI: __nodeWASI } = require('node:wasi')
|
|
17198
17204
|
const { Worker } = require('node:worker_threads')
|
|
@@ -17200,6 +17206,7 @@ const { Worker } = require('node:worker_threads')
|
|
|
17200
17206
|
const {
|
|
17201
17207
|
instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync,
|
|
17202
17208
|
getDefaultContext: __emnapiGetDefaultContext,
|
|
17209
|
+
createOnMessage: __wasmCreateOnMessageForFsProxy,
|
|
17203
17210
|
} = require('@napi-rs/wasm-runtime')
|
|
17204
17211
|
|
|
17205
17212
|
const __rootDir = __nodePath.parse(process.cwd()).root
|
|
@@ -17246,10 +17253,14 @@ const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule
|
|
|
17246
17253
|
})(),
|
|
17247
17254
|
wasi: __wasi,
|
|
17248
17255
|
onCreateWorker() {
|
|
17249
|
-
|
|
17256
|
+
const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), {
|
|
17250
17257
|
env: process.env,
|
|
17251
17258
|
execArgv: ['--experimental-wasi-unstable-preview1'],
|
|
17252
17259
|
})
|
|
17260
|
+
worker.onmessage = ({ data }) => {
|
|
17261
|
+
__wasmCreateOnMessageForFsProxy(__nodeFs)(data)
|
|
17262
|
+
}
|
|
17263
|
+
return worker
|
|
17253
17264
|
},
|
|
17254
17265
|
overwriteImports(importObject) {
|
|
17255
17266
|
importObject.env = {
|
|
@@ -17273,6 +17284,7 @@ ${wasiRegisterFunctions.map((name) => ` __napiInstance.exports['${name}']?.()`)
|
|
|
17273
17284
|
// dist/api/templates/wasi-worker-template.js
|
|
17274
17285
|
var WASI_WORKER_TEMPLATE = `import fs from "node:fs";
|
|
17275
17286
|
import { createRequire } from "node:module";
|
|
17287
|
+
import { parse } from "node:path";
|
|
17276
17288
|
import { WASI } from "node:wasi";
|
|
17277
17289
|
import { parentPort, Worker } from "node:worker_threads";
|
|
17278
17290
|
|
|
@@ -17300,7 +17312,9 @@ Object.assign(globalThis, {
|
|
|
17300
17312
|
},
|
|
17301
17313
|
});
|
|
17302
17314
|
|
|
17303
|
-
const emnapiContext = getDefaultContext()
|
|
17315
|
+
const emnapiContext = getDefaultContext();
|
|
17316
|
+
|
|
17317
|
+
const __rootDir = parse(process.cwd()).root;
|
|
17304
17318
|
|
|
17305
17319
|
const handler = new MessageHandler({
|
|
17306
17320
|
onLoad({ wasmModule, wasmMemory }) {
|
|
@@ -17308,7 +17322,7 @@ const handler = new MessageHandler({
|
|
|
17308
17322
|
version: 'preview1',
|
|
17309
17323
|
env: process.env,
|
|
17310
17324
|
preopens: {
|
|
17311
|
-
|
|
17325
|
+
[__rootDir]: __rootDir,
|
|
17312
17326
|
},
|
|
17313
17327
|
});
|
|
17314
17328
|
|
|
@@ -17333,20 +17347,19 @@ globalThis.onmessage = function (e) {
|
|
|
17333
17347
|
};
|
|
17334
17348
|
`;
|
|
17335
17349
|
var createWasiBrowserWorkerBinding = (fs2) => {
|
|
17336
|
-
const fsImport = fs2 ? `import {
|
|
17337
|
-
|
|
17338
|
-
const fs =
|
|
17339
|
-
|
|
17340
|
-
'/': null,
|
|
17341
|
-
}),
|
|
17342
|
-
)` : "\nconst fs = null";
|
|
17343
|
-
return `import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime'
|
|
17350
|
+
const fsImport = fs2 ? `import { memfsExported as __memfsExported } from '@napi-rs/wasm-runtime/fs'
|
|
17351
|
+
|
|
17352
|
+
const fs = createFsProxy(__memfsExported)` : "\nconst fs = null";
|
|
17353
|
+
return `import { instantiateNapiModuleSync, MessageHandler, WASI, createFsProxy } from '@napi-rs/wasm-runtime'
|
|
17344
17354
|
${fsImport}
|
|
17345
17355
|
|
|
17346
17356
|
const handler = new MessageHandler({
|
|
17347
17357
|
onLoad({ wasmModule, wasmMemory }) {
|
|
17348
17358
|
const wasi = new WASI({
|
|
17349
17359
|
fs,
|
|
17360
|
+
preopens: {
|
|
17361
|
+
'/': '/',
|
|
17362
|
+
},
|
|
17350
17363
|
print: function () {
|
|
17351
17364
|
// eslint-disable-next-line no-console
|
|
17352
17365
|
console.log.apply(console, arguments)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@napi-rs/cli",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.53",
|
|
4
4
|
"description": "Cli tools for napi-rs",
|
|
5
5
|
"author": "LongYinan <lynweklm@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/napi-rs/napi-rs",
|
|
@@ -129,5 +129,5 @@
|
|
|
129
129
|
"**/__tests__/**/*.spec.ts"
|
|
130
130
|
]
|
|
131
131
|
},
|
|
132
|
-
"gitHead": "
|
|
132
|
+
"gitHead": "131046b7cbd47c99a31f2f0a944e4f7b67dc4f53"
|
|
133
133
|
}
|
package/src/api/artifacts.ts
CHANGED
|
@@ -31,8 +31,8 @@ export async function collectArtifacts(userOptions: ArtifactsOptions) {
|
|
|
31
31
|
const universalSourceBins = new Set(
|
|
32
32
|
targets
|
|
33
33
|
.filter((platform) => platform.arch === 'universal')
|
|
34
|
-
.flatMap(
|
|
35
|
-
|
|
34
|
+
.flatMap((p) =>
|
|
35
|
+
UniArchsByPlatform[p.platform]?.map((a) => `${p.platform}-${a}`),
|
|
36
36
|
)
|
|
37
37
|
.filter(Boolean) as string[],
|
|
38
38
|
)
|
|
@@ -22,10 +22,15 @@ const __wasi = new __WASI({
|
|
|
22
22
|
version: 'preview1',
|
|
23
23
|
})`
|
|
24
24
|
|
|
25
|
+
const workerFsHandler = fs
|
|
26
|
+
? `\n worker.addEventListener('message', __wasmCreateOnMessageForFsProxy(__fs))\n`
|
|
27
|
+
: ''
|
|
28
|
+
|
|
25
29
|
return `import {
|
|
26
30
|
instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync,
|
|
27
31
|
getDefaultContext as __emnapiGetDefaultContext,
|
|
28
32
|
WASI as __WASI,
|
|
33
|
+
createOnMessage as __wasmCreateOnMessageForFsProxy,
|
|
29
34
|
} from '@napi-rs/wasm-runtime'
|
|
30
35
|
${fsImport}
|
|
31
36
|
import __wasmUrl from './${wasiFilename}.wasm?url'
|
|
@@ -50,9 +55,11 @@ const {
|
|
|
50
55
|
asyncWorkPoolSize: 4,
|
|
51
56
|
wasi: __wasi,
|
|
52
57
|
onCreateWorker() {
|
|
53
|
-
|
|
58
|
+
const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), {
|
|
54
59
|
type: 'module',
|
|
55
60
|
})
|
|
61
|
+
${workerFsHandler}
|
|
62
|
+
return worker
|
|
56
63
|
},
|
|
57
64
|
overwriteImports(importObject) {
|
|
58
65
|
importObject.env = {
|
|
@@ -87,7 +94,7 @@ export const createWasiBinding = (
|
|
|
87
94
|
|
|
88
95
|
/* auto-generated by NAPI-RS */
|
|
89
96
|
|
|
90
|
-
const __nodeFs= require('node:fs')
|
|
97
|
+
const __nodeFs = require('node:fs')
|
|
91
98
|
const __nodePath = require('node:path')
|
|
92
99
|
const { WASI: __nodeWASI } = require('node:wasi')
|
|
93
100
|
const { Worker } = require('node:worker_threads')
|
|
@@ -95,6 +102,7 @@ const { Worker } = require('node:worker_threads')
|
|
|
95
102
|
const {
|
|
96
103
|
instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync,
|
|
97
104
|
getDefaultContext: __emnapiGetDefaultContext,
|
|
105
|
+
createOnMessage: __wasmCreateOnMessageForFsProxy,
|
|
98
106
|
} = require('@napi-rs/wasm-runtime')
|
|
99
107
|
|
|
100
108
|
const __rootDir = __nodePath.parse(process.cwd()).root
|
|
@@ -141,10 +149,14 @@ const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule
|
|
|
141
149
|
})(),
|
|
142
150
|
wasi: __wasi,
|
|
143
151
|
onCreateWorker() {
|
|
144
|
-
|
|
152
|
+
const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), {
|
|
145
153
|
env: process.env,
|
|
146
154
|
execArgv: ['--experimental-wasi-unstable-preview1'],
|
|
147
155
|
})
|
|
156
|
+
worker.onmessage = ({ data }) => {
|
|
157
|
+
__wasmCreateOnMessageForFsProxy(__nodeFs)(data)
|
|
158
|
+
}
|
|
159
|
+
return worker
|
|
148
160
|
},
|
|
149
161
|
overwriteImports(importObject) {
|
|
150
162
|
importObject.env = {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const WASI_WORKER_TEMPLATE = `import fs from "node:fs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
|
+
import { parse } from "node:path";
|
|
3
4
|
import { WASI } from "node:wasi";
|
|
4
5
|
import { parentPort, Worker } from "node:worker_threads";
|
|
5
6
|
|
|
@@ -27,7 +28,9 @@ Object.assign(globalThis, {
|
|
|
27
28
|
},
|
|
28
29
|
});
|
|
29
30
|
|
|
30
|
-
const emnapiContext = getDefaultContext()
|
|
31
|
+
const emnapiContext = getDefaultContext();
|
|
32
|
+
|
|
33
|
+
const __rootDir = parse(process.cwd()).root;
|
|
31
34
|
|
|
32
35
|
const handler = new MessageHandler({
|
|
33
36
|
onLoad({ wasmModule, wasmMemory }) {
|
|
@@ -35,7 +38,7 @@ const handler = new MessageHandler({
|
|
|
35
38
|
version: 'preview1',
|
|
36
39
|
env: process.env,
|
|
37
40
|
preopens: {
|
|
38
|
-
|
|
41
|
+
[__rootDir]: __rootDir,
|
|
39
42
|
},
|
|
40
43
|
});
|
|
41
44
|
|
|
@@ -62,21 +65,20 @@ globalThis.onmessage = function (e) {
|
|
|
62
65
|
|
|
63
66
|
export const createWasiBrowserWorkerBinding = (fs: boolean) => {
|
|
64
67
|
const fsImport = fs
|
|
65
|
-
? `import {
|
|
68
|
+
? `import { memfsExported as __memfsExported } from '@napi-rs/wasm-runtime/fs'
|
|
66
69
|
|
|
67
|
-
const fs =
|
|
68
|
-
Volume.fromJSON({
|
|
69
|
-
'/': null,
|
|
70
|
-
}),
|
|
71
|
-
)`
|
|
70
|
+
const fs = createFsProxy(__memfsExported)`
|
|
72
71
|
: '\nconst fs = null'
|
|
73
|
-
return `import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime'
|
|
72
|
+
return `import { instantiateNapiModuleSync, MessageHandler, WASI, createFsProxy } from '@napi-rs/wasm-runtime'
|
|
74
73
|
${fsImport}
|
|
75
74
|
|
|
76
75
|
const handler = new MessageHandler({
|
|
77
76
|
onLoad({ wasmModule, wasmMemory }) {
|
|
78
77
|
const wasi = new WASI({
|
|
79
78
|
fs,
|
|
79
|
+
preopens: {
|
|
80
|
+
'/': '/',
|
|
81
|
+
},
|
|
80
82
|
print: function () {
|
|
81
83
|
// eslint-disable-next-line no-console
|
|
82
84
|
console.log.apply(console, arguments)
|
package/src/api/universalize.ts
CHANGED
|
@@ -42,8 +42,12 @@ export async function universalizeBinaries(userOptions: UniversalizeOptions) {
|
|
|
42
42
|
)
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
const srcFiles = UniArchsByPlatform[process.platform]?.map(
|
|
46
|
-
|
|
45
|
+
const srcFiles = UniArchsByPlatform[process.platform]?.map((arch) =>
|
|
46
|
+
resolve(
|
|
47
|
+
options.cwd,
|
|
48
|
+
options.outputDir,
|
|
49
|
+
`${config.binaryName}.${process.platform}-${arch}.node`,
|
|
50
|
+
),
|
|
47
51
|
)
|
|
48
52
|
|
|
49
53
|
if (!srcFiles || !universalizers[process.platform]) {
|
|
@@ -55,9 +59,7 @@ export async function universalizeBinaries(userOptions: UniversalizeOptions) {
|
|
|
55
59
|
debug(`Looking up source binaries to combine: `)
|
|
56
60
|
debug(' %O', srcFiles)
|
|
57
61
|
|
|
58
|
-
const srcFileLookup = await Promise.all(
|
|
59
|
-
srcFiles.map((f) => fileExists(f)),
|
|
60
|
-
)
|
|
62
|
+
const srcFileLookup = await Promise.all(srcFiles.map((f) => fileExists(f)))
|
|
61
63
|
|
|
62
64
|
const notFoundFiles = srcFiles.filter((_, i) => !srcFileLookup[i])
|
|
63
65
|
|