@openrewrite/rewrite 8.69.0-20251212-152027 → 8.69.0-20251212-183252

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.
@@ -59,24 +59,90 @@ export declare function findPropertyPath(cursor: Cursor | undefined, child?: any
59
59
  /**
60
60
  * LST Debug Printer - prints LST nodes in a readable format.
61
61
  *
62
- * Usage from within a visitor:
62
+ * This is a STATEFUL object that tracks cursor depth across calls to provide
63
+ * proper indentation. Create one instance as a field in your visitor and reuse it.
64
+ *
65
+ * Two main methods:
66
+ * - `log()`: Prints a single node WITHOUT recursing into children. Tracks cursor
67
+ * hierarchy across calls to show proper indentation.
68
+ * - `print()`: Prints a node AND all its children recursively.
69
+ *
70
+ * Usage from within a visitor (recommended pattern):
63
71
  * ```typescript
64
- * class MyVisitor extends JavaScriptVisitor<P> {
65
- * private debug = new LstDebugPrinter({ includeCursorMessages: true });
72
+ * class TabsAndIndentsVisitor extends JavaScriptVisitor<P> {
73
+ * // Create as a field - it tracks state across calls
74
+ * private debug = new LstDebugPrinter();
75
+ *
76
+ * async visitBlock(block: J.Block, p: P) {
77
+ * // Log this node with automatic indentation based on cursor depth
78
+ * this.debug.log(block, this.cursor, "visiting block");
79
+ * return super.visitBlock(block, p);
80
+ * }
66
81
  *
67
82
  * async visitMethodInvocation(mi: J.MethodInvocation, p: P) {
68
- * this.debug.print(mi, this.cursor);
83
+ * this.debug.log(mi, this.cursor);
69
84
  * return super.visitMethodInvocation(mi, p);
70
85
  * }
71
86
  * }
72
87
  * ```
88
+ *
89
+ * Output will be properly indented based on tree depth:
90
+ * ```
91
+ * CompilationUnit{prefix=''}
92
+ * statements[0]: ClassDeclaration{name='Foo' prefix=''}
93
+ * body: Block{prefix='·'}
94
+ * // visiting block
95
+ * statements[0]: MethodDeclaration{name='bar' prefix='\n·₄'}
96
+ * ```
97
+ *
98
+ * To reset indentation tracking (e.g., between files):
99
+ * ```typescript
100
+ * this.debug.reset();
101
+ * ```
102
+ *
103
+ * To print an entire subtree with recursion:
104
+ * ```typescript
105
+ * this.debug.print(subtree, this.cursor, "dumping subtree");
106
+ * ```
73
107
  */
74
108
  export declare class LstDebugPrinter {
75
109
  private readonly options;
76
110
  private outputLines;
111
+ /**
112
+ * Cache of cursor depth to avoid recalculating.
113
+ * Uses WeakMap so cursors can be garbage collected.
114
+ */
115
+ private depthCache;
77
116
  constructor(options?: LstDebugOptions);
78
117
  /**
79
- * Print a tree node with optional cursor context.
118
+ * Calculate the depth of the cursor by counting parent chain length.
119
+ * Uses caching to avoid repeated traversals.
120
+ */
121
+ private calculateDepth;
122
+ /**
123
+ * Clear the depth cache. Call this when starting a new tree
124
+ * to free memory from previous traversals.
125
+ */
126
+ reset(): void;
127
+ /**
128
+ * Log a single node WITHOUT recursing into children.
129
+ * Use this from visitor methods to log individual nodes as they are visited.
130
+ *
131
+ * When called with a cursor, tracks the cursor hierarchy across calls to
132
+ * provide proper indentation showing the tree structure.
133
+ *
134
+ * Output format: `// label` (if provided), then indented `TypeName{summary prefix=...}`
135
+ * with cursor messages on a separate line if present.
136
+ *
137
+ * @param node The node to log
138
+ * @param cursor Optional cursor for context, messages, and depth tracking
139
+ * @param label Optional label to identify this log entry
140
+ */
141
+ log(node: Tree | J.Container<any> | J.LeftPadded<any> | J.RightPadded<any>, cursor?: Cursor, label?: string): void;
142
+ /**
143
+ * Print a tree node AND all its children recursively.
144
+ * Use this to dump an entire subtree structure.
145
+ *
80
146
  * @param tree The tree node to print
81
147
  * @param cursor Optional cursor for context
82
148
  * @param label Optional label to identify this debug output (shown as comment before output)
@@ -101,13 +167,27 @@ export declare class LstDebugPrinter {
101
167
  private flush;
102
168
  }
103
169
  /**
104
- * A visitor that prints the LST structure as it traverses.
105
- * Useful for debugging the entire tree or a subtree.
170
+ * A visitor that prints the LST structure as it traverses, showing each node
171
+ * with proper indentation to visualize the tree hierarchy.
172
+ *
173
+ * Use this to print an entire tree or subtree with full traversal. Each node
174
+ * is printed as it's visited, with indentation showing the tree depth.
175
+ *
176
+ * For logging individual nodes from within your own visitor without recursion,
177
+ * use `LstDebugPrinter.log()` or `debugLog()` instead.
106
178
  *
107
179
  * Usage:
108
180
  * ```typescript
109
- * const debugVisitor = new LstDebugVisitor({ maxDepth: 3 });
181
+ * // Print entire tree structure during traversal
182
+ * const debugVisitor = new LstDebugVisitor();
110
183
  * await debugVisitor.visit(tree, ctx);
184
+ *
185
+ * // With options
186
+ * const debugVisitor = new LstDebugVisitor(
187
+ * { includeCursorMessages: true },
188
+ * { printPreVisit: true, printPostVisit: false }
189
+ * );
190
+ * await debugVisitor.visit(subtree, ctx);
111
191
  * ```
112
192
  */
113
193
  export declare class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
@@ -126,7 +206,19 @@ export declare class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
126
206
  visitRightPadded<T extends J | boolean>(right: J.RightPadded<T>, p: P): Promise<J.RightPadded<T> | undefined>;
127
207
  }
128
208
  /**
129
- * Convenience function to print a tree node.
209
+ * Convenience function to log a single node (no recursion).
210
+ * Use this from visitor methods to log individual nodes as they are visited.
211
+ *
212
+ * @param node The node to log
213
+ * @param cursor Optional cursor for context and messages
214
+ * @param label Optional label to identify this log entry
215
+ * @param options Optional debug options
216
+ */
217
+ export declare function debugLog(node: Tree, cursor?: Cursor, label?: string, options?: LstDebugOptions): void;
218
+ /**
219
+ * Convenience function to print a tree node AND all its children recursively.
220
+ * Use this to dump an entire subtree structure.
221
+ *
130
222
  * @param tree The tree node to print
131
223
  * @param cursor Optional cursor for context
132
224
  * @param label Optional label to identify this debug output
@@ -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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"}
@@ -62,6 +62,7 @@ exports.formatWhitespace = formatWhitespace;
62
62
  exports.formatSpace = formatSpace;
63
63
  exports.formatCursorMessages = formatCursorMessages;
64
64
  exports.findPropertyPath = findPropertyPath;
65
+ exports.debugLog = debugLog;
65
66
  exports.debugPrint = debugPrint;
66
67
  exports.debugPrintCursorPath = debugPrintCursorPath;
67
68
  const java_1 = require("../java");
@@ -279,27 +280,40 @@ function shortTypeName(kind) {
279
280
  * @param child - Optional: the actual child node being visited (for RightPadded/LeftPadded/Container visits where cursor.value is the parent)
280
281
  */
281
282
  function findPropertyPath(cursor, child) {
282
- var _a, _b, _c, _d;
283
+ var _a, _b, _c;
283
284
  if (!cursor) {
284
285
  return undefined;
285
286
  }
286
- // If child is provided, use cursor.value as parent; otherwise use cursor.parent.value
287
+ // The child we're looking for
287
288
  const actualChild = child !== null && child !== void 0 ? child : cursor.value;
288
- const parent = child ? cursor.value : (_a = cursor.parent) === null || _a === void 0 ? void 0 : _a.value;
289
+ // Find the parent that should contain this child as a property.
290
+ // When child is explicitly provided (e.g., from visitRightPadded), cursor.value IS the parent.
291
+ // When child is not provided, we're looking for cursor.value in cursor.parent.value.
292
+ let parent = child ? cursor.value : (_a = cursor.parent) === null || _a === void 0 ? void 0 : _a.value;
289
293
  if (!parent || typeof parent !== 'object') {
290
294
  return undefined;
291
295
  }
292
296
  // Properties to skip when searching
293
297
  const skipProps = new Set(['kind', 'id', 'prefix', 'markers', 'type', 'methodType', 'variableType', 'fieldType', 'constructorType']);
298
+ // Helper to compare elements - use id comparison for Tree nodes (handles immutability)
299
+ const sameElement = (a, b) => {
300
+ if (a === b)
301
+ return true;
302
+ // If both have 'id' property (Tree nodes), compare by id
303
+ if (a && b && typeof a === 'object' && typeof b === 'object' && 'id' in a && 'id' in b) {
304
+ return a.id === b.id;
305
+ }
306
+ return false;
307
+ };
294
308
  // Special case: if parent is a Container, we need to look at grandparent to find the property name
295
309
  if (parent.kind === java_1.J.Kind.Container) {
296
310
  const container = parent;
297
- const grandparent = child ? (_b = cursor.parent) === null || _b === void 0 ? void 0 : _b.value : (_d = (_c = cursor.parent) === null || _c === void 0 ? void 0 : _c.parent) === null || _d === void 0 ? void 0 : _d.value;
311
+ const grandparent = (_c = (_b = cursor.parent) === null || _b === void 0 ? void 0 : _b.parent) === null || _c === void 0 ? void 0 : _c.value;
298
312
  // Find the index of actualChild in container.elements
299
313
  let childIndex = -1;
300
314
  if (container.elements) {
301
315
  for (let i = 0; i < container.elements.length; i++) {
302
- if (container.elements[i] === actualChild) {
316
+ if (sameElement(container.elements[i], actualChild)) {
303
317
  childIndex = i;
304
318
  break;
305
319
  }
@@ -310,7 +324,7 @@ function findPropertyPath(cursor, child) {
310
324
  for (const [key, value] of Object.entries(grandparent)) {
311
325
  if (skipProps.has(key))
312
326
  continue;
313
- if (value === parent) {
327
+ if (sameElement(value, parent)) {
314
328
  if (childIndex >= 0) {
315
329
  return `${key}[${childIndex}]`;
316
330
  }
@@ -327,18 +341,18 @@ function findPropertyPath(cursor, child) {
327
341
  if (skipProps.has(key))
328
342
  continue;
329
343
  // Direct match
330
- if (value === actualChild) {
344
+ if (sameElement(value, actualChild)) {
331
345
  return key;
332
346
  }
333
347
  // Check if child is in an array
334
348
  if (Array.isArray(value)) {
335
349
  for (let i = 0; i < value.length; i++) {
336
- if (value[i] === actualChild) {
350
+ if (sameElement(value[i], actualChild)) {
337
351
  return `${key}[${i}]`;
338
352
  }
339
353
  // Check inside RightPadded/LeftPadded wrappers
340
354
  if (value[i] && typeof value[i] === 'object') {
341
- if (value[i].element === actualChild) {
355
+ if (sameElement(value[i].element, actualChild)) {
342
356
  return `${key}[${i}].element`;
343
357
  }
344
358
  }
@@ -350,10 +364,10 @@ function findPropertyPath(cursor, child) {
350
364
  if (container.elements) {
351
365
  for (let i = 0; i < container.elements.length; i++) {
352
366
  const rp = container.elements[i];
353
- if (rp === actualChild) {
367
+ if (sameElement(rp, actualChild)) {
354
368
  return `${key}[${i}]`;
355
369
  }
356
- if (rp.element === actualChild) {
370
+ if (sameElement(rp.element, actualChild)) {
357
371
  return `${key}[${i}].element`;
358
372
  }
359
373
  }
@@ -362,7 +376,7 @@ function findPropertyPath(cursor, child) {
362
376
  // Check inside LeftPadded/RightPadded
363
377
  if (value && typeof value === 'object') {
364
378
  if (value.kind === java_1.J.Kind.LeftPadded || value.kind === java_1.J.Kind.RightPadded) {
365
- if (value.element === actualChild) {
379
+ if (sameElement(value.element, actualChild)) {
366
380
  return `${key}.element`;
367
381
  }
368
382
  }
@@ -415,25 +429,181 @@ function getNodeSummary(node) {
415
429
  /**
416
430
  * LST Debug Printer - prints LST nodes in a readable format.
417
431
  *
418
- * Usage from within a visitor:
432
+ * This is a STATEFUL object that tracks cursor depth across calls to provide
433
+ * proper indentation. Create one instance as a field in your visitor and reuse it.
434
+ *
435
+ * Two main methods:
436
+ * - `log()`: Prints a single node WITHOUT recursing into children. Tracks cursor
437
+ * hierarchy across calls to show proper indentation.
438
+ * - `print()`: Prints a node AND all its children recursively.
439
+ *
440
+ * Usage from within a visitor (recommended pattern):
419
441
  * ```typescript
420
- * class MyVisitor extends JavaScriptVisitor<P> {
421
- * private debug = new LstDebugPrinter({ includeCursorMessages: true });
442
+ * class TabsAndIndentsVisitor extends JavaScriptVisitor<P> {
443
+ * // Create as a field - it tracks state across calls
444
+ * private debug = new LstDebugPrinter();
445
+ *
446
+ * async visitBlock(block: J.Block, p: P) {
447
+ * // Log this node with automatic indentation based on cursor depth
448
+ * this.debug.log(block, this.cursor, "visiting block");
449
+ * return super.visitBlock(block, p);
450
+ * }
422
451
  *
423
452
  * async visitMethodInvocation(mi: J.MethodInvocation, p: P) {
424
- * this.debug.print(mi, this.cursor);
453
+ * this.debug.log(mi, this.cursor);
425
454
  * return super.visitMethodInvocation(mi, p);
426
455
  * }
427
456
  * }
428
457
  * ```
458
+ *
459
+ * Output will be properly indented based on tree depth:
460
+ * ```
461
+ * CompilationUnit{prefix=''}
462
+ * statements[0]: ClassDeclaration{name='Foo' prefix=''}
463
+ * body: Block{prefix='·'}
464
+ * // visiting block
465
+ * statements[0]: MethodDeclaration{name='bar' prefix='\n·₄'}
466
+ * ```
467
+ *
468
+ * To reset indentation tracking (e.g., between files):
469
+ * ```typescript
470
+ * this.debug.reset();
471
+ * ```
472
+ *
473
+ * To print an entire subtree with recursion:
474
+ * ```typescript
475
+ * this.debug.print(subtree, this.cursor, "dumping subtree");
476
+ * ```
429
477
  */
430
478
  class LstDebugPrinter {
431
479
  constructor(options = {}) {
432
480
  this.outputLines = [];
481
+ /**
482
+ * Cache of cursor depth to avoid recalculating.
483
+ * Uses WeakMap so cursors can be garbage collected.
484
+ */
485
+ this.depthCache = new WeakMap();
433
486
  this.options = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);
434
487
  }
435
488
  /**
436
- * Print a tree node with optional cursor context.
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;
500
+ }
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
+ }
512
+ /**
513
+ * Clear the depth cache. Call this when starting a new tree
514
+ * to free memory from previous traversals.
515
+ */
516
+ reset() {
517
+ this.depthCache = new WeakMap();
518
+ }
519
+ /**
520
+ * Log a single node WITHOUT recursing into children.
521
+ * Use this from visitor methods to log individual nodes as they are visited.
522
+ *
523
+ * When called with a cursor, tracks the cursor hierarchy across calls to
524
+ * provide proper indentation showing the tree structure.
525
+ *
526
+ * Output format: `// label` (if provided), then indented `TypeName{summary prefix=...}`
527
+ * with cursor messages on a separate line if present.
528
+ *
529
+ * @param node The node to log
530
+ * @param cursor Optional cursor for context, messages, and depth tracking
531
+ * @param label Optional label to identify this log entry
532
+ */
533
+ log(node, cursor, label) {
534
+ var _a, _b;
535
+ this.outputLines = [];
536
+ // Calculate indentation based on cursor depth
537
+ const depth = this.calculateDepth(cursor);
538
+ const indent = this.options.indent.repeat(depth);
539
+ if (label) {
540
+ this.outputLines.push(`${indent}// ${label}`);
541
+ }
542
+ // Build single-line output for the node
543
+ let line = indent;
544
+ // Find property path from cursor
545
+ const propPath = findPropertyPath(cursor, node);
546
+ if (propPath) {
547
+ line += `${propPath}: `;
548
+ }
549
+ if (this.isContainer(node)) {
550
+ const container = node;
551
+ 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}}`;
553
+ }
554
+ else if (this.isLeftPadded(node)) {
555
+ const lp = node;
556
+ const before = formatSpace(lp.before);
557
+ line += `LeftPadded{before=${before}`;
558
+ // Show element value if it's a primitive
559
+ if (lp.element !== null && lp.element !== undefined) {
560
+ const elemType = typeof lp.element;
561
+ if (elemType === 'string' || elemType === 'number' || elemType === 'boolean') {
562
+ line += ` element=${JSON.stringify(lp.element)}`;
563
+ }
564
+ }
565
+ line += '}';
566
+ }
567
+ else if (this.isRightPadded(node)) {
568
+ const rp = node;
569
+ const after = formatSpace(rp.after);
570
+ line += `RightPadded{after=${after}`;
571
+ // Show element value if it's a primitive
572
+ if (rp.element !== null && rp.element !== undefined) {
573
+ const elemType = typeof rp.element;
574
+ if (elemType === 'string' || elemType === 'number' || elemType === 'boolean') {
575
+ line += ` element=${JSON.stringify(rp.element)}`;
576
+ }
577
+ }
578
+ line += '}';
579
+ }
580
+ else if ((0, java_1.isJava)(node)) {
581
+ const jNode = node;
582
+ const typeName = shortTypeName(jNode.kind);
583
+ line += `${typeName}{`;
584
+ const summary = getNodeSummary(jNode);
585
+ if (summary) {
586
+ line += `${summary} `;
587
+ }
588
+ line += `prefix=${formatSpace(jNode.prefix)}}`;
589
+ }
590
+ else {
591
+ line += `<unknown: ${typeof node}>`;
592
+ }
593
+ this.outputLines.push(line);
594
+ // Add cursor messages on separate line if present
595
+ if (this.options.includeCursorMessages && cursor) {
596
+ const messages = formatCursorMessages(cursor);
597
+ if (messages !== '<no messages>') {
598
+ this.outputLines.push(`${indent} ⤷ ${messages}`);
599
+ }
600
+ }
601
+ this.flush();
602
+ }
603
+ /**
604
+ * Print a tree node AND all its children recursively.
605
+ * Use this to dump an entire subtree structure.
606
+ *
437
607
  * @param tree The tree node to print
438
608
  * @param cursor Optional cursor for context
439
609
  * @param label Optional label to identify this debug output (shown as comment before output)
@@ -710,20 +880,34 @@ class LstDebugPrinter {
710
880
  console.info(output);
711
881
  }
712
882
  else {
713
- fs.appendFileSync(this.options.output, output + '\n\n');
883
+ fs.appendFileSync(this.options.output, output + '\n');
714
884
  }
715
885
  this.outputLines = [];
716
886
  }
717
887
  }
718
888
  exports.LstDebugPrinter = LstDebugPrinter;
719
889
  /**
720
- * A visitor that prints the LST structure as it traverses.
721
- * Useful for debugging the entire tree or a subtree.
890
+ * A visitor that prints the LST structure as it traverses, showing each node
891
+ * with proper indentation to visualize the tree hierarchy.
892
+ *
893
+ * Use this to print an entire tree or subtree with full traversal. Each node
894
+ * is printed as it's visited, with indentation showing the tree depth.
895
+ *
896
+ * For logging individual nodes from within your own visitor without recursion,
897
+ * use `LstDebugPrinter.log()` or `debugLog()` instead.
722
898
  *
723
899
  * Usage:
724
900
  * ```typescript
725
- * const debugVisitor = new LstDebugVisitor({ maxDepth: 3 });
901
+ * // Print entire tree structure during traversal
902
+ * const debugVisitor = new LstDebugVisitor();
726
903
  * await debugVisitor.visit(tree, ctx);
904
+ *
905
+ * // With options
906
+ * const debugVisitor = new LstDebugVisitor(
907
+ * { includeCursorMessages: true },
908
+ * { printPreVisit: true, printPostVisit: false }
909
+ * );
910
+ * await debugVisitor.visit(subtree, ctx);
727
911
  * ```
728
912
  */
729
913
  class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
@@ -753,11 +937,11 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
753
937
  line += `${summary} `;
754
938
  }
755
939
  line += `prefix=${prefix}}`;
756
- console.info(line);
757
- // Show cursor messages on a separate indented line
940
+ // Append cursor messages on same line to avoid empty line issues
758
941
  if (messages !== '<no messages>') {
759
- console.info(`${indent} ⤷ ${messages}`);
942
+ line += ` ${messages}`;
760
943
  }
944
+ console.info(line);
761
945
  }
762
946
  this.depth++;
763
947
  return tree;
@@ -790,10 +974,11 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
790
974
  line += `${propPath}: `;
791
975
  }
792
976
  line += `Container<${container.elements.length}>{before=${before}}`;
793
- console.info(line);
977
+ // Append cursor messages on same line to avoid empty line issues
794
978
  if (messages !== '<no messages>') {
795
- console.info(`${indent} ⤷ ${messages}`);
979
+ line += ` ${messages}`;
796
980
  }
981
+ console.info(line);
797
982
  }
798
983
  this.depth++;
799
984
  const result = yield _super.visitContainer.call(this, container, p);
@@ -825,10 +1010,11 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
825
1010
  }
826
1011
  }
827
1012
  line += '}';
828
- console.info(line);
1013
+ // Append cursor messages on same line to avoid empty line issues
829
1014
  if (messages !== '<no messages>') {
830
- console.info(`${indent} ⤷ ${messages}`);
1015
+ line += ` ${messages}`;
831
1016
  }
1017
+ console.info(line);
832
1018
  }
833
1019
  this.depth++;
834
1020
  const result = yield _super.visitLeftPadded.call(this, left, p);
@@ -860,10 +1046,11 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
860
1046
  }
861
1047
  }
862
1048
  line += '}';
863
- console.info(line);
1049
+ // Append cursor messages on same line to avoid empty line issues
864
1050
  if (messages !== '<no messages>') {
865
- console.info(`${indent} ⤷ ${messages}`);
1051
+ line += ` ${messages}`;
866
1052
  }
1053
+ console.info(line);
867
1054
  }
868
1055
  this.depth++;
869
1056
  const result = yield _super.visitRightPadded.call(this, right, p);
@@ -874,7 +1061,21 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
874
1061
  }
875
1062
  exports.LstDebugVisitor = LstDebugVisitor;
876
1063
  /**
877
- * Convenience function to print a tree node.
1064
+ * Convenience function to log a single node (no recursion).
1065
+ * Use this from visitor methods to log individual nodes as they are visited.
1066
+ *
1067
+ * @param node The node to log
1068
+ * @param cursor Optional cursor for context and messages
1069
+ * @param label Optional label to identify this log entry
1070
+ * @param options Optional debug options
1071
+ */
1072
+ function debugLog(node, cursor, label, options) {
1073
+ new LstDebugPrinter(options).log(node, cursor, label);
1074
+ }
1075
+ /**
1076
+ * Convenience function to print a tree node AND all its children recursively.
1077
+ * Use this to dump an entire subtree structure.
1078
+ *
878
1079
  * @param tree The tree node to print
879
1080
  * @param cursor Optional cursor for context
880
1081
  * @param label Optional label to identify this debug output
@@ -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-20251212-152027
1
+ 8.69.0-20251212-183252
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrewrite/rewrite",
3
- "version": "8.69.0-20251212-152027",
3
+ "version": "8.69.0-20251212-183252",
4
4
  "license": "Moderne Source Available License",
5
5
  "description": "OpenRewrite JavaScript.",
6
6
  "homepage": "https://github.com/openrewrite/rewrite",
@@ -268,9 +268,13 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
268
268
  return undefined;
269
269
  }
270
270
 
271
- // If child is provided, use cursor.value as parent; otherwise use cursor.parent.value
271
+ // The child we're looking for
272
272
  const actualChild = child ?? cursor.value;
273
- const parent = child ? cursor.value : cursor.parent?.value;
273
+
274
+ // Find the parent that should contain this child as a property.
275
+ // When child is explicitly provided (e.g., from visitRightPadded), cursor.value IS the parent.
276
+ // When child is not provided, we're looking for cursor.value in cursor.parent.value.
277
+ let parent = child ? cursor.value : cursor.parent?.value;
274
278
 
275
279
  if (!parent || typeof parent !== 'object') {
276
280
  return undefined;
@@ -279,16 +283,26 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
279
283
  // Properties to skip when searching
280
284
  const skipProps = new Set(['kind', 'id', 'prefix', 'markers', 'type', 'methodType', 'variableType', 'fieldType', 'constructorType']);
281
285
 
286
+ // Helper to compare elements - use id comparison for Tree nodes (handles immutability)
287
+ const sameElement = (a: any, b: any): boolean => {
288
+ if (a === b) return true;
289
+ // If both have 'id' property (Tree nodes), compare by id
290
+ if (a && b && typeof a === 'object' && typeof b === 'object' && 'id' in a && 'id' in b) {
291
+ return a.id === b.id;
292
+ }
293
+ return false;
294
+ };
295
+
282
296
  // Special case: if parent is a Container, we need to look at grandparent to find the property name
283
297
  if ((parent as any).kind === J.Kind.Container) {
284
298
  const container = parent as J.Container<any>;
285
- const grandparent = child ? cursor.parent?.value : cursor.parent?.parent?.value;
299
+ const grandparent = cursor.parent?.parent?.value;
286
300
 
287
301
  // Find the index of actualChild in container.elements
288
302
  let childIndex = -1;
289
303
  if (container.elements) {
290
304
  for (let i = 0; i < container.elements.length; i++) {
291
- if (container.elements[i] === actualChild) {
305
+ if (sameElement(container.elements[i], actualChild)) {
292
306
  childIndex = i;
293
307
  break;
294
308
  }
@@ -299,7 +313,7 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
299
313
  if (grandparent && typeof grandparent === 'object') {
300
314
  for (const [key, value] of Object.entries(grandparent)) {
301
315
  if (skipProps.has(key)) continue;
302
- if (value === parent) {
316
+ if (sameElement(value, parent)) {
303
317
  if (childIndex >= 0) {
304
318
  return `${key}[${childIndex}]`;
305
319
  }
@@ -318,19 +332,19 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
318
332
  if (skipProps.has(key)) continue;
319
333
 
320
334
  // Direct match
321
- if (value === actualChild) {
335
+ if (sameElement(value, actualChild)) {
322
336
  return key;
323
337
  }
324
338
 
325
339
  // Check if child is in an array
326
340
  if (Array.isArray(value)) {
327
341
  for (let i = 0; i < value.length; i++) {
328
- if (value[i] === actualChild) {
342
+ if (sameElement(value[i], actualChild)) {
329
343
  return `${key}[${i}]`;
330
344
  }
331
345
  // Check inside RightPadded/LeftPadded wrappers
332
346
  if (value[i] && typeof value[i] === 'object') {
333
- if (value[i].element === actualChild) {
347
+ if (sameElement(value[i].element, actualChild)) {
334
348
  return `${key}[${i}].element`;
335
349
  }
336
350
  }
@@ -343,10 +357,10 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
343
357
  if (container.elements) {
344
358
  for (let i = 0; i < container.elements.length; i++) {
345
359
  const rp = container.elements[i];
346
- if (rp === actualChild) {
360
+ if (sameElement(rp, actualChild)) {
347
361
  return `${key}[${i}]`;
348
362
  }
349
- if (rp.element === actualChild) {
363
+ if (sameElement(rp.element, actualChild)) {
350
364
  return `${key}[${i}].element`;
351
365
  }
352
366
  }
@@ -356,7 +370,7 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
356
370
  // Check inside LeftPadded/RightPadded
357
371
  if (value && typeof value === 'object') {
358
372
  if ((value as any).kind === J.Kind.LeftPadded || (value as any).kind === J.Kind.RightPadded) {
359
- if ((value as any).element === actualChild) {
373
+ if (sameElement((value as any).element, actualChild)) {
360
374
  return `${key}.element`;
361
375
  }
362
376
  }
@@ -414,28 +428,194 @@ function getNodeSummary(node: J): string | undefined {
414
428
  /**
415
429
  * LST Debug Printer - prints LST nodes in a readable format.
416
430
  *
417
- * Usage from within a visitor:
431
+ * This is a STATEFUL object that tracks cursor depth across calls to provide
432
+ * proper indentation. Create one instance as a field in your visitor and reuse it.
433
+ *
434
+ * Two main methods:
435
+ * - `log()`: Prints a single node WITHOUT recursing into children. Tracks cursor
436
+ * hierarchy across calls to show proper indentation.
437
+ * - `print()`: Prints a node AND all its children recursively.
438
+ *
439
+ * Usage from within a visitor (recommended pattern):
418
440
  * ```typescript
419
- * class MyVisitor extends JavaScriptVisitor<P> {
420
- * private debug = new LstDebugPrinter({ includeCursorMessages: true });
441
+ * class TabsAndIndentsVisitor extends JavaScriptVisitor<P> {
442
+ * // Create as a field - it tracks state across calls
443
+ * private debug = new LstDebugPrinter();
444
+ *
445
+ * async visitBlock(block: J.Block, p: P) {
446
+ * // Log this node with automatic indentation based on cursor depth
447
+ * this.debug.log(block, this.cursor, "visiting block");
448
+ * return super.visitBlock(block, p);
449
+ * }
421
450
  *
422
451
  * async visitMethodInvocation(mi: J.MethodInvocation, p: P) {
423
- * this.debug.print(mi, this.cursor);
452
+ * this.debug.log(mi, this.cursor);
424
453
  * return super.visitMethodInvocation(mi, p);
425
454
  * }
426
455
  * }
427
456
  * ```
457
+ *
458
+ * Output will be properly indented based on tree depth:
459
+ * ```
460
+ * CompilationUnit{prefix=''}
461
+ * statements[0]: ClassDeclaration{name='Foo' prefix=''}
462
+ * body: Block{prefix='·'}
463
+ * // visiting block
464
+ * statements[0]: MethodDeclaration{name='bar' prefix='\n·₄'}
465
+ * ```
466
+ *
467
+ * To reset indentation tracking (e.g., between files):
468
+ * ```typescript
469
+ * this.debug.reset();
470
+ * ```
471
+ *
472
+ * To print an entire subtree with recursion:
473
+ * ```typescript
474
+ * this.debug.print(subtree, this.cursor, "dumping subtree");
475
+ * ```
428
476
  */
429
477
  export class LstDebugPrinter {
430
478
  private readonly options: Required<LstDebugOptions>;
431
479
  private outputLines: string[] = [];
432
480
 
481
+ /**
482
+ * Cache of cursor depth to avoid recalculating.
483
+ * Uses WeakMap so cursors can be garbage collected.
484
+ */
485
+ private depthCache = new WeakMap<Cursor, number>();
486
+
433
487
  constructor(options: LstDebugOptions = {}) {
434
488
  this.options = {...DEFAULT_OPTIONS, ...options};
435
489
  }
436
490
 
437
491
  /**
438
- * Print a tree node with optional cursor context.
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;
498
+ }
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
+ }
518
+
519
+ /**
520
+ * Clear the depth cache. Call this when starting a new tree
521
+ * to free memory from previous traversals.
522
+ */
523
+ reset(): void {
524
+ this.depthCache = new WeakMap<Cursor, number>();
525
+ }
526
+
527
+ /**
528
+ * Log a single node WITHOUT recursing into children.
529
+ * Use this from visitor methods to log individual nodes as they are visited.
530
+ *
531
+ * When called with a cursor, tracks the cursor hierarchy across calls to
532
+ * provide proper indentation showing the tree structure.
533
+ *
534
+ * Output format: `// label` (if provided), then indented `TypeName{summary prefix=...}`
535
+ * with cursor messages on a separate line if present.
536
+ *
537
+ * @param node The node to log
538
+ * @param cursor Optional cursor for context, messages, and depth tracking
539
+ * @param label Optional label to identify this log entry
540
+ */
541
+ log(node: Tree | J.Container<any> | J.LeftPadded<any> | J.RightPadded<any>, cursor?: Cursor, label?: string): void {
542
+ this.outputLines = [];
543
+
544
+ // Calculate indentation based on cursor depth
545
+ const depth = this.calculateDepth(cursor);
546
+ const indent = this.options.indent.repeat(depth);
547
+
548
+ if (label) {
549
+ this.outputLines.push(`${indent}// ${label}`);
550
+ }
551
+
552
+ // Build single-line output for the node
553
+ let line = indent;
554
+
555
+ // Find property path from cursor
556
+ const propPath = findPropertyPath(cursor, node);
557
+ if (propPath) {
558
+ line += `${propPath}: `;
559
+ }
560
+
561
+ if (this.isContainer(node)) {
562
+ const container = node as J.Container<any>;
563
+ const before = formatSpace(container.before);
564
+ line += `Container<${container.elements?.length ?? 0}>{before=${before}}`;
565
+ } else if (this.isLeftPadded(node)) {
566
+ const lp = node as J.LeftPadded<any>;
567
+ const before = formatSpace(lp.before);
568
+ line += `LeftPadded{before=${before}`;
569
+ // Show element value if it's a primitive
570
+ if (lp.element !== null && lp.element !== undefined) {
571
+ const elemType = typeof lp.element;
572
+ if (elemType === 'string' || elemType === 'number' || elemType === 'boolean') {
573
+ line += ` element=${JSON.stringify(lp.element)}`;
574
+ }
575
+ }
576
+ line += '}';
577
+ } else if (this.isRightPadded(node)) {
578
+ const rp = node as J.RightPadded<any>;
579
+ const after = formatSpace(rp.after);
580
+ line += `RightPadded{after=${after}`;
581
+ // Show element value if it's a primitive
582
+ if (rp.element !== null && rp.element !== undefined) {
583
+ const elemType = typeof rp.element;
584
+ if (elemType === 'string' || elemType === 'number' || elemType === 'boolean') {
585
+ line += ` element=${JSON.stringify(rp.element)}`;
586
+ }
587
+ }
588
+ line += '}';
589
+ } else if (isJava(node)) {
590
+ const jNode = node as J;
591
+ const typeName = shortTypeName(jNode.kind);
592
+ line += `${typeName}{`;
593
+ const summary = getNodeSummary(jNode);
594
+ if (summary) {
595
+ line += `${summary} `;
596
+ }
597
+ line += `prefix=${formatSpace(jNode.prefix)}}`;
598
+ } else {
599
+ line += `<unknown: ${typeof node}>`;
600
+ }
601
+
602
+ this.outputLines.push(line);
603
+
604
+ // Add cursor messages on separate line if present
605
+ if (this.options.includeCursorMessages && cursor) {
606
+ const messages = formatCursorMessages(cursor);
607
+ if (messages !== '<no messages>') {
608
+ this.outputLines.push(`${indent} ⤷ ${messages}`);
609
+ }
610
+ }
611
+
612
+ this.flush();
613
+ }
614
+
615
+ /**
616
+ * Print a tree node AND all its children recursively.
617
+ * Use this to dump an entire subtree structure.
618
+ *
439
619
  * @param tree The tree node to print
440
620
  * @param cursor Optional cursor for context
441
621
  * @param label Optional label to identify this debug output (shown as comment before output)
@@ -742,7 +922,7 @@ export class LstDebugPrinter {
742
922
  if (this.options.output === 'console') {
743
923
  console.info(output);
744
924
  } else {
745
- fs.appendFileSync(this.options.output, output + '\n\n');
925
+ fs.appendFileSync(this.options.output, output + '\n');
746
926
  }
747
927
 
748
928
  this.outputLines = [];
@@ -750,13 +930,27 @@ export class LstDebugPrinter {
750
930
  }
751
931
 
752
932
  /**
753
- * A visitor that prints the LST structure as it traverses.
754
- * Useful for debugging the entire tree or a subtree.
933
+ * A visitor that prints the LST structure as it traverses, showing each node
934
+ * with proper indentation to visualize the tree hierarchy.
935
+ *
936
+ * Use this to print an entire tree or subtree with full traversal. Each node
937
+ * is printed as it's visited, with indentation showing the tree depth.
938
+ *
939
+ * For logging individual nodes from within your own visitor without recursion,
940
+ * use `LstDebugPrinter.log()` or `debugLog()` instead.
755
941
  *
756
942
  * Usage:
757
943
  * ```typescript
758
- * const debugVisitor = new LstDebugVisitor({ maxDepth: 3 });
944
+ * // Print entire tree structure during traversal
945
+ * const debugVisitor = new LstDebugVisitor();
759
946
  * await debugVisitor.visit(tree, ctx);
947
+ *
948
+ * // With options
949
+ * const debugVisitor = new LstDebugVisitor(
950
+ * { includeCursorMessages: true },
951
+ * { printPreVisit: true, printPostVisit: false }
952
+ * );
953
+ * await debugVisitor.visit(subtree, ctx);
760
954
  * ```
761
955
  */
762
956
  export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
@@ -794,12 +988,11 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
794
988
  }
795
989
  line += `prefix=${prefix}}`;
796
990
 
797
- console.info(line);
798
-
799
- // Show cursor messages on a separate indented line
991
+ // Append cursor messages on same line to avoid empty line issues
800
992
  if (messages !== '<no messages>') {
801
- console.info(`${indent} ⤷ ${messages}`);
993
+ line += ` ${messages}`;
802
994
  }
995
+ console.info(line);
803
996
  }
804
997
  this.depth++;
805
998
  return tree;
@@ -829,11 +1022,11 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
829
1022
  }
830
1023
  line += `Container<${container.elements.length}>{before=${before}}`;
831
1024
 
832
- console.info(line);
833
-
1025
+ // Append cursor messages on same line to avoid empty line issues
834
1026
  if (messages !== '<no messages>') {
835
- console.info(`${indent} ⤷ ${messages}`);
1027
+ line += ` ${messages}`;
836
1028
  }
1029
+ console.info(line);
837
1030
  }
838
1031
  this.depth++;
839
1032
  const result = await super.visitContainer(container, p);
@@ -867,11 +1060,11 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
867
1060
  }
868
1061
  line += '}';
869
1062
 
870
- console.info(line);
871
-
1063
+ // Append cursor messages on same line to avoid empty line issues
872
1064
  if (messages !== '<no messages>') {
873
- console.info(`${indent} ⤷ ${messages}`);
1065
+ line += ` ${messages}`;
874
1066
  }
1067
+ console.info(line);
875
1068
  }
876
1069
  this.depth++;
877
1070
  const result = await super.visitLeftPadded(left, p);
@@ -905,11 +1098,11 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
905
1098
  }
906
1099
  line += '}';
907
1100
 
908
- console.info(line);
909
-
1101
+ // Append cursor messages on same line to avoid empty line issues
910
1102
  if (messages !== '<no messages>') {
911
- console.info(`${indent} ⤷ ${messages}`);
1103
+ line += ` ${messages}`;
912
1104
  }
1105
+ console.info(line);
913
1106
  }
914
1107
  this.depth++;
915
1108
  const result = await super.visitRightPadded(right, p);
@@ -919,7 +1112,22 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
919
1112
  }
920
1113
 
921
1114
  /**
922
- * Convenience function to print a tree node.
1115
+ * Convenience function to log a single node (no recursion).
1116
+ * Use this from visitor methods to log individual nodes as they are visited.
1117
+ *
1118
+ * @param node The node to log
1119
+ * @param cursor Optional cursor for context and messages
1120
+ * @param label Optional label to identify this log entry
1121
+ * @param options Optional debug options
1122
+ */
1123
+ export function debugLog(node: Tree, cursor?: Cursor, label?: string, options?: LstDebugOptions): void {
1124
+ new LstDebugPrinter(options).log(node, cursor, label);
1125
+ }
1126
+
1127
+ /**
1128
+ * Convenience function to print a tree node AND all its children recursively.
1129
+ * Use this to dump an entire subtree structure.
1130
+ *
923
1131
  * @param tree The tree node to print
924
1132
  * @param cursor Optional cursor for context
925
1133
  * @param label Optional label to identify this debug output