@bytecodealliance/jco 1.8.1 → 1.9.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/README.md CHANGED
@@ -60,6 +60,7 @@ Commands:
60
60
  componentize [options] <js-source> Create a component from a JavaScript module
61
61
  transpile [options] <component-path> Transpile a WebAssembly Component to JS + core Wasm for JavaScript execution
62
62
  types [options] <wit-path> Generate types for the given WIT
63
+ guest-types [options] <wit-path> (experimental) Generate guest types for the given WIT
63
64
  run [options] <command> [args...] Run a WASI Command component
64
65
  serve [options] <server> [args...] Serve a WASI HTTP component
65
66
  opt [options] <component-file> optimizes a Wasm component, including running wasm-opt Binaryen optimizations
@@ -33,6 +33,7 @@ export interface GenerateOptions {
33
33
  validLiftingOptimization?: boolean,
34
34
  tracing?: boolean,
35
35
  noNamespacedExports?: boolean,
36
+ guest?: boolean,
36
37
  multiMemory?: boolean,
37
38
  }
38
39
  export type Wit = WitSource | WitBinary | WitPath;
@@ -63,6 +64,7 @@ export interface TypeGenerationOptions {
63
64
  instantiation?: InstantiationMode,
64
65
  map?: Maps,
65
66
  features?: EnabledFeatureSet,
67
+ guest?: boolean,
66
68
  }
67
69
  /**
68
70
  * # Variants
@@ -3475,7 +3475,7 @@ function generate(arg0, arg1) {
3475
3475
  (new Uint8Array(memory0.buffer, ptr1, len1 * 1)).set(src1);
3476
3476
  dataView(memory0).setInt32(ptr0 + 4, len1, true);
3477
3477
  dataView(memory0).setInt32(ptr0 + 0, ptr1, true);
3478
- var {name: v2_0, noTypescript: v2_1, instantiation: v2_2, importBindings: v2_3, map: v2_4, compat: v2_5, noNodejsCompat: v2_6, base64Cutoff: v2_7, tlaCompat: v2_8, validLiftingOptimization: v2_9, tracing: v2_10, noNamespacedExports: v2_11, multiMemory: v2_12 } = arg1;
3478
+ var {name: v2_0, noTypescript: v2_1, instantiation: v2_2, importBindings: v2_3, map: v2_4, compat: v2_5, noNodejsCompat: v2_6, base64Cutoff: v2_7, tlaCompat: v2_8, validLiftingOptimization: v2_9, tracing: v2_10, noNamespacedExports: v2_11, guest: v2_12, multiMemory: v2_13 } = arg1;
3479
3479
  var ptr3 = utf8Encode(v2_0, realloc1, memory0);
3480
3480
  var len3 = utf8EncodedLen;
3481
3481
  dataView(memory0).setInt32(ptr0 + 12, len3, true);
@@ -3626,74 +3626,82 @@ function generate(arg0, arg1) {
3626
3626
  dataView(memory0).setInt8(ptr0 + 56, 1, true);
3627
3627
  dataView(memory0).setInt8(ptr0 + 57, e ? 1 : 0, true);
3628
3628
  }
3629
+ var variant22 = v2_13;
3630
+ if (variant22 === null || variant22=== undefined) {
3631
+ dataView(memory0).setInt8(ptr0 + 58, 0, true);
3632
+ } else {
3633
+ const e = variant22;
3634
+ dataView(memory0).setInt8(ptr0 + 58, 1, true);
3635
+ dataView(memory0).setInt8(ptr0 + 59, e ? 1 : 0, true);
3636
+ }
3629
3637
  const ret = exports1.generate(ptr0);
3630
- let variant31;
3638
+ let variant32;
3631
3639
  switch (dataView(memory0).getUint8(ret + 0, true)) {
3632
3640
  case 0: {
3633
- var len24 = dataView(memory0).getInt32(ret + 8, true);
3634
- var base24 = dataView(memory0).getInt32(ret + 4, true);
3635
- var result24 = [];
3636
- for (let i = 0; i < len24; i++) {
3637
- const base = base24 + i * 16;
3638
- var ptr22 = dataView(memory0).getInt32(base + 0, true);
3639
- var len22 = dataView(memory0).getInt32(base + 4, true);
3640
- var result22 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr22, len22));
3641
- var ptr23 = dataView(memory0).getInt32(base + 8, true);
3642
- var len23 = dataView(memory0).getInt32(base + 12, true);
3643
- var result23 = new Uint8Array(memory0.buffer.slice(ptr23, ptr23 + len23 * 1));
3644
- result24.push([result22, result23]);
3641
+ var len25 = dataView(memory0).getInt32(ret + 8, true);
3642
+ var base25 = dataView(memory0).getInt32(ret + 4, true);
3643
+ var result25 = [];
3644
+ for (let i = 0; i < len25; i++) {
3645
+ const base = base25 + i * 16;
3646
+ var ptr23 = dataView(memory0).getInt32(base + 0, true);
3647
+ var len23 = dataView(memory0).getInt32(base + 4, true);
3648
+ var result23 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr23, len23));
3649
+ var ptr24 = dataView(memory0).getInt32(base + 8, true);
3650
+ var len24 = dataView(memory0).getInt32(base + 12, true);
3651
+ var result24 = new Uint8Array(memory0.buffer.slice(ptr24, ptr24 + len24 * 1));
3652
+ result25.push([result23, result24]);
3645
3653
  }
3646
- var len26 = dataView(memory0).getInt32(ret + 16, true);
3647
- var base26 = dataView(memory0).getInt32(ret + 12, true);
3648
- var result26 = [];
3649
- for (let i = 0; i < len26; i++) {
3650
- const base = base26 + i * 8;
3651
- var ptr25 = dataView(memory0).getInt32(base + 0, true);
3652
- var len25 = dataView(memory0).getInt32(base + 4, true);
3653
- var result25 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr25, len25));
3654
- result26.push(result25);
3654
+ var len27 = dataView(memory0).getInt32(ret + 16, true);
3655
+ var base27 = dataView(memory0).getInt32(ret + 12, true);
3656
+ var result27 = [];
3657
+ for (let i = 0; i < len27; i++) {
3658
+ const base = base27 + i * 8;
3659
+ var ptr26 = dataView(memory0).getInt32(base + 0, true);
3660
+ var len26 = dataView(memory0).getInt32(base + 4, true);
3661
+ var result26 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr26, len26));
3662
+ result27.push(result26);
3655
3663
  }
3656
- var len29 = dataView(memory0).getInt32(ret + 24, true);
3657
- var base29 = dataView(memory0).getInt32(ret + 20, true);
3658
- var result29 = [];
3659
- for (let i = 0; i < len29; i++) {
3660
- const base = base29 + i * 12;
3661
- var ptr27 = dataView(memory0).getInt32(base + 0, true);
3662
- var len27 = dataView(memory0).getInt32(base + 4, true);
3663
- var result27 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr27, len27));
3664
- let enum28;
3664
+ var len30 = dataView(memory0).getInt32(ret + 24, true);
3665
+ var base30 = dataView(memory0).getInt32(ret + 20, true);
3666
+ var result30 = [];
3667
+ for (let i = 0; i < len30; i++) {
3668
+ const base = base30 + i * 12;
3669
+ var ptr28 = dataView(memory0).getInt32(base + 0, true);
3670
+ var len28 = dataView(memory0).getInt32(base + 4, true);
3671
+ var result28 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr28, len28));
3672
+ let enum29;
3665
3673
  switch (dataView(memory0).getUint8(base + 8, true)) {
3666
3674
  case 0: {
3667
- enum28 = 'function';
3675
+ enum29 = 'function';
3668
3676
  break;
3669
3677
  }
3670
3678
  case 1: {
3671
- enum28 = 'instance';
3679
+ enum29 = 'instance';
3672
3680
  break;
3673
3681
  }
3674
3682
  default: {
3675
3683
  throw new TypeError('invalid discriminant specified for ExportType');
3676
3684
  }
3677
3685
  }
3678
- result29.push([result27, enum28]);
3686
+ result30.push([result28, enum29]);
3679
3687
  }
3680
- variant31= {
3688
+ variant32= {
3681
3689
  tag: 'ok',
3682
3690
  val: {
3683
- files: result24,
3684
- imports: result26,
3685
- exports: result29,
3691
+ files: result25,
3692
+ imports: result27,
3693
+ exports: result30,
3686
3694
  }
3687
3695
  };
3688
3696
  break;
3689
3697
  }
3690
3698
  case 1: {
3691
- var ptr30 = dataView(memory0).getInt32(ret + 4, true);
3692
- var len30 = dataView(memory0).getInt32(ret + 8, true);
3693
- var result30 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr30, len30));
3694
- variant31= {
3699
+ var ptr31 = dataView(memory0).getInt32(ret + 4, true);
3700
+ var len31 = dataView(memory0).getInt32(ret + 8, true);
3701
+ var result31 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr31, len31));
3702
+ variant32= {
3695
3703
  tag: 'err',
3696
- val: result30
3704
+ val: result31
3697
3705
  };
3698
3706
  break;
3699
3707
  }
@@ -3701,7 +3709,7 @@ function generate(arg0, arg1) {
3701
3709
  throw new TypeError('invalid variant discriminant for expected');
3702
3710
  }
3703
3711
  }
3704
- const retVal = variant31;
3712
+ const retVal = variant32;
3705
3713
  postReturn0(ret);
3706
3714
  if (typeof retVal === 'object' && retVal.tag === 'err') {
3707
3715
  throw new ComponentError(retVal.val);
@@ -3711,12 +3719,12 @@ function generate(arg0, arg1) {
3711
3719
 
3712
3720
  function generateTypes(arg0, arg1) {
3713
3721
  if (!_initialized) throwUninitialized();
3714
- var ptr0 = realloc1(0, 0, 4, 64);
3722
+ var ptr0 = realloc1(0, 0, 4, 68);
3715
3723
  var ptr1 = utf8Encode(arg0, realloc1, memory0);
3716
3724
  var len1 = utf8EncodedLen;
3717
3725
  dataView(memory0).setInt32(ptr0 + 4, len1, true);
3718
3726
  dataView(memory0).setInt32(ptr0 + 0, ptr1, true);
3719
- var {wit: v2_0, world: v2_1, tlaCompat: v2_2, instantiation: v2_3, map: v2_4, features: v2_5 } = arg1;
3727
+ var {wit: v2_0, world: v2_1, tlaCompat: v2_2, instantiation: v2_3, map: v2_4, features: v2_5, guest: v2_6 } = arg1;
3720
3728
  var variant6 = v2_0;
3721
3729
  switch (variant6.tag) {
3722
3730
  case 'source': {
@@ -3851,36 +3859,44 @@ function generateTypes(arg0, arg1) {
3851
3859
  }
3852
3860
  }
3853
3861
  }
3862
+ var variant21 = v2_6;
3863
+ if (variant21 === null || variant21=== undefined) {
3864
+ dataView(memory0).setInt8(ptr0 + 64, 0, true);
3865
+ } else {
3866
+ const e = variant21;
3867
+ dataView(memory0).setInt8(ptr0 + 64, 1, true);
3868
+ dataView(memory0).setInt8(ptr0 + 65, e ? 1 : 0, true);
3869
+ }
3854
3870
  const ret = exports1['generate-types'](ptr0);
3855
- let variant25;
3871
+ let variant26;
3856
3872
  switch (dataView(memory0).getUint8(ret + 0, true)) {
3857
3873
  case 0: {
3858
- var len23 = dataView(memory0).getInt32(ret + 8, true);
3859
- var base23 = dataView(memory0).getInt32(ret + 4, true);
3860
- var result23 = [];
3861
- for (let i = 0; i < len23; i++) {
3862
- const base = base23 + i * 16;
3863
- var ptr21 = dataView(memory0).getInt32(base + 0, true);
3864
- var len21 = dataView(memory0).getInt32(base + 4, true);
3865
- var result21 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr21, len21));
3866
- var ptr22 = dataView(memory0).getInt32(base + 8, true);
3867
- var len22 = dataView(memory0).getInt32(base + 12, true);
3868
- var result22 = new Uint8Array(memory0.buffer.slice(ptr22, ptr22 + len22 * 1));
3869
- result23.push([result21, result22]);
3874
+ var len24 = dataView(memory0).getInt32(ret + 8, true);
3875
+ var base24 = dataView(memory0).getInt32(ret + 4, true);
3876
+ var result24 = [];
3877
+ for (let i = 0; i < len24; i++) {
3878
+ const base = base24 + i * 16;
3879
+ var ptr22 = dataView(memory0).getInt32(base + 0, true);
3880
+ var len22 = dataView(memory0).getInt32(base + 4, true);
3881
+ var result22 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr22, len22));
3882
+ var ptr23 = dataView(memory0).getInt32(base + 8, true);
3883
+ var len23 = dataView(memory0).getInt32(base + 12, true);
3884
+ var result23 = new Uint8Array(memory0.buffer.slice(ptr23, ptr23 + len23 * 1));
3885
+ result24.push([result22, result23]);
3870
3886
  }
3871
- variant25= {
3887
+ variant26= {
3872
3888
  tag: 'ok',
3873
- val: result23
3889
+ val: result24
3874
3890
  };
3875
3891
  break;
3876
3892
  }
3877
3893
  case 1: {
3878
- var ptr24 = dataView(memory0).getInt32(ret + 4, true);
3879
- var len24 = dataView(memory0).getInt32(ret + 8, true);
3880
- var result24 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr24, len24));
3881
- variant25= {
3894
+ var ptr25 = dataView(memory0).getInt32(ret + 4, true);
3895
+ var len25 = dataView(memory0).getInt32(ret + 8, true);
3896
+ var result25 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr25, len25));
3897
+ variant26= {
3882
3898
  tag: 'err',
3883
- val: result24
3899
+ val: result25
3884
3900
  };
3885
3901
  break;
3886
3902
  }
@@ -3888,7 +3904,7 @@ function generateTypes(arg0, arg1) {
3888
3904
  throw new TypeError('invalid variant discriminant for expected');
3889
3905
  }
3890
3906
  }
3891
- const retVal = variant25;
3907
+ const retVal = variant26;
3892
3908
  postReturn1(ret);
3893
3909
  if (typeof retVal === 'object' && retVal.tag === 'err') {
3894
3910
  throw new ComponentError(retVal.val);
@@ -3992,8 +4008,8 @@ export const $init = (() => {
3992
4008
  let gen = (function* init () {
3993
4009
  const module0 = fetchCompile(new URL('./js-component-bindgen-component.core.wasm', import.meta.url));
3994
4010
  const module1 = fetchCompile(new URL('./js-component-bindgen-component.core2.wasm', import.meta.url));
3995
- const module2 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwADJiUEBwgJAgIEAgIKAgsBAQAAAAAABQMDAAUMAAMDAAYGAA0BAQEBBAUBcAElJQe7ASYBMAAAATEAAQEyAAIBMwADATQABAE1AAUBNgAGATcABwE4AAgBOQAJAjEwAAoCMTEACwIxMgAMAjEzAA0CMTQADgIxNQAPAjE2ABACMTcAEQIxOAASAjE5ABMCMjAAFAIyMQAVAjIyABYCMjMAFwIyNAAYAjI1ABkCMjYAGgIyNwAbAjI4ABwCMjkAHQIzMAAeAjMxAB8CMzIAIAIzMwAhAjM0ACICMzUAIwIzNgAkCCRpbXBvcnRzAQAK+QMlDwAgACABIAIgA0EAEQQACxkAIAAgASACIAMgBCAFIAYgByAIQQERBwALEQAgACABIAIgAyAEQQIRCAALEQAgACABIAIgAyAEQQMRCQALCwAgACABQQQRAgALCwAgACABQQURAgALDwAgACABIAIgA0EGEQQACwsAIAAgAUEHEQIACwsAIAAgAUEIEQIACwkAIABBCREKAAsLACAAIAFBChECAAsNACAAIAEgAkELEQsACwkAIABBDBEBAAsJACAAQQ0RAQALCwAgACABQQ4RAAALCwAgACABQQ8RAAALCwAgACABQRARAAALCwAgACABQRERAAALCwAgACABQRIRAAALEQAgACABIAIgAyAEQRMRBQALDQAgACABIAJBFBEDAAsNACAAIAEgAkEVEQMACwsAIAAgAUEWEQAACxEAIAAgASACIAMgBEEXEQUACxUAIAAgASACIAMgBCAFIAZBGBEMAAsLACAAIAFBGREAAAsNACAAIAEgAkEaEQMACw0AIAAgASACQRsRAwALCwAgACABQRwRAAALDwAgACABIAIgA0EdEQYACw8AIAAgASACIANBHhEGAAsLACAAIAFBHxEAAAsLACAAIAFBIBENAAsJACAAQSERAQALCQAgAEEiEQEACwkAIABBIxEBAAsJACAAQSQRAQALAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMTkuMQ');
3996
- const module3 = base64Compile('AGFzbQEAAAABaw9gBH9/f38Bf2AJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAn9/AX9gAX8Bf2ADf39/AX9gAX8AYAF/AGACf38AYAV/f39/fwBgA39+fwBgB39/f39/f38AYAR/f39/AGACfn8AAuQBJgABMAAAAAExAAEAATIAAgABMwADAAE0AAQAATUABAABNgAAAAE3AAQAATgABAABOQAFAAIxMAAEAAIxMQAGAAIxMgAHAAIxMwAIAAIxNAAJAAIxNQAJAAIxNgAJAAIxNwAJAAIxOAAJAAIxOQAKAAIyMAALAAIyMQALAAIyMgAJAAIyMwAKAAIyNAAMAAIyNQAJAAIyNgALAAIyNwALAAIyOAAJAAIyOQANAAIzMAANAAIzMQAJAAIzMgAOAAIzMwAIAAIzNAAIAAIzNQAIAAIzNgAIAAgkaW1wb3J0cwFwASUlCSsBAEEACyUAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMTkuMQAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw');
4011
+ const module2 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwADJiUEBwgJAgIEAgIKAgsBAQAAAAAABQMDAAUMAAMDAAYGAA0BAQEBBAUBcAElJQe7ASYBMAAAATEAAQEyAAIBMwADATQABAE1AAUBNgAGATcABwE4AAgBOQAJAjEwAAoCMTEACwIxMgAMAjEzAA0CMTQADgIxNQAPAjE2ABACMTcAEQIxOAASAjE5ABMCMjAAFAIyMQAVAjIyABYCMjMAFwIyNAAYAjI1ABkCMjYAGgIyNwAbAjI4ABwCMjkAHQIzMAAeAjMxAB8CMzIAIAIzMwAhAjM0ACICMzUAIwIzNgAkCCRpbXBvcnRzAQAK+QMlDwAgACABIAIgA0EAEQQACxkAIAAgASACIAMgBCAFIAYgByAIQQERBwALEQAgACABIAIgAyAEQQIRCAALEQAgACABIAIgAyAEQQMRCQALCwAgACABQQQRAgALCwAgACABQQURAgALDwAgACABIAIgA0EGEQQACwsAIAAgAUEHEQIACwsAIAAgAUEIEQIACwkAIABBCREKAAsLACAAIAFBChECAAsNACAAIAEgAkELEQsACwkAIABBDBEBAAsJACAAQQ0RAQALCwAgACABQQ4RAAALCwAgACABQQ8RAAALCwAgACABQRARAAALCwAgACABQRERAAALCwAgACABQRIRAAALEQAgACABIAIgAyAEQRMRBQALDQAgACABIAJBFBEDAAsNACAAIAEgAkEVEQMACwsAIAAgAUEWEQAACxEAIAAgASACIAMgBEEXEQUACxUAIAAgASACIAMgBCAFIAZBGBEMAAsLACAAIAFBGREAAAsNACAAIAEgAkEaEQMACw0AIAAgASACQRsRAwALCwAgACABQRwRAAALDwAgACABIAIgA0EdEQYACw8AIAAgASACIANBHhEGAAsLACAAIAFBHxEAAAsLACAAIAFBIBENAAsJACAAQSERAQALCQAgAEEiEQEACwkAIABBIxEBAAsJACAAQSQRAQALAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMjAuMA');
4012
+ const module3 = base64Compile('AGFzbQEAAAABaw9gBH9/f38Bf2AJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAn9/AX9gAX8Bf2ADf39/AX9gAX8AYAF/AGACf38AYAV/f39/fwBgA39+fwBgB39/f39/f38AYAR/f39/AGACfn8AAuQBJgABMAAAAAExAAEAATIAAgABMwADAAE0AAQAATUABAABNgAAAAE3AAQAATgABAABOQAFAAIxMAAEAAIxMQAGAAIxMgAHAAIxMwAIAAIxNAAJAAIxNQAJAAIxNgAJAAIxNwAJAAIxOAAJAAIxOQAKAAIyMAALAAIyMQALAAIyMgAJAAIyMwAKAAIyNAAMAAIyNQAJAAIyNgALAAIyNwALAAIyOAAJAAIyOQANAAIzMAANAAIzMQAJAAIzMgAOAAIzMwAIAAIzNAAIAAIzNQAIAAIzNgAIAAgkaW1wb3J0cwFwASUlCSsBAEEACyUAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMjAuMAAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw');
3997
4013
  ({ exports: exports0 } = yield instantiateCore(yield module2));
3998
4014
  ({ exports: exports1 } = yield instantiateCore(yield module0, {
3999
4015
  wasi_snapshot_preview1: {
@@ -4019,40 +4035,40 @@ export const $init = (() => {
4019
4035
  env: {
4020
4036
  memory: exports1.memory,
4021
4037
  },
4022
- 'wasi:cli/environment@0.2.2': {
4038
+ 'wasi:cli/environment@0.2.3': {
4023
4039
  'get-environment': exports0['13'],
4024
4040
  },
4025
- 'wasi:cli/exit@0.2.2': {
4041
+ 'wasi:cli/exit@0.2.3': {
4026
4042
  exit: trampoline10,
4027
4043
  },
4028
- 'wasi:cli/stderr@0.2.2': {
4044
+ 'wasi:cli/stderr@0.2.3': {
4029
4045
  'get-stderr': trampoline5,
4030
4046
  },
4031
- 'wasi:cli/stdin@0.2.2': {
4047
+ 'wasi:cli/stdin@0.2.3': {
4032
4048
  'get-stdin': trampoline8,
4033
4049
  },
4034
- 'wasi:cli/stdout@0.2.2': {
4050
+ 'wasi:cli/stdout@0.2.3': {
4035
4051
  'get-stdout': trampoline9,
4036
4052
  },
4037
- 'wasi:cli/terminal-input@0.2.2': {
4053
+ 'wasi:cli/terminal-input@0.2.3': {
4038
4054
  '[resource-drop]terminal-input': trampoline6,
4039
4055
  },
4040
- 'wasi:cli/terminal-output@0.2.2': {
4056
+ 'wasi:cli/terminal-output@0.2.3': {
4041
4057
  '[resource-drop]terminal-output': trampoline7,
4042
4058
  },
4043
- 'wasi:cli/terminal-stderr@0.2.2': {
4059
+ 'wasi:cli/terminal-stderr@0.2.3': {
4044
4060
  'get-terminal-stderr': exports0['36'],
4045
4061
  },
4046
- 'wasi:cli/terminal-stdin@0.2.2': {
4062
+ 'wasi:cli/terminal-stdin@0.2.3': {
4047
4063
  'get-terminal-stdin': exports0['34'],
4048
4064
  },
4049
- 'wasi:cli/terminal-stdout@0.2.2': {
4065
+ 'wasi:cli/terminal-stdout@0.2.3': {
4050
4066
  'get-terminal-stdout': exports0['35'],
4051
4067
  },
4052
- 'wasi:filesystem/preopens@0.2.2': {
4068
+ 'wasi:filesystem/preopens@0.2.3': {
4053
4069
  'get-directories': exports0['33'],
4054
4070
  },
4055
- 'wasi:filesystem/types@0.2.2': {
4071
+ 'wasi:filesystem/types@0.2.3': {
4056
4072
  '[method]descriptor.append-via-stream': exports0['16'],
4057
4073
  '[method]descriptor.get-type': exports0['14'],
4058
4074
  '[method]descriptor.metadata-hash': exports0['15'],
@@ -4068,10 +4084,10 @@ export const $init = (() => {
4068
4084
  '[resource-drop]directory-entry-stream': trampoline0,
4069
4085
  'filesystem-error-code': exports0['17'],
4070
4086
  },
4071
- 'wasi:io/error@0.2.2': {
4087
+ 'wasi:io/error@0.2.3': {
4072
4088
  '[resource-drop]error': trampoline2,
4073
4089
  },
4074
- 'wasi:io/streams@0.2.2': {
4090
+ 'wasi:io/streams@0.2.3': {
4075
4091
  '[method]input-stream.blocking-read': exports0['27'],
4076
4092
  '[method]input-stream.read': exports0['26'],
4077
4093
  '[method]output-stream.blocking-flush': exports0['31'],
@@ -4081,7 +4097,7 @@ export const $init = (() => {
4081
4097
  '[resource-drop]input-stream': trampoline3,
4082
4098
  '[resource-drop]output-stream': trampoline1,
4083
4099
  },
4084
- 'wasi:random/random@0.2.2': {
4100
+ 'wasi:random/random@0.2.3': {
4085
4101
  'get-random-bytes': exports0['32'],
4086
4102
  },
4087
4103
  }));
Binary file
Binary file
package/obj/wasm-tools.js CHANGED
@@ -4134,8 +4134,8 @@ export const $init = (() => {
4134
4134
  let gen = (function* init () {
4135
4135
  const module0 = fetchCompile(new URL('./wasm-tools.core.wasm', import.meta.url));
4136
4136
  const module1 = fetchCompile(new URL('./wasm-tools.core2.wasm', import.meta.url));
4137
- const module2 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwADJiUEBwgJAgIEAgIKAgsBAQAAAAAABQMDAAUMAAMDAAYGAA0BAQEBBAUBcAElJQe7ASYBMAAAATEAAQEyAAIBMwADATQABAE1AAUBNgAGATcABwE4AAgBOQAJAjEwAAoCMTEACwIxMgAMAjEzAA0CMTQADgIxNQAPAjE2ABACMTcAEQIxOAASAjE5ABMCMjAAFAIyMQAVAjIyABYCMjMAFwIyNAAYAjI1ABkCMjYAGgIyNwAbAjI4ABwCMjkAHQIzMAAeAjMxAB8CMzIAIAIzMwAhAjM0ACICMzUAIwIzNgAkCCRpbXBvcnRzAQAK+QMlDwAgACABIAIgA0EAEQQACxkAIAAgASACIAMgBCAFIAYgByAIQQERBwALEQAgACABIAIgAyAEQQIRCAALEQAgACABIAIgAyAEQQMRCQALCwAgACABQQQRAgALCwAgACABQQURAgALDwAgACABIAIgA0EGEQQACwsAIAAgAUEHEQIACwsAIAAgAUEIEQIACwkAIABBCREKAAsLACAAIAFBChECAAsNACAAIAEgAkELEQsACwkAIABBDBEBAAsJACAAQQ0RAQALCwAgACABQQ4RAAALCwAgACABQQ8RAAALCwAgACABQRARAAALCwAgACABQRERAAALCwAgACABQRIRAAALEQAgACABIAIgAyAEQRMRBQALDQAgACABIAJBFBEDAAsNACAAIAEgAkEVEQMACwsAIAAgAUEWEQAACxEAIAAgASACIAMgBEEXEQUACxUAIAAgASACIAMgBCAFIAZBGBEMAAsLACAAIAFBGREAAAsNACAAIAEgAkEaEQMACw0AIAAgASACQRsRAwALCwAgACABQRwRAAALDwAgACABIAIgA0EdEQYACw8AIAAgASACIANBHhEGAAsLACAAIAFBHxEAAAsLACAAIAFBIBENAAsJACAAQSERAQALCQAgAEEiEQEACwkAIABBIxEBAAsJACAAQSQRAQALAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMTkuMQ');
4138
- const module3 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwAC5AEmAAEwAAQAATEABwABMgAIAAEzAAkAATQAAgABNQACAAE2AAQAATcAAgABOAACAAE5AAoAAjEwAAIAAjExAAsAAjEyAAEAAjEzAAEAAjE0AAAAAjE1AAAAAjE2AAAAAjE3AAAAAjE4AAAAAjE5AAUAAjIwAAMAAjIxAAMAAjIyAAAAAjIzAAUAAjI0AAwAAjI1AAAAAjI2AAMAAjI3AAMAAjI4AAAAAjI5AAYAAjMwAAYAAjMxAAAAAjMyAA0AAjMzAAEAAjM0AAEAAjM1AAEAAjM2AAEACCRpbXBvcnRzAXABJSUJKwEAQQALJQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQALwlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQENd2l0LWNvbXBvbmVudAcwLjIxOS4x');
4137
+ const module2 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwADJiUEBwgJAgIEAgIKAgsBAQAAAAAABQMDAAUMAAMDAAYGAA0BAQEBBAUBcAElJQe7ASYBMAAAATEAAQEyAAIBMwADATQABAE1AAUBNgAGATcABwE4AAgBOQAJAjEwAAoCMTEACwIxMgAMAjEzAA0CMTQADgIxNQAPAjE2ABACMTcAEQIxOAASAjE5ABMCMjAAFAIyMQAVAjIyABYCMjMAFwIyNAAYAjI1ABkCMjYAGgIyNwAbAjI4ABwCMjkAHQIzMAAeAjMxAB8CMzIAIAIzMwAhAjM0ACICMzUAIwIzNgAkCCRpbXBvcnRzAQAK+QMlDwAgACABIAIgA0EAEQQACxkAIAAgASACIAMgBCAFIAYgByAIQQERBwALEQAgACABIAIgAyAEQQIRCAALEQAgACABIAIgAyAEQQMRCQALCwAgACABQQQRAgALCwAgACABQQURAgALDwAgACABIAIgA0EGEQQACwsAIAAgAUEHEQIACwsAIAAgAUEIEQIACwkAIABBCREKAAsLACAAIAFBChECAAsNACAAIAEgAkELEQsACwkAIABBDBEBAAsJACAAQQ0RAQALCwAgACABQQ4RAAALCwAgACABQQ8RAAALCwAgACABQRARAAALCwAgACABQRERAAALCwAgACABQRIRAAALEQAgACABIAIgAyAEQRMRBQALDQAgACABIAJBFBEDAAsNACAAIAEgAkEVEQMACwsAIAAgAUEWEQAACxEAIAAgASACIAMgBEEXEQUACxUAIAAgASACIAMgBCAFIAZBGBEMAAsLACAAIAFBGREAAAsNACAAIAEgAkEaEQMACw0AIAAgASACQRsRAwALCwAgACABQRwRAAALDwAgACABIAIgA0EdEQYACw8AIAAgASACIANBHhEGAAsLACAAIAFBHxEAAAsLACAAIAFBIBENAAsJACAAQSERAQALCQAgAEEiEQEACwkAIABBIxEBAAsJACAAQSQRAQALAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMjAuMA');
4138
+ const module3 = base64Compile('AGFzbQEAAAABZw5gAn9/AGABfwBgAn9/AX9gA39+fwBgBH9/f38Bf2AFf39/f38AYAR/f39/AGAJf39/f39+fn9/AX9gBX9/f35/AX9gBX9/f39/AX9gAX8Bf2ADf39/AX9gB39/f39/f38AYAJ+fwAC5AEmAAEwAAQAATEABwABMgAIAAEzAAkAATQAAgABNQACAAE2AAQAATcAAgABOAACAAE5AAoAAjEwAAIAAjExAAsAAjEyAAEAAjEzAAEAAjE0AAAAAjE1AAAAAjE2AAAAAjE3AAAAAjE4AAAAAjE5AAUAAjIwAAMAAjIxAAMAAjIyAAAAAjIzAAUAAjI0AAwAAjI1AAAAAjI2AAMAAjI3AAMAAjI4AAAAAjI5AAYAAjMwAAYAAjMxAAAAAjMyAA0AAjMzAAEAAjM0AAEAAjM1AAEAAjM2AAEACCRpbXBvcnRzAXABJSUJKwEAQQALJQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQALwlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQENd2l0LWNvbXBvbmVudAcwLjIyMC4w');
4139
4139
  ({ exports: exports0 } = yield instantiateCore(yield module2));
4140
4140
  ({ exports: exports1 } = yield instantiateCore(yield module0, {
4141
4141
  wasi_snapshot_preview1: {
@@ -4161,40 +4161,40 @@ export const $init = (() => {
4161
4161
  env: {
4162
4162
  memory: exports1.memory,
4163
4163
  },
4164
- 'wasi:cli/environment@0.2.2': {
4164
+ 'wasi:cli/environment@0.2.3': {
4165
4165
  'get-environment': exports0['13'],
4166
4166
  },
4167
- 'wasi:cli/exit@0.2.2': {
4167
+ 'wasi:cli/exit@0.2.3': {
4168
4168
  exit: trampoline10,
4169
4169
  },
4170
- 'wasi:cli/stderr@0.2.2': {
4170
+ 'wasi:cli/stderr@0.2.3': {
4171
4171
  'get-stderr': trampoline5,
4172
4172
  },
4173
- 'wasi:cli/stdin@0.2.2': {
4173
+ 'wasi:cli/stdin@0.2.3': {
4174
4174
  'get-stdin': trampoline8,
4175
4175
  },
4176
- 'wasi:cli/stdout@0.2.2': {
4176
+ 'wasi:cli/stdout@0.2.3': {
4177
4177
  'get-stdout': trampoline9,
4178
4178
  },
4179
- 'wasi:cli/terminal-input@0.2.2': {
4179
+ 'wasi:cli/terminal-input@0.2.3': {
4180
4180
  '[resource-drop]terminal-input': trampoline6,
4181
4181
  },
4182
- 'wasi:cli/terminal-output@0.2.2': {
4182
+ 'wasi:cli/terminal-output@0.2.3': {
4183
4183
  '[resource-drop]terminal-output': trampoline7,
4184
4184
  },
4185
- 'wasi:cli/terminal-stderr@0.2.2': {
4185
+ 'wasi:cli/terminal-stderr@0.2.3': {
4186
4186
  'get-terminal-stderr': exports0['36'],
4187
4187
  },
4188
- 'wasi:cli/terminal-stdin@0.2.2': {
4188
+ 'wasi:cli/terminal-stdin@0.2.3': {
4189
4189
  'get-terminal-stdin': exports0['34'],
4190
4190
  },
4191
- 'wasi:cli/terminal-stdout@0.2.2': {
4191
+ 'wasi:cli/terminal-stdout@0.2.3': {
4192
4192
  'get-terminal-stdout': exports0['35'],
4193
4193
  },
4194
- 'wasi:filesystem/preopens@0.2.2': {
4194
+ 'wasi:filesystem/preopens@0.2.3': {
4195
4195
  'get-directories': exports0['33'],
4196
4196
  },
4197
- 'wasi:filesystem/types@0.2.2': {
4197
+ 'wasi:filesystem/types@0.2.3': {
4198
4198
  '[method]descriptor.append-via-stream': exports0['16'],
4199
4199
  '[method]descriptor.get-type': exports0['14'],
4200
4200
  '[method]descriptor.metadata-hash': exports0['15'],
@@ -4210,10 +4210,10 @@ export const $init = (() => {
4210
4210
  '[resource-drop]directory-entry-stream': trampoline0,
4211
4211
  'filesystem-error-code': exports0['17'],
4212
4212
  },
4213
- 'wasi:io/error@0.2.2': {
4213
+ 'wasi:io/error@0.2.3': {
4214
4214
  '[resource-drop]error': trampoline2,
4215
4215
  },
4216
- 'wasi:io/streams@0.2.2': {
4216
+ 'wasi:io/streams@0.2.3': {
4217
4217
  '[method]input-stream.blocking-read': exports0['27'],
4218
4218
  '[method]input-stream.read': exports0['26'],
4219
4219
  '[method]output-stream.blocking-flush': exports0['31'],
@@ -4223,7 +4223,7 @@ export const $init = (() => {
4223
4223
  '[resource-drop]input-stream': trampoline3,
4224
4224
  '[resource-drop]output-stream': trampoline1,
4225
4225
  },
4226
- 'wasi:random/random@0.2.2': {
4226
+ 'wasi:random/random@0.2.3': {
4227
4227
  'get-random-bytes': exports0['32'],
4228
4228
  },
4229
4229
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytecodealliance/jco",
3
- "version": "1.8.1",
3
+ "version": "1.9.1",
4
4
  "description": "JavaScript tooling for working with WebAssembly Components",
5
5
  "author": "Guy Bedford",
6
6
  "bin": {
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "type": "module",
26
26
  "dependencies": {
27
- "@bytecodealliance/componentize-js": "^0.14.0",
27
+ "@bytecodealliance/componentize-js": "^0.15.0",
28
28
  "@bytecodealliance/preview2-shim": "^0.17.1",
29
29
  "binaryen": "^120.0.0",
30
30
  "chalk-template": "^1",
@@ -40,7 +40,7 @@
40
40
  "eslint": "^9.9.0",
41
41
  "mime": "^4.0.4",
42
42
  "mocha": "^10.7.0",
43
- "puppeteer": "^23.4.0",
43
+ "puppeteer": "^24.0.1",
44
44
  "typescript": "^5.5.4"
45
45
  },
46
46
  "repository": {
@@ -10,6 +10,7 @@ export async function componentize (jsSource, opts) {
10
10
  const source = await readFile(jsSource, 'utf8');
11
11
  const { component } = await componentizeFn(source, {
12
12
  enableAot: opts.aot,
13
+ wevalBin: opts.wevalBin,
13
14
  sourceName: basename(jsSource),
14
15
  witPath: resolve(opts.wit),
15
16
  worldName: opts.worldName,
@@ -19,6 +19,11 @@ export async function types (witPath, opts) {
19
19
  await writeFiles(files, opts.quiet ? false : 'Generated Type Files');
20
20
  }
21
21
 
22
+ export async function guestTypes (witPath, opts) {
23
+ const files = await typesComponent(witPath, { ...opts, guest: true });
24
+ await writeFiles(files, opts.quiet ? false : 'Generated Guest Typescript Definition Files (.d.ts)');
25
+ }
26
+
22
27
  /**
23
28
  * @param {string} witPath
24
29
  * @param {{
@@ -28,6 +33,7 @@ export async function types (witPath, opts) {
28
33
  * tlaCompat?: bool,
29
34
  * outDir?: string,
30
35
  * features?: string[] | 'all',
36
+ * guest?: bool,
31
37
  * }} opts
32
38
  * @returns {Promise<{ [filename: string]: Uint8Array }>}
33
39
  */
@@ -57,6 +63,7 @@ export async function typesComponent (witPath, opts) {
57
63
  tlaCompat: opts.tlaCompat ?? false,
58
64
  world: opts.worldName,
59
65
  features,
66
+ guest: opts.guest ?? false,
60
67
  }).map(([name, file]) => [`${outDir}${name}`, file]));
61
68
  }
62
69
 
package/src/common.d.ts CHANGED
@@ -9,8 +9,8 @@ export function table(data: any, align?: any[]): string;
9
9
  * The new directory is created using `fsPromises.mkdtemp()`.
10
10
  */
11
11
  export function getTmpDir(): Promise<string>;
12
- export function spawnIOTmp(cmd: any, input: any, args: any): Promise<Buffer>;
12
+ export function spawnIOTmp(cmd: any, input: any, args: any): Promise<Buffer<ArrayBufferLike>>;
13
13
  export const isWindows: boolean;
14
14
  export { readFileCli as readFile };
15
- declare function readFileCli(file: any, encoding: any): Promise<Buffer>;
15
+ declare function readFileCli(file: any, encoding: any): Promise<Buffer<ArrayBufferLike>>;
16
16
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["common.js"],"names":[],"mappings":"AAWA,+CAEC;AACD,0CAIC;AAED,0CAOC;AAED,mEAaC;AAED,wDAcC;AAED;;;;GAIG;AACH,6CAEC;AAYD,6EA8BC;AArGD,gCAA8C;;AA6D9C,wEAOC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["common.js"],"names":[],"mappings":"AAWA,+CAEC;AACD,0CAIC;AAED,0CAOC;AAED,mEAaC;AAED,wDAcC;AAED;;;;GAIG;AACH,6CAEC;AAYD,8FA8BC;AArGD,gCAA8C;;AA6D9C,yFAOC"}
package/src/jco.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { program, Option } from 'commander';
3
3
  import { opt } from './cmd/opt.js';
4
- import { transpile, types } from './cmd/transpile.js';
4
+ import { transpile, types, guestTypes } from './cmd/transpile.js';
5
5
  import { run as runCmd, serve as serveCmd } from './cmd/run.js';
6
6
  import { parse, print, componentNew, componentEmbed, metadataAdd, metadataShow, componentWit } from './cmd/wasm-tools.js';
7
7
  import { componentize } from './cmd/componentize.js';
@@ -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('1.8.1');
14
+ .version('1.9.1');
15
15
 
16
16
  function myParseInt(value) {
17
17
  return parseInt(value, 10);
@@ -34,6 +34,7 @@ program.command('componentize')
34
34
  .requiredOption('-w, --wit <path>', 'WIT path to build with')
35
35
  .option('-n, --world-name <name>', 'WIT world to build')
36
36
  .option('--aot', 'Enable Weval AOT compilation of JS')
37
+ .option('--weval-bin <path>', 'Specify a custom weval binary to use')
37
38
  .addOption(new Option('-d, --disable <feature...>', 'disable WASI features').choices(['clocks', 'http', 'random', 'stdio', 'all']))
38
39
  // .addOption(new Option('-e, --enable <feature...>', 'enable WASI features').choices(['http']))
39
40
  .option('--preview2-adapter <adapter>', 'provide a custom preview2 adapter path')
@@ -80,6 +81,18 @@ program.command('types')
80
81
  .option('--all-features', 'enable all features')
81
82
  .action(asyncAction(types));
82
83
 
84
+ program.command('guest-types')
85
+ .description('(experimental) Generate guest types for the given WIT')
86
+ .usage('<wit-path> -o <out-dir>')
87
+ .argument('<wit-path>', 'path to a WIT file or directory')
88
+ .option('--name <name>', 'custom output name')
89
+ .option('-n, --world-name <world>', 'WIT world to generate types for')
90
+ .requiredOption('-o, --out-dir <out-dir>', 'output directory')
91
+ .option('-q, --quiet', 'disable output summary')
92
+ .option('--feature <feature>', 'enable one specific WIT feature (repeatable)', collectOptions, [])
93
+ .option('--all-features', 'enable all features')
94
+ .action(asyncAction(guestTypes));
95
+
83
96
  program.command('run')
84
97
  .description('Run a WASI Command component')
85
98
  .usage('<command.wasm> <args...>')