liusuyi
2023-04-24 4737f1e038743ced243c9e52423404d9034d6107
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = void 0;
/* eslint-disable no-console */
const figures_1 = require("./figures");
const logger_constants_1 = require("./logger.constants");
const colorette_1 = require("./colorette");
/**
 * A internal logger for using in the verbose renderer mostly.
 */
class Logger {
    constructor(options) {
        this.options = options;
    }
    fail(message) {
        message = this.parseMessage(logger_constants_1.LogLevels.FAILED, message);
        console.error(message);
    }
    skip(message) {
        message = this.parseMessage(logger_constants_1.LogLevels.SKIPPED, message);
        console.info(message);
    }
    success(message) {
        message = this.parseMessage(logger_constants_1.LogLevels.SUCCESS, message);
        console.log(message);
    }
    data(message) {
        message = this.parseMessage(logger_constants_1.LogLevels.DATA, message);
        console.info(message);
    }
    start(message) {
        message = this.parseMessage(logger_constants_1.LogLevels.STARTED, message);
        console.log(message);
    }
    title(message) {
        message = this.parseMessage(logger_constants_1.LogLevels.TITLE, message);
        console.info(message);
    }
    retry(message) {
        message = this.parseMessage(logger_constants_1.LogLevels.RETRY, message);
        console.warn(message);
    }
    rollback(message) {
        message = this.parseMessage(logger_constants_1.LogLevels.ROLLBACK, message);
        console.warn(message);
    }
    parseMessage(level, message) {
        // parse multi line messages
        let multiLineMessage;
        try {
            multiLineMessage = message.split('\n');
        }
        catch /* istanbul ignore next */ {
            multiLineMessage = [message];
        }
        multiLineMessage = multiLineMessage.map((msg) => {
            // format messages
            return this.logColoring({
                level,
                message: msg
            });
        });
        // join back multi line messages
        message = multiLineMessage.join('\n');
        return message;
    }
    logColoring({ level, message }) {
        var _a, _b, _c, _d, _e, _f, _g, _h;
        let icon;
        // do the coloring
        let coloring = (input) => {
            return input;
        };
        switch (level) {
            case logger_constants_1.LogLevels.FAILED:
                /* istanbul ignore if */
                if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.useIcons) {
                    coloring = colorette_1.default.red;
                    icon = figures_1.figures.cross;
                }
                else {
                    icon = this.wrapInBrackets(level);
                }
                break;
            case logger_constants_1.LogLevels.SKIPPED:
                /* istanbul ignore if */
                if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.useIcons) {
                    coloring = colorette_1.default.yellow;
                    icon = figures_1.figures.arrowDown;
                }
                else {
                    icon = this.wrapInBrackets(level);
                }
                break;
            case logger_constants_1.LogLevels.SUCCESS:
                /* istanbul ignore if */
                if ((_c = this.options) === null || _c === void 0 ? void 0 : _c.useIcons) {
                    coloring = colorette_1.default.green;
                    icon = figures_1.figures.tick;
                }
                else {
                    icon = this.wrapInBrackets(level);
                }
                break;
            case logger_constants_1.LogLevels.DATA:
                /* istanbul ignore if */
                if ((_d = this.options) === null || _d === void 0 ? void 0 : _d.useIcons) {
                    icon = figures_1.figures.arrowRight;
                }
                else {
                    icon = this.wrapInBrackets(level);
                }
                break;
            case logger_constants_1.LogLevels.STARTED:
                /* istanbul ignore if */
                if ((_e = this.options) === null || _e === void 0 ? void 0 : _e.useIcons) {
                    icon = figures_1.figures.pointer;
                }
                else {
                    icon = this.wrapInBrackets(level);
                }
                break;
            case logger_constants_1.LogLevels.TITLE:
                /* istanbul ignore if */
                if ((_f = this.options) === null || _f === void 0 ? void 0 : _f.useIcons) {
                    icon = figures_1.figures.checkboxOn;
                }
                else {
                    icon = this.wrapInBrackets(level);
                }
                break;
            case logger_constants_1.LogLevels.RETRY:
                /* istanbul ignore if */
                if ((_g = this.options) === null || _g === void 0 ? void 0 : _g.useIcons) {
                    coloring = colorette_1.default.yellow;
                    icon = figures_1.figures.pointer;
                }
                else {
                    icon = this.wrapInBrackets(level);
                }
                break;
            case logger_constants_1.LogLevels.ROLLBACK:
                /* istanbul ignore if */
                if ((_h = this.options) === null || _h === void 0 ? void 0 : _h.useIcons) {
                    coloring = colorette_1.default.red;
                    icon = figures_1.figures.arrowLeft;
                }
                else {
                    icon = this.wrapInBrackets(level);
                }
                break;
        }
        return coloring(`${icon} ${message}`);
    }
    wrapInBrackets(level) {
        return `[${level}]`;
    }
}
exports.Logger = Logger;