@openrewrite/rewrite 8.69.0-20251213-160302 → 8.69.0-20251214-145302
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.
|
@@ -3,21 +3,29 @@ import { J } from "../java";
|
|
|
3
3
|
import { JavaScriptVisitor } from "./visitor";
|
|
4
4
|
/**
|
|
5
5
|
* Options for controlling LST debug output.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* // Output to a file instead of console
|
|
9
|
+
* const options: LstDebugOptions = { output: '/tmp/debug.txt' };
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* // Minimal output - just the tree structure
|
|
13
|
+
* const options: LstDebugOptions = { includeCursorMessages: false };
|
|
6
14
|
*/
|
|
7
15
|
export interface LstDebugOptions {
|
|
8
|
-
/** Include cursor messages in output. Default: true */
|
|
16
|
+
/** Include cursor messages (like indentContext) in output. Default: true */
|
|
9
17
|
includeCursorMessages?: boolean;
|
|
10
18
|
/** Include markers in output. Default: false */
|
|
11
19
|
includeMarkers?: boolean;
|
|
12
|
-
/** Include IDs in output. Default: false */
|
|
20
|
+
/** Include node IDs in output. Default: false */
|
|
13
21
|
includeIds?: boolean;
|
|
14
|
-
/** Maximum depth to traverse. Default: unlimited (-1) */
|
|
22
|
+
/** Maximum depth to traverse (for print/recursive methods). Default: unlimited (-1) */
|
|
15
23
|
maxDepth?: number;
|
|
16
|
-
/** Properties to always exclude (in addition to defaults). */
|
|
24
|
+
/** Properties to always exclude (in addition to defaults like 'type'). */
|
|
17
25
|
excludeProperties?: string[];
|
|
18
26
|
/** Output destination: 'console' or a file path. Default: 'console' */
|
|
19
27
|
output?: 'console' | string;
|
|
20
|
-
/** Indent string for nested output. Default: ' ' */
|
|
28
|
+
/** Indent string for nested output. Default: ' ' (2 spaces) */
|
|
21
29
|
indent?: string;
|
|
22
30
|
}
|
|
23
31
|
/**
|
|
@@ -114,11 +122,6 @@ export declare class LstDebugPrinter {
|
|
|
114
122
|
*/
|
|
115
123
|
private depthCache;
|
|
116
124
|
constructor(options?: LstDebugOptions);
|
|
117
|
-
/**
|
|
118
|
-
* Calculate the depth of the cursor by counting parent chain length.
|
|
119
|
-
* Uses caching to avoid repeated traversals.
|
|
120
|
-
*/
|
|
121
|
-
private calculateDepth;
|
|
122
125
|
/**
|
|
123
126
|
* Clear the depth cache. Call this when starting a new tree
|
|
124
127
|
* to free memory from previous traversals.
|
|
@@ -152,6 +155,11 @@ export declare class LstDebugPrinter {
|
|
|
152
155
|
* Print the cursor path from root to current position.
|
|
153
156
|
*/
|
|
154
157
|
printCursorPath(cursor: Cursor): void;
|
|
158
|
+
/**
|
|
159
|
+
* Calculate the depth of the cursor by counting parent chain length.
|
|
160
|
+
* Uses caching to avoid repeated traversals.
|
|
161
|
+
*/
|
|
162
|
+
private calculateDepth;
|
|
155
163
|
private printNode;
|
|
156
164
|
private printJavaNode;
|
|
157
165
|
private printNodeProperties;
|
|
@@ -199,11 +207,11 @@ export declare class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
199
207
|
printPreVisit?: boolean;
|
|
200
208
|
printPostVisit?: boolean;
|
|
201
209
|
});
|
|
202
|
-
protected preVisit(tree: J, _p: P): Promise<J | undefined>;
|
|
203
|
-
protected postVisit(tree: J, _p: P): Promise<J | undefined>;
|
|
204
210
|
visitContainer<T extends J>(container: J.Container<T>, p: P): Promise<J.Container<T>>;
|
|
205
211
|
visitLeftPadded<T extends J | J.Space | number | string | boolean>(left: J.LeftPadded<T>, p: P): Promise<J.LeftPadded<T> | undefined>;
|
|
206
212
|
visitRightPadded<T extends J | boolean>(right: J.RightPadded<T>, p: P): Promise<J.RightPadded<T> | undefined>;
|
|
213
|
+
protected preVisit(tree: J, _p: P): Promise<J | undefined>;
|
|
214
|
+
protected postVisit(tree: J, _p: P): Promise<J | undefined>;
|
|
207
215
|
}
|
|
208
216
|
/**
|
|
209
217
|
* Convenience function to log a single node (no recursion).
|
|
@@ -229,4 +237,36 @@ export declare function debugPrint(tree: Tree, cursor?: Cursor, label?: string,
|
|
|
229
237
|
* Convenience function to print cursor path.
|
|
230
238
|
*/
|
|
231
239
|
export declare function debugPrintCursorPath(cursor: Cursor, options?: LstDebugOptions): void;
|
|
240
|
+
/**
|
|
241
|
+
* Create a debug printer if debugging is enabled, otherwise return undefined.
|
|
242
|
+
*
|
|
243
|
+
* This is useful for visitors that want to optionally enable debugging via
|
|
244
|
+
* constructor parameters or configuration.
|
|
245
|
+
*
|
|
246
|
+
* @param enabled Whether debugging is enabled
|
|
247
|
+
* @param options Debug options (including output file path)
|
|
248
|
+
* @returns LstDebugPrinter if enabled, undefined otherwise
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* class MyVisitor extends JavaScriptVisitor<P> {
|
|
252
|
+
* private debug?: LstDebugPrinter;
|
|
253
|
+
*
|
|
254
|
+
* constructor(enableDebug?: boolean | LstDebugOptions) {
|
|
255
|
+
* super();
|
|
256
|
+
* this.debug = createDebugPrinter(enableDebug);
|
|
257
|
+
* }
|
|
258
|
+
*
|
|
259
|
+
* async visitBlock(block: J.Block, p: P) {
|
|
260
|
+
* this.debug?.log(block, this.cursor);
|
|
261
|
+
* return super.visitBlock(block, p);
|
|
262
|
+
* }
|
|
263
|
+
* }
|
|
264
|
+
*
|
|
265
|
+
* // Usage:
|
|
266
|
+
* new MyVisitor(true); // Enable with defaults
|
|
267
|
+
* new MyVisitor({ output: '/tmp/debug.txt' }); // Enable with options
|
|
268
|
+
* new MyVisitor(false); // Disabled
|
|
269
|
+
* new MyVisitor(); // Disabled (default)
|
|
270
|
+
*/
|
|
271
|
+
export declare function createDebugPrinter(enabled?: boolean | LstDebugOptions): LstDebugPrinter | undefined;
|
|
232
272
|
//# sourceMappingURL=tree-debug.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-debug.d.ts","sourceRoot":"","sources":["../../src/javascript/tree-debug.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,SAAS,CAAC;AACrC,OAAO,EAA2C,CAAC,EAAc,MAAM,SAAS,CAAC;AAEjF,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAG5C
|
|
1
|
+
{"version":3,"file":"tree-debug.d.ts","sourceRoot":"","sources":["../../src/javascript/tree-debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,7 @@ exports.findPropertyPath = findPropertyPath;
|
|
|
65
65
|
exports.debugLog = debugLog;
|
|
66
66
|
exports.debugPrint = debugPrint;
|
|
67
67
|
exports.debugPrintCursorPath = debugPrintCursorPath;
|
|
68
|
+
exports.createDebugPrinter = createDebugPrinter;
|
|
68
69
|
const java_1 = require("../java");
|
|
69
70
|
const visitor_1 = require("./visitor");
|
|
70
71
|
const fs = __importStar(require("fs"));
|
|
@@ -250,6 +251,11 @@ function formatCursorMessages(cursor) {
|
|
|
250
251
|
if (Array.isArray(value)) {
|
|
251
252
|
valueStr = `[${value.map(v => JSON.stringify(v)).join(', ')}]`;
|
|
252
253
|
}
|
|
254
|
+
else if (value instanceof Set) {
|
|
255
|
+
// Handle Set - convert to array notation
|
|
256
|
+
const items = Array.from(value).map(v => JSON.stringify(v)).join(', ');
|
|
257
|
+
valueStr = `{${items}}`;
|
|
258
|
+
}
|
|
253
259
|
else if (typeof value === 'object' && value !== null) {
|
|
254
260
|
valueStr = JSON.stringify(value);
|
|
255
261
|
}
|
|
@@ -271,6 +277,19 @@ function shortTypeName(kind) {
|
|
|
271
277
|
const lastDot = kind.lastIndexOf('.');
|
|
272
278
|
return lastDot >= 0 ? kind.substring(lastDot + 1) : kind;
|
|
273
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* Format markers for debug output.
|
|
282
|
+
* Returns empty string if no markers, otherwise returns ' markers=[Name1, Name2]'
|
|
283
|
+
*/
|
|
284
|
+
function formatMarkers(node) {
|
|
285
|
+
var _a;
|
|
286
|
+
const markers = (_a = node === null || node === void 0 ? void 0 : node.markers) === null || _a === void 0 ? void 0 : _a.markers;
|
|
287
|
+
if (!markers || !Array.isArray(markers) || markers.length === 0) {
|
|
288
|
+
return '';
|
|
289
|
+
}
|
|
290
|
+
const names = markers.map((m) => shortTypeName(m.kind));
|
|
291
|
+
return ` markers=[${names.join(', ')}]`;
|
|
292
|
+
}
|
|
274
293
|
/**
|
|
275
294
|
* Find which property of the parent contains the given child element.
|
|
276
295
|
* Returns the property name, or property name with array index if in an array.
|
|
@@ -384,17 +403,31 @@ function findPropertyPath(cursor, child) {
|
|
|
384
403
|
}
|
|
385
404
|
return undefined;
|
|
386
405
|
}
|
|
406
|
+
/**
|
|
407
|
+
* Escape special characters in a string for display.
|
|
408
|
+
*/
|
|
409
|
+
function escapeString(str) {
|
|
410
|
+
return str
|
|
411
|
+
.replace(/\\/g, '\\\\')
|
|
412
|
+
.replace(/\n/g, '\\n')
|
|
413
|
+
.replace(/\r/g, '\\r')
|
|
414
|
+
.replace(/\t/g, '\\t');
|
|
415
|
+
}
|
|
387
416
|
/**
|
|
388
417
|
* Format a literal value for inline display.
|
|
389
418
|
*/
|
|
390
419
|
function formatLiteralValue(lit) {
|
|
420
|
+
let value;
|
|
391
421
|
if (lit.valueSource !== undefined) {
|
|
392
|
-
|
|
393
|
-
return lit.valueSource.length > 20
|
|
394
|
-
? lit.valueSource.substring(0, 17) + '...'
|
|
395
|
-
: lit.valueSource;
|
|
422
|
+
value = lit.valueSource;
|
|
396
423
|
}
|
|
397
|
-
|
|
424
|
+
else {
|
|
425
|
+
value = String(lit.value);
|
|
426
|
+
}
|
|
427
|
+
// Escape special characters
|
|
428
|
+
value = escapeString(value);
|
|
429
|
+
// Truncate long literals
|
|
430
|
+
return value.length > 20 ? value.substring(0, 17) + '...' : value;
|
|
398
431
|
}
|
|
399
432
|
/**
|
|
400
433
|
* Get a compact inline summary for certain node types.
|
|
@@ -484,30 +517,10 @@ class LstDebugPrinter {
|
|
|
484
517
|
*/
|
|
485
518
|
this.depthCache = new WeakMap();
|
|
486
519
|
this.options = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
* Uses caching to avoid repeated traversals.
|
|
491
|
-
*/
|
|
492
|
-
calculateDepth(cursor) {
|
|
493
|
-
if (!cursor) {
|
|
494
|
-
return 0;
|
|
495
|
-
}
|
|
496
|
-
// Check cache first
|
|
497
|
-
const cached = this.depthCache.get(cursor);
|
|
498
|
-
if (cached !== undefined) {
|
|
499
|
-
return cached;
|
|
520
|
+
// Truncate output file at start of session
|
|
521
|
+
if (this.options.output !== 'console') {
|
|
522
|
+
fs.writeFileSync(this.options.output, '');
|
|
500
523
|
}
|
|
501
|
-
// Count depth by walking parent chain
|
|
502
|
-
let depth = 0;
|
|
503
|
-
for (let c = cursor; c; c = c.parent) {
|
|
504
|
-
depth++;
|
|
505
|
-
}
|
|
506
|
-
// Subtract 2 to skip root cursor and start CompilationUnit at depth 0
|
|
507
|
-
depth = Math.max(0, depth - 2);
|
|
508
|
-
// Cache the result
|
|
509
|
-
this.depthCache.set(cursor, depth);
|
|
510
|
-
return depth;
|
|
511
524
|
}
|
|
512
525
|
/**
|
|
513
526
|
* Clear the depth cache. Call this when starting a new tree
|
|
@@ -542,14 +555,16 @@ class LstDebugPrinter {
|
|
|
542
555
|
// Build single-line output for the node
|
|
543
556
|
let line = indent;
|
|
544
557
|
// Find property path from cursor
|
|
545
|
-
|
|
558
|
+
// When node === cursor.value, don't pass node - we want to find cursor.value in cursor.parent.value
|
|
559
|
+
// When node !== cursor.value (e.g., for RightPadded/LeftPadded/Container), pass node to find it in cursor.value
|
|
560
|
+
const propPath = findPropertyPath(cursor, node === (cursor === null || cursor === void 0 ? void 0 : cursor.value) ? undefined : node);
|
|
546
561
|
if (propPath) {
|
|
547
562
|
line += `${propPath}: `;
|
|
548
563
|
}
|
|
549
564
|
if (this.isContainer(node)) {
|
|
550
565
|
const container = node;
|
|
551
566
|
const before = formatSpace(container.before);
|
|
552
|
-
line += `Container<${(_b = (_a = container.elements) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0}>{before=${before}}`;
|
|
567
|
+
line += `Container<${(_b = (_a = container.elements) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0}>{before=${before}${formatMarkers(container)}}`;
|
|
553
568
|
}
|
|
554
569
|
else if (this.isLeftPadded(node)) {
|
|
555
570
|
const lp = node;
|
|
@@ -562,7 +577,7 @@ class LstDebugPrinter {
|
|
|
562
577
|
line += ` element=${JSON.stringify(lp.element)}`;
|
|
563
578
|
}
|
|
564
579
|
}
|
|
565
|
-
line +=
|
|
580
|
+
line += `${formatMarkers(lp)}}`;
|
|
566
581
|
}
|
|
567
582
|
else if (this.isRightPadded(node)) {
|
|
568
583
|
const rp = node;
|
|
@@ -575,7 +590,7 @@ class LstDebugPrinter {
|
|
|
575
590
|
line += ` element=${JSON.stringify(rp.element)}`;
|
|
576
591
|
}
|
|
577
592
|
}
|
|
578
|
-
line +=
|
|
593
|
+
line += `${formatMarkers(rp)}}`;
|
|
579
594
|
}
|
|
580
595
|
else if ((0, java_1.isJava)(node)) {
|
|
581
596
|
const jNode = node;
|
|
@@ -585,7 +600,7 @@ class LstDebugPrinter {
|
|
|
585
600
|
if (summary) {
|
|
586
601
|
line += `${summary} `;
|
|
587
602
|
}
|
|
588
|
-
line += `prefix=${formatSpace(jNode.prefix)}}`;
|
|
603
|
+
line += `prefix=${formatSpace(jNode.prefix)}${formatMarkers(jNode)}}`;
|
|
589
604
|
}
|
|
590
605
|
else {
|
|
591
606
|
line += `<unknown: ${typeof node}>`;
|
|
@@ -640,6 +655,30 @@ class LstDebugPrinter {
|
|
|
640
655
|
}
|
|
641
656
|
this.flush();
|
|
642
657
|
}
|
|
658
|
+
/**
|
|
659
|
+
* Calculate the depth of the cursor by counting parent chain length.
|
|
660
|
+
* Uses caching to avoid repeated traversals.
|
|
661
|
+
*/
|
|
662
|
+
calculateDepth(cursor) {
|
|
663
|
+
if (!cursor) {
|
|
664
|
+
return 0;
|
|
665
|
+
}
|
|
666
|
+
// Check cache first
|
|
667
|
+
const cached = this.depthCache.get(cursor);
|
|
668
|
+
if (cached !== undefined) {
|
|
669
|
+
return cached;
|
|
670
|
+
}
|
|
671
|
+
// Count depth by walking parent chain
|
|
672
|
+
let depth = 0;
|
|
673
|
+
for (let c = cursor; c; c = c.parent) {
|
|
674
|
+
depth++;
|
|
675
|
+
}
|
|
676
|
+
// Subtract 2 to skip root cursor and start CompilationUnit at depth 0
|
|
677
|
+
depth = Math.max(0, depth - 2);
|
|
678
|
+
// Cache the result
|
|
679
|
+
this.depthCache.set(cursor, depth);
|
|
680
|
+
return depth;
|
|
681
|
+
}
|
|
643
682
|
printNode(node, cursor, depth) {
|
|
644
683
|
if (this.options.maxDepth >= 0 && depth > this.options.maxDepth) {
|
|
645
684
|
this.outputLines.push(`${this.indent(depth)}...`);
|
|
@@ -919,45 +958,6 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
919
958
|
this.printPreVisit = (_a = config.printPreVisit) !== null && _a !== void 0 ? _a : true;
|
|
920
959
|
this.printPostVisit = (_b = config.printPostVisit) !== null && _b !== void 0 ? _b : false;
|
|
921
960
|
}
|
|
922
|
-
preVisit(tree, _p) {
|
|
923
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
924
|
-
if (this.printPreVisit) {
|
|
925
|
-
const typeName = shortTypeName(tree.kind);
|
|
926
|
-
const indent = ' '.repeat(this.depth);
|
|
927
|
-
const messages = formatCursorMessages(this.cursor);
|
|
928
|
-
const prefix = formatSpace(tree.prefix);
|
|
929
|
-
const summary = getNodeSummary(tree);
|
|
930
|
-
const propPath = findPropertyPath(this.cursor);
|
|
931
|
-
let line = indent;
|
|
932
|
-
if (propPath) {
|
|
933
|
-
line += `${propPath}: `;
|
|
934
|
-
}
|
|
935
|
-
line += `${typeName}{`;
|
|
936
|
-
if (summary) {
|
|
937
|
-
line += `${summary} `;
|
|
938
|
-
}
|
|
939
|
-
line += `prefix=${prefix}}`;
|
|
940
|
-
// Append cursor messages on same line to avoid empty line issues
|
|
941
|
-
if (messages !== '<no messages>') {
|
|
942
|
-
line += ` ${messages}`;
|
|
943
|
-
}
|
|
944
|
-
console.info(line);
|
|
945
|
-
}
|
|
946
|
-
this.depth++;
|
|
947
|
-
return tree;
|
|
948
|
-
});
|
|
949
|
-
}
|
|
950
|
-
postVisit(tree, _p) {
|
|
951
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
952
|
-
this.depth--;
|
|
953
|
-
if (this.printPostVisit) {
|
|
954
|
-
const typeName = shortTypeName(tree.kind);
|
|
955
|
-
const indent = ' '.repeat(this.depth);
|
|
956
|
-
console.info(`${indent}← ${typeName}`);
|
|
957
|
-
}
|
|
958
|
-
return tree;
|
|
959
|
-
});
|
|
960
|
-
}
|
|
961
961
|
visitContainer(container, p) {
|
|
962
962
|
const _super = Object.create(null, {
|
|
963
963
|
visitContainer: { get: () => super.visitContainer }
|
|
@@ -973,7 +973,7 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
973
973
|
if (propPath) {
|
|
974
974
|
line += `${propPath}: `;
|
|
975
975
|
}
|
|
976
|
-
line += `Container<${container.elements.length}>{before=${before}}`;
|
|
976
|
+
line += `Container<${container.elements.length}>{before=${before}${formatMarkers(container)}}`;
|
|
977
977
|
// Append cursor messages on same line to avoid empty line issues
|
|
978
978
|
if (messages !== '<no messages>') {
|
|
979
979
|
line += ` ${messages}`;
|
|
@@ -1009,7 +1009,7 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
1009
1009
|
line += ` element=${JSON.stringify(left.element)}`;
|
|
1010
1010
|
}
|
|
1011
1011
|
}
|
|
1012
|
-
line +=
|
|
1012
|
+
line += `${formatMarkers(left)}}`;
|
|
1013
1013
|
// Append cursor messages on same line to avoid empty line issues
|
|
1014
1014
|
if (messages !== '<no messages>') {
|
|
1015
1015
|
line += ` ${messages}`;
|
|
@@ -1045,7 +1045,7 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
1045
1045
|
line += ` element=${JSON.stringify(right.element)}`;
|
|
1046
1046
|
}
|
|
1047
1047
|
}
|
|
1048
|
-
line +=
|
|
1048
|
+
line += `${formatMarkers(right)}}`;
|
|
1049
1049
|
// Append cursor messages on same line to avoid empty line issues
|
|
1050
1050
|
if (messages !== '<no messages>') {
|
|
1051
1051
|
line += ` ${messages}`;
|
|
@@ -1058,6 +1058,45 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
1058
1058
|
return result;
|
|
1059
1059
|
});
|
|
1060
1060
|
}
|
|
1061
|
+
preVisit(tree, _p) {
|
|
1062
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1063
|
+
if (this.printPreVisit) {
|
|
1064
|
+
const typeName = shortTypeName(tree.kind);
|
|
1065
|
+
const indent = ' '.repeat(this.depth);
|
|
1066
|
+
const messages = formatCursorMessages(this.cursor);
|
|
1067
|
+
const prefix = formatSpace(tree.prefix);
|
|
1068
|
+
const summary = getNodeSummary(tree);
|
|
1069
|
+
const propPath = findPropertyPath(this.cursor);
|
|
1070
|
+
let line = indent;
|
|
1071
|
+
if (propPath) {
|
|
1072
|
+
line += `${propPath}: `;
|
|
1073
|
+
}
|
|
1074
|
+
line += `${typeName}{`;
|
|
1075
|
+
if (summary) {
|
|
1076
|
+
line += `${summary} `;
|
|
1077
|
+
}
|
|
1078
|
+
line += `prefix=${prefix}${formatMarkers(tree)}}`;
|
|
1079
|
+
// Append cursor messages on same line to avoid empty line issues
|
|
1080
|
+
if (messages !== '<no messages>') {
|
|
1081
|
+
line += ` ${messages}`;
|
|
1082
|
+
}
|
|
1083
|
+
console.info(line);
|
|
1084
|
+
}
|
|
1085
|
+
this.depth++;
|
|
1086
|
+
return tree;
|
|
1087
|
+
});
|
|
1088
|
+
}
|
|
1089
|
+
postVisit(tree, _p) {
|
|
1090
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1091
|
+
this.depth--;
|
|
1092
|
+
if (this.printPostVisit) {
|
|
1093
|
+
const typeName = shortTypeName(tree.kind);
|
|
1094
|
+
const indent = ' '.repeat(this.depth);
|
|
1095
|
+
console.info(`${indent}← ${typeName}`);
|
|
1096
|
+
}
|
|
1097
|
+
return tree;
|
|
1098
|
+
});
|
|
1099
|
+
}
|
|
1061
1100
|
}
|
|
1062
1101
|
exports.LstDebugVisitor = LstDebugVisitor;
|
|
1063
1102
|
/**
|
|
@@ -1090,4 +1129,44 @@ function debugPrint(tree, cursor, label, options) {
|
|
|
1090
1129
|
function debugPrintCursorPath(cursor, options) {
|
|
1091
1130
|
new LstDebugPrinter(options).printCursorPath(cursor);
|
|
1092
1131
|
}
|
|
1132
|
+
/**
|
|
1133
|
+
* Create a debug printer if debugging is enabled, otherwise return undefined.
|
|
1134
|
+
*
|
|
1135
|
+
* This is useful for visitors that want to optionally enable debugging via
|
|
1136
|
+
* constructor parameters or configuration.
|
|
1137
|
+
*
|
|
1138
|
+
* @param enabled Whether debugging is enabled
|
|
1139
|
+
* @param options Debug options (including output file path)
|
|
1140
|
+
* @returns LstDebugPrinter if enabled, undefined otherwise
|
|
1141
|
+
*
|
|
1142
|
+
* @example
|
|
1143
|
+
* class MyVisitor extends JavaScriptVisitor<P> {
|
|
1144
|
+
* private debug?: LstDebugPrinter;
|
|
1145
|
+
*
|
|
1146
|
+
* constructor(enableDebug?: boolean | LstDebugOptions) {
|
|
1147
|
+
* super();
|
|
1148
|
+
* this.debug = createDebugPrinter(enableDebug);
|
|
1149
|
+
* }
|
|
1150
|
+
*
|
|
1151
|
+
* async visitBlock(block: J.Block, p: P) {
|
|
1152
|
+
* this.debug?.log(block, this.cursor);
|
|
1153
|
+
* return super.visitBlock(block, p);
|
|
1154
|
+
* }
|
|
1155
|
+
* }
|
|
1156
|
+
*
|
|
1157
|
+
* // Usage:
|
|
1158
|
+
* new MyVisitor(true); // Enable with defaults
|
|
1159
|
+
* new MyVisitor({ output: '/tmp/debug.txt' }); // Enable with options
|
|
1160
|
+
* new MyVisitor(false); // Disabled
|
|
1161
|
+
* new MyVisitor(); // Disabled (default)
|
|
1162
|
+
*/
|
|
1163
|
+
function createDebugPrinter(enabled) {
|
|
1164
|
+
if (enabled === undefined || enabled === false) {
|
|
1165
|
+
return undefined;
|
|
1166
|
+
}
|
|
1167
|
+
if (enabled === true) {
|
|
1168
|
+
return new LstDebugPrinter();
|
|
1169
|
+
}
|
|
1170
|
+
return new LstDebugPrinter(enabled);
|
|
1171
|
+
}
|
|
1093
1172
|
//# sourceMappingURL=tree-debug.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-debug.js","sourceRoot":"","sources":["../../src/javascript/tree-debug.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree-debug.js","sourceRoot":"","sources":["../../src/javascript/tree-debug.ts"],"names":[],"mappings":"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"}
|
package/dist/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
8.69.0-
|
|
1
|
+
8.69.0-20251214-145302
|
package/package.json
CHANGED
|
@@ -22,21 +22,29 @@ import * as fs from "fs";
|
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Options for controlling LST debug output.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* // Output to a file instead of console
|
|
28
|
+
* const options: LstDebugOptions = { output: '/tmp/debug.txt' };
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* // Minimal output - just the tree structure
|
|
32
|
+
* const options: LstDebugOptions = { includeCursorMessages: false };
|
|
25
33
|
*/
|
|
26
34
|
export interface LstDebugOptions {
|
|
27
|
-
/** Include cursor messages in output. Default: true */
|
|
35
|
+
/** Include cursor messages (like indentContext) in output. Default: true */
|
|
28
36
|
includeCursorMessages?: boolean;
|
|
29
37
|
/** Include markers in output. Default: false */
|
|
30
38
|
includeMarkers?: boolean;
|
|
31
|
-
/** Include IDs in output. Default: false */
|
|
39
|
+
/** Include node IDs in output. Default: false */
|
|
32
40
|
includeIds?: boolean;
|
|
33
|
-
/** Maximum depth to traverse. Default: unlimited (-1) */
|
|
41
|
+
/** Maximum depth to traverse (for print/recursive methods). Default: unlimited (-1) */
|
|
34
42
|
maxDepth?: number;
|
|
35
|
-
/** Properties to always exclude (in addition to defaults). */
|
|
43
|
+
/** Properties to always exclude (in addition to defaults like 'type'). */
|
|
36
44
|
excludeProperties?: string[];
|
|
37
45
|
/** Output destination: 'console' or a file path. Default: 'console' */
|
|
38
46
|
output?: 'console' | string;
|
|
39
|
-
/** Indent string for nested output. Default: ' ' */
|
|
47
|
+
/** Indent string for nested output. Default: ' ' (2 spaces) */
|
|
40
48
|
indent?: string;
|
|
41
49
|
}
|
|
42
50
|
|
|
@@ -233,6 +241,10 @@ export function formatCursorMessages(cursor: Cursor | undefined): string {
|
|
|
233
241
|
let valueStr: string;
|
|
234
242
|
if (Array.isArray(value)) {
|
|
235
243
|
valueStr = `[${value.map(v => JSON.stringify(v)).join(', ')}]`;
|
|
244
|
+
} else if (value instanceof Set) {
|
|
245
|
+
// Handle Set - convert to array notation
|
|
246
|
+
const items = Array.from(value).map(v => JSON.stringify(v)).join(', ');
|
|
247
|
+
valueStr = `{${items}}`;
|
|
236
248
|
} else if (typeof value === 'object' && value !== null) {
|
|
237
249
|
valueStr = JSON.stringify(value);
|
|
238
250
|
} else {
|
|
@@ -255,6 +267,19 @@ function shortTypeName(kind: string | undefined): string {
|
|
|
255
267
|
return lastDot >= 0 ? kind.substring(lastDot + 1) : kind;
|
|
256
268
|
}
|
|
257
269
|
|
|
270
|
+
/**
|
|
271
|
+
* Format markers for debug output.
|
|
272
|
+
* Returns empty string if no markers, otherwise returns ' markers=[Name1, Name2]'
|
|
273
|
+
*/
|
|
274
|
+
function formatMarkers(node: any): string {
|
|
275
|
+
const markers = node?.markers?.markers;
|
|
276
|
+
if (!markers || !Array.isArray(markers) || markers.length === 0) {
|
|
277
|
+
return '';
|
|
278
|
+
}
|
|
279
|
+
const names = markers.map((m: any) => shortTypeName(m.kind));
|
|
280
|
+
return ` markers=[${names.join(', ')}]`;
|
|
281
|
+
}
|
|
282
|
+
|
|
258
283
|
/**
|
|
259
284
|
* Find which property of the parent contains the given child element.
|
|
260
285
|
* Returns the property name, or property name with array index if in an array.
|
|
@@ -380,17 +405,31 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
|
|
|
380
405
|
return undefined;
|
|
381
406
|
}
|
|
382
407
|
|
|
408
|
+
/**
|
|
409
|
+
* Escape special characters in a string for display.
|
|
410
|
+
*/
|
|
411
|
+
function escapeString(str: string): string {
|
|
412
|
+
return str
|
|
413
|
+
.replace(/\\/g, '\\\\')
|
|
414
|
+
.replace(/\n/g, '\\n')
|
|
415
|
+
.replace(/\r/g, '\\r')
|
|
416
|
+
.replace(/\t/g, '\\t');
|
|
417
|
+
}
|
|
418
|
+
|
|
383
419
|
/**
|
|
384
420
|
* Format a literal value for inline display.
|
|
385
421
|
*/
|
|
386
422
|
function formatLiteralValue(lit: J.Literal): string {
|
|
423
|
+
let value: string;
|
|
387
424
|
if (lit.valueSource !== undefined) {
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
: lit.valueSource;
|
|
425
|
+
value = lit.valueSource;
|
|
426
|
+
} else {
|
|
427
|
+
value = String(lit.value);
|
|
392
428
|
}
|
|
393
|
-
|
|
429
|
+
// Escape special characters
|
|
430
|
+
value = escapeString(value);
|
|
431
|
+
// Truncate long literals
|
|
432
|
+
return value.length > 20 ? value.substring(0, 17) + '...' : value;
|
|
394
433
|
}
|
|
395
434
|
|
|
396
435
|
/**
|
|
@@ -486,34 +525,10 @@ export class LstDebugPrinter {
|
|
|
486
525
|
|
|
487
526
|
constructor(options: LstDebugOptions = {}) {
|
|
488
527
|
this.options = {...DEFAULT_OPTIONS, ...options};
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
* Calculate the depth of the cursor by counting parent chain length.
|
|
493
|
-
* Uses caching to avoid repeated traversals.
|
|
494
|
-
*/
|
|
495
|
-
private calculateDepth(cursor: Cursor | undefined): number {
|
|
496
|
-
if (!cursor) {
|
|
497
|
-
return 0;
|
|
528
|
+
// Truncate output file at start of session
|
|
529
|
+
if (this.options.output !== 'console') {
|
|
530
|
+
fs.writeFileSync(this.options.output, '');
|
|
498
531
|
}
|
|
499
|
-
|
|
500
|
-
// Check cache first
|
|
501
|
-
const cached = this.depthCache.get(cursor);
|
|
502
|
-
if (cached !== undefined) {
|
|
503
|
-
return cached;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
// Count depth by walking parent chain
|
|
507
|
-
let depth = 0;
|
|
508
|
-
for (let c: Cursor | undefined = cursor; c; c = c.parent) {
|
|
509
|
-
depth++;
|
|
510
|
-
}
|
|
511
|
-
// Subtract 2 to skip root cursor and start CompilationUnit at depth 0
|
|
512
|
-
depth = Math.max(0, depth - 2);
|
|
513
|
-
|
|
514
|
-
// Cache the result
|
|
515
|
-
this.depthCache.set(cursor, depth);
|
|
516
|
-
return depth;
|
|
517
532
|
}
|
|
518
533
|
|
|
519
534
|
/**
|
|
@@ -553,7 +568,9 @@ export class LstDebugPrinter {
|
|
|
553
568
|
let line = indent;
|
|
554
569
|
|
|
555
570
|
// Find property path from cursor
|
|
556
|
-
|
|
571
|
+
// When node === cursor.value, don't pass node - we want to find cursor.value in cursor.parent.value
|
|
572
|
+
// When node !== cursor.value (e.g., for RightPadded/LeftPadded/Container), pass node to find it in cursor.value
|
|
573
|
+
const propPath = findPropertyPath(cursor, node === cursor?.value ? undefined : node);
|
|
557
574
|
if (propPath) {
|
|
558
575
|
line += `${propPath}: `;
|
|
559
576
|
}
|
|
@@ -561,7 +578,7 @@ export class LstDebugPrinter {
|
|
|
561
578
|
if (this.isContainer(node)) {
|
|
562
579
|
const container = node as J.Container<any>;
|
|
563
580
|
const before = formatSpace(container.before);
|
|
564
|
-
line += `Container<${container.elements?.length ?? 0}>{before=${before}}`;
|
|
581
|
+
line += `Container<${container.elements?.length ?? 0}>{before=${before}${formatMarkers(container)}}`;
|
|
565
582
|
} else if (this.isLeftPadded(node)) {
|
|
566
583
|
const lp = node as J.LeftPadded<any>;
|
|
567
584
|
const before = formatSpace(lp.before);
|
|
@@ -573,7 +590,7 @@ export class LstDebugPrinter {
|
|
|
573
590
|
line += ` element=${JSON.stringify(lp.element)}`;
|
|
574
591
|
}
|
|
575
592
|
}
|
|
576
|
-
line +=
|
|
593
|
+
line += `${formatMarkers(lp)}}`;
|
|
577
594
|
} else if (this.isRightPadded(node)) {
|
|
578
595
|
const rp = node as J.RightPadded<any>;
|
|
579
596
|
const after = formatSpace(rp.after);
|
|
@@ -585,7 +602,7 @@ export class LstDebugPrinter {
|
|
|
585
602
|
line += ` element=${JSON.stringify(rp.element)}`;
|
|
586
603
|
}
|
|
587
604
|
}
|
|
588
|
-
line +=
|
|
605
|
+
line += `${formatMarkers(rp)}}`;
|
|
589
606
|
} else if (isJava(node)) {
|
|
590
607
|
const jNode = node as J;
|
|
591
608
|
const typeName = shortTypeName(jNode.kind);
|
|
@@ -594,7 +611,7 @@ export class LstDebugPrinter {
|
|
|
594
611
|
if (summary) {
|
|
595
612
|
line += `${summary} `;
|
|
596
613
|
}
|
|
597
|
-
line += `prefix=${formatSpace(jNode.prefix)}}`;
|
|
614
|
+
line += `prefix=${formatSpace(jNode.prefix)}${formatMarkers(jNode)}}`;
|
|
598
615
|
} else {
|
|
599
616
|
line += `<unknown: ${typeof node}>`;
|
|
600
617
|
}
|
|
@@ -657,6 +674,34 @@ export class LstDebugPrinter {
|
|
|
657
674
|
this.flush();
|
|
658
675
|
}
|
|
659
676
|
|
|
677
|
+
/**
|
|
678
|
+
* Calculate the depth of the cursor by counting parent chain length.
|
|
679
|
+
* Uses caching to avoid repeated traversals.
|
|
680
|
+
*/
|
|
681
|
+
private calculateDepth(cursor: Cursor | undefined): number {
|
|
682
|
+
if (!cursor) {
|
|
683
|
+
return 0;
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
// Check cache first
|
|
687
|
+
const cached = this.depthCache.get(cursor);
|
|
688
|
+
if (cached !== undefined) {
|
|
689
|
+
return cached;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
// Count depth by walking parent chain
|
|
693
|
+
let depth = 0;
|
|
694
|
+
for (let c: Cursor | undefined = cursor; c; c = c.parent) {
|
|
695
|
+
depth++;
|
|
696
|
+
}
|
|
697
|
+
// Subtract 2 to skip root cursor and start CompilationUnit at depth 0
|
|
698
|
+
depth = Math.max(0, depth - 2);
|
|
699
|
+
|
|
700
|
+
// Cache the result
|
|
701
|
+
this.depthCache.set(cursor, depth);
|
|
702
|
+
return depth;
|
|
703
|
+
}
|
|
704
|
+
|
|
660
705
|
private printNode(
|
|
661
706
|
node: any,
|
|
662
707
|
cursor: Cursor | undefined,
|
|
@@ -969,45 +1014,6 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
969
1014
|
this.printPostVisit = config.printPostVisit ?? false;
|
|
970
1015
|
}
|
|
971
1016
|
|
|
972
|
-
protected async preVisit(tree: J, _p: P): Promise<J | undefined> {
|
|
973
|
-
if (this.printPreVisit) {
|
|
974
|
-
const typeName = shortTypeName(tree.kind);
|
|
975
|
-
const indent = ' '.repeat(this.depth);
|
|
976
|
-
const messages = formatCursorMessages(this.cursor);
|
|
977
|
-
const prefix = formatSpace(tree.prefix);
|
|
978
|
-
const summary = getNodeSummary(tree);
|
|
979
|
-
const propPath = findPropertyPath(this.cursor);
|
|
980
|
-
|
|
981
|
-
let line = indent;
|
|
982
|
-
if (propPath) {
|
|
983
|
-
line += `${propPath}: `;
|
|
984
|
-
}
|
|
985
|
-
line += `${typeName}{`;
|
|
986
|
-
if (summary) {
|
|
987
|
-
line += `${summary} `;
|
|
988
|
-
}
|
|
989
|
-
line += `prefix=${prefix}}`;
|
|
990
|
-
|
|
991
|
-
// Append cursor messages on same line to avoid empty line issues
|
|
992
|
-
if (messages !== '<no messages>') {
|
|
993
|
-
line += ` ${messages}`;
|
|
994
|
-
}
|
|
995
|
-
console.info(line);
|
|
996
|
-
}
|
|
997
|
-
this.depth++;
|
|
998
|
-
return tree;
|
|
999
|
-
}
|
|
1000
|
-
|
|
1001
|
-
protected async postVisit(tree: J, _p: P): Promise<J | undefined> {
|
|
1002
|
-
this.depth--;
|
|
1003
|
-
if (this.printPostVisit) {
|
|
1004
|
-
const typeName = shortTypeName(tree.kind);
|
|
1005
|
-
const indent = ' '.repeat(this.depth);
|
|
1006
|
-
console.info(`${indent}← ${typeName}`);
|
|
1007
|
-
}
|
|
1008
|
-
return tree;
|
|
1009
|
-
}
|
|
1010
|
-
|
|
1011
1017
|
public async visitContainer<T extends J>(container: J.Container<T>, p: P): Promise<J.Container<T>> {
|
|
1012
1018
|
if (this.printPreVisit) {
|
|
1013
1019
|
const indent = ' '.repeat(this.depth);
|
|
@@ -1020,7 +1026,7 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
1020
1026
|
if (propPath) {
|
|
1021
1027
|
line += `${propPath}: `;
|
|
1022
1028
|
}
|
|
1023
|
-
line += `Container<${container.elements.length}>{before=${before}}`;
|
|
1029
|
+
line += `Container<${container.elements.length}>{before=${before}${formatMarkers(container)}}`;
|
|
1024
1030
|
|
|
1025
1031
|
// Append cursor messages on same line to avoid empty line issues
|
|
1026
1032
|
if (messages !== '<no messages>') {
|
|
@@ -1058,7 +1064,7 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
1058
1064
|
line += ` element=${JSON.stringify(left.element)}`;
|
|
1059
1065
|
}
|
|
1060
1066
|
}
|
|
1061
|
-
line +=
|
|
1067
|
+
line += `${formatMarkers(left)}}`;
|
|
1062
1068
|
|
|
1063
1069
|
// Append cursor messages on same line to avoid empty line issues
|
|
1064
1070
|
if (messages !== '<no messages>') {
|
|
@@ -1096,7 +1102,7 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
1096
1102
|
line += ` element=${JSON.stringify(right.element)}`;
|
|
1097
1103
|
}
|
|
1098
1104
|
}
|
|
1099
|
-
line +=
|
|
1105
|
+
line += `${formatMarkers(right)}}`;
|
|
1100
1106
|
|
|
1101
1107
|
// Append cursor messages on same line to avoid empty line issues
|
|
1102
1108
|
if (messages !== '<no messages>') {
|
|
@@ -1109,6 +1115,45 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
1109
1115
|
this.depth--;
|
|
1110
1116
|
return result;
|
|
1111
1117
|
}
|
|
1118
|
+
|
|
1119
|
+
protected async preVisit(tree: J, _p: P): Promise<J | undefined> {
|
|
1120
|
+
if (this.printPreVisit) {
|
|
1121
|
+
const typeName = shortTypeName(tree.kind);
|
|
1122
|
+
const indent = ' '.repeat(this.depth);
|
|
1123
|
+
const messages = formatCursorMessages(this.cursor);
|
|
1124
|
+
const prefix = formatSpace(tree.prefix);
|
|
1125
|
+
const summary = getNodeSummary(tree);
|
|
1126
|
+
const propPath = findPropertyPath(this.cursor);
|
|
1127
|
+
|
|
1128
|
+
let line = indent;
|
|
1129
|
+
if (propPath) {
|
|
1130
|
+
line += `${propPath}: `;
|
|
1131
|
+
}
|
|
1132
|
+
line += `${typeName}{`;
|
|
1133
|
+
if (summary) {
|
|
1134
|
+
line += `${summary} `;
|
|
1135
|
+
}
|
|
1136
|
+
line += `prefix=${prefix}${formatMarkers(tree)}}`;
|
|
1137
|
+
|
|
1138
|
+
// Append cursor messages on same line to avoid empty line issues
|
|
1139
|
+
if (messages !== '<no messages>') {
|
|
1140
|
+
line += ` ${messages}`;
|
|
1141
|
+
}
|
|
1142
|
+
console.info(line);
|
|
1143
|
+
}
|
|
1144
|
+
this.depth++;
|
|
1145
|
+
return tree;
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
protected async postVisit(tree: J, _p: P): Promise<J | undefined> {
|
|
1149
|
+
this.depth--;
|
|
1150
|
+
if (this.printPostVisit) {
|
|
1151
|
+
const typeName = shortTypeName(tree.kind);
|
|
1152
|
+
const indent = ' '.repeat(this.depth);
|
|
1153
|
+
console.info(`${indent}← ${typeName}`);
|
|
1154
|
+
}
|
|
1155
|
+
return tree;
|
|
1156
|
+
}
|
|
1112
1157
|
}
|
|
1113
1158
|
|
|
1114
1159
|
/**
|
|
@@ -1143,3 +1188,44 @@ export function debugPrint(tree: Tree, cursor?: Cursor, label?: string, options?
|
|
|
1143
1188
|
export function debugPrintCursorPath(cursor: Cursor, options?: LstDebugOptions): void {
|
|
1144
1189
|
new LstDebugPrinter(options).printCursorPath(cursor);
|
|
1145
1190
|
}
|
|
1191
|
+
|
|
1192
|
+
/**
|
|
1193
|
+
* Create a debug printer if debugging is enabled, otherwise return undefined.
|
|
1194
|
+
*
|
|
1195
|
+
* This is useful for visitors that want to optionally enable debugging via
|
|
1196
|
+
* constructor parameters or configuration.
|
|
1197
|
+
*
|
|
1198
|
+
* @param enabled Whether debugging is enabled
|
|
1199
|
+
* @param options Debug options (including output file path)
|
|
1200
|
+
* @returns LstDebugPrinter if enabled, undefined otherwise
|
|
1201
|
+
*
|
|
1202
|
+
* @example
|
|
1203
|
+
* class MyVisitor extends JavaScriptVisitor<P> {
|
|
1204
|
+
* private debug?: LstDebugPrinter;
|
|
1205
|
+
*
|
|
1206
|
+
* constructor(enableDebug?: boolean | LstDebugOptions) {
|
|
1207
|
+
* super();
|
|
1208
|
+
* this.debug = createDebugPrinter(enableDebug);
|
|
1209
|
+
* }
|
|
1210
|
+
*
|
|
1211
|
+
* async visitBlock(block: J.Block, p: P) {
|
|
1212
|
+
* this.debug?.log(block, this.cursor);
|
|
1213
|
+
* return super.visitBlock(block, p);
|
|
1214
|
+
* }
|
|
1215
|
+
* }
|
|
1216
|
+
*
|
|
1217
|
+
* // Usage:
|
|
1218
|
+
* new MyVisitor(true); // Enable with defaults
|
|
1219
|
+
* new MyVisitor({ output: '/tmp/debug.txt' }); // Enable with options
|
|
1220
|
+
* new MyVisitor(false); // Disabled
|
|
1221
|
+
* new MyVisitor(); // Disabled (default)
|
|
1222
|
+
*/
|
|
1223
|
+
export function createDebugPrinter(enabled?: boolean | LstDebugOptions): LstDebugPrinter | undefined {
|
|
1224
|
+
if (enabled === undefined || enabled === false) {
|
|
1225
|
+
return undefined;
|
|
1226
|
+
}
|
|
1227
|
+
if (enabled === true) {
|
|
1228
|
+
return new LstDebugPrinter();
|
|
1229
|
+
}
|
|
1230
|
+
return new LstDebugPrinter(enabled);
|
|
1231
|
+
}
|