diff options
Diffstat (limited to 'globals.ts')
-rw-r--r-- | globals.ts | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/globals.ts b/globals.ts new file mode 100644 index 000000000..f25cc710b --- /dev/null +++ b/globals.ts @@ -0,0 +1,44 @@ +import { setTimeout } 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"] = setTimeout; + +const print = V8Worker2.print; + +_global["console"] = { + // tslint:disable-next-line:no-any + log(...args: any[]): void { + print(stringifyArgs(args)); + }, + + // tslint:disable-next-line:no-any + error(...args: any[]): void { + print("ERROR: " + stringifyArgs(args)); + } +}; + +// tslint:disable-next-line:no-any +function stringifyArgs(args: any[]): string { + const out: string[] = []; + for (const a of args) { + if (typeof a === "string") { + out.push(a); + } else { + out.push(JSON.stringify(a)); + } + } + return out.join(" "); +} |