@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":"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"}
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
- // Truncate long literals
393
- return lit.valueSource.length > 20
394
- ? lit.valueSource.substring(0, 17) + '...'
395
- : lit.valueSource;
422
+ value = lit.valueSource;
396
423
  }
397
- return String(lit.value);
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
- * Calculate the depth of the cursor by counting parent chain length.
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
- const propPath = findPropertyPath(cursor, node);
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-20251213-160302
1
+ 8.69.0-20251214-145302
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrewrite/rewrite",
3
- "version": "8.69.0-20251213-160302",
3
+ "version": "8.69.0-20251214-145302",
4
4
  "license": "Moderne Source Available License",
5
5
  "description": "OpenRewrite JavaScript.",
6
6
  "homepage": "https://github.com/openrewrite/rewrite",
@@ -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
- // Truncate long literals
389
- return lit.valueSource.length > 20
390
- ? lit.valueSource.substring(0, 17) + '...'
391
- : lit.valueSource;
425
+ value = lit.valueSource;
426
+ } else {
427
+ value = String(lit.value);
392
428
  }
393
- return String(lit.value);
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
- const propPath = findPropertyPath(cursor, node);
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
+ }