lib0
Version:
> Monorepo of isomorphic utility functions
133 lines (125 loc) • 3.85 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var symbol = require('./symbol-9c439012.cjs');
var time = require('./time-bc2081b9.cjs');
var environment = require('./environment-a22d11e0.cjs');
var _function = require('./function-a29189eb.cjs');
var json = require('./json-092190a1.cjs');
require('./metric.cjs');
require('./math-08e068f9.cjs');
require('./map-0dabcc55.cjs');
require('./string-3cd7a2db.cjs');
require('./array-f0f52786.cjs');
require('./set-a0a3ea69.cjs');
require('./conditions-f5c0c102.cjs');
require('./storage.cjs');
require('./object-315a738b.cjs');
require('./traits.cjs');
const BOLD = symbol.create();
const UNBOLD = symbol.create();
const BLUE = symbol.create();
const GREY = symbol.create();
const GREEN = symbol.create();
const RED = symbol.create();
const PURPLE = symbol.create();
const ORANGE = symbol.create();
const UNCOLOR = symbol.create();
/* c8 ignore start */
/**
* @param {Array<undefined|string|Symbol|Object|number|function():any>} args
* @return {Array<string|object|number|undefined>}
*/
const computeNoColorLoggingArgs = args => {
if (args.length === 1 && args[0]?.constructor === Function) {
args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]());
}
const strBuilder = [];
const logArgs = [];
// try with formatting until we find something unsupported
let i = 0;
for (; i < args.length; i++) {
const arg = args[i];
if (arg === undefined) {
break
} else if (arg.constructor === String || arg.constructor === Number) {
strBuilder.push(arg);
} else if (arg.constructor === Object) {
break
}
}
if (i > 0) {
// create logArgs with what we have so far
logArgs.push(strBuilder.join(''));
}
// append the rest
for (; i < args.length; i++) {
const arg = args[i];
if (!(arg instanceof Symbol)) {
logArgs.push(arg);
}
}
return logArgs
};
/* c8 ignore stop */
const loggingColors = [GREEN, PURPLE, ORANGE, BLUE];
let nextColor = 0;
let lastLoggingTime = time.getUnixTime();
/* c8 ignore start */
/**
* @param {function(...any):void} _print
* @param {string} moduleName
* @return {function(...any):void}
*/
const createModuleLogger = (_print, moduleName) => {
const color = loggingColors[nextColor];
const debugRegexVar = environment.getVariable('log');
const doLogging = debugRegexVar !== null &&
(debugRegexVar === '*' || debugRegexVar === 'true' ||
new RegExp(debugRegexVar, 'gi').test(moduleName));
nextColor = (nextColor + 1) % loggingColors.length;
moduleName += ': ';
return !doLogging
? _function.nop
: (...args) => {
if (args.length === 1 && args[0]?.constructor === Function) {
args = args[0]();
}
const timeNow = time.getUnixTime();
const timeDiff = timeNow - lastLoggingTime;
lastLoggingTime = timeNow;
_print(
color,
moduleName,
UNCOLOR,
...args.map((arg) => {
if (arg != null && arg.constructor === Uint8Array) {
arg = Array.from(arg);
}
const t = typeof arg;
switch (t) {
case 'string':
case 'symbol':
return arg
default: {
return json.stringify(arg)
}
}
}),
color,
' +' + timeDiff + 'ms'
);
}
};
/* c8 ignore stop */
exports.BLUE = BLUE;
exports.BOLD = BOLD;
exports.GREEN = GREEN;
exports.GREY = GREY;
exports.ORANGE = ORANGE;
exports.PURPLE = PURPLE;
exports.RED = RED;
exports.UNBOLD = UNBOLD;
exports.UNCOLOR = UNCOLOR;
exports.computeNoColorLoggingArgs = computeNoColorLoggingArgs;
exports.createModuleLogger = createModuleLogger;
//# sourceMappingURL=logging.common.cjs.map
;