summaryrefslogtreecommitdiff
path: root/cli/js
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js')
-rw-r--r--cli/js/compiler_api_test.ts4
-rw-r--r--cli/js/compiler_bundler.ts13
2 files changed, 13 insertions, 4 deletions
diff --git a/cli/js/compiler_api_test.ts b/cli/js/compiler_api_test.ts
index a6baecbf5..82f72cdef 100644
--- a/cli/js/compiler_api_test.ts
+++ b/cli/js/compiler_api_test.ts
@@ -94,14 +94,14 @@ test(async function bundleApiSources() {
"/bar.ts": `export const bar = "bar";\n`
});
assert(diagnostics == null);
- assert(actual.includes(`__inst("foo")`));
+ assert(actual.includes(`__inst_s("foo")`));
assert(actual.includes(`__exp["bar"]`));
});
test(async function bundleApiNoSources() {
const [diagnostics, actual] = await bundle("./cli/tests/subdir/mod1.ts");
assert(diagnostics == null);
- assert(actual.includes(`__inst("mod1")`));
+ assert(actual.includes(`__inst_s("mod1")`));
assert(actual.includes(`__exp["printHello3"]`));
});
diff --git a/cli/js/compiler_bundler.ts b/cli/js/compiler_bundler.ts
index b9893620a..f8f0b48e8 100644
--- a/cli/js/compiler_bundler.ts
+++ b/cli/js/compiler_bundler.ts
@@ -42,9 +42,16 @@ export function buildBundle(
rootName = normalizeUrl(rootName)
.replace(sharedPath, "")
.replace(/\.\w+$/i, "");
+ // If one of the modules requires support for top-level-await, TypeScript will
+ // emit the execute function as an async function. When this is the case we
+ // need to bubble up the TLA to the instantiation, otherwise we instantiate
+ // synchronously.
+ const hasTla = data.match(/execute:\sasync\sfunction\s/);
let instantiate: string;
if (rootExports && rootExports.length) {
- instantiate = `const __exp = await __inst("${rootName}");\n`;
+ instantiate = hasTla
+ ? `const __exp = await __inst("${rootName}");\n`
+ : `const __exp = __inst_s("${rootName}");\n`;
for (const rootExport of rootExports) {
if (rootExport === "default") {
instantiate += `export default __exp["${rootExport}"];\n`;
@@ -53,7 +60,9 @@ export function buildBundle(
}
}
} else {
- instantiate = `await __inst("${rootName}");\n`;
+ instantiate = hasTla
+ ? `await __inst("${rootName}");\n`
+ : `__inst_s("${rootName}");\n`;
}
return `${SYSTEM_LOADER}\n${data}\n${instantiate}`;
}