@vtex/api
Version:
VTEX I/O API client
41 lines (40 loc) • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.logOnceToDevConsole = exports.log = exports.isLog = exports.LOG_ONCE = void 0;
const cluster_1 = require("cluster");
const caches_1 = require("../../caches");
const history = new caches_1.LRUCache({
max: 42,
});
exports.LOG_ONCE = 'logOnce';
const isLog = (message) => (message === null || message === void 0 ? void 0 : message.cmd) === exports.LOG_ONCE;
exports.isLog = isLog;
const log = (message, level) => {
const logger = console[level];
if (typeof logger === 'function') {
logger(message);
}
};
exports.log = log;
// Since we are now using clusters, if we simply console.log something,
// it may overwhelm the programmer's console with lots of repeated info.
// This function should be used when you want to warn about something
// only once
const logOnceToDevConsole = (message, level) => {
const strigified = JSON.stringify(message);
if (!history.has(strigified)) {
history.set(strigified, true);
if (cluster_1.isMaster) {
(0, exports.log)(message, level);
}
else if (cluster_1.isWorker && process.send) {
const logMessage = {
cmd: exports.LOG_ONCE,
level,
message,
};
process.send(logMessage);
}
}
};
exports.logOnceToDevConsole = logOnceToDevConsole;