@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.
Files changed (70) hide show
  1. package/README.md +27 -4
  2. package/dist/api.d.ts +6 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/{src → dist}/api.js +2 -12
  5. package/dist/api.js.map +1 -0
  6. package/dist/browser.d.ts +5 -0
  7. package/dist/browser.d.ts.map +1 -0
  8. package/dist/browser.js +12 -0
  9. package/dist/browser.js.map +1 -0
  10. package/dist/bundle.d.ts +42 -0
  11. package/dist/bundle.d.ts.map +1 -0
  12. package/dist/bundle.js +124 -0
  13. package/dist/bundle.js.map +1 -0
  14. package/dist/cmd/componentize.d.ts +34 -0
  15. package/dist/cmd/componentize.d.ts.map +1 -0
  16. package/dist/cmd/componentize.js +243 -0
  17. package/dist/cmd/componentize.js.map +1 -0
  18. package/{types → dist}/cmd/opt.d.ts +17 -12
  19. package/dist/cmd/opt.d.ts.map +1 -0
  20. package/{src → dist}/cmd/opt.js +53 -87
  21. package/dist/cmd/opt.js.map +1 -0
  22. package/dist/cmd/run.d.ts +3 -0
  23. package/dist/cmd/run.d.ts.map +1 -0
  24. package/{src → dist}/cmd/run.js +24 -54
  25. package/dist/cmd/run.js.map +1 -0
  26. package/dist/cmd/transpile.d.ts +48 -0
  27. package/dist/cmd/transpile.d.ts.map +1 -0
  28. package/{src → dist}/cmd/transpile.js +1 -36
  29. package/dist/cmd/transpile.js.map +1 -0
  30. package/{types → dist}/cmd/types.d.ts +21 -22
  31. package/dist/cmd/types.d.ts.map +1 -0
  32. package/{src → dist}/cmd/types.js +27 -51
  33. package/dist/cmd/types.js.map +1 -0
  34. package/dist/cmd/wasm-tools.d.ts +8 -0
  35. package/dist/cmd/wasm-tools.d.ts.map +1 -0
  36. package/{src → dist}/cmd/wasm-tools.js +28 -42
  37. package/dist/cmd/wasm-tools.js.map +1 -0
  38. package/{types → dist}/common.d.ts +27 -25
  39. package/dist/common.d.ts.map +1 -0
  40. package/{src → dist}/common.js +19 -44
  41. package/dist/common.js.map +1 -0
  42. package/{types → dist}/jco.d.ts.map +1 -1
  43. package/{src → dist}/jco.js +74 -149
  44. package/dist/jco.js.map +1 -0
  45. package/dist/ora-shim.d.ts +9 -0
  46. package/dist/ora-shim.d.ts.map +1 -0
  47. package/dist/ora-shim.js +10 -0
  48. package/dist/ora-shim.js.map +1 -0
  49. package/package.json +22 -22
  50. package/src/browser.js +0 -18
  51. package/src/cmd/componentize.js +0 -170
  52. package/src/ora-shim.js +0 -9
  53. package/types/api.d.ts +0 -6
  54. package/types/api.d.ts.map +0 -1
  55. package/types/browser.d.ts +0 -4
  56. package/types/browser.d.ts.map +0 -1
  57. package/types/cmd/componentize.d.ts +0 -2
  58. package/types/cmd/componentize.d.ts.map +0 -1
  59. package/types/cmd/opt.d.ts.map +0 -1
  60. package/types/cmd/run.d.ts +0 -3
  61. package/types/cmd/run.d.ts.map +0 -1
  62. package/types/cmd/transpile.d.ts +0 -72
  63. package/types/cmd/transpile.d.ts.map +0 -1
  64. package/types/cmd/types.d.ts.map +0 -1
  65. package/types/cmd/wasm-tools.d.ts +0 -8
  66. package/types/cmd/wasm-tools.d.ts.map +0 -1
  67. package/types/common.d.ts.map +0 -1
  68. package/types/ora-shim.d.ts +0 -8
  69. package/types/ora-shim.d.ts.map +0 -1
  70. /package/{types → dist}/jco.d.ts +0 -0
@@ -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
- ...compressionInfo.map(({ beforeBytes, afterBytes }, i) => {
33
- totalBeforeBytes += beforeBytes;
34
- totalAfterBytes += afterBytes;
35
- return [
36
- ` - Core Module ${i + 1}: `,
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
- [, , , , "right"],
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
- coreModules.map(async (metadata) => {
119
- if (metadata.metaType.tag === "module") {
120
- // store the wasm-opt processed module in the metadata
121
- metadata.optimized = await wasmOpt(
122
- componentBytes.subarray(metadata.range[0], metadata.range[1]),
123
- args,
124
- opts,
125
- );
126
-
127
- // compute the size change, including the change to
128
- // the LEB128 encoding of the size change
129
- const prevModuleSize = metadata.range[1] - metadata.range[0];
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
- } else if (children.length > 0) {
158
+ }
159
+ else if (children.length > 0) {
192
160
  // write child components / modules
193
161
  nextReadPos = range[0];
194
162
  children.forEach(write);
195
- } else {
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
- } catch (e) {
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?.byteLength,
188
+ afterBytes: optimized.byteLength,
223
189
  })),
224
190
  };
225
- } finally {
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
- } catch (e) {
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,3 @@
1
+ export declare function run(componentPath: string, args: string[], opts: any): Promise<void>;
2
+ export declare function serve(componentPath: string, args: string[], opts: any): Promise<void>;
3
+ //# sourceMappingURL=run.d.ts.map
@@ -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"}
@@ -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
- tryFindPort
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
- : `server.listen(port, ${JSON.stringify(host)})`
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
- } catch (e) {
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
- fileURLToPath(import.meta.resolve("@bytecodealliance/preview2-shim")),
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${err.toString()}`;
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
- } catch (e) {
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
- } finally {
122
+ }
123
+ finally {
156
124
  try {
157
125
  if (!opts.jcoDir) {
158
126
  await rm(outDir, { recursive: true });
159
127
  }
160
- } catch {
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"}