summaryrefslogtreecommitdiff
path: root/cli/js
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-04-25 01:03:45 +0200
committerGitHub <noreply@github.com>2020-04-25 01:03:45 +0200
commit1378df33647e2608733d88121b77ff2f839cddfa (patch)
treee2ecdf2028761e88eeb777d93bdd807384a36863 /cli/js
parent912a57f6a20c632c306f4e044df7618a3971abbf (diff)
remove bootstrap methods from global scope after bootstrapping (#4869)
Diffstat (limited to 'cli/js')
-rw-r--r--cli/js/compiler.ts19
-rw-r--r--cli/js/globals.ts20
-rw-r--r--cli/js/main.ts18
-rw-r--r--cli/js/runtime_main.ts3
-rw-r--r--cli/js/runtime_worker.ts3
5 files changed, 33 insertions, 30 deletions
diff --git a/cli/js/compiler.ts b/cli/js/compiler.ts
index 91653a8e4..da9b62472 100644
--- a/cli/js/compiler.ts
+++ b/cli/js/compiler.ts
@@ -407,16 +407,13 @@ function bootstrapWasmCompilerRuntime(): void {
delete (Object.prototype as any).__proto__;
Object.defineProperties(globalThis, {
- bootstrapWasmCompilerRuntime: {
- value: bootstrapWasmCompilerRuntime,
- enumerable: false,
- writable: false,
- configurable: false,
- },
- bootstrapTsCompilerRuntime: {
- value: bootstrapTsCompilerRuntime,
- enumerable: false,
- writable: false,
- configurable: false,
+ bootstrap: {
+ value: {
+ ...globalThis.bootstrap,
+ wasmCompilerRuntime: bootstrapWasmCompilerRuntime,
+ tsCompilerRuntime: bootstrapTsCompilerRuntime,
+ },
+ configurable: true,
+ writable: true,
},
});
diff --git a/cli/js/globals.ts b/cli/js/globals.ts
index 897e9859f..87309a158 100644
--- a/cli/js/globals.ts
+++ b/cli/js/globals.ts
@@ -134,12 +134,19 @@ declare global {
};
var onload: ((e: Event) => void) | undefined;
var onunload: ((e: Event) => void) | undefined;
- var bootstrapMainRuntime: (() => void) | undefined;
- // Assigned to `self` global - worker runtime and compiler
- var bootstrapWorkerRuntime:
- | ((name: string) => Promise<void> | void)
- | undefined;
+ // These methods are used to prepare different runtime
+ // environments. After bootrapping, this namespace
+ // should be removed from global scope.
+ var bootstrap: {
+ mainRuntime: (() => void) | undefined;
+ // Assigned to `self` global - worker runtime and compiler
+ workerRuntime: ((name: string) => Promise<void> | void) | undefined;
+ // Assigned to `self` global - compiler
+ tsCompilerRuntime: (() => void) | undefined;
+ wasmCompilerRuntime: (() => void) | undefined;
+ };
+
var onerror:
| ((
msg: string,
@@ -156,9 +163,6 @@ declare global {
var close: () => void;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
var postMessage: (msg: any) => void;
- // Assigned to `self` global - compiler
- var bootstrapTsCompilerRuntime: (() => void) | undefined;
- var bootstrapWasmCompilerRuntime: (() => void) | undefined;
/* eslint-enable */
}
diff --git a/cli/js/main.ts b/cli/js/main.ts
index bd30d33f7..bb7a8a2dc 100644
--- a/cli/js/main.ts
+++ b/cli/js/main.ts
@@ -9,16 +9,12 @@ import { bootstrapWorkerRuntime } from "./runtime_worker.ts";
delete (Object.prototype as any).__proto__;
Object.defineProperties(globalThis, {
- bootstrapMainRuntime: {
- value: bootstrapMainRuntime,
- enumerable: false,
- writable: false,
- configurable: false,
- },
- bootstrapWorkerRuntime: {
- value: bootstrapWorkerRuntime,
- enumerable: false,
- writable: false,
- configurable: false,
+ bootstrap: {
+ value: {
+ mainRuntime: bootstrapMainRuntime,
+ workerRuntime: bootstrapWorkerRuntime,
+ },
+ configurable: true,
+ writable: true,
},
});
diff --git a/cli/js/runtime_main.ts b/cli/js/runtime_main.ts
index 0b0b1f75f..4c6df892c 100644
--- a/cli/js/runtime_main.ts
+++ b/cli/js/runtime_main.ts
@@ -72,6 +72,9 @@ export function bootstrapMainRuntime(): void {
if (hasBootstrapped) {
throw new Error("Worker runtime already bootstrapped");
}
+ // Remove bootstrapping methods from global scope
+ // @ts-ignore
+ globalThis.bootstrap = undefined;
log("bootstrapMainRuntime");
hasBootstrapped = true;
Object.defineProperties(globalThis, windowOrWorkerGlobalScopeMethods);
diff --git a/cli/js/runtime_worker.ts b/cli/js/runtime_worker.ts
index 60c845a18..6be8ff586 100644
--- a/cli/js/runtime_worker.ts
+++ b/cli/js/runtime_worker.ts
@@ -126,6 +126,9 @@ export function bootstrapWorkerRuntime(
if (hasBootstrapped) {
throw new Error("Worker runtime already bootstrapped");
}
+ // Remove bootstrapping methods from global scope
+ // @ts-ignore
+ globalThis.bootstrap = undefined;
log("bootstrapWorkerRuntime");
hasBootstrapped = true;
Object.defineProperties(globalThis, windowOrWorkerGlobalScopeMethods);