@baseplate-dev/sync
Version:
Library for syncing Baseplate descriptions
76 lines • 2.51 kB
JavaScript
function formatMessage(messageOrObj, message) {
if (typeof messageOrObj === 'string') {
return messageOrObj;
}
else if (typeof messageOrObj === 'object' && messageOrObj !== null) {
const obj = messageOrObj;
const msg = message ??
(typeof obj.message === 'string'
? obj.message
: typeof obj.msg === 'string'
? obj.msg
: '');
const metadata = JSON.stringify(messageOrObj);
return msg ? `${msg} ${metadata}` : metadata;
}
else {
return String(messageOrObj);
}
}
export function createTestLogger() {
let [errorOutput, warnOutput, infoOutput, debugOutput] = Array.from({
length: 4,
}).fill('');
return {
error: (messageOrObj, message) => {
errorOutput += `${formatMessage(messageOrObj, message)}\n`;
},
warn: (messageOrObj, message) => {
warnOutput += `${formatMessage(messageOrObj, message)}\n`;
},
info: (messageOrObj, message) => {
infoOutput += `${formatMessage(messageOrObj, message)}\n`;
},
debug: (messageOrObj, message) => {
debugOutput += `${formatMessage(messageOrObj, message)}\n`;
},
getErrorOutput: () => errorOutput,
getWarnOutput: () => warnOutput,
getInfoOutput: () => infoOutput,
getDebugOutput: () => debugOutput,
};
}
const LOG_LEVEL_ORDER = {
error: 0,
warn: 1,
info: 2,
debug: 3,
};
function shouldLog(level, minLevel) {
return LOG_LEVEL_ORDER[level] <= LOG_LEVEL_ORDER[minLevel];
}
export function createConsoleLogger(minLevel = 'debug') {
return {
error: (messageOrObj, message) => {
if (shouldLog('error', minLevel)) {
console.error(formatMessage(messageOrObj, message));
}
},
warn: (messageOrObj, message) => {
if (shouldLog('warn', minLevel)) {
console.warn(formatMessage(messageOrObj, message));
}
},
info: (messageOrObj, message) => {
if (shouldLog('info', minLevel)) {
console.info(formatMessage(messageOrObj, message));
}
},
debug: (messageOrObj, message) => {
if (shouldLog('debug', minLevel)) {
console.debug(formatMessage(messageOrObj, message));
}
},
};
}
//# sourceMappingURL=logger.test-utils.js.map