ng2-logger
Version:
isomorphic logger for browser/server in typescript
94 lines • 3.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const level_1 = require("./level");
const helper_1 = require("./helper");
if (helper_1.isNode) {
var chalk = require('chalk');
var path = require('path');
var fs = require('fs');
var JSON5 = require('json5');
var stringify = require('json-stringify-safe');
}
function consoleLog(data, level) {
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);
}
exports.consoleLog = consoleLog;
function displayParams(params = [], level) {
params.forEach(param => {
if (typeof param === 'object') {
handleObjectData(param, level);
}
else if (isObjectAfterStringify(param)) {
handleObjectData(JSON5.parse(param), level);
}
else {
consoleLog(param, level);
}
});
}
exports.displayParams = displayParams;
function replace(out, match, char, color) {
let m = out.match(match);
let outer = out;
if (m)
m.forEach(p => {
const rep = p
.slice(1)
.replace(char, '');
outer = outer.replace(`"${rep}":`, `"${color.call(null, rep)}":`);
});
return outer;
}
function handleObjectData(param, level) {
if (istartedInVscode()) {
consoleLog(param, level);
return;
}
let 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(line => {
return (line.length < process.stdout.columns ?
line :
line.slice(0, process.stdout.columns - 6) + chalk.dim('...'));
}).join('\n');
}
consoleLog(out, level);
}
function istartedInVscode() {
let args = process.execArgv;
if (args) {
return args.some((arg) => /^--debug=?/.test(arg) ||
/^--debug-brk=?/.test(arg) ||
/^--inspect=?/.test(arg) ||
/^--inspect-brk=?/.test(arg));
}
return false;
}
exports.istartedInVscode = istartedInVscode;
function isObjectAfterStringify(s) {
try {
const json = JSON5.parse(s);
return true;
}
catch (error) {
return false;
}
}
//# sourceMappingURL=backend-logging.js.map