@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.
- package/obj/interfaces/local-wasm-tools-tools.d.ts +12 -3
- package/obj/interfaces/wasi-cli-environment.d.ts +1 -1
- package/obj/interfaces/wasi-filesystem-preopens.d.ts +1 -1
- package/obj/js-component-bindgen-component.core.wasm +0 -0
- package/obj/js-component-bindgen-component.d.ts +13 -4
- package/obj/js-component-bindgen-component.js +138 -120
- package/obj/wasm-tools.core.wasm +0 -0
- package/obj/wasm-tools.js +70 -29
- package/package.json +1 -1
- package/src/cmd/run.js +6 -16
- package/src/cmd/transpile.d.ts +2 -0
- package/src/cmd/transpile.d.ts.map +1 -1
- package/src/cmd/transpile.js +12 -2
- package/src/jco.js +13 -1
|
@@ -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]
|
|
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 {
|
|
Binary file
|
|
@@ -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
|
-
|
|
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 =
|
|
3805
|
-
var
|
|
3806
|
-
var
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
switch (
|
|
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 =
|
|
3814
|
-
|
|
3815
|
-
var
|
|
3816
|
-
|
|
3817
|
-
|
|
3818
|
-
|
|
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 =
|
|
3823
|
-
|
|
3824
|
-
var
|
|
3825
|
-
var
|
|
3826
|
-
var
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
|
|
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 =
|
|
3835
|
-
|
|
3836
|
-
var
|
|
3837
|
-
|
|
3838
|
-
|
|
3839
|
-
|
|
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(
|
|
3844
|
+
throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant6.tag)}\` (received \`${variant6}\`) specified for \`Wit\``);
|
|
3844
3845
|
}
|
|
3845
3846
|
}
|
|
3846
|
-
var
|
|
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
|
-
|
|
3867
|
-
variant8_1 = 0;
|
|
3849
|
+
dataView(memory0).setInt8(ptr0 + 20, 0, true);
|
|
3868
3850
|
} else {
|
|
3869
3851
|
const e = variant8;
|
|
3870
|
-
|
|
3871
|
-
|
|
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
|
|
3874
|
-
|
|
3875
|
-
|
|
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 =
|
|
3881
|
-
|
|
3882
|
-
|
|
3883
|
-
switch (
|
|
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
|
-
|
|
3875
|
+
dataView(memory0).setInt8(ptr0 + 35, 0, true);
|
|
3886
3876
|
break;
|
|
3887
3877
|
}
|
|
3888
3878
|
case 'sync': {
|
|
3889
|
-
|
|
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(
|
|
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
|
|
3900
|
-
|
|
3901
|
-
|
|
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 =
|
|
3909
|
-
|
|
3910
|
-
var
|
|
3911
|
-
var
|
|
3912
|
-
|
|
3913
|
-
|
|
3914
|
-
const
|
|
3915
|
-
|
|
3916
|
-
var
|
|
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 +
|
|
3922
|
-
dataView(memory0).setInt32(base +
|
|
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
|
|
3929
|
-
let
|
|
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
|
|
3933
|
-
var
|
|
3934
|
-
var
|
|
3935
|
-
for (let i = 0; i <
|
|
3936
|
-
const base =
|
|
3937
|
-
var
|
|
3938
|
-
var
|
|
3939
|
-
var
|
|
3940
|
-
var
|
|
3941
|
-
var
|
|
3942
|
-
var
|
|
3943
|
-
|
|
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
|
-
|
|
3962
|
+
variant25= {
|
|
3946
3963
|
tag: 'ok',
|
|
3947
|
-
val:
|
|
3964
|
+
val: result23
|
|
3948
3965
|
};
|
|
3949
3966
|
break;
|
|
3950
3967
|
}
|
|
3951
3968
|
case 1: {
|
|
3952
|
-
var
|
|
3953
|
-
var
|
|
3954
|
-
var
|
|
3955
|
-
|
|
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:
|
|
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
|
-
|
|
3966
|
-
|
|
3967
|
-
throw new ComponentError(variant20.val);
|
|
3982
|
+
if (variant25.tag === 'err') {
|
|
3983
|
+
throw new ComponentError(variant25.val);
|
|
3968
3984
|
}
|
|
3969
|
-
|
|
3985
|
+
const retVal = variant25.val;
|
|
3986
|
+
postReturn1(ret);
|
|
3987
|
+
return retVal;
|
|
3970
3988
|
}
|
|
3971
3989
|
|
|
3972
3990
|
let _initialized = false;
|
package/obj/wasm-tools.core.wasm
CHANGED
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
3918
|
+
let variant27;
|
|
3881
3919
|
switch (dataView(memory0).getUint8(ret + 0, true)) {
|
|
3882
3920
|
case 0: {
|
|
3883
|
-
var
|
|
3884
|
-
var
|
|
3885
|
-
var
|
|
3886
|
-
|
|
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:
|
|
3926
|
+
val: result25
|
|
3889
3927
|
};
|
|
3890
3928
|
break;
|
|
3891
3929
|
}
|
|
3892
3930
|
case 1: {
|
|
3893
|
-
var
|
|
3894
|
-
var
|
|
3895
|
-
var
|
|
3896
|
-
|
|
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:
|
|
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
|
-
|
|
3907
|
-
|
|
3908
|
-
throw new ComponentError(variant23.val);
|
|
3944
|
+
if (variant27.tag === 'err') {
|
|
3945
|
+
throw new ComponentError(variant27.val);
|
|
3909
3946
|
}
|
|
3910
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4127
|
+
const retVal = variant10.val;
|
|
4128
|
+
postReturn0(ret);
|
|
4129
|
+
return retVal;
|
|
4089
4130
|
}
|
|
4090
4131
|
|
|
4091
4132
|
let _initialized = false;
|
package/package.json
CHANGED
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,
|
|
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
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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');
|
package/src/cmd/transpile.d.ts
CHANGED
|
@@ -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
|
|
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"}
|
package/src/cmd/transpile.js
CHANGED
|
@@ -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.
|
|
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')
|