diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-04-25 01:03:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-25 01:03:45 +0200 |
commit | 1378df33647e2608733d88121b77ff2f839cddfa (patch) | |
tree | e2ecdf2028761e88eeb777d93bdd807384a36863 | |
parent | 912a57f6a20c632c306f4e044df7618a3971abbf (diff) |
remove bootstrap methods from global scope after bootstrapping (#4869)
-rw-r--r-- | cli/compilers/ts.rs | 2 | ||||
-rw-r--r-- | cli/compilers/wasm.rs | 2 | ||||
-rw-r--r-- | cli/js.rs | 4 | ||||
-rw-r--r-- | cli/js/compiler.ts | 19 | ||||
-rw-r--r-- | cli/js/globals.ts | 20 | ||||
-rw-r--r-- | cli/js/main.ts | 18 | ||||
-rw-r--r-- | cli/js/runtime_main.ts | 3 | ||||
-rw-r--r-- | cli/js/runtime_worker.ts | 3 | ||||
-rw-r--r-- | cli/lib.rs | 2 | ||||
-rw-r--r-- | cli/ops/worker_host.rs | 2 | ||||
-rw-r--r-- | cli/web_worker.rs | 2 | ||||
-rw-r--r-- | cli/worker.rs | 4 |
12 files changed, 42 insertions, 39 deletions
diff --git a/cli/compilers/ts.rs b/cli/compilers/ts.rs index 0e3e5c26c..0560ad292 100644 --- a/cli/compilers/ts.rs +++ b/cli/compilers/ts.rs @@ -267,7 +267,7 @@ impl TsCompiler { startup_data::compiler_isolate_init(), worker_state, ); - worker.execute("bootstrapTsCompilerRuntime()").unwrap(); + worker.execute("bootstrap.tsCompilerRuntime()").unwrap(); worker } diff --git a/cli/compilers/wasm.rs b/cli/compilers/wasm.rs index 4e8ba78f3..ed5603584 100644 --- a/cli/compilers/wasm.rs +++ b/cli/compilers/wasm.rs @@ -67,7 +67,7 @@ impl WasmCompiler { startup_data::compiler_isolate_init(), worker_state, ); - worker.execute("bootstrapWasmCompilerRuntime()").unwrap(); + worker.execute("bootstrap.wasmCompilerRuntime()").unwrap(); worker } @@ -30,7 +30,7 @@ fn cli_snapshot() { deno_core::js_check(isolate.execute( "<anon>", r#" - if (!(bootstrapMainRuntime && bootstrapWorkerRuntime)) { + if (!(bootstrap.mainRuntime && bootstrap.workerRuntime)) { throw Error("bad"); } console.log("we have console.log!!!"); @@ -49,7 +49,7 @@ fn compiler_snapshot() { deno_core::js_check(isolate.execute( "<anon>", r#" - if (!(bootstrapTsCompilerRuntime && bootstrapTsCompilerRuntime)) { + if (!(bootstrap.tsCompilerRuntime && bootstrap.wasmCompilerRuntime)) { throw Error("bad"); } console.log(`ts version: ${ts.version}`); 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); diff --git a/cli/lib.rs b/cli/lib.rs index 2e52ace93..2a13d802d 100644 --- a/cli/lib.rs +++ b/cli/lib.rs @@ -154,7 +154,7 @@ fn create_main_worker( t.add("stderr", Box::new(stderr)); } - worker.execute("bootstrapMainRuntime()")?; + worker.execute("bootstrap.mainRuntime()")?; Ok(worker) } diff --git a/cli/ops/worker_host.rs b/cli/ops/worker_host.rs index 460596b81..df8bfa7fd 100644 --- a/cli/ops/worker_host.rs +++ b/cli/ops/worker_host.rs @@ -64,7 +64,7 @@ fn create_web_worker( // Instead of using name for log we use `worker-${id}` because // WebWorkers can have empty string as name. let script = format!( - "bootstrapWorkerRuntime(\"{}\", {}, \"worker-{}\")", + "bootstrap.workerRuntime(\"{}\", {}, \"worker-{}\")", name, worker.has_deno_namespace, worker_id ); worker.execute(&script)?; diff --git a/cli/web_worker.rs b/cli/web_worker.rs index fc1575c5f..ebb3f1d86 100644 --- a/cli/web_worker.rs +++ b/cli/web_worker.rs @@ -263,7 +263,7 @@ mod tests { false, ); worker - .execute("bootstrapWorkerRuntime(\"TEST\", false)") + .execute("bootstrap.workerRuntime(\"TEST\", false)") .unwrap(); worker } diff --git a/cli/worker.rs b/cli/worker.rs index 46e7eeaff..858958ecf 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -382,7 +382,7 @@ mod tests { startup_data::deno_isolate_init(), state.clone(), ); - worker.execute("bootstrapMainRuntime()").unwrap(); + worker.execute("bootstrap.mainRuntime()").unwrap(); let result = worker.execute_module(&module_specifier).await; if let Err(err) = result { eprintln!("execute_mod err {:?}", err); @@ -404,7 +404,7 @@ mod tests { startup_data::deno_isolate_init(), state, ); - worker.execute("bootstrapMainRuntime()").unwrap(); + worker.execute("bootstrap.mainRuntime()").unwrap(); worker } |