1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | const chalk = require("chalk");
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | var Verbosity;
|
14 |
|
15 | (function (Verbosity) {
|
16 | Verbosity["debug"] = "debug";
|
17 | Verbosity["info"] = "info";
|
18 | Verbosity["warn"] = "warn";
|
19 | Verbosity["error"] = "error";
|
20 | })(Verbosity = exports.Verbosity || (exports.Verbosity = {}));
|
21 |
|
22 | class Logger {
|
23 | constructor(verbosity = Verbosity.info) {
|
24 | this.verbosity = verbosity;
|
25 | }
|
26 |
|
27 | error(error) {
|
28 | const {
|
29 | message,
|
30 | stack
|
31 | } = error;
|
32 | this.log(colors => `${colors.bold.red('[error]')} ${message}`, {
|
33 | verbosity: Verbosity.error,
|
34 | method: 'error'
|
35 | });
|
36 |
|
37 | if (stack) {
|
38 | this.log(colors => colors.dim(stack), {
|
39 | verbosity: Verbosity.debug,
|
40 | method: 'log'
|
41 | });
|
42 | }
|
43 | }
|
44 |
|
45 | info(message) {
|
46 | this.log(message, {
|
47 | verbosity: Verbosity.info,
|
48 | method: 'log'
|
49 | });
|
50 | }
|
51 |
|
52 | warn(message) {
|
53 | this.log(message, {
|
54 | verbosity: Verbosity.warn,
|
55 | method: 'warn'
|
56 | });
|
57 | }
|
58 |
|
59 | debug(message) {
|
60 | this.log(message, {
|
61 | verbosity: Verbosity.debug,
|
62 | method: 'log'
|
63 | });
|
64 | }
|
65 |
|
66 | log(message, {
|
67 | verbosity,
|
68 | method = 'log'
|
69 | }) {
|
70 | const messageLevel = Object.keys(Verbosity).findIndex(enumKey => enumKey === verbosity);
|
71 | const loggerLevel = Object.keys(Verbosity).findIndex(enumKey => enumKey === this.verbosity);
|
72 |
|
73 | if (messageLevel < loggerLevel) {
|
74 | return;
|
75 | }
|
76 |
|
77 |
|
78 | console[method](messageString(message));
|
79 | }
|
80 |
|
81 | }
|
82 |
|
83 | exports.default = Logger;
|
84 |
|
85 | function messageString(message) {
|
86 | return typeof message === 'function' ? message(chalk) : message;
|
87 | } |
\ | No newline at end of file |