logalize
Version:
A better window.console
229 lines (197 loc) • 7.99 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _browserAdapter = require('./browserAdapter');
var _browserAdapter2 = _interopRequireDefault(_browserAdapter);
var _formatter = require('./formatter');
var _formatter2 = _interopRequireDefault(_formatter);
var _namespaceManager = require('./namespaceManager');
var _namespaceManager2 = _interopRequireDefault(_namespaceManager);
var _stylesheet = require('./stylesheet.js');
var _stylesheet2 = _interopRequireDefault(_stylesheet);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function Logalize() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
Logalize.print.apply(Logalize, ['log'].concat(args));
}
Object.assign(Logalize, {
init: function init() {
this.configure();
},
configure: function configure() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$enabled = _ref.enabled,
enabled = _ref$enabled === undefined ? true : _ref$enabled,
_ref$enableFormatting = _ref.enableFormatting,
enableFormatting = _ref$enableFormatting === undefined ? true : _ref$enableFormatting,
_ref$collapseNamespac = _ref.collapseNamespaces,
collapseNamespaces = _ref$collapseNamespac === undefined ? false : _ref$collapseNamespac;
Object.assign(this, {
enabled: enabled,
enableFormatting: enableFormatting,
collapseNamespaces: collapseNamespaces,
formattableMethods: ['log', 'info', 'debug', 'warn', 'error', 'focus']
});
if (this.enableFormatting) {
this.appendStylesToDOM();
} else {
this.removeStylesFromDOM();
}
_namespaceManager2.default.configure({
loggingEnabled: this.isEnabled(),
collapsed: this.collapseNamespaces
});
},
namespace: function namespace() {
var _ref2;
var returnValue = _namespaceManager2.default.setNamespace.apply(_namespaceManager2.default, arguments);
return typeof (_ref2 = arguments.length - 1, arguments.length <= _ref2 ? undefined : arguments[_ref2]) === 'function' ? returnValue : this;
},
log: function log() {
this.print.apply(this, ['log'].concat(Array.prototype.slice.call(arguments)));
},
debug: function debug() {
this.print.apply(this, ['debug'].concat(Array.prototype.slice.call(arguments)));
},
info: function info() {
this.print.apply(this, ['info'].concat(Array.prototype.slice.call(arguments)));
},
warn: function warn() {
this.print.apply(this, ['warn'].concat(Array.prototype.slice.call(arguments)));
},
error: function error() {
this.print.apply(this, ['error'].concat(Array.prototype.slice.call(arguments)));
},
assert: function assert() {
this.print.apply(this, ['assert'].concat(Array.prototype.slice.call(arguments)));
},
count: function count(label) {
this.print('count', label);
},
dir: function dir(obj) {
this.print('dir', obj);
},
dirxml: function dirxml(obj) {
this.print('dirxml', obj);
},
profile: function profile() {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
var func = args.pop();
if (typeof func === 'function') {
if (this.isEnabled()) _browserAdapter2.default.profile(args[0]);
var returnValue = func();
if (this.isEnabled()) this.profileEnd();
return returnValue;
} else {
if (this.isEnabled()) _browserAdapter2.default.profile(args[0]);
}
},
profileEnd: function profileEnd() {
if (this.isEnabled()) _browserAdapter2.default.profileEnd();
},
time: function time() {
for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
var func = args.pop();
if (typeof func === 'function') {
if (this.isEnabled()) _browserAdapter2.default.time(args[0]);
var returnValue = func();
if (this.isEnabled()) this.timeEnd(args[0]);
return returnValue;
} else {
if (this.isEnabled()) _browserAdapter2.default.time(args[0]);
}
},
timeEnd: function timeEnd(label) {
if (this.isEnabled()) _browserAdapter2.default.timeEnd(label);
},
timeStamp: function timeStamp(label) {
if (this.isEnabled()) _browserAdapter2.default.timeStamp(label);
},
trace: function trace(obj) {
this.print('trace', obj);
},
group: function group() {
for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}
var func = args.pop();
if (typeof func === 'function') {
if (this.isEnabled()) _browserAdapter2.default.group.apply(_browserAdapter2.default, _toConsumableArray(args));
var returnValue = func();
if (this.isEnabled()) this.groupEnd();
return returnValue;
} else {
if (this.isEnabled()) _browserAdapter2.default.group.apply(_browserAdapter2.default, _toConsumableArray(args).concat([func]));
}
},
groupCollapsed: function groupCollapsed() {
for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
args[_key5] = arguments[_key5];
}
var func = args.pop();
if (typeof func === 'function') {
if (this.isEnabled()) _browserAdapter2.default.groupCollapsed.apply(_browserAdapter2.default, _toConsumableArray(args));
var returnValue = func();
if (this.isEnabled()) this.groupEnd();
return returnValue;
} else {
if (this.isEnabled()) _browserAdapter2.default.groupCollapsed.apply(_browserAdapter2.default, _toConsumableArray(args).concat([func]));
}
},
groupEnd: function groupEnd() {
if (this.isEnabled()) _browserAdapter2.default.groupEnd();
},
print: function print(method) {
for (var _len6 = arguments.length, args = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {
args[_key6 - 1] = arguments[_key6];
}
if (!this.isEnabled()) return;
if (this.formattableMethods.indexOf(method) > -1 && this.enableFormatting) {
args = _formatter2.default.format(args);
}
_namespaceManager2.default.group();
_browserAdapter2.default[method].apply(_browserAdapter2.default, _toConsumableArray(args));
},
// Enable / disable
enable: function enable() {
if (localStorage) localStorage.setItem('logalizeEnabled', 'true');
_namespaceManager2.default.configure({ loggingEnabled: this.isEnabled() });
},
disable: function disable() {
if (localStorage) localStorage.setItem('logalizeEnabled', 'false');
_namespaceManager2.default.configure({ loggingEnabled: this.isEnabled() });
},
// Private
isEnabled: function isEnabled() {
if (localStorage && localStorage.logalizeEnabled) {
return localStorage.logalizeEnabled !== 'false';
} else {
return this.enabled;
}
},
performConsoleAction: function performConsoleAction(action, args) {
_namespaceManager2.default.clear();
return _browserAdapter2.default[action].apply(_browserAdapter2.default, _toConsumableArray(args));
},
appendStylesToDOM: function appendStylesToDOM() {
if (document.getElementById('logalize-stylesheet')) return;
var styleEl = document.createElement('style');
styleEl.id = 'logalize-stylesheet';
styleEl.innerHTML = _stylesheet2.default;
document.head.insertBefore(styleEl, document.head.firstChild);
},
removeStylesFromDOM: function removeStylesFromDOM() {
var stylesheetEl = document.getElementById('logalize-stylesheet');
if (!stylesheetEl) return;
stylesheetEl.remove();
}
});
exports.default = Logalize;
;