UNPKG

3.81 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.setPrinter = setPrinter;
7exports.log = exports.Logger = exports.PADDING = exports.debug = void 0;
8
9function _chalk() {
10 const data = _interopRequireDefault(require("chalk"));
11
12 _chalk = function () {
13 return data;
14 };
15
16 return data;
17}
18
19var _debug2 = _interopRequireDefault(require("debug"));
20
21function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
23let printer = null;
24const debug = (0, _debug2.default)("electron-builder");
25exports.debug = debug;
26
27function setPrinter(value) {
28 printer = value;
29}
30
31const PADDING = 2;
32exports.PADDING = PADDING;
33
34class Logger {
35 constructor(stream) {
36 this.stream = stream;
37
38 this.messageTransformer = it => it;
39 }
40
41 filePath(file) {
42 const cwd = process.cwd();
43 return file.startsWith(cwd) ? file.substring(cwd.length + 1) : file;
44 } // noinspection JSMethodCanBeStatic
45
46
47 get isDebugEnabled() {
48 return debug.enabled;
49 }
50
51 info(messageOrFields, message) {
52 this.doLog(message, messageOrFields, "info");
53 }
54
55 error(messageOrFields, message) {
56 this.doLog(message, messageOrFields, "error");
57 }
58
59 warn(messageOrFields, message) {
60 this.doLog(message, messageOrFields, "warn");
61 }
62
63 debug(fields, message) {
64 if (debug.enabled) {
65 this._doLog(message, fields, "debug");
66 }
67 }
68
69 doLog(message, messageOrFields, level) {
70 if (message === undefined) {
71 this._doLog(messageOrFields, null, level);
72 } else {
73 this._doLog(message, messageOrFields, level);
74 }
75 }
76
77 _doLog(message, fields, level) {
78 // noinspection SuspiciousInstanceOfGuard
79 if (message instanceof Error) {
80 message = message.stack || message.toString();
81 } else {
82 message = message.toString();
83 }
84
85 const levelIndicator = level === "error" ? "⨯" : "•";
86 const color = LEVEL_TO_COLOR[level];
87 this.stream.write(`${" ".repeat(PADDING)}${color(levelIndicator)} `);
88 this.stream.write(Logger.createMessage(this.messageTransformer(message, level), fields, level, color, PADDING + 2
89 /* level indicator and space */
90 ));
91 this.stream.write("\n");
92 }
93
94 static createMessage(message, fields, level, color, messagePadding = 0) {
95 if (fields == null) {
96 return message;
97 }
98
99 const fieldPadding = " ".repeat(Math.max(2, 16 - message.length));
100 let text = (level === "error" ? color(message) : message) + fieldPadding;
101 const fieldNames = Object.keys(fields);
102 let counter = 0;
103
104 for (const name of fieldNames) {
105 let fieldValue = fields[name];
106 let valuePadding = null;
107
108 if (fieldValue != null && typeof fieldValue === "string" && fieldValue.includes("\n")) {
109 valuePadding = " ".repeat(messagePadding + message.length + fieldPadding.length + 2);
110 fieldValue = "\n" + valuePadding + fieldValue.replace(/\n/g, `\n${valuePadding}`);
111 } else if (Array.isArray(fieldValue)) {
112 fieldValue = JSON.stringify(fieldValue);
113 } else if (typeof fieldValue === "object") {// fieldValue = safeStringifyJson(fieldValue)
114 }
115
116 text += `${color(name)}=${fieldValue}`;
117
118 if (++counter !== fieldNames.length) {
119 if (valuePadding == null) {
120 text += " ";
121 } else {
122 text += "\n" + valuePadding;
123 }
124 }
125 }
126
127 return text;
128 }
129
130 log(message) {
131 if (printer == null) {
132 this.stream.write(`${message}\n`);
133 } else {
134 printer(message);
135 }
136 }
137
138}
139
140exports.Logger = Logger;
141const LEVEL_TO_COLOR = {
142 info: _chalk().default.blue,
143 warn: _chalk().default.yellow,
144 error: _chalk().default.red,
145 debug: _chalk().default.white
146};
147const log = new Logger(process.stdout); exports.log = log;
148// __ts-babel@6.0.4
149//# sourceMappingURL=log.js.map
\No newline at end of file