@bytecodealliance/jco 0.12.1 → 0.12.2
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 +2 -6
- package/obj/interfaces/wasi-sockets-tcp.d.ts +2 -0
- package/obj/js-component-bindgen-component.component.wasm +0 -0
- package/obj/js-component-bindgen-component.core.wasm +0 -0
- package/obj/js-component-bindgen-component.js +2 -2
- package/obj/wasm-tools.component.wasm +0 -0
- package/obj/wasm-tools.core.wasm +0 -0
- package/obj/wasm-tools.js +2 -2
- package/package.json +6 -6
- package/src/cmd/componentize.js +1 -0
- package/src/cmd/run.js +2 -11
- package/src/common.js +29 -26
- package/src/jco.js +2 -1
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ jco can be used as either a library or as a CLI via the `jco` CLI command.
|
|
|
37
37
|
|
|
38
38
|
## Example
|
|
39
39
|
|
|
40
|
-
See the [example workflow](
|
|
40
|
+
See the [example workflow](docs/src/example.md) page for a full usage example.
|
|
41
41
|
|
|
42
42
|
## CLI
|
|
43
43
|
|
|
@@ -176,11 +176,7 @@ Add new producer metadata to a component or core Wasm binary.
|
|
|
176
176
|
|
|
177
177
|
## Contributing
|
|
178
178
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
Tests can be run without bundling via `npm run build:dev && npm run test:dev`.
|
|
182
|
-
|
|
183
|
-
Specific tests can be run adding the mocha `--grep` flag, for example: `npm run test:dev -- --grep exports_only`.
|
|
179
|
+
See the [Contributing](docs/src/contributing.md) chapter of the jco book.
|
|
184
180
|
|
|
185
181
|
# License
|
|
186
182
|
|
|
Binary file
|
|
Binary file
|
|
@@ -2339,8 +2339,8 @@ let _initialized = false;
|
|
|
2339
2339
|
export const $init = (async() => {
|
|
2340
2340
|
const module0 = fetchCompile(new URL('./js-component-bindgen-component.core.wasm', import.meta.url));
|
|
2341
2341
|
const module1 = fetchCompile(new URL('./js-component-bindgen-component.core2.wasm', import.meta.url));
|
|
2342
|
-
const module2 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGAEf39/fwBgAn5/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/
|
|
2343
|
-
const module3 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGAEf39/fwBgAn5/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/
|
|
2342
|
+
const module2 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGAEf39/fwBgAn5/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwADHx4AAQECAgIDAgEBAgQEAgUAAAAABgcHCAYGBgkGCgsEBQFwAR4eB5gBHwEwAAABMQABATIAAgEzAAMBNAAEATUABQE2AAYBNwAHATgACAE5AAkCMTAACgIxMQALAjEyAAwCMTMADQIxNAAOAjE1AA8CMTYAEAIxNwARAjE4ABICMTkAEwIyMAAUAjIxABUCMjIAFgIyMwAXAjI0ABgCMjUAGQIyNgAaAjI3ABsCMjgAHAIyOQAdCCRpbXBvcnRzAQAKjwMeCQAgAEEAEQAACw0AIAAgASACQQERAQALDQAgACABIAJBAhEBAAsLACAAIAFBAxECAAsLACAAIAFBBBECAAsLACAAIAFBBRECAAsXACAAIAEgAiADIAQgBSAGIAdBBhEDAAsLACAAIAFBBxECAAsNACAAIAEgAkEIEQEACw0AIAAgASACQQkRAQALCwAgACABQQoRAgALDwAgACABIAIgA0ELEQQACw8AIAAgASACIANBDBEEAAsLACAAIAFBDRECAAsLACAAIAFBDhEFAAsJACAAQQ8RAAALCQAgAEEQEQAACwkAIABBEREAAAsJACAAQRIRAAALCwAgACABQRMRBgALDwAgACABIAIgA0EUEQcACw8AIAAgASACIANBFREHAAsZACAAIAEgAiADIAQgBSAGIAcgCEEWEQgACwsAIAAgAUEXEQYACwsAIAAgAUEYEQYACwsAIAAgAUEZEQYACwkAIABBGhEJAAsLACAAIAFBGxEGAAsNACAAIAEgAkEcEQoACwkAIABBHRELAAsALglwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQENd2l0LWNvbXBvbmVudAYwLjE1LjAAxQoEbmFtZQATEndpdC1jb21wb25lbnQ6c2hpbQGoCh4AMWluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9wcmVvcGVucy1nZXQtZGlyZWN0b3JpZXMBLmluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1yZWFkLXZpYS1zdHJlYW0CL2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy13cml0ZS12aWEtc3RyZWFtAzBpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXMtYXBwZW5kLXZpYS1zdHJlYW0EJ2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1nZXQtdHlwZQUjaW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzLXN0YXQGJmluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1vcGVuLWF0ByxpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXMtbWV0YWRhdGEtaGFzaAgdaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLXJlYWQJJmluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy1ibG9ja2luZy1yZWFkCiRpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtY2hlY2std3JpdGULHmluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy13cml0ZQwxaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLWJsb2NraW5nLXdyaXRlLWFuZC1mbHVzaA0naW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLWJsb2NraW5nLWZsdXNoDixpbmRpcmVjdC13YXNpOnJhbmRvbS9yYW5kb20tZ2V0LXJhbmRvbS1ieXRlcw8taW5kaXJlY3Qtd2FzaTpjbGkvZW52aXJvbm1lbnQtZ2V0LWVudmlyb25tZW50EDNpbmRpcmVjdC13YXNpOmNsaS90ZXJtaW5hbC1zdGRpbi1nZXQtdGVybWluYWwtc3RkaW4RNWluZGlyZWN0LXdhc2k6Y2xpL3Rlcm1pbmFsLXN0ZG91dC1nZXQtdGVybWluYWwtc3Rkb3V0EjVpbmRpcmVjdC13YXNpOmNsaS90ZXJtaW5hbC1zdGRlcnItZ2V0LXRlcm1pbmFsLXN0ZGVychMsYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9maWxlc3RhdF9nZXQUJGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcmVhZBUlYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF93cml0ZRYmYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wYXRoX29wZW4XJ2FkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtcmFuZG9tX2dldBgoYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1lbnZpcm9uX2dldBkuYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1lbnZpcm9uX3NpemVzX2dldBolYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9jbG9zZRsrYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9wcmVzdGF0X2dldBwwYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9wcmVzdGF0X2Rpcl9uYW1lHSZhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXByb2NfZXhpdA');
|
|
2343
|
+
const module3 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGAEf39/fwBgAn5/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwACugEfAAEwAAAAATEAAQABMgABAAEzAAIAATQAAgABNQACAAE2AAMAATcAAgABOAABAAE5AAEAAjEwAAIAAjExAAQAAjEyAAQAAjEzAAIAAjE0AAUAAjE1AAAAAjE2AAAAAjE3AAAAAjE4AAAAAjE5AAYAAjIwAAcAAjIxAAcAAjIyAAgAAjIzAAYAAjI0AAYAAjI1AAYAAjI2AAkAAjI3AAYAAjI4AAoAAjI5AAsACCRpbXBvcnRzAXABHh4JJAEAQQALHgABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHQAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTUuMAAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw');
|
|
2344
2344
|
const instanceFlags0 = new WebAssembly.Global({ value: "i32", mutable: true }, 3);
|
|
2345
2345
|
Promise.all([module0, module1, module2, module3]).catch(() => {});
|
|
2346
2346
|
({ exports: exports0 } = await instantiateCore(await module2));
|
|
Binary file
|
package/obj/wasm-tools.core.wasm
CHANGED
|
Binary file
|
package/obj/wasm-tools.js
CHANGED
|
@@ -2531,8 +2531,8 @@ let _initialized = false;
|
|
|
2531
2531
|
export const $init = (async() => {
|
|
2532
2532
|
const module0 = fetchCompile(new URL('./wasm-tools.core.wasm', import.meta.url));
|
|
2533
2533
|
const module1 = fetchCompile(new URL('./wasm-tools.core2.wasm', import.meta.url));
|
|
2534
|
-
const module2 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGAEf39/fwBgAn5/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/
|
|
2535
|
-
const module3 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGAEf39/fwBgAn5/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/
|
|
2534
|
+
const module2 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGAEf39/fwBgAn5/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwADHx4AAQECAgIDAgEBAgQEAgUAAAAABgcHCAYGBgkGCgsEBQFwAR4eB5gBHwEwAAABMQABATIAAgEzAAMBNAAEATUABQE2AAYBNwAHATgACAE5AAkCMTAACgIxMQALAjEyAAwCMTMADQIxNAAOAjE1AA8CMTYAEAIxNwARAjE4ABICMTkAEwIyMAAUAjIxABUCMjIAFgIyMwAXAjI0ABgCMjUAGQIyNgAaAjI3ABsCMjgAHAIyOQAdCCRpbXBvcnRzAQAKjwMeCQAgAEEAEQAACw0AIAAgASACQQERAQALDQAgACABIAJBAhEBAAsLACAAIAFBAxECAAsLACAAIAFBBBECAAsLACAAIAFBBRECAAsXACAAIAEgAiADIAQgBSAGIAdBBhEDAAsLACAAIAFBBxECAAsNACAAIAEgAkEIEQEACw0AIAAgASACQQkRAQALCwAgACABQQoRAgALDwAgACABIAIgA0ELEQQACw8AIAAgASACIANBDBEEAAsLACAAIAFBDRECAAsLACAAIAFBDhEFAAsJACAAQQ8RAAALCQAgAEEQEQAACwkAIABBEREAAAsJACAAQRIRAAALCwAgACABQRMRBgALDwAgACABIAIgA0EUEQcACw8AIAAgASACIANBFREHAAsZACAAIAEgAiADIAQgBSAGIAcgCEEWEQgACwsAIAAgAUEXEQYACwsAIAAgAUEYEQYACwsAIAAgAUEZEQYACwkAIABBGhEJAAsLACAAIAFBGxEGAAsNACAAIAEgAkEcEQoACwkAIABBHRELAAsALglwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQENd2l0LWNvbXBvbmVudAYwLjE1LjAAxQoEbmFtZQATEndpdC1jb21wb25lbnQ6c2hpbQGoCh4AMWluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9wcmVvcGVucy1nZXQtZGlyZWN0b3JpZXMBLmluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1yZWFkLXZpYS1zdHJlYW0CL2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy13cml0ZS12aWEtc3RyZWFtAzBpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXMtYXBwZW5kLXZpYS1zdHJlYW0EJ2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1nZXQtdHlwZQUjaW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzLXN0YXQGJmluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1vcGVuLWF0ByxpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXMtbWV0YWRhdGEtaGFzaAgdaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLXJlYWQJJmluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy1ibG9ja2luZy1yZWFkCiRpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtY2hlY2std3JpdGULHmluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy13cml0ZQwxaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLWJsb2NraW5nLXdyaXRlLWFuZC1mbHVzaA0naW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLWJsb2NraW5nLWZsdXNoDixpbmRpcmVjdC13YXNpOnJhbmRvbS9yYW5kb20tZ2V0LXJhbmRvbS1ieXRlcw8taW5kaXJlY3Qtd2FzaTpjbGkvZW52aXJvbm1lbnQtZ2V0LWVudmlyb25tZW50EDNpbmRpcmVjdC13YXNpOmNsaS90ZXJtaW5hbC1zdGRpbi1nZXQtdGVybWluYWwtc3RkaW4RNWluZGlyZWN0LXdhc2k6Y2xpL3Rlcm1pbmFsLXN0ZG91dC1nZXQtdGVybWluYWwtc3Rkb3V0EjVpbmRpcmVjdC13YXNpOmNsaS90ZXJtaW5hbC1zdGRlcnItZ2V0LXRlcm1pbmFsLXN0ZGVychMsYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9maWxlc3RhdF9nZXQUJGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcmVhZBUlYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF93cml0ZRYmYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wYXRoX29wZW4XJ2FkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtcmFuZG9tX2dldBgoYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1lbnZpcm9uX2dldBkuYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1lbnZpcm9uX3NpemVzX2dldBolYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9jbG9zZRsrYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9wcmVzdGF0X2dldBwwYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9wcmVzdGF0X2Rpcl9uYW1lHSZhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXByb2NfZXhpdA');
|
|
2535
|
+
const module3 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGAEf39/fwBgAn5/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwACugEfAAEwAAAAATEAAQABMgABAAEzAAIAATQAAgABNQACAAE2AAMAATcAAgABOAABAAE5AAEAAjEwAAIAAjExAAQAAjEyAAQAAjEzAAIAAjE0AAUAAjE1AAAAAjE2AAAAAjE3AAAAAjE4AAAAAjE5AAYAAjIwAAcAAjIxAAcAAjIyAAgAAjIzAAYAAjI0AAYAAjI1AAYAAjI2AAkAAjI3AAYAAjI4AAoAAjI5AAsACCRpbXBvcnRzAXABHh4JJAEAQQALHgABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHQAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTUuMAAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw');
|
|
2536
2536
|
const instanceFlags0 = new WebAssembly.Global({ value: "i32", mutable: true }, 3);
|
|
2537
2537
|
const instanceFlags1 = new WebAssembly.Global({ value: "i32", mutable: true }, 3);
|
|
2538
2538
|
Promise.all([module0, module1, module2, module3]).catch(() => {});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bytecodealliance/jco",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.2",
|
|
4
4
|
"description": "JavaScript tooling for working with WebAssembly Components",
|
|
5
5
|
"author": "Guy Bedford",
|
|
6
6
|
"bin": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"type": "module",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@bytecodealliance/preview2-shim": "0.0.
|
|
21
|
+
"@bytecodealliance/preview2-shim": "0.0.17",
|
|
22
22
|
"binaryen": "^111.0.0",
|
|
23
23
|
"chalk-template": "^0.4.0",
|
|
24
24
|
"commander": "^9.4.1",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"terser": "^5.16.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@bytecodealliance/componentize-js": "^0.
|
|
30
|
+
"@bytecodealliance/componentize-js": "^0.3.0",
|
|
31
31
|
"@types/node": "^18.11.17",
|
|
32
32
|
"@typescript-eslint/eslint-plugin": "^5.41.0",
|
|
33
33
|
"@typescript-eslint/parser": "^5.41.0",
|
|
@@ -51,10 +51,10 @@
|
|
|
51
51
|
},
|
|
52
52
|
"homepage": "https://github.com/bytecodealliance/jco#readme",
|
|
53
53
|
"scripts": {
|
|
54
|
-
"build": "cargo build
|
|
55
|
-
"build:types:preview2-shim": "
|
|
54
|
+
"build": "cargo xtask build workspace",
|
|
55
|
+
"build:types:preview2-shim": "cargo xtask build shims",
|
|
56
56
|
"lint": "eslint -c eslintrc.cjs lib/**/*.js packages/*/lib/**/*.js",
|
|
57
|
-
"test": "
|
|
57
|
+
"test": "mocha -u tdd test/test.js --timeout 120000"
|
|
58
58
|
},
|
|
59
59
|
"files": [
|
|
60
60
|
"lib",
|
package/src/cmd/componentize.js
CHANGED
|
@@ -16,6 +16,7 @@ export async function componentize (jsSource, opts) {
|
|
|
16
16
|
witPath: resolve(opts.wit),
|
|
17
17
|
worldName: opts.worldName,
|
|
18
18
|
enableStdout: opts.enableStdout,
|
|
19
|
+
preview2Adapter: opts.preview2Adapter,
|
|
19
20
|
});
|
|
20
21
|
await writeFile(opts.out, component);
|
|
21
22
|
console.log(c`{green OK} Successfully written {bold ${opts.out}} with imports (${imports.join(', ')}).`);
|
package/src/cmd/run.js
CHANGED
|
@@ -1,20 +1,15 @@
|
|
|
1
|
+
import { getTmpDir } from '../common.js';
|
|
1
2
|
import { transpile } from './transpile.js';
|
|
2
|
-
import { tmpdir } from 'node:os';
|
|
3
3
|
import { rm, stat, mkdir, writeFile, symlink, chmod } from 'node:fs/promises';
|
|
4
4
|
import { basename, resolve, extname } from 'node:path';
|
|
5
5
|
import { spawn } from 'node:child_process';
|
|
6
6
|
import { argv0, exit } from 'node:process';
|
|
7
7
|
import { fileURLToPath } from 'node:url';
|
|
8
|
-
import * as crypto from 'node:crypto';
|
|
9
8
|
import c from 'chalk-template';
|
|
10
9
|
|
|
11
|
-
function getTmpDir (name) {
|
|
12
|
-
return resolve(tmpdir(), crypto.createHash('sha256').update(name).update(Math.random().toString()).digest('hex'));
|
|
13
|
-
}
|
|
14
|
-
|
|
15
10
|
export async function run (componentPath, args) {
|
|
16
11
|
const name = basename(componentPath.slice(0, -extname(componentPath).length || Infinity));
|
|
17
|
-
const outDir =
|
|
12
|
+
const outDir = await getTmpDir();
|
|
18
13
|
let cp;
|
|
19
14
|
try {
|
|
20
15
|
try {
|
|
@@ -54,10 +49,6 @@ export async function run (componentPath, args) {
|
|
|
54
49
|
|
|
55
50
|
const runPath = resolve(outDir, '_run.js');
|
|
56
51
|
await writeFile(runPath, `
|
|
57
|
-
import { _setEnv, _setArgs, _setCwd } from '@bytecodealliance/preview2-shim/cli';
|
|
58
|
-
_setArgs(process.argv.slice(1));
|
|
59
|
-
_setEnv(process.env);
|
|
60
|
-
_setCwd(process.cwd());
|
|
61
52
|
function logInvalidCommand () {
|
|
62
53
|
console.error('Not a valid command component to execute, make sure it was built to a command adapter and with the same version.');
|
|
63
54
|
}
|
package/src/common.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { resolve } from 'node:path';
|
|
1
|
+
import { normalize, resolve, sep } from 'node:path';
|
|
3
2
|
import { tmpdir } from 'node:os';
|
|
4
|
-
import { readFile, writeFile,
|
|
3
|
+
import { readFile, writeFile, rm, mkdtemp } from 'node:fs/promises';
|
|
5
4
|
import { spawn } from 'node:child_process';
|
|
6
5
|
import { argv0 } from 'node:process';
|
|
7
6
|
import c from 'chalk-template';
|
|
@@ -56,8 +55,13 @@ export function table (data, align = []) {
|
|
|
56
55
|
return outTable;
|
|
57
56
|
}
|
|
58
57
|
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Securely creates a temporary directory and returns its path.
|
|
60
|
+
*
|
|
61
|
+
* The new directory is created using `fsPromises.mkdtemp()`.
|
|
62
|
+
*/
|
|
63
|
+
export async function getTmpDir () {
|
|
64
|
+
return await mkdtemp(normalize(tmpdir() + sep));
|
|
61
65
|
}
|
|
62
66
|
|
|
63
67
|
async function readFileCli (file, encoding) {
|
|
@@ -71,34 +75,33 @@ async function readFileCli (file, encoding) {
|
|
|
71
75
|
export { readFileCli as readFile }
|
|
72
76
|
|
|
73
77
|
export async function spawnIOTmp (cmd, input, args) {
|
|
74
|
-
const
|
|
75
|
-
|
|
78
|
+
const tmpDir = await getTmpDir();
|
|
79
|
+
try {
|
|
80
|
+
const inFile = resolve(tmpDir, 'in.wasm');
|
|
81
|
+
let outFile = resolve(tmpDir, 'out.wasm');
|
|
76
82
|
|
|
77
|
-
|
|
83
|
+
await writeFile(inFile, input);
|
|
78
84
|
|
|
79
|
-
|
|
85
|
+
const cp = spawn(argv0, [cmd, inFile, ...args, outFile], { stdio: 'pipe' });
|
|
80
86
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
let stderr = '';
|
|
88
|
+
const p = new Promise((resolve, reject) => {
|
|
89
|
+
cp.stderr.on('data', data => stderr += data.toString());
|
|
90
|
+
cp.on('error', e => {
|
|
91
|
+
reject(e);
|
|
92
|
+
});
|
|
93
|
+
cp.on('exit', code => {
|
|
94
|
+
if (code === 0)
|
|
95
|
+
resolve();
|
|
96
|
+
else
|
|
97
|
+
reject(stderr);
|
|
98
|
+
});
|
|
92
99
|
});
|
|
93
|
-
});
|
|
94
100
|
|
|
95
|
-
try {
|
|
96
101
|
await p;
|
|
97
102
|
var output = await readFile(outFile);
|
|
98
|
-
await Promise.all([unlink(inFile), unlink(outFile)]);
|
|
99
103
|
return output;
|
|
100
|
-
}
|
|
101
|
-
await
|
|
102
|
-
throw e;
|
|
104
|
+
} finally {
|
|
105
|
+
await rm(tmpDir, { recursive: true });
|
|
103
106
|
}
|
|
104
107
|
}
|
package/src/jco.js
CHANGED
|
@@ -11,7 +11,7 @@ program
|
|
|
11
11
|
.name('jco')
|
|
12
12
|
.description(c`{bold jco - WebAssembly JS Component Tools}\n JS Component Transpilation Bindgen & Wasm Tools for JS`)
|
|
13
13
|
.usage('<command> [options]')
|
|
14
|
-
.version('0.12.
|
|
14
|
+
.version('0.12.2');
|
|
15
15
|
|
|
16
16
|
function myParseInt(value) {
|
|
17
17
|
return parseInt(value, 10);
|
|
@@ -24,6 +24,7 @@ program.command('componentize')
|
|
|
24
24
|
.requiredOption('-w, --wit <path>', 'WIT path to build with')
|
|
25
25
|
.option('-n, --world-name <name>', 'WIT world to build')
|
|
26
26
|
.option('--enable-stdout', 'Allow console.log to output to stdout')
|
|
27
|
+
.option('--preview2-adapter <adapter>', 'provide a custom preview2 adapter path')
|
|
27
28
|
.requiredOption('-o, --out <out>', 'output component file')
|
|
28
29
|
.action(asyncAction(componentize));
|
|
29
30
|
|