@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 +778 -488
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +760 -470
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
3
|
+
var _chalk = require('chalk'); var chalk8 = _interopRequireWildcard(_chalk);
|
|
4
4
|
|
|
5
|
-
// src/
|
|
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 ||
|
|
181
|
-
options.dashColor = options.dashColor ||
|
|
182
|
-
options.booleanColor = options.booleanColor ||
|
|
183
|
-
options.nullUndefinedColor = options.nullUndefinedColor ||
|
|
184
|
-
options.numberColor = options.numberColor ||
|
|
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 ||
|
|
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/
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
-
|
|
219
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
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 =
|
|
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
|
|
313
|
-
const
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
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 =
|
|
329
|
-
const logId = this.
|
|
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.
|
|
327
|
+
return this.config.config.separatorColor(_wrapansi2.default.call(void 0, line, this.termWidth, { hard: true }));
|
|
332
328
|
}
|
|
333
329
|
/**
|
|
334
|
-
*
|
|
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
|
-
|
|
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.
|
|
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.
|
|
362
|
+
headerContent.push(this.config.config.separatorColor("\u2500".repeat(this.termWidth)));
|
|
359
363
|
}
|
|
360
364
|
const footerContent = [];
|
|
361
|
-
if (nextEntry) {
|
|
362
|
-
footerContent.push(this.
|
|
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
|
-
|
|
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.
|
|
373
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
386
|
-
mainContent.push(
|
|
387
|
-
|
|
388
|
-
|
|
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 =
|
|
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.
|
|
408
|
-
console.log(
|
|
419
|
+
if (this.config.scrollPos > 0) {
|
|
420
|
+
console.log(chalk8.default.dim("\u2191 More content above"));
|
|
409
421
|
}
|
|
410
|
-
const startIndex = this.
|
|
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.
|
|
416
|
-
console.log(
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
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
|
-
|
|
446
|
-
|
|
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(
|
|
466
|
-
console.log(
|
|
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(
|
|
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(
|
|
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.
|
|
485
|
-
const timestamp =
|
|
486
|
-
const levelColor =
|
|
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 =
|
|
492
|
+
const logId = chalk8.default.dim(`[${entry.id}]`);
|
|
489
493
|
const message = entry.message;
|
|
490
|
-
const data = 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.
|
|
501
|
-
` \u2193 ${newLogCount} new log${newLogCount === 1 ? "" : "s"} available (press \u2193 to view)`
|
|
502
|
-
) :
|
|
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(
|
|
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
|
-
*
|
|
510
|
-
* @param
|
|
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
|
-
|
|
514
|
-
|
|
515
|
-
const
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
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
|
-
|
|
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 = (
|
|
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) {;
|
|
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.
|
|
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
|
-
|
|
858
|
+
__init8() {this.isSelectionMode = false}
|
|
677
859
|
/** Whether the UI is showing detailed log view */
|
|
678
|
-
|
|
860
|
+
__init9() {this.isDetailView = false}
|
|
679
861
|
/** Whether log streaming is paused */
|
|
680
|
-
|
|
862
|
+
__init10() {this.isPaused = false}
|
|
863
|
+
/** Whether interactive mode is disabled */
|
|
864
|
+
|
|
681
865
|
/** Buffer for logs received while paused */
|
|
682
|
-
|
|
866
|
+
__init11() {this.pauseBuffer = []}
|
|
683
867
|
/** Buffer for new logs in selection mode */
|
|
684
|
-
|
|
868
|
+
__init12() {this.selectionBuffer = []}
|
|
685
869
|
/** Index of currently selected log entry */
|
|
686
|
-
|
|
870
|
+
__init13() {this.selectedIndex = 0}
|
|
687
871
|
/** Current filter text for log searching */
|
|
688
|
-
|
|
872
|
+
__init14() {this.filterText = ""}
|
|
689
873
|
/** Cached array of filtered log entries */
|
|
690
|
-
|
|
874
|
+
__init15() {this.logs = []}
|
|
691
875
|
/** Polling interval for checking new logs in detail view */
|
|
692
|
-
|
|
876
|
+
__init16() {this.detailViewPollInterval = null}
|
|
693
877
|
/** Polling interval for checking new logs in selection view */
|
|
694
|
-
|
|
878
|
+
__init17() {this.selectionViewPollInterval = null}
|
|
695
879
|
/** Current terminal width in characters */
|
|
696
|
-
|
|
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
|
|
757
|
-
if (
|
|
758
|
-
this.
|
|
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(
|
|
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
|
|
774
|
-
|
|
775
|
-
if (this.logs.length
|
|
776
|
-
this.
|
|
777
|
-
|
|
778
|
-
this.
|
|
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 =
|
|
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${
|
|
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${
|
|
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.
|
|
1075
|
+
this.selectionBuffer = [...this.pauseBuffer];
|
|
855
1076
|
this.pauseBuffer = [];
|
|
856
|
-
|
|
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(
|
|
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 =
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
},
|
|
1356
|
+
}, _class3);
|
|
1067
1357
|
|
|
1068
1358
|
// src/themes.ts
|
|
1069
1359
|
|
|
1070
1360
|
var moonlight = {
|
|
1071
1361
|
simpleView: {
|
|
1072
1362
|
colors: {
|
|
1073
|
-
trace:
|
|
1363
|
+
trace: chalk8.default.rgb(114, 135, 153),
|
|
1074
1364
|
// Muted blue-grey for less important info
|
|
1075
|
-
debug:
|
|
1365
|
+
debug: chalk8.default.rgb(130, 170, 255),
|
|
1076
1366
|
// Soft blue that pops but doesn't strain
|
|
1077
|
-
info:
|
|
1367
|
+
info: chalk8.default.rgb(195, 232, 141),
|
|
1078
1368
|
// Sage green for good readability
|
|
1079
|
-
warn:
|
|
1369
|
+
warn: chalk8.default.rgb(255, 203, 107),
|
|
1080
1370
|
// Warm yellow, less harsh than pure yellow
|
|
1081
|
-
error:
|
|
1371
|
+
error: chalk8.default.rgb(247, 118, 142),
|
|
1082
1372
|
// Soft red that stands out without being aggressive
|
|
1083
|
-
fatal:
|
|
1373
|
+
fatal: chalk8.default.bgRgb(247, 118, 142).white
|
|
1084
1374
|
// Inverted soft red for maximum visibility
|
|
1085
1375
|
},
|
|
1086
|
-
logIdColor:
|
|
1376
|
+
logIdColor: chalk8.default.rgb(84, 98, 117),
|
|
1087
1377
|
// Darker blue-grey for secondary information
|
|
1088
|
-
dataValueColor:
|
|
1378
|
+
dataValueColor: chalk8.default.rgb(209, 219, 231),
|
|
1089
1379
|
// Light grey-blue for primary content
|
|
1090
|
-
dataKeyColor:
|
|
1380
|
+
dataKeyColor: chalk8.default.rgb(130, 170, 255),
|
|
1091
1381
|
// Matching debug blue for consistency
|
|
1092
|
-
selectorColor:
|
|
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:
|
|
1098
|
-
debug:
|
|
1099
|
-
info:
|
|
1100
|
-
warn:
|
|
1101
|
-
error:
|
|
1102
|
-
fatal:
|
|
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:
|
|
1105
|
-
dataValueColor:
|
|
1106
|
-
dataKeyColor:
|
|
1107
|
-
selectorColor:
|
|
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:
|
|
1110
|
-
labelColor:
|
|
1111
|
-
separatorColor:
|
|
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:
|
|
1114
|
-
dashColor:
|
|
1115
|
-
numberColor:
|
|
1116
|
-
stringColor:
|
|
1117
|
-
multilineStringColor:
|
|
1118
|
-
positiveNumberColor:
|
|
1119
|
-
negativeNumberColor:
|
|
1120
|
-
booleanColor:
|
|
1121
|
-
nullUndefinedColor:
|
|
1122
|
-
dateColor:
|
|
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:
|
|
1419
|
+
trace: chalk8.default.rgb(110, 110, 110),
|
|
1130
1420
|
// Dark grey for subtle information
|
|
1131
|
-
debug:
|
|
1421
|
+
debug: chalk8.default.rgb(32, 96, 159),
|
|
1132
1422
|
// Deep blue for strong contrast on white
|
|
1133
|
-
info:
|
|
1423
|
+
info: chalk8.default.rgb(35, 134, 54),
|
|
1134
1424
|
// Forest green, easier on the eyes than bright green
|
|
1135
|
-
warn:
|
|
1425
|
+
warn: chalk8.default.rgb(176, 95, 0),
|
|
1136
1426
|
// Brown-orange for natural warning color
|
|
1137
|
-
error:
|
|
1427
|
+
error: chalk8.default.rgb(191, 0, 0),
|
|
1138
1428
|
// Deep red for clear visibility on light backgrounds
|
|
1139
|
-
fatal:
|
|
1429
|
+
fatal: chalk8.default.bgRgb(191, 0, 0).white
|
|
1140
1430
|
// White on deep red for critical issues
|
|
1141
1431
|
},
|
|
1142
|
-
logIdColor:
|
|
1143
|
-
dataValueColor:
|
|
1144
|
-
dataKeyColor:
|
|
1145
|
-
selectorColor:
|
|
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:
|
|
1151
|
-
debug:
|
|
1152
|
-
info:
|
|
1153
|
-
warn:
|
|
1154
|
-
error:
|
|
1155
|
-
fatal:
|
|
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:
|
|
1158
|
-
dataValueColor:
|
|
1159
|
-
dataKeyColor:
|
|
1160
|
-
selectorColor:
|
|
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:
|
|
1163
|
-
labelColor:
|
|
1164
|
-
separatorColor:
|
|
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:
|
|
1167
|
-
dashColor:
|
|
1168
|
-
numberColor:
|
|
1169
|
-
stringColor:
|
|
1170
|
-
multilineStringColor:
|
|
1171
|
-
positiveNumberColor:
|
|
1172
|
-
negativeNumberColor:
|
|
1173
|
-
booleanColor:
|
|
1174
|
-
nullUndefinedColor:
|
|
1175
|
-
dateColor:
|
|
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:
|
|
1472
|
+
trace: chalk8.default.rgb(108, 108, 255),
|
|
1183
1473
|
// Electric blue
|
|
1184
|
-
debug:
|
|
1474
|
+
debug: chalk8.default.rgb(255, 82, 246),
|
|
1185
1475
|
// Hot pink
|
|
1186
|
-
info:
|
|
1476
|
+
info: chalk8.default.rgb(0, 255, 163),
|
|
1187
1477
|
// Cyber green
|
|
1188
|
-
warn:
|
|
1478
|
+
warn: chalk8.default.rgb(255, 231, 46),
|
|
1189
1479
|
// Electric yellow
|
|
1190
|
-
error:
|
|
1480
|
+
error: chalk8.default.rgb(255, 53, 91),
|
|
1191
1481
|
// Neon red
|
|
1192
|
-
fatal:
|
|
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:
|
|
1485
|
+
logIdColor: chalk8.default.rgb(187, 134, 252),
|
|
1196
1486
|
// Bright purple
|
|
1197
|
-
dataValueColor:
|
|
1487
|
+
dataValueColor: chalk8.default.rgb(255, 255, 255),
|
|
1198
1488
|
// Pure white
|
|
1199
|
-
dataKeyColor:
|
|
1489
|
+
dataKeyColor: chalk8.default.rgb(0, 255, 240),
|
|
1200
1490
|
// Cyan
|
|
1201
|
-
selectorColor:
|
|
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:
|
|
1207
|
-
debug:
|
|
1208
|
-
info:
|
|
1209
|
-
warn:
|
|
1210
|
-
error:
|
|
1211
|
-
fatal:
|
|
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:
|
|
1214
|
-
dataValueColor:
|
|
1215
|
-
dataKeyColor:
|
|
1216
|
-
selectorColor:
|
|
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:
|
|
1219
|
-
labelColor:
|
|
1220
|
-
separatorColor:
|
|
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:
|
|
1223
|
-
dashColor:
|
|
1224
|
-
numberColor:
|
|
1225
|
-
stringColor:
|
|
1226
|
-
multilineStringColor:
|
|
1227
|
-
positiveNumberColor:
|
|
1228
|
-
negativeNumberColor:
|
|
1229
|
-
booleanColor:
|
|
1230
|
-
nullUndefinedColor:
|
|
1231
|
-
dateColor:
|
|
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:
|
|
1528
|
+
trace: chalk8.default.rgb(121, 85, 72),
|
|
1239
1529
|
// Wooden brown
|
|
1240
|
-
debug:
|
|
1530
|
+
debug: chalk8.default.rgb(46, 125, 50),
|
|
1241
1531
|
// Forest green
|
|
1242
|
-
info:
|
|
1532
|
+
info: chalk8.default.rgb(0, 105, 92),
|
|
1243
1533
|
// Deep teal
|
|
1244
|
-
warn:
|
|
1534
|
+
warn: chalk8.default.rgb(175, 115, 0),
|
|
1245
1535
|
// Golden amber
|
|
1246
|
-
error:
|
|
1536
|
+
error: chalk8.default.rgb(183, 28, 28),
|
|
1247
1537
|
// Autumn red
|
|
1248
|
-
fatal:
|
|
1538
|
+
fatal: chalk8.default.bgRgb(183, 28, 28).rgb(255, 250, 240)
|
|
1249
1539
|
// Red bg with soft white
|
|
1250
1540
|
},
|
|
1251
|
-
logIdColor:
|
|
1541
|
+
logIdColor: chalk8.default.rgb(93, 64, 55),
|
|
1252
1542
|
// Deep bark brown
|
|
1253
|
-
dataValueColor:
|
|
1543
|
+
dataValueColor: chalk8.default.rgb(27, 27, 27),
|
|
1254
1544
|
// Near black
|
|
1255
|
-
dataKeyColor:
|
|
1545
|
+
dataKeyColor: chalk8.default.rgb(56, 142, 60),
|
|
1256
1546
|
// Leaf green
|
|
1257
|
-
selectorColor:
|
|
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:
|
|
1263
|
-
debug:
|
|
1264
|
-
info:
|
|
1265
|
-
warn:
|
|
1266
|
-
error:
|
|
1267
|
-
fatal:
|
|
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:
|
|
1270
|
-
dataValueColor:
|
|
1271
|
-
dataKeyColor:
|
|
1272
|
-
selectorColor:
|
|
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:
|
|
1275
|
-
labelColor:
|
|
1276
|
-
separatorColor:
|
|
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:
|
|
1279
|
-
dashColor:
|
|
1280
|
-
numberColor:
|
|
1281
|
-
stringColor:
|
|
1282
|
-
multilineStringColor:
|
|
1283
|
-
positiveNumberColor:
|
|
1284
|
-
negativeNumberColor:
|
|
1285
|
-
booleanColor:
|
|
1286
|
-
nullUndefinedColor:
|
|
1287
|
-
dateColor:
|
|
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:
|
|
1584
|
+
trace: chalk8.default.rgb(179, 189, 203),
|
|
1295
1585
|
// Soft slate blue
|
|
1296
|
-
debug:
|
|
1586
|
+
debug: chalk8.default.rgb(189, 178, 255),
|
|
1297
1587
|
// Gentle lavender
|
|
1298
|
-
info:
|
|
1588
|
+
info: chalk8.default.rgb(170, 236, 205),
|
|
1299
1589
|
// Mint green
|
|
1300
|
-
warn:
|
|
1590
|
+
warn: chalk8.default.rgb(255, 223, 186),
|
|
1301
1591
|
// Peach
|
|
1302
|
-
error:
|
|
1592
|
+
error: chalk8.default.rgb(255, 188, 188),
|
|
1303
1593
|
// Soft coral
|
|
1304
|
-
fatal:
|
|
1594
|
+
fatal: chalk8.default.bgRgb(255, 188, 188).rgb(76, 40, 40)
|
|
1305
1595
|
// Coral bg with deep brown
|
|
1306
1596
|
},
|
|
1307
|
-
logIdColor:
|
|
1597
|
+
logIdColor: chalk8.default.rgb(203, 195, 227),
|
|
1308
1598
|
// Dusty lavender
|
|
1309
|
-
dataValueColor:
|
|
1599
|
+
dataValueColor: chalk8.default.rgb(236, 236, 236),
|
|
1310
1600
|
// Soft white
|
|
1311
|
-
dataKeyColor:
|
|
1601
|
+
dataKeyColor: chalk8.default.rgb(186, 207, 255),
|
|
1312
1602
|
// Baby blue
|
|
1313
|
-
selectorColor:
|
|
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:
|
|
1319
|
-
debug:
|
|
1320
|
-
info:
|
|
1321
|
-
warn:
|
|
1322
|
-
error:
|
|
1323
|
-
fatal:
|
|
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:
|
|
1326
|
-
dataValueColor:
|
|
1327
|
-
dataKeyColor:
|
|
1328
|
-
selectorColor:
|
|
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:
|
|
1620
|
+
headerColor: chalk8.default.rgb(255, 198, 255),
|
|
1331
1621
|
// Cotton candy pink
|
|
1332
|
-
labelColor:
|
|
1333
|
-
separatorColor:
|
|
1622
|
+
labelColor: chalk8.default.rgb(255, 198, 255).bold,
|
|
1623
|
+
separatorColor: chalk8.default.rgb(179, 189, 203),
|
|
1334
1624
|
jsonColors: {
|
|
1335
|
-
keysColor:
|
|
1625
|
+
keysColor: chalk8.default.rgb(186, 207, 255),
|
|
1336
1626
|
// Baby blue
|
|
1337
|
-
dashColor:
|
|
1627
|
+
dashColor: chalk8.default.rgb(236, 236, 236),
|
|
1338
1628
|
// Soft white
|
|
1339
|
-
numberColor:
|
|
1629
|
+
numberColor: chalk8.default.rgb(255, 198, 255),
|
|
1340
1630
|
// Cotton candy pink
|
|
1341
|
-
stringColor:
|
|
1631
|
+
stringColor: chalk8.default.rgb(170, 236, 205),
|
|
1342
1632
|
// Mint green
|
|
1343
|
-
multilineStringColor:
|
|
1344
|
-
positiveNumberColor:
|
|
1345
|
-
negativeNumberColor:
|
|
1346
|
-
booleanColor:
|
|
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:
|
|
1349
|
-
dateColor:
|
|
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 = (
|
|
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:
|
|
1680
|
+
trace: chalk8.default.gray,
|
|
1391
1681
|
// Lowest level, used for verbose output
|
|
1392
|
-
debug:
|
|
1682
|
+
debug: chalk8.default.blue,
|
|
1393
1683
|
// Debug information
|
|
1394
|
-
info:
|
|
1684
|
+
info: chalk8.default.green,
|
|
1395
1685
|
// Normal operation
|
|
1396
|
-
warn:
|
|
1686
|
+
warn: chalk8.default.yellow,
|
|
1397
1687
|
// Warning conditions
|
|
1398
|
-
error:
|
|
1688
|
+
error: chalk8.default.red,
|
|
1399
1689
|
// Error conditions
|
|
1400
|
-
fatal:
|
|
1690
|
+
fatal: chalk8.default.bgRed.white,
|
|
1401
1691
|
// Critical errors
|
|
1402
1692
|
...theme.simpleView.colors
|
|
1403
1693
|
},
|
|
1404
|
-
logIdColor: theme.simpleView.logIdColor ||
|
|
1405
|
-
dataValueColor: theme.simpleView.dataValueColor ||
|
|
1406
|
-
dataKeyColor: theme.simpleView.dataKeyColor ||
|
|
1407
|
-
selectorColor: theme.simpleView.selectorColor ||
|
|
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:
|
|
1412
|
-
debug:
|
|
1413
|
-
info:
|
|
1414
|
-
warn:
|
|
1415
|
-
error:
|
|
1416
|
-
fatal:
|
|
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]) ||
|
|
1420
|
-
dataValueColor: _optionalChain([theme, 'access', _9 => _9.detailedView, 'optionalAccess', _10 => _10.dataValueColor]) ||
|
|
1421
|
-
dataKeyColor: _optionalChain([theme, 'access', _11 => _11.detailedView, 'optionalAccess', _12 => _12.dataKeyColor]) ||
|
|
1422
|
-
selectorColor: _optionalChain([theme, 'access', _13 => _13.detailedView, 'optionalAccess', _14 => _14.selectorColor]) ||
|
|
1423
|
-
headerColor: _optionalChain([theme, 'access', _15 => _15.detailedView, 'optionalAccess', _16 => _16.headerColor]) ||
|
|
1424
|
-
labelColor: _optionalChain([theme, 'access', _17 => _17.detailedView, 'optionalAccess', _18 => _18.labelColor]) ||
|
|
1425
|
-
separatorColor: _optionalChain([theme, 'access', _19 => _19.detailedView, 'optionalAccess', _20 => _20.separatorColor]) ||
|
|
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:
|
|
1718
|
+
keysColor: chalk8.default.yellow,
|
|
1429
1719
|
// Object property names
|
|
1430
|
-
dashColor:
|
|
1720
|
+
dashColor: chalk8.default.white,
|
|
1431
1721
|
// Array bullets
|
|
1432
|
-
numberColor:
|
|
1722
|
+
numberColor: chalk8.default.yellow,
|
|
1433
1723
|
// Default number color
|
|
1434
|
-
stringColor:
|
|
1724
|
+
stringColor: chalk8.default.white,
|
|
1435
1725
|
// Single-line strings
|
|
1436
|
-
multilineStringColor:
|
|
1726
|
+
multilineStringColor: chalk8.default.white,
|
|
1437
1727
|
// Multi-line strings
|
|
1438
|
-
positiveNumberColor:
|
|
1728
|
+
positiveNumberColor: chalk8.default.green,
|
|
1439
1729
|
// Numbers > 0
|
|
1440
|
-
negativeNumberColor:
|
|
1730
|
+
negativeNumberColor: chalk8.default.red,
|
|
1441
1731
|
// Numbers < 0
|
|
1442
|
-
booleanColor:
|
|
1732
|
+
booleanColor: chalk8.default.cyan,
|
|
1443
1733
|
// true/false values
|
|
1444
|
-
nullUndefinedColor:
|
|
1734
|
+
nullUndefinedColor: chalk8.default.grey,
|
|
1445
1735
|
// null/undefined
|
|
1446
|
-
dateColor:
|
|
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
|
-
},
|
|
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 =
|
|
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
|