diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2021-07-04 00:17:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-04 00:17:52 +0200 |
commit | 5addba2abc2e384e751e8884b4ac3219688c2473 (patch) | |
tree | a5249a82092909f32a852a910e5e144ddeffa497 /runtime/js/99_main.js | |
parent | ffa75be48044255ed49a822a7a61a2a130123a4a (diff) |
refactor: use primordials in runtime/, part2 (#11248)
Diffstat (limited to 'runtime/js/99_main.js')
-rw-r--r-- | runtime/js/99_main.js | 83 |
1 files changed, 48 insertions, 35 deletions
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index 22fd6bd8e..a72b2177b 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -7,6 +7,20 @@ delete Object.prototype.__proto__; ((window) => { const core = Deno.core; + const { + Error, + FunctionPrototypeCall, + FunctionPrototypeBind, + ObjectAssign, + ObjectDefineProperty, + ObjectDefineProperties, + ObjectFreeze, + ObjectSetPrototypeOf, + PromiseResolve, + Symbol, + SymbolFor, + SymbolIterator, + } = window.__bootstrap.primordials; const util = window.__bootstrap.util; const eventTarget = window.__bootstrap.eventTarget; const globalInterfaces = window.__bootstrap.globalInterfaces; @@ -53,15 +67,11 @@ delete Object.prototype.__proto__; windowIsClosing = true; // Push a macrotask to exit after a promise resolve. // This is not perfect, but should be fine for first pass. - Promise.resolve().then(() => - timers.setTimeout.call( - null, - () => { - // This should be fine, since only Window/MainWorker has .close() - os.exit(0); - }, - 0, - ) + PromiseResolve().then(() => + FunctionPrototypeCall(timers.setTimeout, null, () => { + // This should be fine, since only Window/MainWorker has .close() + os.exit(0); + }, 0) ); } } @@ -89,7 +99,7 @@ delete Object.prototype.__proto__; if ( webidl.type(transferOrOptions) === "Object" && transferOrOptions !== undefined && - transferOrOptions[Symbol.iterator] !== undefined + transferOrOptions[SymbolIterator] !== undefined ) { const transfer = webidl.converters["sequence<object>"]( transferOrOptions, @@ -112,7 +122,10 @@ delete Object.prototype.__proto__; async function pollForMessages() { if (!globalDispatchEvent) { - globalDispatchEvent = globalThis.dispatchEvent.bind(globalThis); + globalDispatchEvent = FunctionPrototypeBind( + globalThis.dispatchEvent, + globalThis, + ); } while (!isClosing) { const data = await core.opAsync("op_worker_recv_message"); @@ -249,14 +262,14 @@ delete Object.prototype.__proto__; webidl.illegalConstructor(); } - [Symbol.for("Deno.privateCustomInspect")](inspect) { + [SymbolFor("Deno.privateCustomInspect")](inspect) { return `${this.constructor.name} ${inspect({})}`; } } const navigator = webidl.createBranded(Navigator); - Object.defineProperties(Navigator.prototype, { + ObjectDefineProperties(Navigator.prototype, { gpu: { configurable: true, enumerable: true, @@ -272,14 +285,14 @@ delete Object.prototype.__proto__; webidl.illegalConstructor(); } - [Symbol.for("Deno.privateCustomInspect")](inspect) { + [SymbolFor("Deno.privateCustomInspect")](inspect) { return `${this.constructor.name} ${inspect({})}`; } } const workerNavigator = webidl.createBranded(WorkerNavigator); - Object.defineProperties(WorkerNavigator.prototype, { + ObjectDefineProperties(WorkerNavigator.prototype, { gpu: { configurable: true, enumerable: true, @@ -470,9 +483,9 @@ delete Object.prototype.__proto__; delete globalThis.bootstrap; util.log("bootstrapMainRuntime"); hasBootstrapped = true; - Object.defineProperties(globalThis, windowOrWorkerGlobalScope); - Object.defineProperties(globalThis, mainRuntimeGlobalProperties); - Object.setPrototypeOf(globalThis, Window.prototype); + ObjectDefineProperties(globalThis, windowOrWorkerGlobalScope); + ObjectDefineProperties(globalThis, mainRuntimeGlobalProperties); + ObjectSetPrototypeOf(globalThis, Window.prototype); const consoleFromDeno = globalThis.console; wrapConsole(consoleFromDeno, consoleFromV8); @@ -482,7 +495,7 @@ delete Object.prototype.__proto__; defineEventHandler(window, "load", null); defineEventHandler(window, "unload", null); - const isUnloadDispatched = Symbol.for("isUnloadDispatched"); + const isUnloadDispatched = SymbolFor("isUnloadDispatched"); // Stores the flag for checking whether unload is dispatched or not. // This prevents the recursive dispatches of unload events. // See https://github.com/denoland/deno/issues/9201. @@ -518,23 +531,23 @@ delete Object.prototype.__proto__; memoryUsage: core.memoryUsage, ...denoNs, }; - Object.defineProperties(finalDenoNs, { + ObjectDefineProperties(finalDenoNs, { pid: util.readOnly(pid), ppid: util.readOnly(ppid), noColor: util.readOnly(noColor), - args: util.readOnly(Object.freeze(args)), + args: util.readOnly(ObjectFreeze(args)), mainModule: util.getterOnly(opMainModule), }); if (unstableFlag) { - Object.assign(finalDenoNs, denoNsUnstable); + ObjectAssign(finalDenoNs, denoNsUnstable); } // Setup `Deno` global - we're actually overriding already existing global // `Deno` with `Deno` namespace from "./deno.ts". - Object.defineProperty(globalThis, "Deno", util.readOnly(finalDenoNs)); - Object.freeze(globalThis.Deno.core); - Object.freeze(globalThis.Deno.core.sharedQueue); + ObjectDefineProperty(globalThis, "Deno", util.readOnly(finalDenoNs)); + ObjectFreeze(globalThis.Deno.core); + ObjectFreeze(globalThis.Deno.core.sharedQueue); signals.setSignals(); util.log("args", args); @@ -558,9 +571,9 @@ delete Object.prototype.__proto__; delete globalThis.bootstrap; util.log("bootstrapWorkerRuntime"); hasBootstrapped = true; - Object.defineProperties(globalThis, windowOrWorkerGlobalScope); - Object.defineProperties(globalThis, workerRuntimeGlobalProperties); - Object.defineProperties(globalThis, { name: util.readOnly(name) }); + ObjectDefineProperties(globalThis, windowOrWorkerGlobalScope); + ObjectDefineProperties(globalThis, workerRuntimeGlobalProperties); + ObjectDefineProperties(globalThis, { name: util.readOnly(name) }); Object.setPrototypeOf(globalThis, DedicatedWorkerGlobalScope.prototype); const consoleFromDeno = globalThis.console; @@ -592,19 +605,19 @@ delete Object.prototype.__proto__; }; if (useDenoNamespace) { if (unstableFlag) { - Object.assign(finalDenoNs, denoNsUnstable); + ObjectAssign(finalDenoNs, denoNsUnstable); } - Object.defineProperties(finalDenoNs, { + ObjectDefineProperties(finalDenoNs, { pid: util.readOnly(pid), noColor: util.readOnly(noColor), - args: util.readOnly(Object.freeze(args)), + args: util.readOnly(ObjectFreeze(args)), }); // Setup `Deno` global - we're actually overriding already // existing global `Deno` with `Deno` namespace from "./deno.ts". util.immutableDefine(globalThis, "Deno", finalDenoNs); - Object.freeze(globalThis.Deno); - Object.freeze(globalThis.Deno.core); - Object.freeze(globalThis.Deno.core.sharedQueue); + ObjectFreeze(globalThis.Deno); + ObjectFreeze(globalThis.Deno.core); + ObjectFreeze(globalThis.Deno.core.sharedQueue); signals.setSignals(); } else { delete globalThis.Deno; @@ -612,7 +625,7 @@ delete Object.prototype.__proto__; } } - Object.defineProperties(globalThis, { + ObjectDefineProperties(globalThis, { bootstrap: { value: { mainRuntime: bootstrapMainRuntime, |