ng2-logger
Version:
isomorphic logger for browser/server in typescript
111 lines • 3.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var level_1 = require("./level");
var helper_1 = require("./helper");
if (helper_1.isNode) {
//#region @backend
var chalk = require('chalk');
var path = require('path');
var fs = require('fs');
var JSON5 = require('json5');
var stringify = require('json-stringify-safe');
//#endregion
}
function consoleLog(data, level) {
//#region @backend
if (level === level_1.Level.INFO)
console.info(data);
else if (level === level_1.Level.ERROR)
console.error(data);
else if (level === level_1.Level.WARN)
console.warn(data);
else
console.log(data);
//#endregion
}
exports.consoleLog = consoleLog;
function displayParams(params, level) {
if (params === void 0) { params = []; }
//#region @backend
params.forEach(function (param) {
if (typeof param === 'object') {
handleObjectData(param, level);
}
else if (isObjectAfterStringify(param)) {
handleObjectData(JSON5.parse(param), level);
}
else {
consoleLog(param, level);
}
});
//#endregion
}
exports.displayParams = displayParams;
function replace(out, match, char, color) {
//#region @backend
var m = out.match(match);
var outer = out;
if (m)
m.forEach(function (p) {
var rep = p
.slice(1)
.replace(char, '');
outer = outer.replace("\"" + rep + "\":", "\"" + color.call(null, rep) + "\":");
});
return outer;
//#endregion
}
function handleObjectData(param, level) {
//#region @backend
if (istartedInVscode()) {
consoleLog(param, level);
return;
}
var out = stringify(param, null, 4);
out = replace(out, /\".*"\:\ \"/g, /\"\: "/, chalk.green);
out = replace(out, /\".*"\:\ \{/g, /\"\: \{/, chalk.yellow);
out = replace(out, /\".*"\:\ \[/g, /\"\: \[/, chalk.red);
out = replace(out, /\".*"\:\ true/g, /\"\: true/, chalk.blue);
out = replace(out, /\".*"\:\ false/g, /\"\: false/, chalk.blue);
out = replace(out, /\".*"\:\ (\-|[0-9])/g, /\"\: (\-|[0-9])/, chalk.magenta);
out = out.replace(/\"/g, chalk.dim('"'))
.replace(/\{/g, chalk.dim('{'))
.replace(/\}/g, chalk.dim('}'))
.replace(/\}/g, chalk.dim('}'));
if (process.stdout.columns && process.stdout.columns > 0) {
out = out.split('\n').map(function (line) {
return (line.length < process.stdout.columns ?
line :
line.slice(0, process.stdout.columns - 6) + chalk.dim('...'));
}).join('\n');
}
consoleLog(out, level);
//#endregion
}
function istartedInVscode() {
//#region @backend
var args = process.execArgv;
if (args) {
return args.some(function (arg) {
return /^--debug=?/.test(arg) ||
/^--debug-brk=?/.test(arg) ||
/^--inspect=?/.test(arg) ||
/^--inspect-brk=?/.test(arg);
});
}
return false;
//#endregion
}
exports.istartedInVscode = istartedInVscode;
function isObjectAfterStringify(s) {
//#region @backend
try {
var json = JSON5.parse(s);
return true;
}
catch (error) {
return false;
}
//#endregion
}
//# sourceMappingURL=backend-logging.js.map