@visulima/pail 3.2.2 → 4.0.0-alpha.10

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.
Files changed (82) hide show
  1. package/CHANGELOG.md +188 -0
  2. package/LICENSE.md +434 -6
  3. package/README.md +355 -24
  4. package/dist/error.d.ts +104 -0
  5. package/dist/error.js +76 -0
  6. package/dist/index.browser.d.ts +3 -1
  7. package/dist/index.browser.js +1490 -3
  8. package/dist/index.server.d.ts +3 -1
  9. package/dist/index.server.js +2668 -14
  10. package/dist/interactive/index.js +2 -2
  11. package/dist/middleware/elysia.d.ts +71 -0
  12. package/dist/middleware/elysia.js +70 -0
  13. package/dist/middleware/express.d.ts +86 -0
  14. package/dist/middleware/express.js +29 -0
  15. package/dist/middleware/fastify.d.ts +81 -0
  16. package/dist/middleware/fastify.js +46 -0
  17. package/dist/middleware/hono.d.ts +85 -0
  18. package/dist/middleware/hono.js +33 -0
  19. package/dist/middleware/next/handler.d.ts +36 -0
  20. package/dist/middleware/next/handler.js +53 -0
  21. package/dist/middleware/next/middleware.d.ts +59 -0
  22. package/dist/middleware/next/storage.d.ts +14 -0
  23. package/dist/middleware/shared/create-middleware-logger.d.ts +82 -0
  24. package/dist/middleware/shared/headers.d.ts +14 -0
  25. package/dist/middleware/shared/routes.d.ts +30 -0
  26. package/dist/middleware/shared/storage.d.ts +29 -0
  27. package/dist/middleware/sveltekit.d.ts +123 -0
  28. package/dist/middleware/sveltekit.js +43 -0
  29. package/dist/object-tree.d.ts +2 -2
  30. package/dist/object-tree.js +7 -7
  31. package/dist/packem_shared/{AbstractJsonReporter-intFdT_A.js → AbstractJsonReporter-CjtVgHbU.js} +112 -28
  32. package/dist/packem_shared/AbstractJsonReporter-DlugSJpY.js +288 -0
  33. package/dist/packem_shared/{InteractiveManager-CZ85hGNW.js → InteractiveManager-CowYA3Hx.js} +17 -11
  34. package/dist/packem_shared/{interactive-stream-hook-DG4BtN12.js → InteractiveStreamHook-BypRlYTX.js} +3 -11
  35. package/dist/packem_shared/{JsonReporter-C0AXk99i.js → JsonReporter-BgPvIyC2.js} +2 -2
  36. package/dist/packem_shared/{JsonReporter-DcM2LBX9.js → JsonReporter-Dbw82ewj.js} +2 -2
  37. package/dist/packem_shared/{PrettyReporter-CuLLKr6-.js → PrettyReporter-C2dCzIaf.js} +54 -8
  38. package/dist/packem_shared/{format-label-Btft2KGP.js → PrettyReporter-gMqa7j_m.js} +372 -78
  39. package/dist/packem_shared/Spinner-Cokext9b.js +2183 -0
  40. package/dist/packem_shared/abstract-pretty-reporter-szQO-IgK.js +2635 -0
  41. package/dist/packem_shared/constants-B1RjD_ps.js +99 -0
  42. package/dist/packem_shared/{constants-DfDr4MHC.js → constants-omsTHUWB.js} +1 -1
  43. package/dist/packem_shared/createPailError-B_sgL0nF.js +76 -0
  44. package/dist/packem_shared/getBarChar-D7JfmdTr.js +459 -0
  45. package/dist/packem_shared/headers-BxHWM6KI.js +127 -0
  46. package/dist/packem_shared/{index-DqKWykfa.js → index-BEfVUy9P.js} +174 -64
  47. package/dist/packem_shared/{index-BomQ3E6J.js → index-Bx3-C0j9.js} +29 -21
  48. package/dist/packem_shared/pailMiddleware-Ci88geIF.js +24 -0
  49. package/dist/packem_shared/storage-D0vqz8OX.js +36 -0
  50. package/dist/packem_shared/{InteractiveStreamHook-DiSubbJ1.js → useLogger-D0rU3lcX.js} +13 -1
  51. package/dist/packem_shared/{write-console-log-based-on-level-DBmRYXpj.js → write-console-log-based-on-level-ree2lDPw.js} +5 -4
  52. package/dist/packem_shared/{write-stream-BG8fhcs3.js → write-stream-BuFtjATz.js} +1 -1
  53. package/dist/pail.browser.d.ts +1 -1
  54. package/dist/processor/environment-processor.d.ts +124 -0
  55. package/dist/processor/environment-processor.js +82 -0
  56. package/dist/processor/message-formatter-processor.d.ts +2 -2
  57. package/dist/processor/message-formatter-processor.js +654 -6
  58. package/dist/processor/opentelemetry-processor.js +4 -4
  59. package/dist/processor/redact-processor.d.ts +1 -1
  60. package/dist/processor/redact-processor.js +2 -1
  61. package/dist/processor/sampling-processor.d.ts +111 -0
  62. package/dist/processor/sampling-processor.js +59 -0
  63. package/dist/progress-bar.d.ts +10 -1
  64. package/dist/progress-bar.js +75 -20
  65. package/dist/reporter/file/json-file-reporter.js +1 -1
  66. package/dist/reporter/http/abstract-http-reporter.js +23 -26
  67. package/dist/reporter/http/http-reporter.edge-light.js +134 -53
  68. package/dist/reporter/json/abstract-json-reporter.d.ts +1 -1
  69. package/dist/reporter/json/index.browser.js +2 -2
  70. package/dist/reporter/json/index.js +2 -2
  71. package/dist/reporter/pretty/index.browser.js +1 -1
  72. package/dist/reporter/pretty/index.js +1 -1
  73. package/dist/reporter/simple/simple-reporter.server.js +8 -12
  74. package/dist/spinner.js +37 -4
  75. package/dist/types.d.ts +4 -4
  76. package/dist/wide-event.d.ts +300 -0
  77. package/dist/wide-event.js +283 -0
  78. package/package.json +73 -8
  79. package/dist/packem_shared/PrettyReporter-BFWaYP_J.js +0 -222
  80. package/dist/packem_shared/abstract-pretty-reporter-DMPDCslJ.js +0 -50
  81. package/dist/packem_shared/get-longest-label-C9PWeyKq.js +0 -9
  82. package/dist/packem_shared/pail.browser-CPjQrsyy.js +0 -1427
@@ -1,4 +1,651 @@
1
- import { b as build } from '../packem_shared/index-BomQ3E6J.js';
1
+ const colorKeywords = /* @__PURE__ */ new Map([
2
+ ["aliceblue", "#f0f8ff"],
3
+ ["antiquewhite", "#faebd7"],
4
+ ["aqua", "#00ffff"],
5
+ ["aquamarine", "#7fffd4"],
6
+ ["azure", "#f0ffff"],
7
+ ["beige", "#f5f5dc"],
8
+ ["bisque", "#ffe4c4"],
9
+ ["black", "#000000"],
10
+ ["blanchedalmond", "#ffebcd"],
11
+ ["blue", "#0000ff"],
12
+ ["blueviolet", "#8a2be2"],
13
+ ["brown", "#a52a2a"],
14
+ ["burlywood", "#deb887"],
15
+ ["cadetblue", "#5f9ea0"],
16
+ ["chartreuse", "#7fff00"],
17
+ ["chocolate", "#d2691e"],
18
+ ["coral", "#ff7f50"],
19
+ ["cornflowerblue", "#6495ed"],
20
+ ["cornsilk", "#fff8dc"],
21
+ ["crimson", "#dc143c"],
22
+ ["cyan", "#00ffff"],
23
+ ["darkblue", "#00008b"],
24
+ ["darkcyan", "#008b8b"],
25
+ ["darkgoldenrod", "#b8860b"],
26
+ ["darkgray", "#a9a9a9"],
27
+ ["darkgreen", "#006400"],
28
+ ["darkgrey", "#a9a9a9"],
29
+ ["darkkhaki", "#bdb76b"],
30
+ ["darkmagenta", "#8b008b"],
31
+ ["darkolivegreen", "#556b2f"],
32
+ ["darkorange", "#ff8c00"],
33
+ ["darkorchid", "#9932cc"],
34
+ ["darkred", "#8b0000"],
35
+ ["darksalmon", "#e9967a"],
36
+ ["darkseagreen", "#8fbc8f"],
37
+ ["darkslateblue", "#483d8b"],
38
+ ["darkslategray", "#2f4f4f"],
39
+ ["darkslategrey", "#2f4f4f"],
40
+ ["darkturquoise", "#00ced1"],
41
+ ["darkviolet", "#9400d3"],
42
+ ["deeppink", "#ff1493"],
43
+ ["deepskyblue", "#00bfff"],
44
+ ["dimgray", "#696969"],
45
+ ["dimgrey", "#696969"],
46
+ ["dodgerblue", "#1e90ff"],
47
+ ["firebrick", "#b22222"],
48
+ ["floralwhite", "#fffaf0"],
49
+ ["forestgreen", "#228b22"],
50
+ ["fuchsia", "#ff00ff"],
51
+ ["gainsboro", "#dcdcdc"],
52
+ ["ghostwhite", "#f8f8ff"],
53
+ ["gold", "#ffd700"],
54
+ ["goldenrod", "#daa520"],
55
+ ["gray", "#808080"],
56
+ ["green", "#008000"],
57
+ ["greenyellow", "#adff2f"],
58
+ ["grey", "#808080"],
59
+ ["honeydew", "#f0fff0"],
60
+ ["hotpink", "#ff69b4"],
61
+ ["indianred", "#cd5c5c"],
62
+ ["indigo", "#4b0082"],
63
+ ["ivory", "#fffff0"],
64
+ ["khaki", "#f0e68c"],
65
+ ["lavender", "#e6e6fa"],
66
+ ["lavenderblush", "#fff0f5"],
67
+ ["lawngreen", "#7cfc00"],
68
+ ["lemonchiffon", "#fffacd"],
69
+ ["lightblue", "#add8e6"],
70
+ ["lightcoral", "#f08080"],
71
+ ["lightcyan", "#e0ffff"],
72
+ ["lightgoldenrodyellow", "#fafad2"],
73
+ ["lightgray", "#d3d3d3"],
74
+ ["lightgreen", "#90ee90"],
75
+ ["lightgrey", "#d3d3d3"],
76
+ ["lightpink", "#ffb6c1"],
77
+ ["lightsalmon", "#ffa07a"],
78
+ ["lightseagreen", "#20b2aa"],
79
+ ["lightskyblue", "#87cefa"],
80
+ ["lightslategray", "#778899"],
81
+ ["lightslategrey", "#778899"],
82
+ ["lightsteelblue", "#b0c4de"],
83
+ ["lightyellow", "#ffffe0"],
84
+ ["lime", "#00ff00"],
85
+ ["limegreen", "#32cd32"],
86
+ ["linen", "#faf0e6"],
87
+ ["magenta", "#ff00ff"],
88
+ ["maroon", "#800000"],
89
+ ["mediumaquamarine", "#66cdaa"],
90
+ ["mediumblue", "#0000cd"],
91
+ ["mediumorchid", "#ba55d3"],
92
+ ["mediumpurple", "#9370db"],
93
+ ["mediumseagreen", "#3cb371"],
94
+ ["mediumslateblue", "#7b68ee"],
95
+ ["mediumspringgreen", "#00fa9a"],
96
+ ["mediumturquoise", "#48d1cc"],
97
+ ["mediumvioletred", "#c71585"],
98
+ ["midnightblue", "#191970"],
99
+ ["mintcream", "#f5fffa"],
100
+ ["mistyrose", "#ffe4e1"],
101
+ ["moccasin", "#ffe4b5"],
102
+ ["navajowhite", "#ffdead"],
103
+ ["navy", "#000080"],
104
+ ["oldlace", "#fdf5e6"],
105
+ ["olive", "#808000"],
106
+ ["olivedrab", "#6b8e23"],
107
+ ["orange", "#ffa500"],
108
+ ["orangered", "#ff4500"],
109
+ ["orchid", "#da70d6"],
110
+ ["palegoldenrod", "#eee8aa"],
111
+ ["palegreen", "#98fb98"],
112
+ ["paleturquoise", "#afeeee"],
113
+ ["palevioletred", "#db7093"],
114
+ ["papayawhip", "#ffefd5"],
115
+ ["peachpuff", "#ffdab9"],
116
+ ["peru", "#cd853f"],
117
+ ["pink", "#ffc0cb"],
118
+ ["plum", "#dda0dd"],
119
+ ["powderblue", "#b0e0e6"],
120
+ ["purple", "#800080"],
121
+ ["rebeccapurple", "#663399"],
122
+ ["red", "#ff0000"],
123
+ ["rosybrown", "#bc8f8f"],
124
+ ["royalblue", "#4169e1"],
125
+ ["saddlebrown", "#8b4513"],
126
+ ["salmon", "#fa8072"],
127
+ ["sandybrown", "#f4a460"],
128
+ ["seagreen", "#2e8b57"],
129
+ ["seashell", "#fff5ee"],
130
+ ["sienna", "#a0522d"],
131
+ ["silver", "#c0c0c0"],
132
+ ["skyblue", "#87ceeb"],
133
+ ["slateblue", "#6a5acd"],
134
+ ["slategray", "#708090"],
135
+ ["slategrey", "#708090"],
136
+ ["snow", "#fffafa"],
137
+ ["springgreen", "#00ff7f"],
138
+ ["steelblue", "#4682b4"],
139
+ ["tan", "#d2b48c"],
140
+ ["teal", "#008080"],
141
+ ["thistle", "#d8bfd8"],
142
+ ["tomato", "#ff6347"],
143
+ ["turquoise", "#40e0d0"],
144
+ ["violet", "#ee82ee"],
145
+ ["wheat", "#f5deb3"],
146
+ ["white", "#ffffff"],
147
+ ["whitesmoke", "#f5f5f5"],
148
+ ["yellow", "#ffff00"],
149
+ ["yellowgreen", "#9acd32"]
150
+ ]);
151
+ const HASH_PATTERN = /^#([\dA-F]{2})([\dA-F]{2})([\dA-F]{2})([\dA-F]{2})?$/i;
152
+ const SMALL_HASH_PATTERN = /^#([\dA-F])([\dA-F])([\dA-F])([\dA-F])?$/i;
153
+ const RGB_PATTERN = /^rgba?\(\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*(,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*)?\)$/;
154
+ const HSL_PATTERN = /^hsla?\(\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))%\s*,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))%\s*(,\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*)?\)$/;
155
+ const getDefaultCss = () => {
156
+ return {
157
+ __proto__: null,
158
+ backgroundColor: null,
159
+ color: null,
160
+ fontStyle: null,
161
+ fontWeight: null,
162
+ textDecorationColor: null,
163
+ textDecorationLine: []
164
+ };
165
+ };
166
+ const SPACE_PATTERN = /\s+/;
167
+ const parseCssColor = (colorString) => {
168
+ if (colorKeywords.has(colorString)) {
169
+ colorString = colorKeywords.get(colorString);
170
+ }
171
+ const hashMatch = HASH_PATTERN.exec(colorString);
172
+ if (hashMatch) {
173
+ return [Number.parseInt(hashMatch[1], 16), Number.parseInt(hashMatch[2], 16), Number.parseInt(hashMatch[3], 16)];
174
+ }
175
+ const smallHashMatch = SMALL_HASH_PATTERN.exec(colorString);
176
+ if (smallHashMatch) {
177
+ return [
178
+ Number.parseInt(`${smallHashMatch[1]}${smallHashMatch[1]}`, 16),
179
+ Number.parseInt(`${smallHashMatch[2]}${smallHashMatch[2]}`, 16),
180
+ Number.parseInt(`${smallHashMatch[3]}${smallHashMatch[3]}`, 16)
181
+ ];
182
+ }
183
+ const rgbMatch = RGB_PATTERN.exec(colorString);
184
+ if (rgbMatch) {
185
+ return [
186
+ Math.round(Math.max(0, Math.min(255, Number(rgbMatch[1])))),
187
+ Math.round(Math.max(0, Math.min(255, Number(rgbMatch[2])))),
188
+ Math.round(Math.max(0, Math.min(255, Number(rgbMatch[3]))))
189
+ ];
190
+ }
191
+ const hslMatch = HSL_PATTERN.exec(colorString);
192
+ if (hslMatch) {
193
+ let h = Number(hslMatch[1]) % 360;
194
+ if (h < 0) {
195
+ h += 360;
196
+ }
197
+ const s = Math.max(0, Math.min(100, Number(hslMatch[2]))) / 100;
198
+ const l = Math.max(0, Math.min(100, Number(hslMatch[3]))) / 100;
199
+ const c = (1 - Math.abs(2 * l - 1)) * s;
200
+ const x = c * (1 - Math.abs(h / 60 % 2 - 1));
201
+ const m = l - c / 2;
202
+ let r_;
203
+ let g_;
204
+ let b_;
205
+ if (h < 60) {
206
+ ({ 0: r_, 1: g_, 2: b_ } = [c, x, 0]);
207
+ } else if (h < 120) {
208
+ ({ 0: r_, 1: g_, 2: b_ } = [x, c, 0]);
209
+ } else if (h < 180) {
210
+ ({ 0: r_, 1: g_, 2: b_ } = [0, c, x]);
211
+ } else if (h < 240) {
212
+ ({ 0: r_, 1: g_, 2: b_ } = [0, x, c]);
213
+ } else if (h < 300) {
214
+ ({ 0: r_, 1: g_, 2: b_ } = [x, 0, c]);
215
+ } else {
216
+ ({ 0: r_, 1: g_, 2: b_ } = [c, 0, x]);
217
+ }
218
+ return [Math.round((r_ + m) * 255), Math.round((g_ + m) * 255), Math.round((b_ + m) * 255)];
219
+ }
220
+ return null;
221
+ };
222
+ const colorEquals = (color1, color2) => color1?.[0] === color2?.[0] && color1?.[1] === color2?.[1] && color1?.[2] === color2?.[2];
223
+ const parseCss = (cssString) => {
224
+ const css = getDefaultCss();
225
+ const rawEntries = [];
226
+ let inValue = false;
227
+ let currentKey = null;
228
+ let parenthesesDepth = 0;
229
+ let currentPart = "";
230
+ for (const c of cssString) {
231
+ if (c === "(") {
232
+ parenthesesDepth += 1;
233
+ } else if (parenthesesDepth > 0) {
234
+ if (c === ")") {
235
+ parenthesesDepth -= 1;
236
+ }
237
+ } else if (inValue) {
238
+ if (c === ";") {
239
+ const value = currentPart.trim();
240
+ if (value !== "") {
241
+ rawEntries.push([currentKey, value]);
242
+ }
243
+ currentKey = null;
244
+ currentPart = "";
245
+ inValue = false;
246
+ continue;
247
+ }
248
+ } else if (c === ":") {
249
+ currentKey = currentPart.trim();
250
+ currentPart = "";
251
+ inValue = true;
252
+ continue;
253
+ }
254
+ currentPart += c;
255
+ }
256
+ if (inValue && parenthesesDepth === 0) {
257
+ const value = currentPart.trim();
258
+ if (value !== "") {
259
+ rawEntries.push([currentKey, value]);
260
+ }
261
+ currentKey = null;
262
+ currentPart = "";
263
+ }
264
+ for (const { 0: key, 1: value } of rawEntries) {
265
+ switch (key) {
266
+ case "background-color": {
267
+ if (value != void 0) {
268
+ css.backgroundColor = value;
269
+ }
270
+ break;
271
+ }
272
+ case "color": {
273
+ if (value != void 0) {
274
+ css.color = value;
275
+ }
276
+ break;
277
+ }
278
+ case "font-style": {
279
+ if (["italic", "oblique", "oblique 14deg"].includes(value)) {
280
+ css.fontStyle = "italic";
281
+ }
282
+ break;
283
+ }
284
+ case "font-weight": {
285
+ if (value === "bold") {
286
+ css.fontWeight = value;
287
+ }
288
+ break;
289
+ }
290
+ case "text-decoration": {
291
+ css.textDecorationColor = null;
292
+ css.textDecorationLine = [];
293
+ const arguments_ = value.split(SPACE_PATTERN);
294
+ for (const argument of arguments_) {
295
+ const maybeColor = parseCssColor(argument);
296
+ if (maybeColor != void 0) {
297
+ css.textDecorationColor = maybeColor;
298
+ } else if (["line-through", "overline", "underline"].includes(argument)) {
299
+ css.textDecorationLine.push(argument);
300
+ }
301
+ }
302
+ break;
303
+ }
304
+ case "text-decoration-color": {
305
+ const color = parseCssColor(value);
306
+ if (color != void 0) {
307
+ css.textDecorationColor = color;
308
+ }
309
+ break;
310
+ }
311
+ case "text-decoration-line": {
312
+ css.textDecorationLine = [];
313
+ const lineTypes = value.split(SPACE_PATTERN);
314
+ for (const lineType of lineTypes) {
315
+ if (["line-through", "overline", "underline"].includes(lineType)) {
316
+ css.textDecorationLine.push(lineType);
317
+ }
318
+ }
319
+ break;
320
+ }
321
+ }
322
+ }
323
+ return css;
324
+ };
325
+ const cssToAnsi = (css, previousCss = null) => {
326
+ previousCss = previousCss ?? getDefaultCss();
327
+ let ansi = "";
328
+ if (!colorEquals(css.backgroundColor, previousCss.backgroundColor)) {
329
+ if (css.backgroundColor == void 0) {
330
+ ansi += "\x1B[49m";
331
+ } else {
332
+ switch (css.backgroundColor) {
333
+ case "black": {
334
+ ansi += "\x1B[40m";
335
+ break;
336
+ }
337
+ case "blue": {
338
+ ansi += "\x1B[44m";
339
+ break;
340
+ }
341
+ case "cyan": {
342
+ ansi += "\x1B[46m";
343
+ break;
344
+ }
345
+ case "green": {
346
+ ansi += "\x1B[42m";
347
+ break;
348
+ }
349
+ case "magenta": {
350
+ ansi += "\x1B[45m";
351
+ break;
352
+ }
353
+ case "red": {
354
+ ansi += "\x1B[41m";
355
+ break;
356
+ }
357
+ case "white": {
358
+ ansi += "\x1B[47m";
359
+ break;
360
+ }
361
+ case "yellow": {
362
+ ansi += "\x1B[43m";
363
+ break;
364
+ }
365
+ default: {
366
+ if (Array.isArray(css.backgroundColor)) {
367
+ const { 0: r, 1: g, 2: b } = css.backgroundColor;
368
+ ansi += `\x1B[48;2;${String(r)};${String(g)};${String(b)}m`;
369
+ } else {
370
+ const parsed = parseCssColor(css.backgroundColor);
371
+ if (parsed === null) {
372
+ ansi += "\x1B[49m";
373
+ } else {
374
+ const { 0: r, 1: g, 2: b } = parsed;
375
+ ansi += `\x1B[48;2;${String(r)};${String(g)};${String(b)}m`;
376
+ }
377
+ }
378
+ }
379
+ }
380
+ }
381
+ }
382
+ if (!colorEquals(css.color, previousCss.color)) {
383
+ if (css.color == void 0) {
384
+ ansi += "\x1B[39m";
385
+ } else {
386
+ switch (css.color) {
387
+ case "black": {
388
+ ansi += "\x1B[30m";
389
+ break;
390
+ }
391
+ case "blue": {
392
+ ansi += "\x1B[34m";
393
+ break;
394
+ }
395
+ case "cyan": {
396
+ ansi += "\x1B[36m";
397
+ break;
398
+ }
399
+ case "green": {
400
+ ansi += "\x1B[32m";
401
+ break;
402
+ }
403
+ case "magenta": {
404
+ ansi += "\x1B[35m";
405
+ break;
406
+ }
407
+ case "red": {
408
+ ansi += "\x1B[31m";
409
+ break;
410
+ }
411
+ case "white": {
412
+ ansi += "\x1B[37m";
413
+ break;
414
+ }
415
+ case "yellow": {
416
+ ansi += "\x1B[33m";
417
+ break;
418
+ }
419
+ default: {
420
+ if (Array.isArray(css.color)) {
421
+ const { 0: r, 1: g, 2: b } = css.color;
422
+ ansi += `\x1B[38;2;${String(r)};${String(g)};${String(b)}m`;
423
+ } else {
424
+ const parsed = parseCssColor(css.color);
425
+ if (parsed === null) {
426
+ ansi += "\x1B[39m";
427
+ } else {
428
+ const { 0: r, 1: g, 2: b } = parsed;
429
+ ansi += `\x1B[38;2;${String(r)};${String(g)};${String(b)}m`;
430
+ }
431
+ }
432
+ }
433
+ }
434
+ }
435
+ }
436
+ if (css.fontWeight !== previousCss.fontWeight) {
437
+ ansi += css.fontWeight === "bold" ? "\x1B[1m" : "\x1B[22m";
438
+ }
439
+ if (css.fontStyle !== previousCss.fontStyle) {
440
+ ansi += css.fontStyle === "italic" ? "\x1B[3m" : "\x1B[23m";
441
+ }
442
+ if (!colorEquals(css.textDecorationColor, previousCss.textDecorationColor)) {
443
+ if (css.textDecorationColor == void 0) {
444
+ ansi += "\x1B[59m";
445
+ } else {
446
+ const { 0: r, 1: g, 2: b } = css.textDecorationColor;
447
+ ansi += `\x1B[58;2;${String(r)};${String(g)};${String(b)}m`;
448
+ }
449
+ }
450
+ if (css.textDecorationLine.includes("line-through") !== previousCss.textDecorationLine.includes("line-through")) {
451
+ ansi += css.textDecorationLine.includes("line-through") ? "\x1B[9m" : "\x1B[29m";
452
+ }
453
+ if (css.textDecorationLine.includes("overline") !== previousCss.textDecorationLine.includes("overline")) {
454
+ ansi += css.textDecorationLine.includes("overline") ? "\x1B[53m" : "\x1B[55m";
455
+ }
456
+ if (css.textDecorationLine.includes("underline") !== previousCss.textDecorationLine.includes("underline")) {
457
+ ansi += css.textDecorationLine.includes("underline") ? "\x1B[4m" : "\x1B[24m";
458
+ }
459
+ return ansi;
460
+ };
461
+ const tryStringify = (o) => {
462
+ try {
463
+ return JSON.stringify(o);
464
+ } catch {
465
+ return '"[Circular]"';
466
+ }
467
+ };
468
+ const CHAR_PERCENT = "%".codePointAt(0);
469
+ const CHAR_s = "s".codePointAt(0);
470
+ const CHAR_d = "d".codePointAt(0);
471
+ const CHAR_f = "f".codePointAt(0);
472
+ const CHAR_i = "i".codePointAt(0);
473
+ const CHAR_O = "O".codePointAt(0);
474
+ const CHAR_o = "o".codePointAt(0);
475
+ const CHAR_j = "j".codePointAt(0);
476
+ const CHAR_c = "c".codePointAt(0);
477
+ const format = (fmt, arguments_ = [], options = {}) => {
478
+ if (typeof fmt !== "string" && typeof fmt !== "object" || fmt === null) {
479
+ throw new TypeError(`fmt must be a string or object, got ${fmt === null ? "null" : typeof fmt}`);
480
+ }
481
+ const stringify = options.stringify ?? tryStringify;
482
+ const offset = 1;
483
+ if (typeof fmt === "object") {
484
+ const argumentsLength = arguments_.length + offset;
485
+ if (argumentsLength === 1) {
486
+ return "{}";
487
+ }
488
+ const objects = Array.from({ length: argumentsLength });
489
+ objects[0] = stringify(fmt);
490
+ for (let index = 1; index < argumentsLength; index += 1) {
491
+ objects[index] = stringify(arguments_[index - offset]);
492
+ }
493
+ return objects.join(" ");
494
+ }
495
+ if (arguments_.length === 0) {
496
+ return fmt;
497
+ }
498
+ let result = "";
499
+ let a = 1 - offset;
500
+ let lastPosition = -1;
501
+ let usedStyle = false;
502
+ let previousCss = null;
503
+ for (let index = 0; index < fmt.length; ) {
504
+ if (fmt.codePointAt(index) === CHAR_PERCENT && index + 1 < fmt.length) {
505
+ lastPosition = lastPosition > -1 ? lastPosition : 0;
506
+ const c = fmt.codePointAt(index + 1);
507
+ if (c === void 0) {
508
+ a += 1;
509
+ break;
510
+ }
511
+ switch (c) {
512
+ case CHAR_c: {
513
+ if (globalThis.window === void 0) {
514
+ const css = parseCss(arguments_[a]);
515
+ if (lastPosition < index) {
516
+ result += fmt.slice(lastPosition, index);
517
+ }
518
+ result += cssToAnsi(css, previousCss);
519
+ if (result !== "") {
520
+ usedStyle = true;
521
+ previousCss = css;
522
+ }
523
+ }
524
+ lastPosition = index + 2;
525
+ index += 1;
526
+ break;
527
+ }
528
+ case CHAR_d:
529
+ case CHAR_f: {
530
+ if (a >= arguments_.length || arguments_[a] == void 0) {
531
+ break;
532
+ }
533
+ if (lastPosition < index) {
534
+ result += fmt.slice(lastPosition, index);
535
+ }
536
+ result += Number(arguments_[a]).toString();
537
+ lastPosition = index + 2;
538
+ index += 1;
539
+ break;
540
+ }
541
+ case CHAR_i: {
542
+ if (a >= arguments_.length || arguments_[a] == void 0) {
543
+ break;
544
+ }
545
+ if (lastPosition < index) {
546
+ result += fmt.slice(lastPosition, index);
547
+ }
548
+ result += Math.floor(Number(arguments_[a])).toString();
549
+ lastPosition = index + 2;
550
+ index += 1;
551
+ break;
552
+ }
553
+ case CHAR_j:
554
+ case CHAR_O:
555
+ case CHAR_o: {
556
+ if (a >= arguments_.length || arguments_[a] === void 0) {
557
+ break;
558
+ }
559
+ if (lastPosition < index) {
560
+ result += fmt.slice(lastPosition, index);
561
+ }
562
+ const temporaryArgument = arguments_[a];
563
+ const type = typeof temporaryArgument;
564
+ if (type === "string") {
565
+ result += `'${temporaryArgument}'`;
566
+ lastPosition = index + 2;
567
+ break;
568
+ }
569
+ if (type === "function") {
570
+ result += temporaryArgument.name ? `[Function: ${temporaryArgument.name}]` : "[Function: <anonymous>]";
571
+ lastPosition = index + 2;
572
+ break;
573
+ }
574
+ result += stringify(temporaryArgument);
575
+ lastPosition = index + 2;
576
+ index += 1;
577
+ break;
578
+ }
579
+ case CHAR_PERCENT: {
580
+ if (lastPosition < index) {
581
+ result += fmt.slice(lastPosition, index);
582
+ }
583
+ result += "%";
584
+ lastPosition = index + 2;
585
+ index += 1;
586
+ a -= 1;
587
+ break;
588
+ }
589
+ case CHAR_s: {
590
+ if (a >= arguments_.length) {
591
+ break;
592
+ }
593
+ if (lastPosition < index) {
594
+ result += fmt.slice(lastPosition, index);
595
+ }
596
+ result += typeof arguments_[a] === "object" ? stringify(arguments_[a]) : String(arguments_[a]);
597
+ lastPosition = index + 2;
598
+ index += 1;
599
+ break;
600
+ }
601
+ default: {
602
+ if (typeof options.formatters?.[c] === "function") {
603
+ if (lastPosition < index) {
604
+ result += fmt.slice(lastPosition, index);
605
+ }
606
+ result += options.formatters[c](arguments_[a]);
607
+ lastPosition = index + 2;
608
+ index += 1;
609
+ }
610
+ }
611
+ }
612
+ a += 1;
613
+ }
614
+ index += 1;
615
+ }
616
+ if (lastPosition === -1) {
617
+ return fmt;
618
+ }
619
+ if (lastPosition < fmt.length) {
620
+ result += fmt.slice(lastPosition);
621
+ }
622
+ if (usedStyle) {
623
+ result += "\x1B[0m";
624
+ }
625
+ return result;
626
+ };
627
+ const build = (options = {}) => {
628
+ const formatters = {};
629
+ if (typeof options.formatters === "object") {
630
+ Object.entries(options.formatters).forEach(([key, formatterFunction]) => {
631
+ if (key.length === 0) {
632
+ throw new Error(`Formatter %${key} has no characters`);
633
+ }
634
+ if (key.length > 1) {
635
+ throw new Error(`Formatter %${key} has more than one character`);
636
+ }
637
+ if (typeof formatterFunction !== "function") {
638
+ throw new TypeError(`Formatter for %${key} is not a function`);
639
+ }
640
+ const c = key.codePointAt(0);
641
+ if (c === void 0) {
642
+ throw new Error(`${key}.codePointAt(0) failed to return a value, please report this issue`);
643
+ }
644
+ formatters[c] = formatterFunction;
645
+ });
646
+ }
647
+ return (f, arguments_ = [], formatOptions = {}) => format(f, arguments_, { ...formatOptions, formatters });
648
+ };
2
649
 
3
650
  class MessageFormatterProcessor {
4
651
  /** Custom stringify function for object serialization */
@@ -17,7 +664,6 @@ class MessageFormatterProcessor {
17
664
  * Sets the stringify function for object serialization.
18
665
  * @param function_ The stringify function to use for serializing objects
19
666
  */
20
- // eslint-disable-next-line , @typescript-eslint/no-explicit-any
21
667
  setStringify(function_) {
22
668
  this.#stringify = function_;
23
669
  }
@@ -47,16 +693,18 @@ class MessageFormatterProcessor {
47
693
  * @returns The formatted data
48
694
  * @private
49
695
  */
50
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
696
  #format(formatter, data, arguments_ = []) {
52
697
  if (typeof data === "string") {
53
698
  return formatter(data, arguments_);
54
699
  }
55
700
  if (typeof data === "object" && data !== null) {
56
- for (const index in data) {
57
- const value = data[index];
701
+ const record = data;
702
+ const keys = Object.keys(record);
703
+ for (let i = 0; i < keys.length; i += 1) {
704
+ const index = keys[i];
705
+ const value = record[index];
58
706
  if (typeof value === "string" || Array.isArray(value) || typeof value === "object") {
59
- data[index] = this.#format(formatter, value, arguments_);
707
+ record[index] = this.#format(formatter, value, arguments_);
60
708
  }
61
709
  }
62
710
  }
@@ -14,9 +14,9 @@ class OpenTelemetryProcessor {
14
14
  * @param options Configuration options for field names and nesting
15
15
  */
16
16
  constructor(options = {}) {
17
- this.#traceIdField = options.traceIdFieldName || "trace_id";
18
- this.#spanIdField = options.spanIdFieldName || "span_id";
19
- this.#traceFlagsField = options.traceFlagsFieldName || "trace_flags";
17
+ this.#traceIdField = options.traceIdFieldName ?? "trace_id";
18
+ this.#spanIdField = options.spanIdFieldName ?? "span_id";
19
+ this.#traceFlagsField = options.traceFlagsFieldName ?? "trace_flags";
20
20
  this.#traceFieldName = options.traceFieldName;
21
21
  }
22
22
  /**
@@ -44,7 +44,7 @@ class OpenTelemetryProcessor {
44
44
  const traceData = this.#traceFieldName ? {
45
45
  [this.#traceFieldName]: fields
46
46
  } : fields;
47
- meta.context = [...meta.context || [], traceData];
47
+ meta.context = [...meta.context ?? [], traceData];
48
48
  return meta;
49
49
  }
50
50
  }