universal-logger-browser
Version:
Browser plugins for universal logger.
78 lines (60 loc) • 2.7 kB
JavaScript
;
exports.__esModule = true;
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 defaultFormatter = function defaultFormatter(context, messages) {
var _context = _extends({}, context),
level = _context.level,
namespace = _context.namespace;
var formatters = [];
if (level && level.name) {
formatters.push(level.name.toUpperCase());
}
if (namespace) {
formatters.push(namespace);
}
messages = [formatters.join(' ')].concat(messages);
return messages;
};
var nativeConsoleMethods = {
trace: typeof console !== 'undefined' && console.trace,
debug: typeof console !== 'undefined' && console.debug,
info: typeof console !== 'undefined' && console.info,
warn: typeof console !== 'undefined' && console.warn,
error: typeof console !== 'undefined' && console.error
};
var noop = function noop() {};
var minimal = function minimal(options) {
var _options = _extends({}, options),
_options$useNativeCon = _options.useNativeConsoleMethods,
useNativeConsoleMethods = _options$useNativeCon === undefined ? true : _options$useNativeCon,
_options$showSource = _options.showSource,
showSource = _options$showSource === undefined ? true : _options$showSource,
_options$formatter = _options.formatter,
formatter = _options$formatter === undefined ? defaultFormatter : _options$formatter;
if (typeof formatter !== 'function') {
formatter = function formatter(context, messages) {
return messages;
};
}
return function (context, messages) {
var next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : noop;
if (typeof next !== 'function') {
next = noop;
}
if (typeof console === 'undefined') {
next();
return;
}
messages = formatter(context, messages);
if (showSource && context.stackframes.length > 0) {
var stackframeIndex = Math.min(4, context.stackframes.length - 1);
var source = context.stackframes[stackframeIndex].source || '';
messages = messages.concat(source);
}
var log = useNativeConsoleMethods ? nativeConsoleMethods[context.level.name] || console.log || noop : console.log || noop;
Function.prototype.apply.call(log, console, messages);
next();
};
};
exports['default'] = minimal;