Skip to content

Commit 2d18059

Browse files
authored
fix: Add memory & table for esm binding's exports (#2344)
1 parent fa4a6ef commit 2d18059

File tree

8 files changed

+28
-0
lines changed

8 files changed

+28
-0
lines changed

src/bindings/js.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,12 @@ export class JSBuilder extends ExportsWalker {
864864

865865
if (this.esm) {
866866
sb.push("export const {\n ");
867+
if (this.program.options.exportMemory) {
868+
sb.push("memory,\n ");
869+
}
870+
if (this.program.options.exportTable) {
871+
sb.push("table,\n ");
872+
}
867873
for (let i = 0, k = exports.length; i < k; ++i) {
868874
if (i > 0) sb.push(",\n ");
869875
sb.push(exports[i]);

src/bindings/tsd.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,18 @@ export class TSDBuilder extends ExportsWalker {
186186
sb.push("declare namespace __AdaptedExports {\n");
187187
++this.indentLevel;
188188
}
189+
if (this.program.options.exportMemory) {
190+
indent(sb, this.indentLevel);
191+
sb.push("/** Exported memory */\n");
192+
indent(sb, this.indentLevel);
193+
sb.push(`export ${this.esm ? "declare " : ""}const memory: WebAssembly.Memory;\n`);
194+
}
195+
if (this.program.options.exportTable) {
196+
indent(sb, this.indentLevel);
197+
sb.push("/** Exported table */\n");
198+
indent(sb, this.indentLevel);
199+
sb.push(`export ${this.esm ? "declare " : ""}const table: WebAssembly.Table;\n`);
200+
}
189201
this.walk();
190202
if (!this.esm) {
191203
--this.indentLevel;

tests/compiler/bindings/esm.debug.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/** Exported memory */
2+
export declare const memory: WebAssembly.Memory;
13
/** bindings/esm/plainGlobal */
24
export declare const plainGlobal: {
35
/** @type `i32` */

tests/compiler/bindings/esm.debug.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,7 @@ async function instantiate(module, imports = {}) {
360360
return adaptedExports;
361361
}
362362
export const {
363+
memory,
363364
plainGlobal,
364365
plainMutableGlobal,
365366
stringGlobal,

tests/compiler/bindings/esm.release.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/** Exported memory */
2+
export declare const memory: WebAssembly.Memory;
13
/** bindings/esm/plainGlobal */
24
export declare const plainGlobal: {
35
/** @type `i32` */

tests/compiler/bindings/esm.release.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,7 @@ async function instantiate(module, imports = {}) {
360360
return adaptedExports;
361361
}
362362
export const {
363+
memory,
363364
plainGlobal,
364365
plainMutableGlobal,
365366
stringGlobal,

tests/compiler/bindings/raw.debug.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
declare namespace __AdaptedExports {
2+
/** Exported memory */
3+
export const memory: WebAssembly.Memory;
24
/** bindings/esm/plainGlobal */
35
export const plainGlobal: {
46
/** @type `i32` */

tests/compiler/bindings/raw.release.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
declare namespace __AdaptedExports {
2+
/** Exported memory */
3+
export const memory: WebAssembly.Memory;
24
/** bindings/esm/plainGlobal */
35
export const plainGlobal: {
46
/** @type `i32` */

0 commit comments

Comments
 (0)