1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var chek_1 = require("chek");
|
4 | var util_1 = require("util");
|
5 | var colurs_1 = require("colurs");
|
6 | var colurs = new colurs_1.Colurs();
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | function 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 |
|
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 | }
|
62 | var _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;
|
80 | exports.log = _log;
|
81 |
|
\ | No newline at end of file |