@bytecodealliance/jco 0.11.2 → 0.12.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.
Files changed (50) hide show
  1. package/lib/wasi_snapshot_preview1.command.wasm +0 -0
  2. package/lib/wasi_snapshot_preview1.reactor.wasm +0 -0
  3. package/obj/{exports → interfaces}/local-wasm-tools-tools.d.ts +5 -5
  4. package/obj/{imports → interfaces}/wasi-cli-stderr.d.ts +1 -1
  5. package/obj/{exports → interfaces}/wasi-cli-stdin.d.ts +1 -1
  6. package/obj/{exports → interfaces}/wasi-cli-stdout.d.ts +1 -1
  7. package/obj/interfaces/wasi-cli-terminal-stderr.d.ts +5 -0
  8. package/obj/interfaces/wasi-cli-terminal-stdin.d.ts +5 -0
  9. package/obj/interfaces/wasi-cli-terminal-stdout.d.ts +5 -0
  10. package/obj/{exports → interfaces}/wasi-filesystem-preopens.d.ts +1 -1
  11. package/obj/{exports → interfaces}/wasi-filesystem-types.d.ts +3 -3
  12. package/obj/{exports → interfaces}/wasi-io-streams.d.ts +12 -2
  13. package/obj/js-component-bindgen-component.component.wasm +0 -0
  14. package/obj/js-component-bindgen-component.core.wasm +0 -0
  15. package/obj/js-component-bindgen-component.core2.wasm +0 -0
  16. package/obj/js-component-bindgen-component.d.ts +17 -16
  17. package/obj/js-component-bindgen-component.js +263 -162
  18. package/obj/wasm-tools.component.wasm +0 -0
  19. package/obj/wasm-tools.core.wasm +0 -0
  20. package/obj/wasm-tools.core2.wasm +0 -0
  21. package/obj/wasm-tools.d.ts +16 -16
  22. package/obj/wasm-tools.js +208 -115
  23. package/package.json +3 -3
  24. package/src/cmd/transpile.js +3 -1
  25. package/src/cmd/wasm-tools.js +1 -1
  26. package/src/jco.js +2 -1
  27. package/obj/exports/wasi-cli-stderr.d.ts +0 -5
  28. package/obj/exports/wasi-cli-terminal-stderr.d.ts +0 -5
  29. package/obj/exports/wasi-cli-terminal-stdin.d.ts +0 -5
  30. package/obj/exports/wasi-cli-terminal-stdout.d.ts +0 -5
  31. package/obj/imports/wasi-cli-environment.d.ts +0 -3
  32. package/obj/imports/wasi-cli-exit.d.ts +0 -4
  33. package/obj/imports/wasi-cli-stdin.d.ts +0 -5
  34. package/obj/imports/wasi-cli-stdout.d.ts +0 -5
  35. package/obj/imports/wasi-cli-terminal-input.d.ts +0 -4
  36. package/obj/imports/wasi-cli-terminal-output.d.ts +0 -4
  37. package/obj/imports/wasi-cli-terminal-stderr.d.ts +0 -5
  38. package/obj/imports/wasi-cli-terminal-stdin.d.ts +0 -5
  39. package/obj/imports/wasi-cli-terminal-stdout.d.ts +0 -5
  40. package/obj/imports/wasi-clocks-wall-clock.d.ts +0 -6
  41. package/obj/imports/wasi-filesystem-preopens.d.ts +0 -5
  42. package/obj/imports/wasi-filesystem-types.d.ts +0 -153
  43. package/obj/imports/wasi-io-streams.d.ts +0 -18
  44. package/obj/imports/wasi-random-random.d.ts +0 -3
  45. /package/obj/{exports → interfaces}/wasi-cli-environment.d.ts +0 -0
  46. /package/obj/{exports → interfaces}/wasi-cli-exit.d.ts +0 -0
  47. /package/obj/{exports → interfaces}/wasi-cli-terminal-input.d.ts +0 -0
  48. /package/obj/{exports → interfaces}/wasi-cli-terminal-output.d.ts +0 -0
  49. /package/obj/{exports → interfaces}/wasi-clocks-wall-clock.d.ts +0 -0
  50. /package/obj/{exports → interfaces}/wasi-random-random.d.ts +0 -0
@@ -1,19 +1,19 @@
1
- import { WasiCliEnvironment } from './imports/wasi-cli-environment';
2
- import { WasiCliExit } from './imports/wasi-cli-exit';
3
- import { WasiCliStderr } from './imports/wasi-cli-stderr';
4
- import { WasiCliStdin } from './imports/wasi-cli-stdin';
5
- import { WasiCliStdout } from './imports/wasi-cli-stdout';
6
- import { WasiCliTerminalInput } from './imports/wasi-cli-terminal-input';
7
- import { WasiCliTerminalOutput } from './imports/wasi-cli-terminal-output';
8
- import { WasiCliTerminalStderr } from './imports/wasi-cli-terminal-stderr';
9
- import { WasiCliTerminalStdin } from './imports/wasi-cli-terminal-stdin';
10
- import { WasiCliTerminalStdout } from './imports/wasi-cli-terminal-stdout';
11
- import { WasiClocksWallClock } from './imports/wasi-clocks-wall-clock';
12
- import { WasiFilesystemPreopens } from './imports/wasi-filesystem-preopens';
13
- import { WasiFilesystemTypes } from './imports/wasi-filesystem-types';
14
- import { WasiIoStreams } from './imports/wasi-io-streams';
15
- import { WasiRandomRandom } from './imports/wasi-random-random';
16
- import { LocalWasmToolsTools } from './exports/local-wasm-tools-tools';
1
+ import { WasiCliEnvironment } from './interfaces/wasi-cli-environment';
2
+ import { WasiCliExit } from './interfaces/wasi-cli-exit';
3
+ import { WasiCliStderr } from './interfaces/wasi-cli-stderr';
4
+ import { WasiCliStdin } from './interfaces/wasi-cli-stdin';
5
+ import { WasiCliStdout } from './interfaces/wasi-cli-stdout';
6
+ import { WasiCliTerminalInput } from './interfaces/wasi-cli-terminal-input';
7
+ import { WasiCliTerminalOutput } from './interfaces/wasi-cli-terminal-output';
8
+ import { WasiCliTerminalStderr } from './interfaces/wasi-cli-terminal-stderr';
9
+ import { WasiCliTerminalStdin } from './interfaces/wasi-cli-terminal-stdin';
10
+ import { WasiCliTerminalStdout } from './interfaces/wasi-cli-terminal-stdout';
11
+ import { WasiClocksWallClock } from './interfaces/wasi-clocks-wall-clock';
12
+ import { WasiFilesystemPreopens } from './interfaces/wasi-filesystem-preopens';
13
+ import { WasiFilesystemTypes } from './interfaces/wasi-filesystem-types';
14
+ import { WasiIoStreams } from './interfaces/wasi-io-streams';
15
+ import { WasiRandomRandom } from './interfaces/wasi-random-random';
16
+ import { LocalWasmToolsTools } from './interfaces/local-wasm-tools-tools';
17
17
  export const tools: typeof LocalWasmToolsTools;
18
18
 
19
19
  export const $init: Promise<void>;
package/obj/wasm-tools.js CHANGED
@@ -22,8 +22,10 @@ const { appendViaStream,
22
22
  readViaStream,
23
23
  stat,
24
24
  writeViaStream } = types;
25
- const { blockingRead,
26
- blockingWrite,
25
+ const { blockingFlush,
26
+ blockingRead,
27
+ blockingWriteAndFlush,
28
+ checkWrite,
27
29
  dropInputStream,
28
30
  dropOutputStream,
29
31
  read,
@@ -1628,39 +1630,7 @@ function trampoline17(arg0, arg1) {
1628
1630
  }
1629
1631
  }
1630
1632
 
1631
- function trampoline18(arg0, arg1) {
1632
- const ret = getRandomBytes(BigInt.asUintN(64, arg0));
1633
- const val0 = ret;
1634
- const len0 = val0.byteLength;
1635
- const ptr0 = realloc0(0, 0, 1, len0 * 1);
1636
- const src0 = new Uint8Array(val0.buffer || val0, val0.byteOffset, len0 * 1);
1637
- (new Uint8Array(memory0.buffer, ptr0, len0 * 1)).set(src0);
1638
- dataView(memory0).setInt32(arg1 + 4, len0, true);
1639
- dataView(memory0).setInt32(arg1 + 0, ptr0, true);
1640
- }
1641
-
1642
- function trampoline19(arg0) {
1643
- const ret = getEnvironment();
1644
- const vec3 = ret;
1645
- const len3 = vec3.length;
1646
- const result3 = realloc0(0, 0, 4, len3 * 16);
1647
- for (let i = 0; i < vec3.length; i++) {
1648
- const e = vec3[i];
1649
- const base = result3 + i * 16;const [tuple0_0, tuple0_1] = e;
1650
- const ptr1 = utf8Encode(tuple0_0, realloc0, memory0);
1651
- const len1 = utf8EncodedLen;
1652
- dataView(memory0).setInt32(base + 4, len1, true);
1653
- dataView(memory0).setInt32(base + 0, ptr1, true);
1654
- const ptr2 = utf8Encode(tuple0_1, realloc0, memory0);
1655
- const len2 = utf8EncodedLen;
1656
- dataView(memory0).setInt32(base + 12, len2, true);
1657
- dataView(memory0).setInt32(base + 8, ptr2, true);
1658
- }
1659
- dataView(memory0).setInt32(arg0 + 4, len3, true);
1660
- dataView(memory0).setInt32(arg0 + 0, result3, true);
1661
- }
1662
-
1663
- function trampoline20(arg0, arg1, arg2) {
1633
+ function trampoline18(arg0, arg1, arg2) {
1664
1634
  let ret;
1665
1635
  try {
1666
1636
  ret = { tag: 'ok', val: read(arg0 >>> 0, BigInt.asUintN(64, arg1)) };
@@ -1713,7 +1683,7 @@ function trampoline20(arg0, arg1, arg2) {
1713
1683
  }
1714
1684
  }
1715
1685
 
1716
- function trampoline21(arg0, arg1, arg2) {
1686
+ function trampoline19(arg0, arg1, arg2) {
1717
1687
  let ret;
1718
1688
  try {
1719
1689
  ret = { tag: 'ok', val: blockingRead(arg0 >>> 0, BigInt.asUintN(64, arg1)) };
@@ -1766,7 +1736,53 @@ function trampoline21(arg0, arg1, arg2) {
1766
1736
  }
1767
1737
  }
1768
1738
 
1769
- function trampoline22(arg0, arg1, arg2, arg3) {
1739
+ function trampoline20(arg0, arg1) {
1740
+ let ret;
1741
+ try {
1742
+ ret = { tag: 'ok', val: checkWrite(arg0 >>> 0) };
1743
+ } catch (e) {
1744
+ ret = { tag: 'err', val: getErrorPayload(e) };
1745
+ }
1746
+ const variant1 = ret;
1747
+ switch (variant1.tag) {
1748
+ case 'ok': {
1749
+ const e = variant1.val;
1750
+ dataView(memory0).setInt8(arg1 + 0, 0, true);
1751
+ dataView(memory0).setBigInt64(arg1 + 8, toUint64(e), true);
1752
+ break;
1753
+ }
1754
+ case 'err': {
1755
+ const e = variant1.val;
1756
+ dataView(memory0).setInt8(arg1 + 0, 1, true);
1757
+ const val0 = e;
1758
+ let enum0;
1759
+ switch (val0) {
1760
+ case 'last-operation-failed': {
1761
+ enum0 = 0;
1762
+ break;
1763
+ }
1764
+ case 'closed': {
1765
+ enum0 = 1;
1766
+ break;
1767
+ }
1768
+ default: {
1769
+ if ((e) instanceof Error) {
1770
+ console.error(e);
1771
+ }
1772
+
1773
+ throw new TypeError(`"${val0}" is not one of the cases of write-error`);
1774
+ }
1775
+ }
1776
+ dataView(memory0).setInt8(arg1 + 8, enum0, true);
1777
+ break;
1778
+ }
1779
+ default: {
1780
+ throw new TypeError('invalid variant specified for result');
1781
+ }
1782
+ }
1783
+ }
1784
+
1785
+ function trampoline21(arg0, arg1, arg2, arg3) {
1770
1786
  const ptr0 = arg1;
1771
1787
  const len0 = arg2;
1772
1788
  const result0 = new Uint8Array(memory0.buffer.slice(ptr0, ptr0 + len0 * 1));
@@ -1776,38 +1792,36 @@ function trampoline22(arg0, arg1, arg2, arg3) {
1776
1792
  } catch (e) {
1777
1793
  ret = { tag: 'err', val: getErrorPayload(e) };
1778
1794
  }
1779
- const variant3 = ret;
1780
- switch (variant3.tag) {
1795
+ const variant2 = ret;
1796
+ switch (variant2.tag) {
1781
1797
  case 'ok': {
1782
- const e = variant3.val;
1798
+ const e = variant2.val;
1783
1799
  dataView(memory0).setInt8(arg3 + 0, 0, true);
1784
- const [tuple1_0, tuple1_1] = e;
1785
- dataView(memory0).setBigInt64(arg3 + 8, toUint64(tuple1_0), true);
1786
- const val2 = tuple1_1;
1787
- let enum2;
1788
- switch (val2) {
1789
- case 'open': {
1790
- enum2 = 0;
1800
+ break;
1801
+ }
1802
+ case 'err': {
1803
+ const e = variant2.val;
1804
+ dataView(memory0).setInt8(arg3 + 0, 1, true);
1805
+ const val1 = e;
1806
+ let enum1;
1807
+ switch (val1) {
1808
+ case 'last-operation-failed': {
1809
+ enum1 = 0;
1791
1810
  break;
1792
1811
  }
1793
- case 'ended': {
1794
- enum2 = 1;
1812
+ case 'closed': {
1813
+ enum1 = 1;
1795
1814
  break;
1796
1815
  }
1797
1816
  default: {
1798
- if ((tuple1_1) instanceof Error) {
1799
- console.error(tuple1_1);
1817
+ if ((e) instanceof Error) {
1818
+ console.error(e);
1800
1819
  }
1801
1820
 
1802
- throw new TypeError(`"${val2}" is not one of the cases of stream-status`);
1821
+ throw new TypeError(`"${val1}" is not one of the cases of write-error`);
1803
1822
  }
1804
1823
  }
1805
- dataView(memory0).setInt8(arg3 + 16, enum2, true);
1806
- break;
1807
- }
1808
- case 'err': {
1809
- const e = variant3.val;
1810
- dataView(memory0).setInt8(arg3 + 0, 1, true);
1824
+ dataView(memory0).setInt8(arg3 + 1, enum1, true);
1811
1825
  break;
1812
1826
  }
1813
1827
  default: {
@@ -1816,48 +1830,91 @@ function trampoline22(arg0, arg1, arg2, arg3) {
1816
1830
  }
1817
1831
  }
1818
1832
 
1819
- function trampoline23(arg0, arg1, arg2, arg3) {
1833
+ function trampoline22(arg0, arg1, arg2, arg3) {
1820
1834
  const ptr0 = arg1;
1821
1835
  const len0 = arg2;
1822
1836
  const result0 = new Uint8Array(memory0.buffer.slice(ptr0, ptr0 + len0 * 1));
1823
1837
  let ret;
1824
1838
  try {
1825
- ret = { tag: 'ok', val: blockingWrite(arg0 >>> 0, result0) };
1839
+ ret = { tag: 'ok', val: blockingWriteAndFlush(arg0 >>> 0, result0) };
1826
1840
  } catch (e) {
1827
1841
  ret = { tag: 'err', val: getErrorPayload(e) };
1828
1842
  }
1829
- const variant3 = ret;
1830
- switch (variant3.tag) {
1843
+ const variant2 = ret;
1844
+ switch (variant2.tag) {
1831
1845
  case 'ok': {
1832
- const e = variant3.val;
1846
+ const e = variant2.val;
1833
1847
  dataView(memory0).setInt8(arg3 + 0, 0, true);
1834
- const [tuple1_0, tuple1_1] = e;
1835
- dataView(memory0).setBigInt64(arg3 + 8, toUint64(tuple1_0), true);
1836
- const val2 = tuple1_1;
1837
- let enum2;
1838
- switch (val2) {
1839
- case 'open': {
1840
- enum2 = 0;
1848
+ break;
1849
+ }
1850
+ case 'err': {
1851
+ const e = variant2.val;
1852
+ dataView(memory0).setInt8(arg3 + 0, 1, true);
1853
+ const val1 = e;
1854
+ let enum1;
1855
+ switch (val1) {
1856
+ case 'last-operation-failed': {
1857
+ enum1 = 0;
1841
1858
  break;
1842
1859
  }
1843
- case 'ended': {
1844
- enum2 = 1;
1860
+ case 'closed': {
1861
+ enum1 = 1;
1845
1862
  break;
1846
1863
  }
1847
1864
  default: {
1848
- if ((tuple1_1) instanceof Error) {
1849
- console.error(tuple1_1);
1865
+ if ((e) instanceof Error) {
1866
+ console.error(e);
1850
1867
  }
1851
1868
 
1852
- throw new TypeError(`"${val2}" is not one of the cases of stream-status`);
1869
+ throw new TypeError(`"${val1}" is not one of the cases of write-error`);
1853
1870
  }
1854
1871
  }
1855
- dataView(memory0).setInt8(arg3 + 16, enum2, true);
1872
+ dataView(memory0).setInt8(arg3 + 1, enum1, true);
1873
+ break;
1874
+ }
1875
+ default: {
1876
+ throw new TypeError('invalid variant specified for result');
1877
+ }
1878
+ }
1879
+ }
1880
+
1881
+ function trampoline23(arg0, arg1) {
1882
+ let ret;
1883
+ try {
1884
+ ret = { tag: 'ok', val: blockingFlush(arg0 >>> 0) };
1885
+ } catch (e) {
1886
+ ret = { tag: 'err', val: getErrorPayload(e) };
1887
+ }
1888
+ const variant1 = ret;
1889
+ switch (variant1.tag) {
1890
+ case 'ok': {
1891
+ const e = variant1.val;
1892
+ dataView(memory0).setInt8(arg1 + 0, 0, true);
1856
1893
  break;
1857
1894
  }
1858
1895
  case 'err': {
1859
- const e = variant3.val;
1860
- dataView(memory0).setInt8(arg3 + 0, 1, true);
1896
+ const e = variant1.val;
1897
+ dataView(memory0).setInt8(arg1 + 0, 1, true);
1898
+ const val0 = e;
1899
+ let enum0;
1900
+ switch (val0) {
1901
+ case 'last-operation-failed': {
1902
+ enum0 = 0;
1903
+ break;
1904
+ }
1905
+ case 'closed': {
1906
+ enum0 = 1;
1907
+ break;
1908
+ }
1909
+ default: {
1910
+ if ((e) instanceof Error) {
1911
+ console.error(e);
1912
+ }
1913
+
1914
+ throw new TypeError(`"${val0}" is not one of the cases of write-error`);
1915
+ }
1916
+ }
1917
+ dataView(memory0).setInt8(arg1 + 1, enum0, true);
1861
1918
  break;
1862
1919
  }
1863
1920
  default: {
@@ -1866,7 +1923,39 @@ function trampoline23(arg0, arg1, arg2, arg3) {
1866
1923
  }
1867
1924
  }
1868
1925
 
1869
- function trampoline24(arg0) {
1926
+ function trampoline24(arg0, arg1) {
1927
+ const ret = getRandomBytes(BigInt.asUintN(64, arg0));
1928
+ const val0 = ret;
1929
+ const len0 = val0.byteLength;
1930
+ const ptr0 = realloc0(0, 0, 1, len0 * 1);
1931
+ const src0 = new Uint8Array(val0.buffer || val0, val0.byteOffset, len0 * 1);
1932
+ (new Uint8Array(memory0.buffer, ptr0, len0 * 1)).set(src0);
1933
+ dataView(memory0).setInt32(arg1 + 4, len0, true);
1934
+ dataView(memory0).setInt32(arg1 + 0, ptr0, true);
1935
+ }
1936
+
1937
+ function trampoline25(arg0) {
1938
+ const ret = getEnvironment();
1939
+ const vec3 = ret;
1940
+ const len3 = vec3.length;
1941
+ const result3 = realloc0(0, 0, 4, len3 * 16);
1942
+ for (let i = 0; i < vec3.length; i++) {
1943
+ const e = vec3[i];
1944
+ const base = result3 + i * 16;const [tuple0_0, tuple0_1] = e;
1945
+ const ptr1 = utf8Encode(tuple0_0, realloc0, memory0);
1946
+ const len1 = utf8EncodedLen;
1947
+ dataView(memory0).setInt32(base + 4, len1, true);
1948
+ dataView(memory0).setInt32(base + 0, ptr1, true);
1949
+ const ptr2 = utf8Encode(tuple0_1, realloc0, memory0);
1950
+ const len2 = utf8EncodedLen;
1951
+ dataView(memory0).setInt32(base + 12, len2, true);
1952
+ dataView(memory0).setInt32(base + 8, ptr2, true);
1953
+ }
1954
+ dataView(memory0).setInt32(arg0 + 4, len3, true);
1955
+ dataView(memory0).setInt32(arg0 + 0, result3, true);
1956
+ }
1957
+
1958
+ function trampoline26(arg0) {
1870
1959
  const ret = getTerminalStdin();
1871
1960
  const variant0 = ret;
1872
1961
  if (variant0 === null || variant0=== undefined) {
@@ -1878,7 +1967,7 @@ function trampoline24(arg0) {
1878
1967
  }
1879
1968
  }
1880
1969
 
1881
- function trampoline25(arg0) {
1970
+ function trampoline27(arg0) {
1882
1971
  const ret = getTerminalStdout();
1883
1972
  const variant0 = ret;
1884
1973
  if (variant0 === null || variant0=== undefined) {
@@ -1890,7 +1979,7 @@ function trampoline25(arg0) {
1890
1979
  }
1891
1980
  }
1892
1981
 
1893
- function trampoline26(arg0) {
1982
+ function trampoline28(arg0) {
1894
1983
  const ret = getTerminalStderr();
1895
1984
  const variant0 = ret;
1896
1985
  if (variant0 === null || variant0=== undefined) {
@@ -2279,7 +2368,7 @@ function metadataShow(arg0) {
2279
2368
  let variant2;
2280
2369
  switch (dataView(memory0).getUint8(base + 0, true)) {
2281
2370
  case 0: {
2282
- variant2 = null;
2371
+ variant2 = undefined;
2283
2372
  break;
2284
2373
  }
2285
2374
  case 1: {
@@ -2442,25 +2531,25 @@ let _initialized = false;
2442
2531
  export const $init = (async() => {
2443
2532
  const module0 = fetchCompile(new URL('./wasm-tools.core.wasm', import.meta.url));
2444
2533
  const module1 = fetchCompile(new URL('./wasm-tools.core2.wasm', import.meta.url));
2445
- const module2 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGACfn8AYAR/f39/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwADHRwAAQECAgIDAgQAAQEFBQAAAAYHBwgGBgYJBgoLBAUBcAEcHAeOAR0BMAAAATEAAQEyAAIBMwADATQABAE1AAUBNgAGATcABwE4AAgBOQAJAjEwAAoCMTEACwIxMgAMAjEzAA0CMTQADgIxNQAPAjE2ABACMTcAEQIxOAASAjE5ABMCMjAAFAIyMQAVAjIyABYCMjMAFwIyNAAYAjI1ABkCMjYAGgIyNwAbCCRpbXBvcnRzAQAK9wIcCQAgAEEAEQAACw0AIAAgASACQQERAQALDQAgACABIAJBAhEBAAsLACAAIAFBAxECAAsLACAAIAFBBBECAAsLACAAIAFBBRECAAsXACAAIAEgAiADIAQgBSAGIAdBBhEDAAsLACAAIAFBBxECAAsLACAAIAFBCBEEAAsJACAAQQkRAAALDQAgACABIAJBChEBAAsNACAAIAEgAkELEQEACw8AIAAgASACIANBDBEFAAsPACAAIAEgAiADQQ0RBQALCQAgAEEOEQAACwkAIABBDxEAAAsJACAAQRARAAALCwAgACABQRERBgALDwAgACABIAIgA0ESEQcACw8AIAAgASACIANBExEHAAsZACAAIAEgAiADIAQgBSAGIAcgCEEUEQgACwsAIAAgAUEVEQYACwsAIAAgAUEWEQYACwsAIAAgAUEXEQYACwkAIABBGBEJAAsLACAAIAFBGREGAAsNACAAIAEgAkEaEQoACwkAIABBGxELAAsALglwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQENd2l0LWNvbXBvbmVudAYwLjE0LjAA7AkEbmFtZQATEndpdC1jb21wb25lbnQ6c2hpbQHPCRwAMWluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9wcmVvcGVucy1nZXQtZGlyZWN0b3JpZXMBLmluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1yZWFkLXZpYS1zdHJlYW0CL2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy13cml0ZS12aWEtc3RyZWFtAzBpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXMtYXBwZW5kLXZpYS1zdHJlYW0EJ2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1nZXQtdHlwZQUjaW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzLXN0YXQGJmluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1vcGVuLWF0ByxpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXMtbWV0YWRhdGEtaGFzaAgsaW5kaXJlY3Qtd2FzaTpyYW5kb20vcmFuZG9tLWdldC1yYW5kb20tYnl0ZXMJLWluZGlyZWN0LXdhc2k6Y2xpL2Vudmlyb25tZW50LWdldC1lbnZpcm9ubWVudAodaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLXJlYWQLJmluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy1ibG9ja2luZy1yZWFkDB5pbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtd3JpdGUNJ2luZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy1ibG9ja2luZy13cml0ZQ4zaW5kaXJlY3Qtd2FzaTpjbGkvdGVybWluYWwtc3RkaW4tZ2V0LXRlcm1pbmFsLXN0ZGluDzVpbmRpcmVjdC13YXNpOmNsaS90ZXJtaW5hbC1zdGRvdXQtZ2V0LXRlcm1pbmFsLXN0ZG91dBA1aW5kaXJlY3Qtd2FzaTpjbGkvdGVybWluYWwtc3RkZXJyLWdldC10ZXJtaW5hbC1zdGRlcnIRLGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfZmlsZXN0YXRfZ2V0EiRhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX3JlYWQTJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfd3JpdGUUJmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtcGF0aF9vcGVuFSdhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXJhbmRvbV9nZXQWKGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9nZXQXLmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9zaXplc19nZXQYJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfY2xvc2UZK2FkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9nZXQaMGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9kaXJfbmFtZRsmYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wcm9jX2V4aXQ');
2446
- const module3 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGACfn8AYAR/f39/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwACrgEdAAEwAAAAATEAAQABMgABAAEzAAIAATQAAgABNQACAAE2AAMAATcAAgABOAAEAAE5AAAAAjEwAAEAAjExAAEAAjEyAAUAAjEzAAUAAjE0AAAAAjE1AAAAAjE2AAAAAjE3AAYAAjE4AAcAAjE5AAcAAjIwAAgAAjIxAAYAAjIyAAYAAjIzAAYAAjI0AAkAAjI1AAYAAjI2AAoAAjI3AAsACCRpbXBvcnRzAXABHBwJIgEAQQALHAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhsALglwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQENd2l0LWNvbXBvbmVudAYwLjE0LjAAHARuYW1lABUUd2l0LWNvbXBvbmVudDpmaXh1cHM');
2534
+ const module2 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGAEf39/fwBgAn5/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwADHx4AAQECAgIDAgEBAgQEAgUAAAAABgcHCAYGBgkGCgsEBQFwAR4eB5gBHwEwAAABMQABATIAAgEzAAMBNAAEATUABQE2AAYBNwAHATgACAE5AAkCMTAACgIxMQALAjEyAAwCMTMADQIxNAAOAjE1AA8CMTYAEAIxNwARAjE4ABICMTkAEwIyMAAUAjIxABUCMjIAFgIyMwAXAjI0ABgCMjUAGQIyNgAaAjI3ABsCMjgAHAIyOQAdCCRpbXBvcnRzAQAKjwMeCQAgAEEAEQAACw0AIAAgASACQQERAQALDQAgACABIAJBAhEBAAsLACAAIAFBAxECAAsLACAAIAFBBBECAAsLACAAIAFBBRECAAsXACAAIAEgAiADIAQgBSAGIAdBBhEDAAsLACAAIAFBBxECAAsNACAAIAEgAkEIEQEACw0AIAAgASACQQkRAQALCwAgACABQQoRAgALDwAgACABIAIgA0ELEQQACw8AIAAgASACIANBDBEEAAsLACAAIAFBDRECAAsLACAAIAFBDhEFAAsJACAAQQ8RAAALCQAgAEEQEQAACwkAIABBEREAAAsJACAAQRIRAAALCwAgACABQRMRBgALDwAgACABIAIgA0EUEQcACw8AIAAgASACIANBFREHAAsZACAAIAEgAiADIAQgBSAGIAcgCEEWEQgACwsAIAAgAUEXEQYACwsAIAAgAUEYEQYACwsAIAAgAUEZEQYACwkAIABBGhEJAAsLACAAIAFBGxEGAAsNACAAIAEgAkEcEQoACwkAIABBHRELAAsALglwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQENd2l0LWNvbXBvbmVudAYwLjE0LjIAxQoEbmFtZQATEndpdC1jb21wb25lbnQ6c2hpbQGoCh4AMWluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9wcmVvcGVucy1nZXQtZGlyZWN0b3JpZXMBLmluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1yZWFkLXZpYS1zdHJlYW0CL2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy13cml0ZS12aWEtc3RyZWFtAzBpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXMtYXBwZW5kLXZpYS1zdHJlYW0EJ2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1nZXQtdHlwZQUjaW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzLXN0YXQGJmluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlcy1vcGVuLWF0ByxpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXMtbWV0YWRhdGEtaGFzaAgdaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLXJlYWQJJmluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy1ibG9ja2luZy1yZWFkCiRpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXMtY2hlY2std3JpdGULHmluZGlyZWN0LXdhc2k6aW8vc3RyZWFtcy13cml0ZQwxaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLWJsb2NraW5nLXdyaXRlLWFuZC1mbHVzaA0naW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zLWJsb2NraW5nLWZsdXNoDixpbmRpcmVjdC13YXNpOnJhbmRvbS9yYW5kb20tZ2V0LXJhbmRvbS1ieXRlcw8taW5kaXJlY3Qtd2FzaTpjbGkvZW52aXJvbm1lbnQtZ2V0LWVudmlyb25tZW50EDNpbmRpcmVjdC13YXNpOmNsaS90ZXJtaW5hbC1zdGRpbi1nZXQtdGVybWluYWwtc3RkaW4RNWluZGlyZWN0LXdhc2k6Y2xpL3Rlcm1pbmFsLXN0ZG91dC1nZXQtdGVybWluYWwtc3Rkb3V0EjVpbmRpcmVjdC13YXNpOmNsaS90ZXJtaW5hbC1zdGRlcnItZ2V0LXRlcm1pbmFsLXN0ZGVychMsYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9maWxlc3RhdF9nZXQUJGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcmVhZBUlYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF93cml0ZRYmYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wYXRoX29wZW4XJ2FkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtcmFuZG9tX2dldBgoYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1lbnZpcm9uX2dldBkuYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1lbnZpcm9uX3NpemVzX2dldBolYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9jbG9zZRsrYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9wcmVzdGF0X2dldBwwYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9wcmVzdGF0X2Rpcl9uYW1lHSZhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXByb2NfZXhpdA');
2535
+ const module3 = base64Compile('AGFzbQEAAAABUgxgAX8AYAN/fn8AYAJ/fwBgCH9/f39/f39/AGAEf39/fwBgAn5/AGACf38Bf2AEf39/fwF/YAl/f39/f35+f38Bf2ABfwF/YAN/f38Bf2ABfwACugEfAAEwAAAAATEAAQABMgABAAEzAAIAATQAAgABNQACAAE2AAMAATcAAgABOAABAAE5AAEAAjEwAAIAAjExAAQAAjEyAAQAAjEzAAIAAjE0AAUAAjE1AAAAAjE2AAAAAjE3AAAAAjE4AAAAAjE5AAYAAjIwAAcAAjIxAAcAAjIyAAgAAjIzAAYAAjI0AAYAAjI1AAYAAjI2AAkAAjI3AAYAAjI4AAoAAjI5AAsACCRpbXBvcnRzAXABHh4JJAEAQQALHgABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHQAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMTQuMgAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw');
2447
2536
  const instanceFlags0 = new WebAssembly.Global({ value: "i32", mutable: true }, 3);
2448
2537
  const instanceFlags1 = new WebAssembly.Global({ value: "i32", mutable: true }, 3);
2449
2538
  Promise.all([module0, module1, module2, module3]).catch(() => {});
2450
2539
  ({ exports: exports0 } = await instantiateCore(await module2));
2451
2540
  ({ exports: exports1 } = await instantiateCore(await module0, {
2452
2541
  wasi_snapshot_preview1: {
2453
- environ_get: exports0['22'],
2454
- environ_sizes_get: exports0['23'],
2455
- fd_close: exports0['24'],
2456
- fd_filestat_get: exports0['17'],
2457
- fd_prestat_dir_name: exports0['26'],
2458
- fd_prestat_get: exports0['25'],
2459
- fd_read: exports0['18'],
2460
- fd_write: exports0['19'],
2461
- path_open: exports0['20'],
2462
- proc_exit: exports0['27'],
2463
- random_get: exports0['21'],
2542
+ environ_get: exports0['24'],
2543
+ environ_sizes_get: exports0['25'],
2544
+ fd_close: exports0['26'],
2545
+ fd_filestat_get: exports0['19'],
2546
+ fd_prestat_dir_name: exports0['28'],
2547
+ fd_prestat_get: exports0['27'],
2548
+ fd_read: exports0['20'],
2549
+ fd_write: exports0['21'],
2550
+ path_open: exports0['22'],
2551
+ proc_exit: exports0['29'],
2552
+ random_get: exports0['23'],
2464
2553
  },
2465
2554
  }));
2466
2555
  ({ exports: exports2 } = await instantiateCore(await module1, {
@@ -2471,7 +2560,7 @@ export const $init = (async() => {
2471
2560
  memory: exports1.memory,
2472
2561
  },
2473
2562
  'wasi:cli/environment': {
2474
- 'get-environment': exports0['9'],
2563
+ 'get-environment': exports0['15'],
2475
2564
  },
2476
2565
  'wasi:cli/exit': {
2477
2566
  exit: trampoline9,
@@ -2492,13 +2581,13 @@ export const $init = (async() => {
2492
2581
  'drop-terminal-output': trampoline7,
2493
2582
  },
2494
2583
  'wasi:cli/terminal-stderr': {
2495
- 'get-terminal-stderr': exports0['16'],
2584
+ 'get-terminal-stderr': exports0['18'],
2496
2585
  },
2497
2586
  'wasi:cli/terminal-stdin': {
2498
- 'get-terminal-stdin': exports0['14'],
2587
+ 'get-terminal-stdin': exports0['16'],
2499
2588
  },
2500
2589
  'wasi:cli/terminal-stdout': {
2501
- 'get-terminal-stdout': exports0['15'],
2590
+ 'get-terminal-stdout': exports0['17'],
2502
2591
  },
2503
2592
  'wasi:filesystem/preopens': {
2504
2593
  'get-directories': exports0['0'],
@@ -2515,15 +2604,17 @@ export const $init = (async() => {
2515
2604
  'write-via-stream': exports0['2'],
2516
2605
  },
2517
2606
  'wasi:io/streams': {
2518
- 'blocking-read': exports0['11'],
2519
- 'blocking-write': exports0['13'],
2607
+ 'blocking-flush': exports0['13'],
2608
+ 'blocking-read': exports0['9'],
2609
+ 'blocking-write-and-flush': exports0['12'],
2610
+ 'check-write': exports0['10'],
2520
2611
  'drop-input-stream': trampoline1,
2521
2612
  'drop-output-stream': trampoline2,
2522
- read: exports0['10'],
2523
- write: exports0['12'],
2613
+ read: exports0['8'],
2614
+ write: exports0['11'],
2524
2615
  },
2525
2616
  'wasi:random/random': {
2526
- 'get-random-bytes': exports0['8'],
2617
+ 'get-random-bytes': exports0['14'],
2527
2618
  },
2528
2619
  }));
2529
2620
  memory0 = exports1.memory;
@@ -2540,18 +2631,20 @@ export const $init = (async() => {
2540
2631
  '14': trampoline24,
2541
2632
  '15': trampoline25,
2542
2633
  '16': trampoline26,
2543
- '17': exports2.fd_filestat_get,
2544
- '18': exports2.fd_read,
2545
- '19': exports2.fd_write,
2634
+ '17': trampoline27,
2635
+ '18': trampoline28,
2636
+ '19': exports2.fd_filestat_get,
2546
2637
  '2': trampoline12,
2547
- '20': exports2.path_open,
2548
- '21': exports2.random_get,
2549
- '22': exports2.environ_get,
2550
- '23': exports2.environ_sizes_get,
2551
- '24': exports2.fd_close,
2552
- '25': exports2.fd_prestat_get,
2553
- '26': exports2.fd_prestat_dir_name,
2554
- '27': exports2.proc_exit,
2638
+ '20': exports2.fd_read,
2639
+ '21': exports2.fd_write,
2640
+ '22': exports2.path_open,
2641
+ '23': exports2.random_get,
2642
+ '24': exports2.environ_get,
2643
+ '25': exports2.environ_sizes_get,
2644
+ '26': exports2.fd_close,
2645
+ '27': exports2.fd_prestat_get,
2646
+ '28': exports2.fd_prestat_dir_name,
2647
+ '29': exports2.proc_exit,
2555
2648
  '3': trampoline13,
2556
2649
  '4': trampoline14,
2557
2650
  '5': trampoline15,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytecodealliance/jco",
3
- "version": "0.11.2",
3
+ "version": "0.12.0",
4
4
  "description": "JavaScript tooling for working with WebAssembly Components",
5
5
  "author": "Guy Bedford",
6
6
  "bin": {
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "type": "module",
20
20
  "dependencies": {
21
- "@bytecodealliance/preview2-shim": "0.0.14",
21
+ "@bytecodealliance/preview2-shim": "0.0.15",
22
22
  "binaryen": "^111.0.0",
23
23
  "chalk-template": "^0.4.0",
24
24
  "commander": "^9.4.1",
@@ -54,7 +54,7 @@
54
54
  "build": "cargo build --workspace --target wasm32-wasi --release && cargo run",
55
55
  "build:types:preview2-shim": "PREVIEW2_SHIM_TYPES=* cargo build -p jco",
56
56
  "lint": "eslint -c eslintrc.cjs lib/**/*.js packages/*/lib/**/*.js",
57
- "test": "mocha -u tdd test/test.js --timeout 120000"
57
+ "test": "rm -rf $(pwd)/node_modules/@bytecodealliance/jco/lib && ln -s $(pwd)/lib $(pwd)/node_modules/@bytecodealliance/jco/ && mocha -u tdd test/test.js --timeout 120000"
58
58
  },
59
59
  "files": [
60
60
  "lib",
@@ -67,6 +67,7 @@ async function wasm2Js (source) {
67
67
  * instantiation?: bool,
68
68
  * map?: Record<string, string>,
69
69
  * validLiftingOptimization?: bool,
70
+ * tracing?: bool,
70
71
  * noNodejsCompat?: bool,
71
72
  * tlaCompat?: bool,
72
73
  * base64Cutoff?: bool,
@@ -107,6 +108,7 @@ export async function transpileComponent (component, opts = {}) {
107
108
  map: Object.entries(opts.map ?? {}),
108
109
  instantiation: opts.instantiation || opts.js,
109
110
  validLiftingOptimization: opts.validLiftingOptimization ?? false,
111
+ tracing: opts.tracing ?? false,
110
112
  noNodejsCompat: !(opts.nodejsCompat ?? true),
111
113
  noTypescript: opts.noTypescript || false,
112
114
  tlaCompat: opts.tlaCompat ?? false,
@@ -369,4 +371,4 @@ function asmMangle (name) {
369
371
  }
370
372
  }
371
373
  return name;
372
- }
374
+ }
@@ -37,7 +37,7 @@ export async function componentWit(file, opts) {
37
37
  export async function componentNew(file, opts) {
38
38
  await $init;
39
39
  const source = file ? await readFile(file) : null;
40
- let adapters = null;
40
+ let adapters = [];
41
41
  if (opts.wasiReactor && opts.wasiCommand)
42
42
  throw new Error('Must select one of --wasi-command or --wasi-reactor');
43
43
  if (opts.wasiReactor)
package/src/jco.js CHANGED
@@ -11,7 +11,7 @@ program
11
11
  .name('jco')
12
12
  .description(c`{bold jco - WebAssembly JS Component Tools}\n JS Component Transpilation Bindgen & Wasm Tools for JS`)
13
13
  .usage('<command> [options]')
14
- .version('0.11.2');
14
+ .version('0.12.0');
15
15
 
16
16
  function myParseInt(value) {
17
17
  return parseInt(value, 10);
@@ -37,6 +37,7 @@ program.command('transpile')
37
37
  .option('-O, --optimize', 'optimize the component first')
38
38
  .option('--no-typescript', 'do not output TypeScript .d.ts types')
39
39
  .option('--valid-lifting-optimization', 'optimize component binary validations assuming all lifted values are valid')
40
+ .option('--tracing', 'emit `tracing` calls on function entry/exit')
40
41
  .option('-b, --base64-cutoff <bytes>', 'set the byte size under which core Wasm binaries will be inlined as base64', myParseInt)
41
42
  .option('--tla-compat', 'enables compatibility for JS environments without top-level await support via an async $init promise export')
42
43
  .option('--no-nodejs-compat', 'disables compatibility in Node.js without a fetch global')
@@ -1,5 +0,0 @@
1
- export namespace WasiCliStderr {
2
- export function getStderr(): OutputStream;
3
- }
4
- import type { OutputStream } from '../exports/wasi-io-streams';
5
- export { OutputStream };
@@ -1,5 +0,0 @@
1
- export namespace WasiCliTerminalStderr {
2
- export function getTerminalStderr(): TerminalOutput | null;
3
- }
4
- import type { TerminalOutput } from '../exports/wasi-cli-terminal-output';
5
- export { TerminalOutput };
@@ -1,5 +0,0 @@
1
- export namespace WasiCliTerminalStdin {
2
- export function getTerminalStdin(): TerminalInput | null;
3
- }
4
- import type { TerminalInput } from '../exports/wasi-cli-terminal-input';
5
- export { TerminalInput };
@@ -1,5 +0,0 @@
1
- export namespace WasiCliTerminalStdout {
2
- export function getTerminalStdout(): TerminalOutput | null;
3
- }
4
- import type { TerminalOutput } from '../exports/wasi-cli-terminal-output';
5
- export { TerminalOutput };
@@ -1,3 +0,0 @@
1
- export namespace WasiCliEnvironment {
2
- export function getEnvironment(): [string, string][];
3
- }
@@ -1,4 +0,0 @@
1
- export namespace WasiCliExit {
2
- export function exit(status: Result<void, void>): void;
3
- }
4
- export type Result<T, E> = { tag: 'ok', val: T } | { tag: 'err', val: E };
@@ -1,5 +0,0 @@
1
- export namespace WasiCliStdin {
2
- export function getStdin(): InputStream;
3
- }
4
- import type { InputStream } from '../imports/wasi-io-streams';
5
- export { InputStream };
@@ -1,5 +0,0 @@
1
- export namespace WasiCliStdout {
2
- export function getStdout(): OutputStream;
3
- }
4
- import type { OutputStream } from '../imports/wasi-io-streams';
5
- export { OutputStream };
@@ -1,4 +0,0 @@
1
- export namespace WasiCliTerminalInput {
2
- export function dropTerminalInput(this_: TerminalInput): void;
3
- }
4
- export type TerminalInput = number;
@@ -1,4 +0,0 @@
1
- export namespace WasiCliTerminalOutput {
2
- export function dropTerminalOutput(this_: TerminalOutput): void;
3
- }
4
- export type TerminalOutput = number;