UNPKG

logpipes

Version:

Console.log transformation pipes

128 lines 5.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOriginalConsoleMethods = exports.getConsoleOverrides = exports.uninstallAllConsoleOverrides = exports.uninstallConsoleOverrides = exports.uninstallConsoleOverride = exports.installConsoleOverrides = exports.installConsoleOverride = exports.LOG_LEVELS = void 0; exports.LOG_LEVELS = ['debug', 'error', 'info', 'log', 'trace', 'warn']; const consoleOverrides = []; const noop = () => { }; const originalConsole = { debug: noop, error: noop, info: noop, log: noop, trace: noop, warn: noop }; /** * Adds the pipe to the list of active console overrides. * The pipes are called in the order they are installed. */ function installConsoleOverride(pipe) { const pipes = Array.isArray(pipe) ? pipe : [pipe]; installConsoleOverrides(...pipes); } exports.installConsoleOverride = installConsoleOverride; /** * Adds the pipes to the list of active console overrides. * The pipes are called in the order they are installed. */ function installConsoleOverrides(...pipes) { initializeConsoleOverrideContextOnFirstUse(); for (const pipe of pipes) { // Call pipe.onInstall() when pipe is installed first time. if (!consoleOverrides.includes(pipe)) { pipe.onInstall && pipe.onInstall(); } consoleOverrides.push(pipe); } } exports.installConsoleOverrides = installConsoleOverrides; /** Removes the given pipe from the active console overrides. */ function uninstallConsoleOverride(pipe) { const pipes = Array.isArray(pipe) ? pipe : [pipe]; uninstallConsoleOverrides(...pipes); } exports.uninstallConsoleOverride = uninstallConsoleOverride; /** Removes the given pipes from the active console overrides. */ function uninstallConsoleOverrides(...pipes) { for (const pipe of pipes) { for (let pipeIndex = consoleOverrides.indexOf(pipe); pipeIndex >= 0; pipeIndex = consoleOverrides.indexOf(pipe)) { const removedPipe = consoleOverrides.splice(pipeIndex, 1)[0]; // Call pipe.onUninstall() when the pipe is not present in the overrides anymore. if (!consoleOverrides.includes(removedPipe)) { (removedPipe === null || removedPipe === void 0 ? void 0 : removedPipe.onUninstall) && removedPipe.onUninstall(); } } } destroyConsoleOverrideContextOnLastUse(); } exports.uninstallConsoleOverrides = uninstallConsoleOverrides; /** Uninstall all existing console overrides. */ function uninstallAllConsoleOverrides() { for (const pipe of [...consoleOverrides]) { uninstallConsoleOverride(pipe); } } exports.uninstallAllConsoleOverrides = uninstallAllConsoleOverrides; /** Returns a list of all console overrides. */ function getConsoleOverrides() { return [...consoleOverrides]; } exports.getConsoleOverrides = getConsoleOverrides; /** * Returns set of console.[log] methods captured during installation of the first pipe. * If no pipe is installed, returns current console[log] methods. */ function getOriginalConsoleMethods() { if (originalConsole['debug'] !== noop) { return Object.assign({}, originalConsole); } const result = {}; for (const level of exports.LOG_LEVELS) { result[level] = console[level]; } return result; } exports.getOriginalConsoleMethods = getOriginalConsoleMethods; function initializeConsoleOverrideContextOnFirstUse() { if (originalConsole['debug'] !== noop) { return; // Already installed. } for (const level of exports.LOG_LEVELS) { originalConsole[level] = console[level]; console[level] = (...args) => { var _a, _b, _c; let resultLevel = level; let resultArgs = args; for (const pipe of consoleOverrides) { const logPipeResult = pipe(resultLevel, ...resultArgs); const isSuppressed = !logPipeResult || (Array.isArray(logPipeResult) ? ((_a = logPipeResult === null || logPipeResult === void 0 ? void 0 : logPipeResult.length) !== null && _a !== void 0 ? _a : 0) === 0 : ((_c = (_b = logPipeResult.args) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) === 0); if (isSuppressed) { return; // Log is suppressed. } if (Array.isArray(logPipeResult)) { resultArgs = logPipeResult; continue; } resultLevel = logPipeResult.level; resultArgs = logPipeResult.args; } originalConsole[resultLevel](...resultArgs); }; } } function destroyConsoleOverrideContextOnLastUse() { if (consoleOverrides.length > 0) { return; // Too early to restore: there are overrides. } if (originalConsole['debug'] === noop) { return; // Nothing to restore: not overridden. } for (const name of exports.LOG_LEVELS) { console[name] = originalConsole[name]; originalConsole[name] = noop; } } //# sourceMappingURL=ConsoleOverrides.js.map