UNPKG

@lcap/builder

Version:
90 lines (89 loc) 3.28 kB
"use strict"; 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)();