mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
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;
|
|
|
|
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(" ");
|
|
}
|