UNPKG

2.42 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var chek_1 = require("chek");
4var util_1 = require("util");
5var colurs_1 = require("colurs");
6var colurs = new colurs_1.Colurs();
7/**
8 * Logger
9 * : Formats and logs message.
10 *
11 * @param type the type of message to log.
12 * @param args rest param of log arguments.
13 */
14function logger(type) {
15 var args = [];
16 for (var _i = 1; _i < arguments.length; _i++) {
17 args[_i - 1] = arguments[_i];
18 }
19 var msg = args.shift();
20 var fn = chek_1.isFunction(chek_1.last(args)) ? args.pop() : chek_1.noop;
21 var meta = chek_1.isPlainObject(chek_1.last(args)) ? args.pop() : null;
22 var obj = {
23 type: type,
24 msg: null,
25 meta: meta
26 };
27 var formatters = chek_1.isString(msg) ? msg.match(/%/g) : null;
28 if (formatters && formatters.length)
29 msg = util_1.format.apply(void 0, [msg].concat(args));
30 else
31 msg = [msg].concat(args).join(' ');
32 if (type === 'error' && !(msg instanceof Error)) {
33 msg = new Error(msg);
34 var stack = msg.stack.split('\n');
35 var tmpMsg = stack.shift();
36 stack.shift();
37 stack.unshift(tmpMsg);
38 msg.stack = stack.join('\n');
39 }
40 // If any error just throw it.
41 if (msg instanceof Error) {
42 if (fn)
43 fn(msg, obj);
44 msg.stack = msg.stack.split('\n').map(function (s, i) {
45 if (i === 0)
46 return colurs.applyAnsi(s, _log.colors[type || 'error']);
47 return colurs.applyAnsi(s, 'gray');
48 }).join('\n');
49 throw msg;
50 }
51 obj.msg = msg;
52 fn(msg, obj);
53 if (meta) {
54 meta = util_1.inspect(meta, null, null, true);
55 msg += ('\n' + meta);
56 }
57 if (type && _log.colors[type])
58 msg = colurs.applyAnsi(type.toUpperCase() + ': ', _log.colors[type]) + msg;
59 process.stderr.write(msg + '\n');
60 return _log;
61}
62var _log = function () {
63 var args = [];
64 for (var _i = 0; _i < arguments.length; _i++) {
65 args[_i] = arguments[_i];
66 }
67 logger.apply(void 0, [null].concat(args));
68 return _log;
69};
70_log.colors = {
71 error: 'red',
72 warn: 'yellow',
73 info: 'green'
74};
75_log.colorize = true;
76_log.error = logger.bind(_log, 'error');
77_log.warn = logger.bind(_log, 'warn');
78_log.info = logger.bind(_log, 'info');
79_log.exit = process.exit;
80exports.log = _log;
81//# sourceMappingURL=logger.js.map
\No newline at end of file