universal-logger-browser
Version:
Browser plugins for universal logger.
115 lines (90 loc) • 4.35 kB
JavaScript
;
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;