topkat-utils 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/index.js +8 -12
- package/dist/index.js.map +1 -1
- package/dist/src/array-utils.js +23 -45
- package/dist/src/array-utils.js.map +1 -1
- package/dist/src/clean-stack-trace.js +7 -7
- package/dist/src/clean-stack-trace.js.map +1 -1
- package/dist/src/config.js +6 -17
- package/dist/src/config.js.map +1 -1
- package/dist/src/date-utils.js +89 -139
- package/dist/src/date-utils.js.map +1 -1
- package/dist/src/env-utils.js +4 -4
- package/dist/src/env-utils.js.map +1 -1
- package/dist/src/error-utils.js +39 -116
- package/dist/src/error-utils.js.map +1 -1
- package/dist/src/isset.js +2 -6
- package/dist/src/isset.js.map +1 -1
- package/dist/src/logger-utils.js +138 -267
- package/dist/src/logger-utils.js.map +1 -1
- package/dist/src/loop-utils.js +35 -121
- package/dist/src/loop-utils.js.map +1 -1
- package/dist/src/math-utils.js +8 -24
- package/dist/src/math-utils.js.map +1 -1
- package/dist/src/mongo-utils.js +6 -20
- package/dist/src/mongo-utils.js.map +1 -1
- package/dist/src/object-utils.js +74 -114
- package/dist/src/object-utils.js.map +1 -1
- package/dist/src/regexp-utils.js +6 -7
- package/dist/src/regexp-utils.js.map +1 -1
- package/dist/src/remove-circular-json-stringify.js +4 -5
- package/dist/src/remove-circular-json-stringify.js.map +1 -1
- package/dist/src/string-utils.js +49 -107
- package/dist/src/string-utils.js.map +1 -1
- package/dist/src/tests-utils.js +19 -22
- package/dist/src/tests-utils.js.map +1 -1
- package/dist/src/timer-utils.js +37 -121
- package/dist/src/timer-utils.js.map +1 -1
- package/dist/src/transaction-utils.js +44 -129
- package/dist/src/transaction-utils.js.map +1 -1
- package/dist/src/validation-utils.js +79 -133
- package/dist/src/validation-utils.js.map +1 -1
- package/dist/src/wtf-utils.js +35 -40
- package/dist/src/wtf-utils.js.map +1 -1
- package/package.json +4 -4
- package/src/config.ts +1 -1
- package/tsconfig.json +1 -1
package/dist/src/logger-utils.js
CHANGED
|
@@ -1,37 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
15
|
-
if (ar || !(i in from)) {
|
|
16
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
17
|
-
ar[i] = from[i];
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
|
-
};
|
|
22
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
3
|
exports.dim = exports.cliProgressBar = exports.stringifyExtraInfos = exports.stringifyInstanceOfError = exports.logErrPrivate = exports.C = exports.logger = void 0;
|
|
24
4
|
//----------------------------------------
|
|
25
5
|
// LOGGER
|
|
26
6
|
//----------------------------------------
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
7
|
+
const config_1 = require("./config");
|
|
8
|
+
const isset_1 = require("./isset");
|
|
9
|
+
const remove_circular_json_stringify_1 = require("./remove-circular-json-stringify");
|
|
10
|
+
const clean_stack_trace_1 = require("./clean-stack-trace");
|
|
31
11
|
exports.logger = {
|
|
32
|
-
log
|
|
33
|
-
|
|
34
|
-
var preprocessLog = (0, config_1.configFn)().preprocessLog;
|
|
12
|
+
log(str, type = 'log') {
|
|
13
|
+
const { preprocessLog } = (0, config_1.configFn)();
|
|
35
14
|
if (typeof preprocessLog === 'function')
|
|
36
15
|
str = preprocessLog(str) || str;
|
|
37
16
|
if ((0, isset_1.isset)(console[type]))
|
|
@@ -40,45 +19,43 @@ exports.logger = {
|
|
|
40
19
|
console.warn(str);
|
|
41
20
|
else
|
|
42
21
|
console.log(str);
|
|
43
|
-
exports.logger.raw.push(str +
|
|
22
|
+
exports.logger.raw.push(str + `\n`);
|
|
44
23
|
exports.logger.raw = exports.logger.raw.slice(exports.logger.raw.length - (0, config_1.configFn)().nbOfLogsToKeep, exports.logger.raw.length);
|
|
45
24
|
},
|
|
46
25
|
/**
|
|
47
26
|
* @param {String[]|String} inputLogs
|
|
48
27
|
*/
|
|
49
|
-
toHtml
|
|
50
|
-
if (inputLogs === void 0) { inputLogs = __spreadArray([], exports.logger.raw, true); }
|
|
28
|
+
toHtml(inputLogs = [...exports.logger.raw]) {
|
|
51
29
|
if (!Array.isArray(inputLogs))
|
|
52
30
|
inputLogs = [inputLogs];
|
|
53
|
-
|
|
54
|
-
2:
|
|
55
|
-
32:
|
|
56
|
-
31:
|
|
57
|
-
33:
|
|
58
|
-
35:
|
|
59
|
-
36:
|
|
60
|
-
34:
|
|
31
|
+
const code2css = {
|
|
32
|
+
2: `opacity:.5`,
|
|
33
|
+
32: `color:#679933`,
|
|
34
|
+
31: `color:#A8383B`,
|
|
35
|
+
33: `color:#D7941C`,
|
|
36
|
+
35: `color:#C21949`,
|
|
37
|
+
36: `color:#128C6D`,
|
|
38
|
+
34: `color:#1B568B`, // blue
|
|
61
39
|
};
|
|
62
|
-
|
|
63
|
-
inputLogs.join('<br/>').split('\x1b[').forEach(
|
|
40
|
+
let htmlLogs = '';
|
|
41
|
+
inputLogs.join('<br/>').split('\x1b[').forEach((bit, i) => {
|
|
64
42
|
// the first doesn't have a preceding (may be undef)
|
|
65
43
|
if (bit) {
|
|
66
44
|
if (i !== 0) {
|
|
67
|
-
|
|
45
|
+
const [, code, R, G, B, content] = bit.match(/(^\d\d?)(?:;|m)(?:\d;(\d+);(\d+);(\d+)m)?(.*$)/) || [];
|
|
68
46
|
if (content) {
|
|
69
|
-
|
|
70
|
-
htmlLogs += (0, isset_1.isset)(style) ?
|
|
47
|
+
const style = !(0, isset_1.isset)(R) ? (0, isset_1.isset)(code) ? code2css[code] : undefined : `color:rgb(${R},${G},${B})`;
|
|
48
|
+
htmlLogs += (0, isset_1.isset)(style) ? `<span style='${style}'>${content.replace(/\n/g, '<br>')}</span>` : content.replace(/\n/g, '<br>');
|
|
71
49
|
}
|
|
72
50
|
}
|
|
73
51
|
else
|
|
74
52
|
htmlLogs += bit.replace(/\n/g, '<br>');
|
|
75
53
|
}
|
|
76
54
|
});
|
|
77
|
-
return
|
|
55
|
+
return `<div style='color:#ccc'>${htmlLogs}<br></div>`;
|
|
78
56
|
},
|
|
79
|
-
toText
|
|
80
|
-
|
|
81
|
-
var str = Array.isArray(inputLogs) ? inputLogs.join('\n') : inputLogs;
|
|
57
|
+
toText(inputLogs = [...exports.logger.raw]) {
|
|
58
|
+
const str = Array.isArray(inputLogs) ? inputLogs.join('\n') : inputLogs;
|
|
82
59
|
return str.replace(/\x1b\[.*?m/g, '');
|
|
83
60
|
},
|
|
84
61
|
raw: [],
|
|
@@ -92,247 +69,153 @@ exports.logger = {
|
|
|
92
69
|
// * or C.gradientize(myLongString)
|
|
93
70
|
*/
|
|
94
71
|
exports.C = {
|
|
95
|
-
dim:
|
|
96
|
-
green:
|
|
97
|
-
red:
|
|
98
|
-
yellow:
|
|
99
|
-
grey:
|
|
100
|
-
magenta:
|
|
101
|
-
cyan:
|
|
102
|
-
blue:
|
|
103
|
-
primary:
|
|
104
|
-
|
|
105
|
-
return exports.C.rgb
|
|
72
|
+
dim: str => exports.C.output(2, str),
|
|
73
|
+
green: str => exports.C.output(32, str),
|
|
74
|
+
red: str => exports.C.output(31, str),
|
|
75
|
+
yellow: str => exports.C.output(33, str),
|
|
76
|
+
grey: str => exports.C.output(2, str),
|
|
77
|
+
magenta: str => exports.C.output(35, str),
|
|
78
|
+
cyan: str => exports.C.output(36, str),
|
|
79
|
+
blue: str => exports.C.output(34, str),
|
|
80
|
+
primary: str => {
|
|
81
|
+
const primary = (0, config_1.configFn)().terminal.theme.primary;
|
|
82
|
+
return exports.C.rgb(...primary) + str + exports.C.reset;
|
|
106
83
|
},
|
|
107
84
|
reset: '\x1b[0m',
|
|
108
|
-
output:
|
|
109
|
-
if (str === void 0) { str = ''; }
|
|
110
|
-
return (0, config_1.configFn)().terminal.noColor ? str : "\u001B[".concat(code, "m").concat(str, "\u001B[0m");
|
|
111
|
-
},
|
|
85
|
+
output: (code, str = '') => (0, config_1.configFn)().terminal.noColor ? str : `\x1b[${code}m${str}\x1b[0m`,
|
|
112
86
|
// true RGB colors B-*
|
|
113
|
-
rgb:
|
|
114
|
-
|
|
115
|
-
if (b === void 0) { b = 0; }
|
|
116
|
-
return (0, config_1.configFn)().terminal.noColor || !(0, isset_1.isset)(r, g, b) ? '' : "\u001B[38;2;".concat(r, ";").concat(g, ";").concat(b, "m");
|
|
117
|
-
},
|
|
118
|
-
bg: function (r, g, b) { return (0, config_1.configFn)().terminal.noColor || !(0, isset_1.isset)(r, g, b) ? '' : "".concat('\x1b[', "48;2;").concat(r, ";").concat(g, ";").concat(b, "m"); },
|
|
87
|
+
rgb: (r, g = 0, b = 0) => (0, config_1.configFn)().terminal.noColor || !(0, isset_1.isset)(r, g, b) ? '' : `\x1b[38;2;${r};${g};${b}m`,
|
|
88
|
+
bg: (r, g, b) => (0, config_1.configFn)().terminal.noColor || !(0, isset_1.isset)(r, g, b) ? '' : `${'\x1b['}48;2;${r};${g};${b}m`,
|
|
119
89
|
/** Output a line of title */
|
|
120
|
-
line
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (clr === void 0) { clr = (0, config_1.configFn)().terminal.theme.primary; }
|
|
124
|
-
if (char === void 0) { char = '='; }
|
|
125
|
-
if (paddingX === void 0) { paddingX = (0, config_1.configFn)().terminal.theme.paddingX; }
|
|
126
|
-
var padX = ' '.repeat(paddingX);
|
|
127
|
-
this.log('\u00A0\n' + padX + this.rgb.apply(this, clr) + (title + ' ').padEnd(length, char) + this.reset + padX + '\u00A0\n');
|
|
90
|
+
line(title = '', length = (0, config_1.configFn)().terminal.theme.pageWidth, clr = (0, config_1.configFn)().terminal.theme.primary, char = '=', paddingX = (0, config_1.configFn)().terminal.theme.paddingX) {
|
|
91
|
+
const padX = ' '.repeat(paddingX);
|
|
92
|
+
this.log('\u00A0\n' + padX + this.rgb(...clr) + (title + ' ').padEnd(length, char) + this.reset + padX + '\u00A0\n');
|
|
128
93
|
},
|
|
129
94
|
/** Eg: ['cell1', 'cell2', 'cell3'], [25, 15] will start cell2 at 25 and cell 3 at 25 + 15
|
|
130
95
|
* @param {Array} limits default divide the viewport
|
|
131
96
|
*/
|
|
132
|
-
cols
|
|
133
|
-
if (limits === void 0) { limits = []; }
|
|
134
|
-
if (clr === void 0) { clr = (0, config_1.configFn)().terminal.theme.fontColor; }
|
|
135
|
-
if (paddingX === void 0) { paddingX = (0, config_1.configFn)().terminal.theme.paddingX; }
|
|
97
|
+
cols(strings, limits = [], clr = (0, config_1.configFn)().terminal.theme.fontColor, paddingX = (0, config_1.configFn)().terminal.theme.paddingX) {
|
|
136
98
|
if (!limits.length) {
|
|
137
|
-
|
|
138
|
-
limits = Array(strings.length - 1).fill(2).map(
|
|
99
|
+
const colWidth = Math.round((0, config_1.configFn)().terminal.theme.pageWidth / strings.length);
|
|
100
|
+
limits = Array(strings.length - 1).fill(2).map((itm, i) => colWidth * i + 1);
|
|
139
101
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
var realLimit = limits[i] + charLength - realCharLength;
|
|
102
|
+
const str = strings.reduce((glob, str = '', i) => {
|
|
103
|
+
const realCharLength = str.toString().replace(/\x1b\[.*?m/, '').length;
|
|
104
|
+
const charLength = str.toString().length;
|
|
105
|
+
const realLimit = limits[i] + charLength - realCharLength;
|
|
145
106
|
return glob + str.toString().substring(0, realLimit || 999).padEnd(realLimit || 0, ' ');
|
|
146
107
|
}, '');
|
|
147
108
|
this.logClr(str, clr, paddingX);
|
|
148
109
|
},
|
|
149
110
|
/** Console log alias */
|
|
150
|
-
log
|
|
151
|
-
|
|
152
|
-
var stringsCtxMayBeFirstParam = [];
|
|
153
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
154
|
-
stringsCtxMayBeFirstParam[_i] = arguments[_i];
|
|
155
|
-
}
|
|
156
|
-
stringsCtxMayBeFirstParam.forEach(function (str) { return _this.logClr(str, undefined, undefined); });
|
|
111
|
+
log(...stringsCtxMayBeFirstParam) {
|
|
112
|
+
stringsCtxMayBeFirstParam.forEach(str => this.logClr(str, undefined, undefined));
|
|
157
113
|
},
|
|
158
|
-
logClr
|
|
159
|
-
if (clr === void 0) { clr = (0, config_1.configFn)().terminal.theme.fontColor; }
|
|
160
|
-
if (paddingX === void 0) { paddingX = (0, config_1.configFn)().terminal.theme.paddingX; }
|
|
114
|
+
logClr(str, clr = (0, config_1.configFn)().terminal.theme.fontColor, paddingX = (0, config_1.configFn)().terminal.theme.paddingX) {
|
|
161
115
|
if (!(0, isset_1.isset)(str))
|
|
162
116
|
return;
|
|
163
|
-
|
|
164
|
-
str = padX + ((0, isset_1.isset)(clr) ? this.rgb
|
|
117
|
+
const padX = ' '.repeat(paddingX);
|
|
118
|
+
str = padX + ((0, isset_1.isset)(clr) ? this.rgb(...clr) : '') + str.toString().replace(/\n/g, '\n' + padX + ((0, isset_1.isset)(clr) ? this.rgb(...clr) : ''));
|
|
165
119
|
exports.logger.log(str + this.reset, 'log');
|
|
166
120
|
},
|
|
167
|
-
info
|
|
168
|
-
|
|
169
|
-
var str = [];
|
|
170
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
171
|
-
str[_i] = arguments[_i];
|
|
172
|
-
}
|
|
173
|
-
str.forEach(function (s, i) {
|
|
121
|
+
info(...str) {
|
|
122
|
+
str.forEach((s, i) => {
|
|
174
123
|
if (i === 0)
|
|
175
|
-
|
|
124
|
+
this.logClr('ⓘ ' + s, (0, config_1.configFn)().terminal.theme.primary);
|
|
176
125
|
else
|
|
177
|
-
|
|
126
|
+
this.log(this.dimStrSplit(s));
|
|
178
127
|
});
|
|
179
128
|
this.log(' ');
|
|
180
129
|
},
|
|
181
|
-
success
|
|
182
|
-
|
|
183
|
-
var str = [];
|
|
184
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
185
|
-
str[_i] = arguments[_i];
|
|
186
|
-
}
|
|
187
|
-
str.forEach(function (s, i) {
|
|
130
|
+
success(...str) {
|
|
131
|
+
str.forEach((s, i) => {
|
|
188
132
|
if (i === 0)
|
|
189
|
-
|
|
133
|
+
this.log(this.green('✓ ' + s));
|
|
190
134
|
else
|
|
191
|
-
|
|
135
|
+
this.log(this.dimStrSplit(s));
|
|
192
136
|
});
|
|
193
137
|
},
|
|
194
138
|
/** First param **false** to avoid logging stack trace */
|
|
195
|
-
error:
|
|
196
|
-
var errors = [];
|
|
197
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
198
|
-
errors[_i] = arguments[_i];
|
|
199
|
-
}
|
|
200
|
-
return logErrPrivate.apply(void 0, __spreadArray(['error', [255, 0, 0]], errors, false));
|
|
201
|
-
},
|
|
139
|
+
error: (...errors) => logErrPrivate('error', [255, 0, 0], ...errors),
|
|
202
140
|
/** First param **false** to avoid logging stack trace */
|
|
203
|
-
warning:
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
var str = [];
|
|
212
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
213
|
-
str[_i - 1] = arguments[_i];
|
|
214
|
-
}
|
|
215
|
-
return logErrPrivate.apply(void 0, __spreadArray(['error', color], str, false));
|
|
216
|
-
},
|
|
217
|
-
customWarning: function (color) {
|
|
218
|
-
var str = [];
|
|
219
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
220
|
-
str[_i - 1] = arguments[_i];
|
|
221
|
-
}
|
|
222
|
-
return logErrPrivate.apply(void 0, __spreadArray(['warn', color], str, false));
|
|
223
|
-
},
|
|
224
|
-
applicationError: function (color) {
|
|
225
|
-
var str = [];
|
|
226
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
227
|
-
str[_i - 1] = arguments[_i];
|
|
228
|
-
}
|
|
229
|
-
return logErrPrivate.apply(void 0, __spreadArray(['appError', color], str, false));
|
|
230
|
-
},
|
|
231
|
-
warningLight: function (color) {
|
|
232
|
-
var str = [];
|
|
233
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
234
|
-
str[_i - 1] = arguments[_i];
|
|
235
|
-
}
|
|
236
|
-
return logErrPrivate.apply(void 0, __spreadArray(['warn', [196, 120, 52]], str, false));
|
|
237
|
-
},
|
|
238
|
-
dimStrSplit: function () {
|
|
239
|
-
var _this = this;
|
|
240
|
-
var logs = [];
|
|
241
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
242
|
-
logs[_i] = arguments[_i];
|
|
243
|
-
}
|
|
244
|
-
var logsStr = [];
|
|
245
|
-
logs.filter(isset_1.isset).forEach(function (log) { return log.toString().split('\n').forEach(function (line) { return line && logsStr.push(_this.dim(" ".concat(line))); }); });
|
|
141
|
+
warning: (...str) => logErrPrivate('warn', [255, 122, 0], ...str),
|
|
142
|
+
customError: (color, ...str) => logErrPrivate('error', color, ...str),
|
|
143
|
+
customWarning: (color, ...str) => logErrPrivate('warn', color, ...str),
|
|
144
|
+
applicationError: (color, ...str) => logErrPrivate('appError', color, ...str),
|
|
145
|
+
warningLight: (color, ...str) => logErrPrivate('warn', [196, 120, 52], ...str),
|
|
146
|
+
dimStrSplit(...logs) {
|
|
147
|
+
let logsStr = [];
|
|
148
|
+
logs.filter(isset_1.isset).forEach(log => log.toString().split('\n').forEach(line => line && logsStr.push(this.dim(` ${line}`))));
|
|
246
149
|
return logsStr.join('\n');
|
|
247
150
|
},
|
|
248
|
-
notifShow
|
|
151
|
+
notifShow() {
|
|
249
152
|
console.log('\n\u00A0');
|
|
250
|
-
this.notifications.forEach(
|
|
153
|
+
this.notifications.forEach(fn => fn());
|
|
251
154
|
this.notifications = [];
|
|
252
155
|
console.log('\n\u00A0');
|
|
253
156
|
},
|
|
254
157
|
/** Keep in memory the logs to show when needed with C.notifShow()
|
|
255
158
|
* Ex: C.notification('info', str); */
|
|
256
|
-
notification
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
messages[_i - 1] = arguments[_i];
|
|
261
|
-
}
|
|
262
|
-
this.notifications.push(function () {
|
|
263
|
-
if ((0, isset_1.isset)(_this[type])) {
|
|
264
|
-
_this[type].apply(_this, messages);
|
|
159
|
+
notification(type, ...messages) {
|
|
160
|
+
this.notifications.push(() => {
|
|
161
|
+
if ((0, isset_1.isset)(this[type])) {
|
|
162
|
+
this[type](...messages);
|
|
265
163
|
}
|
|
266
164
|
else {
|
|
267
|
-
|
|
165
|
+
this.warning('Wrong param for C.notification');
|
|
268
166
|
}
|
|
269
167
|
});
|
|
270
168
|
},
|
|
271
169
|
notifications: [],
|
|
272
170
|
/** Gratientize lines of text (separated by \n) */
|
|
273
|
-
gradientize
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
if (paddingX === void 0) { paddingX = (0, config_1.configFn)().terminal.theme.paddingX; }
|
|
281
|
-
var lines = str.split('\n');
|
|
282
|
-
var largestLine = lines.reduce(function (sum, line) { return sum < line.length ? line.length : sum; }, 0);
|
|
283
|
-
var rgbParts = rgb1.map(function (val, i) { return (val - rgb2[i]) / (lines.length); });
|
|
284
|
-
var bg = bgRgb ? this.bg(bgRgb[0], bgRgb[1], bgRgb[2]) : '';
|
|
285
|
-
var padX = ' '.repeat(paddingX);
|
|
286
|
-
var padLine = bg + padX + ' '.padEnd(largestLine, ' ') + padX + '\x1b[0m\n';
|
|
171
|
+
gradientize(str = '', rgb1 = (0, config_1.configFn)().terminal.theme.shade1, rgb2 = (0, config_1.configFn)().terminal.theme.shade2, bgRgb = (0, config_1.configFn)().terminal.theme.bgColor, paddingY = (0, config_1.configFn)().terminal.theme.paddingY, paddingX = (0, config_1.configFn)().terminal.theme.paddingX) {
|
|
172
|
+
const lines = str.split('\n');
|
|
173
|
+
const largestLine = lines.reduce((sum, line) => sum < line.length ? line.length : sum, 0);
|
|
174
|
+
const rgbParts = rgb1.map((val, i) => (val - rgb2[i]) / (lines.length));
|
|
175
|
+
const bg = bgRgb ? this.bg(bgRgb[0], bgRgb[1], bgRgb[2]) : '';
|
|
176
|
+
const padX = ' '.repeat(paddingX);
|
|
177
|
+
const padLine = bg + padX + ' '.padEnd(largestLine, ' ') + padX + '\x1b[0m\n';
|
|
287
178
|
console.log(padLine.repeat(paddingY) +
|
|
288
|
-
lines.reduce(
|
|
289
|
-
return s + bg + padX +
|
|
179
|
+
lines.reduce((s, line, i) => {
|
|
180
|
+
return s + bg + padX + this.rgb(...rgb1.map((val, i2) => Math.round(val - i * rgbParts[i2]))) + line.padEnd(largestLine, ' ') + padX + '\x1b[0m\n';
|
|
290
181
|
}, '') +
|
|
291
182
|
padLine.repeat(paddingY));
|
|
292
183
|
},
|
|
293
|
-
debugModeLog
|
|
294
|
-
var string = [];
|
|
295
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
296
|
-
string[_i - 1] = arguments[_i];
|
|
297
|
-
}
|
|
184
|
+
debugModeLog(title, ...string) {
|
|
298
185
|
this.logClr('🐞 ' + title, (0, config_1.configFn)().terminal.theme.debugModeColor, 0);
|
|
299
|
-
this.log(this.dimStrSplit
|
|
186
|
+
this.log(this.dimStrSplit(...string));
|
|
300
187
|
},
|
|
301
188
|
// DEPRECATED
|
|
302
|
-
useTheme
|
|
189
|
+
useTheme() { },
|
|
303
190
|
};
|
|
304
|
-
function logErrPrivate(type, color) {
|
|
305
|
-
|
|
306
|
-
for (var _i = 2; _i < arguments.length; _i++) {
|
|
307
|
-
errors[_i - 2] = arguments[_i];
|
|
308
|
-
}
|
|
309
|
-
var isProd = (0, config_1.configFn)().isProd;
|
|
191
|
+
function logErrPrivate(type, color, ...errors) {
|
|
192
|
+
const { isProd } = (0, config_1.configFn)();
|
|
310
193
|
if (errors.length === 1 && typeof errors[0].log === 'function')
|
|
311
194
|
return errors[0].log();
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
195
|
+
let stackTrace = (new Error('')).stack || '';
|
|
196
|
+
const displayStack = errors[0] === false ? errors.shift() : true;
|
|
197
|
+
const symbol = type === 'error' ? '✘ ' : '⚠ ';
|
|
315
198
|
if (errors.length > 1 && !(0, isset_1.isset)(errors[0]))
|
|
316
199
|
errors.shift();
|
|
317
|
-
|
|
200
|
+
const getStringFromErr = (err, i) => {
|
|
318
201
|
if (!(0, isset_1.isset)(err))
|
|
319
202
|
return '';
|
|
320
203
|
else if (typeof err === 'string') {
|
|
321
204
|
if (i === 0)
|
|
322
|
-
return exports.C.rgb
|
|
205
|
+
return exports.C.rgb(...color) + symbol + err + exports.C.reset;
|
|
323
206
|
else
|
|
324
|
-
return err.split('\n').map(
|
|
207
|
+
return err.split('\n').map(val => exports.C.dim(val)).join('\n');
|
|
325
208
|
}
|
|
326
209
|
else if (err instanceof Error) {
|
|
327
|
-
|
|
210
|
+
const { str, stackTrace: stkTrc } = stringifyInstanceOfError(err, type, color);
|
|
328
211
|
if (stkTrc)
|
|
329
212
|
stackTrace = stkTrc;
|
|
330
213
|
return str;
|
|
331
214
|
}
|
|
332
215
|
else if (typeof err === 'object') {
|
|
333
|
-
|
|
334
|
-
msg += (0, remove_circular_json_stringify_1.removeCircularJSONstringify)(err, 2).split('\n').map(
|
|
335
|
-
|
|
216
|
+
let msg = '';
|
|
217
|
+
msg += (0, remove_circular_json_stringify_1.removeCircularJSONstringify)(err, 2).split('\n').map(val => exports.C.dim(val)).join('\n') + '\n';
|
|
218
|
+
const { str, stackTrace: stkTrc } = stringifyExtraInfos(err.extraInfo || err, type, color);
|
|
336
219
|
if (stkTrc)
|
|
337
220
|
stackTrace = stkTrc;
|
|
338
221
|
msg += str;
|
|
@@ -342,7 +225,7 @@ function logErrPrivate(type, color) {
|
|
|
342
225
|
return '';
|
|
343
226
|
};
|
|
344
227
|
if (errors.length && errors[0]) {
|
|
345
|
-
|
|
228
|
+
const messages = errors.map((e, i) => {
|
|
346
229
|
if (typeof e.log === 'function') {
|
|
347
230
|
e.log();
|
|
348
231
|
return '';
|
|
@@ -358,44 +241,40 @@ function logErrPrivate(type, color) {
|
|
|
358
241
|
}
|
|
359
242
|
}
|
|
360
243
|
exports.logErrPrivate = logErrPrivate;
|
|
361
|
-
function stringifyInstanceOfError(err, type, color, level) {
|
|
362
|
-
if (type === void 0) { type = 'error'; }
|
|
363
|
-
if (color === void 0) { color = [255, 0, 0]; }
|
|
364
|
-
if (level === void 0) { level = 0; }
|
|
244
|
+
function stringifyInstanceOfError(err, type = 'error', color = [255, 0, 0], level = 0) {
|
|
365
245
|
if (level > 5)
|
|
366
246
|
return { str: '' };
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
247
|
+
let str = '';
|
|
248
|
+
let stackTrace;
|
|
249
|
+
const symbol = type === 'error' ? '✘ ' : '⚠ ';
|
|
250
|
+
const title = err.msg || err.message || err.id || (err.stack ? err.stack.split('\n')[0] : 'Error');
|
|
371
251
|
// Err mess
|
|
372
|
-
str += exports.C.rgb
|
|
252
|
+
str += exports.C.rgb(...color) + symbol + title + exports.C.reset + '\n';
|
|
373
253
|
if (err.stack)
|
|
374
254
|
stackTrace = err.stack; // more relevant
|
|
375
255
|
// ExtraInfos
|
|
376
256
|
if ((0, isset_1.isset)(err.extraInfo)) {
|
|
377
|
-
|
|
257
|
+
const { str: str2, stackTrace: stkTrc } = stringifyExtraInfos(err.extraInfo, type, color, level++);
|
|
378
258
|
if (stkTrc)
|
|
379
259
|
stackTrace = stkTrc;
|
|
380
260
|
str += str2;
|
|
381
261
|
}
|
|
382
|
-
return { str
|
|
262
|
+
return { str, stackTrace };
|
|
383
263
|
}
|
|
384
264
|
exports.stringifyInstanceOfError = stringifyInstanceOfError;
|
|
385
|
-
function stringifyExtraInfos(extraInfoOriginal, type, color, level) {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
var originalError = [exports.C.dim("ORIGINAL ERROR ".concat('-'.repeat(39), "\n"))];
|
|
265
|
+
function stringifyExtraInfos(extraInfoOriginal, type, color, level = 0) {
|
|
266
|
+
let stackTrace;
|
|
267
|
+
const originalError = [exports.C.dim(`ORIGINAL ERROR ${'-'.repeat(39)}\n`)];
|
|
389
268
|
if (extraInfoOriginal instanceof Error) { // case where error is passed directly to extraInfos
|
|
390
269
|
return stringifyInstanceOfError(extraInfoOriginal, type, color);
|
|
391
270
|
}
|
|
392
271
|
else {
|
|
393
|
-
|
|
394
|
-
|
|
272
|
+
const extraInfo = Object.assign({}, extraInfoOriginal);
|
|
273
|
+
const extraInfos = [exports.C.dim(`EXTRA INFOS ${'-'.repeat(41)}\n`)];
|
|
395
274
|
if (typeof extraInfo === 'object' && Object.keys(extraInfo).length) {
|
|
396
|
-
for (
|
|
275
|
+
for (const itemName in extraInfo) {
|
|
397
276
|
if (extraInfo[itemName] instanceof Error) {
|
|
398
|
-
|
|
277
|
+
const { str, stackTrace: stkTrc } = stringifyInstanceOfError(extraInfo[itemName], type, color, level++);
|
|
399
278
|
originalError.push(str);
|
|
400
279
|
stackTrace = stkTrc;
|
|
401
280
|
delete extraInfo[itemName];
|
|
@@ -407,11 +286,11 @@ function stringifyExtraInfos(extraInfoOriginal, type, color, level) {
|
|
|
407
286
|
.replace(/(?:^\s*{(?:\n {2})?|}\s*$)/g, '')
|
|
408
287
|
.replace(/\n {2}/g, '\n')
|
|
409
288
|
.split('\n')
|
|
410
|
-
.map(
|
|
289
|
+
.map(val => exports.C.dim(val)).join('\n') + '\n');
|
|
411
290
|
}
|
|
412
291
|
return {
|
|
413
292
|
str: (extraInfos.length > 1 ? extraInfos.join('') : '') + (originalError.length > 1 ? originalError.join('') + '\n' : ''),
|
|
414
|
-
stackTrace
|
|
293
|
+
stackTrace
|
|
415
294
|
};
|
|
416
295
|
}
|
|
417
296
|
}
|
|
@@ -422,22 +301,18 @@ exports.stringifyExtraInfos = stringifyExtraInfos;
|
|
|
422
301
|
* @param {String} char Default: '.'
|
|
423
302
|
* @param {String} msg String before char. Final output will be `${str}${char.repeat(step)}`
|
|
424
303
|
*/
|
|
425
|
-
function cliProgressBar(step, char, msg) {
|
|
426
|
-
if (char === void 0) { char = '.'; }
|
|
427
|
-
if (msg === void 0) { msg = "\u001B[2m\u24D8 Waiting response"; }
|
|
304
|
+
function cliProgressBar(step, char = '.', msg = `\x1b[2mⓘ Waiting response`) {
|
|
428
305
|
if ((0, isset_1.isset)(process) && (0, isset_1.isset)(process.stdout) && (0, isset_1.isset)(process.stdout.clearLine)) {
|
|
429
306
|
process.stdout.clearLine(0);
|
|
430
307
|
process.stdout.cursorTo(0);
|
|
431
|
-
process.stdout.write(
|
|
308
|
+
process.stdout.write(`${msg}${char.repeat(step)}\x1b[0m`); // \x1b[0m == reset color
|
|
432
309
|
}
|
|
433
310
|
}
|
|
434
311
|
exports.cliProgressBar = cliProgressBar;
|
|
435
312
|
/** This allow an intuitive inline loading spinner with a check mark when loading as finished or a red cross for errors */
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
if (activeProcess === void 0) { activeProcess = process; }
|
|
440
|
-
var anims = {
|
|
313
|
+
class cliLoadingSpinner {
|
|
314
|
+
constructor(type = 'dots', activeProcess = process) {
|
|
315
|
+
const anims = {
|
|
441
316
|
arrow: {
|
|
442
317
|
interval: 120,
|
|
443
318
|
frames: ['▹▹▹▹▹', '▸▹▹▹▹', '▹▸▹▹▹', '▹▹▸▹▹', '▹▹▹▸▹', '▹▹▹▹▸']
|
|
@@ -451,34 +326,30 @@ var cliLoadingSpinner = /** @class */ (function () {
|
|
|
451
326
|
this.animFrames = anims[type].frames;
|
|
452
327
|
this.activeProcess = activeProcess;
|
|
453
328
|
}
|
|
454
|
-
|
|
455
|
-
var _this = this;
|
|
329
|
+
start(msg) {
|
|
456
330
|
this.frameNb = 0;
|
|
457
331
|
this.progressMessage = msg;
|
|
458
|
-
this.interval = setInterval(
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
332
|
+
this.interval = setInterval(() => {
|
|
333
|
+
this.activeProcess.stdout.clearLine();
|
|
334
|
+
this.activeProcess.stdout.cursorTo(0);
|
|
335
|
+
const symbol = this.animFrames[this.frameNb++ % this.animFrames.length];
|
|
336
|
+
this.activeProcess.stdout.write(exports.C.primary(symbol) + ' ' + this.progressMessage);
|
|
463
337
|
}, this.frameRate);
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
if (error === void 0) { error = false; }
|
|
338
|
+
}
|
|
339
|
+
end(error = false) {
|
|
467
340
|
clearInterval(this.interval);
|
|
468
341
|
this.activeProcess.stdout.clearLine();
|
|
469
342
|
this.activeProcess.stdout.cursorTo(0);
|
|
470
343
|
this.activeProcess.stdout.write(error ? exports.C.red('✘ ' + this.progressMessage + '\n\n')
|
|
471
344
|
: '\x1b[32m✓ ' + this.progressMessage + '\n\n');
|
|
472
345
|
this.progressMessage = '';
|
|
473
|
-
}
|
|
474
|
-
|
|
346
|
+
}
|
|
347
|
+
error() {
|
|
475
348
|
return this.end(true);
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
if (str === void 0) { str = ''; }
|
|
481
|
-
return (0, config_1.configFn)().terminal.noColor ? str : "\u001B[2m".concat(str.toString().split('\n').join('\x1b[0m\n\x1b[2m'), "\u001B[0m");
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
function dim(str = '') {
|
|
352
|
+
return (0, config_1.configFn)().terminal.noColor ? str : `\x1b[2m${str.toString().split('\n').join('\x1b[0m\n\x1b[2m')}\x1b[0m`;
|
|
482
353
|
}
|
|
483
354
|
exports.dim = dim;
|
|
484
355
|
//# sourceMappingURL=logger-utils.js.map
|