UNPKG

universal-logger-browser

Version:
115 lines (90 loc) 4.35 kB
'use strict'; exports.__esModule = true; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint no-console: 0 */ var _objectToCss = require('./object-to-css'); var _objectToCss2 = _interopRequireDefault(_objectToCss); var _styleableStyle = require('./styleable-style'); var _styleableStyle2 = _interopRequireDefault(_styleableStyle); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var noop = function noop() {}; var styleable = function styleable(options) { var _options = _extends({}, options), _options$colorized = _options.colorized, colorized = _options$colorized === undefined ? true : _options$colorized, _options$showSource = _options.showSource, showSource = _options$showSource === undefined ? true : _options$showSource, _options$showTimestam = _options.showTimestamp, showTimestamp = _options$showTimestam === undefined ? false : _options$showTimestam, _options$formatTimest = _options.formatTimestamp, formatTimestamp = _options$formatTimest === undefined ? function (t) { return new Date(t).toISOString(); } : _options$formatTimest; options = options || {}; options.style = options.style || {}; options.style.level = options.style.level || {}; var style = _extends({}, _styleableStyle2['default'], options.style, { level: _extends({}, _styleableStyle2['default'].level, options.style.level) }); return function (context, messages, next) { if (typeof next !== 'function') { next = noop; } if (typeof console === 'undefined') { next(); return; } var _context = _extends({}, context), namespace = _context.namespace, level = _context.level, _context$stackframes = _context.stackframes, stackframes = _context$stackframes === undefined ? [] : _context$stackframes; var timestamp = new Date().getTime(); var formatters = []; var styles = []; if (showTimestamp) { var str = typeof formatTimestamp === 'function' ? formatTimestamp(timestamp) : timestamp; if (colorized) { formatters.push('%c ' + str + ' %c'); styles.push(style.timestamp); styles.push(''); } else { formatters.push(str); } } if (level && level.name) { if (colorized) { var _str = level.name.toUpperCase(); formatters.push('%c' + _str + '%c'); var styledLevel = style.level[level.name] || ''; if ((typeof styledLevel === 'undefined' ? 'undefined' : _typeof(styledLevel)) === 'object') { styles.push((0, _objectToCss2['default'])(styledLevel)); } else { styles.push(String(styledLevel)); } styles.push(''); } else { formatters.push(level.name.toUpperCase()); } } if (namespace) { if (colorized) { formatters.push('%c' + namespace + '%c'); styles.push(style.name); styles.push(''); } else { formatters.push(namespace); } } messages = [formatters.join(' ')].concat(styles, messages); if (showSource && stackframes.length > 0) { var stackframeIndex = Math.min(4, stackframes.length - 1); var source = stackframes[stackframeIndex].source || ''; messages = messages.concat(source); } var log = console.log || noop; Function.prototype.apply.call(log, console, messages); next(); }; }; exports['default'] = styleable;