summaryrefslogtreecommitdiff
path: root/js/globals.ts
diff options
context:
space:
mode:
Diffstat (limited to 'js/globals.ts')
-rw-r--r--js/globals.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/js/globals.ts b/js/globals.ts
new file mode 100644
index 000000000..cca72d172
--- /dev/null
+++ b/js/globals.ts
@@ -0,0 +1,32 @@
+// Copyright 2018 Ryan Dahl <ry@tinyclouds.org>
+// All rights reserved. MIT License.
+import * as timer from "./timers";
+
+// If you use the eval function indirectly, by invoking it via a reference
+// other than eval, as of ECMAScript 5 it works in the global scope rather than
+// the local scope. This means, for instance, that function declarations create
+// global functions, and that the code being evaluated doesn't have access to
+// local variables within the scope where it's being called.
+export const globalEval = eval;
+
+// A reference to the global object.
+// TODO The underscore is because it's conflicting with @types/node.
+export const _global = globalEval("this");
+
+_global["window"] = _global; // Create a window object.
+import "./url";
+
+_global["setTimeout"] = timer.setTimeout;
+_global["setInterval"] = timer.setInterval;
+_global["clearTimeout"] = timer.clearTimer;
+_global["clearInterval"] = timer.clearTimer;
+
+import { Console } from "./console";
+_global["console"] = new Console();
+
+import { fetch } from "./fetch";
+_global["fetch"] = fetch;
+
+import { TextEncoder, TextDecoder } from "text-encoding";
+_global["TextEncoder"] = TextEncoder;
+_global["TextDecoder"] = TextDecoder;