UNPKG

containr

Version:

Docker Build scripts for npm

177 lines (138 loc) 4.44 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.backupDump = exports.logLevels = undefined; var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk); var _figlet = require('figlet'); var _figlet2 = _interopRequireDefault(_figlet); var _boxen = require('boxen'); var _boxen2 = _interopRequireDefault(_boxen); var _timeStamp = require('time-stamp'); var _timeStamp2 = _interopRequireDefault(_timeStamp); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const defaultFormat = (level, log, ts, meta) => `${ts}${level} ${log} ${meta}\n`; const logColors = { 0: _chalk2.default.bold.red, 1: _chalk2.default.yellow.bold, 2: _chalk2.default.green.bold, 3: _chalk2.default.white.bold, 4: _chalk2.default.white, 5: _chalk2.default.gray }; const logLevels = exports.logLevels = { error: 0, warn: 1, banner: 2, info: 3, verbose: 4, debug: 5 }; const logBanners = { error: _chalk2.default.bgRed.black('ERR'), warn: _chalk2.default.bgYellow.black('WARN') }; const defaultBoxOptions = { padding: 1, borderColor: 'red', borderStyle: 'double-single', dimBorder: false, margin: 0, float: 'left', backgroundColor: 'red', align: 'center' }; const curLevel = logLevels.info; const oldLog = console.log; const getTimestamp = (format = 'HH:mm:ss') => { return _chalk2.default.grey('[') + _chalk2.default.white((0, _timeStamp2.default)(format)) + _chalk2.default.grey(']'); }; const dumpObject = (obj = null) => { if (!obj) return ''; try { let str = (0, _stringify2.default)(obj, null, 4); return str; } catch (er) { oldLog(obj); return '[json error]'; } }; const backupDump = exports.backupDump = (obj = null) => { return (0, _keys2.default)(obj).join(', '); }; class Logger { constructor() { for (const level of (0, _keys2.default)(logLevels)) { this[level] = (msg, ...args) => this.logmsg(logLevels[level], msg, ...args); } this.levels = logLevels; this.curLevel = logLevels.info; // this.log = this.log.apply(this); return this; } // info (log, ...args) { // return this.log(logLevels.info, ...args); // } setLevel(level) { if (!/\d+/.test(level)) { if (!level in logLevels) { this.error('Invalid logging level ' + level); return false; } level = logLevels[level]; } else { if (!level > 0 && level <= (0, _keys2.default)(logLevels).length) { this.error(`Invalid logging level: ${level}`); return false; } } this.info('Set logging level to ' + (0, _keys2.default)(logLevels)[level]); this.curLevel = level; return this; } box(log, options = {}) { let box = (0, _boxen2.default)(log, (0, _assign2.default)(defaultBoxOptions, options)); process.stdout.write(box + '\n'); return this; } text(log, options = {}) { let textMessage = _figlet2.default.textSync(log, { horizontalLayout: 'default', verticalLayout: 'default' }); process.stdout.write(_chalk2.default.white.bold(textMessage) + '\n'); return this; } info(log, ...meta) { return this.logmsg(logLevels.info, log, ...meta); } logmsg(level, log, ...meta) { if (level > this.curLevel) return this; log = log instanceof Object ? dumpObject(log) : log; meta = meta.map(dumpObject).join(' '); let timeStamp = getTimestamp(); if (typeof logColors[level] === 'function') { log = logColors[level](log); meta = logColors[level](meta); } else { console.error(`Not a function - ${logColors[level]} for level ${level} in ${logColors}`); } // meta = meta ? dumpObject(meta) : ''; level = (0, _keys2.default)(logLevels)[level]; let levelBanner = level in logBanners ? ' ' + logBanners[level] : ''; var logLine = defaultFormat(levelBanner, log, timeStamp, meta); process.stdout.write(logLine); return this; } } const l = new Logger(); console.log = l.info; exports.default = l; //# sourceMappingURL=logger.js.map