@lcap/builder
Version:
lcap builder utils
90 lines (89 loc) • 3.28 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createLogger = void 0;
const consola_1 = __importDefault(require("consola"));
// In ice.js, we use DEBUG_TAG instead of DEBUG to avoid other libs which use `DEBUG` as their flag log debug info.
// eslint-disable-next-line camelcase
const { DEBUG_TAG, npm_lifecycle_event } = process.env;
function getEnableAndDisabledNamespaces(namespaces) {
const enabledNamespaces = [];
const disabledNamespaces = [];
// Support namespace wildcards rules which are same as https://github.com/debug-js/debug#wildcards
const namespaceSplits = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
for (const namespaceSplit of namespaceSplits) {
if (!namespaceSplit) {
// ignore empty strings
// eslint-disable-next-line no-continue
continue;
}
const formatNamespace = namespaceSplit.replace(/\*/g, '.*?');
if (formatNamespace[0] === '-') {
disabledNamespaces.push(new RegExp(`^${formatNamespace.slice(1)}$`));
}
else {
enabledNamespaces.push(new RegExp(`^${formatNamespace}$`));
}
}
return { enabledNamespaces, disabledNamespaces };
}
const { enabledNamespaces, disabledNamespaces } = getEnableAndDisabledNamespaces(DEBUG_TAG);
function enabled(namespace) {
for (const disabledNamespace of disabledNamespaces) {
if (disabledNamespace.test(namespace)) {
return false;
}
}
for (const enabledNamespace of enabledNamespaces) {
if (enabledNamespace.test(namespace)) {
return true;
}
}
return false;
}
const createLogger = (namespace) => {
function briefError(message, ...args) {
consola_1.default.error(message, ...args);
if (!DEBUG_TAG) {
// eslint-disable-next-line camelcase
consola_1.default.log(`run \`DEBUG_TAG=${namespace || '*'} npm run ${npm_lifecycle_event || 'start'}\` to view error details`);
}
}
function extendLoggerInstance(instance) {
const logger = {};
['fatal', 'error', 'warn', 'log', 'info', 'start', 'success', 'ready', 'debug', 'trace'].forEach((method) => {
logger[method] = instance[method];
});
logger.briefError = briefError;
return logger;
}
if (DEBUG_TAG) {
consola_1.default.level = 4;
}
if (!namespace) {
return extendLoggerInstance(consola_1.default);
}
if (DEBUG_TAG) {
if (enabled(namespace)) {
return extendLoggerInstance(consola_1.default.withTag(namespace));
}
return {
fatal() { },
error() { },
warn() { },
log() { },
info() { },
start() { },
success() { },
ready() { },
debug() { },
trace() { },
briefError() { },
};
}
return extendLoggerInstance(consola_1.default.withTag(namespace));
};
exports.createLogger = createLogger;
exports.default = (0, exports.createLogger)();