77 lines
2.3 KiB
JavaScript
77 lines
2.3 KiB
JavaScript
|
|
import { bold, green, magenta, red, yellow, white } from '../../lib/picocolors';
|
|||
|
|
import { LRUCache } from '../../server/lib/lru-cache';
|
|||
|
|
export const prefixes = {
|
|||
|
|
wait: white(bold('○')),
|
|||
|
|
error: red(bold('⨯')),
|
|||
|
|
warn: yellow(bold('⚠')),
|
|||
|
|
ready: '▲',
|
|||
|
|
info: white(bold(' ')),
|
|||
|
|
event: green(bold('✓')),
|
|||
|
|
trace: magenta(bold('»'))
|
|||
|
|
};
|
|||
|
|
const LOGGING_METHOD = {
|
|||
|
|
log: 'log',
|
|||
|
|
warn: 'warn',
|
|||
|
|
error: 'error'
|
|||
|
|
};
|
|||
|
|
function prefixedLog(prefixType, ...message) {
|
|||
|
|
if ((message[0] === '' || message[0] === undefined) && message.length === 1) {
|
|||
|
|
message.shift();
|
|||
|
|
}
|
|||
|
|
const consoleMethod = prefixType in LOGGING_METHOD ? LOGGING_METHOD[prefixType] : 'log';
|
|||
|
|
const prefix = prefixes[prefixType];
|
|||
|
|
// If there's no message, don't print the prefix but a new line
|
|||
|
|
if (message.length === 0) {
|
|||
|
|
console[consoleMethod]('');
|
|||
|
|
} else {
|
|||
|
|
// Ensure if there's ANSI escape codes it's concatenated into one string.
|
|||
|
|
// Chrome DevTool can only handle color if it's in one string.
|
|||
|
|
if (message.length === 1 && typeof message[0] === 'string') {
|
|||
|
|
console[consoleMethod](prefix + ' ' + message[0]);
|
|||
|
|
} else {
|
|||
|
|
console[consoleMethod](prefix, ...message);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
export function bootstrap(message) {
|
|||
|
|
console.log(message);
|
|||
|
|
}
|
|||
|
|
export function wait(...message) {
|
|||
|
|
prefixedLog('wait', ...message);
|
|||
|
|
}
|
|||
|
|
export function error(...message) {
|
|||
|
|
prefixedLog('error', ...message);
|
|||
|
|
}
|
|||
|
|
export function warn(...message) {
|
|||
|
|
prefixedLog('warn', ...message);
|
|||
|
|
}
|
|||
|
|
export function ready(...message) {
|
|||
|
|
prefixedLog('ready', ...message);
|
|||
|
|
}
|
|||
|
|
export function info(...message) {
|
|||
|
|
prefixedLog('info', ...message);
|
|||
|
|
}
|
|||
|
|
export function event(...message) {
|
|||
|
|
prefixedLog('event', ...message);
|
|||
|
|
}
|
|||
|
|
export function trace(...message) {
|
|||
|
|
prefixedLog('trace', ...message);
|
|||
|
|
}
|
|||
|
|
const warnOnceCache = new LRUCache(10000, (value)=>value.length);
|
|||
|
|
export function warnOnce(...message) {
|
|||
|
|
const key = message.join(' ');
|
|||
|
|
if (!warnOnceCache.has(key)) {
|
|||
|
|
warnOnceCache.set(key, key);
|
|||
|
|
warn(...message);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
const errorOnceCache = new LRUCache(10000, (value)=>value.length);
|
|||
|
|
export function errorOnce(...message) {
|
|||
|
|
const key = message.join(' ');
|
|||
|
|
if (!errorOnceCache.has(key)) {
|
|||
|
|
errorOnceCache.set(key, key);
|
|||
|
|
error(...message);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//# sourceMappingURL=log.js.map
|