diff --git a/cli/js/globals_test.ts b/cli/js/globals_test.ts index d6bc87f5c6..70c5e4e374 100644 --- a/cli/js/globals_test.ts +++ b/cli/js/globals_test.ts @@ -9,14 +9,26 @@ test(function windowExists(): void { assert(window != null); }); +test(function selfExists(): void { + assert(self != null); +}); + test(function windowWindowExists(): void { assert(window.window === window); }); +test(function windowSelfExists(): void { + assert(window.self === window); +}); + test(function globalThisEqualsWindow(): void { assert(globalThis === window); }); +test(function globalThisEqualsSelf(): void { + assert(globalThis === self); +}); + test(function DenoNamespaceExists(): void { assert(Deno != null); }); diff --git a/cli/js/lib.deno.window.d.ts b/cli/js/lib.deno.window.d.ts index 2c62289192..737971d942 100644 --- a/cli/js/lib.deno.window.d.ts +++ b/cli/js/lib.deno.window.d.ts @@ -9,6 +9,7 @@ declare interface Window extends WindowOrWorkerGlobalScope { window: Window & WindowOrWorkerGlobalScope & typeof globalThis; + self: Window & WindowOrWorkerGlobalScope & typeof globalThis; onload: Function | undefined; onunload: Function | undefined; crypto: Crypto; @@ -16,6 +17,7 @@ declare interface Window extends WindowOrWorkerGlobalScope { } declare const window: Window & WindowOrWorkerGlobalScope & typeof globalThis; +declare const self: Window & WindowOrWorkerGlobalScope & typeof globalThis; declare const onload: Function | undefined; declare const onunload: Function | undefined; declare const crypto: Crypto; diff --git a/cli/js/runtime_main.ts b/cli/js/runtime_main.ts index b5517cbcb6..96bda3cb0f 100644 --- a/cli/js/runtime_main.ts +++ b/cli/js/runtime_main.ts @@ -32,6 +32,7 @@ Deno[Deno.symbols.internal] = internalObject; export const mainRuntimeGlobalProperties = { window: readOnly(globalThis), + self: readOnly(globalThis), Deno: readOnly(Deno), crypto: readOnly(csprng),