@bytecodealliance/jco 1.10.2 → 1.11.1
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/obj/js-component-bindgen-component.core.wasm +0 -0
- package/obj/js-component-bindgen-component.js +2 -2
- package/obj/wasm-tools.core.wasm +0 -0
- package/obj/wasm-tools.js +2 -2
- package/package.json +18 -6
- package/src/cmd/componentize.js +64 -18
- package/src/cmd/opt.js +233 -202
- package/src/cmd/run.js +117 -73
- package/src/cmd/transpile.d.ts.map +1 -1
- package/src/cmd/transpile.js +643 -530
- package/src/cmd/wasm-tools.js +130 -95
- package/src/jco.js +5 -1
|
Binary file
|
|
@@ -4132,8 +4132,8 @@ export const $init = (() => {
|
|
|
4132
4132
|
let gen = (function* init () {
|
|
4133
4133
|
const module0 = fetchCompile(new URL('./js-component-bindgen-component.core.wasm', import.meta.url));
|
|
4134
4134
|
const module1 = fetchCompile(new URL('./js-component-bindgen-component.core2.wasm', import.meta.url));
|
|
4135
|
-
const module2 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwADJiUHCAkCAgQEAgIKAgsBAQAAAAUDAwAAAAUMAAMDAAYGAA0BAQEBBAUBcAElJQe7ASYBMAAAATEAAQEyAAIBMwADATQABAE1AAUBNgAGATcABwE4AAgBOQAJAjEwAAoCMTEACwIxMgAMAjEzAA0CMTQADgIxNQAPAjE2ABACMTcAEQIxOAASAjE5ABMCMjAAFAIyMQAVAjIyABYCMjMAFwIyNAAYAjI1ABkCMjYAGgIyNwAbAjI4ABwCMjkAHQIzMAAeAjMxAB8CMzIAIAIzMwAhAjM0ACICMzUAIwIzNgAkCCRpbXBvcnRzAQAK+
|
|
4136
|
-
const module3 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+
|
|
4135
|
+
const module2 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwADJiUHCAkCAgQEAgIKAgsBAQAAAAUDAwAAAAUMAAMDAAYGAA0BAQEBBAUBcAElJQe7ASYBMAAAATEAAQEyAAIBMwADATQABAE1AAUBNgAGATcABwE4AAgBOQAJAjEwAAoCMTEACwIxMgAMAjEzAA0CMTQADgIxNQAPAjE2ABACMTcAEQIxOAASAjE5ABMCMjAAFAIyMQAVAjIyABYCMjMAFwIyNAAYAjI1ABkCMjYAGgIyNwAbAjI4ABwCMjkAHQIzMAAeAjMxAB8CMzIAIAIzMwAhAjM0ACICMzUAIwIzNgAkCCRpbXBvcnRzAQAK+QMlGQAgACABIAIgAyAEIAUgBiAHIAhBABEHAAsRACAAIAEgAiADIARBAREIAAsRACAAIAEgAiADIARBAhEJAAsLACAAIAFBAxECAAsLACAAIAFBBBECAAsPACAAIAEgAiADQQURBAALDwAgACABIAIgA0EGEQQACwsAIAAgAUEHEQIACwsAIAAgAUEIEQIACwkAIABBCREKAAsLACAAIAFBChECAAsNACAAIAEgAkELEQsACwkAIABBDBEBAAsJACAAQQ0RAQALCwAgACABQQ4RAAALCwAgACABQQ8RAAALCwAgACABQRARAAALEQAgACABIAIgAyAEQRERBQALDQAgACABIAJBEhEDAAsNACAAIAEgAkETEQMACwsAIAAgAUEUEQAACwsAIAAgAUEVEQAACwsAIAAgAUEWEQAACxEAIAAgASACIAMgBEEXEQUACxUAIAAgASACIAMgBCAFIAZBGBEMAAsLACAAIAFBGREAAAsNACAAIAEgAkEaEQMACw0AIAAgASACQRsRAwALCwAgACABQRwRAAALDwAgACABIAIgA0EdEQYACw8AIAAgASACIANBHhEGAAsLACAAIAFBHxEAAAsLACAAIAFBIBENAAsJACAAQSERAQALCQAgAEEiEQEACwkAIABBIxEBAAsJACAAQSQRAQALAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMjcuMQ');
|
|
4136
|
+
const module3 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwAC5AEmAAEwAAcAATEACAABMgAJAAEzAAIAATQAAgABNQAEAAE2AAQAATcAAgABOAACAAE5AAoAAjEwAAIAAjExAAsAAjEyAAEAAjEzAAEAAjE0AAAAAjE1AAAAAjE2AAAAAjE3AAUAAjE4AAMAAjE5AAMAAjIwAAAAAjIxAAAAAjIyAAAAAjIzAAUAAjI0AAwAAjI1AAAAAjI2AAMAAjI3AAMAAjI4AAAAAjI5AAYAAjMwAAYAAjMxAAAAAjMyAA0AAjMzAAEAAjM0AAEAAjM1AAEAAjM2AAEACCRpbXBvcnRzAXABJSUJKwEAQQALJQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQALwlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQENd2l0LWNvbXBvbmVudAcwLjIyNy4x');
|
|
4137
4137
|
({ exports: exports0 } = yield instantiateCore(yield module2));
|
|
4138
4138
|
({ exports: exports1 } = yield instantiateCore(yield module0, {
|
|
4139
4139
|
wasi_snapshot_preview1: {
|
package/obj/wasm-tools.core.wasm
CHANGED
|
Binary file
|
package/obj/wasm-tools.js
CHANGED
|
@@ -4184,8 +4184,8 @@ export const $init = (() => {
|
|
|
4184
4184
|
let gen = (function* init () {
|
|
4185
4185
|
const module0 = fetchCompile(new URL('./wasm-tools.core.wasm', import.meta.url));
|
|
4186
4186
|
const module1 = fetchCompile(new URL('./wasm-tools.core2.wasm', import.meta.url));
|
|
4187
|
-
const module2 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwADJiUHCAkCAgQEAgIKAgsBAQAAAAUDAwAAAAUMAAMDAAYGAA0BAQEBBAUBcAElJQe7ASYBMAAAATEAAQEyAAIBMwADATQABAE1AAUBNgAGATcABwE4AAgBOQAJAjEwAAoCMTEACwIxMgAMAjEzAA0CMTQADgIxNQAPAjE2ABACMTcAEQIxOAASAjE5ABMCMjAAFAIyMQAVAjIyABYCMjMAFwIyNAAYAjI1ABkCMjYAGgIyNwAbAjI4ABwCMjkAHQIzMAAeAjMxAB8CMzIAIAIzMwAhAjM0ACICMzUAIwIzNgAkCCRpbXBvcnRzAQAK+
|
|
4188
|
-
const module3 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+
|
|
4187
|
+
const module2 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwADJiUHCAkCAgQEAgIKAgsBAQAAAAUDAwAAAAUMAAMDAAYGAA0BAQEBBAUBcAElJQe7ASYBMAAAATEAAQEyAAIBMwADATQABAE1AAUBNgAGATcABwE4AAgBOQAJAjEwAAoCMTEACwIxMgAMAjEzAA0CMTQADgIxNQAPAjE2ABACMTcAEQIxOAASAjE5ABMCMjAAFAIyMQAVAjIyABYCMjMAFwIyNAAYAjI1ABkCMjYAGgIyNwAbAjI4ABwCMjkAHQIzMAAeAjMxAB8CMzIAIAIzMwAhAjM0ACICMzUAIwIzNgAkCCRpbXBvcnRzAQAK+QMlGQAgACABIAIgAyAEIAUgBiAHIAhBABEHAAsRACAAIAEgAiADIARBAREIAAsRACAAIAEgAiADIARBAhEJAAsLACAAIAFBAxECAAsLACAAIAFBBBECAAsPACAAIAEgAiADQQURBAALDwAgACABIAIgA0EGEQQACwsAIAAgAUEHEQIACwsAIAAgAUEIEQIACwkAIABBCREKAAsLACAAIAFBChECAAsNACAAIAEgAkELEQsACwkAIABBDBEBAAsJACAAQQ0RAQALCwAgACABQQ4RAAALCwAgACABQQ8RAAALCwAgACABQRARAAALEQAgACABIAIgAyAEQRERBQALDQAgACABIAJBEhEDAAsNACAAIAEgAkETEQMACwsAIAAgAUEUEQAACwsAIAAgAUEVEQAACwsAIAAgAUEWEQAACxEAIAAgASACIAMgBEEXEQUACxUAIAAgASACIAMgBCAFIAZBGBEMAAsLACAAIAFBGREAAAsNACAAIAEgAkEaEQMACw0AIAAgASACQRsRAwALCwAgACABQRwRAAALDwAgACABIAIgA0EdEQYACw8AIAAgASACIANBHhEGAAsLACAAIAFBHxEAAAsLACAAIAFBIBENAAsJACAAQSERAQALCQAgAEEiEQEACwkAIABBIxEBAAsJACAAQSQRAQALAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMjcuMQ');
|
|
4188
|
+
const module3 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwAC5AEmAAEwAAcAATEACAABMgAJAAEzAAIAATQAAgABNQAEAAE2AAQAATcAAgABOAACAAE5AAoAAjEwAAIAAjExAAsAAjEyAAEAAjEzAAEAAjE0AAAAAjE1AAAAAjE2AAAAAjE3AAUAAjE4AAMAAjE5AAMAAjIwAAAAAjIxAAAAAjIyAAAAAjIzAAUAAjI0AAwAAjI1AAAAAjI2AAMAAjI3AAMAAjI4AAAAAjI5AAYAAjMwAAYAAjMxAAAAAjMyAA0AAjMzAAEAAjM0AAEAAjM1AAEAAjM2AAEACCRpbXBvcnRzAXABJSUJKwEAQQALJQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQALwlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQENd2l0LWNvbXBvbmVudAcwLjIyNy4x');
|
|
4189
4189
|
({ exports: exports0 } = yield instantiateCore(yield module2));
|
|
4190
4190
|
({ exports: exports1 } = yield instantiateCore(yield module0, {
|
|
4191
4191
|
wasi_snapshot_preview1: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bytecodealliance/jco",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.1",
|
|
4
4
|
"description": "JavaScript tooling for working with WebAssembly Components",
|
|
5
5
|
"author": "Guy Bedford",
|
|
6
6
|
"bin": {
|
|
@@ -38,10 +38,14 @@
|
|
|
38
38
|
"@typescript-eslint/eslint-plugin": "^8.2.0",
|
|
39
39
|
"@typescript-eslint/parser": "^8.2.0",
|
|
40
40
|
"eslint": "^9.9.0",
|
|
41
|
+
"eslint-config-prettier": "^10.1.1",
|
|
42
|
+
"eslint-plugin-prettier": "^5.2.3",
|
|
41
43
|
"mime": "^4.0.4",
|
|
42
|
-
"
|
|
44
|
+
"prettier": "^3.5.3",
|
|
43
45
|
"puppeteer": "^24.0.1",
|
|
44
|
-
"
|
|
46
|
+
"smol-toml": "^1.3.1",
|
|
47
|
+
"typescript": "^5.5.4",
|
|
48
|
+
"vitest": "^3.0.7"
|
|
45
49
|
},
|
|
46
50
|
"repository": {
|
|
47
51
|
"type": "git",
|
|
@@ -61,9 +65,10 @@
|
|
|
61
65
|
"build": "cargo xtask build debug",
|
|
62
66
|
"build:release": "cargo xtask build release",
|
|
63
67
|
"build:types:preview2-shim": "cargo xtask generate wasi-types",
|
|
64
|
-
"lint": "eslint -c eslintrc.
|
|
65
|
-
"
|
|
66
|
-
"test": "
|
|
68
|
+
"lint": "eslint -c eslintrc.mjs src/**/*.js packages/*/lib/**/*.js",
|
|
69
|
+
"lint:fix": "npm run lint -- --fix",
|
|
70
|
+
"test": "vitest run -c test/vitest.ts",
|
|
71
|
+
"test:lts": "vitest run -c test/vitest.lts.ts",
|
|
67
72
|
"prepublishOnly": "cargo xtask build release && npm run test"
|
|
68
73
|
},
|
|
69
74
|
"files": [
|
|
@@ -75,6 +80,13 @@
|
|
|
75
80
|
"obj/interfaces"
|
|
76
81
|
],
|
|
77
82
|
"workspaces": [
|
|
83
|
+
".",
|
|
84
|
+
"examples/components/add",
|
|
85
|
+
"examples/components/http-hello-world",
|
|
86
|
+
"examples/components/node-fetch",
|
|
87
|
+
"examples/components/string-reverse",
|
|
88
|
+
"examples/components/string-reverse-upper",
|
|
89
|
+
"examples/components/webidl-book-library",
|
|
78
90
|
"packages/preview2-shim"
|
|
79
91
|
]
|
|
80
92
|
}
|
package/src/cmd/componentize.js
CHANGED
|
@@ -1,23 +1,69 @@
|
|
|
1
1
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { resolve, basename } from 'node:path';
|
|
3
|
+
|
|
3
4
|
import c from 'chalk-template';
|
|
4
5
|
|
|
5
|
-
export async function componentize
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
6
|
+
export async function componentize(jsSource, opts) {
|
|
7
|
+
const { componentize: componentizeFn } = await eval(
|
|
8
|
+
'import("@bytecodealliance/componentize-js")'
|
|
9
|
+
);
|
|
10
|
+
if (opts.disable?.includes('all')) {
|
|
11
|
+
opts.disable = ['stdio', 'random', 'clocks', 'http'];
|
|
12
|
+
}
|
|
13
|
+
const source = await readFile(jsSource, 'utf8');
|
|
14
|
+
|
|
15
|
+
const witPath = resolve(opts.wit);
|
|
16
|
+
const sourceName = basename(jsSource);
|
|
17
|
+
|
|
18
|
+
let component;
|
|
19
|
+
try {
|
|
20
|
+
const result = await componentizeFn(source, {
|
|
21
|
+
enableAot: opts.aot,
|
|
22
|
+
aotMinStackSizeBytes: opts.aotMinStackSizeBytes,
|
|
23
|
+
wevalBin: opts.wevalBin,
|
|
24
|
+
sourceName,
|
|
25
|
+
witPath,
|
|
26
|
+
worldName: opts.worldName,
|
|
27
|
+
disableFeatures: opts.disable,
|
|
28
|
+
enableFeatures: opts.enable,
|
|
29
|
+
preview2Adapter: opts.preview2Adapter,
|
|
30
|
+
debugBuild: opts.debugStarlingmonkeyBuild,
|
|
31
|
+
});
|
|
32
|
+
component = result.component;
|
|
33
|
+
} catch (err) {
|
|
34
|
+
// Detect package resolution issues that usually mean a misconfigured "witPath"
|
|
35
|
+
if (err.toString().includes('no known packages')) {
|
|
36
|
+
const isFile = await stat(witPath).then((s) => s.isFile());
|
|
37
|
+
if (isFile) {
|
|
38
|
+
const hint = await printWITPathHint(witPath);
|
|
39
|
+
if (err.message) {
|
|
40
|
+
err.message += `\n${hint}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
throw err;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
await writeFile(opts.out, component);
|
|
48
|
+
|
|
49
|
+
console.log(c`{green OK} Successfully written {bold ${opts.out}}.`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Print a hint about the witPath option that may be incorrect
|
|
54
|
+
*
|
|
55
|
+
* @param {string} witPath - witPath option that was used (which is a path that resolves to a file or directory)
|
|
56
|
+
* @returns {string} user-visible, highlighted output that can be printed
|
|
57
|
+
*/
|
|
58
|
+
async function printWITPathHint(witPath) {
|
|
59
|
+
const pathMeta = await stat(witPath);
|
|
60
|
+
let output = '\n';
|
|
61
|
+
if (!pathMeta.isFile() && !pathMeta.isDirectory()) {
|
|
62
|
+
output += c`{yellow.bold warning} The supplited WIT path [${witPath}] is neither a file or directory.\n`;
|
|
63
|
+
return output;
|
|
64
|
+
}
|
|
65
|
+
output += c`{yellow.bold warning} Your WIT path option [${witPath}] may be incorrect\n`;
|
|
66
|
+
output += c`{yellow.bold warning} When using a world with dependencies, you must pass the enclosing WIT folder, not a single file.\n`;
|
|
67
|
+
output += c`{yellow.bold warning} (e.g. 'wit/', rather than 'wit/component.wit').\n`;
|
|
68
|
+
return output;
|
|
23
69
|
}
|