@bytecodealliance/jco 1.4.0 → 1.4.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.
@@ -1,10 +1,10 @@
1
1
  export namespace LocalWasmToolsTools {
2
2
  export function parse(wat: string): Uint8Array;
3
3
  export function print(binary: Uint8Array): string;
4
- export function componentNew(binary: Uint8Array, adapters: [string, Uint8Array][] | undefined): Uint8Array;
4
+ export function componentNew(binary: Uint8Array, adapters: Array<[string, Uint8Array]> | undefined): Uint8Array;
5
5
  export function componentWit(binary: Uint8Array): string;
6
6
  export function componentEmbed(embedOpts: EmbedOpts): Uint8Array;
7
- export function metadataShow(binary: Uint8Array): ModuleMetadata[];
7
+ export function metadataShow(binary: Uint8Array): Array<ModuleMetadata>;
8
8
  export function metadataAdd(binary: Uint8Array, metadata: ProducersFields): Uint8Array;
9
9
  }
10
10
  /**
@@ -17,7 +17,15 @@ export namespace LocalWasmToolsTools {
17
17
  * ## `"compact-utf16"`
18
18
  */
19
19
  export type StringEncoding = 'utf8' | 'utf16' | 'compact-utf16';
20
- export type ProducersFields = [string, [string, string][]][];
20
+ export type ProducersFields = Array<[string, Array<[string, string]>]>;
21
+ export type EnabledFeatureSet = EnabledFeatureSetList | EnabledFeatureSetAll;
22
+ export interface EnabledFeatureSetList {
23
+ tag: 'list',
24
+ val: Array<string>,
25
+ }
26
+ export interface EnabledFeatureSetAll {
27
+ tag: 'all',
28
+ }
21
29
  export interface EmbedOpts {
22
30
  binary?: Uint8Array,
23
31
  witSource?: string,
@@ -26,6 +34,7 @@ export interface EmbedOpts {
26
34
  dummy?: boolean,
27
35
  world?: string,
28
36
  metadata?: ProducersFields,
37
+ features?: EnabledFeatureSet,
29
38
  }
30
39
  export type ModuleMetaType = ModuleMetaTypeModule | ModuleMetaTypeComponent;
31
40
  export interface ModuleMetaTypeModule {
@@ -1,3 +1,3 @@
1
1
  export namespace WasiCliEnvironment {
2
- export function getEnvironment(): [string, string][];
2
+ export function getEnvironment(): Array<[string, string]>;
3
3
  }
@@ -1,5 +1,5 @@
1
1
  export namespace WasiFilesystemPreopens {
2
- export function getDirectories(): [Descriptor, string][];
2
+ export function getDirectories(): Array<[Descriptor, string]>;
3
3
  }
4
4
  import type { Descriptor } from './wasi-filesystem-types.js';
5
5
  export { Descriptor };
@@ -1,5 +1,5 @@
1
- export type Files = [string, Uint8Array][];
2
- export type Maps = [string, string][];
1
+ export type Files = Array<[string, Uint8Array]>;
2
+ export type Maps = Array<[string, string]>;
3
3
  export type InstantiationMode = InstantiationModeAsync | InstantiationModeSync;
4
4
  export interface InstantiationModeAsync {
5
5
  tag: 'async',
@@ -48,12 +48,21 @@ export interface WitPath {
48
48
  tag: 'path',
49
49
  val: string,
50
50
  }
51
+ export type EnabledFeatureSet = EnabledFeatureSetList | EnabledFeatureSetAll;
52
+ export interface EnabledFeatureSetList {
53
+ tag: 'list',
54
+ val: Array<string>,
55
+ }
56
+ export interface EnabledFeatureSetAll {
57
+ tag: 'all',
58
+ }
51
59
  export interface TypeGenerationOptions {
52
60
  wit: Wit,
53
61
  world?: string,
54
62
  tlaCompat?: boolean,
55
63
  instantiation?: InstantiationMode,
56
64
  map?: Maps,
65
+ features?: EnabledFeatureSet,
57
66
  }
58
67
  /**
59
68
  * # Variants
@@ -65,8 +74,8 @@ export interface TypeGenerationOptions {
65
74
  export type ExportType = 'function' | 'instance';
66
75
  export interface Transpiled {
67
76
  files: Files,
68
- imports: string[],
69
- exports: [string, ExportType][],
77
+ imports: Array<string>,
78
+ exports: Array<[string, ExportType]>,
70
79
  }
71
80
  import { WasiCliEnvironment } from './interfaces/wasi-cli-environment.js';
72
81
  import { WasiCliExit } from './interfaces/wasi-cli-exit.js';
@@ -3792,169 +3792,186 @@ function generate(arg0, arg1) {
3792
3792
  throw new TypeError('invalid variant discriminant for expected');
3793
3793
  }
3794
3794
  }
3795
- postReturn0(ret);
3796
3795
  if (variant31.tag === 'err') {
3797
3796
  throw new ComponentError(variant31.val);
3798
3797
  }
3799
- return variant31.val;
3798
+ const retVal = variant31.val;
3799
+ postReturn0(ret);
3800
+ return retVal;
3800
3801
  }
3801
3802
 
3802
3803
  function generateTypes(arg0, arg1) {
3803
3804
  if (!_initialized) throwUninitialized();
3804
- var ptr0 = utf8Encode(arg0, realloc1, memory0);
3805
- var len0 = utf8EncodedLen;
3806
- var {wit: v1_0, world: v1_1, tlaCompat: v1_2, instantiation: v1_3, map: v1_4 } = arg1;
3807
- var variant5 = v1_0;
3808
- let variant5_0;
3809
- let variant5_1;
3810
- let variant5_2;
3811
- switch (variant5.tag) {
3805
+ var ptr0 = realloc1(0, 0, 4, 64);
3806
+ var ptr1 = utf8Encode(arg0, realloc1, memory0);
3807
+ var len1 = utf8EncodedLen;
3808
+ dataView(memory0).setInt32(ptr0 + 4, len1, true);
3809
+ dataView(memory0).setInt32(ptr0 + 0, ptr1, true);
3810
+ var {wit: v2_0, world: v2_1, tlaCompat: v2_2, instantiation: v2_3, map: v2_4, features: v2_5 } = arg1;
3811
+ var variant6 = v2_0;
3812
+ switch (variant6.tag) {
3812
3813
  case 'source': {
3813
- const e = variant5.val;
3814
- var ptr2 = utf8Encode(e, realloc1, memory0);
3815
- var len2 = utf8EncodedLen;
3816
- variant5_0 = 0;
3817
- variant5_1 = ptr2;
3818
- variant5_2 = len2;
3814
+ const e = variant6.val;
3815
+ dataView(memory0).setInt8(ptr0 + 8, 0, true);
3816
+ var ptr3 = utf8Encode(e, realloc1, memory0);
3817
+ var len3 = utf8EncodedLen;
3818
+ dataView(memory0).setInt32(ptr0 + 16, len3, true);
3819
+ dataView(memory0).setInt32(ptr0 + 12, ptr3, true);
3819
3820
  break;
3820
3821
  }
3821
3822
  case 'binary': {
3822
- const e = variant5.val;
3823
- var val3 = e;
3824
- var len3 = val3.byteLength;
3825
- var ptr3 = realloc1(0, 0, 1, len3 * 1);
3826
- var src3 = new Uint8Array(val3.buffer || val3, val3.byteOffset, len3 * 1);
3827
- (new Uint8Array(memory0.buffer, ptr3, len3 * 1)).set(src3);
3828
- variant5_0 = 1;
3829
- variant5_1 = ptr3;
3830
- variant5_2 = len3;
3823
+ const e = variant6.val;
3824
+ dataView(memory0).setInt8(ptr0 + 8, 1, true);
3825
+ var val4 = e;
3826
+ var len4 = val4.byteLength;
3827
+ var ptr4 = realloc1(0, 0, 1, len4 * 1);
3828
+ var src4 = new Uint8Array(val4.buffer || val4, val4.byteOffset, len4 * 1);
3829
+ (new Uint8Array(memory0.buffer, ptr4, len4 * 1)).set(src4);
3830
+ dataView(memory0).setInt32(ptr0 + 16, len4, true);
3831
+ dataView(memory0).setInt32(ptr0 + 12, ptr4, true);
3831
3832
  break;
3832
3833
  }
3833
3834
  case 'path': {
3834
- const e = variant5.val;
3835
- var ptr4 = utf8Encode(e, realloc1, memory0);
3836
- var len4 = utf8EncodedLen;
3837
- variant5_0 = 2;
3838
- variant5_1 = ptr4;
3839
- variant5_2 = len4;
3835
+ const e = variant6.val;
3836
+ dataView(memory0).setInt8(ptr0 + 8, 2, true);
3837
+ var ptr5 = utf8Encode(e, realloc1, memory0);
3838
+ var len5 = utf8EncodedLen;
3839
+ dataView(memory0).setInt32(ptr0 + 16, len5, true);
3840
+ dataView(memory0).setInt32(ptr0 + 12, ptr5, true);
3840
3841
  break;
3841
3842
  }
3842
3843
  default: {
3843
- throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant5.tag)}\` (received \`${variant5}\`) specified for \`Wit\``);
3844
+ throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant6.tag)}\` (received \`${variant6}\`) specified for \`Wit\``);
3844
3845
  }
3845
3846
  }
3846
- var variant7 = v1_1;
3847
- let variant7_0;
3848
- let variant7_1;
3849
- let variant7_2;
3850
- if (variant7 === null || variant7=== undefined) {
3851
- variant7_0 = 0;
3852
- variant7_1 = 0;
3853
- variant7_2 = 0;
3854
- } else {
3855
- const e = variant7;
3856
- var ptr6 = utf8Encode(e, realloc1, memory0);
3857
- var len6 = utf8EncodedLen;
3858
- variant7_0 = 1;
3859
- variant7_1 = ptr6;
3860
- variant7_2 = len6;
3861
- }
3862
- var variant8 = v1_2;
3863
- let variant8_0;
3864
- let variant8_1;
3847
+ var variant8 = v2_1;
3865
3848
  if (variant8 === null || variant8=== undefined) {
3866
- variant8_0 = 0;
3867
- variant8_1 = 0;
3849
+ dataView(memory0).setInt8(ptr0 + 20, 0, true);
3868
3850
  } else {
3869
3851
  const e = variant8;
3870
- variant8_0 = 1;
3871
- variant8_1 = e ? 1 : 0;
3852
+ dataView(memory0).setInt8(ptr0 + 20, 1, true);
3853
+ var ptr7 = utf8Encode(e, realloc1, memory0);
3854
+ var len7 = utf8EncodedLen;
3855
+ dataView(memory0).setInt32(ptr0 + 28, len7, true);
3856
+ dataView(memory0).setInt32(ptr0 + 24, ptr7, true);
3857
+ }
3858
+ var variant9 = v2_2;
3859
+ if (variant9 === null || variant9=== undefined) {
3860
+ dataView(memory0).setInt8(ptr0 + 32, 0, true);
3861
+ } else {
3862
+ const e = variant9;
3863
+ dataView(memory0).setInt8(ptr0 + 32, 1, true);
3864
+ dataView(memory0).setInt8(ptr0 + 33, e ? 1 : 0, true);
3872
3865
  }
3873
- var variant10 = v1_3;
3874
- let variant10_0;
3875
- let variant10_1;
3876
- if (variant10 === null || variant10=== undefined) {
3877
- variant10_0 = 0;
3878
- variant10_1 = 0;
3866
+ var variant11 = v2_3;
3867
+ if (variant11 === null || variant11=== undefined) {
3868
+ dataView(memory0).setInt8(ptr0 + 34, 0, true);
3879
3869
  } else {
3880
- const e = variant10;
3881
- var variant9 = e;
3882
- let variant9_0;
3883
- switch (variant9.tag) {
3870
+ const e = variant11;
3871
+ dataView(memory0).setInt8(ptr0 + 34, 1, true);
3872
+ var variant10 = e;
3873
+ switch (variant10.tag) {
3884
3874
  case 'async': {
3885
- variant9_0 = 0;
3875
+ dataView(memory0).setInt8(ptr0 + 35, 0, true);
3886
3876
  break;
3887
3877
  }
3888
3878
  case 'sync': {
3889
- variant9_0 = 1;
3879
+ dataView(memory0).setInt8(ptr0 + 35, 1, true);
3890
3880
  break;
3891
3881
  }
3892
3882
  default: {
3893
- throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant9.tag)}\` (received \`${variant9}\`) specified for \`InstantiationMode\``);
3883
+ throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant10.tag)}\` (received \`${variant10}\`) specified for \`InstantiationMode\``);
3894
3884
  }
3895
3885
  }
3896
- variant10_0 = 1;
3897
- variant10_1 = variant9_0;
3898
3886
  }
3899
- var variant15 = v1_4;
3900
- let variant15_0;
3901
- let variant15_1;
3902
- let variant15_2;
3903
- if (variant15 === null || variant15=== undefined) {
3904
- variant15_0 = 0;
3905
- variant15_1 = 0;
3906
- variant15_2 = 0;
3887
+ var variant16 = v2_4;
3888
+ if (variant16 === null || variant16=== undefined) {
3889
+ dataView(memory0).setInt8(ptr0 + 36, 0, true);
3907
3890
  } else {
3908
- const e = variant15;
3909
- var vec14 = e;
3910
- var len14 = vec14.length;
3911
- var result14 = realloc1(0, 0, 4, len14 * 16);
3912
- for (let i = 0; i < vec14.length; i++) {
3913
- const e = vec14[i];
3914
- const base = result14 + i * 16;var [tuple11_0, tuple11_1] = e;
3915
- var ptr12 = utf8Encode(tuple11_0, realloc1, memory0);
3916
- var len12 = utf8EncodedLen;
3917
- dataView(memory0).setInt32(base + 4, len12, true);
3918
- dataView(memory0).setInt32(base + 0, ptr12, true);
3919
- var ptr13 = utf8Encode(tuple11_1, realloc1, memory0);
3891
+ const e = variant16;
3892
+ dataView(memory0).setInt8(ptr0 + 36, 1, true);
3893
+ var vec15 = e;
3894
+ var len15 = vec15.length;
3895
+ var result15 = realloc1(0, 0, 4, len15 * 16);
3896
+ for (let i = 0; i < vec15.length; i++) {
3897
+ const e = vec15[i];
3898
+ const base = result15 + i * 16;var [tuple12_0, tuple12_1] = e;
3899
+ var ptr13 = utf8Encode(tuple12_0, realloc1, memory0);
3920
3900
  var len13 = utf8EncodedLen;
3921
- dataView(memory0).setInt32(base + 12, len13, true);
3922
- dataView(memory0).setInt32(base + 8, ptr13, true);
3901
+ dataView(memory0).setInt32(base + 4, len13, true);
3902
+ dataView(memory0).setInt32(base + 0, ptr13, true);
3903
+ var ptr14 = utf8Encode(tuple12_1, realloc1, memory0);
3904
+ var len14 = utf8EncodedLen;
3905
+ dataView(memory0).setInt32(base + 12, len14, true);
3906
+ dataView(memory0).setInt32(base + 8, ptr14, true);
3907
+ }
3908
+ dataView(memory0).setInt32(ptr0 + 44, len15, true);
3909
+ dataView(memory0).setInt32(ptr0 + 40, result15, true);
3910
+ }
3911
+ var variant20 = v2_5;
3912
+ if (variant20 === null || variant20=== undefined) {
3913
+ dataView(memory0).setInt8(ptr0 + 48, 0, true);
3914
+ } else {
3915
+ const e = variant20;
3916
+ dataView(memory0).setInt8(ptr0 + 48, 1, true);
3917
+ var variant19 = e;
3918
+ switch (variant19.tag) {
3919
+ case 'list': {
3920
+ const e = variant19.val;
3921
+ dataView(memory0).setInt8(ptr0 + 52, 0, true);
3922
+ var vec18 = e;
3923
+ var len18 = vec18.length;
3924
+ var result18 = realloc1(0, 0, 4, len18 * 8);
3925
+ for (let i = 0; i < vec18.length; i++) {
3926
+ const e = vec18[i];
3927
+ const base = result18 + i * 8;var ptr17 = utf8Encode(e, realloc1, memory0);
3928
+ var len17 = utf8EncodedLen;
3929
+ dataView(memory0).setInt32(base + 4, len17, true);
3930
+ dataView(memory0).setInt32(base + 0, ptr17, true);
3931
+ }
3932
+ dataView(memory0).setInt32(ptr0 + 60, len18, true);
3933
+ dataView(memory0).setInt32(ptr0 + 56, result18, true);
3934
+ break;
3935
+ }
3936
+ case 'all': {
3937
+ dataView(memory0).setInt8(ptr0 + 52, 1, true);
3938
+ break;
3939
+ }
3940
+ default: {
3941
+ throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant19.tag)}\` (received \`${variant19}\`) specified for \`EnabledFeatureSet\``);
3942
+ }
3923
3943
  }
3924
- variant15_0 = 1;
3925
- variant15_1 = result14;
3926
- variant15_2 = len14;
3927
3944
  }
3928
- const ret = exports1['generate-types'](ptr0, len0, variant5_0, variant5_1, variant5_2, variant7_0, variant7_1, variant7_2, variant8_0, variant8_1, variant10_0, variant10_1, variant15_0, variant15_1, variant15_2);
3929
- let variant20;
3945
+ const ret = exports1['generate-types'](ptr0);
3946
+ let variant25;
3930
3947
  switch (dataView(memory0).getUint8(ret + 0, true)) {
3931
3948
  case 0: {
3932
- var len18 = dataView(memory0).getInt32(ret + 8, true);
3933
- var base18 = dataView(memory0).getInt32(ret + 4, true);
3934
- var result18 = [];
3935
- for (let i = 0; i < len18; i++) {
3936
- const base = base18 + i * 16;
3937
- var ptr16 = dataView(memory0).getInt32(base + 0, true);
3938
- var len16 = dataView(memory0).getInt32(base + 4, true);
3939
- var result16 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr16, len16));
3940
- var ptr17 = dataView(memory0).getInt32(base + 8, true);
3941
- var len17 = dataView(memory0).getInt32(base + 12, true);
3942
- var result17 = new Uint8Array(memory0.buffer.slice(ptr17, ptr17 + len17 * 1));
3943
- result18.push([result16, result17]);
3949
+ var len23 = dataView(memory0).getInt32(ret + 8, true);
3950
+ var base23 = dataView(memory0).getInt32(ret + 4, true);
3951
+ var result23 = [];
3952
+ for (let i = 0; i < len23; i++) {
3953
+ const base = base23 + i * 16;
3954
+ var ptr21 = dataView(memory0).getInt32(base + 0, true);
3955
+ var len21 = dataView(memory0).getInt32(base + 4, true);
3956
+ var result21 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr21, len21));
3957
+ var ptr22 = dataView(memory0).getInt32(base + 8, true);
3958
+ var len22 = dataView(memory0).getInt32(base + 12, true);
3959
+ var result22 = new Uint8Array(memory0.buffer.slice(ptr22, ptr22 + len22 * 1));
3960
+ result23.push([result21, result22]);
3944
3961
  }
3945
- variant20= {
3962
+ variant25= {
3946
3963
  tag: 'ok',
3947
- val: result18
3964
+ val: result23
3948
3965
  };
3949
3966
  break;
3950
3967
  }
3951
3968
  case 1: {
3952
- var ptr19 = dataView(memory0).getInt32(ret + 4, true);
3953
- var len19 = dataView(memory0).getInt32(ret + 8, true);
3954
- var result19 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr19, len19));
3955
- variant20= {
3969
+ var ptr24 = dataView(memory0).getInt32(ret + 4, true);
3970
+ var len24 = dataView(memory0).getInt32(ret + 8, true);
3971
+ var result24 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr24, len24));
3972
+ variant25= {
3956
3973
  tag: 'err',
3957
- val: result19
3974
+ val: result24
3958
3975
  };
3959
3976
  break;
3960
3977
  }
@@ -3962,11 +3979,12 @@ function generateTypes(arg0, arg1) {
3962
3979
  throw new TypeError('invalid variant discriminant for expected');
3963
3980
  }
3964
3981
  }
3965
- postReturn1(ret);
3966
- if (variant20.tag === 'err') {
3967
- throw new ComponentError(variant20.val);
3982
+ if (variant25.tag === 'err') {
3983
+ throw new ComponentError(variant25.val);
3968
3984
  }
3969
- return variant20.val;
3985
+ const retVal = variant25.val;
3986
+ postReturn1(ret);
3987
+ return retVal;
3970
3988
  }
3971
3989
 
3972
3990
  let _initialized = false;
Binary file
package/obj/wasm-tools.js CHANGED
@@ -3587,11 +3587,12 @@ function parse(arg0) {
3587
3587
  throw new TypeError('invalid variant discriminant for expected');
3588
3588
  }
3589
3589
  }
3590
- postReturn0(ret);
3591
3590
  if (variant3.tag === 'err') {
3592
3591
  throw new ComponentError(variant3.val);
3593
3592
  }
3594
- return variant3.val;
3593
+ const retVal = variant3.val;
3594
+ postReturn0(ret);
3595
+ return retVal;
3595
3596
  }
3596
3597
 
3597
3598
  function print(arg0) {
@@ -3628,11 +3629,12 @@ function print(arg0) {
3628
3629
  throw new TypeError('invalid variant discriminant for expected');
3629
3630
  }
3630
3631
  }
3631
- postReturn0(ret);
3632
3632
  if (variant3.tag === 'err') {
3633
3633
  throw new ComponentError(variant3.val);
3634
3634
  }
3635
- return variant3.val;
3635
+ const retVal = variant3.val;
3636
+ postReturn0(ret);
3637
+ return retVal;
3636
3638
  }
3637
3639
 
3638
3640
  function componentNew(arg0, arg1) {
@@ -3701,11 +3703,12 @@ function componentNew(arg0, arg1) {
3701
3703
  throw new TypeError('invalid variant discriminant for expected');
3702
3704
  }
3703
3705
  }
3704
- postReturn0(ret);
3705
3706
  if (variant8.tag === 'err') {
3706
3707
  throw new ComponentError(variant8.val);
3707
3708
  }
3708
- return variant8.val;
3709
+ const retVal = variant8.val;
3710
+ postReturn0(ret);
3711
+ return retVal;
3709
3712
  }
3710
3713
 
3711
3714
  function componentWit(arg0) {
@@ -3742,17 +3745,18 @@ function componentWit(arg0) {
3742
3745
  throw new TypeError('invalid variant discriminant for expected');
3743
3746
  }
3744
3747
  }
3745
- postReturn0(ret);
3746
3748
  if (variant3.tag === 'err') {
3747
3749
  throw new ComponentError(variant3.val);
3748
3750
  }
3749
- return variant3.val;
3751
+ const retVal = variant3.val;
3752
+ postReturn0(ret);
3753
+ return retVal;
3750
3754
  }
3751
3755
 
3752
3756
  function componentEmbed(arg0) {
3753
3757
  if (!_initialized) throwUninitialized();
3754
- var ptr0 = realloc1(0, 0, 4, 64);
3755
- var {binary: v1_0, witSource: v1_1, witPath: v1_2, stringEncoding: v1_3, dummy: v1_4, world: v1_5, metadata: v1_6 } = arg0;
3758
+ var ptr0 = realloc1(0, 0, 4, 80);
3759
+ var {binary: v1_0, witSource: v1_1, witPath: v1_2, stringEncoding: v1_3, dummy: v1_4, world: v1_5, metadata: v1_6, features: v1_7 } = arg0;
3756
3760
  var variant3 = v1_0;
3757
3761
  if (variant3 === null || variant3=== undefined) {
3758
3762
  dataView(memory0).setInt8(ptr0 + 0, 0, true);
@@ -3876,26 +3880,60 @@ function componentEmbed(arg0) {
3876
3880
  dataView(memory0).setInt32(ptr0 + 60, len19, true);
3877
3881
  dataView(memory0).setInt32(ptr0 + 56, result19, true);
3878
3882
  }
3883
+ var variant24 = v1_7;
3884
+ if (variant24 === null || variant24=== undefined) {
3885
+ dataView(memory0).setInt8(ptr0 + 64, 0, true);
3886
+ } else {
3887
+ const e = variant24;
3888
+ dataView(memory0).setInt8(ptr0 + 64, 1, true);
3889
+ var variant23 = e;
3890
+ switch (variant23.tag) {
3891
+ case 'list': {
3892
+ const e = variant23.val;
3893
+ dataView(memory0).setInt8(ptr0 + 68, 0, true);
3894
+ var vec22 = e;
3895
+ var len22 = vec22.length;
3896
+ var result22 = realloc1(0, 0, 4, len22 * 8);
3897
+ for (let i = 0; i < vec22.length; i++) {
3898
+ const e = vec22[i];
3899
+ const base = result22 + i * 8;var ptr21 = utf8Encode(e, realloc1, memory0);
3900
+ var len21 = utf8EncodedLen;
3901
+ dataView(memory0).setInt32(base + 4, len21, true);
3902
+ dataView(memory0).setInt32(base + 0, ptr21, true);
3903
+ }
3904
+ dataView(memory0).setInt32(ptr0 + 76, len22, true);
3905
+ dataView(memory0).setInt32(ptr0 + 72, result22, true);
3906
+ break;
3907
+ }
3908
+ case 'all': {
3909
+ dataView(memory0).setInt8(ptr0 + 68, 1, true);
3910
+ break;
3911
+ }
3912
+ default: {
3913
+ throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant23.tag)}\` (received \`${variant23}\`) specified for \`EnabledFeatureSet\``);
3914
+ }
3915
+ }
3916
+ }
3879
3917
  const ret = exports1['local:wasm-tools/tools#component-embed'](ptr0);
3880
- let variant23;
3918
+ let variant27;
3881
3919
  switch (dataView(memory0).getUint8(ret + 0, true)) {
3882
3920
  case 0: {
3883
- var ptr21 = dataView(memory0).getInt32(ret + 4, true);
3884
- var len21 = dataView(memory0).getInt32(ret + 8, true);
3885
- var result21 = new Uint8Array(memory0.buffer.slice(ptr21, ptr21 + len21 * 1));
3886
- variant23= {
3921
+ var ptr25 = dataView(memory0).getInt32(ret + 4, true);
3922
+ var len25 = dataView(memory0).getInt32(ret + 8, true);
3923
+ var result25 = new Uint8Array(memory0.buffer.slice(ptr25, ptr25 + len25 * 1));
3924
+ variant27= {
3887
3925
  tag: 'ok',
3888
- val: result21
3926
+ val: result25
3889
3927
  };
3890
3928
  break;
3891
3929
  }
3892
3930
  case 1: {
3893
- var ptr22 = dataView(memory0).getInt32(ret + 4, true);
3894
- var len22 = dataView(memory0).getInt32(ret + 8, true);
3895
- var result22 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr22, len22));
3896
- variant23= {
3931
+ var ptr26 = dataView(memory0).getInt32(ret + 4, true);
3932
+ var len26 = dataView(memory0).getInt32(ret + 8, true);
3933
+ var result26 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr26, len26));
3934
+ variant27= {
3897
3935
  tag: 'err',
3898
- val: result22
3936
+ val: result26
3899
3937
  };
3900
3938
  break;
3901
3939
  }
@@ -3903,11 +3941,12 @@ function componentEmbed(arg0) {
3903
3941
  throw new TypeError('invalid variant discriminant for expected');
3904
3942
  }
3905
3943
  }
3906
- postReturn0(ret);
3907
- if (variant23.tag === 'err') {
3908
- throw new ComponentError(variant23.val);
3944
+ if (variant27.tag === 'err') {
3945
+ throw new ComponentError(variant27.val);
3909
3946
  }
3910
- return variant23.val;
3947
+ const retVal = variant27.val;
3948
+ postReturn0(ret);
3949
+ return retVal;
3911
3950
  }
3912
3951
 
3913
3952
  function metadataShow(arg0) {
@@ -4012,11 +4051,12 @@ function metadataShow(arg0) {
4012
4051
  throw new TypeError('invalid variant discriminant for expected');
4013
4052
  }
4014
4053
  }
4015
- postReturn1(ret);
4016
4054
  if (variant11.tag === 'err') {
4017
4055
  throw new ComponentError(variant11.val);
4018
4056
  }
4019
- return variant11.val;
4057
+ const retVal = variant11.val;
4058
+ postReturn1(ret);
4059
+ return retVal;
4020
4060
  }
4021
4061
 
4022
4062
  function metadataAdd(arg0, arg1) {
@@ -4081,11 +4121,12 @@ function metadataAdd(arg0, arg1) {
4081
4121
  throw new TypeError('invalid variant discriminant for expected');
4082
4122
  }
4083
4123
  }
4084
- postReturn0(ret);
4085
4124
  if (variant10.tag === 'err') {
4086
4125
  throw new ComponentError(variant10.val);
4087
4126
  }
4088
- return variant10.val;
4127
+ const retVal = variant10.val;
4128
+ postReturn0(ret);
4129
+ return retVal;
4089
4130
  }
4090
4131
 
4091
4132
  let _initialized = false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytecodealliance/jco",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "JavaScript tooling for working with WebAssembly Components",
5
5
  "author": "Guy Bedford",
6
6
  "bin": {
package/src/cmd/run.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { getTmpDir } from '../common.js';
2
2
  import { transpile } from './transpile.js';
3
- import { rm, stat, mkdir, writeFile, symlink } from 'node:fs/promises';
3
+ import { rm, mkdir, writeFile, symlink } from 'node:fs/promises';
4
4
  import { basename, resolve, extname } from 'node:path';
5
5
  import { spawn } from 'node:child_process';
6
6
  import process from 'node:process';
@@ -85,21 +85,11 @@ async function runComponent (componentPath, args, opts, executor) {
85
85
 
86
86
  await writeFile(resolve(outDir, 'package.json'), JSON.stringify({ type: 'module' }));
87
87
 
88
- let preview2ShimPath = fileURLToPath(new URL('../../node_modules/@bytecodealliance/preview2-shim', import.meta.url));
89
- while (true) {
90
- try {
91
- if ((await stat(preview2ShimPath)).isDirectory()) {
92
- break;
93
- }
94
- }
95
- catch {
96
- // empty
97
- }
98
- let len = preview2ShimPath.length;
99
- preview2ShimPath = resolve(preview2ShimPath, '..', '..', '..', 'node_modules', '@bytecodealliance', 'preview2-shim');
100
- if (preview2ShimPath.length === len) {
101
- throw c`Unable to locate the {bold @bytecodealliance/preview2-shim} package, make sure it is installed.`;
102
- }
88
+ let preview2ShimPath
89
+ try {
90
+ preview2ShimPath = fileURLToPath(new URL('../..', import.meta.resolve('@bytecodealliance/preview2-shim')));
91
+ } catch {
92
+ throw c`Unable to locate the {bold @bytecodealliance/preview2-shim} package, make sure it is installed.`;
103
93
  }
104
94
 
105
95
  const modulesDir = resolve(outDir, 'node_modules', '@bytecodealliance');
@@ -7,6 +7,7 @@ export function types(witPath: any, opts: any): Promise<void>;
7
7
  * instantiation?: 'async' | 'sync',
8
8
  * tlaCompat?: bool,
9
9
  * outDir?: string,
10
+ * features?: string[] | 'all',
10
11
  * }} opts
11
12
  * @returns {Promise<{ [filename: string]: Uint8Array }>}
12
13
  */
@@ -16,6 +17,7 @@ export function typesComponent(witPath: string, opts: {
16
17
  instantiation?: "async" | "sync";
17
18
  tlaCompat?: bool;
18
19
  outDir?: string;
20
+ features?: string[] | "all";
19
21
  }): Promise<{
20
22
  [filename: string]: Uint8Array;
21
23
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"transpile.d.ts","sourceRoot":"","sources":["transpile.js"],"names":[],"mappings":"AAgBA,8DAGC;AAED;;;;;;;;;;GAUG;AACH,wCAVW,MAAM,QACN;IACV,IAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACrC,SAAa,CAAC,EAAE,IAAI,CAAC;IACrB,MAAU,CAAC,EAAE,MAAM,CAAC;CACjB,GACS,OAAO,CAAC;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC,CAoBvD;AAkBD,sFAwBC;AAuBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8CAtBW,UAAU,SACV;IACV,IAAQ,EAAE,MAAM,CAAC;IACjB,aAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACrC,cAAkB,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,QAAQ,GAAG,kBAAkB,CAAC;IACxE,GAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,wBAA4B,CAAC,EAAE,IAAI,CAAC;IACpC,OAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,SAAa,CAAC,EAAE,IAAI,CAAC;IACrB,YAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,EAAM,CAAC,EAAE,IAAI,CAAC;IACd,MAAU,CAAC,EAAE,IAAI,CAAC;IAClB,QAAY,CAAC,EAAE,IAAI,CAAC;IACpB,iBAAqB,CAAC,EAAE,IAAI,CAAC;IAC7B,MAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAe,CAAC,EAAE,IAAI,CAAC;IACvB,sBAA0B,CAAC,EAAE,IAAI,CAAC;IAClC,OAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACS,OAAO,CAAC;IAAE,KAAK,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,EAAE,CAAA;CAAE,CAAC,CAoSnI"}
1
+ {"version":3,"file":"transpile.d.ts","sourceRoot":"","sources":["transpile.js"],"names":[],"mappings":"AAgBA,8DAGC;AAED;;;;;;;;;;;GAWG;AACH,wCAXW,MAAM,QACN;IACV,IAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACrC,SAAa,CAAC,EAAE,IAAI,CAAC;IACrB,MAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAY,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;CAC7B,GACS,OAAO,CAAC;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC,CA6BvD;AAkBD,sFAwBC;AAuBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8CAtBW,UAAU,SACV;IACV,IAAQ,EAAE,MAAM,CAAC;IACjB,aAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACrC,cAAkB,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,QAAQ,GAAG,kBAAkB,CAAC;IACxE,GAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,wBAA4B,CAAC,EAAE,IAAI,CAAC;IACpC,OAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,SAAa,CAAC,EAAE,IAAI,CAAC;IACrB,YAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,EAAM,CAAC,EAAE,IAAI,CAAC;IACd,MAAU,CAAC,EAAE,IAAI,CAAC;IAClB,QAAY,CAAC,EAAE,IAAI,CAAC;IACpB,iBAAqB,CAAC,EAAE,IAAI,CAAC;IAC7B,MAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAe,CAAC,EAAE,IAAI,CAAC;IACvB,sBAA0B,CAAC,EAAE,IAAI,CAAC;IAClC,OAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACS,OAAO,CAAC;IAAE,KAAK,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,EAAE,CAAA;CAAE,CAAC,CAoSnI"}
@@ -27,6 +27,7 @@ export async function types (witPath, opts) {
27
27
  * instantiation?: 'async' | 'sync',
28
28
  * tlaCompat?: bool,
29
29
  * outDir?: string,
30
+ * features?: string[] | 'all',
30
31
  * }} opts
31
32
  * @returns {Promise<{ [filename: string]: Uint8Array }>}
32
33
  */
@@ -42,11 +43,20 @@ export async function typesComponent (witPath, opts) {
42
43
  let outDir = (opts.outDir ?? '').replace(/\\/g, '/');
43
44
  if (!outDir.endsWith('/') && outDir !== '')
44
45
  outDir += '/';
46
+
47
+ let features = null;
48
+ if (opts.allFeatures) {
49
+ features = { tag: 'all' };
50
+ } else if (Array.isArray(opts.feature)) {
51
+ features = { tag: 'list', val: opts.feature };
52
+ }
53
+
45
54
  return Object.fromEntries(generateTypes(name, {
46
55
  wit: { tag: 'path', val: (isWindows ? '//?/' : '') + resolve(witPath) },
47
56
  instantiation,
48
57
  tlaCompat: opts.tlaCompat ?? false,
49
- world: opts.worldName
58
+ world: opts.worldName,
59
+ features,
50
60
  }).map(([name, file]) => [`${outDir}${name}`, file]));
51
61
  }
52
62
 
@@ -59,7 +69,7 @@ async function writeFiles(files, summaryTitle) {
59
69
  return;
60
70
  console.log(c`
61
71
  {bold ${summaryTitle}:}
62
-
72
+
63
73
  ${table(Object.entries(files).map(([name, source]) => [
64
74
  c` - {italic ${name}} `,
65
75
  c`{black.italic ${sizeStr(source.length)}}`
package/src/jco.js CHANGED
@@ -11,12 +11,22 @@ 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.4.0');
14
+ .version('1.4.1');
15
15
 
16
16
  function myParseInt(value) {
17
17
  return parseInt(value, 10);
18
18
  }
19
19
 
20
+ /**
21
+ * Option parsing that allows for collecting repeated arguments
22
+ *
23
+ * @param {string} value - the new value that is added
24
+ * @param {string[]} previous - the existing list of values
25
+ */
26
+ function collectOptions(value, previous) {
27
+ return previous.concat([value]);
28
+ }
29
+
20
30
  program.command('componentize')
21
31
  .description('Create a component from a JavaScript module')
22
32
  .usage('<js-source> --wit wit-world.wit -o <component-path>')
@@ -64,6 +74,8 @@ program.command('types')
64
74
  .option('--tla-compat', 'generates types for the TLA compat output with an async $init promise export')
65
75
  .addOption(new Option('-I, --instantiation [mode]', 'type output for custom module instantiation').choices(['async', 'sync']).preset('async'))
66
76
  .option('-q, --quiet', 'disable output summary')
77
+ .option('--feature <feature>', 'enable one specific WIT feature (repeatable)', collectOptions, [])
78
+ .option('--all-features', 'enable all features')
67
79
  .action(asyncAction(types));
68
80
 
69
81
  program.command('run')