@bytecodealliance/jco 1.25.2 → 1.26.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/README.md +27 -4
- package/dist/api.d.ts +6 -0
- package/dist/api.d.ts.map +1 -0
- package/{src → dist}/api.js +2 -12
- package/dist/api.js.map +1 -0
- package/dist/browser.d.ts +5 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +12 -0
- package/dist/browser.js.map +1 -0
- package/dist/bundle.d.ts +42 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +124 -0
- package/dist/bundle.js.map +1 -0
- package/dist/cmd/componentize.d.ts +34 -0
- package/dist/cmd/componentize.d.ts.map +1 -0
- package/dist/cmd/componentize.js +243 -0
- package/dist/cmd/componentize.js.map +1 -0
- package/{types → dist}/cmd/opt.d.ts +17 -12
- package/dist/cmd/opt.d.ts.map +1 -0
- package/{src → dist}/cmd/opt.js +53 -87
- package/dist/cmd/opt.js.map +1 -0
- package/dist/cmd/run.d.ts +3 -0
- package/dist/cmd/run.d.ts.map +1 -0
- package/{src → dist}/cmd/run.js +24 -54
- package/dist/cmd/run.js.map +1 -0
- package/dist/cmd/transpile.d.ts +48 -0
- package/dist/cmd/transpile.d.ts.map +1 -0
- package/{src → dist}/cmd/transpile.js +1 -36
- package/dist/cmd/transpile.js.map +1 -0
- package/{types → dist}/cmd/types.d.ts +21 -22
- package/dist/cmd/types.d.ts.map +1 -0
- package/{src → dist}/cmd/types.js +27 -51
- package/dist/cmd/types.js.map +1 -0
- package/dist/cmd/wasm-tools.d.ts +8 -0
- package/dist/cmd/wasm-tools.d.ts.map +1 -0
- package/{src → dist}/cmd/wasm-tools.js +28 -42
- package/dist/cmd/wasm-tools.js.map +1 -0
- package/{types → dist}/common.d.ts +27 -25
- package/dist/common.d.ts.map +1 -0
- package/{src → dist}/common.js +19 -44
- package/dist/common.js.map +1 -0
- package/{types → dist}/jco.d.ts.map +1 -1
- package/{src → dist}/jco.js +74 -149
- package/dist/jco.js.map +1 -0
- package/dist/ora-shim.d.ts +9 -0
- package/dist/ora-shim.d.ts.map +1 -0
- package/dist/ora-shim.js +10 -0
- package/dist/ora-shim.js.map +1 -0
- package/package.json +22 -22
- package/src/browser.js +0 -18
- package/src/cmd/componentize.js +0 -170
- package/src/ora-shim.js +0 -9
- package/types/api.d.ts +0 -6
- package/types/api.d.ts.map +0 -1
- package/types/browser.d.ts +0 -4
- package/types/browser.d.ts.map +0 -1
- package/types/cmd/componentize.d.ts +0 -2
- package/types/cmd/componentize.d.ts.map +0 -1
- package/types/cmd/opt.d.ts.map +0 -1
- package/types/cmd/run.d.ts +0 -3
- package/types/cmd/run.d.ts.map +0 -1
- package/types/cmd/transpile.d.ts +0 -72
- package/types/cmd/transpile.d.ts.map +0 -1
- package/types/cmd/types.d.ts.map +0 -1
- package/types/cmd/wasm-tools.d.ts +0 -8
- package/types/cmd/wasm-tools.d.ts.map +0 -1
- package/types/common.d.ts.map +0 -1
- package/types/ora-shim.d.ts +0 -8
- package/types/ora-shim.d.ts.map +0 -1
- /package/{types → dist}/jco.d.ts +0 -0
package/{src → dist}/cmd/opt.js
RENAMED
|
@@ -1,64 +1,51 @@
|
|
|
1
1
|
import { fileURLToPath } from "node:url";
|
|
2
2
|
import { writeFile } from "node:fs/promises";
|
|
3
|
-
|
|
4
3
|
import { metadataShow, print } from "@bytecodealliance/jco-transpile/wasm-tools";
|
|
5
|
-
|
|
6
4
|
import { readFile, sizeStr, fixedDigitDisplay, table, spawnIOTmp, setShowSpinner, getShowSpinner } from "../common.js";
|
|
7
5
|
import ora from "#ora";
|
|
8
|
-
|
|
9
6
|
import { styleText } from "../common.js";
|
|
10
|
-
|
|
11
7
|
export async function opt(componentPath, opts, program) {
|
|
12
8
|
const varIdx = program.parent.rawArgs.indexOf("--");
|
|
13
9
|
if (varIdx !== -1) {
|
|
14
10
|
opts.optArgs = program.parent.rawArgs.slice(varIdx + 1);
|
|
15
11
|
}
|
|
16
12
|
const componentBytes = await readFile(componentPath);
|
|
17
|
-
|
|
18
13
|
if (!opts.quiet) {
|
|
19
14
|
setShowSpinner(true);
|
|
20
15
|
}
|
|
21
16
|
const optPromise = optimizeComponent(componentBytes, opts);
|
|
22
17
|
const { component, compressionInfo } = await optPromise;
|
|
23
|
-
|
|
24
18
|
await writeFile(opts.output, component);
|
|
25
|
-
|
|
26
|
-
let totalBeforeBytes = 0,
|
|
27
|
-
totalAfterBytes = 0;
|
|
28
|
-
|
|
19
|
+
let totalBeforeBytes = 0, totalAfterBytes = 0;
|
|
29
20
|
if (!opts.quiet) {
|
|
30
|
-
const tableContent = table(
|
|
21
|
+
const tableContent = table([
|
|
22
|
+
...compressionInfo.map(({ beforeBytes, afterBytes }, i) => {
|
|
23
|
+
const actualAfterBytes = afterBytes;
|
|
24
|
+
totalBeforeBytes += beforeBytes;
|
|
25
|
+
totalAfterBytes += actualAfterBytes;
|
|
26
|
+
return [
|
|
27
|
+
` - Core Module ${i + 1}: `,
|
|
28
|
+
sizeStr(beforeBytes),
|
|
29
|
+
" -> ",
|
|
30
|
+
`${styleText("cyan", sizeStr(actualAfterBytes))} `,
|
|
31
|
+
`(${fixedDigitDisplay((actualAfterBytes / beforeBytes) * 100, 2)}%)`,
|
|
32
|
+
];
|
|
33
|
+
}),
|
|
34
|
+
["", "", "", "", ""],
|
|
31
35
|
[
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
sizeStr(beforeBytes),
|
|
38
|
-
" -> ",
|
|
39
|
-
`${styleText("cyan", sizeStr(afterBytes))} `,
|
|
40
|
-
`(${fixedDigitDisplay((afterBytes / beforeBytes) * 100, 2)}%)`,
|
|
41
|
-
];
|
|
42
|
-
}),
|
|
43
|
-
["", "", "", "", ""],
|
|
44
|
-
[
|
|
45
|
-
` = Total: `,
|
|
46
|
-
`${sizeStr(totalBeforeBytes)}`,
|
|
47
|
-
` => `,
|
|
48
|
-
`${styleText("cyan", sizeStr(totalAfterBytes))} `,
|
|
49
|
-
`(${fixedDigitDisplay((totalAfterBytes / totalBeforeBytes) * 100, 2)}%)`,
|
|
50
|
-
],
|
|
36
|
+
` = Total: `,
|
|
37
|
+
`${sizeStr(totalBeforeBytes)}`,
|
|
38
|
+
` => `,
|
|
39
|
+
`${styleText("cyan", sizeStr(totalAfterBytes))} `,
|
|
40
|
+
`(${fixedDigitDisplay((totalAfterBytes / totalBeforeBytes) * 100, 2)}%)`,
|
|
51
41
|
],
|
|
52
|
-
|
|
53
|
-
);
|
|
54
|
-
|
|
42
|
+
], [, , , , "right"]);
|
|
55
43
|
console.log(`
|
|
56
44
|
${styleText("bold", "Optimized WebAssembly Component Internal Core Modules:")}
|
|
57
45
|
|
|
58
46
|
${tableContent}`);
|
|
59
47
|
}
|
|
60
48
|
}
|
|
61
|
-
|
|
62
49
|
/**
|
|
63
50
|
* Counts the byte length for the LEB128 encoding of a number.
|
|
64
51
|
* @param {number} val
|
|
@@ -72,7 +59,6 @@ function byteLengthLEB128(val) {
|
|
|
72
59
|
} while (val !== 0);
|
|
73
60
|
return len;
|
|
74
61
|
}
|
|
75
|
-
|
|
76
62
|
/**
|
|
77
63
|
*
|
|
78
64
|
* @param {Uint8Array} componentBytes
|
|
@@ -83,7 +69,7 @@ export async function optimizeComponent(componentBytes, opts) {
|
|
|
83
69
|
const showSpinner = getShowSpinner();
|
|
84
70
|
let spinner;
|
|
85
71
|
try {
|
|
86
|
-
let componentMetadata = await metadataShow(componentBytes);
|
|
72
|
+
let componentMetadata = (await metadataShow(componentBytes));
|
|
87
73
|
componentMetadata.forEach((metadata, index) => {
|
|
88
74
|
// add index to the metadata object
|
|
89
75
|
metadata.index = index;
|
|
@@ -92,11 +78,9 @@ export async function optimizeComponent(componentBytes, opts) {
|
|
|
92
78
|
metadata.prevLEBLen = byteLengthLEB128(size);
|
|
93
79
|
});
|
|
94
80
|
const coreModules = componentMetadata.filter(({ metaType }) => metaType.tag === "module");
|
|
95
|
-
|
|
96
81
|
// log number of core Wasm modules to be run with wasm-opt
|
|
97
82
|
let completed = 0;
|
|
98
|
-
const spinnerText = () =>
|
|
99
|
-
`${styleText("cyan", `${completed} / ${coreModules.length}`)} Running Binaryen on WebAssembly Component Internal Core Modules \n`;
|
|
83
|
+
const spinnerText = () => `${styleText("cyan", `${completed} / ${coreModules.length}`)} Running Binaryen on WebAssembly Component Internal Core Modules \n`;
|
|
100
84
|
if (showSpinner) {
|
|
101
85
|
spinner = ora({
|
|
102
86
|
color: "cyan",
|
|
@@ -104,7 +88,6 @@ export async function optimizeComponent(componentBytes, opts) {
|
|
|
104
88
|
}).start();
|
|
105
89
|
spinner.text = spinnerText();
|
|
106
90
|
}
|
|
107
|
-
|
|
108
91
|
// gather the options for wasm-opt. optionally, adding the asyncify flag
|
|
109
92
|
const args = opts?.optArgs
|
|
110
93
|
? [...opts.optArgs]
|
|
@@ -112,33 +95,23 @@ export async function optimizeComponent(componentBytes, opts) {
|
|
|
112
95
|
if (opts?.asyncify) {
|
|
113
96
|
args.push("--asyncify");
|
|
114
97
|
}
|
|
115
|
-
|
|
116
98
|
// process core Wasm modules with wasm-opt
|
|
117
|
-
await Promise.all(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const newModuleSize = metadata.optimized.byteLength;
|
|
131
|
-
metadata.newLEBLen = byteLengthLEB128(newModuleSize);
|
|
132
|
-
metadata.sizeChange = newModuleSize - prevModuleSize;
|
|
133
|
-
|
|
134
|
-
if (spinner) {
|
|
135
|
-
completed++;
|
|
136
|
-
spinner.text = spinnerText();
|
|
137
|
-
}
|
|
99
|
+
await Promise.all(coreModules.map(async (metadata) => {
|
|
100
|
+
if (metadata.metaType.tag === "module") {
|
|
101
|
+
// store the wasm-opt processed module in the metadata
|
|
102
|
+
metadata.optimized = await wasmOpt(componentBytes.subarray(metadata.range[0], metadata.range[1]), args, opts);
|
|
103
|
+
// compute the size change, including the change to
|
|
104
|
+
// the LEB128 encoding of the size change
|
|
105
|
+
const prevModuleSize = metadata.range[1] - metadata.range[0];
|
|
106
|
+
const newModuleSize = metadata.optimized.byteLength;
|
|
107
|
+
metadata.newLEBLen = byteLengthLEB128(newModuleSize);
|
|
108
|
+
metadata.sizeChange = newModuleSize - prevModuleSize;
|
|
109
|
+
if (spinner) {
|
|
110
|
+
completed++;
|
|
111
|
+
spinner.text = spinnerText();
|
|
138
112
|
}
|
|
139
|
-
}
|
|
140
|
-
);
|
|
141
|
-
|
|
113
|
+
}
|
|
114
|
+
}));
|
|
142
115
|
// organize components in modules into tree parent and children
|
|
143
116
|
const nodes = componentMetadata.slice(1);
|
|
144
117
|
const getChildren = (parentIndex) => {
|
|
@@ -153,28 +126,23 @@ export async function optimizeComponent(componentBytes, opts) {
|
|
|
153
126
|
return sizeChange ? total + sizeChange + newLEBLen - prevLEBLen : total;
|
|
154
127
|
}, metadata.sizeChange || 0);
|
|
155
128
|
const prevSize = metadata.range[1] - metadata.range[0];
|
|
156
|
-
metadata.newLEBLen = byteLengthLEB128(prevSize + metadata.sizeChange);
|
|
129
|
+
metadata.newLEBLen = byteLengthLEB128(prevSize + (metadata.sizeChange ?? 0));
|
|
157
130
|
children.push(metadata);
|
|
158
131
|
}
|
|
159
132
|
}
|
|
160
133
|
return children;
|
|
161
134
|
};
|
|
162
135
|
const componentTree = getChildren(0);
|
|
163
|
-
|
|
164
136
|
// compute the total size change in the component binary
|
|
165
137
|
const sizeChange = componentTree.reduce((total, { prevLEBLen, newLEBLen, sizeChange }) => {
|
|
166
138
|
return total + (sizeChange || 0) + newLEBLen - prevLEBLen;
|
|
167
139
|
}, 0);
|
|
168
|
-
|
|
169
140
|
let outComponentBytes = new Uint8Array(componentBytes.byteLength + sizeChange);
|
|
170
|
-
let nextReadPos = 0,
|
|
171
|
-
nextWritePos = 0;
|
|
172
|
-
|
|
141
|
+
let nextReadPos = 0, nextWritePos = 0;
|
|
173
142
|
const write = ({ prevLEBLen, range, optimized, children, sizeChange }) => {
|
|
174
143
|
// write from the last read to the LEB byte start
|
|
175
144
|
outComponentBytes.set(componentBytes.subarray(nextReadPos, range[0] - prevLEBLen), nextWritePos);
|
|
176
145
|
nextWritePos += range[0] - prevLEBLen - nextReadPos;
|
|
177
|
-
|
|
178
146
|
// write the new LEB bytes
|
|
179
147
|
let val = range[1] - range[0] + sizeChange;
|
|
180
148
|
do {
|
|
@@ -182,53 +150,51 @@ export async function optimizeComponent(componentBytes, opts) {
|
|
|
182
150
|
val >>>= 7;
|
|
183
151
|
outComponentBytes[nextWritePos++] = val === 0 ? byte : byte | 0x80;
|
|
184
152
|
} while (val !== 0);
|
|
185
|
-
|
|
186
153
|
if (optimized) {
|
|
187
154
|
// write the core module
|
|
188
155
|
outComponentBytes.set(optimized, nextWritePos);
|
|
189
156
|
nextReadPos = range[1];
|
|
190
157
|
nextWritePos += optimized.byteLength;
|
|
191
|
-
}
|
|
158
|
+
}
|
|
159
|
+
else if (children.length > 0) {
|
|
192
160
|
// write child components / modules
|
|
193
161
|
nextReadPos = range[0];
|
|
194
162
|
children.forEach(write);
|
|
195
|
-
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
196
165
|
// write component
|
|
197
166
|
outComponentBytes.set(componentBytes.subarray(range[0], range[1]), nextWritePos);
|
|
198
167
|
nextReadPos = range[1];
|
|
199
168
|
nextWritePos += range[1] - range[0];
|
|
200
169
|
}
|
|
201
170
|
};
|
|
202
|
-
|
|
203
171
|
// write each top-level component / module
|
|
204
172
|
componentTree.forEach(write);
|
|
205
|
-
|
|
206
173
|
// write remaining
|
|
207
174
|
outComponentBytes.set(componentBytes.subarray(nextReadPos), nextWritePos);
|
|
208
|
-
|
|
209
175
|
// verify it still parses ok
|
|
210
176
|
if (!opts?.noVerify) {
|
|
211
177
|
try {
|
|
212
178
|
await print(outComponentBytes);
|
|
213
|
-
}
|
|
179
|
+
}
|
|
180
|
+
catch (e) {
|
|
214
181
|
throw new Error(`Internal error performing optimization.\n${e.message}`);
|
|
215
182
|
}
|
|
216
183
|
}
|
|
217
|
-
|
|
218
184
|
return {
|
|
219
185
|
component: outComponentBytes,
|
|
220
186
|
compressionInfo: coreModules.map(({ range, optimized }) => ({
|
|
221
187
|
beforeBytes: range[1] - range[0],
|
|
222
|
-
afterBytes: optimized
|
|
188
|
+
afterBytes: optimized.byteLength,
|
|
223
189
|
})),
|
|
224
190
|
};
|
|
225
|
-
}
|
|
191
|
+
}
|
|
192
|
+
finally {
|
|
226
193
|
if (spinner) {
|
|
227
194
|
spinner.stop();
|
|
228
195
|
}
|
|
229
196
|
}
|
|
230
197
|
}
|
|
231
|
-
|
|
232
198
|
/**
|
|
233
199
|
* @param {Uint8Array} source
|
|
234
200
|
* @param {Array<string>} args
|
|
@@ -236,18 +202,18 @@ export async function optimizeComponent(componentBytes, opts) {
|
|
|
236
202
|
*/
|
|
237
203
|
async function wasmOpt(source, args, transpileOpts) {
|
|
238
204
|
const wasmOptBin = transpileOpts?.wasmOptBin ?? fileURLToPath(import.meta.resolve("binaryen/bin/wasm-opt"));
|
|
239
|
-
|
|
240
205
|
try {
|
|
241
206
|
return await spawnIOTmp(wasmOptBin, source, [...args, "-o"]);
|
|
242
|
-
}
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
243
209
|
if (e.toString().includes("BasicBlock requested")) {
|
|
244
|
-
return wasmOpt(source, args);
|
|
210
|
+
return wasmOpt(source, args, transpileOpts);
|
|
245
211
|
}
|
|
246
212
|
throw e;
|
|
247
213
|
}
|
|
248
214
|
}
|
|
249
|
-
|
|
250
215
|
// see: https://github.com/vitest-dev/vitest/issues/6953#issuecomment-2505310022
|
|
251
216
|
if (typeof __vite_ssr_import_meta__ !== "undefined") {
|
|
252
217
|
__vite_ssr_import_meta__.resolve = (path) => "file://" + globalCreateRequire(import.meta.url).resolve(path);
|
|
253
218
|
}
|
|
219
|
+
//# sourceMappingURL=opt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opt.js","sourceRoot":"","sources":["../../src/cmd/opt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cmd/run.ts"],"names":[],"mappings":"AAWA,wBAAsB,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,iBAwBzE;AAED,wBAAsB,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,iBAqC3E"}
|
package/{src → dist}/cmd/run.js
RENAMED
|
@@ -3,20 +3,13 @@ import { basename, resolve, extname } from "node:path";
|
|
|
3
3
|
import { spawn } from "node:child_process";
|
|
4
4
|
import process from "node:process";
|
|
5
5
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
6
|
-
|
|
7
6
|
import { getTmpDir, styleText } from "../common.js";
|
|
8
7
|
import { transpileCmd } from "./transpile.js";
|
|
9
|
-
|
|
10
8
|
const DEFAULT_SERVE_HOST = "localhost";
|
|
11
|
-
|
|
12
9
|
export async function run(componentPath, args, opts) {
|
|
13
10
|
// Ensure that `args` is an array
|
|
14
11
|
args = [...args];
|
|
15
|
-
return runComponent(
|
|
16
|
-
componentPath,
|
|
17
|
-
args,
|
|
18
|
-
opts,
|
|
19
|
-
`
|
|
12
|
+
return runComponent(componentPath, args, opts, `
|
|
20
13
|
if (!mod.run || !mod.run.run) {
|
|
21
14
|
console.error('Not a valid command component to execute.');
|
|
22
15
|
process.exit(1);
|
|
@@ -31,10 +24,8 @@ export async function run(componentPath, args, opts) {
|
|
|
31
24
|
console.error(e);
|
|
32
25
|
process.exit(1);
|
|
33
26
|
}
|
|
34
|
-
|
|
35
|
-
);
|
|
27
|
+
`);
|
|
36
28
|
}
|
|
37
|
-
|
|
38
29
|
export async function serve(componentPath, args, opts) {
|
|
39
30
|
let tryFindPort = false;
|
|
40
31
|
let { port, host } = opts;
|
|
@@ -45,17 +36,12 @@ export async function serve(componentPath, args, opts) {
|
|
|
45
36
|
// Ensure that `args` is an array
|
|
46
37
|
args = [...args];
|
|
47
38
|
host = host ?? DEFAULT_SERVE_HOST;
|
|
48
|
-
return runComponent(
|
|
49
|
-
componentPath,
|
|
50
|
-
args,
|
|
51
|
-
opts,
|
|
52
|
-
`
|
|
39
|
+
return runComponent(componentPath, args, opts, `
|
|
53
40
|
import { HTTPServer } from '@bytecodealliance/preview2-shim/http';
|
|
54
41
|
const server = new HTTPServer(mod.incomingHandler);
|
|
55
42
|
let port = ${port};
|
|
56
|
-
${
|
|
57
|
-
|
|
58
|
-
? `
|
|
43
|
+
${tryFindPort
|
|
44
|
+
? `
|
|
59
45
|
while (true) {
|
|
60
46
|
try {
|
|
61
47
|
server.listen(port, ${JSON.stringify(host)});
|
|
@@ -67,22 +53,17 @@ export async function serve(componentPath, args, opts) {
|
|
|
67
53
|
port++;
|
|
68
54
|
}
|
|
69
55
|
`
|
|
70
|
-
|
|
71
|
-
}
|
|
56
|
+
: `server.listen(port, ${JSON.stringify(host)})`}
|
|
72
57
|
console.error(\`Server listening @ ${host}:${port}...\`);
|
|
73
|
-
|
|
74
|
-
);
|
|
58
|
+
`);
|
|
75
59
|
}
|
|
76
|
-
|
|
77
60
|
async function runComponent(componentPath, args, opts, executor) {
|
|
78
61
|
const jcoImport = opts.jcoImport ? resolve(opts.jcoImport) : null;
|
|
79
|
-
|
|
80
62
|
const name = basename(componentPath.slice(0, -extname(componentPath).length || Infinity));
|
|
81
63
|
const outDir = opts.jcoDir || (await getTmpDir());
|
|
82
64
|
if (opts.jcoDir) {
|
|
83
65
|
await mkdir(outDir, { recursive: true });
|
|
84
66
|
}
|
|
85
|
-
|
|
86
67
|
try {
|
|
87
68
|
try {
|
|
88
69
|
await transpileCmd(componentPath, {
|
|
@@ -95,41 +76,35 @@ async function runComponent(componentPath, args, opts, executor) {
|
|
|
95
76
|
map: opts.jcoMap,
|
|
96
77
|
importBindings: opts.jcoImportBindings,
|
|
97
78
|
});
|
|
98
|
-
}
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
99
81
|
throw new Error("Unable to transpile command for execution", {
|
|
100
82
|
cause: e,
|
|
101
83
|
});
|
|
102
84
|
}
|
|
103
|
-
|
|
104
85
|
await writeFile(resolve(outDir, "package.json"), JSON.stringify({ type: "module" }));
|
|
105
|
-
|
|
106
86
|
let preview2ShimPath;
|
|
107
87
|
try {
|
|
108
|
-
preview2ShimPath = resolve(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
} catch (err) {
|
|
88
|
+
preview2ShimPath = resolve(fileURLToPath(import.meta.resolve("@bytecodealliance/preview2-shim")), "../../../");
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
const error = err;
|
|
113
92
|
let msg = `${styleText(["red", "bold"], "error")} Failed to resolve ${styleText("bold", "@bytecodealliance/preview2-shim")}, ensure it is installed.`;
|
|
114
|
-
msg += `\nERROR:\n${
|
|
93
|
+
msg += `\nERROR:\n${error.toString()}`;
|
|
115
94
|
throw new Error(msg);
|
|
116
95
|
}
|
|
117
|
-
|
|
118
96
|
const modulesDir = resolve(outDir, "node_modules", "@bytecodealliance");
|
|
119
97
|
await mkdir(modulesDir, { recursive: true });
|
|
120
|
-
|
|
121
98
|
try {
|
|
122
99
|
await symlink(preview2ShimPath, resolve(modulesDir, "preview2-shim"), "dir");
|
|
123
|
-
}
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
124
102
|
if (e.code !== "EEXIST") {
|
|
125
103
|
throw e;
|
|
126
104
|
}
|
|
127
105
|
}
|
|
128
|
-
|
|
129
106
|
const runPath = resolve(outDir, "_run.js");
|
|
130
|
-
await writeFile(
|
|
131
|
-
runPath,
|
|
132
|
-
`
|
|
107
|
+
await writeFile(runPath, `
|
|
133
108
|
${jcoImport ? `import ${JSON.stringify(pathToFileURL(jcoImport))}` : ""}
|
|
134
109
|
import process from 'node:process';
|
|
135
110
|
try {
|
|
@@ -137,28 +112,23 @@ async function runComponent(componentPath, args, opts, executor) {
|
|
|
137
112
|
} catch {}
|
|
138
113
|
const mod = await import('./${name}.js');
|
|
139
114
|
${executor}
|
|
140
|
-
|
|
141
|
-
);
|
|
142
|
-
|
|
115
|
+
`);
|
|
143
116
|
const nodePath = process.env.JCO_RUN_PATH || process.argv[0];
|
|
144
|
-
|
|
145
117
|
process.exitCode = await new Promise((resolve, reject) => {
|
|
146
|
-
const cp = spawn(
|
|
147
|
-
nodePath,
|
|
148
|
-
[...(process.env.JCO_RUN_ARGS ? process.env.JCO_RUN_ARGS.split(" ") : []), runPath, ...args],
|
|
149
|
-
{ stdio: "inherit" },
|
|
150
|
-
);
|
|
151
|
-
|
|
118
|
+
const cp = spawn(nodePath, [...(process.env.JCO_RUN_ARGS ? process.env.JCO_RUN_ARGS.split(" ") : []), runPath, ...args], { stdio: "inherit" });
|
|
152
119
|
cp.on("error", reject);
|
|
153
120
|
cp.on("exit", resolve);
|
|
154
121
|
});
|
|
155
|
-
}
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
156
124
|
try {
|
|
157
125
|
if (!opts.jcoDir) {
|
|
158
126
|
await rm(outDir, { recursive: true });
|
|
159
127
|
}
|
|
160
|
-
}
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
161
130
|
// empty
|
|
162
131
|
}
|
|
163
132
|
}
|
|
164
133
|
}
|
|
134
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cmd/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface TranspileOpts {
|
|
2
|
+
name?: string;
|
|
3
|
+
instantiation?: "async" | "sync";
|
|
4
|
+
importBindings?: "js" | "optimized" | "hybrid" | "direct-optimized";
|
|
5
|
+
map?: Record<string, string>;
|
|
6
|
+
asyncMode?: string;
|
|
7
|
+
asyncImports?: string[];
|
|
8
|
+
asyncExports?: string[];
|
|
9
|
+
validLiftingOptimization?: boolean;
|
|
10
|
+
tracing?: boolean;
|
|
11
|
+
nodejsCompat?: boolean;
|
|
12
|
+
tlaCompat?: boolean;
|
|
13
|
+
base64Cutoff?: number;
|
|
14
|
+
js?: boolean;
|
|
15
|
+
minify?: boolean;
|
|
16
|
+
optimize?: boolean;
|
|
17
|
+
namespacedExports?: boolean;
|
|
18
|
+
outDir?: string;
|
|
19
|
+
multiMemory?: boolean;
|
|
20
|
+
experimentalIdlImports?: boolean;
|
|
21
|
+
optArgs?: string[];
|
|
22
|
+
wasmOptBin?: string[];
|
|
23
|
+
quiet?: boolean;
|
|
24
|
+
noTypescript?: boolean;
|
|
25
|
+
wasiShim?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export { types, guestTypes, typesComponent } from "./types.js";
|
|
28
|
+
/**
|
|
29
|
+
* Transpile a component, given a path.
|
|
30
|
+
*
|
|
31
|
+
* @param {string} componentPath
|
|
32
|
+
* @param {TranspileOpts} opts
|
|
33
|
+
* @param {object} comander `Program` object
|
|
34
|
+
*/
|
|
35
|
+
export declare function transpileCmd(componentPath: string, opts: TranspileOpts, program?: any): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Transpile a component, given WebAssembly bytes.
|
|
38
|
+
*
|
|
39
|
+
* @param {Uint8Array} component
|
|
40
|
+
* @param {TranspileOpts} [opts]
|
|
41
|
+
* @returns {Promise<{ files: { [filename: string]: Uint8Array }, imports: string[], exports: [string, 'function' | 'instance'][] }>}
|
|
42
|
+
*/
|
|
43
|
+
export declare function transpileComponent(component: Uint8Array, opts?: TranspileOpts): Promise<{
|
|
44
|
+
files: Record<string, Uint8Array>;
|
|
45
|
+
imports: string[];
|
|
46
|
+
exports: [string, "function" | "instance"][];
|
|
47
|
+
}>;
|
|
48
|
+
//# sourceMappingURL=transpile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transpile.d.ts","sourceRoot":"","sources":["../../src/cmd/transpile.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,QAAQ,GAAG,kBAAkB,CAAC;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAGD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3G;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,GAAE,aAAkB;WAEzE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;aACxB,MAAM,EAAE;aACR,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,EAAE;GAEnD"}
|
|
@@ -1,38 +1,8 @@
|
|
|
1
1
|
/* global Buffer */
|
|
2
|
-
|
|
3
2
|
import { transpile, transpileBytes } from "@bytecodealliance/jco-transpile";
|
|
4
|
-
|
|
5
3
|
import { setShowSpinner, writeFiles } from "../common.js";
|
|
6
|
-
|
|
7
4
|
// These re-exports exist to avoid breaking backwards compatibility
|
|
8
5
|
export { types, guestTypes, typesComponent } from "./types.js";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @typedef {{
|
|
12
|
-
* name: string,
|
|
13
|
-
* instantiation?: 'async' | 'sync',
|
|
14
|
-
* importBindings?: 'js' | 'optimized' | 'hybrid' | 'direct-optimized',
|
|
15
|
-
* map?: Record<string, string>,
|
|
16
|
-
* asyncMode?: string,
|
|
17
|
-
* asyncImports?: string[],
|
|
18
|
-
* asyncExports?: string[],
|
|
19
|
-
* validLiftingOptimization?: bool,
|
|
20
|
-
* tracing?: bool,
|
|
21
|
-
* nodejsCompat?: bool,
|
|
22
|
-
* tlaCompat?: bool,
|
|
23
|
-
* base64Cutoff?: bool,
|
|
24
|
-
* js?: bool,
|
|
25
|
-
* minify?: bool,
|
|
26
|
-
* optimize?: bool,
|
|
27
|
-
* namespacedExports?: bool,
|
|
28
|
-
* outDir?: string,
|
|
29
|
-
* multiMemory?: bool,
|
|
30
|
-
* experimentalIdlImports?: bool,
|
|
31
|
-
* optArgs?: string[],
|
|
32
|
-
* wasmOptBin?: string[],
|
|
33
|
-
* }} TranspileOpts
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
6
|
/**
|
|
37
7
|
* Transpile a component, given a path.
|
|
38
8
|
*
|
|
@@ -44,7 +14,6 @@ export async function transpileCmd(componentPath, opts, program) {
|
|
|
44
14
|
const { files } = await transpile(componentPath, prepOpts(opts, program));
|
|
45
15
|
await writeFiles(files, opts.quiet ? false : "Transpiled JS Component Files");
|
|
46
16
|
}
|
|
47
|
-
|
|
48
17
|
/**
|
|
49
18
|
* Transpile a component, given WebAssembly bytes.
|
|
50
19
|
*
|
|
@@ -55,17 +24,14 @@ export async function transpileCmd(componentPath, opts, program) {
|
|
|
55
24
|
export async function transpileComponent(component, opts = {}) {
|
|
56
25
|
return transpileBytes(component, prepOpts(opts));
|
|
57
26
|
}
|
|
58
|
-
|
|
59
27
|
function prepOpts(opts, program) {
|
|
60
28
|
const varIdx = program?.parent.rawArgs.indexOf("--");
|
|
61
29
|
if (varIdx !== undefined && varIdx !== -1) {
|
|
62
30
|
opts.optArgs = program.parent.rawArgs.slice(varIdx + 1);
|
|
63
31
|
}
|
|
64
|
-
|
|
65
32
|
if (!opts.quiet) {
|
|
66
33
|
setShowSpinner(true);
|
|
67
34
|
}
|
|
68
|
-
|
|
69
35
|
if (opts.map) {
|
|
70
36
|
if (typeof opts.map === "string") {
|
|
71
37
|
opts.map = opts.map.split(",");
|
|
@@ -74,11 +40,10 @@ function prepOpts(opts, program) {
|
|
|
74
40
|
opts.map = Object.fromEntries(opts.map.map((s) => s.split("=")));
|
|
75
41
|
}
|
|
76
42
|
}
|
|
77
|
-
|
|
78
43
|
return opts;
|
|
79
44
|
}
|
|
80
|
-
|
|
81
45
|
// see: https://github.com/vitest-dev/vitest/issues/6953#issuecomment-2505310022
|
|
82
46
|
if (typeof __vite_ssr_import_meta__ !== "undefined") {
|
|
83
47
|
__vite_ssr_import_meta__.resolve = (path) => "file://" + globalCreateRequire(import.meta.url).resolve(path);
|
|
84
48
|
}
|
|
49
|
+
//# sourceMappingURL=transpile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transpile.js","sourceRoot":"","sources":["../../src/cmd/transpile.ts"],"names":[],"mappings":"AAAA,mBAAmB;AAEnB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAE5E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAgC1D,mEAAmE;AACnE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,aAAqB,EAAE,IAAmB,EAAE,OAAa;IACxF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,MAAM,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,SAAqB,EAAE,OAAsB,EAAE;IACpF,OAAO,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAI7C,CAAC;AACP,CAAC;AAED,SAAS,QAAQ,CAAC,IAAS,EAAE,OAAa;IACtC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,cAAc,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,IAAI,OAAO,wBAAwB,KAAK,WAAW,EAAE,CAAC;IAClD,wBAAwB,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChH,CAAC"}
|