diff options
author | Andreu Botella <abb@randomunok.com> | 2021-08-31 19:33:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-31 19:33:03 +0200 |
commit | c49eee551fdf78ab0230ec30d4537c98dd5d0c80 (patch) | |
tree | d592858019caf072920fa5dab1337974fe19987f | |
parent | b518f5e1ba4c3281d4aee4c637f410db382ce751 (diff) |
feat(workers): Make the `Deno` namespace configurable and unfrozen (#11888)
This is the worker counterpart of PR #11062.
-rw-r--r-- | cli/tests/testdata/workers/deno_worker.ts | 9 | ||||
-rw-r--r-- | runtime/js/06_util.js | 14 | ||||
-rw-r--r-- | runtime/js/99_main.js | 3 |
3 files changed, 10 insertions, 16 deletions
diff --git a/cli/tests/testdata/workers/deno_worker.ts b/cli/tests/testdata/workers/deno_worker.ts index 2a29c8c4d..a4dca1506 100644 --- a/cli/tests/testdata/workers/deno_worker.ts +++ b/cli/tests/testdata/workers/deno_worker.ts @@ -1,7 +1,16 @@ +import { assert } from "../../../../test_util/std/testing/asserts.ts"; + onmessage = function (e) { if (typeof self.Deno === "undefined") { throw new Error("Deno namespace not available in worker"); } + assert(!Object.isFrozen(self.Deno)); + + const desc = Object.getOwnPropertyDescriptor(self, "Deno"); + assert(desc); + assert(desc.configurable); + assert(!desc.writable); + postMessage(e.data); }; diff --git a/runtime/js/06_util.js b/runtime/js/06_util.js index b6a3c3438..97c0adea4 100644 --- a/runtime/js/06_util.js +++ b/runtime/js/06_util.js @@ -3,7 +3,6 @@ ((window) => { const { - ObjectDefineProperty, StringPrototypeReplace, TypeError, Promise, @@ -55,18 +54,6 @@ return promise; } - function immutableDefine( - o, - p, - value, - ) { - ObjectDefineProperty(o, p, { - value, - configurable: false, - writable: false, - }); - } - // Keep in sync with `fromFileUrl()` in `std/path/win32.ts`. function pathFromURLWin32(url) { let p = StringPrototypeReplace( @@ -164,7 +151,6 @@ createResolvable, assert, AssertionError, - immutableDefine, pathFromURL, writable, nonEnumerable, diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index fc3eeecca..c9dd611da 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -695,8 +695,7 @@ delete Object.prototype.__proto__; }); // Setup `Deno` global - we're actually overriding already // existing global `Deno` with `Deno` namespace from "./deno.ts". - util.immutableDefine(globalThis, "Deno", finalDenoNs); - ObjectFreeze(globalThis.Deno); + ObjectDefineProperty(globalThis, "Deno", util.readOnly(finalDenoNs)); ObjectFreeze(globalThis.Deno.core); signals.setSignals(); } else { |