@bytecodealliance/jco 0.9.4 → 0.10.0

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
@@ -103,6 +103,10 @@ Options include:
103
103
  * `--instantiation`: Instead of a direct ES module, export an `instantiate` function which can take the imports as an argument instead of implicit imports.
104
104
  * `--valid-lifting-optimization`: Internal validations are removed assuming that core Wasm binaries are valid components, providing a minor output size saving.
105
105
 
106
+ #### Bindgen Crate
107
+
108
+ To directly call into the transpilation in Rust, the bindgen used in jco is also available on crates.io as [js-component-bindgen](https://crates.io/crates/js-component-bindgen).
109
+
106
110
  ### Componentize
107
111
 
108
112
  To componentize a JS file run:
@@ -1,3 +1,3 @@
1
- export namespace ImportsEnvironment {
1
+ export namespace Environment {
2
2
  export function getEnvironment(): [string, string][];
3
3
  }
@@ -1,4 +1,4 @@
1
- export namespace ImportsExit {
1
+ export namespace Exit {
2
2
  export function exit(status: Result<void, void>): void;
3
3
  }
4
4
  export type Result<T, E> = { tag: 'ok', val: T } | { tag: 'err', val: E };
@@ -1,4 +1,4 @@
1
- export namespace ImportsFilesystem {
1
+ export namespace Filesystem {
2
2
  export function readViaStream(this: Descriptor, offset: Filesize): InputStream;
3
3
  export function writeViaStream(this: Descriptor, offset: Filesize): OutputStream;
4
4
  export function appendViaStream(this: Descriptor): OutputStream;
@@ -10,7 +10,7 @@ export namespace ImportsFilesystem {
10
10
  }
11
11
  export type Descriptor = number;
12
12
  export type Filesize = bigint;
13
- import type { InputStream } from '../imports/streams';
13
+ import type { InputStream } from '../interfaces/wasi-io-streams';
14
14
  export { InputStream };
15
15
  /**
16
16
  * # Variants
@@ -90,7 +90,7 @@ export { InputStream };
90
90
  * ## `"cross-device"`
91
91
  */
92
92
  export type ErrorCode = 'access' | 'would-block' | 'already' | 'bad-descriptor' | 'busy' | 'deadlock' | 'quota' | 'exist' | 'file-too-large' | 'illegal-byte-sequence' | 'in-progress' | 'interrupted' | 'invalid' | 'io' | 'is-directory' | 'loop' | 'too-many-links' | 'message-size' | 'name-too-long' | 'no-device' | 'no-entry' | 'no-lock' | 'insufficient-memory' | 'insufficient-space' | 'not-directory' | 'not-empty' | 'not-recoverable' | 'unsupported' | 'no-tty' | 'no-such-device' | 'overflow' | 'not-permitted' | 'pipe' | 'read-only' | 'invalid-seek' | 'text-file-busy' | 'cross-device';
93
- import type { OutputStream } from '../imports/streams';
93
+ import type { OutputStream } from '../interfaces/wasi-io-streams';
94
94
  export { OutputStream };
95
95
  /**
96
96
  * # Variants
@@ -115,7 +115,7 @@ export type DescriptorType = 'unknown' | 'block-device' | 'character-device' | '
115
115
  export type Device = bigint;
116
116
  export type Inode = bigint;
117
117
  export type LinkCount = bigint;
118
- import type { Datetime } from '../imports/wall-clock';
118
+ import type { Datetime } from '../interfaces/wasi-clocks-wall-clock';
119
119
  export { Datetime };
120
120
  export interface DescriptorStat {
121
121
  device: Device,
@@ -0,0 +1,5 @@
1
+ export namespace Preopens {
2
+ export function getDirectories(): [Descriptor, string][];
3
+ }
4
+ import type { Descriptor } from '../interfaces/wasi-filesystem-filesystem';
5
+ export { Descriptor };
@@ -1,3 +1,3 @@
1
- export namespace ImportsRandom {
1
+ export namespace Random {
2
2
  export function getRandomBytes(len: bigint): Uint8Array | ArrayBuffer;
3
3
  }
@@ -0,0 +1,5 @@
1
+ export namespace Stderr {
2
+ export function getStderr(): OutputStream;
3
+ }
4
+ import type { OutputStream } from '../interfaces/wasi-io-streams';
5
+ export { OutputStream };
@@ -0,0 +1,5 @@
1
+ export namespace Stdin {
2
+ export function getStdin(): InputStream;
3
+ }
4
+ import type { InputStream } from '../interfaces/wasi-io-streams';
5
+ export { InputStream };
@@ -0,0 +1,5 @@
1
+ export namespace Stdout {
2
+ export function getStdout(): OutputStream;
3
+ }
4
+ import type { OutputStream } from '../interfaces/wasi-io-streams';
5
+ export { OutputStream };
@@ -1,12 +1,21 @@
1
- export namespace ImportsStreams {
2
- export function read(this: InputStream, len: bigint): [Uint8Array | ArrayBuffer, boolean];
3
- export function blockingRead(this: InputStream, len: bigint): [Uint8Array | ArrayBuffer, boolean];
1
+ export namespace Streams {
2
+ export function read(this: InputStream, len: bigint): [Uint8Array | ArrayBuffer, StreamStatus];
3
+ export function blockingRead(this: InputStream, len: bigint): [Uint8Array | ArrayBuffer, StreamStatus];
4
4
  export function dropInputStream(this: InputStream): void;
5
- export function write(this: OutputStream, buf: Uint8Array): bigint;
6
- export function blockingWrite(this: OutputStream, buf: Uint8Array): bigint;
5
+ export function write(this: OutputStream, buf: Uint8Array): [bigint, StreamStatus];
6
+ export function blockingWrite(this: OutputStream, buf: Uint8Array): [bigint, StreamStatus];
7
7
  export function dropOutputStream(this: OutputStream): void;
8
8
  }
9
9
  export type InputStream = number;
10
+ /**
11
+ * # Variants
12
+ *
13
+ * ## `"open"`
14
+ *
15
+ * ## `"ended"`
16
+ */
17
+ export type StreamStatus = 'open' | 'ended';
10
18
  export interface StreamError {
19
+ dummy: number,
11
20
  }
12
21
  export type OutputStream = number;
@@ -1,4 +1,4 @@
1
- export namespace ImportsWallClock {
1
+ export namespace WallClock {
2
2
  }
3
3
  export interface Datetime {
4
4
  seconds: bigint,
@@ -1,3 +1,16 @@
1
+ export type Files = [string, Uint8Array][];
2
+ export type Maps = [string, string][];
3
+ export interface GenerateOptions {
4
+ name: string,
5
+ noTypescript?: boolean,
6
+ instantiation?: boolean,
7
+ map?: Maps,
8
+ compat?: boolean,
9
+ noNodejsCompat?: boolean,
10
+ base64Cutoff?: number,
11
+ tlaCompat?: boolean,
12
+ validLiftingOptimization?: boolean,
13
+ }
1
14
  export type Wit = WitSource | WitBinary | WitPath;
2
15
  export interface WitSource {
3
16
  tag: 'source',
@@ -11,7 +24,6 @@ export interface WitPath {
11
24
  tag: 'path',
12
25
  val: string,
13
26
  }
14
- export type Maps = [string, string][];
15
27
  export interface TypeGenerationOptions {
16
28
  wit: Wit,
17
29
  world?: string,
@@ -19,18 +31,6 @@ export interface TypeGenerationOptions {
19
31
  instantiation?: boolean,
20
32
  map?: Maps,
21
33
  }
22
- export interface GenerateOptions {
23
- name: string,
24
- noTypescript?: boolean,
25
- instantiation?: boolean,
26
- map?: Maps,
27
- compat?: boolean,
28
- noNodejsCompat?: boolean,
29
- base64Cutoff?: number,
30
- tlaCompat?: boolean,
31
- validLiftingOptimization?: boolean,
32
- }
33
- export type Files = [string, Uint8Array][];
34
34
  /**
35
35
  * # Variants
36
36
  *
@@ -44,16 +44,16 @@ export interface Transpiled {
44
44
  imports: string[],
45
45
  exports: [string, ExportType][],
46
46
  }
47
- import { ImportsEnvironment } from './imports/environment';
48
- import { ImportsExit } from './imports/exit';
49
- import { ImportsPreopens } from './imports/preopens';
50
- import { ImportsStderr } from './imports/stderr';
51
- import { ImportsStdin } from './imports/stdin';
52
- import { ImportsStdout } from './imports/stdout';
53
- import { ImportsWallClock } from './imports/wall-clock';
54
- import { ImportsFilesystem } from './imports/filesystem';
55
- import { ImportsStreams } from './imports/streams';
56
- import { ImportsRandom } from './imports/random';
47
+ import { Environment } from './interfaces/environment';
48
+ import { Exit } from './interfaces/exit';
49
+ import { Preopens } from './interfaces/preopens';
50
+ import { Stderr } from './interfaces/stderr';
51
+ import { Stdin } from './interfaces/stdin';
52
+ import { Stdout } from './interfaces/stdout';
53
+ import { WallClock } from './interfaces/wall-clock';
54
+ import { Filesystem } from './interfaces/filesystem';
55
+ import { Streams } from './interfaces/streams';
56
+ import { Random } from './interfaces/random';
57
57
  export function generate(component: Uint8Array | ArrayBuffer, options: GenerateOptions): Transpiled;
58
58
  export function generateTypes(name: string, options: TypeGenerationOptions): Files;
59
59
 
@@ -104,10 +104,33 @@ function lowering0(arg0) {
104
104
  }
105
105
 
106
106
  function lowering1(arg0) {
107
- dropDescriptor(arg0 >>> 0);
107
+ dropInputStream(arg0 >>> 0);
108
108
  }
109
109
 
110
110
  function lowering2(arg0) {
111
+ dropOutputStream(arg0 >>> 0);
112
+ }
113
+
114
+ function lowering3(arg0) {
115
+ dropDescriptor(arg0 >>> 0);
116
+ }
117
+
118
+ function lowering4() {
119
+ const ret = getStdin();
120
+ return toUint32(ret);
121
+ }
122
+
123
+ function lowering5() {
124
+ const ret = getStdout();
125
+ return toUint32(ret);
126
+ }
127
+
128
+ function lowering6() {
129
+ const ret = getStderr();
130
+ return toUint32(ret);
131
+ }
132
+
133
+ function lowering7(arg0) {
111
134
  let variant0;
112
135
  switch (arg0) {
113
136
  case 0: {
@@ -130,29 +153,6 @@ function lowering2(arg0) {
130
153
  }
131
154
  exit(variant0);
132
155
  }
133
-
134
- function lowering3() {
135
- const ret = getStderr();
136
- return toUint32(ret);
137
- }
138
-
139
- function lowering4() {
140
- const ret = getStdin();
141
- return toUint32(ret);
142
- }
143
-
144
- function lowering5() {
145
- const ret = getStdout();
146
- return toUint32(ret);
147
- }
148
-
149
- function lowering6(arg0) {
150
- dropInputStream(arg0 >>> 0);
151
- }
152
-
153
- function lowering7(arg0) {
154
- dropOutputStream(arg0 >>> 0);
155
- }
156
156
  let exports2;
157
157
  let memory0;
158
158
  let realloc0;
@@ -1467,10 +1467,10 @@ function lowering17(arg0, arg1, arg2) {
1467
1467
  } catch (e) {
1468
1468
  ret = { tag: 'err', val: getErrorPayload(e) };
1469
1469
  }
1470
- const variant3 = ret;
1471
- switch (variant3.tag) {
1470
+ const variant4 = ret;
1471
+ switch (variant4.tag) {
1472
1472
  case 'ok': {
1473
- const e = variant3.val;
1473
+ const e = variant4.val;
1474
1474
  dataView(memory0).setInt8(arg2 + 0, 0, true);
1475
1475
  const [tuple0_0, tuple0_1] = e;
1476
1476
  const val1 = tuple0_0;
@@ -1480,13 +1480,33 @@ function lowering17(arg0, arg1, arg2) {
1480
1480
  (new Uint8Array(memory0.buffer, ptr1, len1 * 1)).set(src1);
1481
1481
  dataView(memory0).setInt32(arg2 + 8, len1, true);
1482
1482
  dataView(memory0).setInt32(arg2 + 4, ptr1, true);
1483
- dataView(memory0).setInt8(arg2 + 12, tuple0_1 ? 1 : 0, true);
1483
+ const val2 = tuple0_1;
1484
+ let enum2;
1485
+ switch (val2) {
1486
+ case 'open': {
1487
+ enum2 = 0;
1488
+ break;
1489
+ }
1490
+ case 'ended': {
1491
+ enum2 = 1;
1492
+ break;
1493
+ }
1494
+ default: {
1495
+ if ((tuple0_1) instanceof Error) {
1496
+ console.error(tuple0_1);
1497
+ }
1498
+
1499
+ throw new TypeError(`"${val2}" is not one of the cases of stream-status`);
1500
+ }
1501
+ }
1502
+ dataView(memory0).setInt8(arg2 + 12, enum2, true);
1484
1503
  break;
1485
1504
  }
1486
1505
  case 'err': {
1487
- const e = variant3.val;
1506
+ const e = variant4.val;
1488
1507
  dataView(memory0).setInt8(arg2 + 0, 1, true);
1489
- const { } = e;
1508
+ const {dummy: v3_0 } = e;
1509
+ dataView(memory0).setInt32(arg2 + 4, toUint32(v3_0), true);
1490
1510
  break;
1491
1511
  }
1492
1512
  default: {
@@ -1502,10 +1522,10 @@ function lowering18(arg0, arg1, arg2) {
1502
1522
  } catch (e) {
1503
1523
  ret = { tag: 'err', val: getErrorPayload(e) };
1504
1524
  }
1505
- const variant3 = ret;
1506
- switch (variant3.tag) {
1525
+ const variant4 = ret;
1526
+ switch (variant4.tag) {
1507
1527
  case 'ok': {
1508
- const e = variant3.val;
1528
+ const e = variant4.val;
1509
1529
  dataView(memory0).setInt8(arg2 + 0, 0, true);
1510
1530
  const [tuple0_0, tuple0_1] = e;
1511
1531
  const val1 = tuple0_0;
@@ -1515,13 +1535,33 @@ function lowering18(arg0, arg1, arg2) {
1515
1535
  (new Uint8Array(memory0.buffer, ptr1, len1 * 1)).set(src1);
1516
1536
  dataView(memory0).setInt32(arg2 + 8, len1, true);
1517
1537
  dataView(memory0).setInt32(arg2 + 4, ptr1, true);
1518
- dataView(memory0).setInt8(arg2 + 12, tuple0_1 ? 1 : 0, true);
1538
+ const val2 = tuple0_1;
1539
+ let enum2;
1540
+ switch (val2) {
1541
+ case 'open': {
1542
+ enum2 = 0;
1543
+ break;
1544
+ }
1545
+ case 'ended': {
1546
+ enum2 = 1;
1547
+ break;
1548
+ }
1549
+ default: {
1550
+ if ((tuple0_1) instanceof Error) {
1551
+ console.error(tuple0_1);
1552
+ }
1553
+
1554
+ throw new TypeError(`"${val2}" is not one of the cases of stream-status`);
1555
+ }
1556
+ }
1557
+ dataView(memory0).setInt8(arg2 + 12, enum2, true);
1519
1558
  break;
1520
1559
  }
1521
1560
  case 'err': {
1522
- const e = variant3.val;
1561
+ const e = variant4.val;
1523
1562
  dataView(memory0).setInt8(arg2 + 0, 1, true);
1524
- const { } = e;
1563
+ const {dummy: v3_0 } = e;
1564
+ dataView(memory0).setInt32(arg2 + 4, toUint32(v3_0), true);
1525
1565
  break;
1526
1566
  }
1527
1567
  default: {
@@ -1540,18 +1580,40 @@ function lowering19(arg0, arg1, arg2, arg3) {
1540
1580
  } catch (e) {
1541
1581
  ret = { tag: 'err', val: getErrorPayload(e) };
1542
1582
  }
1543
- const variant2 = ret;
1544
- switch (variant2.tag) {
1583
+ const variant4 = ret;
1584
+ switch (variant4.tag) {
1545
1585
  case 'ok': {
1546
- const e = variant2.val;
1586
+ const e = variant4.val;
1547
1587
  dataView(memory0).setInt8(arg3 + 0, 0, true);
1548
- dataView(memory0).setBigInt64(arg3 + 8, toUint64(e), true);
1588
+ const [tuple1_0, tuple1_1] = e;
1589
+ dataView(memory0).setBigInt64(arg3 + 8, toUint64(tuple1_0), true);
1590
+ const val2 = tuple1_1;
1591
+ let enum2;
1592
+ switch (val2) {
1593
+ case 'open': {
1594
+ enum2 = 0;
1595
+ break;
1596
+ }
1597
+ case 'ended': {
1598
+ enum2 = 1;
1599
+ break;
1600
+ }
1601
+ default: {
1602
+ if ((tuple1_1) instanceof Error) {
1603
+ console.error(tuple1_1);
1604
+ }
1605
+
1606
+ throw new TypeError(`"${val2}" is not one of the cases of stream-status`);
1607
+ }
1608
+ }
1609
+ dataView(memory0).setInt8(arg3 + 16, enum2, true);
1549
1610
  break;
1550
1611
  }
1551
1612
  case 'err': {
1552
- const e = variant2.val;
1613
+ const e = variant4.val;
1553
1614
  dataView(memory0).setInt8(arg3 + 0, 1, true);
1554
- const { } = e;
1615
+ const {dummy: v3_0 } = e;
1616
+ dataView(memory0).setInt32(arg3 + 8, toUint32(v3_0), true);
1555
1617
  break;
1556
1618
  }
1557
1619
  default: {
@@ -1570,18 +1632,40 @@ function lowering20(arg0, arg1, arg2, arg3) {
1570
1632
  } catch (e) {
1571
1633
  ret = { tag: 'err', val: getErrorPayload(e) };
1572
1634
  }
1573
- const variant2 = ret;
1574
- switch (variant2.tag) {
1635
+ const variant4 = ret;
1636
+ switch (variant4.tag) {
1575
1637
  case 'ok': {
1576
- const e = variant2.val;
1638
+ const e = variant4.val;
1577
1639
  dataView(memory0).setInt8(arg3 + 0, 0, true);
1578
- dataView(memory0).setBigInt64(arg3 + 8, toUint64(e), true);
1640
+ const [tuple1_0, tuple1_1] = e;
1641
+ dataView(memory0).setBigInt64(arg3 + 8, toUint64(tuple1_0), true);
1642
+ const val2 = tuple1_1;
1643
+ let enum2;
1644
+ switch (val2) {
1645
+ case 'open': {
1646
+ enum2 = 0;
1647
+ break;
1648
+ }
1649
+ case 'ended': {
1650
+ enum2 = 1;
1651
+ break;
1652
+ }
1653
+ default: {
1654
+ if ((tuple1_1) instanceof Error) {
1655
+ console.error(tuple1_1);
1656
+ }
1657
+
1658
+ throw new TypeError(`"${val2}" is not one of the cases of stream-status`);
1659
+ }
1660
+ }
1661
+ dataView(memory0).setInt8(arg3 + 16, enum2, true);
1579
1662
  break;
1580
1663
  }
1581
1664
  case 'err': {
1582
- const e = variant2.val;
1665
+ const e = variant4.val;
1583
1666
  dataView(memory0).setInt8(arg3 + 0, 1, true);
1584
- const { } = e;
1667
+ const {dummy: v3_0 } = e;
1668
+ dataView(memory0).setInt32(arg3 + 8, toUint32(v3_0), true);
1585
1669
  break;
1586
1670
  }
1587
1671
  default: {
@@ -1930,8 +2014,9 @@ let _initialized = false;
1930
2014
  export const $init = (async() => {
1931
2015
  const module0 = fetchCompile(new URL('./js-component-bindgen-component.core.wasm', import.meta.url));
1932
2016
  const module1 = fetchCompile(new URL('./js-component-bindgen-component.core2.wasm', import.meta.url));
1933
- const module2 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGACfn8AYAR/f39/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwADGRgAAQECAgIDBAABAQUFBgcHCAYGBgkGCgsEBQFwARgYB3oZATAAAAExAAEBMgACATMAAwE0AAQBNQAFATYABgE3AAcBOAAIATkACQIxMAAKAjExAAsCMTIADAIxMwANAjE0AA4CMTUADwIxNgAQAjE3ABECMTgAEgIxOQATAjIwABQCMjEAFQIyMgAWAjIzABcIJGltcG9ydHMBAArNAhgJACAAQQARAAALDQAgACABIAJBAREBAAsNACAAIAEgAkECEQEACwsAIAAgAUEDEQIACwsAIAAgAUEEEQIACwsAIAAgAUEFEQIACxcAIAAgASACIAMgBCAFIAYgB0EGEQMACwsAIAAgAUEHEQQACwkAIABBCBEAAAsNACAAIAEgAkEJEQEACw0AIAAgASACQQoRAQALDwAgACABIAIgA0ELEQUACw8AIAAgASACIANBDBEFAAsLACAAIAFBDREGAAsPACAAIAEgAiADQQ4RBwALDwAgACABIAIgA0EPEQcACxkAIAAgASACIAMgBCAFIAYgByAIQRARCAALCwAgACABQRERBgALCwAgACABQRIRBgALCwAgACABQRMRBgALCQAgAEEUEQkACwsAIAAgAUEVEQYACw0AIAAgASACQRYRCgALCQAgAEEXEQsACwAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTEuMAC8CARuYW1lABMSd2l0LWNvbXBvbmVudDpzaGltAZ8IGAAvaW5kaXJlY3Qtd2FzaTpjbGktYmFzZS9wcmVvcGVucy1nZXQtZGlyZWN0b3JpZXMBM2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlYWQtdmlhLXN0cmVhbQI0aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL2ZpbGVzeXN0ZW0td3JpdGUtdmlhLXN0cmVhbQM1aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL2ZpbGVzeXN0ZW0tYXBwZW5kLXZpYS1zdHJlYW0ELGluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9maWxlc3lzdGVtLWdldC10eXBlBShpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1zdGF0BitpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1vcGVuLWF0ByxpbmRpcmVjdC13YXNpOnJhbmRvbS9yYW5kb20tZ2V0LXJhbmRvbS1ieXRlcwgyaW5kaXJlY3Qtd2FzaTpjbGktYmFzZS9lbnZpcm9ubWVudC1nZXQtZW52aXJvbm1lbnQJHWluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy1yZWFkCiZpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtYmxvY2tpbmctcmVhZAseaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLXdyaXRlDCdpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtYmxvY2tpbmctd3JpdGUNLGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfZmlsZXN0YXRfZ2V0DiRhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX3JlYWQPJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfd3JpdGUQJmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtcGF0aF9vcGVuESdhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXJhbmRvbV9nZXQSKGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9nZXQTLmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9zaXplc19nZXQUJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfY2xvc2UVK2FkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9nZXQWMGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9kaXJfbmFtZRcmYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wcm9jX2V4aXQ');
1934
- const module3 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGACfn8AYAR/f39/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwAClgEZAAEwAAAAATEAAQABMgABAAEzAAIAATQAAgABNQACAAE2AAMAATcABAABOAAAAAE5AAEAAjEwAAEAAjExAAUAAjEyAAUAAjEzAAYAAjE0AAcAAjE1AAcAAjE2AAgAAjE3AAYAAjE4AAYAAjE5AAYAAjIwAAkAAjIxAAYAAjIyAAoAAjIzAAsACCRpbXBvcnRzAXABGBgJHgEAQQALGAABAgMEBQYHCAkKCwwNDg8QERITFBUWFwAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTEuMAAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw');
2017
+ const module2 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGACfn8AYAR/f39/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwADGRgAAQECAgIDBAABAQUFBgcHCAYGBgkGCgsEBQFwARgYB3oZATAAAAExAAEBMgACATMAAwE0AAQBNQAFATYABgE3AAcBOAAIATkACQIxMAAKAjExAAsCMTIADAIxMwANAjE0AA4CMTUADwIxNgAQAjE3ABECMTgAEgIxOQATAjIwABQCMjEAFQIyMgAWAjIzABcIJGltcG9ydHMBAArNAhgJACAAQQARAAALDQAgACABIAJBAREBAAsNACAAIAEgAkECEQEACwsAIAAgAUEDEQIACwsAIAAgAUEEEQIACwsAIAAgAUEFEQIACxcAIAAgASACIAMgBCAFIAYgB0EGEQMACwsAIAAgAUEHEQQACwkAIABBCBEAAAsNACAAIAEgAkEJEQEACw0AIAAgASACQQoRAQALDwAgACABIAIgA0ELEQUACw8AIAAgASACIANBDBEFAAsLACAAIAFBDREGAAsPACAAIAEgAiADQQ4RBwALDwAgACABIAIgA0EPEQcACxkAIAAgASACIAMgBCAFIAYgByAIQRARCAALCwAgACABQRERBgALCwAgACABQRIRBgALCwAgACABQRMRBgALCQAgAEEUEQkACwsAIAAgAUEVEQYACw0AIAAgASACQRYRCgALCQAgAEEXEQsACwAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTMuMQC8CARuYW1lABMSd2l0LWNvbXBvbmVudDpzaGltAZ8IGAAvaW5kaXJlY3Qtd2FzaTpjbGktYmFzZS9wcmVvcGVucy1nZXQtZGlyZWN0b3JpZXMBM2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlYWQtdmlhLXN0cmVhbQI0aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL2ZpbGVzeXN0ZW0td3JpdGUtdmlhLXN0cmVhbQM1aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL2ZpbGVzeXN0ZW0tYXBwZW5kLXZpYS1zdHJlYW0ELGluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9maWxlc3lzdGVtLWdldC10eXBlBShpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1zdGF0BitpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1vcGVuLWF0ByxpbmRpcmVjdC13YXNpOnJhbmRvbS9yYW5kb20tZ2V0LXJhbmRvbS1ieXRlcwgyaW5kaXJlY3Qtd2FzaTpjbGktYmFzZS9lbnZpcm9ubWVudC1nZXQtZW52aXJvbm1lbnQJHWluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy1yZWFkCiZpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtYmxvY2tpbmctcmVhZAseaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLXdyaXRlDCdpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtYmxvY2tpbmctd3JpdGUNLGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfZmlsZXN0YXRfZ2V0DiRhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX3JlYWQPJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfd3JpdGUQJmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtcGF0aF9vcGVuESdhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXJhbmRvbV9nZXQSKGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9nZXQTLmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9zaXplc19nZXQUJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfY2xvc2UVK2FkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9nZXQWMGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9kaXJfbmFtZRcmYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wcm9jX2V4aXQ');
2018
+ const module3 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGACfn8AYAR/f39/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwAClgEZAAEwAAAAATEAAQABMgABAAEzAAIAATQAAgABNQACAAE2AAMAATcABAABOAAAAAE5AAEAAjEwAAEAAjExAAUAAjEyAAUAAjEzAAYAAjE0AAcAAjE1AAcAAjE2AAgAAjE3AAYAAjE4AAYAAjE5AAYAAjIwAAkAAjIxAAYAAjIyAAoAAjIzAAsACCRpbXBvcnRzAXABGBgJHgEAQQALGAABAgMEBQYHCAkKCwwNDg8QERITFBUWFwAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTMuMQAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw');
2019
+ const instance_flags0 = new WebAssembly.Global({value: "i32", mutable: true}, 3)
1935
2020
  Promise.all([module0, module1, module2, module3]).catch(() => {});
1936
2021
  ({ exports: exports0 } = await instantiateCore(await module2));
1937
2022
  ({ exports: exports1 } = await instantiateCore(await module0, {
@@ -1960,13 +2045,13 @@ export const $init = (async() => {
1960
2045
  'get-environment': exports0['8'],
1961
2046
  },
1962
2047
  'wasi:cli-base/exit': {
1963
- exit: lowering2,
2048
+ exit: lowering7,
1964
2049
  },
1965
2050
  'wasi:cli-base/preopens': {
1966
2051
  'get-directories': exports0['0'],
1967
2052
  },
1968
2053
  'wasi:cli-base/stderr': {
1969
- 'get-stderr': lowering3,
2054
+ 'get-stderr': lowering6,
1970
2055
  },
1971
2056
  'wasi:cli-base/stdin': {
1972
2057
  'get-stdin': lowering4,
@@ -1976,7 +2061,7 @@ export const $init = (async() => {
1976
2061
  },
1977
2062
  'wasi:filesystem/filesystem': {
1978
2063
  'append-via-stream': exports0['3'],
1979
- 'drop-descriptor': lowering1,
2064
+ 'drop-descriptor': lowering3,
1980
2065
  'drop-directory-entry-stream': lowering0,
1981
2066
  'get-type': exports0['4'],
1982
2067
  'open-at': exports0['6'],
@@ -1987,8 +2072,8 @@ export const $init = (async() => {
1987
2072
  'wasi:io/streams': {
1988
2073
  'blocking-read': exports0['10'],
1989
2074
  'blocking-write': exports0['12'],
1990
- 'drop-input-stream': lowering6,
1991
- 'drop-output-stream': lowering7,
2075
+ 'drop-input-stream': lowering1,
2076
+ 'drop-output-stream': lowering2,
1992
2077
  read: exports0['9'],
1993
2078
  write: exports0['11'],
1994
2079
  },
Binary file
Binary file
@@ -9,6 +9,15 @@
9
9
  */
10
10
  export type StringEncoding = 'utf8' | 'utf16' | 'compact-utf16';
11
11
  export type ProducersFields = [string, [string, string][]][];
12
+ export interface EmbedOpts {
13
+ binary?: Uint8Array,
14
+ witSource?: string,
15
+ witPath?: string,
16
+ stringEncoding?: StringEncoding,
17
+ dummy?: boolean,
18
+ world?: string,
19
+ metadata?: ProducersFields,
20
+ }
12
21
  export type ModuleMetaType = ModuleMetaTypeModule | ModuleMetaTypeComponent;
13
22
  export interface ModuleMetaTypeModule {
14
23
  tag: 'module',
@@ -23,25 +32,16 @@ export interface ModuleMetadata {
23
32
  range: [number, number],
24
33
  producers: ProducersFields,
25
34
  }
26
- export interface EmbedOpts {
27
- binary?: Uint8Array,
28
- witSource?: string,
29
- witPath?: string,
30
- stringEncoding?: StringEncoding,
31
- dummy?: boolean,
32
- world?: string,
33
- metadata?: ProducersFields,
34
- }
35
- import { ImportsEnvironment } from './imports/environment';
36
- import { ImportsExit } from './imports/exit';
37
- import { ImportsPreopens } from './imports/preopens';
38
- import { ImportsStderr } from './imports/stderr';
39
- import { ImportsStdin } from './imports/stdin';
40
- import { ImportsStdout } from './imports/stdout';
41
- import { ImportsWallClock } from './imports/wall-clock';
42
- import { ImportsFilesystem } from './imports/filesystem';
43
- import { ImportsStreams } from './imports/streams';
44
- import { ImportsRandom } from './imports/random';
35
+ import { Environment } from './interfaces/environment';
36
+ import { Exit } from './interfaces/exit';
37
+ import { Preopens } from './interfaces/preopens';
38
+ import { Stderr } from './interfaces/stderr';
39
+ import { Stdin } from './interfaces/stdin';
40
+ import { Stdout } from './interfaces/stdout';
41
+ import { WallClock } from './interfaces/wall-clock';
42
+ import { Filesystem } from './interfaces/filesystem';
43
+ import { Streams } from './interfaces/streams';
44
+ import { Random } from './interfaces/random';
45
45
  export function parse(wat: string): Uint8Array;
46
46
  export function print(binary: Uint8Array | ArrayBuffer): string;
47
47
  export function componentNew(binary: Uint8Array | ArrayBuffer, adapters: [string, Uint8Array | ArrayBuffer][] | null): Uint8Array;
package/obj/wasm-tools.js CHANGED
@@ -104,10 +104,33 @@ function lowering0(arg0) {
104
104
  }
105
105
 
106
106
  function lowering1(arg0) {
107
- dropDescriptor(arg0 >>> 0);
107
+ dropInputStream(arg0 >>> 0);
108
108
  }
109
109
 
110
110
  function lowering2(arg0) {
111
+ dropOutputStream(arg0 >>> 0);
112
+ }
113
+
114
+ function lowering3(arg0) {
115
+ dropDescriptor(arg0 >>> 0);
116
+ }
117
+
118
+ function lowering4() {
119
+ const ret = getStdin();
120
+ return toUint32(ret);
121
+ }
122
+
123
+ function lowering5() {
124
+ const ret = getStdout();
125
+ return toUint32(ret);
126
+ }
127
+
128
+ function lowering6() {
129
+ const ret = getStderr();
130
+ return toUint32(ret);
131
+ }
132
+
133
+ function lowering7(arg0) {
111
134
  let variant0;
112
135
  switch (arg0) {
113
136
  case 0: {
@@ -130,29 +153,6 @@ function lowering2(arg0) {
130
153
  }
131
154
  exit(variant0);
132
155
  }
133
-
134
- function lowering3() {
135
- const ret = getStderr();
136
- return toUint32(ret);
137
- }
138
-
139
- function lowering4() {
140
- const ret = getStdin();
141
- return toUint32(ret);
142
- }
143
-
144
- function lowering5() {
145
- const ret = getStdout();
146
- return toUint32(ret);
147
- }
148
-
149
- function lowering6(arg0) {
150
- dropInputStream(arg0 >>> 0);
151
- }
152
-
153
- function lowering7(arg0) {
154
- dropOutputStream(arg0 >>> 0);
155
- }
156
156
  let exports2;
157
157
  let memory0;
158
158
  let realloc0;
@@ -1467,10 +1467,10 @@ function lowering17(arg0, arg1, arg2) {
1467
1467
  } catch (e) {
1468
1468
  ret = { tag: 'err', val: getErrorPayload(e) };
1469
1469
  }
1470
- const variant3 = ret;
1471
- switch (variant3.tag) {
1470
+ const variant4 = ret;
1471
+ switch (variant4.tag) {
1472
1472
  case 'ok': {
1473
- const e = variant3.val;
1473
+ const e = variant4.val;
1474
1474
  dataView(memory0).setInt8(arg2 + 0, 0, true);
1475
1475
  const [tuple0_0, tuple0_1] = e;
1476
1476
  const val1 = tuple0_0;
@@ -1480,13 +1480,33 @@ function lowering17(arg0, arg1, arg2) {
1480
1480
  (new Uint8Array(memory0.buffer, ptr1, len1 * 1)).set(src1);
1481
1481
  dataView(memory0).setInt32(arg2 + 8, len1, true);
1482
1482
  dataView(memory0).setInt32(arg2 + 4, ptr1, true);
1483
- dataView(memory0).setInt8(arg2 + 12, tuple0_1 ? 1 : 0, true);
1483
+ const val2 = tuple0_1;
1484
+ let enum2;
1485
+ switch (val2) {
1486
+ case 'open': {
1487
+ enum2 = 0;
1488
+ break;
1489
+ }
1490
+ case 'ended': {
1491
+ enum2 = 1;
1492
+ break;
1493
+ }
1494
+ default: {
1495
+ if ((tuple0_1) instanceof Error) {
1496
+ console.error(tuple0_1);
1497
+ }
1498
+
1499
+ throw new TypeError(`"${val2}" is not one of the cases of stream-status`);
1500
+ }
1501
+ }
1502
+ dataView(memory0).setInt8(arg2 + 12, enum2, true);
1484
1503
  break;
1485
1504
  }
1486
1505
  case 'err': {
1487
- const e = variant3.val;
1506
+ const e = variant4.val;
1488
1507
  dataView(memory0).setInt8(arg2 + 0, 1, true);
1489
- const { } = e;
1508
+ const {dummy: v3_0 } = e;
1509
+ dataView(memory0).setInt32(arg2 + 4, toUint32(v3_0), true);
1490
1510
  break;
1491
1511
  }
1492
1512
  default: {
@@ -1502,10 +1522,10 @@ function lowering18(arg0, arg1, arg2) {
1502
1522
  } catch (e) {
1503
1523
  ret = { tag: 'err', val: getErrorPayload(e) };
1504
1524
  }
1505
- const variant3 = ret;
1506
- switch (variant3.tag) {
1525
+ const variant4 = ret;
1526
+ switch (variant4.tag) {
1507
1527
  case 'ok': {
1508
- const e = variant3.val;
1528
+ const e = variant4.val;
1509
1529
  dataView(memory0).setInt8(arg2 + 0, 0, true);
1510
1530
  const [tuple0_0, tuple0_1] = e;
1511
1531
  const val1 = tuple0_0;
@@ -1515,13 +1535,33 @@ function lowering18(arg0, arg1, arg2) {
1515
1535
  (new Uint8Array(memory0.buffer, ptr1, len1 * 1)).set(src1);
1516
1536
  dataView(memory0).setInt32(arg2 + 8, len1, true);
1517
1537
  dataView(memory0).setInt32(arg2 + 4, ptr1, true);
1518
- dataView(memory0).setInt8(arg2 + 12, tuple0_1 ? 1 : 0, true);
1538
+ const val2 = tuple0_1;
1539
+ let enum2;
1540
+ switch (val2) {
1541
+ case 'open': {
1542
+ enum2 = 0;
1543
+ break;
1544
+ }
1545
+ case 'ended': {
1546
+ enum2 = 1;
1547
+ break;
1548
+ }
1549
+ default: {
1550
+ if ((tuple0_1) instanceof Error) {
1551
+ console.error(tuple0_1);
1552
+ }
1553
+
1554
+ throw new TypeError(`"${val2}" is not one of the cases of stream-status`);
1555
+ }
1556
+ }
1557
+ dataView(memory0).setInt8(arg2 + 12, enum2, true);
1519
1558
  break;
1520
1559
  }
1521
1560
  case 'err': {
1522
- const e = variant3.val;
1561
+ const e = variant4.val;
1523
1562
  dataView(memory0).setInt8(arg2 + 0, 1, true);
1524
- const { } = e;
1563
+ const {dummy: v3_0 } = e;
1564
+ dataView(memory0).setInt32(arg2 + 4, toUint32(v3_0), true);
1525
1565
  break;
1526
1566
  }
1527
1567
  default: {
@@ -1540,18 +1580,40 @@ function lowering19(arg0, arg1, arg2, arg3) {
1540
1580
  } catch (e) {
1541
1581
  ret = { tag: 'err', val: getErrorPayload(e) };
1542
1582
  }
1543
- const variant2 = ret;
1544
- switch (variant2.tag) {
1583
+ const variant4 = ret;
1584
+ switch (variant4.tag) {
1545
1585
  case 'ok': {
1546
- const e = variant2.val;
1586
+ const e = variant4.val;
1547
1587
  dataView(memory0).setInt8(arg3 + 0, 0, true);
1548
- dataView(memory0).setBigInt64(arg3 + 8, toUint64(e), true);
1588
+ const [tuple1_0, tuple1_1] = e;
1589
+ dataView(memory0).setBigInt64(arg3 + 8, toUint64(tuple1_0), true);
1590
+ const val2 = tuple1_1;
1591
+ let enum2;
1592
+ switch (val2) {
1593
+ case 'open': {
1594
+ enum2 = 0;
1595
+ break;
1596
+ }
1597
+ case 'ended': {
1598
+ enum2 = 1;
1599
+ break;
1600
+ }
1601
+ default: {
1602
+ if ((tuple1_1) instanceof Error) {
1603
+ console.error(tuple1_1);
1604
+ }
1605
+
1606
+ throw new TypeError(`"${val2}" is not one of the cases of stream-status`);
1607
+ }
1608
+ }
1609
+ dataView(memory0).setInt8(arg3 + 16, enum2, true);
1549
1610
  break;
1550
1611
  }
1551
1612
  case 'err': {
1552
- const e = variant2.val;
1613
+ const e = variant4.val;
1553
1614
  dataView(memory0).setInt8(arg3 + 0, 1, true);
1554
- const { } = e;
1615
+ const {dummy: v3_0 } = e;
1616
+ dataView(memory0).setInt32(arg3 + 8, toUint32(v3_0), true);
1555
1617
  break;
1556
1618
  }
1557
1619
  default: {
@@ -1570,18 +1632,40 @@ function lowering20(arg0, arg1, arg2, arg3) {
1570
1632
  } catch (e) {
1571
1633
  ret = { tag: 'err', val: getErrorPayload(e) };
1572
1634
  }
1573
- const variant2 = ret;
1574
- switch (variant2.tag) {
1635
+ const variant4 = ret;
1636
+ switch (variant4.tag) {
1575
1637
  case 'ok': {
1576
- const e = variant2.val;
1638
+ const e = variant4.val;
1577
1639
  dataView(memory0).setInt8(arg3 + 0, 0, true);
1578
- dataView(memory0).setBigInt64(arg3 + 8, toUint64(e), true);
1640
+ const [tuple1_0, tuple1_1] = e;
1641
+ dataView(memory0).setBigInt64(arg3 + 8, toUint64(tuple1_0), true);
1642
+ const val2 = tuple1_1;
1643
+ let enum2;
1644
+ switch (val2) {
1645
+ case 'open': {
1646
+ enum2 = 0;
1647
+ break;
1648
+ }
1649
+ case 'ended': {
1650
+ enum2 = 1;
1651
+ break;
1652
+ }
1653
+ default: {
1654
+ if ((tuple1_1) instanceof Error) {
1655
+ console.error(tuple1_1);
1656
+ }
1657
+
1658
+ throw new TypeError(`"${val2}" is not one of the cases of stream-status`);
1659
+ }
1660
+ }
1661
+ dataView(memory0).setInt8(arg3 + 16, enum2, true);
1579
1662
  break;
1580
1663
  }
1581
1664
  case 'err': {
1582
- const e = variant2.val;
1665
+ const e = variant4.val;
1583
1666
  dataView(memory0).setInt8(arg3 + 0, 1, true);
1584
- const { } = e;
1667
+ const {dummy: v3_0 } = e;
1668
+ dataView(memory0).setInt32(arg3 + 8, toUint32(v3_0), true);
1585
1669
  break;
1586
1670
  }
1587
1671
  default: {
@@ -2130,8 +2214,9 @@ let _initialized = false;
2130
2214
  export const $init = (async() => {
2131
2215
  const module0 = fetchCompile(new URL('./wasm-tools.core.wasm', import.meta.url));
2132
2216
  const module1 = fetchCompile(new URL('./wasm-tools.core2.wasm', import.meta.url));
2133
- const module2 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGACfn8AYAR/f39/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwADGRgAAQECAgIDBAABAQUFBgcHCAYGBgkGCgsEBQFwARgYB3oZATAAAAExAAEBMgACATMAAwE0AAQBNQAFATYABgE3AAcBOAAIATkACQIxMAAKAjExAAsCMTIADAIxMwANAjE0AA4CMTUADwIxNgAQAjE3ABECMTgAEgIxOQATAjIwABQCMjEAFQIyMgAWAjIzABcIJGltcG9ydHMBAArNAhgJACAAQQARAAALDQAgACABIAJBAREBAAsNACAAIAEgAkECEQEACwsAIAAgAUEDEQIACwsAIAAgAUEEEQIACwsAIAAgAUEFEQIACxcAIAAgASACIAMgBCAFIAYgB0EGEQMACwsAIAAgAUEHEQQACwkAIABBCBEAAAsNACAAIAEgAkEJEQEACw0AIAAgASACQQoRAQALDwAgACABIAIgA0ELEQUACw8AIAAgASACIANBDBEFAAsLACAAIAFBDREGAAsPACAAIAEgAiADQQ4RBwALDwAgACABIAIgA0EPEQcACxkAIAAgASACIAMgBCAFIAYgByAIQRARCAALCwAgACABQRERBgALCwAgACABQRIRBgALCwAgACABQRMRBgALCQAgAEEUEQkACwsAIAAgAUEVEQYACw0AIAAgASACQRYRCgALCQAgAEEXEQsACwAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTEuMAC8CARuYW1lABMSd2l0LWNvbXBvbmVudDpzaGltAZ8IGAAvaW5kaXJlY3Qtd2FzaTpjbGktYmFzZS9wcmVvcGVucy1nZXQtZGlyZWN0b3JpZXMBM2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlYWQtdmlhLXN0cmVhbQI0aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL2ZpbGVzeXN0ZW0td3JpdGUtdmlhLXN0cmVhbQM1aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL2ZpbGVzeXN0ZW0tYXBwZW5kLXZpYS1zdHJlYW0ELGluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9maWxlc3lzdGVtLWdldC10eXBlBShpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1zdGF0BitpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1vcGVuLWF0ByxpbmRpcmVjdC13YXNpOnJhbmRvbS9yYW5kb20tZ2V0LXJhbmRvbS1ieXRlcwgyaW5kaXJlY3Qtd2FzaTpjbGktYmFzZS9lbnZpcm9ubWVudC1nZXQtZW52aXJvbm1lbnQJHWluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy1yZWFkCiZpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtYmxvY2tpbmctcmVhZAseaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLXdyaXRlDCdpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtYmxvY2tpbmctd3JpdGUNLGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfZmlsZXN0YXRfZ2V0DiRhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX3JlYWQPJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfd3JpdGUQJmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtcGF0aF9vcGVuESdhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXJhbmRvbV9nZXQSKGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9nZXQTLmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9zaXplc19nZXQUJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfY2xvc2UVK2FkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9nZXQWMGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9kaXJfbmFtZRcmYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wcm9jX2V4aXQ');
2134
- const module3 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGACfn8AYAR/f39/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwAClgEZAAEwAAAAATEAAQABMgABAAEzAAIAATQAAgABNQACAAE2AAMAATcABAABOAAAAAE5AAEAAjEwAAEAAjExAAUAAjEyAAUAAjEzAAYAAjE0AAcAAjE1AAcAAjE2AAgAAjE3AAYAAjE4AAYAAjE5AAYAAjIwAAkAAjIxAAYAAjIyAAoAAjIzAAsACCRpbXBvcnRzAXABGBgJHgEAQQALGAABAgMEBQYHCAkKCwwNDg8QERITFBUWFwAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTEuMAAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw');
2217
+ const module2 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGACfn8AYAR/f39/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwADGRgAAQECAgIDBAABAQUFBgcHCAYGBgkGCgsEBQFwARgYB3oZATAAAAExAAEBMgACATMAAwE0AAQBNQAFATYABgE3AAcBOAAIATkACQIxMAAKAjExAAsCMTIADAIxMwANAjE0AA4CMTUADwIxNgAQAjE3ABECMTgAEgIxOQATAjIwABQCMjEAFQIyMgAWAjIzABcIJGltcG9ydHMBAArNAhgJACAAQQARAAALDQAgACABIAJBAREBAAsNACAAIAEgAkECEQEACwsAIAAgAUEDEQIACwsAIAAgAUEEEQIACwsAIAAgAUEFEQIACxcAIAAgASACIAMgBCAFIAYgB0EGEQMACwsAIAAgAUEHEQQACwkAIABBCBEAAAsNACAAIAEgAkEJEQEACw0AIAAgASACQQoRAQALDwAgACABIAIgA0ELEQUACw8AIAAgASACIANBDBEFAAsLACAAIAFBDREGAAsPACAAIAEgAiADQQ4RBwALDwAgACABIAIgA0EPEQcACxkAIAAgASACIAMgBCAFIAYgByAIQRARCAALCwAgACABQRERBgALCwAgACABQRIRBgALCwAgACABQRMRBgALCQAgAEEUEQkACwsAIAAgAUEVEQYACw0AIAAgASACQRYRCgALCQAgAEEXEQsACwAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTMuMQC8CARuYW1lABMSd2l0LWNvbXBvbmVudDpzaGltAZ8IGAAvaW5kaXJlY3Qtd2FzaTpjbGktYmFzZS9wcmVvcGVucy1nZXQtZGlyZWN0b3JpZXMBM2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlYWQtdmlhLXN0cmVhbQI0aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL2ZpbGVzeXN0ZW0td3JpdGUtdmlhLXN0cmVhbQM1aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL2ZpbGVzeXN0ZW0tYXBwZW5kLXZpYS1zdHJlYW0ELGluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9maWxlc3lzdGVtLWdldC10eXBlBShpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1zdGF0BitpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1vcGVuLWF0ByxpbmRpcmVjdC13YXNpOnJhbmRvbS9yYW5kb20tZ2V0LXJhbmRvbS1ieXRlcwgyaW5kaXJlY3Qtd2FzaTpjbGktYmFzZS9lbnZpcm9ubWVudC1nZXQtZW52aXJvbm1lbnQJHWluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy1yZWFkCiZpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtYmxvY2tpbmctcmVhZAseaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLXdyaXRlDCdpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtYmxvY2tpbmctd3JpdGUNLGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfZmlsZXN0YXRfZ2V0DiRhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX3JlYWQPJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfd3JpdGUQJmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtcGF0aF9vcGVuESdhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXJhbmRvbV9nZXQSKGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9nZXQTLmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9zaXplc19nZXQUJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfY2xvc2UVK2FkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9nZXQWMGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9kaXJfbmFtZRcmYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wcm9jX2V4aXQ');
2218
+ const module3 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGACfn8AYAR/f39/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwAClgEZAAEwAAAAATEAAQABMgABAAEzAAIAATQAAgABNQACAAE2AAMAATcABAABOAAAAAE5AAEAAjEwAAEAAjExAAUAAjEyAAUAAjEzAAYAAjE0AAcAAjE1AAcAAjE2AAgAAjE3AAYAAjE4AAYAAjE5AAYAAjIwAAkAAjIxAAYAAjIyAAoAAjIzAAsACCRpbXBvcnRzAXABGBgJHgEAQQALGAABAgMEBQYHCAkKCwwNDg8QERITFBUWFwAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTMuMQAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw');
2219
+ const instance_flags0 = new WebAssembly.Global({value: "i32", mutable: true}, 3)
2135
2220
  Promise.all([module0, module1, module2, module3]).catch(() => {});
2136
2221
  ({ exports: exports0 } = await instantiateCore(await module2));
2137
2222
  ({ exports: exports1 } = await instantiateCore(await module0, {
@@ -2160,13 +2245,13 @@ export const $init = (async() => {
2160
2245
  'get-environment': exports0['8'],
2161
2246
  },
2162
2247
  'wasi:cli-base/exit': {
2163
- exit: lowering2,
2248
+ exit: lowering7,
2164
2249
  },
2165
2250
  'wasi:cli-base/preopens': {
2166
2251
  'get-directories': exports0['0'],
2167
2252
  },
2168
2253
  'wasi:cli-base/stderr': {
2169
- 'get-stderr': lowering3,
2254
+ 'get-stderr': lowering6,
2170
2255
  },
2171
2256
  'wasi:cli-base/stdin': {
2172
2257
  'get-stdin': lowering4,
@@ -2176,7 +2261,7 @@ export const $init = (async() => {
2176
2261
  },
2177
2262
  'wasi:filesystem/filesystem': {
2178
2263
  'append-via-stream': exports0['3'],
2179
- 'drop-descriptor': lowering1,
2264
+ 'drop-descriptor': lowering3,
2180
2265
  'drop-directory-entry-stream': lowering0,
2181
2266
  'get-type': exports0['4'],
2182
2267
  'open-at': exports0['6'],
@@ -2187,8 +2272,8 @@ export const $init = (async() => {
2187
2272
  'wasi:io/streams': {
2188
2273
  'blocking-read': exports0['10'],
2189
2274
  'blocking-write': exports0['12'],
2190
- 'drop-input-stream': lowering6,
2191
- 'drop-output-stream': lowering7,
2275
+ 'drop-input-stream': lowering1,
2276
+ 'drop-output-stream': lowering2,
2192
2277
  read: exports0['9'],
2193
2278
  write: exports0['11'],
2194
2279
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytecodealliance/jco",
3
- "version": "0.9.4",
3
+ "version": "0.10.0",
4
4
  "description": "JavaScript tooling for working with WebAssembly Components",
5
5
  "author": "Guy Bedford",
6
6
  "bin": {
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "type": "module",
17
17
  "dependencies": {
18
- "@bytecodealliance/preview2-shim": "0.0.10",
18
+ "@bytecodealliance/preview2-shim": "0.0.12",
19
19
  "binaryen": "^111.0.0",
20
20
  "chalk-template": "^0.4.0",
21
21
  "commander": "^9.4.1",
@@ -79,7 +79,7 @@ async function wasm2Js (source) {
79
79
  */
80
80
  export async function transpileComponent (component, opts = {}) {
81
81
  await $init;
82
- if (opts.noWasiShim) opts.wasiShim = false;
82
+ if (opts.noWasiShim || opts.instantiation) opts.wasiShim = false;
83
83
 
84
84
  let spinner;
85
85
  const showSpinner = getShowSpinner();
@@ -1,3 +0,0 @@
1
- export namespace ExportsTest {
2
- export function hello(): string;
3
- }
@@ -1,5 +0,0 @@
1
- export namespace ImportsPreopens {
2
- export function getDirectories(): [Descriptor, string][];
3
- }
4
- import type { Descriptor } from '../imports/filesystem';
5
- export { Descriptor };
@@ -1,5 +0,0 @@
1
- export namespace ImportsStderr {
2
- export function getStderr(): OutputStream;
3
- }
4
- import type { OutputStream } from '../imports/streams';
5
- export { OutputStream };
@@ -1,5 +0,0 @@
1
- export namespace ImportsStdin {
2
- export function getStdin(): InputStream;
3
- }
4
- import type { InputStream } from '../imports/streams';
5
- export { InputStream };
@@ -1,5 +0,0 @@
1
- export namespace ImportsStdout {
2
- export function getStdout(): OutputStream;
3
- }
4
- import type { OutputStream } from '../imports/streams';
5
- export { OutputStream };