@loglayer/transport-pretty-terminal 1.0.0 → 2.0.0

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/dist/index.cjs CHANGED
@@ -1,11 +1,13 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3;// src/PrettyTerminalTransport.ts
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4;// src/PrettyTerminalTransport.ts
2
2
  var _transport = require('@loglayer/transport');
3
- var _chalk = require('chalk'); var chalk6 = _interopRequireWildcard(_chalk);
3
+ var _chalk = require('chalk'); var chalk8 = _interopRequireWildcard(_chalk);
4
4
 
5
- // src/LogRenderer.ts
5
+ // src/views/SimpleView.ts
6
+ var _wrapansi = require('wrap-ansi'); var _wrapansi2 = _interopRequireDefault(_wrapansi);
7
+
8
+ // src/views/utils.ts
6
9
 
7
10
  var _clitruncate = require('cli-truncate'); var _clitruncate2 = _interopRequireDefault(_clitruncate);
8
- var _wrapansi = require('wrap-ansi'); var _wrapansi2 = _interopRequireDefault(_wrapansi);
9
11
 
10
12
  // src/vendor/prettyjson.js
11
13
 
@@ -177,14 +179,14 @@ var renderToArray = (data, options, indentation) => {
177
179
  var validateOptionsAndSetDefaults = (options) => {
178
180
  options = options || {};
179
181
  options.emptyArrayMsg = options.emptyArrayMsg || "(empty array)";
180
- options.keysColor = options.keysColor || chalk6.default.green;
181
- options.dashColor = options.dashColor || chalk6.default.green;
182
- options.booleanColor = options.booleanColor || chalk6.default.cyan;
183
- options.nullUndefinedColor = options.nullUndefinedColor || chalk6.default.grey;
184
- options.numberColor = options.numberColor || chalk6.default.blue;
182
+ options.keysColor = options.keysColor || chalk8.default.green;
183
+ options.dashColor = options.dashColor || chalk8.default.green;
184
+ options.booleanColor = options.booleanColor || chalk8.default.cyan;
185
+ options.nullUndefinedColor = options.nullUndefinedColor || chalk8.default.grey;
186
+ options.numberColor = options.numberColor || chalk8.default.blue;
185
187
  options.positiveNumberColor = options.positiveNumberColor || options.numberColor;
186
188
  options.negativeNumberColor = options.negativeNumberColor || options.numberColor;
187
- options.dateColor = options.dateColor || chalk6.default.magenta;
189
+ options.dateColor = options.dateColor || chalk8.default.magenta;
188
190
  options.defaultIndentation = options.defaultIndentation || 2;
189
191
  options.noColor = !!options.noColor;
190
192
  options.noAlign = !!options.noAlign;
@@ -201,193 +203,204 @@ function render(data, options, indentation) {
201
203
  return renderToArray(data, options, indentation).join("\n");
202
204
  }
203
205
 
204
- // src/LogRenderer.ts
205
- var LogRenderer = (_class = class {
206
- /** Current terminal width in characters */
207
-
208
- /** Maximum depth for displaying nested objects inline */
209
-
210
- /** Maximum length for inline data before truncating */
211
-
212
- /** Whether arrays are currently collapsed in detail view */
213
- __init() {this.isArraysCollapsed = false}
214
- /** Color and formatting config for simple log view */
206
+ // src/views/utils.ts
207
+ function formatTimestamp(timestamp, colorFn) {
208
+ const date = new Date(timestamp);
209
+ return colorFn(
210
+ `${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}:${date.getSeconds().toString().padStart(2, "0")}.${date.getMilliseconds().toString().padStart(3, "0")}`
211
+ );
212
+ }
213
+ function getLevelColor(level, colors) {
214
+ return colors[level] || chalk8.default.white;
215
+ }
216
+ function formatValue(value, expanded = false) {
217
+ if (typeof value === "string") return value;
218
+ if (typeof value === "number" || typeof value === "boolean") return value.toString();
219
+ if (value === null) return "null";
220
+ if (value === void 0) return "undefined";
221
+ if (Array.isArray(value)) return expanded ? JSON.stringify(value) : "[...]";
222
+ if (typeof value === "object") return expanded ? JSON.stringify(value) : "{...}";
223
+ return value.toString();
224
+ }
225
+ function formatInlineData(data, config, maxDepth, maxLength, expanded = false) {
226
+ if (!data) return "";
227
+ const pairs = [];
228
+ const traverse = (obj, prefix = "", depth = 0) => {
229
+ if (!expanded && depth >= maxDepth) return;
230
+ for (const [key, value] of Object.entries(obj)) {
231
+ const fullKey = prefix ? `${prefix}.${key}` : key;
232
+ if (value && typeof value === "object" && !Array.isArray(value)) {
233
+ if (expanded) {
234
+ pairs.push(`${config.dataKeyColor(fullKey)}=${config.dataValueColor(JSON.stringify(value))}`);
235
+ } else {
236
+ traverse(value, fullKey, depth + 1);
237
+ }
238
+ } else {
239
+ pairs.push(`${config.dataKeyColor(fullKey)}=${config.dataValueColor(formatValue(value, expanded))}`);
240
+ }
241
+ }
242
+ };
243
+ traverse(data);
244
+ const result = pairs.join(" ");
245
+ return expanded ? result : _clitruncate2.default.call(void 0, result, maxLength);
246
+ }
247
+
248
+ // src/views/SimpleView.ts
249
+ var SimpleView = class {
215
250
 
216
- /** Color and formatting config for detailed view */
217
251
 
218
- /** Current scroll position in detailed view */
219
- __init2() {this.detailViewScrollPos = 0}
220
- /** Cached content lines for detailed view */
221
- __init3() {this.detailViewContent = []}
222
- /**
223
- * Creates a new LogRenderer instance.
224
- *
225
- * @param simpleViewConfig - Configuration for simple log view
226
- * @param detailedViewConfig - Configuration for detailed view
227
- * @param maxInlineDepth - Maximum depth for inline object display
228
- * @param maxInlineLength - Maximum length before truncation
229
- */
230
- constructor(simpleViewConfig, detailedViewConfig, maxInlineDepth, maxInlineLength) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);
231
- this.simpleViewConfig = simpleViewConfig;
232
- this.detailedViewConfig = detailedViewConfig;
233
- this.maxInlineDepth = maxInlineDepth;
234
- this.maxInlineLength = maxInlineLength;
252
+ constructor(config) {
253
+ this.config = config;
235
254
  this.termWidth = process.stdout.columns || 80;
236
- process.stdout.on("resize", () => {
237
- this.termWidth = process.stdout.columns || 80;
238
- });
239
- }
240
- /**
241
- * Gets the appropriate color for a log level.
242
- * Handles both simple and detailed view color schemes.
243
- *
244
- * @param level - Log level (trace, debug, info, etc.)
245
- * @param isDetailView - Whether to use detailed view colors
246
- * @returns Chalk instance for the color
247
- */
248
- getLevelColor(level, isDetailView = false) {
249
- const colors = isDetailView ? this.detailedViewConfig.colors : this.simpleViewConfig.colors;
250
- return colors[level] || chalk6.default.white;
251
255
  }
252
- /**
253
- * Formats a timestamp into a human-readable string.
254
- * Format: HH:MM:SS.mmm
255
- *
256
- * @param timestamp - Unix timestamp in milliseconds
257
- * @returns Formatted and colored timestamp string
258
- */
259
- formatTimestamp(timestamp) {
260
- const date = new Date(timestamp);
261
- return this.simpleViewConfig.logIdColor(
262
- `${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}:${date.getSeconds().toString().padStart(2, "0")}.${date.getMilliseconds().toString().padStart(3, "0")}`
263
- );
256
+ updateTerminalWidth(width) {
257
+ this.termWidth = width;
264
258
  }
265
259
  /**
266
- * Formats structured data for inline display.
267
- * Handles nested objects, arrays, and primitive values.
268
- * Truncates output to maintain readability.
269
- *
270
- * @param data - Data to format
271
- * @returns Formatted string with color coding
272
- */
273
- formatInlineData(data) {
274
- if (!data) return "";
275
- const formatValue = (value) => {
276
- if (typeof value === "string") return value;
277
- if (typeof value === "number" || typeof value === "boolean") return value.toString();
278
- if (value === null) return "null";
279
- if (value === void 0) return "undefined";
280
- if (Array.isArray(value)) return "[...]";
281
- if (typeof value === "object") return "{...}";
282
- return value.toString();
283
- };
284
- const pairs = [];
285
- const traverse = (obj, prefix = "", depth = 0) => {
286
- if (depth >= this.maxInlineDepth) return;
287
- for (const [key, value] of Object.entries(obj)) {
288
- const fullKey = prefix ? `${prefix}.${key}` : key;
289
- if (value && typeof value === "object" && !Array.isArray(value)) {
290
- traverse(value, fullKey, depth + 1);
291
- } else {
292
- pairs.push(
293
- `${this.simpleViewConfig.dataKeyColor(fullKey)}=${this.simpleViewConfig.dataValueColor(formatValue(value))}`
294
- );
295
- }
296
- }
297
- };
298
- traverse(data);
299
- const result = pairs.join(" ");
300
- return _clitruncate2.default.call(void 0, result, this.maxInlineLength);
301
- }
302
- /**
303
- * Renders a single log line in simple view format.
304
- * Format: [timestamp] LEVEL [id] message data
305
- *
306
- * @param entry - Log entry to render
260
+ * Renders a single log entry based on the current view mode
307
261
  */
308
262
  renderLogLine(entry) {
309
- const levelColor = this.getLevelColor(entry.level);
310
- const timestamp = this.formatTimestamp(entry.timestamp);
263
+ const levelColor = getLevelColor(entry.level, this.config.config.colors);
311
264
  const chevron = levelColor(`\u25B6 ${entry.level.toUpperCase()} `);
312
- const logId = this.simpleViewConfig.logIdColor(`[${entry.id}]`);
313
- const message = entry.message;
314
- const data = entry.data ? this.formatInlineData(JSON.parse(entry.data)) : "";
315
- const line = `${timestamp} ${chevron}${logId} ${message}${data ? ` ${data}` : ""}`;
316
- console.log(_wrapansi2.default.call(void 0, line, this.termWidth, { hard: true }));
265
+ const message = entry.message || "(no message)";
266
+ const timestamp = formatTimestamp(entry.timestamp, this.config.config.logIdColor);
267
+ switch (this.config.viewMode) {
268
+ case "condensed": {
269
+ const condensedLine = `${timestamp} ${chevron}${message}`;
270
+ console.log(_wrapansi2.default.call(void 0, condensedLine, this.termWidth, { hard: true }));
271
+ break;
272
+ }
273
+ case "full": {
274
+ const logId = this.config.config.logIdColor(`[${entry.id}]`);
275
+ const fullData = entry.data ? formatInlineData(
276
+ JSON.parse(entry.data),
277
+ this.config.config,
278
+ this.config.maxInlineDepth,
279
+ this.config.maxInlineLength,
280
+ true
281
+ ) : "";
282
+ const expandedLine = `${timestamp} ${chevron}${logId} ${message}${fullData ? ` ${fullData}` : ""}`;
283
+ console.log(_wrapansi2.default.call(void 0, expandedLine, this.termWidth, { hard: true }));
284
+ break;
285
+ }
286
+ default: {
287
+ const logId = this.config.config.logIdColor(`[${entry.id}]`);
288
+ const normalData = entry.data ? formatInlineData(
289
+ JSON.parse(entry.data),
290
+ this.config.config,
291
+ this.config.maxInlineDepth,
292
+ this.config.maxInlineLength
293
+ ) : "";
294
+ const normalLine = `${timestamp} ${chevron}${logId} ${message}${normalData ? ` ${normalData}` : ""}`;
295
+ console.log(_wrapansi2.default.call(void 0, normalLine, this.termWidth, { hard: true }));
296
+ break;
297
+ }
298
+ }
299
+ }
300
+ render() {
301
+ throw new Error("SimpleView.render() should not be called directly. Use renderLogLine() instead.");
302
+ }
303
+ };
304
+
305
+ // src/views/DetailView.ts
306
+
307
+
308
+ var DetailView = (_class = class {
309
+
310
+
311
+ __init() {this.detailViewContent = []}
312
+ constructor(config) {;_class.prototype.__init.call(this);
313
+ this.config = config;
314
+ this.termWidth = process.stdout.columns || 80;
315
+ }
316
+ updateTerminalWidth(width) {
317
+ this.termWidth = width;
317
318
  }
318
319
  /**
319
- * Formats a compact single-line version of a log entry.
320
- * Used for showing context in detailed view.
321
- *
322
- * @param entry - Log entry to render
323
- * @param prefix - Optional prefix (e.g., "←" for previous entry)
324
- * @returns Formatted log line
320
+ * Formats a compact single-line version of a log entry
325
321
  */
326
322
  formatCompactLogLine(entry, prefix = "") {
327
323
  if (!entry) return "";
328
- const levelColor = this.getLevelColor(entry.level, true);
329
- const logId = this.detailedViewConfig.logIdColor(`[${entry.id}]`);
324
+ const levelColor = getLevelColor(entry.level, this.config.config.colors);
325
+ const logId = this.config.config.logIdColor(`[${entry.id}]`);
330
326
  const line = `${prefix}${levelColor(entry.level.toUpperCase())} ${logId} ${entry.message}`;
331
- return this.detailedViewConfig.separatorColor(_wrapansi2.default.call(void 0, line, this.termWidth, { hard: true }));
327
+ return this.config.config.separatorColor(_wrapansi2.default.call(void 0, line, this.termWidth, { hard: true }));
332
328
  }
333
329
  /**
334
- * Renders the detailed view of a log entry.
335
- * Shows full entry details with context and formatted data.
336
- *
337
- * @param entry - Log entry to show in detail
338
- * @param prevEntry - Previous entry for context
339
- * @param nextEntry - Next entry for context
340
- * @param scrollPos - Current scroll position
330
+ * Formats a timestamp into a human-readable relative time
341
331
  */
342
- renderDetailView(entry, prevEntry, nextEntry, scrollPos = 0) {
332
+ formatRelativeTime(timestamp) {
333
+ const now = /* @__PURE__ */ new Date();
334
+ const diffMs = now.getTime() - timestamp.getTime();
335
+ const diffSecs = Math.floor(diffMs / 1e3);
336
+ const diffMins = Math.floor(diffSecs / 60);
337
+ const diffHours = Math.floor(diffMins / 60);
338
+ const diffDays = Math.floor(diffHours / 24);
339
+ if (diffSecs < 60) return `${diffSecs}s ago`;
340
+ if (diffMins < 60) return `${diffMins}m ago`;
341
+ if (diffHours < 24) return `${diffHours}h ago`;
342
+ if (diffDays === 1) return "yesterday";
343
+ if (diffDays < 30) return `${diffDays}d ago`;
344
+ return timestamp.toLocaleDateString();
345
+ }
346
+ render() {
343
347
  console.clear();
344
- if (this.isJsonView) {
345
- if (entry.data) {
346
- console.log(JSON.stringify(JSON.parse(entry.data)));
348
+ if (this.config.isJsonView) {
349
+ if (this.config.entry.data) {
350
+ console.log(JSON.stringify(JSON.parse(this.config.entry.data)));
347
351
  } else {
348
352
  console.log("{}");
349
353
  }
350
354
  console.log(`
351
- ${this.detailedViewConfig.separatorColor("TAB to return to detailed view")}`);
355
+ ${this.config.config.separatorColor("TAB to return to detailed view")}`);
352
356
  return;
353
357
  }
354
358
  const headerContent = [];
355
- if (prevEntry) {
356
- const prevLine = this.formatCompactLogLine(prevEntry, "\u2190 ");
359
+ if (this.config.prevEntry) {
360
+ const prevLine = this.formatCompactLogLine(this.config.prevEntry, "\u2190 ");
357
361
  headerContent.push(prevLine);
358
- headerContent.push(this.detailedViewConfig.separatorColor("\u2500".repeat(this.termWidth)));
362
+ headerContent.push(this.config.config.separatorColor("\u2500".repeat(this.termWidth)));
359
363
  }
360
364
  const footerContent = [];
361
- if (nextEntry) {
362
- footerContent.push(this.detailedViewConfig.separatorColor("\u2500".repeat(this.termWidth)));
363
- const nextLine = this.formatCompactLogLine(nextEntry, "\u2192 ");
365
+ if (this.config.nextEntry) {
366
+ footerContent.push(this.config.config.separatorColor("\u2500".repeat(this.termWidth)));
367
+ const nextLine = this.formatCompactLogLine(this.config.nextEntry, "\u2192 ");
364
368
  footerContent.push(nextLine);
365
369
  }
366
370
  footerContent.push("");
367
- footerContent.push(
368
- this.detailedViewConfig.separatorColor("TAB to exit \u2022 \u2191/\u2193 scroll \u2022 Q/W page up/down \u2022 J raw JSON")
369
- );
370
- footerContent.push(this.detailedViewConfig.separatorColor("\u2190/\u2192 navigate \u2022 A/S first/last log \u2022 C toggle arrays"));
371
+ footerContent.push(this.config.config.separatorColor("TAB to exit \u2022 \u2191/\u2193 scroll \u2022 Q/W page up/down \u2022 J raw JSON"));
372
+ footerContent.push(this.config.config.separatorColor("\u2190/\u2192 navigate \u2022 A/S first/last log \u2022 C toggle arrays"));
371
373
  const mainContent = [];
372
- const levelColor = this.getLevelColor(entry.level, true);
373
- const header = levelColor(`=== Log Detail [${entry.id}] ===`);
374
+ const levelColor = getLevelColor(this.config.entry.level, this.config.config.colors);
375
+ let headerText = `=== Log Detail [${this.config.entry.id}] (${this.config.currentLogIndex} / ${this.config.totalLogs})`;
376
+ if (this.config.filterText) {
377
+ headerText += ` [Filter: ${this.config.filterText}]`;
378
+ }
379
+ headerText += " ===";
380
+ const header = levelColor(headerText);
374
381
  mainContent.push(header);
375
- const timestamp = new Date(entry.timestamp);
376
- const isoTime = timestamp.toISOString();
382
+ const timestamp = new Date(this.config.entry.timestamp);
383
+ const isoTime = formatTimestamp(this.config.entry.timestamp, this.config.config.dataValueColor);
377
384
  const relativeTime = this.formatRelativeTime(timestamp);
385
+ mainContent.push(`${this.config.config.labelColor("Timestamp:")} ${isoTime} (${relativeTime})`);
378
386
  mainContent.push(
379
- `${this.detailedViewConfig.labelColor("Timestamp:")} ${this.detailedViewConfig.dataValueColor(isoTime)} (${relativeTime})`
380
- );
381
- mainContent.push(`${this.detailedViewConfig.labelColor("Level:")} ${levelColor.bold(entry.level.toUpperCase())}`);
382
- mainContent.push(
383
- `${this.detailedViewConfig.labelColor("Message:")} ${this.detailedViewConfig.dataValueColor(entry.message)}`
387
+ `${this.config.config.labelColor("Level:")} ${levelColor.bold(this.config.entry.level.toUpperCase())}`
384
388
  );
385
- if (entry.data) {
386
- mainContent.push(this.detailedViewConfig.labelColor("\nData:"));
387
- const jsonLines = render(JSON.parse(entry.data), {
388
- ...this.detailedViewConfig.jsonColors,
389
+ if (this.config.entry.message) {
390
+ mainContent.push(
391
+ `${this.config.config.labelColor("Message:")} ${this.config.config.dataValueColor(this.config.entry.message)}`
392
+ );
393
+ } else {
394
+ mainContent.push(
395
+ `${this.config.config.labelColor("Message:")} ${this.config.config.dataValueColor.dim("(no message)")}`
396
+ );
397
+ }
398
+ if (this.config.entry.data) {
399
+ mainContent.push(this.config.config.labelColor("\nData:"));
400
+ const jsonLines = render(JSON.parse(this.config.entry.data), {
401
+ ...this.config.config.jsonColors,
389
402
  defaultIndentation: 2,
390
- collapseArrays: this.isArraysCollapsed
403
+ collapseArrays: this.config.isArraysCollapsed
391
404
  }).split("\n");
392
405
  mainContent.push(...jsonLines);
393
406
  }
@@ -395,36 +408,34 @@ ${this.detailedViewConfig.separatorColor("TAB to return to detailed view")}`);
395
408
  const headerHeight = headerContent.length;
396
409
  const footerHeight = footerContent.length;
397
410
  const scrollIndicatorLines = 2;
398
- const bufferSpace = 2;
411
+ const bufferSpace = 4;
399
412
  const availableHeight = Math.max(
400
413
  0,
401
414
  process.stdout.rows - headerHeight - footerHeight - scrollIndicatorLines - bufferSpace
402
415
  );
403
- this.detailViewScrollPos = Math.max(0, Math.min(scrollPos, mainContent.length - availableHeight));
404
416
  for (const line of headerContent) {
405
417
  console.log(line);
406
418
  }
407
- if (this.detailViewScrollPos > 0) {
408
- console.log(chalk6.default.dim("\u2191 More content above"));
419
+ if (this.config.scrollPos > 0) {
420
+ console.log(chalk8.default.dim("\u2191 More content above"));
409
421
  }
410
- const startIndex = this.detailViewScrollPos;
422
+ const startIndex = this.config.scrollPos;
411
423
  const visibleContent = mainContent.slice(startIndex, startIndex + availableHeight);
412
424
  for (const line of visibleContent) {
413
425
  console.log(line);
414
426
  }
415
- if (this.detailViewScrollPos + availableHeight < mainContent.length) {
416
- console.log(chalk6.default.dim("\u2193 More content below"));
427
+ if (this.config.scrollPos + availableHeight < mainContent.length) {
428
+ console.log(chalk8.default.dim("\u2193 More content below"));
417
429
  }
418
430
  for (const line of footerContent) {
419
431
  console.log(line);
420
432
  }
421
433
  }
422
434
  /**
423
- * Updates the scroll position in detailed view
424
- * @param delta - Number of lines to scroll (positive for down, negative for up)
435
+ * Gets the maximum scroll position based on current content and window size
425
436
  */
426
- scrollDetailView(delta) {
427
- const headerHeight = 2;
437
+ getMaxScrollPosition() {
438
+ const headerHeight = this.config.prevEntry ? 2 : 0;
428
439
  const footerHeight = 5;
429
440
  const scrollIndicatorLines = 2;
430
441
  const bufferSpace = 2;
@@ -432,100 +443,210 @@ ${this.detailedViewConfig.separatorColor("TAB to return to detailed view")}`);
432
443
  0,
433
444
  process.stdout.rows - headerHeight - footerHeight - scrollIndicatorLines - bufferSpace
434
445
  );
435
- const maxScroll = Math.max(0, this.detailViewContent.length - availableHeight);
436
- this.detailViewScrollPos = Math.max(0, Math.min(maxScroll, this.detailViewScrollPos + delta));
446
+ return Math.max(0, this.detailViewContent.length - availableHeight);
437
447
  }
438
- /**
439
- * Gets the current scroll position
440
- */
441
- getDetailViewScrollPos() {
442
- return this.detailViewScrollPos;
448
+ }, _class);
449
+
450
+ // src/views/SelectionView.ts
451
+
452
+
453
+ var SelectionView = class {
454
+
455
+
456
+ constructor(config) {
457
+ this.config = config;
458
+ this.termWidth = process.stdout.columns || 80;
443
459
  }
444
- /**
445
- * Renders the interactive selection view.
446
- * Shows a scrollable list of logs with current selection.
447
- *
448
- * Features:
449
- * - Pagination for large log sets
450
- * - Active filter display
451
- * - Scroll indicators
452
- * - Selected item highlighting
453
- *
454
- * @param logs - Array of log entries to display
455
- * @param selectedIndex - Index of currently selected log
456
- * @param filterText - Current filter text (if any)
457
- * @param newLogCount - Number of new logs since last render (optional)
458
- */
459
- renderSelectionView(logs, selectedIndex, filterText, newLogCount = 0) {
460
+ updateTerminalWidth(width) {
461
+ this.termWidth = width;
462
+ }
463
+ render() {
460
464
  console.clear();
461
- const headerHeight = filterText ? 2 : 0;
465
+ const headerHeight = this.config.filterText ? 2 : 0;
462
466
  const footerHeight = 2;
463
467
  const availableHeight = process.stdout.rows - headerHeight - footerHeight;
464
- if (filterText) {
465
- console.log(chalk6.default.cyan("Filter:"), chalk6.default.white(filterText));
466
- console.log(chalk6.default.dim("\u2500".repeat(this.termWidth)));
468
+ if (this.config.filterText) {
469
+ console.log(chalk8.default.cyan("Filter:"), chalk8.default.white(this.config.filterText));
470
+ console.log(chalk8.default.dim("\u2500".repeat(this.termWidth)));
467
471
  }
468
- if (logs.length === 0) {
469
- console.log(chalk6.default.yellow("No matching logs found"));
472
+ if (this.config.logs.length === 0) {
473
+ console.log(chalk8.default.yellow("No matching logs found"));
470
474
  } else {
471
475
  const visibleLines = Math.min(availableHeight, 20);
472
476
  const bottomPadding = 2;
473
- let startIdx = Math.max(0, selectedIndex - (visibleLines - bottomPadding - 1));
474
- const endIdx = Math.min(logs.length, startIdx + visibleLines);
475
- if (endIdx - startIdx < visibleLines && endIdx < logs.length) {
477
+ let startIdx = Math.max(0, this.config.selectedIndex - (visibleLines - bottomPadding - 1));
478
+ const endIdx = Math.min(this.config.logs.length, startIdx + visibleLines);
479
+ if (endIdx - startIdx < visibleLines && endIdx < this.config.logs.length) {
476
480
  startIdx = Math.max(0, endIdx - visibleLines);
477
481
  }
478
482
  if (startIdx > 0) {
479
- console.log(chalk6.default.dim(" \u2191 More logs above"));
483
+ console.log(chalk8.default.dim(" \u2191 More logs above"));
480
484
  }
481
- logs.slice(startIdx, endIdx).forEach((entry, index) => {
485
+ this.config.logs.slice(startIdx, endIdx).forEach((entry, index) => {
482
486
  const actualIndex = startIdx + index;
483
- const isSelected = actualIndex === selectedIndex;
484
- const prefix = isSelected ? this.simpleViewConfig.selectorColor("\u25BA ") : " ";
485
- const timestamp = this.formatTimestamp(entry.timestamp);
486
- const levelColor = this.getLevelColor(entry.level);
487
+ const isSelected = actualIndex === this.config.selectedIndex;
488
+ const prefix = isSelected ? this.config.config.selectorColor("\u25BA ") : " ";
489
+ const timestamp = formatTimestamp(entry.timestamp, this.config.config.logIdColor);
490
+ const levelColor = getLevelColor(entry.level, this.config.config.colors);
487
491
  const chevron = levelColor(`${entry.level.toUpperCase()} `);
488
- const logId = chalk6.default.dim(`[${entry.id}]`);
492
+ const logId = chalk8.default.dim(`[${entry.id}]`);
489
493
  const message = entry.message;
490
- const data = entry.data ? this.formatInlineData(JSON.parse(entry.data)) : "";
491
- const mainLine = `${prefix}${timestamp} ${chevron}${logId} ${message}`;
494
+ const data = entry.data ? ` ${formatInlineData(JSON.parse(entry.data), this.config.config, 0, 0, true)}` : "";
495
+ const mainLine = `${prefix}${timestamp} ${chevron}${logId} ${message}${data}`;
492
496
  console.log(_wrapansi2.default.call(void 0, mainLine, this.termWidth - 2, { hard: true }));
493
- if (data) {
494
- const wrappedData = _wrapansi2.default.call(void 0, data, this.termWidth - (isSelected ? 6 : 2), { hard: true });
495
- const indentedLines = wrappedData.split("\n").map((line) => isSelected ? ` ${line}` : line);
496
- console.log(indentedLines.join("\n"));
497
- }
498
497
  });
499
- if (endIdx < logs.length || newLogCount > 0) {
500
- const moreLogsText = newLogCount > 0 ? this.simpleViewConfig.selectorColor(
501
- ` \u2193 ${newLogCount} new log${newLogCount === 1 ? "" : "s"} available (press \u2193 to view)`
502
- ) : chalk6.default.dim(" \u2193 More logs below");
498
+ if (endIdx < this.config.logs.length || this.config.newLogCount > 0) {
499
+ const moreLogsText = this.config.newLogCount > 0 ? this.config.config.selectorColor(
500
+ ` \u2193 ${this.config.newLogCount} new log${this.config.newLogCount === 1 ? "" : "s"} available (press \u2193 to view)`
501
+ ) : chalk8.default.dim(" \u2193 More logs below");
503
502
  console.log(moreLogsText);
504
503
  }
505
504
  }
506
- console.log(chalk6.default.dim("\nType to filter \u2022 Enter to view details \u2022 TAB to exit"));
505
+ console.log(chalk8.default.dim("\nType to filter \u2022 Enter to view details \u2022 TAB to exit"));
506
+ }
507
+ };
508
+
509
+ // src/LogRenderer.ts
510
+ var LogRenderer = (_class2 = class {
511
+ /** Current terminal width in characters */
512
+
513
+ /** Maximum depth for displaying nested objects inline */
514
+
515
+ /** Maximum length for inline data before truncating */
516
+
517
+ /** Whether arrays are currently collapsed in detail view */
518
+ __init2() {this.isArraysCollapsed = true}
519
+ /** Current view mode in simple mode */
520
+ __init3() {this.viewMode = "full"}
521
+ /** Color and formatting config for simple log view */
522
+
523
+ /** Color and formatting config for detailed view */
524
+
525
+ /** Whether we're showing raw JSON view */
526
+ __init4() {this.isJsonView = false}
527
+ /** Current scroll position in detailed view */
528
+ __init5() {this.detailViewScrollPos = 0}
529
+ /** View instances */
530
+
531
+ __init6() {this.detailView = null}
532
+ __init7() {this.selectionView = null}
533
+ /**
534
+ * Creates a new LogRenderer instance.
535
+ *
536
+ * @param simpleViewConfig - Configuration for simple log view
537
+ * @param detailedViewConfig - Configuration for detailed view
538
+ * @param maxInlineDepth - Maximum depth for inline object display
539
+ * @param maxInlineLength - Maximum length before truncation
540
+ */
541
+ constructor(simpleViewConfig, detailedViewConfig, maxInlineDepth, maxInlineLength) {;_class2.prototype.__init2.call(this);_class2.prototype.__init3.call(this);_class2.prototype.__init4.call(this);_class2.prototype.__init5.call(this);_class2.prototype.__init6.call(this);_class2.prototype.__init7.call(this);
542
+ this.simpleViewConfig = simpleViewConfig;
543
+ this.detailedViewConfig = detailedViewConfig;
544
+ this.maxInlineDepth = maxInlineDepth;
545
+ this.maxInlineLength = maxInlineLength;
546
+ this.termWidth = process.stdout.columns || 80;
547
+ this.simpleView = new SimpleView({
548
+ viewMode: this.viewMode,
549
+ maxInlineDepth: this.maxInlineDepth,
550
+ maxInlineLength: this.maxInlineLength,
551
+ config: this.simpleViewConfig
552
+ });
553
+ this.detailView = null;
554
+ this.selectionView = null;
555
+ process.stdout.on("resize", () => {
556
+ this.termWidth = process.stdout.columns || 80;
557
+ this.simpleView.updateTerminalWidth(this.termWidth);
558
+ if (this.detailView) {
559
+ this.detailView.updateTerminalWidth(this.termWidth);
560
+ }
561
+ if (this.selectionView) {
562
+ this.selectionView.updateTerminalWidth(this.termWidth);
563
+ }
564
+ });
565
+ }
566
+ /**
567
+ * Renders a single log line in simple view format.
568
+ * Format: [timestamp] LEVEL [id] message data
569
+ * Condensed Format: [timestamp] LEVEL message
570
+ * Expanded Format: [timestamp] LEVEL [id] message full_data
571
+ *
572
+ * @param entry - Log entry to render
573
+ */
574
+ renderLogLine(entry) {
575
+ this.simpleView.renderLogLine(entry);
576
+ }
577
+ /**
578
+ * Renders the detailed view of a log entry.
579
+ * Shows full entry details with context and formatted data.
580
+ *
581
+ * @param entry - Log entry to show in detail
582
+ * @param prevEntry - Previous entry for context
583
+ * @param nextEntry - Next entry for context
584
+ * @param scrollPos - Current scroll position
585
+ * @param currentLogIndex - Current log index (optional)
586
+ * @param totalLogs - Total logs count (optional)
587
+ * @param filterText - Current filter text (if any)
588
+ */
589
+ renderDetailView(entry, prevEntry, nextEntry, scrollPos = 0, currentLogIndex, totalLogs, filterText = "") {
590
+ const config = {
591
+ entry,
592
+ prevEntry,
593
+ nextEntry,
594
+ scrollPos,
595
+ isArraysCollapsed: this.isArraysCollapsed,
596
+ isJsonView: this.isJsonView,
597
+ currentLogIndex: _nullishCoalesce(currentLogIndex, () => ( (prevEntry ? 2 : nextEntry ? 1 : 1))),
598
+ // Use provided index or fallback
599
+ totalLogs: _nullishCoalesce(totalLogs, () => ( 1)),
600
+ // Use provided total or fallback
601
+ filterText,
602
+ config: this.detailedViewConfig
603
+ };
604
+ if (!this.detailView) {
605
+ this.detailView = new DetailView(config);
606
+ } else {
607
+ this.detailView = new DetailView(config);
608
+ }
609
+ this.detailView.render();
507
610
  }
508
611
  /**
509
- * Formats a timestamp into a human-readable relative time
510
- * @param timestamp - Date to format
511
- * @returns Formatted relative time string
612
+ * Updates the scroll position in detailed view
613
+ * @param delta - Number of lines to scroll
512
614
  */
513
- formatRelativeTime(timestamp) {
514
- const now = /* @__PURE__ */ new Date();
515
- const diffMs = now.getTime() - timestamp.getTime();
516
- const diffSecs = Math.floor(diffMs / 1e3);
517
- const diffMins = Math.floor(diffSecs / 60);
518
- const diffHours = Math.floor(diffMins / 60);
519
- const diffDays = Math.floor(diffHours / 24);
520
- if (diffSecs < 60) return `${diffSecs}s ago`;
521
- if (diffMins < 60) return `${diffMins}m ago`;
522
- if (diffHours < 24) return `${diffHours}h ago`;
523
- if (diffDays === 1) return "yesterday";
524
- if (diffDays < 30) return `${diffDays}d ago`;
525
- return timestamp.toLocaleDateString();
615
+ scrollDetailView(delta) {
616
+ if (!this.detailView) return;
617
+ const maxScroll = this.detailView.getMaxScrollPosition();
618
+ this.detailViewScrollPos = Math.max(0, Math.min(maxScroll, this.detailViewScrollPos + delta));
619
+ }
620
+ /**
621
+ * Gets the current scroll position
622
+ */
623
+ getDetailViewScrollPos() {
624
+ return this.detailViewScrollPos;
625
+ }
626
+ /**
627
+ * Renders the selection view with a list of logs.
628
+ * Shows filtered logs with selection highlight and data preview.
629
+ *
630
+ * @param logs - Array of logs to display
631
+ * @param selectedIndex - Index of currently selected log
632
+ * @param filterText - Current filter text (if any)
633
+ * @param newLogCount - Number of new logs available
634
+ */
635
+ renderSelectionView(logs, selectedIndex, filterText, newLogCount) {
636
+ const config = {
637
+ logs,
638
+ selectedIndex,
639
+ filterText,
640
+ newLogCount,
641
+ config: this.detailedViewConfig
642
+ };
643
+ if (!this.selectionView) {
644
+ this.selectionView = new SelectionView(config);
645
+ } else {
646
+ this.selectionView = new SelectionView(config);
647
+ }
648
+ this.selectionView.render();
526
649
  }
527
- /** Whether we're showing raw JSON view */
528
- __init4() {this.isJsonView = false}
529
650
  /**
530
651
  * Toggles JSON view state
531
652
  */
@@ -544,7 +665,36 @@ ${this.detailedViewConfig.separatorColor("TAB to return to detailed view")}`);
544
665
  toggleArrayCollapse() {
545
666
  this.isArraysCollapsed = !this.isArraysCollapsed;
546
667
  }
547
- }, _class);
668
+ /**
669
+ * Cycles through view modes: full -> truncated -> condensed
670
+ */
671
+ cycleViewMode() {
672
+ switch (this.viewMode) {
673
+ case "full":
674
+ this.viewMode = "truncated";
675
+ break;
676
+ case "truncated":
677
+ this.viewMode = "condensed";
678
+ break;
679
+ case "condensed":
680
+ this.viewMode = "full";
681
+ break;
682
+ }
683
+ this.simpleView = new SimpleView({
684
+ viewMode: this.viewMode,
685
+ maxInlineDepth: this.maxInlineDepth,
686
+ maxInlineLength: this.maxInlineLength,
687
+ config: this.simpleViewConfig
688
+ });
689
+ return this.viewMode;
690
+ }
691
+ /**
692
+ * Gets current view mode
693
+ */
694
+ getViewMode() {
695
+ return this.viewMode;
696
+ }
697
+ }, _class2);
548
698
 
549
699
  // src/LogStorage.ts
550
700
  var _path = require('path');
@@ -636,6 +786,34 @@ var LogStorage = class {
636
786
  const pattern = `%${searchText}%`;
637
787
  return this.db.prepare(query).all(pattern, pattern, pattern);
638
788
  }
789
+ /**
790
+ * Gets the total number of logs in the database.
791
+ * Uses an efficient COUNT query instead of loading all logs.
792
+ *
793
+ * @returns Total number of log entries
794
+ */
795
+ getLogCount() {
796
+ const result = this.db.prepare("SELECT COUNT(*) as count FROM logs").get();
797
+ return result.count;
798
+ }
799
+ /**
800
+ * Gets the total number of logs matching a search query.
801
+ * Uses an efficient COUNT query instead of loading all logs.
802
+ *
803
+ * @param searchText - Text to search for
804
+ * @returns Number of matching log entries
805
+ */
806
+ getFilteredLogCount(searchText) {
807
+ const query = `
808
+ SELECT COUNT(*) as count FROM logs
809
+ WHERE id LIKE ?
810
+ OR message LIKE ?
811
+ OR data LIKE ?
812
+ `;
813
+ const pattern = `%${searchText}%`;
814
+ const result = this.db.prepare(query).get(pattern, pattern, pattern);
815
+ return result.count;
816
+ }
639
817
  /**
640
818
  * Closes the database connection and performs cleanup.
641
819
  * Should be called when the application exits or the transport is destroyed.
@@ -648,18 +826,22 @@ var LogStorage = class {
648
826
  // src/UIManager.ts
649
827
 
650
828
  var _keypress = require('keypress'); var _keypress2 = _interopRequireDefault(_keypress);
651
- var UIManager = (_class2 = class {
829
+ var UIManager = (_class3 = class {
652
830
  /**
653
831
  * Creates a new UIManager instance.
654
832
  * Sets up keyboard handling and cleanup handlers.
655
833
  *
656
834
  * @param renderer - Instance for handling log display
657
835
  * @param storage - Instance for log persistence
836
+ * @param disableInteractiveMode - Whether to disable interactive mode
658
837
  */
659
- constructor(renderer, storage) {;_class2.prototype.__init5.call(this);_class2.prototype.__init6.call(this);_class2.prototype.__init7.call(this);_class2.prototype.__init8.call(this);_class2.prototype.__init9.call(this);_class2.prototype.__init10.call(this);_class2.prototype.__init11.call(this);_class2.prototype.__init12.call(this);_class2.prototype.__init13.call(this);_class2.prototype.__init14.call(this);_class2.prototype.__init15.call(this);
838
+ constructor(renderer, storage, disableInteractiveMode = false) {;_class3.prototype.__init8.call(this);_class3.prototype.__init9.call(this);_class3.prototype.__init10.call(this);_class3.prototype.__init11.call(this);_class3.prototype.__init12.call(this);_class3.prototype.__init13.call(this);_class3.prototype.__init14.call(this);_class3.prototype.__init15.call(this);_class3.prototype.__init16.call(this);_class3.prototype.__init17.call(this);_class3.prototype.__init18.call(this);
660
839
  this.renderer = renderer;
661
840
  this.storage = storage;
662
- this.setupKeyboardHandling();
841
+ this.isInteractiveDisabled = disableInteractiveMode;
842
+ if (!this.isInteractiveDisabled) {
843
+ this.setupKeyboardHandling();
844
+ }
663
845
  process.stdout.on("resize", () => {
664
846
  this.termWidth = process.stdout.columns || 80;
665
847
  if (this.isDetailView) {
@@ -673,27 +855,29 @@ var UIManager = (_class2 = class {
673
855
  });
674
856
  }
675
857
  /** Whether the UI is in log selection mode */
676
- __init5() {this.isSelectionMode = false}
858
+ __init8() {this.isSelectionMode = false}
677
859
  /** Whether the UI is showing detailed log view */
678
- __init6() {this.isDetailView = false}
860
+ __init9() {this.isDetailView = false}
679
861
  /** Whether log streaming is paused */
680
- __init7() {this.isPaused = false}
862
+ __init10() {this.isPaused = false}
863
+ /** Whether interactive mode is disabled */
864
+
681
865
  /** Buffer for logs received while paused */
682
- __init8() {this.pauseBuffer = []}
866
+ __init11() {this.pauseBuffer = []}
683
867
  /** Buffer for new logs in selection mode */
684
- __init9() {this.selectionBuffer = []}
868
+ __init12() {this.selectionBuffer = []}
685
869
  /** Index of currently selected log entry */
686
- __init10() {this.selectedIndex = 0}
870
+ __init13() {this.selectedIndex = 0}
687
871
  /** Current filter text for log searching */
688
- __init11() {this.filterText = ""}
872
+ __init14() {this.filterText = ""}
689
873
  /** Cached array of filtered log entries */
690
- __init12() {this.logs = []}
874
+ __init15() {this.logs = []}
691
875
  /** Polling interval for checking new logs in detail view */
692
- __init13() {this.detailViewPollInterval = null}
876
+ __init16() {this.detailViewPollInterval = null}
693
877
  /** Polling interval for checking new logs in selection view */
694
- __init14() {this.selectionViewPollInterval = null}
878
+ __init17() {this.selectionViewPollInterval = null}
695
879
  /** Current terminal width in characters */
696
- __init15() {this.termWidth = process.stdout.columns || 80}
880
+ __init18() {this.termWidth = process.stdout.columns || 80}
697
881
  /**
698
882
  * Sets up keyboard input handling and cleanup.
699
883
  * Configures raw mode for immediate key processing.
@@ -753,13 +937,22 @@ var UIManager = (_class2 = class {
753
937
  this.detailViewPollInterval = null;
754
938
  return;
755
939
  }
756
- const currentLogs = this.storage.getAllLogs();
757
- if (currentLogs.length > this.logs.length && this.selectedIndex === this.logs.length - 1) {
758
- this.logs = currentLogs;
940
+ const totalCount = this.filterText ? this.storage.getFilteredLogCount(this.filterText) : this.storage.getLogCount();
941
+ if (totalCount !== this.logs.length) {
942
+ const storedLogs = this.filterText ? this.storage.searchLogs(this.filterText) : this.storage.getAllLogs();
943
+ this.logs = storedLogs;
759
944
  const entry = this.logs[this.selectedIndex];
760
945
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
761
946
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
762
- this.renderer.renderDetailView(entry, prevEntry, nextEntry, this.renderer.getDetailViewScrollPos());
947
+ this.renderer.renderDetailView(
948
+ entry,
949
+ prevEntry,
950
+ nextEntry,
951
+ this.renderer.getDetailViewScrollPos(),
952
+ this.selectedIndex + 1,
953
+ totalCount,
954
+ this.filterText
955
+ );
763
956
  }
764
957
  }, 2e3);
765
958
  }
@@ -770,18 +963,22 @@ var UIManager = (_class2 = class {
770
963
  * @private
771
964
  */
772
965
  updateFilteredLogs() {
773
- const storedLogs = this.filterText ? this.storage.searchLogs(this.filterText) : this.storage.getAllLogs();
774
- this.logs = storedLogs.slice(0, storedLogs.length - this.selectionBuffer.length);
775
- if (this.logs.length > 0) {
776
- this.selectedIndex = Math.min(this.selectedIndex, Math.max(0, this.logs.length - 1));
777
- } else {
778
- this.selectedIndex = 0;
966
+ const totalCount = this.filterText ? this.storage.getFilteredLogCount(this.filterText) : this.storage.getLogCount();
967
+ const effectiveCount = totalCount - this.selectionBuffer.length;
968
+ if (effectiveCount !== this.logs.length) {
969
+ const storedLogs = this.filterText ? this.storage.searchLogs(this.filterText) : this.storage.getAllLogs();
970
+ this.logs = storedLogs.slice(0, storedLogs.length - this.selectionBuffer.length);
971
+ if (this.logs.length > 0) {
972
+ this.selectedIndex = Math.min(this.selectedIndex, Math.max(0, this.logs.length - 1));
973
+ } else {
974
+ this.selectedIndex = 0;
975
+ }
779
976
  }
780
977
  }
781
978
  updateNewLogsNotification() {
782
979
  if (!this.isSelectionMode || !this.selectionBuffer.length) return;
783
980
  process.stdout.write(`\x1B[2A\r${" ".repeat(this.termWidth)}\r`);
784
- const notification = chalk6.default.dim(
981
+ const notification = chalk8.default.dim(
785
982
  `${this.selectionBuffer.length} new log${this.selectionBuffer.length === 1 ? "" : "s"} available (press \u2193 to view)`
786
983
  );
787
984
  process.stdout.write(`${notification}
@@ -796,6 +993,10 @@ var UIManager = (_class2 = class {
796
993
  */
797
994
  handleNewLog(entry) {
798
995
  this.storage.store(entry);
996
+ if (this.isInteractiveDisabled) {
997
+ this.renderer.renderLogLine(entry);
998
+ return;
999
+ }
799
1000
  if (this.isSelectionMode) {
800
1001
  this.selectionBuffer.push(entry);
801
1002
  this.renderer.renderSelectionView(this.logs, this.selectedIndex, this.filterText, this.selectionBuffer.length);
@@ -804,7 +1005,7 @@ var UIManager = (_class2 = class {
804
1005
  if (!this.isDetailView) {
805
1006
  if (this.isPaused) {
806
1007
  this.pauseBuffer.push(entry);
807
- process.stdout.write(`\r${chalk6.default.yellow(`\u23F8 Paused (${this.pauseBuffer.length} new logs)`)}${" ".repeat(20)}`);
1008
+ process.stdout.write(`\r${chalk8.default.yellow(`\u23F8 Paused (${this.pauseBuffer.length} new logs)`)}${" ".repeat(20)}`);
808
1009
  } else {
809
1010
  this.renderer.renderLogLine(entry);
810
1011
  }
@@ -845,19 +1046,39 @@ var UIManager = (_class2 = class {
845
1046
  }
846
1047
  this.pauseBuffer = [];
847
1048
  } else if (this.isPaused) {
848
- process.stdout.write(`\r${chalk6.default.yellow("\u23F8 Paused (0 new logs)")}${" ".repeat(20)}`);
1049
+ process.stdout.write(`\r${chalk8.default.yellow("\u23F8 Paused (0 new logs)")}${" ".repeat(20)}`);
1050
+ }
1051
+ return;
1052
+ }
1053
+ if (!this.isSelectionMode && !this.isDetailView && ch === "c") {
1054
+ const newMode = this.renderer.cycleViewMode();
1055
+ console.clear();
1056
+ const logs = this.storage.getAllLogs();
1057
+ for (const entry of logs) {
1058
+ this.renderer.renderLogLine(entry);
849
1059
  }
1060
+ const modeDescriptions = {
1061
+ full: "Full view enabled (all data shown without truncation)",
1062
+ truncated: "Truncated view enabled (timestamp, ID, level, message, truncated data)",
1063
+ condensed: "Condensed view enabled (timestamp, level and message only)"
1064
+ };
1065
+ process.stdout.write(`\r${chalk8.default.cyan(`\u2139 ${modeDescriptions[newMode]}`)}${" ".repeat(20)}`);
1066
+ setTimeout(() => {
1067
+ process.stdout.write(`\r${" ".repeat(100)}\r`);
1068
+ }, 3e3);
850
1069
  return;
851
1070
  }
852
1071
  if (!this.isSelectionMode && !this.isDetailView && _optionalChain([key, 'optionalAccess', _3 => _3.name]) === "tab") {
1072
+ this.isSelectionMode = true;
1073
+ this.filterText = "";
853
1074
  if (this.isPaused) {
854
- this.isPaused = false;
1075
+ this.selectionBuffer = [...this.pauseBuffer];
855
1076
  this.pauseBuffer = [];
856
- process.stdout.write(`\r${" ".repeat(50)}\r`);
1077
+ const storedLogs = this.storage.getAllLogs();
1078
+ this.logs = storedLogs.slice(0, storedLogs.length - this.selectionBuffer.length);
1079
+ } else {
1080
+ this.updateFilteredLogs();
857
1081
  }
858
- this.isSelectionMode = true;
859
- this.filterText = "";
860
- this.updateFilteredLogs();
861
1082
  this.selectedIndex = Math.max(0, this.logs.length - 1);
862
1083
  this.renderer.renderSelectionView(this.logs, this.selectedIndex, this.filterText, this.selectionBuffer.length);
863
1084
  this.startSelectionViewPolling();
@@ -898,7 +1119,15 @@ var UIManager = (_class2 = class {
898
1119
  const selectedEntry = this.logs[this.selectedIndex];
899
1120
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
900
1121
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
901
- this.renderer.renderDetailView(selectedEntry, prevEntry, nextEntry);
1122
+ this.renderer.renderDetailView(
1123
+ selectedEntry,
1124
+ prevEntry,
1125
+ nextEntry,
1126
+ 0,
1127
+ this.selectedIndex + 1,
1128
+ this.logs.length,
1129
+ this.filterText
1130
+ );
902
1131
  this.startDetailViewPolling();
903
1132
  }
904
1133
  return;
@@ -924,7 +1153,7 @@ var UIManager = (_class2 = class {
924
1153
  }
925
1154
  this.filterText = "";
926
1155
  console.clear();
927
- const logs = [...this.storage.getAllLogs()].reverse();
1156
+ const logs = this.storage.getAllLogs();
928
1157
  for (const entry of logs) {
929
1158
  this.renderer.renderLogLine(entry);
930
1159
  }
@@ -947,7 +1176,15 @@ var UIManager = (_class2 = class {
947
1176
  const entry = this.logs[this.selectedIndex];
948
1177
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
949
1178
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
950
- this.renderer.renderDetailView(entry, prevEntry, nextEntry, this.renderer.getDetailViewScrollPos());
1179
+ this.renderer.renderDetailView(
1180
+ entry,
1181
+ prevEntry,
1182
+ nextEntry,
1183
+ this.renderer.getDetailViewScrollPos(),
1184
+ this.selectedIndex + 1,
1185
+ this.logs.length,
1186
+ this.filterText
1187
+ );
951
1188
  break;
952
1189
  }
953
1190
  case "down": {
@@ -955,7 +1192,15 @@ var UIManager = (_class2 = class {
955
1192
  const entry = this.logs[this.selectedIndex];
956
1193
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
957
1194
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
958
- this.renderer.renderDetailView(entry, prevEntry, nextEntry, this.renderer.getDetailViewScrollPos());
1195
+ this.renderer.renderDetailView(
1196
+ entry,
1197
+ prevEntry,
1198
+ nextEntry,
1199
+ this.renderer.getDetailViewScrollPos(),
1200
+ this.selectedIndex + 1,
1201
+ this.logs.length,
1202
+ this.filterText
1203
+ );
959
1204
  break;
960
1205
  }
961
1206
  case "left": {
@@ -964,7 +1209,15 @@ var UIManager = (_class2 = class {
964
1209
  const entry = this.logs[this.selectedIndex];
965
1210
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
966
1211
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
967
- this.renderer.renderDetailView(entry, prevEntry, nextEntry);
1212
+ this.renderer.renderDetailView(
1213
+ entry,
1214
+ prevEntry,
1215
+ nextEntry,
1216
+ 0,
1217
+ this.selectedIndex + 1,
1218
+ this.logs.length,
1219
+ this.filterText
1220
+ );
968
1221
  }
969
1222
  break;
970
1223
  }
@@ -974,7 +1227,15 @@ var UIManager = (_class2 = class {
974
1227
  const entry = this.logs[this.selectedIndex];
975
1228
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
976
1229
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
977
- this.renderer.renderDetailView(entry, prevEntry, nextEntry);
1230
+ this.renderer.renderDetailView(
1231
+ entry,
1232
+ prevEntry,
1233
+ nextEntry,
1234
+ 0,
1235
+ this.selectedIndex + 1,
1236
+ this.logs.length,
1237
+ this.filterText
1238
+ );
978
1239
  }
979
1240
  break;
980
1241
  }
@@ -984,7 +1245,15 @@ var UIManager = (_class2 = class {
984
1245
  const entry = this.logs[this.selectedIndex];
985
1246
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
986
1247
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
987
- this.renderer.renderDetailView(entry, prevEntry, nextEntry, this.renderer.getDetailViewScrollPos());
1248
+ this.renderer.renderDetailView(
1249
+ entry,
1250
+ prevEntry,
1251
+ nextEntry,
1252
+ this.renderer.getDetailViewScrollPos(),
1253
+ this.selectedIndex + 1,
1254
+ this.logs.length,
1255
+ this.filterText
1256
+ );
988
1257
  break;
989
1258
  }
990
1259
  this.isDetailView = false;
@@ -1011,7 +1280,14 @@ var UIManager = (_class2 = class {
1011
1280
  const entry = this.logs[this.selectedIndex];
1012
1281
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
1013
1282
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
1014
- this.renderer.renderDetailView(entry, prevEntry, nextEntry, this.renderer.getDetailViewScrollPos());
1283
+ this.renderer.renderDetailView(
1284
+ entry,
1285
+ prevEntry,
1286
+ nextEntry,
1287
+ this.renderer.getDetailViewScrollPos(),
1288
+ this.selectedIndex + 1,
1289
+ this.logs.length
1290
+ );
1015
1291
  break;
1016
1292
  }
1017
1293
  case "q": {
@@ -1019,7 +1295,14 @@ var UIManager = (_class2 = class {
1019
1295
  const entry = this.logs[this.selectedIndex];
1020
1296
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
1021
1297
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
1022
- this.renderer.renderDetailView(entry, prevEntry, nextEntry, this.renderer.getDetailViewScrollPos());
1298
+ this.renderer.renderDetailView(
1299
+ entry,
1300
+ prevEntry,
1301
+ nextEntry,
1302
+ this.renderer.getDetailViewScrollPos(),
1303
+ this.selectedIndex + 1,
1304
+ this.logs.length
1305
+ );
1023
1306
  break;
1024
1307
  }
1025
1308
  case "a": {
@@ -1028,7 +1311,7 @@ var UIManager = (_class2 = class {
1028
1311
  const entry = this.logs[this.selectedIndex];
1029
1312
  const prevEntry = null;
1030
1313
  const nextEntry = this.logs.length > 1 ? this.logs[1] : null;
1031
- this.renderer.renderDetailView(entry, prevEntry, nextEntry);
1314
+ this.renderer.renderDetailView(entry, prevEntry, nextEntry, 0, 1, this.logs.length);
1032
1315
  }
1033
1316
  break;
1034
1317
  }
@@ -1039,7 +1322,7 @@ var UIManager = (_class2 = class {
1039
1322
  const entry = this.logs[this.selectedIndex];
1040
1323
  const prevEntry = lastIndex > 0 ? this.logs[lastIndex - 1] : null;
1041
1324
  const nextEntry = null;
1042
- this.renderer.renderDetailView(entry, prevEntry, nextEntry);
1325
+ this.renderer.renderDetailView(entry, prevEntry, nextEntry, 0, this.logs.length, this.logs.length);
1043
1326
  }
1044
1327
  break;
1045
1328
  }
@@ -1048,7 +1331,14 @@ var UIManager = (_class2 = class {
1048
1331
  const entry = this.logs[this.selectedIndex];
1049
1332
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
1050
1333
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
1051
- this.renderer.renderDetailView(entry, prevEntry, nextEntry, this.renderer.getDetailViewScrollPos());
1334
+ this.renderer.renderDetailView(
1335
+ entry,
1336
+ prevEntry,
1337
+ nextEntry,
1338
+ this.renderer.getDetailViewScrollPos(),
1339
+ this.selectedIndex + 1,
1340
+ this.logs.length
1341
+ );
1052
1342
  break;
1053
1343
  }
1054
1344
  case "j": {
@@ -1056,304 +1346,304 @@ var UIManager = (_class2 = class {
1056
1346
  const entry = this.logs[this.selectedIndex];
1057
1347
  const prevEntry = this.selectedIndex > 0 ? this.logs[this.selectedIndex - 1] : null;
1058
1348
  const nextEntry = this.selectedIndex < this.logs.length - 1 ? this.logs[this.selectedIndex + 1] : null;
1059
- this.renderer.renderDetailView(entry, prevEntry, nextEntry);
1349
+ this.renderer.renderDetailView(entry, prevEntry, nextEntry, 0, this.selectedIndex + 1, this.logs.length);
1060
1350
  break;
1061
1351
  }
1062
1352
  }
1063
1353
  }
1064
1354
  }
1065
1355
  }
1066
- }, _class2);
1356
+ }, _class3);
1067
1357
 
1068
1358
  // src/themes.ts
1069
1359
 
1070
1360
  var moonlight = {
1071
1361
  simpleView: {
1072
1362
  colors: {
1073
- trace: chalk6.default.rgb(114, 135, 153),
1363
+ trace: chalk8.default.rgb(114, 135, 153),
1074
1364
  // Muted blue-grey for less important info
1075
- debug: chalk6.default.rgb(130, 170, 255),
1365
+ debug: chalk8.default.rgb(130, 170, 255),
1076
1366
  // Soft blue that pops but doesn't strain
1077
- info: chalk6.default.rgb(195, 232, 141),
1367
+ info: chalk8.default.rgb(195, 232, 141),
1078
1368
  // Sage green for good readability
1079
- warn: chalk6.default.rgb(255, 203, 107),
1369
+ warn: chalk8.default.rgb(255, 203, 107),
1080
1370
  // Warm yellow, less harsh than pure yellow
1081
- error: chalk6.default.rgb(247, 118, 142),
1371
+ error: chalk8.default.rgb(247, 118, 142),
1082
1372
  // Soft red that stands out without being aggressive
1083
- fatal: chalk6.default.bgRgb(247, 118, 142).white
1373
+ fatal: chalk8.default.bgRgb(247, 118, 142).white
1084
1374
  // Inverted soft red for maximum visibility
1085
1375
  },
1086
- logIdColor: chalk6.default.rgb(84, 98, 117),
1376
+ logIdColor: chalk8.default.rgb(84, 98, 117),
1087
1377
  // Darker blue-grey for secondary information
1088
- dataValueColor: chalk6.default.rgb(209, 219, 231),
1378
+ dataValueColor: chalk8.default.rgb(209, 219, 231),
1089
1379
  // Light grey-blue for primary content
1090
- dataKeyColor: chalk6.default.rgb(130, 170, 255),
1380
+ dataKeyColor: chalk8.default.rgb(130, 170, 255),
1091
1381
  // Matching debug blue for consistency
1092
- selectorColor: chalk6.default.rgb(137, 221, 255)
1382
+ selectorColor: chalk8.default.rgb(137, 221, 255)
1093
1383
  // Ice blue for selection indicators
1094
1384
  },
1095
1385
  detailedView: {
1096
1386
  colors: {
1097
- trace: chalk6.default.rgb(114, 135, 153),
1098
- debug: chalk6.default.rgb(130, 170, 255),
1099
- info: chalk6.default.rgb(195, 232, 141),
1100
- warn: chalk6.default.rgb(255, 203, 107),
1101
- error: chalk6.default.rgb(247, 118, 142),
1102
- fatal: chalk6.default.bgRgb(247, 118, 142).white
1387
+ trace: chalk8.default.rgb(114, 135, 153),
1388
+ debug: chalk8.default.rgb(130, 170, 255),
1389
+ info: chalk8.default.rgb(195, 232, 141),
1390
+ warn: chalk8.default.rgb(255, 203, 107),
1391
+ error: chalk8.default.rgb(247, 118, 142),
1392
+ fatal: chalk8.default.bgRgb(247, 118, 142).white
1103
1393
  },
1104
- logIdColor: chalk6.default.rgb(84, 98, 117),
1105
- dataValueColor: chalk6.default.rgb(209, 219, 231),
1106
- dataKeyColor: chalk6.default.rgb(130, 170, 255),
1107
- selectorColor: chalk6.default.rgb(137, 221, 255),
1394
+ logIdColor: chalk8.default.rgb(84, 98, 117),
1395
+ dataValueColor: chalk8.default.rgb(209, 219, 231),
1396
+ dataKeyColor: chalk8.default.rgb(130, 170, 255),
1397
+ selectorColor: chalk8.default.rgb(137, 221, 255),
1108
1398
  // Ice blue for selection indicators
1109
- headerColor: chalk6.default.rgb(137, 221, 255),
1110
- labelColor: chalk6.default.rgb(137, 221, 255).bold,
1111
- separatorColor: chalk6.default.rgb(84, 98, 117),
1399
+ headerColor: chalk8.default.rgb(137, 221, 255),
1400
+ labelColor: chalk8.default.rgb(137, 221, 255).bold,
1401
+ separatorColor: chalk8.default.rgb(84, 98, 117),
1112
1402
  jsonColors: {
1113
- keysColor: chalk6.default.rgb(130, 170, 255),
1114
- dashColor: chalk6.default.rgb(209, 219, 231),
1115
- numberColor: chalk6.default.rgb(247, 140, 108),
1116
- stringColor: chalk6.default.rgb(195, 232, 141),
1117
- multilineStringColor: chalk6.default.rgb(195, 232, 141),
1118
- positiveNumberColor: chalk6.default.rgb(195, 232, 141),
1119
- negativeNumberColor: chalk6.default.rgb(247, 118, 142),
1120
- booleanColor: chalk6.default.rgb(255, 203, 107),
1121
- nullUndefinedColor: chalk6.default.rgb(114, 135, 153),
1122
- dateColor: chalk6.default.rgb(199, 146, 234)
1403
+ keysColor: chalk8.default.rgb(130, 170, 255),
1404
+ dashColor: chalk8.default.rgb(209, 219, 231),
1405
+ numberColor: chalk8.default.rgb(247, 140, 108),
1406
+ stringColor: chalk8.default.rgb(195, 232, 141),
1407
+ multilineStringColor: chalk8.default.rgb(195, 232, 141),
1408
+ positiveNumberColor: chalk8.default.rgb(195, 232, 141),
1409
+ negativeNumberColor: chalk8.default.rgb(247, 118, 142),
1410
+ booleanColor: chalk8.default.rgb(255, 203, 107),
1411
+ nullUndefinedColor: chalk8.default.rgb(114, 135, 153),
1412
+ dateColor: chalk8.default.rgb(199, 146, 234)
1123
1413
  }
1124
1414
  }
1125
1415
  };
1126
1416
  var sunlight = {
1127
1417
  simpleView: {
1128
1418
  colors: {
1129
- trace: chalk6.default.rgb(110, 110, 110),
1419
+ trace: chalk8.default.rgb(110, 110, 110),
1130
1420
  // Dark grey for subtle information
1131
- debug: chalk6.default.rgb(32, 96, 159),
1421
+ debug: chalk8.default.rgb(32, 96, 159),
1132
1422
  // Deep blue for strong contrast on white
1133
- info: chalk6.default.rgb(35, 134, 54),
1423
+ info: chalk8.default.rgb(35, 134, 54),
1134
1424
  // Forest green, easier on the eyes than bright green
1135
- warn: chalk6.default.rgb(176, 95, 0),
1425
+ warn: chalk8.default.rgb(176, 95, 0),
1136
1426
  // Brown-orange for natural warning color
1137
- error: chalk6.default.rgb(191, 0, 0),
1427
+ error: chalk8.default.rgb(191, 0, 0),
1138
1428
  // Deep red for clear visibility on light backgrounds
1139
- fatal: chalk6.default.bgRgb(191, 0, 0).white
1429
+ fatal: chalk8.default.bgRgb(191, 0, 0).white
1140
1430
  // White on deep red for critical issues
1141
1431
  },
1142
- logIdColor: chalk6.default.rgb(110, 110, 110),
1143
- dataValueColor: chalk6.default.rgb(0, 0, 0),
1144
- dataKeyColor: chalk6.default.rgb(32, 96, 159),
1145
- selectorColor: chalk6.default.rgb(0, 91, 129)
1432
+ logIdColor: chalk8.default.rgb(110, 110, 110),
1433
+ dataValueColor: chalk8.default.rgb(0, 0, 0),
1434
+ dataKeyColor: chalk8.default.rgb(32, 96, 159),
1435
+ selectorColor: chalk8.default.rgb(0, 91, 129)
1146
1436
  // Deep blue for strong contrast
1147
1437
  },
1148
1438
  detailedView: {
1149
1439
  colors: {
1150
- trace: chalk6.default.rgb(110, 110, 110),
1151
- debug: chalk6.default.rgb(32, 96, 159),
1152
- info: chalk6.default.rgb(35, 134, 54),
1153
- warn: chalk6.default.rgb(176, 95, 0),
1154
- error: chalk6.default.rgb(191, 0, 0),
1155
- fatal: chalk6.default.bgRgb(191, 0, 0).white
1440
+ trace: chalk8.default.rgb(110, 110, 110),
1441
+ debug: chalk8.default.rgb(32, 96, 159),
1442
+ info: chalk8.default.rgb(35, 134, 54),
1443
+ warn: chalk8.default.rgb(176, 95, 0),
1444
+ error: chalk8.default.rgb(191, 0, 0),
1445
+ fatal: chalk8.default.bgRgb(191, 0, 0).white
1156
1446
  },
1157
- logIdColor: chalk6.default.rgb(110, 110, 110),
1158
- dataValueColor: chalk6.default.rgb(0, 0, 0),
1159
- dataKeyColor: chalk6.default.rgb(32, 96, 159),
1160
- selectorColor: chalk6.default.rgb(0, 91, 129),
1447
+ logIdColor: chalk8.default.rgb(110, 110, 110),
1448
+ dataValueColor: chalk8.default.rgb(0, 0, 0),
1449
+ dataKeyColor: chalk8.default.rgb(32, 96, 159),
1450
+ selectorColor: chalk8.default.rgb(0, 91, 129),
1161
1451
  // Deep blue for strong contrast
1162
- headerColor: chalk6.default.rgb(0, 91, 129),
1163
- labelColor: chalk6.default.rgb(0, 91, 129).bold,
1164
- separatorColor: chalk6.default.rgb(110, 110, 110),
1452
+ headerColor: chalk8.default.rgb(0, 91, 129),
1453
+ labelColor: chalk8.default.rgb(0, 91, 129).bold,
1454
+ separatorColor: chalk8.default.rgb(110, 110, 110),
1165
1455
  jsonColors: {
1166
- keysColor: chalk6.default.rgb(32, 96, 159),
1167
- dashColor: chalk6.default.rgb(0, 0, 0),
1168
- numberColor: chalk6.default.rgb(170, 55, 49),
1169
- stringColor: chalk6.default.rgb(35, 134, 54),
1170
- multilineStringColor: chalk6.default.rgb(35, 134, 54),
1171
- positiveNumberColor: chalk6.default.rgb(46, 125, 50),
1172
- negativeNumberColor: chalk6.default.rgb(183, 28, 28),
1173
- booleanColor: chalk6.default.rgb(176, 95, 0),
1174
- nullUndefinedColor: chalk6.default.rgb(110, 110, 110),
1175
- dateColor: chalk6.default.rgb(123, 31, 162)
1456
+ keysColor: chalk8.default.rgb(32, 96, 159),
1457
+ dashColor: chalk8.default.rgb(0, 0, 0),
1458
+ numberColor: chalk8.default.rgb(170, 55, 49),
1459
+ stringColor: chalk8.default.rgb(35, 134, 54),
1460
+ multilineStringColor: chalk8.default.rgb(35, 134, 54),
1461
+ positiveNumberColor: chalk8.default.rgb(46, 125, 50),
1462
+ negativeNumberColor: chalk8.default.rgb(183, 28, 28),
1463
+ booleanColor: chalk8.default.rgb(176, 95, 0),
1464
+ nullUndefinedColor: chalk8.default.rgb(110, 110, 110),
1465
+ dateColor: chalk8.default.rgb(123, 31, 162)
1176
1466
  }
1177
1467
  }
1178
1468
  };
1179
1469
  var neon = {
1180
1470
  simpleView: {
1181
1471
  colors: {
1182
- trace: chalk6.default.rgb(108, 108, 255),
1472
+ trace: chalk8.default.rgb(108, 108, 255),
1183
1473
  // Electric blue
1184
- debug: chalk6.default.rgb(255, 82, 246),
1474
+ debug: chalk8.default.rgb(255, 82, 246),
1185
1475
  // Hot pink
1186
- info: chalk6.default.rgb(0, 255, 163),
1476
+ info: chalk8.default.rgb(0, 255, 163),
1187
1477
  // Cyber green
1188
- warn: chalk6.default.rgb(255, 231, 46),
1478
+ warn: chalk8.default.rgb(255, 231, 46),
1189
1479
  // Electric yellow
1190
- error: chalk6.default.rgb(255, 53, 91),
1480
+ error: chalk8.default.rgb(255, 53, 91),
1191
1481
  // Neon red
1192
- fatal: chalk6.default.bgRgb(255, 53, 91).rgb(0, 255, 163)
1482
+ fatal: chalk8.default.bgRgb(255, 53, 91).rgb(0, 255, 163)
1193
1483
  // Neon red bg with cyber green text
1194
1484
  },
1195
- logIdColor: chalk6.default.rgb(187, 134, 252),
1485
+ logIdColor: chalk8.default.rgb(187, 134, 252),
1196
1486
  // Bright purple
1197
- dataValueColor: chalk6.default.rgb(255, 255, 255),
1487
+ dataValueColor: chalk8.default.rgb(255, 255, 255),
1198
1488
  // Pure white
1199
- dataKeyColor: chalk6.default.rgb(0, 255, 240),
1489
+ dataKeyColor: chalk8.default.rgb(0, 255, 240),
1200
1490
  // Cyan
1201
- selectorColor: chalk6.default.rgb(0, 255, 240)
1491
+ selectorColor: chalk8.default.rgb(0, 255, 240)
1202
1492
  // Electric cyan for cyberpunk feel
1203
1493
  },
1204
1494
  detailedView: {
1205
1495
  colors: {
1206
- trace: chalk6.default.rgb(108, 108, 255),
1207
- debug: chalk6.default.rgb(255, 82, 246),
1208
- info: chalk6.default.rgb(0, 255, 163),
1209
- warn: chalk6.default.rgb(255, 231, 46),
1210
- error: chalk6.default.rgb(255, 53, 91),
1211
- fatal: chalk6.default.bgRgb(255, 53, 91).rgb(0, 255, 163)
1496
+ trace: chalk8.default.rgb(108, 108, 255),
1497
+ debug: chalk8.default.rgb(255, 82, 246),
1498
+ info: chalk8.default.rgb(0, 255, 163),
1499
+ warn: chalk8.default.rgb(255, 231, 46),
1500
+ error: chalk8.default.rgb(255, 53, 91),
1501
+ fatal: chalk8.default.bgRgb(255, 53, 91).rgb(0, 255, 163)
1212
1502
  },
1213
- logIdColor: chalk6.default.rgb(187, 134, 252),
1214
- dataValueColor: chalk6.default.rgb(255, 255, 255),
1215
- dataKeyColor: chalk6.default.rgb(0, 255, 240),
1216
- selectorColor: chalk6.default.rgb(0, 255, 240),
1503
+ logIdColor: chalk8.default.rgb(187, 134, 252),
1504
+ dataValueColor: chalk8.default.rgb(255, 255, 255),
1505
+ dataKeyColor: chalk8.default.rgb(0, 255, 240),
1506
+ selectorColor: chalk8.default.rgb(0, 255, 240),
1217
1507
  // Electric cyan for cyberpunk feel
1218
- headerColor: chalk6.default.rgb(255, 82, 246),
1219
- labelColor: chalk6.default.rgb(255, 82, 246).bold,
1220
- separatorColor: chalk6.default.rgb(108, 108, 255),
1508
+ headerColor: chalk8.default.rgb(255, 82, 246),
1509
+ labelColor: chalk8.default.rgb(255, 82, 246).bold,
1510
+ separatorColor: chalk8.default.rgb(108, 108, 255),
1221
1511
  jsonColors: {
1222
- keysColor: chalk6.default.rgb(0, 255, 240),
1223
- dashColor: chalk6.default.rgb(255, 255, 255),
1224
- numberColor: chalk6.default.rgb(255, 82, 246),
1225
- stringColor: chalk6.default.rgb(0, 255, 163),
1226
- multilineStringColor: chalk6.default.rgb(0, 255, 163),
1227
- positiveNumberColor: chalk6.default.rgb(0, 255, 163),
1228
- negativeNumberColor: chalk6.default.rgb(255, 53, 91),
1229
- booleanColor: chalk6.default.rgb(255, 231, 46),
1230
- nullUndefinedColor: chalk6.default.rgb(108, 108, 255),
1231
- dateColor: chalk6.default.rgb(187, 134, 252)
1512
+ keysColor: chalk8.default.rgb(0, 255, 240),
1513
+ dashColor: chalk8.default.rgb(255, 255, 255),
1514
+ numberColor: chalk8.default.rgb(255, 82, 246),
1515
+ stringColor: chalk8.default.rgb(0, 255, 163),
1516
+ multilineStringColor: chalk8.default.rgb(0, 255, 163),
1517
+ positiveNumberColor: chalk8.default.rgb(0, 255, 163),
1518
+ negativeNumberColor: chalk8.default.rgb(255, 53, 91),
1519
+ booleanColor: chalk8.default.rgb(255, 231, 46),
1520
+ nullUndefinedColor: chalk8.default.rgb(108, 108, 255),
1521
+ dateColor: chalk8.default.rgb(187, 134, 252)
1232
1522
  }
1233
1523
  }
1234
1524
  };
1235
1525
  var nature = {
1236
1526
  simpleView: {
1237
1527
  colors: {
1238
- trace: chalk6.default.rgb(121, 85, 72),
1528
+ trace: chalk8.default.rgb(121, 85, 72),
1239
1529
  // Wooden brown
1240
- debug: chalk6.default.rgb(46, 125, 50),
1530
+ debug: chalk8.default.rgb(46, 125, 50),
1241
1531
  // Forest green
1242
- info: chalk6.default.rgb(0, 105, 92),
1532
+ info: chalk8.default.rgb(0, 105, 92),
1243
1533
  // Deep teal
1244
- warn: chalk6.default.rgb(175, 115, 0),
1534
+ warn: chalk8.default.rgb(175, 115, 0),
1245
1535
  // Golden amber
1246
- error: chalk6.default.rgb(183, 28, 28),
1536
+ error: chalk8.default.rgb(183, 28, 28),
1247
1537
  // Autumn red
1248
- fatal: chalk6.default.bgRgb(183, 28, 28).rgb(255, 250, 240)
1538
+ fatal: chalk8.default.bgRgb(183, 28, 28).rgb(255, 250, 240)
1249
1539
  // Red bg with soft white
1250
1540
  },
1251
- logIdColor: chalk6.default.rgb(93, 64, 55),
1541
+ logIdColor: chalk8.default.rgb(93, 64, 55),
1252
1542
  // Deep bark brown
1253
- dataValueColor: chalk6.default.rgb(27, 27, 27),
1543
+ dataValueColor: chalk8.default.rgb(27, 27, 27),
1254
1544
  // Near black
1255
- dataKeyColor: chalk6.default.rgb(56, 142, 60),
1545
+ dataKeyColor: chalk8.default.rgb(56, 142, 60),
1256
1546
  // Leaf green
1257
- selectorColor: chalk6.default.rgb(0, 105, 92)
1547
+ selectorColor: chalk8.default.rgb(0, 105, 92)
1258
1548
  // Deep teal for natural feel
1259
1549
  },
1260
1550
  detailedView: {
1261
1551
  colors: {
1262
- trace: chalk6.default.rgb(121, 85, 72),
1263
- debug: chalk6.default.rgb(46, 125, 50),
1264
- info: chalk6.default.rgb(0, 105, 92),
1265
- warn: chalk6.default.rgb(175, 115, 0),
1266
- error: chalk6.default.rgb(183, 28, 28),
1267
- fatal: chalk6.default.bgRgb(183, 28, 28).rgb(255, 250, 240)
1552
+ trace: chalk8.default.rgb(121, 85, 72),
1553
+ debug: chalk8.default.rgb(46, 125, 50),
1554
+ info: chalk8.default.rgb(0, 105, 92),
1555
+ warn: chalk8.default.rgb(175, 115, 0),
1556
+ error: chalk8.default.rgb(183, 28, 28),
1557
+ fatal: chalk8.default.bgRgb(183, 28, 28).rgb(255, 250, 240)
1268
1558
  },
1269
- logIdColor: chalk6.default.rgb(93, 64, 55),
1270
- dataValueColor: chalk6.default.rgb(27, 27, 27),
1271
- dataKeyColor: chalk6.default.rgb(56, 142, 60),
1272
- selectorColor: chalk6.default.rgb(0, 105, 92),
1559
+ logIdColor: chalk8.default.rgb(93, 64, 55),
1560
+ dataValueColor: chalk8.default.rgb(27, 27, 27),
1561
+ dataKeyColor: chalk8.default.rgb(56, 142, 60),
1562
+ selectorColor: chalk8.default.rgb(0, 105, 92),
1273
1563
  // Deep teal for natural feel
1274
- headerColor: chalk6.default.rgb(0, 77, 64),
1275
- labelColor: chalk6.default.rgb(0, 77, 64).bold,
1276
- separatorColor: chalk6.default.rgb(121, 85, 72),
1564
+ headerColor: chalk8.default.rgb(0, 77, 64),
1565
+ labelColor: chalk8.default.rgb(0, 77, 64).bold,
1566
+ separatorColor: chalk8.default.rgb(121, 85, 72),
1277
1567
  jsonColors: {
1278
- keysColor: chalk6.default.rgb(56, 142, 60),
1279
- dashColor: chalk6.default.rgb(27, 27, 27),
1280
- numberColor: chalk6.default.rgb(230, 81, 0),
1281
- stringColor: chalk6.default.rgb(0, 105, 92),
1282
- multilineStringColor: chalk6.default.rgb(0, 105, 92),
1283
- positiveNumberColor: chalk6.default.rgb(46, 125, 50),
1284
- negativeNumberColor: chalk6.default.rgb(183, 28, 28),
1285
- booleanColor: chalk6.default.rgb(175, 115, 0),
1286
- nullUndefinedColor: chalk6.default.rgb(121, 85, 72),
1287
- dateColor: chalk6.default.rgb(123, 31, 162)
1568
+ keysColor: chalk8.default.rgb(56, 142, 60),
1569
+ dashColor: chalk8.default.rgb(27, 27, 27),
1570
+ numberColor: chalk8.default.rgb(230, 81, 0),
1571
+ stringColor: chalk8.default.rgb(0, 105, 92),
1572
+ multilineStringColor: chalk8.default.rgb(0, 105, 92),
1573
+ positiveNumberColor: chalk8.default.rgb(46, 125, 50),
1574
+ negativeNumberColor: chalk8.default.rgb(183, 28, 28),
1575
+ booleanColor: chalk8.default.rgb(175, 115, 0),
1576
+ nullUndefinedColor: chalk8.default.rgb(121, 85, 72),
1577
+ dateColor: chalk8.default.rgb(123, 31, 162)
1288
1578
  }
1289
1579
  }
1290
1580
  };
1291
1581
  var pastel = {
1292
1582
  simpleView: {
1293
1583
  colors: {
1294
- trace: chalk6.default.rgb(179, 189, 203),
1584
+ trace: chalk8.default.rgb(179, 189, 203),
1295
1585
  // Soft slate blue
1296
- debug: chalk6.default.rgb(189, 178, 255),
1586
+ debug: chalk8.default.rgb(189, 178, 255),
1297
1587
  // Gentle lavender
1298
- info: chalk6.default.rgb(170, 236, 205),
1588
+ info: chalk8.default.rgb(170, 236, 205),
1299
1589
  // Mint green
1300
- warn: chalk6.default.rgb(255, 223, 186),
1590
+ warn: chalk8.default.rgb(255, 223, 186),
1301
1591
  // Peach
1302
- error: chalk6.default.rgb(255, 188, 188),
1592
+ error: chalk8.default.rgb(255, 188, 188),
1303
1593
  // Soft coral
1304
- fatal: chalk6.default.bgRgb(255, 188, 188).rgb(76, 40, 40)
1594
+ fatal: chalk8.default.bgRgb(255, 188, 188).rgb(76, 40, 40)
1305
1595
  // Coral bg with deep brown
1306
1596
  },
1307
- logIdColor: chalk6.default.rgb(203, 195, 227),
1597
+ logIdColor: chalk8.default.rgb(203, 195, 227),
1308
1598
  // Dusty lavender
1309
- dataValueColor: chalk6.default.rgb(236, 236, 236),
1599
+ dataValueColor: chalk8.default.rgb(236, 236, 236),
1310
1600
  // Soft white
1311
- dataKeyColor: chalk6.default.rgb(186, 207, 255),
1601
+ dataKeyColor: chalk8.default.rgb(186, 207, 255),
1312
1602
  // Baby blue
1313
- selectorColor: chalk6.default.rgb(189, 178, 255)
1603
+ selectorColor: chalk8.default.rgb(189, 178, 255)
1314
1604
  // Soft lavender for gentle highlighting
1315
1605
  },
1316
1606
  detailedView: {
1317
1607
  colors: {
1318
- trace: chalk6.default.rgb(179, 189, 203),
1319
- debug: chalk6.default.rgb(189, 178, 255),
1320
- info: chalk6.default.rgb(170, 236, 205),
1321
- warn: chalk6.default.rgb(255, 223, 186),
1322
- error: chalk6.default.rgb(255, 188, 188),
1323
- fatal: chalk6.default.bgRgb(255, 188, 188).rgb(76, 40, 40)
1608
+ trace: chalk8.default.rgb(179, 189, 203),
1609
+ debug: chalk8.default.rgb(189, 178, 255),
1610
+ info: chalk8.default.rgb(170, 236, 205),
1611
+ warn: chalk8.default.rgb(255, 223, 186),
1612
+ error: chalk8.default.rgb(255, 188, 188),
1613
+ fatal: chalk8.default.bgRgb(255, 188, 188).rgb(76, 40, 40)
1324
1614
  },
1325
- logIdColor: chalk6.default.rgb(203, 195, 227),
1326
- dataValueColor: chalk6.default.rgb(236, 236, 236),
1327
- dataKeyColor: chalk6.default.rgb(186, 207, 255),
1328
- selectorColor: chalk6.default.rgb(189, 178, 255),
1615
+ logIdColor: chalk8.default.rgb(203, 195, 227),
1616
+ dataValueColor: chalk8.default.rgb(236, 236, 236),
1617
+ dataKeyColor: chalk8.default.rgb(186, 207, 255),
1618
+ selectorColor: chalk8.default.rgb(189, 178, 255),
1329
1619
  // Soft lavender for gentle highlighting
1330
- headerColor: chalk6.default.rgb(255, 198, 255),
1620
+ headerColor: chalk8.default.rgb(255, 198, 255),
1331
1621
  // Cotton candy pink
1332
- labelColor: chalk6.default.rgb(255, 198, 255).bold,
1333
- separatorColor: chalk6.default.rgb(179, 189, 203),
1622
+ labelColor: chalk8.default.rgb(255, 198, 255).bold,
1623
+ separatorColor: chalk8.default.rgb(179, 189, 203),
1334
1624
  jsonColors: {
1335
- keysColor: chalk6.default.rgb(186, 207, 255),
1625
+ keysColor: chalk8.default.rgb(186, 207, 255),
1336
1626
  // Baby blue
1337
- dashColor: chalk6.default.rgb(236, 236, 236),
1627
+ dashColor: chalk8.default.rgb(236, 236, 236),
1338
1628
  // Soft white
1339
- numberColor: chalk6.default.rgb(255, 198, 255),
1629
+ numberColor: chalk8.default.rgb(255, 198, 255),
1340
1630
  // Cotton candy pink
1341
- stringColor: chalk6.default.rgb(170, 236, 205),
1631
+ stringColor: chalk8.default.rgb(170, 236, 205),
1342
1632
  // Mint green
1343
- multilineStringColor: chalk6.default.rgb(170, 236, 205),
1344
- positiveNumberColor: chalk6.default.rgb(170, 236, 205),
1345
- negativeNumberColor: chalk6.default.rgb(255, 188, 188),
1346
- booleanColor: chalk6.default.rgb(255, 223, 186),
1633
+ multilineStringColor: chalk8.default.rgb(170, 236, 205),
1634
+ positiveNumberColor: chalk8.default.rgb(170, 236, 205),
1635
+ negativeNumberColor: chalk8.default.rgb(255, 188, 188),
1636
+ booleanColor: chalk8.default.rgb(255, 223, 186),
1347
1637
  // Peach
1348
- nullUndefinedColor: chalk6.default.rgb(179, 189, 203),
1349
- dateColor: chalk6.default.rgb(189, 178, 255)
1638
+ nullUndefinedColor: chalk8.default.rgb(179, 189, 203),
1639
+ dateColor: chalk8.default.rgb(189, 178, 255)
1350
1640
  // Gentle lavender
1351
1641
  }
1352
1642
  }
1353
1643
  };
1354
1644
 
1355
1645
  // src/PrettyTerminalTransport.ts
1356
- var PrettyTerminalTransport = (_class3 = class _PrettyTerminalTransport extends _transport.LoggerlessTransport {
1646
+ var PrettyTerminalTransport = (_class4 = class _PrettyTerminalTransport extends _transport.LoggerlessTransport {
1357
1647
  /** Singleton instance of the transport */
1358
1648
  static __initStatic() {this.instance = null}
1359
1649
  /** Handles all rendering and formatting of logs */
@@ -1387,70 +1677,70 @@ var PrettyTerminalTransport = (_class3 = class _PrettyTerminalTransport extends
1387
1677
  const logFile = config.logFile;
1388
1678
  const simpleViewConfig = {
1389
1679
  colors: {
1390
- trace: chalk6.default.gray,
1680
+ trace: chalk8.default.gray,
1391
1681
  // Lowest level, used for verbose output
1392
- debug: chalk6.default.blue,
1682
+ debug: chalk8.default.blue,
1393
1683
  // Debug information
1394
- info: chalk6.default.green,
1684
+ info: chalk8.default.green,
1395
1685
  // Normal operation
1396
- warn: chalk6.default.yellow,
1686
+ warn: chalk8.default.yellow,
1397
1687
  // Warning conditions
1398
- error: chalk6.default.red,
1688
+ error: chalk8.default.red,
1399
1689
  // Error conditions
1400
- fatal: chalk6.default.bgRed.white,
1690
+ fatal: chalk8.default.bgRed.white,
1401
1691
  // Critical errors
1402
1692
  ...theme.simpleView.colors
1403
1693
  },
1404
- logIdColor: theme.simpleView.logIdColor || chalk6.default.dim,
1405
- dataValueColor: theme.simpleView.dataValueColor || chalk6.default.white,
1406
- dataKeyColor: theme.simpleView.dataKeyColor || chalk6.default.dim,
1407
- selectorColor: theme.simpleView.selectorColor || chalk6.default.cyan
1694
+ logIdColor: theme.simpleView.logIdColor || chalk8.default.dim,
1695
+ dataValueColor: theme.simpleView.dataValueColor || chalk8.default.white,
1696
+ dataKeyColor: theme.simpleView.dataKeyColor || chalk8.default.dim,
1697
+ selectorColor: theme.simpleView.selectorColor || chalk8.default.cyan
1408
1698
  };
1409
1699
  const detailedViewConfig = {
1410
1700
  colors: {
1411
- trace: chalk6.default.gray,
1412
- debug: chalk6.default.blue,
1413
- info: chalk6.default.green,
1414
- warn: chalk6.default.yellow,
1415
- error: chalk6.default.red,
1416
- fatal: chalk6.default.bgRed.white,
1701
+ trace: chalk8.default.gray,
1702
+ debug: chalk8.default.blue,
1703
+ info: chalk8.default.green,
1704
+ warn: chalk8.default.yellow,
1705
+ error: chalk8.default.red,
1706
+ fatal: chalk8.default.bgRed.white,
1417
1707
  ..._optionalChain([theme, 'access', _5 => _5.detailedView, 'optionalAccess', _6 => _6.colors])
1418
1708
  },
1419
- logIdColor: _optionalChain([theme, 'access', _7 => _7.detailedView, 'optionalAccess', _8 => _8.logIdColor]) || chalk6.default.dim,
1420
- dataValueColor: _optionalChain([theme, 'access', _9 => _9.detailedView, 'optionalAccess', _10 => _10.dataValueColor]) || chalk6.default.white,
1421
- dataKeyColor: _optionalChain([theme, 'access', _11 => _11.detailedView, 'optionalAccess', _12 => _12.dataKeyColor]) || chalk6.default.dim,
1422
- selectorColor: _optionalChain([theme, 'access', _13 => _13.detailedView, 'optionalAccess', _14 => _14.selectorColor]) || chalk6.default.cyan,
1423
- headerColor: _optionalChain([theme, 'access', _15 => _15.detailedView, 'optionalAccess', _16 => _16.headerColor]) || chalk6.default.cyan,
1424
- labelColor: _optionalChain([theme, 'access', _17 => _17.detailedView, 'optionalAccess', _18 => _18.labelColor]) || chalk6.default.cyan.bold,
1425
- separatorColor: _optionalChain([theme, 'access', _19 => _19.detailedView, 'optionalAccess', _20 => _20.separatorColor]) || chalk6.default.dim,
1709
+ logIdColor: _optionalChain([theme, 'access', _7 => _7.detailedView, 'optionalAccess', _8 => _8.logIdColor]) || chalk8.default.dim,
1710
+ dataValueColor: _optionalChain([theme, 'access', _9 => _9.detailedView, 'optionalAccess', _10 => _10.dataValueColor]) || chalk8.default.white,
1711
+ dataKeyColor: _optionalChain([theme, 'access', _11 => _11.detailedView, 'optionalAccess', _12 => _12.dataKeyColor]) || chalk8.default.dim,
1712
+ selectorColor: _optionalChain([theme, 'access', _13 => _13.detailedView, 'optionalAccess', _14 => _14.selectorColor]) || chalk8.default.cyan,
1713
+ headerColor: _optionalChain([theme, 'access', _15 => _15.detailedView, 'optionalAccess', _16 => _16.headerColor]) || chalk8.default.cyan,
1714
+ labelColor: _optionalChain([theme, 'access', _17 => _17.detailedView, 'optionalAccess', _18 => _18.labelColor]) || chalk8.default.cyan.bold,
1715
+ separatorColor: _optionalChain([theme, 'access', _19 => _19.detailedView, 'optionalAccess', _20 => _20.separatorColor]) || chalk8.default.dim,
1426
1716
  // JSON formatting colors for detailed data view
1427
1717
  jsonColors: {
1428
- keysColor: chalk6.default.yellow,
1718
+ keysColor: chalk8.default.yellow,
1429
1719
  // Object property names
1430
- dashColor: chalk6.default.white,
1720
+ dashColor: chalk8.default.white,
1431
1721
  // Array bullets
1432
- numberColor: chalk6.default.yellow,
1722
+ numberColor: chalk8.default.yellow,
1433
1723
  // Default number color
1434
- stringColor: chalk6.default.white,
1724
+ stringColor: chalk8.default.white,
1435
1725
  // Single-line strings
1436
- multilineStringColor: chalk6.default.white,
1726
+ multilineStringColor: chalk8.default.white,
1437
1727
  // Multi-line strings
1438
- positiveNumberColor: chalk6.default.green,
1728
+ positiveNumberColor: chalk8.default.green,
1439
1729
  // Numbers > 0
1440
- negativeNumberColor: chalk6.default.red,
1730
+ negativeNumberColor: chalk8.default.red,
1441
1731
  // Numbers < 0
1442
- booleanColor: chalk6.default.cyan,
1732
+ booleanColor: chalk8.default.cyan,
1443
1733
  // true/false values
1444
- nullUndefinedColor: chalk6.default.grey,
1734
+ nullUndefinedColor: chalk8.default.grey,
1445
1735
  // null/undefined
1446
- dateColor: chalk6.default.magenta,
1736
+ dateColor: chalk8.default.magenta,
1447
1737
  // Date objects
1448
1738
  ..._optionalChain([theme, 'access', _21 => _21.detailedView, 'optionalAccess', _22 => _22.jsonColors])
1449
1739
  }
1450
1740
  };
1451
1741
  this.storage = new LogStorage(logFile);
1452
1742
  this.renderer = new LogRenderer(simpleViewConfig, detailedViewConfig, maxInlineDepth, maxInlineLength);
1453
- this.uiManager = new UIManager(this.renderer, this.storage);
1743
+ this.uiManager = new UIManager(this.renderer, this.storage, config.disableInteractiveMode);
1454
1744
  _PrettyTerminalTransport.instance = this;
1455
1745
  }
1456
1746
  /**
@@ -1505,7 +1795,7 @@ var PrettyTerminalTransport = (_class3 = class _PrettyTerminalTransport extends
1505
1795
  this.uiManager.handleNewLog(entry);
1506
1796
  return messages;
1507
1797
  }
1508
- }, _class3.__initStatic(), _class3);
1798
+ }, _class4.__initStatic(), _class4);
1509
1799
 
1510
1800
  // src/index.ts
1511
1801
 
@@ -1521,5 +1811,5 @@ function getPrettyTerminal(config = {}) {
1521
1811
 
1522
1812
 
1523
1813
 
1524
- exports.PrettyTerminalTransport = PrettyTerminalTransport; exports.chalk = chalk6; exports.getPrettyTerminal = getPrettyTerminal; exports.moonlight = moonlight; exports.nature = nature; exports.neon = neon; exports.pastel = pastel; exports.sunlight = sunlight;
1814
+ exports.PrettyTerminalTransport = PrettyTerminalTransport; exports.chalk = chalk8; exports.getPrettyTerminal = getPrettyTerminal; exports.moonlight = moonlight; exports.nature = nature; exports.neon = neon; exports.pastel = pastel; exports.sunlight = sunlight;
1525
1815
  //# sourceMappingURL=index.cjs.map