UNPKG

@reyalp/debug-utils

Version:

ts transformers for debug

102 lines (101 loc) 4.33 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoggerDefaults = exports.DefaultLogPrinter = exports.DefaultLogFilter = exports.parseLogLevel = exports.DefaultLogFilterConfigs = exports.DefaultLogWriter = exports.DefaultLogFormatter = exports.Logger = exports.LogLevel = void 0; const strftime_1 = __importDefault(require("strftime")); const util_1 = require("util"); const prelude_1 = require("./prelude"); var LogLevel; (function (LogLevel) { LogLevel[LogLevel["ERROR"] = 0] = "ERROR"; LogLevel[LogLevel["WARN"] = 1] = "WARN"; LogLevel[LogLevel["INFO"] = 2] = "INFO"; LogLevel[LogLevel["VERBOSE"] = 3] = "VERBOSE"; LogLevel[LogLevel["DEBUG"] = 4] = "DEBUG"; LogLevel[LogLevel["SILLY"] = 5] = "SILLY"; })(LogLevel || (exports.LogLevel = LogLevel = {})); class Logger { constructor(tags, impls) { this.tags = tags; this.rt = { LogLevel, ...exports.LoggerDefaults, ...impls }; } tag(...tags) { void tags; return (0, prelude_1._not_transformed)(); } dump(...exprs) { void exprs; return (0, prelude_1._not_transformed)(); } error(...messages) { void messages; return (0, prelude_1._not_transformed)(); } warn(...messages) { void messages; return (0, prelude_1._not_transformed)(); } info(...messages) { void messages; return (0, prelude_1._not_transformed)(); } verbose(...messages) { void messages; return (0, prelude_1._not_transformed)(); } debug(...messages) { void messages; return (0, prelude_1._not_transformed)(); } silly(...messages) { void messages; return (0, prelude_1._not_transformed)(); } extend(...args) { const [tags, impls] = args.length === 0 ? [[], {}] : typeof args.at(-1) === 'string' ? [args, {}] : [args.slice(0, -1), args.at(-1)]; return new Logger([...new Set(this.tags.concat(tags))], { ...this.rt, ...impls }); } static create(...args) { const [tags, impls] = args.length === 0 ? [[], {}] : typeof args.at(-1) === 'string' ? [args, {}] : [args.slice(0, -1), args.at(-1)]; return new Logger([...new Set(tags)], impls); } } exports.Logger = Logger; const DefaultLogFormatter = (messages, ll, tags, _rt, file, line, name) => { const where = file ? ` ${file}:${line} ${name}` : ''; const label = `${(0, strftime_1.default)('%m-%d %T.%L')} ${'EWIVDS'[ll]}${tags.length ? (' (' + tags.join('|') + ')') : ''}${where}`; const lines = messages.join(' ').split('\n').map(s => s.trimEnd()); if (lines.length === 0) return [label + ':']; if (lines.length === 1) return [label + ': ' + lines[0]]; const indent = ' '.repeat(label.length); return lines.map((s, i) => (i ? indent : label) + (i ? '| ' : ': ') + s); }; exports.DefaultLogFormatter = DefaultLogFormatter; const DefaultLogWriter = lines => { for (const line of lines) console.log(line); }; exports.DefaultLogWriter = DefaultLogWriter; exports.DefaultLogFilterConfigs = { level: LogLevel.DEBUG, masks: {} }; const min = LogLevel.ERROR; const max = LogLevel.SILLY; function parseLogLevel(l) { if (typeof l === 'number') { return l >= min && l <= max ? l : undefined; } else { const name = l.toUpperCase(); return LogLevel[name]; } } exports.parseLogLevel = parseLogLevel; const DefaultLogFilter = (ll, tags) => { if (ll > exports.DefaultLogFilterConfigs.level) return false; if (tags.length === 0) return true; for (const t of tags) { if (exports.DefaultLogFilterConfigs.masks[t]) { return false; } } return true; }; exports.DefaultLogFilter = DefaultLogFilter; const _inspect = (obj) => (0, util_1.inspect)(obj, false, null, false); const DefaultLogPrinter = (obj, hint) => hint ? _inspect(obj) : ((0, util_1.inspect)(obj) + ` ::${hint}`); exports.DefaultLogPrinter = DefaultLogPrinter; exports.LoggerDefaults = { filter: exports.DefaultLogFilter, format: exports.DefaultLogFormatter, inspect: exports.DefaultLogPrinter, write: exports.DefaultLogWriter, }; const runtime = { LogLevel, ...exports.LoggerDefaults };