@wdio/logger 9.16.2 → 9.29.1
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/README.md +2 -0
- package/build/index.cjs +532 -15
- package/build/index.js +4 -2
- package/build/utils.d.ts.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -107,6 +107,8 @@ export const config: WebdriverIO.Config = {
|
|
|
107
107
|
}
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
+
For secrets passed via the command line, masking may fail because the wdio.conf.ts file is parsed later in the execution cycle. Using environment variables for these cases is highly recommended and much safer.
|
|
111
|
+
|
|
110
112
|
Below are examples with the environment variable `WDIO_LOG_MASKING_PATTERNS` in the code directly:
|
|
111
113
|
|
|
112
114
|
```javascript
|
package/build/index.cjs
CHANGED
|
@@ -37,6 +37,7 @@ __export(index_exports, {
|
|
|
37
37
|
module.exports = __toCommonJS(index_exports);
|
|
38
38
|
|
|
39
39
|
// src/utils.ts
|
|
40
|
+
var import_safe_regex2 = __toESM(require("safe-regex2"), 1);
|
|
40
41
|
var SENSITIVE_DATA_REPLACER = "**MASKED**";
|
|
41
42
|
var skipError = (aFunction) => {
|
|
42
43
|
try {
|
|
@@ -52,13 +53,14 @@ var parseMaskingPatterns = (maskingRegexString) => {
|
|
|
52
53
|
const regexStrings = maskingRegexString?.split(/,\s*/).filter((regexStr) => regexStr.trim() !== "");
|
|
53
54
|
return regexStrings?.map((regexStr) => {
|
|
54
55
|
const regexParts = regexStr.match(/^\/(.*?)\/([gimsuy]*)$/);
|
|
55
|
-
if (!regexParts) {
|
|
56
|
+
if (!regexParts && (0, import_safe_regex2.default)(regexStr)) {
|
|
56
57
|
return skipError(() => new RegExp(regexStr));
|
|
57
|
-
}
|
|
58
|
+
}
|
|
59
|
+
if (regexParts?.[1] && (0, import_safe_regex2.default)(regexParts[1])) {
|
|
58
60
|
return skipError(() => regexParts[2] ? new RegExp(regexParts[1], regexParts[2]) : new RegExp(regexParts[1]));
|
|
59
61
|
}
|
|
60
62
|
return void 0;
|
|
61
|
-
}).filter((
|
|
63
|
+
}).filter((regex2) => regex2 !== void 0);
|
|
62
64
|
};
|
|
63
65
|
var mask = (text, maskingPatterns) => {
|
|
64
66
|
if (!maskingPatterns || typeof text !== "string") {
|
|
@@ -89,9 +91,524 @@ var mask = (text, maskingPatterns) => {
|
|
|
89
91
|
var import_node_fs = __toESM(require("node:fs"), 1);
|
|
90
92
|
var import_node_util = __toESM(require("node:util"), 1);
|
|
91
93
|
var import_loglevel = __toESM(require("loglevel"), 1);
|
|
92
|
-
|
|
94
|
+
|
|
95
|
+
// ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js
|
|
96
|
+
var ANSI_BACKGROUND_OFFSET = 10;
|
|
97
|
+
var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
|
|
98
|
+
var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
|
|
99
|
+
var wrapAnsi16m = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
|
|
100
|
+
var styles = {
|
|
101
|
+
modifier: {
|
|
102
|
+
reset: [0, 0],
|
|
103
|
+
// 21 isn't widely supported and 22 does the same thing
|
|
104
|
+
bold: [1, 22],
|
|
105
|
+
dim: [2, 22],
|
|
106
|
+
italic: [3, 23],
|
|
107
|
+
underline: [4, 24],
|
|
108
|
+
overline: [53, 55],
|
|
109
|
+
inverse: [7, 27],
|
|
110
|
+
hidden: [8, 28],
|
|
111
|
+
strikethrough: [9, 29]
|
|
112
|
+
},
|
|
113
|
+
color: {
|
|
114
|
+
black: [30, 39],
|
|
115
|
+
red: [31, 39],
|
|
116
|
+
green: [32, 39],
|
|
117
|
+
yellow: [33, 39],
|
|
118
|
+
blue: [34, 39],
|
|
119
|
+
magenta: [35, 39],
|
|
120
|
+
cyan: [36, 39],
|
|
121
|
+
white: [37, 39],
|
|
122
|
+
// Bright color
|
|
123
|
+
blackBright: [90, 39],
|
|
124
|
+
gray: [90, 39],
|
|
125
|
+
// Alias of `blackBright`
|
|
126
|
+
grey: [90, 39],
|
|
127
|
+
// Alias of `blackBright`
|
|
128
|
+
redBright: [91, 39],
|
|
129
|
+
greenBright: [92, 39],
|
|
130
|
+
yellowBright: [93, 39],
|
|
131
|
+
blueBright: [94, 39],
|
|
132
|
+
magentaBright: [95, 39],
|
|
133
|
+
cyanBright: [96, 39],
|
|
134
|
+
whiteBright: [97, 39]
|
|
135
|
+
},
|
|
136
|
+
bgColor: {
|
|
137
|
+
bgBlack: [40, 49],
|
|
138
|
+
bgRed: [41, 49],
|
|
139
|
+
bgGreen: [42, 49],
|
|
140
|
+
bgYellow: [43, 49],
|
|
141
|
+
bgBlue: [44, 49],
|
|
142
|
+
bgMagenta: [45, 49],
|
|
143
|
+
bgCyan: [46, 49],
|
|
144
|
+
bgWhite: [47, 49],
|
|
145
|
+
// Bright color
|
|
146
|
+
bgBlackBright: [100, 49],
|
|
147
|
+
bgGray: [100, 49],
|
|
148
|
+
// Alias of `bgBlackBright`
|
|
149
|
+
bgGrey: [100, 49],
|
|
150
|
+
// Alias of `bgBlackBright`
|
|
151
|
+
bgRedBright: [101, 49],
|
|
152
|
+
bgGreenBright: [102, 49],
|
|
153
|
+
bgYellowBright: [103, 49],
|
|
154
|
+
bgBlueBright: [104, 49],
|
|
155
|
+
bgMagentaBright: [105, 49],
|
|
156
|
+
bgCyanBright: [106, 49],
|
|
157
|
+
bgWhiteBright: [107, 49]
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
var modifierNames = Object.keys(styles.modifier);
|
|
161
|
+
var foregroundColorNames = Object.keys(styles.color);
|
|
162
|
+
var backgroundColorNames = Object.keys(styles.bgColor);
|
|
163
|
+
var colorNames = [...foregroundColorNames, ...backgroundColorNames];
|
|
164
|
+
function assembleStyles() {
|
|
165
|
+
const codes = /* @__PURE__ */ new Map();
|
|
166
|
+
for (const [groupName, group] of Object.entries(styles)) {
|
|
167
|
+
for (const [styleName, style] of Object.entries(group)) {
|
|
168
|
+
styles[styleName] = {
|
|
169
|
+
open: `\x1B[${style[0]}m`,
|
|
170
|
+
close: `\x1B[${style[1]}m`
|
|
171
|
+
};
|
|
172
|
+
group[styleName] = styles[styleName];
|
|
173
|
+
codes.set(style[0], style[1]);
|
|
174
|
+
}
|
|
175
|
+
Object.defineProperty(styles, groupName, {
|
|
176
|
+
value: group,
|
|
177
|
+
enumerable: false
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
Object.defineProperty(styles, "codes", {
|
|
181
|
+
value: codes,
|
|
182
|
+
enumerable: false
|
|
183
|
+
});
|
|
184
|
+
styles.color.close = "\x1B[39m";
|
|
185
|
+
styles.bgColor.close = "\x1B[49m";
|
|
186
|
+
styles.color.ansi = wrapAnsi16();
|
|
187
|
+
styles.color.ansi256 = wrapAnsi256();
|
|
188
|
+
styles.color.ansi16m = wrapAnsi16m();
|
|
189
|
+
styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
|
|
190
|
+
styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
|
|
191
|
+
styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
|
|
192
|
+
Object.defineProperties(styles, {
|
|
193
|
+
rgbToAnsi256: {
|
|
194
|
+
value(red, green, blue) {
|
|
195
|
+
if (red === green && green === blue) {
|
|
196
|
+
if (red < 8) {
|
|
197
|
+
return 16;
|
|
198
|
+
}
|
|
199
|
+
if (red > 248) {
|
|
200
|
+
return 231;
|
|
201
|
+
}
|
|
202
|
+
return Math.round((red - 8) / 247 * 24) + 232;
|
|
203
|
+
}
|
|
204
|
+
return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
|
|
205
|
+
},
|
|
206
|
+
enumerable: false
|
|
207
|
+
},
|
|
208
|
+
hexToRgb: {
|
|
209
|
+
value(hex) {
|
|
210
|
+
const matches2 = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
|
|
211
|
+
if (!matches2) {
|
|
212
|
+
return [0, 0, 0];
|
|
213
|
+
}
|
|
214
|
+
let [colorString] = matches2;
|
|
215
|
+
if (colorString.length === 3) {
|
|
216
|
+
colorString = [...colorString].map((character) => character + character).join("");
|
|
217
|
+
}
|
|
218
|
+
const integer = Number.parseInt(colorString, 16);
|
|
219
|
+
return [
|
|
220
|
+
/* eslint-disable no-bitwise */
|
|
221
|
+
integer >> 16 & 255,
|
|
222
|
+
integer >> 8 & 255,
|
|
223
|
+
integer & 255
|
|
224
|
+
/* eslint-enable no-bitwise */
|
|
225
|
+
];
|
|
226
|
+
},
|
|
227
|
+
enumerable: false
|
|
228
|
+
},
|
|
229
|
+
hexToAnsi256: {
|
|
230
|
+
value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)),
|
|
231
|
+
enumerable: false
|
|
232
|
+
},
|
|
233
|
+
ansi256ToAnsi: {
|
|
234
|
+
value(code) {
|
|
235
|
+
if (code < 8) {
|
|
236
|
+
return 30 + code;
|
|
237
|
+
}
|
|
238
|
+
if (code < 16) {
|
|
239
|
+
return 90 + (code - 8);
|
|
240
|
+
}
|
|
241
|
+
let red;
|
|
242
|
+
let green;
|
|
243
|
+
let blue;
|
|
244
|
+
if (code >= 232) {
|
|
245
|
+
red = ((code - 232) * 10 + 8) / 255;
|
|
246
|
+
green = red;
|
|
247
|
+
blue = red;
|
|
248
|
+
} else {
|
|
249
|
+
code -= 16;
|
|
250
|
+
const remainder = code % 36;
|
|
251
|
+
red = Math.floor(code / 36) / 5;
|
|
252
|
+
green = Math.floor(remainder / 6) / 5;
|
|
253
|
+
blue = remainder % 6 / 5;
|
|
254
|
+
}
|
|
255
|
+
const value = Math.max(red, green, blue) * 2;
|
|
256
|
+
if (value === 0) {
|
|
257
|
+
return 30;
|
|
258
|
+
}
|
|
259
|
+
let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
|
|
260
|
+
if (value === 2) {
|
|
261
|
+
result += 60;
|
|
262
|
+
}
|
|
263
|
+
return result;
|
|
264
|
+
},
|
|
265
|
+
enumerable: false
|
|
266
|
+
},
|
|
267
|
+
rgbToAnsi: {
|
|
268
|
+
value: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),
|
|
269
|
+
enumerable: false
|
|
270
|
+
},
|
|
271
|
+
hexToAnsi: {
|
|
272
|
+
value: (hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),
|
|
273
|
+
enumerable: false
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
return styles;
|
|
277
|
+
}
|
|
278
|
+
var ansiStyles = assembleStyles();
|
|
279
|
+
var ansi_styles_default = ansiStyles;
|
|
280
|
+
|
|
281
|
+
// ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js
|
|
282
|
+
var import_node_process = __toESM(require("node:process"), 1);
|
|
283
|
+
var import_node_os = __toESM(require("node:os"), 1);
|
|
284
|
+
var import_node_tty = __toESM(require("node:tty"), 1);
|
|
285
|
+
function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : import_node_process.default.argv) {
|
|
286
|
+
const prefix2 = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
|
|
287
|
+
const position = argv.indexOf(prefix2 + flag);
|
|
288
|
+
const terminatorPosition = argv.indexOf("--");
|
|
289
|
+
return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
|
|
290
|
+
}
|
|
291
|
+
var { env } = import_node_process.default;
|
|
292
|
+
var flagForceColor;
|
|
293
|
+
if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
|
|
294
|
+
flagForceColor = 0;
|
|
295
|
+
} else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
|
|
296
|
+
flagForceColor = 1;
|
|
297
|
+
}
|
|
298
|
+
function envForceColor() {
|
|
299
|
+
if ("FORCE_COLOR" in env) {
|
|
300
|
+
if (env.FORCE_COLOR === "true") {
|
|
301
|
+
return 1;
|
|
302
|
+
}
|
|
303
|
+
if (env.FORCE_COLOR === "false") {
|
|
304
|
+
return 0;
|
|
305
|
+
}
|
|
306
|
+
return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
function translateLevel(level) {
|
|
310
|
+
if (level === 0) {
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
return {
|
|
314
|
+
level,
|
|
315
|
+
hasBasic: true,
|
|
316
|
+
has256: level >= 2,
|
|
317
|
+
has16m: level >= 3
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
|
|
321
|
+
const noFlagForceColor = envForceColor();
|
|
322
|
+
if (noFlagForceColor !== void 0) {
|
|
323
|
+
flagForceColor = noFlagForceColor;
|
|
324
|
+
}
|
|
325
|
+
const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
|
|
326
|
+
if (forceColor === 0) {
|
|
327
|
+
return 0;
|
|
328
|
+
}
|
|
329
|
+
if (sniffFlags) {
|
|
330
|
+
if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
|
|
331
|
+
return 3;
|
|
332
|
+
}
|
|
333
|
+
if (hasFlag("color=256")) {
|
|
334
|
+
return 2;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
if ("TF_BUILD" in env && "AGENT_NAME" in env) {
|
|
338
|
+
return 1;
|
|
339
|
+
}
|
|
340
|
+
if (haveStream && !streamIsTTY && forceColor === void 0) {
|
|
341
|
+
return 0;
|
|
342
|
+
}
|
|
343
|
+
const min = forceColor || 0;
|
|
344
|
+
if (env.TERM === "dumb") {
|
|
345
|
+
return min;
|
|
346
|
+
}
|
|
347
|
+
if (import_node_process.default.platform === "win32") {
|
|
348
|
+
const osRelease = import_node_os.default.release().split(".");
|
|
349
|
+
if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
|
|
350
|
+
return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
|
351
|
+
}
|
|
352
|
+
return 1;
|
|
353
|
+
}
|
|
354
|
+
if ("CI" in env) {
|
|
355
|
+
if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) {
|
|
356
|
+
return 3;
|
|
357
|
+
}
|
|
358
|
+
if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
|
|
359
|
+
return 1;
|
|
360
|
+
}
|
|
361
|
+
return min;
|
|
362
|
+
}
|
|
363
|
+
if ("TEAMCITY_VERSION" in env) {
|
|
364
|
+
return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
|
|
365
|
+
}
|
|
366
|
+
if (env.COLORTERM === "truecolor") {
|
|
367
|
+
return 3;
|
|
368
|
+
}
|
|
369
|
+
if (env.TERM === "xterm-kitty") {
|
|
370
|
+
return 3;
|
|
371
|
+
}
|
|
372
|
+
if (env.TERM === "xterm-ghostty") {
|
|
373
|
+
return 3;
|
|
374
|
+
}
|
|
375
|
+
if (env.TERM === "wezterm") {
|
|
376
|
+
return 3;
|
|
377
|
+
}
|
|
378
|
+
if ("TERM_PROGRAM" in env) {
|
|
379
|
+
const version = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
|
|
380
|
+
switch (env.TERM_PROGRAM) {
|
|
381
|
+
case "iTerm.app": {
|
|
382
|
+
return version >= 3 ? 3 : 2;
|
|
383
|
+
}
|
|
384
|
+
case "Apple_Terminal": {
|
|
385
|
+
return 2;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
if (/-256(color)?$/i.test(env.TERM)) {
|
|
390
|
+
return 2;
|
|
391
|
+
}
|
|
392
|
+
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
|
|
393
|
+
return 1;
|
|
394
|
+
}
|
|
395
|
+
if ("COLORTERM" in env) {
|
|
396
|
+
return 1;
|
|
397
|
+
}
|
|
398
|
+
return min;
|
|
399
|
+
}
|
|
400
|
+
function createSupportsColor(stream, options = {}) {
|
|
401
|
+
const level = _supportsColor(stream, {
|
|
402
|
+
streamIsTTY: stream && stream.isTTY,
|
|
403
|
+
...options
|
|
404
|
+
});
|
|
405
|
+
return translateLevel(level);
|
|
406
|
+
}
|
|
407
|
+
var supportsColor = {
|
|
408
|
+
stdout: createSupportsColor({ isTTY: import_node_tty.default.isatty(1) }),
|
|
409
|
+
stderr: createSupportsColor({ isTTY: import_node_tty.default.isatty(2) })
|
|
410
|
+
};
|
|
411
|
+
var supports_color_default = supportsColor;
|
|
412
|
+
|
|
413
|
+
// ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.js
|
|
414
|
+
function stringReplaceAll(string, substring, replacer) {
|
|
415
|
+
let index = string.indexOf(substring);
|
|
416
|
+
if (index === -1) {
|
|
417
|
+
return string;
|
|
418
|
+
}
|
|
419
|
+
const substringLength = substring.length;
|
|
420
|
+
let endIndex = 0;
|
|
421
|
+
let returnValue = "";
|
|
422
|
+
do {
|
|
423
|
+
returnValue += string.slice(endIndex, index) + substring + replacer;
|
|
424
|
+
endIndex = index + substringLength;
|
|
425
|
+
index = string.indexOf(substring, endIndex);
|
|
426
|
+
} while (index !== -1);
|
|
427
|
+
returnValue += string.slice(endIndex);
|
|
428
|
+
return returnValue;
|
|
429
|
+
}
|
|
430
|
+
function stringEncaseCRLFWithFirstIndex(string, prefix2, postfix, index) {
|
|
431
|
+
let endIndex = 0;
|
|
432
|
+
let returnValue = "";
|
|
433
|
+
do {
|
|
434
|
+
const gotCR = string[index - 1] === "\r";
|
|
435
|
+
returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix2 + (gotCR ? "\r\n" : "\n") + postfix;
|
|
436
|
+
endIndex = index + 1;
|
|
437
|
+
index = string.indexOf("\n", endIndex);
|
|
438
|
+
} while (index !== -1);
|
|
439
|
+
returnValue += string.slice(endIndex);
|
|
440
|
+
return returnValue;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
// ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js
|
|
444
|
+
var { stdout: stdoutColor, stderr: stderrColor } = supports_color_default;
|
|
445
|
+
var GENERATOR = /* @__PURE__ */ Symbol("GENERATOR");
|
|
446
|
+
var STYLER = /* @__PURE__ */ Symbol("STYLER");
|
|
447
|
+
var IS_EMPTY = /* @__PURE__ */ Symbol("IS_EMPTY");
|
|
448
|
+
var levelMapping = [
|
|
449
|
+
"ansi",
|
|
450
|
+
"ansi",
|
|
451
|
+
"ansi256",
|
|
452
|
+
"ansi16m"
|
|
453
|
+
];
|
|
454
|
+
var styles2 = /* @__PURE__ */ Object.create(null);
|
|
455
|
+
var applyOptions = (object, options = {}) => {
|
|
456
|
+
if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
|
|
457
|
+
throw new Error("The `level` option should be an integer from 0 to 3");
|
|
458
|
+
}
|
|
459
|
+
const colorLevel = stdoutColor ? stdoutColor.level : 0;
|
|
460
|
+
object.level = options.level === void 0 ? colorLevel : options.level;
|
|
461
|
+
};
|
|
462
|
+
var chalkFactory = (options) => {
|
|
463
|
+
const chalk2 = (...strings) => strings.join(" ");
|
|
464
|
+
applyOptions(chalk2, options);
|
|
465
|
+
Object.setPrototypeOf(chalk2, createChalk.prototype);
|
|
466
|
+
return chalk2;
|
|
467
|
+
};
|
|
468
|
+
function createChalk(options) {
|
|
469
|
+
return chalkFactory(options);
|
|
470
|
+
}
|
|
471
|
+
Object.setPrototypeOf(createChalk.prototype, Function.prototype);
|
|
472
|
+
for (const [styleName, style] of Object.entries(ansi_styles_default)) {
|
|
473
|
+
styles2[styleName] = {
|
|
474
|
+
get() {
|
|
475
|
+
const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
|
|
476
|
+
Object.defineProperty(this, styleName, { value: builder });
|
|
477
|
+
return builder;
|
|
478
|
+
}
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
styles2.visible = {
|
|
482
|
+
get() {
|
|
483
|
+
const builder = createBuilder(this, this[STYLER], true);
|
|
484
|
+
Object.defineProperty(this, "visible", { value: builder });
|
|
485
|
+
return builder;
|
|
486
|
+
}
|
|
487
|
+
};
|
|
488
|
+
var getModelAnsi = (model, level, type, ...arguments_) => {
|
|
489
|
+
if (model === "rgb") {
|
|
490
|
+
if (level === "ansi16m") {
|
|
491
|
+
return ansi_styles_default[type].ansi16m(...arguments_);
|
|
492
|
+
}
|
|
493
|
+
if (level === "ansi256") {
|
|
494
|
+
return ansi_styles_default[type].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_));
|
|
495
|
+
}
|
|
496
|
+
return ansi_styles_default[type].ansi(ansi_styles_default.rgbToAnsi(...arguments_));
|
|
497
|
+
}
|
|
498
|
+
if (model === "hex") {
|
|
499
|
+
return getModelAnsi("rgb", level, type, ...ansi_styles_default.hexToRgb(...arguments_));
|
|
500
|
+
}
|
|
501
|
+
return ansi_styles_default[type][model](...arguments_);
|
|
502
|
+
};
|
|
503
|
+
var usedModels = ["rgb", "hex", "ansi256"];
|
|
504
|
+
for (const model of usedModels) {
|
|
505
|
+
styles2[model] = {
|
|
506
|
+
get() {
|
|
507
|
+
const { level } = this;
|
|
508
|
+
return function(...arguments_) {
|
|
509
|
+
const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansi_styles_default.color.close, this[STYLER]);
|
|
510
|
+
return createBuilder(this, styler, this[IS_EMPTY]);
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
|
|
515
|
+
styles2[bgModel] = {
|
|
516
|
+
get() {
|
|
517
|
+
const { level } = this;
|
|
518
|
+
return function(...arguments_) {
|
|
519
|
+
const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansi_styles_default.bgColor.close, this[STYLER]);
|
|
520
|
+
return createBuilder(this, styler, this[IS_EMPTY]);
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
var proto = Object.defineProperties(() => {
|
|
526
|
+
}, {
|
|
527
|
+
...styles2,
|
|
528
|
+
level: {
|
|
529
|
+
enumerable: true,
|
|
530
|
+
get() {
|
|
531
|
+
return this[GENERATOR].level;
|
|
532
|
+
},
|
|
533
|
+
set(level) {
|
|
534
|
+
this[GENERATOR].level = level;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
});
|
|
538
|
+
var createStyler = (open, close, parent) => {
|
|
539
|
+
let openAll;
|
|
540
|
+
let closeAll;
|
|
541
|
+
if (parent === void 0) {
|
|
542
|
+
openAll = open;
|
|
543
|
+
closeAll = close;
|
|
544
|
+
} else {
|
|
545
|
+
openAll = parent.openAll + open;
|
|
546
|
+
closeAll = close + parent.closeAll;
|
|
547
|
+
}
|
|
548
|
+
return {
|
|
549
|
+
open,
|
|
550
|
+
close,
|
|
551
|
+
openAll,
|
|
552
|
+
closeAll,
|
|
553
|
+
parent
|
|
554
|
+
};
|
|
555
|
+
};
|
|
556
|
+
var createBuilder = (self, _styler, _isEmpty) => {
|
|
557
|
+
const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
|
|
558
|
+
Object.setPrototypeOf(builder, proto);
|
|
559
|
+
builder[GENERATOR] = self;
|
|
560
|
+
builder[STYLER] = _styler;
|
|
561
|
+
builder[IS_EMPTY] = _isEmpty;
|
|
562
|
+
return builder;
|
|
563
|
+
};
|
|
564
|
+
var applyStyle = (self, string) => {
|
|
565
|
+
if (self.level <= 0 || !string) {
|
|
566
|
+
return self[IS_EMPTY] ? "" : string;
|
|
567
|
+
}
|
|
568
|
+
let styler = self[STYLER];
|
|
569
|
+
if (styler === void 0) {
|
|
570
|
+
return string;
|
|
571
|
+
}
|
|
572
|
+
const { openAll, closeAll } = styler;
|
|
573
|
+
if (string.includes("\x1B")) {
|
|
574
|
+
while (styler !== void 0) {
|
|
575
|
+
string = stringReplaceAll(string, styler.close, styler.open);
|
|
576
|
+
styler = styler.parent;
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
const lfIndex = string.indexOf("\n");
|
|
580
|
+
if (lfIndex !== -1) {
|
|
581
|
+
string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
|
|
582
|
+
}
|
|
583
|
+
return openAll + string + closeAll;
|
|
584
|
+
};
|
|
585
|
+
Object.defineProperties(createChalk.prototype, styles2);
|
|
586
|
+
var chalk = createChalk();
|
|
587
|
+
var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
|
|
588
|
+
var source_default = chalk;
|
|
589
|
+
|
|
590
|
+
// src/index.ts
|
|
93
591
|
var import_loglevel_plugin_prefix = __toESM(require("loglevel-plugin-prefix"), 1);
|
|
94
|
-
|
|
592
|
+
|
|
593
|
+
// ../../node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
|
|
594
|
+
function ansiRegex({ onlyFirst = false } = {}) {
|
|
595
|
+
const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
|
|
596
|
+
const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
|
|
597
|
+
const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
|
|
598
|
+
const pattern = `${osc}|${csi}`;
|
|
599
|
+
return new RegExp(pattern, onlyFirst ? void 0 : "g");
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
// ../../node_modules/.pnpm/strip-ansi@7.1.2/node_modules/strip-ansi/index.js
|
|
603
|
+
var regex = ansiRegex();
|
|
604
|
+
function stripAnsi(string) {
|
|
605
|
+
if (typeof string !== "string") {
|
|
606
|
+
throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
607
|
+
}
|
|
608
|
+
return string.replace(regex, "");
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
// src/index.ts
|
|
95
612
|
import_loglevel_plugin_prefix.default.reg(import_loglevel.default);
|
|
96
613
|
var DEFAULT_LEVEL = process.env.WDIO_DEBUG ? "trace" : "info";
|
|
97
614
|
var COLORS = {
|
|
@@ -120,19 +637,19 @@ var SERIALIZERS = [{
|
|
|
120
637
|
* color commands blue
|
|
121
638
|
*/
|
|
122
639
|
matches: (log2) => log2 === matches.COMMAND || log2 === matches.BIDICOMMAND,
|
|
123
|
-
serialize: (log2) =>
|
|
640
|
+
serialize: (log2) => source_default.magenta(log2)
|
|
124
641
|
}, {
|
|
125
642
|
/**
|
|
126
643
|
* color data yellow
|
|
127
644
|
*/
|
|
128
645
|
matches: (log2) => log2 === matches.DATA,
|
|
129
|
-
serialize: (log2) =>
|
|
646
|
+
serialize: (log2) => source_default.yellow(log2)
|
|
130
647
|
}, {
|
|
131
648
|
/**
|
|
132
649
|
* color result cyan
|
|
133
650
|
*/
|
|
134
651
|
matches: (log2) => log2 === matches.RESULT || log2 === matches.BIDIRESULT,
|
|
135
|
-
serialize: (log2) =>
|
|
652
|
+
serialize: (log2) => source_default.cyan(log2)
|
|
136
653
|
}];
|
|
137
654
|
var loggers = import_loglevel.default.getLoggers();
|
|
138
655
|
var logLevelsConfig = {};
|
|
@@ -159,7 +676,7 @@ var wdioLoggerMethodFactory = (wdioLogger) => function(methodName, logLevel, log
|
|
|
159
676
|
}
|
|
160
677
|
return arg;
|
|
161
678
|
});
|
|
162
|
-
const unmaskedLogText = (
|
|
679
|
+
const unmaskedLogText = stripAnsi(`${import_node_util.default.format.apply(this, args)}
|
|
163
680
|
`);
|
|
164
681
|
const maskedLogText = mask(unmaskedLogText, wdioLogger.maskingPatterns);
|
|
165
682
|
if (logFile && logFile.writable) {
|
|
@@ -187,9 +704,9 @@ var wdioLoggerMethodFactory = (wdioLogger) => function(methodName, logLevel, log
|
|
|
187
704
|
var progress = function(data) {
|
|
188
705
|
if (process.stdout.isTTY && this.getLevel() <= import_loglevel.default.levels.INFO) {
|
|
189
706
|
const level = "progress";
|
|
190
|
-
const timestampFormatter =
|
|
191
|
-
const levelFormatter =
|
|
192
|
-
const nameFormatter =
|
|
707
|
+
const timestampFormatter = source_default.gray((/* @__PURE__ */ new Date()).toISOString());
|
|
708
|
+
const levelFormatter = source_default[COLORS[level]](level.toUpperCase());
|
|
709
|
+
const nameFormatter = source_default.whiteBright(this.name);
|
|
193
710
|
const _data = data.length > 0 ? `${timestampFormatter} ${levelFormatter} ${nameFormatter}: ${data}` : "\r\x1B[K\x1B[?25h";
|
|
194
711
|
process.stdout.write("\x1B[?25l");
|
|
195
712
|
process.stdout.write(`${_data}\r`);
|
|
@@ -212,9 +729,9 @@ function getLogger(name) {
|
|
|
212
729
|
logger.methodFactory = wdioLoggerMethodFactory(logger);
|
|
213
730
|
import_loglevel_plugin_prefix.default.apply(logger, {
|
|
214
731
|
template: "%t %l %n:",
|
|
215
|
-
timestampFormatter: (date) =>
|
|
216
|
-
levelFormatter: (level) =>
|
|
217
|
-
nameFormatter: (name2) =>
|
|
732
|
+
timestampFormatter: (date) => source_default.gray(date.toISOString()),
|
|
733
|
+
levelFormatter: (level) => source_default[COLORS[level]](level.toUpperCase()),
|
|
734
|
+
nameFormatter: (name2) => source_default.whiteBright(name2)
|
|
218
735
|
});
|
|
219
736
|
return logger;
|
|
220
737
|
}
|
package/build/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// src/utils.ts
|
|
2
|
+
import safeRegexTest from "safe-regex2";
|
|
2
3
|
var SENSITIVE_DATA_REPLACER = "**MASKED**";
|
|
3
4
|
var skipError = (aFunction) => {
|
|
4
5
|
try {
|
|
@@ -14,9 +15,10 @@ var parseMaskingPatterns = (maskingRegexString) => {
|
|
|
14
15
|
const regexStrings = maskingRegexString?.split(/,\s*/).filter((regexStr) => regexStr.trim() !== "");
|
|
15
16
|
return regexStrings?.map((regexStr) => {
|
|
16
17
|
const regexParts = regexStr.match(/^\/(.*?)\/([gimsuy]*)$/);
|
|
17
|
-
if (!regexParts) {
|
|
18
|
+
if (!regexParts && safeRegexTest(regexStr)) {
|
|
18
19
|
return skipError(() => new RegExp(regexStr));
|
|
19
|
-
}
|
|
20
|
+
}
|
|
21
|
+
if (regexParts?.[1] && safeRegexTest(regexParts[1])) {
|
|
20
22
|
return skipError(() => regexParts[2] ? new RegExp(regexParts[1], regexParts[2]) : new RegExp(regexParts[1]));
|
|
21
23
|
}
|
|
22
24
|
return void 0;
|
package/build/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,eAAe,CAAA;AAUnD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,oBAAoB,MAAM,GAAG,SAAS,sBAqB1E,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,EAAE,iBAAiB,MAAM,EAAE,GAAG,SAAS,WA6BvE,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wdio/logger",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.29.1",
|
|
4
4
|
"description": "A helper utility for logging of WebdriverIO packages",
|
|
5
5
|
"author": "Christian Bromann <mail@bromann.dev>",
|
|
6
6
|
"homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-logger",
|
|
@@ -40,10 +40,11 @@
|
|
|
40
40
|
"chalk": "^5.1.2",
|
|
41
41
|
"loglevel": "^1.6.0",
|
|
42
42
|
"loglevel-plugin-prefix": "^0.8.4",
|
|
43
|
+
"safe-regex2": "^5.0.0",
|
|
43
44
|
"strip-ansi": "^7.1.0"
|
|
44
45
|
},
|
|
45
46
|
"publishConfig": {
|
|
46
47
|
"access": "public"
|
|
47
48
|
},
|
|
48
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "cea4a759f7e78c798e7dd1a0794ae4aeec5acdbf"
|
|
49
50
|
}
|