mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
// 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.
|
|
|
|
const print = V8Worker2.print;
|
|
|
|
import { debug } from "./main";
|
|
|
|
// Internal logging for deno. Use the "debug" variable above to control
|
|
// output.
|
|
// tslint:disable-next-line:no-any
|
|
export function log(...args: any[]): void {
|
|
if (debug) {
|
|
console.log(...args);
|
|
}
|
|
}
|
|
|
|
_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(" ");
|
|
}
|
|
|
|
export function assert(cond: boolean, msg = "") {
|
|
if (!cond) {
|
|
throw Error("Assert fail. " + msg);
|
|
}
|
|
}
|