esp32tool 1.6.5 → 1.6.6

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.
Binary file
@@ -5,6 +5,10 @@ interface ConsoleState {
5
5
  strikethrough: boolean;
6
6
  foregroundColor: string | null;
7
7
  backgroundColor: string | null;
8
+ fgRgb: string | null;
9
+ bgRgb: string | null;
10
+ dim: boolean;
11
+ reverse: boolean;
8
12
  carriageReturn: boolean;
9
13
  lines: string[];
10
14
  secret: boolean;
@@ -20,5 +24,5 @@ export declare class ColoredConsole {
20
24
  processLines(): void;
21
25
  addLine(line: string): void;
22
26
  }
23
- export declare const coloredConsoleStyles = "\n .log {\n flex: 1;\n background-color: #1c1c1c;\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, Courier,\n monospace;\n font-size: 12px;\n padding: 16px;\n overflow: auto;\n line-height: 1.45;\n border-radius: 3px;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n color: #ddd;\n }\n\n .log-bold {\n font-weight: bold;\n }\n .log-italic {\n font-style: italic;\n }\n .log-underline {\n text-decoration: underline;\n }\n .log-strikethrough {\n text-decoration: line-through;\n }\n .log-underline.log-strikethrough {\n text-decoration: underline line-through;\n }\n .log-blink {\n animation: blink 1s step-end infinite;\n }\n .log-rapid-blink {\n animation: blink 0.4s step-end infinite;\n }\n @keyframes blink {\n 50% {\n opacity: 0;\n }\n }\n .log-secret {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n .log-secret-redacted {\n opacity: 0;\n width: 1px;\n font-size: 1px;\n }\n .log-fg-black {\n color: rgb(128, 128, 128);\n }\n .log-fg-red {\n color: rgb(255, 0, 0);\n }\n .log-fg-green {\n color: rgb(0, 255, 0);\n }\n .log-fg-yellow {\n color: rgb(255, 255, 0);\n }\n .log-fg-blue {\n color: rgb(0, 0, 255);\n }\n .log-fg-magenta {\n color: rgb(255, 0, 255);\n }\n .log-fg-cyan {\n color: rgb(0, 255, 255);\n }\n .log-fg-white {\n color: rgb(187, 187, 187);\n }\n .log-bg-black {\n background-color: rgb(0, 0, 0);\n }\n .log-bg-red {\n background-color: rgb(255, 0, 0);\n }\n .log-bg-green {\n background-color: rgb(0, 255, 0);\n }\n .log-bg-yellow {\n background-color: rgb(255, 255, 0);\n }\n .log-bg-blue {\n background-color: rgb(0, 0, 255);\n }\n .log-bg-magenta {\n background-color: rgb(255, 0, 255);\n }\n .log-bg-cyan {\n background-color: rgb(0, 255, 255);\n }\n .log-bg-white {\n background-color: rgb(255, 255, 255);\n }\n";
27
+ export declare const coloredConsoleStyles = "\n .log {\n flex: 1;\n background-color: #1c1c1c;\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, Courier,\n monospace;\n font-size: 12px;\n padding: 16px;\n overflow: auto;\n line-height: 1.45;\n border-radius: 3px;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n color: #ddd;\n }\n\n .log-bold {\n font-weight: bold;\n }\n .log-dim {\n opacity: 0.5;\n }\n .log-italic {\n font-style: italic;\n }\n .log-underline {\n text-decoration: underline;\n }\n .log-strikethrough {\n text-decoration: line-through;\n }\n .log-underline.log-strikethrough {\n text-decoration: underline line-through;\n }\n .log-blink {\n animation: blink 1s step-end infinite;\n }\n .log-rapid-blink {\n animation: blink 0.4s step-end infinite;\n }\n @keyframes blink {\n 50% {\n opacity: 0;\n }\n }\n .log-secret {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n .log-secret-redacted {\n opacity: 0;\n width: 1px;\n font-size: 1px;\n }\n .log-reverse {\n background: #ddd;\n color: #1c1c1c;\n }\n .log-fg-black {\n color: rgb(128, 128, 128);\n }\n .log-fg-red {\n color: rgb(255, 0, 0);\n }\n .log-fg-green {\n color: rgb(0, 255, 0);\n }\n .log-fg-yellow {\n color: rgb(255, 255, 0);\n }\n .log-fg-blue {\n color: rgb(0, 0, 255);\n }\n .log-fg-magenta {\n color: rgb(255, 0, 255);\n }\n .log-fg-cyan {\n color: rgb(0, 255, 255);\n }\n .log-fg-white {\n color: rgb(187, 187, 187);\n }\n .log-bg-black {\n background-color: rgb(0, 0, 0);\n }\n .log-bg-red {\n background-color: rgb(255, 0, 0);\n }\n .log-bg-green {\n background-color: rgb(0, 255, 0);\n }\n .log-bg-yellow {\n background-color: rgb(255, 255, 0);\n }\n .log-bg-blue {\n background-color: rgb(0, 0, 255);\n }\n .log-bg-magenta {\n background-color: rgb(255, 0, 255);\n }\n .log-bg-cyan {\n background-color: rgb(0, 255, 255);\n }\n .log-bg-white {\n background-color: rgb(255, 255, 255);\n }\n";
24
28
  export {};
@@ -1,3 +1,56 @@
1
+ const ANSI_256 = (() => {
2
+ const t = [];
3
+ // Standard colors 0-7
4
+ t[0] = "rgb(0,0,0)";
5
+ t[1] = "rgb(128,0,0)";
6
+ t[2] = "rgb(0,128,0)";
7
+ t[3] = "rgb(128,128,0)";
8
+ t[4] = "rgb(0,0,128)";
9
+ t[5] = "rgb(128,0,128)";
10
+ t[6] = "rgb(0,128,128)";
11
+ t[7] = "rgb(192,192,192)";
12
+ // Bright colors 8-15
13
+ t[8] = "rgb(128,128,128)";
14
+ t[9] = "rgb(255,0,0)";
15
+ t[10] = "rgb(0,255,0)";
16
+ t[11] = "rgb(255,255,0)";
17
+ t[12] = "rgb(99,153,255)";
18
+ t[13] = "rgb(255,0,255)";
19
+ t[14] = "rgb(0,255,255)";
20
+ t[15] = "rgb(255,255,255)";
21
+ // 6x6x6 color cube 16-231
22
+ for (let i = 0; i < 216; i++) {
23
+ const r = Math.floor(i / 36);
24
+ const g = Math.floor((i % 36) / 6);
25
+ const b = i % 6;
26
+ t[16 + i] =
27
+ "rgb(" +
28
+ (r ? r * 40 + 55 : 0) +
29
+ "," +
30
+ (g ? g * 40 + 55 : 0) +
31
+ "," +
32
+ (b ? b * 40 + 55 : 0) +
33
+ ")";
34
+ }
35
+ // Grayscale ramp 232-255
36
+ for (let i = 0; i < 24; i++) {
37
+ const v = i * 10 + 8;
38
+ t[232 + i] = "rgb(" + v + "," + v + "," + v + ")";
39
+ }
40
+ return t;
41
+ })();
42
+ // Maps 256-color indices 0–7 to the named CSS class tokens so that
43
+ // \x1b[38;5;1m renders the same red as \x1b[31m.
44
+ const ANSI_NAMED = [
45
+ "black",
46
+ "red",
47
+ "green",
48
+ "yellow",
49
+ "blue",
50
+ "magenta",
51
+ "cyan",
52
+ "white",
53
+ ];
1
54
  export class ColoredConsole {
2
55
  constructor(targetElement) {
3
56
  this.targetElement = targetElement;
@@ -8,6 +61,10 @@ export class ColoredConsole {
8
61
  strikethrough: false,
9
62
  foregroundColor: null,
10
63
  backgroundColor: null,
64
+ fgRgb: null,
65
+ bgRgb: null,
66
+ dim: false,
67
+ reverse: false,
11
68
  carriageReturn: false,
12
69
  lines: [],
13
70
  secret: false,
@@ -24,7 +81,7 @@ export class ColoredConsole {
24
81
  processLine(line) {
25
82
  // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequences
26
83
  // eslint-disable-next-line no-control-regex
27
- const re = /(?:\x1B|\\x1B)(?:\[(.*?)[@-~]|\].*?(?:\x07|\x1B\\))/g;
84
+ const re = /(?:\x1B|\\x1B)(?:\[(.*?)([@-~])|\].*?(?:\x07|\x1B\\))/g;
28
85
  let i = 0;
29
86
  const lineSpan = document.createElement("span");
30
87
  lineSpan.classList.add("line");
@@ -34,6 +91,8 @@ export class ColoredConsole {
34
91
  const span = document.createElement("span");
35
92
  if (this.state.bold)
36
93
  span.classList.add("log-bold");
94
+ if (this.state.dim)
95
+ span.classList.add("log-dim");
37
96
  if (this.state.italic)
38
97
  span.classList.add("log-italic");
39
98
  if (this.state.underline)
@@ -46,10 +105,41 @@ export class ColoredConsole {
46
105
  span.classList.add("log-blink");
47
106
  if (this.state.rapidBlink)
48
107
  span.classList.add("log-rapid-blink");
49
- if (this.state.foregroundColor !== null)
50
- span.classList.add(`log-fg-${this.state.foregroundColor}`);
51
- if (this.state.backgroundColor !== null)
52
- span.classList.add(`log-bg-${this.state.backgroundColor}`);
108
+ // Resolve colors with reverse-video support
109
+ let fgRgb = this.state.fgRgb;
110
+ let bgRgb = this.state.bgRgb;
111
+ let fg = this.state.foregroundColor;
112
+ let bg = this.state.backgroundColor;
113
+ if (this.state.reverse) {
114
+ fgRgb = this.state.bgRgb;
115
+ bgRgb = this.state.fgRgb;
116
+ fg = this.state.backgroundColor;
117
+ bg = this.state.foregroundColor;
118
+ // When one side is unset, fill in the terminal defaults so the
119
+ // swap is always visible (fg default=#ddd, bg default=#1c1c1c).
120
+ if (!fgRgb && !fg && !bgRgb && !bg) {
121
+ span.classList.add("log-reverse");
122
+ }
123
+ else {
124
+ if (!fgRgb && !fg)
125
+ fgRgb = "rgb(28,28,28)";
126
+ if (!bgRgb && !bg)
127
+ bgRgb = "rgb(221,221,221)";
128
+ }
129
+ }
130
+ // Inline rgb() style takes priority over CSS class
131
+ if (fgRgb) {
132
+ span.style.color = fgRgb;
133
+ }
134
+ else if (fg !== null) {
135
+ span.classList.add(`log-fg-${fg}`);
136
+ }
137
+ if (bgRgb) {
138
+ span.style.backgroundColor = bgRgb;
139
+ }
140
+ else if (bg !== null) {
141
+ span.classList.add(`log-bg-${bg}`);
142
+ }
53
143
  span.appendChild(document.createTextNode(content));
54
144
  lineSpan.appendChild(span);
55
145
  if (this.state.secret) {
@@ -66,18 +156,39 @@ export class ColoredConsole {
66
156
  const j = match.index;
67
157
  addSpan(line.substring(i, j));
68
158
  i = j + match[0].length;
69
- if (match[1] === undefined)
159
+ // Only process SGR sequences (final byte 'm'); skip cursor, erase, etc.
160
+ if (match[1] === undefined || match[2] !== "m")
161
+ continue;
162
+ const rawCodes = match[1] === "" ? [""] : match[1].split(";");
163
+ const codes = [];
164
+ let invalidSgr = false;
165
+ for (const rawCode of rawCodes) {
166
+ if (rawCode === "") {
167
+ codes.push(0);
168
+ continue;
169
+ }
170
+ if (!/^\d+$/.test(rawCode)) {
171
+ invalidSgr = true;
172
+ break;
173
+ }
174
+ codes.push(Number(rawCode));
175
+ }
176
+ if (invalidSgr)
70
177
  continue;
71
- for (const colorCode of match[1].split(";")) {
72
- switch (parseInt(colorCode)) {
178
+ for (let ci = 0; ci < codes.length; ci++) {
179
+ const code = codes[ci];
180
+ switch (code) {
73
181
  case 0:
74
- // reset
75
182
  this.state.bold = false;
183
+ this.state.dim = false;
76
184
  this.state.italic = false;
77
185
  this.state.underline = false;
78
186
  this.state.strikethrough = false;
79
187
  this.state.foregroundColor = null;
80
188
  this.state.backgroundColor = null;
189
+ this.state.fgRgb = null;
190
+ this.state.bgRgb = null;
191
+ this.state.reverse = false;
81
192
  this.state.secret = false;
82
193
  this.state.blink = false;
83
194
  this.state.rapidBlink = false;
@@ -85,6 +196,9 @@ export class ColoredConsole {
85
196
  case 1:
86
197
  this.state.bold = true;
87
198
  break;
199
+ case 2:
200
+ this.state.dim = true;
201
+ break;
88
202
  case 3:
89
203
  this.state.italic = true;
90
204
  break;
@@ -99,6 +213,9 @@ export class ColoredConsole {
99
213
  this.state.rapidBlink = true;
100
214
  this.state.blink = false;
101
215
  break;
216
+ case 7:
217
+ this.state.reverse = true;
218
+ break;
102
219
  case 8:
103
220
  this.state.secret = true;
104
221
  break;
@@ -107,6 +224,7 @@ export class ColoredConsole {
107
224
  break;
108
225
  case 22:
109
226
  this.state.bold = false;
227
+ this.state.dim = false;
110
228
  break;
111
229
  case 23:
112
230
  this.state.italic = false;
@@ -118,6 +236,9 @@ export class ColoredConsole {
118
236
  this.state.blink = false;
119
237
  this.state.rapidBlink = false;
120
238
  break;
239
+ case 27:
240
+ this.state.reverse = false;
241
+ break;
121
242
  case 28:
122
243
  this.state.secret = false;
123
244
  break;
@@ -126,57 +247,211 @@ export class ColoredConsole {
126
247
  break;
127
248
  case 30:
128
249
  this.state.foregroundColor = "black";
250
+ this.state.fgRgb = null;
129
251
  break;
130
252
  case 31:
131
253
  this.state.foregroundColor = "red";
254
+ this.state.fgRgb = null;
132
255
  break;
133
256
  case 32:
134
257
  this.state.foregroundColor = "green";
258
+ this.state.fgRgb = null;
135
259
  break;
136
260
  case 33:
137
261
  this.state.foregroundColor = "yellow";
262
+ this.state.fgRgb = null;
138
263
  break;
139
264
  case 34:
140
265
  this.state.foregroundColor = "blue";
266
+ this.state.fgRgb = null;
141
267
  break;
142
268
  case 35:
143
269
  this.state.foregroundColor = "magenta";
270
+ this.state.fgRgb = null;
144
271
  break;
145
272
  case 36:
146
273
  this.state.foregroundColor = "cyan";
274
+ this.state.fgRgb = null;
147
275
  break;
148
276
  case 37:
149
277
  this.state.foregroundColor = "white";
278
+ this.state.fgRgb = null;
279
+ break;
280
+ case 38:
281
+ // Extended foreground: 38;5;n (256-color) or 38;2;r;g;b (true-color)
282
+ if (ci + 1 < codes.length) {
283
+ if (codes[ci + 1] === 5) {
284
+ if (ci + 2 < codes.length) {
285
+ const idx = codes[ci + 2];
286
+ if (idx >= 0 && idx <= 7 && ANSI_NAMED[idx]) {
287
+ this.state.foregroundColor = ANSI_NAMED[idx];
288
+ this.state.fgRgb = null;
289
+ }
290
+ else if (idx >= 0 && idx <= 255 && ANSI_256[idx]) {
291
+ this.state.foregroundColor = null;
292
+ this.state.fgRgb = ANSI_256[idx];
293
+ }
294
+ ci += 2;
295
+ }
296
+ else {
297
+ ci += 1;
298
+ }
299
+ }
300
+ else if (codes[ci + 1] === 2) {
301
+ if (ci + 4 < codes.length) {
302
+ this.state.foregroundColor = null;
303
+ const r = Math.max(0, Math.min(255, codes[ci + 2]));
304
+ const g = Math.max(0, Math.min(255, codes[ci + 3]));
305
+ const b = Math.max(0, Math.min(255, codes[ci + 4]));
306
+ this.state.fgRgb = "rgb(" + r + "," + g + "," + b + ")";
307
+ ci += 4;
308
+ }
309
+ else {
310
+ ci = codes.length - 1;
311
+ }
312
+ }
313
+ }
150
314
  break;
151
315
  case 39:
152
316
  this.state.foregroundColor = null;
317
+ this.state.fgRgb = null;
153
318
  break;
154
319
  case 40:
155
320
  this.state.backgroundColor = "black";
321
+ this.state.bgRgb = null;
156
322
  break;
157
323
  case 41:
158
324
  this.state.backgroundColor = "red";
325
+ this.state.bgRgb = null;
159
326
  break;
160
327
  case 42:
161
328
  this.state.backgroundColor = "green";
329
+ this.state.bgRgb = null;
162
330
  break;
163
331
  case 43:
164
332
  this.state.backgroundColor = "yellow";
333
+ this.state.bgRgb = null;
165
334
  break;
166
335
  case 44:
167
336
  this.state.backgroundColor = "blue";
337
+ this.state.bgRgb = null;
168
338
  break;
169
339
  case 45:
170
340
  this.state.backgroundColor = "magenta";
341
+ this.state.bgRgb = null;
171
342
  break;
172
343
  case 46:
173
344
  this.state.backgroundColor = "cyan";
345
+ this.state.bgRgb = null;
174
346
  break;
175
347
  case 47:
176
348
  this.state.backgroundColor = "white";
349
+ this.state.bgRgb = null;
350
+ break;
351
+ case 48:
352
+ // Extended background: 48;5;n (256-color) or 48;2;r;g;b (true-color)
353
+ if (ci + 1 < codes.length) {
354
+ if (codes[ci + 1] === 5) {
355
+ if (ci + 2 < codes.length) {
356
+ const idx = codes[ci + 2];
357
+ if (idx >= 0 && idx <= 7 && ANSI_NAMED[idx]) {
358
+ this.state.backgroundColor = ANSI_NAMED[idx];
359
+ this.state.bgRgb = null;
360
+ }
361
+ else if (idx >= 0 && idx <= 255 && ANSI_256[idx]) {
362
+ this.state.backgroundColor = null;
363
+ this.state.bgRgb = ANSI_256[idx];
364
+ }
365
+ ci += 2;
366
+ }
367
+ else {
368
+ ci += 1;
369
+ }
370
+ }
371
+ else if (codes[ci + 1] === 2) {
372
+ if (ci + 4 < codes.length) {
373
+ this.state.backgroundColor = null;
374
+ const r = Math.max(0, Math.min(255, codes[ci + 2]));
375
+ const g = Math.max(0, Math.min(255, codes[ci + 3]));
376
+ const b = Math.max(0, Math.min(255, codes[ci + 4]));
377
+ this.state.bgRgb = "rgb(" + r + "," + g + "," + b + ")";
378
+ ci += 4;
379
+ }
380
+ else {
381
+ ci = codes.length - 1;
382
+ }
383
+ }
384
+ }
177
385
  break;
178
386
  case 49:
179
387
  this.state.backgroundColor = null;
388
+ this.state.bgRgb = null;
389
+ break;
390
+ // Bright foreground colors
391
+ case 90:
392
+ this.state.foregroundColor = null;
393
+ this.state.fgRgb = ANSI_256[8];
394
+ break;
395
+ case 91:
396
+ this.state.foregroundColor = null;
397
+ this.state.fgRgb = ANSI_256[9];
398
+ break;
399
+ case 92:
400
+ this.state.foregroundColor = null;
401
+ this.state.fgRgb = ANSI_256[10];
402
+ break;
403
+ case 93:
404
+ this.state.foregroundColor = null;
405
+ this.state.fgRgb = ANSI_256[11];
406
+ break;
407
+ case 94:
408
+ this.state.foregroundColor = null;
409
+ this.state.fgRgb = ANSI_256[12];
410
+ break;
411
+ case 95:
412
+ this.state.foregroundColor = null;
413
+ this.state.fgRgb = ANSI_256[13];
414
+ break;
415
+ case 96:
416
+ this.state.foregroundColor = null;
417
+ this.state.fgRgb = ANSI_256[14];
418
+ break;
419
+ case 97:
420
+ this.state.foregroundColor = null;
421
+ this.state.fgRgb = ANSI_256[15];
422
+ break;
423
+ // Bright background colors
424
+ case 100:
425
+ this.state.backgroundColor = null;
426
+ this.state.bgRgb = ANSI_256[8];
427
+ break;
428
+ case 101:
429
+ this.state.backgroundColor = null;
430
+ this.state.bgRgb = ANSI_256[9];
431
+ break;
432
+ case 102:
433
+ this.state.backgroundColor = null;
434
+ this.state.bgRgb = ANSI_256[10];
435
+ break;
436
+ case 103:
437
+ this.state.backgroundColor = null;
438
+ this.state.bgRgb = ANSI_256[11];
439
+ break;
440
+ case 104:
441
+ this.state.backgroundColor = null;
442
+ this.state.bgRgb = ANSI_256[12];
443
+ break;
444
+ case 105:
445
+ this.state.backgroundColor = null;
446
+ this.state.bgRgb = ANSI_256[13];
447
+ break;
448
+ case 106:
449
+ this.state.backgroundColor = null;
450
+ this.state.bgRgb = ANSI_256[14];
451
+ break;
452
+ case 107:
453
+ this.state.backgroundColor = null;
454
+ this.state.bgRgb = ANSI_256[15];
180
455
  break;
181
456
  }
182
457
  }
@@ -193,8 +468,6 @@ export class ColoredConsole {
193
468
  return;
194
469
  }
195
470
  for (const line of this.state.lines) {
196
- // A lone \r is a pure carriage-return signal — update state but don't
197
- // create a DOM node for it (it has no renderable content).
198
471
  if (line === "\r") {
199
472
  this.state.carriageReturn = true;
200
473
  continue;
@@ -217,13 +490,11 @@ export class ColoredConsole {
217
490
  this.targetElement.appendChild(fragment);
218
491
  }
219
492
  this.state.lines = [];
220
- // Keep scroll at bottom
221
493
  if (atBottom) {
222
494
  this.targetElement.scrollTop = this.targetElement.scrollHeight;
223
495
  }
224
496
  }
225
497
  addLine(line) {
226
- // Processing of lines is deferred for performance reasons
227
498
  if (this.state.lines.length === 0) {
228
499
  setTimeout(() => this.processLines(), 0);
229
500
  }
@@ -249,6 +520,9 @@ export const coloredConsoleStyles = `
249
520
  .log-bold {
250
521
  font-weight: bold;
251
522
  }
523
+ .log-dim {
524
+ opacity: 0.5;
525
+ }
252
526
  .log-italic {
253
527
  font-style: italic;
254
528
  }
@@ -283,6 +557,10 @@ export const coloredConsoleStyles = `
283
557
  width: 1px;
284
558
  font-size: 1px;
285
559
  }
560
+ .log-reverse {
561
+ background: #ddd;
562
+ color: #1c1c1c;
563
+ }
286
564
  .log-fg-black {
287
565
  color: rgb(128, 128, 128);
288
566
  }
@@ -1,14 +1,12 @@
1
- // Matches lines that already carry a wall-clock or tick timestamp so we don't
2
- // add a redundant one. Intentionally does NOT match bare log-level prefixes
3
- // like ESPHome's [I][tag:line]: those have no time information.
4
- //
1
+ // Matches lines that already carry a wall-clock timestamp so we don't add a
2
+ // redundant one. Only real wall-clock formats are matched — tick-based
3
+ // formats like FreeRTOS "(12345)" or ESP-IDF "I (15) boot:" are NOT matched
4
+ // because they don't carry time-of-day information
5
5
  // Covered formats:
6
- // (123456) FreeRTOS ms-tick e.g. "(12345) "
7
6
  // [HH:MM:SS] wall-clock bracket
8
7
  // [HH:MM:SS.mmm] wall-clock bracket with millis
9
- // I (1234) tag: ESP-IDF log level + tick e.g. "I (1234) wifi: ..."
10
8
  // HH:MM:SS.mmm plain wall-clock
11
- const DEVICE_TIMESTAMP_RE = /^\s*(?:\(\d+\)\s|\[\d{2}:\d{2}:\d{2}(?:\.\d+)?\]|[DIWEACV] \(\d+\) \w|(?:\d{2}:){2}\d{2}\.\d)/;
9
+ const DEVICE_TIMESTAMP_RE = /^\s*(?:\[\d{2}:\d{2}:\d{2}(?:\.\d+)?\]|(?:\d{2}:){2}\d{2}\.\d)/;
12
10
  export class TimestampTransformer {
13
11
  constructor() {
14
12
  this.deviceHasTimestamps = false;
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/icons/icon-72.png CHANGED
Binary file
package/icons/icon-96.png CHANGED
Binary file