summaryrefslogtreecommitdiff
path: root/ext/web/04_global_interfaces.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/web/04_global_interfaces.js')
-rw-r--r--ext/web/04_global_interfaces.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/ext/web/04_global_interfaces.js b/ext/web/04_global_interfaces.js
new file mode 100644
index 000000000..8117bface
--- /dev/null
+++ b/ext/web/04_global_interfaces.js
@@ -0,0 +1,79 @@
+// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
+"use strict";
+
+// @ts-check
+/// <reference path="../../core/internal.d.ts" />
+
+((window) => {
+ const { EventTarget } = window;
+ const {
+ Symbol,
+ SymbolToStringTag,
+ TypeError,
+ } = window.__bootstrap.primordials;
+
+ const illegalConstructorKey = Symbol("illegalConstructorKey");
+
+ class Window extends EventTarget {
+ constructor(key = null) {
+ if (key !== illegalConstructorKey) {
+ throw new TypeError("Illegal constructor.");
+ }
+ super();
+ }
+
+ get [SymbolToStringTag]() {
+ return "Window";
+ }
+ }
+
+ class WorkerGlobalScope extends EventTarget {
+ constructor(key = null) {
+ if (key != illegalConstructorKey) {
+ throw new TypeError("Illegal constructor.");
+ }
+ super();
+ }
+
+ get [SymbolToStringTag]() {
+ return "WorkerGlobalScope";
+ }
+ }
+
+ class DedicatedWorkerGlobalScope extends WorkerGlobalScope {
+ constructor(key = null) {
+ if (key != illegalConstructorKey) {
+ throw new TypeError("Illegal constructor.");
+ }
+ super();
+ }
+
+ get [SymbolToStringTag]() {
+ return "DedicatedWorkerGlobalScope";
+ }
+ }
+
+ window.__bootstrap.globalInterfaces = {
+ DedicatedWorkerGlobalScope,
+ Window,
+ WorkerGlobalScope,
+ dedicatedWorkerGlobalScopeConstructorDescriptor: {
+ configurable: true,
+ enumerable: false,
+ value: DedicatedWorkerGlobalScope,
+ writable: true,
+ },
+ windowConstructorDescriptor: {
+ configurable: true,
+ enumerable: false,
+ value: Window,
+ writable: true,
+ },
+ workerGlobalScopeConstructorDescriptor: {
+ configurable: true,
+ enumerable: false,
+ value: WorkerGlobalScope,
+ writable: true,
+ },
+ };
+})(this);