summaryrefslogtreecommitdiff
path: root/op_crates/web/04_global_interfaces.js
diff options
context:
space:
mode:
Diffstat (limited to 'op_crates/web/04_global_interfaces.js')
-rw-r--r--op_crates/web/04_global_interfaces.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/op_crates/web/04_global_interfaces.js b/op_crates/web/04_global_interfaces.js
new file mode 100644
index 000000000..74697a42e
--- /dev/null
+++ b/op_crates/web/04_global_interfaces.js
@@ -0,0 +1,70 @@
+"use strict";
+((window) => {
+ const { EventTarget } = window;
+
+ const illegalConstructorKey = Symbol("illegalConstructorKey");
+
+ class Window extends EventTarget {
+ constructor(key = null) {
+ if (key !== illegalConstructorKey) {
+ throw new TypeError("Illegal constructor.");
+ }
+ super();
+ }
+
+ get [Symbol.toStringTag]() {
+ return "Window";
+ }
+ }
+
+ class WorkerGlobalScope extends EventTarget {
+ constructor(key = null) {
+ if (key != illegalConstructorKey) {
+ throw new TypeError("Illegal constructor.");
+ }
+ super();
+ }
+
+ get [Symbol.toStringTag]() {
+ return "WorkerGlobalScope";
+ }
+ }
+
+ class DedicatedWorkerGlobalScope extends WorkerGlobalScope {
+ constructor(key = null) {
+ if (key != illegalConstructorKey) {
+ throw new TypeError("Illegal constructor.");
+ }
+ super();
+ }
+
+ get [Symbol.toStringTag]() {
+ return "DedicatedWorkerGlobalScope";
+ }
+ }
+
+ window.__bootstrap = (window.__bootstrap || {});
+ 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);