APIs

Show:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const chalk_1 = require("chalk");
const path = require("path");
const _ = require("underscore");
let debugFlags = {};
function w(str, l) {
    return (str + "                                    ").substr(0, l);
}
function setDebugFlag(scriptFullpath, flag) {
    const filename = path.basename(scriptFullpath, ".js");
    if (process.env.DEBUG) {
        const decorated_filename = chalk_1.default.yellow(w(filename, 30));
        console.log(" Setting debug for ", decorated_filename, " to ", (flag ? chalk_1.default.cyan : chalk_1.default.red)(flag.toString()));
    }
    debugFlags[filename] = flag;
}
exports.setDebugFlag = setDebugFlag;
function checkDebugFlag(script_fullpath) {
    const filename = path.basename(script_fullpath, ".js");
    let doDebug = debugFlags[filename];
    if (process && process.env && process.env.DEBUG && !debugFlags.hasOwnProperty(filename)) {
        doDebug = (process.env.DEBUG.indexOf(filename) >= 0 || process.env.DEBUG.indexOf("ALL") >= 0);
        setDebugFlag(filename, doDebug);
    }
    return doDebug;
}
exports.checkDebugFlag = checkDebugFlag;
function file_line(filename, caller_line) {
    return chalk_1.default.bgWhite.cyan(w(filename, 30) + ":" + w(caller_line.toString(), 5));
}
/**
 * @method make_debugLog
 * @param scripFullpath:string
 * @return returns a  debugLog function that will write message to the console
 * if the DEBUG environment variable indicates that the provided source file shall display debug trace
 *
 */
function make_debugLog(scripFullpath) {
    const doDebug = checkDebugFlag(scripFullpath);
    const filename = path.basename(scripFullpath, ".js");
    function debugLogFunc() {
        if (debugFlags[filename]) {
            const stack = new Error().stack || "";
            // caller line number
            const l = stack.split("\n")[2].split(":");
            const caller_line = parseInt(l[l.length - 2]);
            const a1 = [file_line(filename, caller_line)];
            const a2 = _.values(arguments);
            const args = [].concat(a1, a2);
            console.log.apply(console, args);
        }
    }
    return debugLogFunc;
}
exports.make_debugLog = make_debugLog;
//# sourceMappingURL=make_debug_log.js.map