1 | (function (global, factory) {
|
2 | if (typeof define === "function" && define.amd) {
|
3 | define(['module', 'exports'], factory);
|
4 | } else if (typeof exports !== "undefined") {
|
5 | factory(module, exports);
|
6 | } else {
|
7 | var mod = {
|
8 | exports: {}
|
9 | };
|
10 | factory(mod, mod.exports);
|
11 | global.prefix = mod.exports;
|
12 | }
|
13 | })(this, function (module, exports) {
|
14 | 'use strict';
|
15 |
|
16 | Object.defineProperty(exports, "__esModule", {
|
17 | value: true
|
18 | });
|
19 | var merge = function merge(target) {
|
20 | for (var i = 1; i < arguments.length; i += 1) {
|
21 | for (var prop in arguments[i]) {
|
22 | if (Object.prototype.hasOwnProperty.call(arguments[i], prop)) {
|
23 | target[prop] = arguments[i][prop];
|
24 | }
|
25 | }
|
26 | }
|
27 | return target;
|
28 | };
|
29 |
|
30 | var defaults = {
|
31 | template: '[%t] %l:',
|
32 | timestampFormatter: function timestampFormatter(date) {
|
33 | return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, '$1');
|
34 | },
|
35 | levelFormatter: function levelFormatter(level) {
|
36 | return level.toUpperCase();
|
37 | },
|
38 | nameFormatter: function nameFormatter(name) {
|
39 | return name || 'root';
|
40 | }
|
41 | };
|
42 |
|
43 | var loglevel = void 0;
|
44 | var originalFactory = void 0;
|
45 | var pluginFactory = void 0;
|
46 |
|
47 | var apply = function apply(logger, options) {
|
48 | if (!logger || !logger.getLogger) {
|
49 | throw new TypeError('Argument is not a root loglevel object');
|
50 | }
|
51 |
|
52 | if (loglevel && pluginFactory !== logger.methodFactory) {
|
53 | throw new Error("You can't reassign a plugin after appling another plugin");
|
54 | }
|
55 |
|
56 | loglevel = logger;
|
57 |
|
58 | options = merge({}, defaults, options);
|
59 |
|
60 | originalFactory = originalFactory || logger.methodFactory;
|
61 |
|
62 | pluginFactory = function methodFactory(methodName, logLevel, loggerName) {
|
63 | var rawMethod = originalFactory(methodName, logLevel, loggerName);
|
64 |
|
65 | var hasTimestamp = options.template.indexOf('%t') !== -1;
|
66 | var hasLevel = options.template.indexOf('%l') !== -1;
|
67 | var hasName = options.template.indexOf('%n') !== -1;
|
68 |
|
69 | return function () {
|
70 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
71 | args[_key] = arguments[_key];
|
72 | }
|
73 |
|
74 | var content = options.template;
|
75 | if (hasTimestamp) content = content.replace(/%t/, options.timestampFormatter(new Date()));
|
76 | if (hasLevel) content = content.replace(/%l/, options.levelFormatter(methodName));
|
77 | if (hasName) content = content.replace(/%n/, options.nameFormatter(loggerName));
|
78 |
|
79 | if (args.length && typeof args[0] === 'string') {
|
80 |
|
81 | args[0] = content + ' ' + args[0];
|
82 | } else {
|
83 | args.unshift(content);
|
84 | }
|
85 | rawMethod.apply(undefined, args);
|
86 | };
|
87 | };
|
88 |
|
89 | logger.methodFactory = pluginFactory;
|
90 | logger.setLevel(logger.getLevel());
|
91 | return logger;
|
92 | };
|
93 |
|
94 | var disable = function disable() {
|
95 | if (!loglevel) {
|
96 | throw new Error("You can't disable a not appled plugin");
|
97 | }
|
98 |
|
99 | if (pluginFactory !== loglevel.methodFactory) {
|
100 | throw new Error("You can't disable a plugin after appling another plugin");
|
101 | }
|
102 |
|
103 | loglevel.methodFactory = originalFactory;
|
104 | loglevel.setLevel(loglevel.getLevel());
|
105 | originalFactory = undefined;
|
106 | loglevel = undefined;
|
107 | };
|
108 |
|
109 | var prefix = {};
|
110 | prefix.apply = apply;
|
111 | prefix.disable = disable;
|
112 |
|
113 | var save = typeof window !== 'undefined' ? window.prefix : undefined;
|
114 |
|
115 | prefix.noConflict = function () {
|
116 | if (typeof window !== 'undefined' && window.prefix === prefix) {
|
117 | window.prefix = save;
|
118 | }
|
119 | return prefix;
|
120 | };
|
121 |
|
122 | exports.default = prefix;
|
123 | module.exports = exports['default'];
|
124 | });
|