@openrewrite/rewrite 8.69.0-20251207-230203 → 8.69.0-20251208-174001

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.
@@ -11,15 +11,30 @@ export declare class TabsAndIndentsVisitor<P> extends JavaScriptVisitor<P> {
11
11
  private setupCursorMessagesForTree;
12
12
  private getParentIndentContext;
13
13
  private computeMyIndent;
14
+ private prefixContainsNewline;
15
+ private isNestedJsxTag;
14
16
  private computeIndentKind;
15
17
  postVisit(tree: J, _p: P): Promise<J | undefined>;
18
+ private isInsideJsxTag;
19
+ private normalizeJsxTextContent;
20
+ private isLastChildOfJsxTag;
16
21
  private normalizeBlockEnd;
17
- private normalizeJsxTagEnd;
18
22
  visitContainer<T extends J>(container: J.Container<T>, p: P): Promise<J.Container<T>>;
23
+ private preVisitContainer;
24
+ private postVisitContainer;
19
25
  visitLeftPadded<T extends J | J.Space | number | string | boolean>(left: J.LeftPadded<T>, p: P): Promise<J.LeftPadded<T> | undefined>;
26
+ private preVisitLeftPadded;
27
+ private postVisitLeftPadded;
28
+ visitRightPadded<T extends J | boolean>(right: J.RightPadded<T>, p: P): Promise<J.RightPadded<T> | undefined>;
29
+ private preVisitRightPadded;
30
+ private elementPrefixContainsNewline;
31
+ /**
32
+ * Check if an element is a spread - either directly marked with Spread marker,
33
+ * or a PropertyAssignment whose name has a Spread marker (for object spreads).
34
+ */
35
+ private isSpreadElement;
20
36
  visit<R extends J>(tree: Tree, p: P, parent?: Cursor): Promise<R | undefined>;
21
37
  private setupAncestorIndents;
22
38
  private isActualJNode;
23
- private combineIndent;
24
39
  }
25
40
  //# sourceMappingURL=tabs-and-indents-visitor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-and-indents-visitor.d.ts","sourceRoot":"","sources":["../../src/javascript/tabs-and-indents-visitor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAS,CAAC,EAAwC,MAAM,SAAS,CAAC;AAEzE,OAAO,EAAC,MAAM,EAAW,IAAI,EAAC,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAC,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAG5C,qBAAa,qBAAqB,CAAC,CAAC,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAC;IAGlD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAAuB,OAAO,CAAC,SAAS,CAAC;IAFzF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAET,mBAAmB,EAAE,mBAAmB,EAAU,SAAS,CAAC,EAAE,IAAI,YAAA;cAU/E,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAKhE,OAAO,CAAC,0BAA0B;IAmBlC,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,iBAAiB;IAYV,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IA0BhE,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,kBAAkB;IAcb,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAgCrF,eAAe,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAC1E,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACrB,CAAC,EAAE,CAAC,GACL,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IA6BjC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAanF,OAAO,CAAC,oBAAoB;IA8C5B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;CAIxB"}
1
+ {"version":3,"file":"tabs-and-indents-visitor.d.ts","sourceRoot":"","sources":["../../src/javascript/tabs-and-indents-visitor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAGH,CAAC,EAOJ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAC,MAAM,EAAmB,IAAI,EAAC,MAAM,SAAS,CAAC;AAGtD,OAAO,EAAC,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAI5C,qBAAa,qBAAqB,CAAC,CAAC,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAC;IAGlD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAAuB,OAAO,CAAC,SAAS,CAAC;IAFzF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAET,mBAAmB,EAAE,mBAAmB,EAAU,SAAS,CAAC,EAAE,IAAI,YAAA;cAU/E,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAKhE,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,iBAAiB;IAaV,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IA2ChE,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,uBAAuB;IAwD/B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,iBAAiB;IAUZ,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAuBlG,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,kBAAkB;IAkBb,eAAe,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAC1E,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACrB,CAAC,EAAE,CAAC,GACL,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IA2BvC,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,mBAAmB;IAmBd,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,OAAO,EAC/C,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EACvB,CAAC,EAAE,CAAC,GACL,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAyBxC,OAAO,CAAC,mBAAmB;IA4C3B,OAAO,CAAC,4BAA4B;IAapC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAgBjB,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAanF,OAAO,CAAC,oBAAoB;IA8C5B,OAAO,CAAC,aAAa;CAMxB"}
@@ -30,6 +30,9 @@ const visitor_1 = require("./visitor");
30
30
  const java_1 = require("../java");
31
31
  const immer_1 = require("immer");
32
32
  const tree_2 = require("../tree");
33
+ const util_1 = require("../util");
34
+ const visitor_2 = require("../visitor");
35
+ const markers_1 = require("../markers");
33
36
  class TabsAndIndentsVisitor extends visitor_1.JavaScriptVisitor {
34
37
  constructor(tabsAndIndentsStyle, stopAfter) {
35
38
  super();
@@ -57,43 +60,88 @@ class TabsAndIndentsVisitor extends visitor_1.JavaScriptVisitor {
57
60
  if (tree.kind === java_1.J.Kind.Binary) {
58
61
  const hasNewline = ((_b = (_a = tree.prefix) === null || _a === void 0 ? void 0 : _a.whitespace) === null || _b === void 0 ? void 0 : _b.includes("\n")) ||
59
62
  ((_d = (_c = tree.prefix) === null || _c === void 0 ? void 0 : _c.comments) === null || _d === void 0 ? void 0 : _d.some(c => c.suffix.includes("\n")));
60
- // If Binary has newline, children align. Otherwise, children get continuation.
61
- cursor.messages.set("indentKind", hasNewline ? 'align' : 'continuation');
62
- // For LeftPadded children (like operator), same rule applies
63
- cursor.messages.set("leftPaddedContinuation", hasNewline ? 'align' : 'propagate');
63
+ // If Binary has newline OR parent is in align mode, children align
64
+ const shouldAlign = hasNewline || parentIndentKind === 'align';
65
+ cursor.messages.set("indentKind", shouldAlign ? 'align' : 'continuation');
64
66
  }
65
67
  else {
66
68
  cursor.messages.set("indentKind", this.computeIndentKind(tree));
67
- cursor.messages.set("leftPaddedContinuation", 'propagate');
68
69
  }
69
70
  }
70
71
  getParentIndentContext(cursor) {
71
- var _a;
72
+ // Find the nearest myIndent and the nearest indentKind separately
73
+ // Container/RightPadded/LeftPadded inherit myIndent but don't have indentKind
74
+ let parentIndent;
75
+ let parentKind;
72
76
  for (let c = cursor.parent; c != null; c = c.parent) {
73
- const indent = c.messages.get("myIndent");
74
- if (indent !== undefined) {
75
- const kind = (_a = c.messages.get("indentKind")) !== null && _a !== void 0 ? _a : 'continuation';
76
- return [indent, kind];
77
+ if (parentIndent === undefined) {
78
+ const indent = c.messages.get("myIndent");
79
+ if (indent !== undefined) {
80
+ parentIndent = indent;
81
+ }
82
+ }
83
+ if (parentKind === undefined) {
84
+ const kind = c.messages.get("indentKind");
85
+ if (kind !== undefined) {
86
+ parentKind = kind;
87
+ }
88
+ }
89
+ // Found both, we can stop
90
+ if (parentIndent !== undefined && parentKind !== undefined) {
91
+ break;
77
92
  }
78
93
  }
79
- return ["", 'continuation'];
94
+ return [parentIndent !== null && parentIndent !== void 0 ? parentIndent : "", parentKind !== null && parentKind !== void 0 ? parentKind : 'continuation'];
80
95
  }
81
96
  computeMyIndent(tree, parentMyIndent, parentIndentKind) {
82
- var _a, _b, _c, _d;
97
+ // CompilationUnit is the root - it always has myIndent="" regardless of prefix content
98
+ if (tree.kind === tree_1.JS.Kind.CompilationUnit) {
99
+ return "";
100
+ }
83
101
  if (tree.kind === java_1.J.Kind.IfElse || parentIndentKind === 'align') {
84
102
  return parentMyIndent;
85
103
  }
86
- if (parentIndentKind === 'block') {
87
- return parentMyIndent + this.singleIndent;
104
+ // Only add indent if this element starts on a new line
105
+ // Check both the element's prefix and any Spread marker's prefix
106
+ const hasNewline = this.prefixContainsNewline(tree);
107
+ if (!hasNewline) {
108
+ // Special case for JSX: children of JsxTag don't have newlines in their prefix
109
+ // (newlines are in text Literal nodes), but nested tags should still get block indent
110
+ if (this.isNestedJsxTag(tree)) {
111
+ return parentMyIndent + this.singleIndent;
112
+ }
113
+ return parentMyIndent;
88
114
  }
89
- const hasNewline = ((_b = (_a = tree.prefix) === null || _a === void 0 ? void 0 : _a.whitespace) === null || _b === void 0 ? void 0 : _b.includes("\n")) ||
90
- ((_d = (_c = tree.prefix) === null || _c === void 0 ? void 0 : _c.comments) === null || _d === void 0 ? void 0 : _d.some(c => c.suffix.includes("\n")));
91
- return hasNewline ? parentMyIndent + this.singleIndent : parentMyIndent;
115
+ // Add indent for block children or continuation
116
+ return parentMyIndent + this.singleIndent;
117
+ }
118
+ prefixContainsNewline(tree) {
119
+ var _a, _b, _c, _d, _e, _f;
120
+ // Check the element's own prefix
121
+ if (((_b = (_a = tree.prefix) === null || _a === void 0 ? void 0 : _a.whitespace) === null || _b === void 0 ? void 0 : _b.includes("\n")) ||
122
+ ((_d = (_c = tree.prefix) === null || _c === void 0 ? void 0 : _c.comments) === null || _d === void 0 ? void 0 : _d.some(c => c.suffix.includes("\n")))) {
123
+ return true;
124
+ }
125
+ // For elements with Spread marker, check the Spread marker's prefix
126
+ const spreadMarker = (_f = (_e = tree.markers) === null || _e === void 0 ? void 0 : _e.markers) === null || _f === void 0 ? void 0 : _f.find(m => m.kind === tree_1.JS.Markers.Spread);
127
+ if (spreadMarker && (0, java_1.spaceContainsNewline)(spreadMarker.prefix)) {
128
+ return true;
129
+ }
130
+ return false;
131
+ }
132
+ isNestedJsxTag(tree) {
133
+ // Check if this is a JsxTag whose parent is also a JsxTag
134
+ if (tree.kind !== tree_1.JS.Kind.JsxTag) {
135
+ return false;
136
+ }
137
+ const parentTree = this.cursor.parentTree();
138
+ return parentTree !== undefined && parentTree.value.kind === tree_1.JS.Kind.JsxTag;
92
139
  }
93
140
  computeIndentKind(tree) {
94
141
  switch (tree.kind) {
95
142
  case java_1.J.Kind.Block:
96
143
  case java_1.J.Kind.Case:
144
+ case tree_1.JS.Kind.JsxTag:
97
145
  return 'block';
98
146
  case tree_1.JS.Kind.CompilationUnit:
99
147
  return 'align';
@@ -112,105 +160,309 @@ class TabsAndIndentsVisitor extends visitor_1.JavaScriptVisitor {
112
160
  return tree;
113
161
  }
114
162
  let result = tree;
115
- if ((_c = (_b = result.prefix) === null || _b === void 0 ? void 0 : _b.whitespace) === null || _c === void 0 ? void 0 : _c.includes("\n")) {
116
- result = (0, immer_1.produce)(result, draft => {
117
- draft.prefix.whitespace = this.combineIndent(draft.prefix.whitespace, myIndent);
118
- });
163
+ // Check if the element has a Spread marker - if so, normalize its prefix instead
164
+ const spreadMarker = (_c = (_b = result.markers) === null || _b === void 0 ? void 0 : _b.markers) === null || _c === void 0 ? void 0 : _c.find(m => m.kind === tree_1.JS.Markers.Spread);
165
+ if (spreadMarker && (0, java_1.spaceContainsNewline)(spreadMarker.prefix)) {
166
+ const normalizedPrefix = (0, java_1.normalizeSpaceIndent)(spreadMarker.prefix, myIndent);
167
+ if (normalizedPrefix !== spreadMarker.prefix) {
168
+ result = (0, immer_1.produce)(result, draft => {
169
+ const spreadIdx = draft.markers.markers.findIndex(m => m.kind === tree_1.JS.Markers.Spread);
170
+ if (spreadIdx !== -1) {
171
+ draft.markers.markers[spreadIdx].prefix = normalizedPrefix;
172
+ }
173
+ });
174
+ }
175
+ }
176
+ else if (result.prefix && (0, java_1.spaceContainsNewline)(result.prefix)) {
177
+ // Normalize the entire prefix space including comment suffixes
178
+ const normalizedPrefix = (0, java_1.normalizeSpaceIndent)(result.prefix, myIndent);
179
+ if (normalizedPrefix !== result.prefix) {
180
+ result = (0, immer_1.produce)(result, draft => {
181
+ draft.prefix = normalizedPrefix;
182
+ });
183
+ }
119
184
  }
120
185
  if (result.kind === java_1.J.Kind.Block) {
121
186
  result = this.normalizeBlockEnd(result, myIndent);
122
187
  }
123
- else if (result.kind === tree_1.JS.Kind.JsxTag) {
124
- result = this.normalizeJsxTagEnd(result, myIndent);
188
+ else if (result.kind === java_1.J.Kind.Literal && this.isInsideJsxTag()) {
189
+ result = this.normalizeJsxTextContent(result, myIndent);
125
190
  }
126
191
  return result;
127
192
  });
128
193
  }
194
+ isInsideJsxTag() {
195
+ const parentTree = this.cursor.parentTree();
196
+ return parentTree !== undefined && parentTree.value.kind === tree_1.JS.Kind.JsxTag;
197
+ }
198
+ normalizeJsxTextContent(literal, myIndent) {
199
+ if (!literal.valueSource || !literal.valueSource.includes("\n")) {
200
+ return literal;
201
+ }
202
+ // Check if this literal is the last child of a JsxTag - if so, its trailing whitespace
203
+ // should use the parent tag's indent, not the content indent
204
+ const parentIndent = this.cursor.parentTree().messages.get("myIndent");
205
+ const isLastChild = parentIndent !== undefined && this.isLastChildOfJsxTag(literal);
206
+ // For JSX text content, the newline is in the value, not the prefix.
207
+ // Since the content IS effectively on a new line, it should get block child indent.
208
+ // myIndent is the parent's indent (because Literal prefix has no newline),
209
+ // so we need to add singleIndent for content lines.
210
+ const contentIndent = myIndent + this.singleIndent;
211
+ // Split by newlines and normalize each line's indentation
212
+ const lines = literal.valueSource.split('\n');
213
+ const result = [];
214
+ for (let i = 0; i < lines.length; i++) {
215
+ if (i === 0) {
216
+ // Content before first newline stays as-is
217
+ result.push(lines[i]);
218
+ continue;
219
+ }
220
+ const content = (0, java_1.stripLeadingIndent)(lines[i]);
221
+ if (content === '') {
222
+ // Line has only whitespace (or is empty)
223
+ if (isLastChild && i === lines.length - 1) {
224
+ // Trailing whitespace of last child - use parent indent for closing tag alignment
225
+ result.push(parentIndent);
226
+ }
227
+ else if (i < lines.length - 1) {
228
+ // Empty line in the middle (followed by more lines) - keep empty
229
+ result.push('');
230
+ }
231
+ else {
232
+ // Trailing whitespace of non-last-child - add content indent
233
+ result.push(contentIndent);
234
+ }
235
+ }
236
+ else {
237
+ // Line has content - add proper indent
238
+ result.push(contentIndent + content);
239
+ }
240
+ }
241
+ const normalizedValueSource = result.join('\n');
242
+ if (normalizedValueSource === literal.valueSource) {
243
+ return literal;
244
+ }
245
+ return (0, immer_1.produce)(literal, draft => {
246
+ draft.valueSource = normalizedValueSource;
247
+ });
248
+ }
249
+ isLastChildOfJsxTag(literal) {
250
+ const parentCursor = this.cursor.parentTree();
251
+ if (parentCursor && parentCursor.value.kind === tree_1.JS.Kind.JsxTag) {
252
+ const tag = parentCursor.value;
253
+ if (tag.children && tag.children.length > 0) {
254
+ const lastChild = tag.children[tag.children.length - 1];
255
+ // Compare by id since object references might differ after transformations
256
+ return lastChild.kind === java_1.J.Kind.Literal && lastChild.id === literal.id;
257
+ }
258
+ }
259
+ return false;
260
+ }
129
261
  normalizeBlockEnd(block, myIndent) {
130
262
  const effectiveLastWs = (0, java_1.lastWhitespace)(block.end);
131
263
  if (!effectiveLastWs.includes("\n")) {
132
264
  return block;
133
265
  }
134
266
  return (0, immer_1.produce)(block, draft => {
135
- draft.end = (0, java_1.replaceLastWhitespace)(draft.end, ws => this.combineIndent(ws, myIndent));
136
- });
137
- }
138
- normalizeJsxTagEnd(tag, myIndent) {
139
- if (!tag.children || tag.children.length === 0) {
140
- return tag;
141
- }
142
- const lastChild = tag.children[tag.children.length - 1];
143
- if (lastChild.kind !== java_1.J.Kind.Literal || !lastChild.prefix.whitespace.includes("\n")) {
144
- return tag;
145
- }
146
- return (0, immer_1.produce)(tag, draft => {
147
- const lastChildDraft = draft.children[draft.children.length - 1];
148
- lastChildDraft.prefix.whitespace = this.combineIndent(lastChildDraft.prefix.whitespace, myIndent);
267
+ draft.end = (0, java_1.replaceLastWhitespace)(draft.end, ws => (0, java_1.replaceIndentAfterLastNewline)(ws, myIndent));
149
268
  });
150
269
  }
151
270
  visitContainer(container, p) {
152
- const _super = Object.create(null, {
153
- visitContainer: { get: () => super.visitContainer }
154
- });
155
271
  return __awaiter(this, void 0, void 0, function* () {
156
- var _a;
157
- const parentIndent = (_a = this.cursor.messages.get("myIndent")) !== null && _a !== void 0 ? _a : "";
158
- const elementsIndent = container.before.whitespace.includes("\n")
159
- ? parentIndent + this.singleIndent
160
- : parentIndent;
161
- const savedMyIndent = this.cursor.messages.get("myIndent");
162
- this.cursor.messages.set("myIndent", elementsIndent);
163
- let ret = yield _super.visitContainer.call(this, container, p);
164
- if (savedMyIndent !== undefined) {
165
- this.cursor.messages.set("myIndent", savedMyIndent);
166
- }
167
- if (ret.before.whitespace.includes("\n")) {
168
- ret = (0, immer_1.produce)(ret, draft => {
169
- draft.before.whitespace = this.combineIndent(draft.before.whitespace, elementsIndent);
272
+ // Create cursor for this container
273
+ this.cursor = new tree_2.Cursor(container, this.cursor);
274
+ // Pre-visit hook: set up cursor messages
275
+ this.preVisitContainer(container);
276
+ // Visit children (similar to base visitor but without cursor management)
277
+ let ret = (yield (0, visitor_2.produceAsync)(container, (draft) => __awaiter(this, void 0, void 0, function* () {
278
+ draft.before = yield this.visitSpace(container.before, p);
279
+ draft.elements = yield (0, util_1.mapAsync)(container.elements, e => this.visitRightPadded(e, p));
280
+ draft.markers = yield this.visitMarkers(container.markers, p);
281
+ })));
282
+ // Post-visit hook: normalize indentation
283
+ ret = this.postVisitContainer(ret);
284
+ // Restore cursor
285
+ this.cursor = this.cursor.parent;
286
+ return ret;
287
+ });
288
+ }
289
+ preVisitContainer(container) {
290
+ var _a, _b;
291
+ const myIndent = (_b = (_a = this.cursor.parent) === null || _a === void 0 ? void 0 : _a.messages.get("myIndent")) !== null && _b !== void 0 ? _b : "";
292
+ this.cursor.messages.set("myIndent", myIndent);
293
+ this.cursor.messages.set("indentKind", 'continuation');
294
+ }
295
+ postVisitContainer(container) {
296
+ var _a, _b;
297
+ const parentIndent = (_b = (_a = this.cursor.parent) === null || _a === void 0 ? void 0 : _a.messages.get("myIndent")) !== null && _b !== void 0 ? _b : "";
298
+ // Normalize the last element's after whitespace (closing delimiter like `)`)
299
+ // The closing delimiter should align with the parent's indent level
300
+ if (container.elements.length > 0) {
301
+ const effectiveLastWs = (0, java_1.lastWhitespace)(container.elements[container.elements.length - 1].after);
302
+ if (effectiveLastWs.includes("\n")) {
303
+ return (0, immer_1.produce)(container, draft => {
304
+ const lastDraft = draft.elements[draft.elements.length - 1];
305
+ lastDraft.after = (0, java_1.replaceLastWhitespace)(lastDraft.after, ws => (0, java_1.replaceIndentAfterLastNewline)(ws, parentIndent));
170
306
  });
171
307
  }
172
- if (ret.elements.length > 0) {
173
- const effectiveLastWs = (0, java_1.lastWhitespace)(ret.elements[ret.elements.length - 1].after);
174
- if (effectiveLastWs.includes("\n")) {
175
- ret = (0, immer_1.produce)(ret, draft => {
176
- const lastDraft = draft.elements[draft.elements.length - 1];
177
- lastDraft.after = (0, java_1.replaceLastWhitespace)(lastDraft.after, ws => this.combineIndent(ws, parentIndent));
178
- });
308
+ }
309
+ return container;
310
+ }
311
+ visitLeftPadded(left, p) {
312
+ return __awaiter(this, void 0, void 0, function* () {
313
+ // Create cursor for this LeftPadded
314
+ this.cursor = new tree_2.Cursor(left, this.cursor);
315
+ // Pre-visit hook: set up cursor messages
316
+ this.preVisitLeftPadded(left);
317
+ // Visit children (similar to base visitor but without cursor management)
318
+ let ret = yield (0, visitor_2.produceAsync)(left, (draft) => __awaiter(this, void 0, void 0, function* () {
319
+ draft.before = yield this.visitSpace(left.before, p);
320
+ if ((0, tree_2.isTree)(left.element)) {
321
+ draft.element = yield this.visitDefined(left.element, p);
179
322
  }
180
- }
323
+ else if ((0, java_1.isSpace)(left.element)) {
324
+ draft.element = yield this.visitSpace(left.element, p);
325
+ }
326
+ draft.markers = yield this.visitMarkers(left.markers, p);
327
+ }));
328
+ // Post-visit hook: normalize indentation
329
+ ret = this.postVisitLeftPadded(ret);
330
+ // Restore cursor
331
+ this.cursor = this.cursor.parent;
181
332
  return ret;
182
333
  });
183
334
  }
184
- visitLeftPadded(left, p) {
185
- const _super = Object.create(null, {
186
- visitLeftPadded: { get: () => super.visitLeftPadded }
335
+ preVisitLeftPadded(left) {
336
+ var _a, _b, _c, _d;
337
+ // Get parent indent from parent cursor
338
+ const parentIndent = (_b = (_a = this.cursor.parent) === null || _a === void 0 ? void 0 : _a.messages.get("myIndent")) !== null && _b !== void 0 ? _b : "";
339
+ const hasNewline = left.before.whitespace.includes("\n");
340
+ // Check if parent is a Binary in align mode - if so, don't add continuation indent
341
+ // (Binary sets indentKind='align' when it's already on a continuation line)
342
+ const parentValue = (_c = this.cursor.parent) === null || _c === void 0 ? void 0 : _c.value;
343
+ const parentIndentKind = (_d = this.cursor.parent) === null || _d === void 0 ? void 0 : _d.messages.get("indentKind");
344
+ const shouldAlign = (parentValue === null || parentValue === void 0 ? void 0 : parentValue.kind) === java_1.J.Kind.Binary && parentIndentKind === 'align';
345
+ // Compute myIndent INCLUDING continuation if applicable
346
+ // This ensures child elements see the correct parent indent
347
+ let myIndent = parentIndent;
348
+ if (hasNewline && !shouldAlign) {
349
+ myIndent = parentIndent + this.singleIndent;
350
+ }
351
+ this.cursor.messages.set("myIndent", myIndent);
352
+ this.cursor.messages.set("hasNewline", hasNewline);
353
+ }
354
+ postVisitLeftPadded(left) {
355
+ var _a, _b;
356
+ if (left === undefined) {
357
+ return undefined;
358
+ }
359
+ const hasNewline = (_a = this.cursor.messages.get("hasNewline")) !== null && _a !== void 0 ? _a : false;
360
+ if (!hasNewline) {
361
+ return left;
362
+ }
363
+ // Use the myIndent we computed in preVisitLeftPadded (which includes continuation if applicable)
364
+ const targetIndent = (_b = this.cursor.messages.get("myIndent")) !== null && _b !== void 0 ? _b : "";
365
+ return (0, immer_1.produce)(left, draft => {
366
+ draft.before.whitespace = (0, java_1.replaceIndentAfterLastNewline)(draft.before.whitespace, targetIndent);
187
367
  });
368
+ }
369
+ visitRightPadded(right, p) {
188
370
  return __awaiter(this, void 0, void 0, function* () {
189
- var _a, _b;
190
- const parentIndent = (_a = this.cursor.messages.get("myIndent")) !== null && _a !== void 0 ? _a : "";
191
- const continuation = (_b = this.cursor.messages.get("leftPaddedContinuation")) !== null && _b !== void 0 ? _b : 'propagate';
192
- const hasNewline = left.before.whitespace.includes("\n");
193
- const shouldPropagate = hasNewline && continuation === 'propagate';
194
- // For 'propagate' mode, update myIndent for children so nested structures get proper indent
195
- const savedMyIndent = this.cursor.messages.get("myIndent");
196
- if (shouldPropagate) {
197
- this.cursor.messages.set("myIndent", parentIndent + this.singleIndent);
371
+ // Create cursor for this RightPadded
372
+ this.cursor = new tree_2.Cursor(right, this.cursor);
373
+ // Pre-visit hook: set up cursor messages, propagate continuation if after has newline
374
+ this.preVisitRightPadded(right);
375
+ // Visit children (similar to base visitor but without cursor management)
376
+ let ret = yield (0, visitor_2.produceAsync)(right, (draft) => __awaiter(this, void 0, void 0, function* () {
377
+ if ((0, tree_2.isTree)(right.element)) {
378
+ draft.element = yield this.visitDefined(right.element, p);
379
+ }
380
+ draft.after = yield this.visitSpace(right.after, p);
381
+ draft.markers = yield this.visitMarkers(right.markers, p);
382
+ }));
383
+ // Restore cursor
384
+ this.cursor = this.cursor.parent;
385
+ if ((ret === null || ret === void 0 ? void 0 : ret.element) === undefined) {
386
+ return undefined;
198
387
  }
199
- const ret = yield _super.visitLeftPadded.call(this, left, p);
200
- // Restore myIndent
201
- if (savedMyIndent !== undefined) {
202
- this.cursor.messages.set("myIndent", savedMyIndent);
388
+ return ret;
389
+ });
390
+ }
391
+ preVisitRightPadded(right) {
392
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
393
+ // Get parent indent from parent cursor
394
+ const parentIndent = (_b = (_a = this.cursor.parent) === null || _a === void 0 ? void 0 : _a.messages.get("myIndent")) !== null && _b !== void 0 ? _b : "";
395
+ const parentIndentKind = (_d = (_c = this.cursor.parent) === null || _c === void 0 ? void 0 : _c.messages.get("indentKind")) !== null && _d !== void 0 ? _d : "";
396
+ // Check if the `after` has a newline (e.g., in method chains like `db\n .from()`)
397
+ const hasNewline = right.after.whitespace.includes("\n");
398
+ // Only apply chainedIndent logic for method chains (when parent is a MethodInvocation)
399
+ const parentKind = (_f = (_e = this.cursor.parent) === null || _e === void 0 ? void 0 : _e.value) === null || _f === void 0 ? void 0 : _f.kind;
400
+ const isMethodChain = parentKind === java_1.J.Kind.MethodInvocation;
401
+ let myIndent = parentIndent;
402
+ if (hasNewline && isMethodChain) {
403
+ // Search up the cursor hierarchy for an existing chainedIndent (to avoid stacking in method chains)
404
+ const existingChainedIndent = (_g = this.cursor.parent) === null || _g === void 0 ? void 0 : _g.messages.get("chainedIndent");
405
+ if (existingChainedIndent === undefined) {
406
+ myIndent = parentIndent + this.singleIndent;
407
+ // Set myIndent on parent so Container siblings and further chain elements use it
408
+ (_h = this.cursor.parent) === null || _h === void 0 ? void 0 : _h.messages.set("myIndent", myIndent);
409
+ (_j = this.cursor.parent) === null || _j === void 0 ? void 0 : _j.messages.delete("chainedIndent");
203
410
  }
204
- else if (shouldPropagate) {
205
- this.cursor.messages.delete("myIndent");
411
+ else {
412
+ myIndent = existingChainedIndent;
206
413
  }
207
- if (ret === undefined || !hasNewline) {
208
- return ret;
414
+ }
415
+ else if (parentIndentKind !== 'align' && (0, java_1.isJava)(right.element) && this.elementPrefixContainsNewline(right.element)) {
416
+ myIndent = parentIndent + this.singleIndent;
417
+ // For spread elements with newlines, mark continuation as established
418
+ // This allows subsequent elements on the SAME line to inherit the continuation level
419
+ const element = right.element;
420
+ if (this.isSpreadElement(element)) {
421
+ (_k = this.cursor.parent) === null || _k === void 0 ? void 0 : _k.messages.set("continuationIndent", myIndent);
209
422
  }
210
- return (0, immer_1.produce)(ret, draft => {
211
- draft.before.whitespace = this.combineIndent(draft.before.whitespace, parentIndent + this.singleIndent);
212
- });
213
- });
423
+ }
424
+ else if ((0, java_1.isJava)(right.element) && !this.elementPrefixContainsNewline(right.element)) {
425
+ // Element has no newline - check if a previous sibling established continuation
426
+ const continuationIndent = (_l = this.cursor.parent) === null || _l === void 0 ? void 0 : _l.messages.get("continuationIndent");
427
+ if (continuationIndent !== undefined) {
428
+ myIndent = continuationIndent;
429
+ }
430
+ }
431
+ this.cursor.messages.set("myIndent", myIndent);
432
+ this.cursor.messages.set("indentKind", "align");
433
+ }
434
+ elementPrefixContainsNewline(element) {
435
+ var _a, _b;
436
+ // Check the element's own prefix
437
+ if ((0, java_1.lastWhitespace)(element.prefix).includes("\n")) {
438
+ return true;
439
+ }
440
+ // Also check for Spread marker's prefix
441
+ const spreadMarker = (_b = (_a = element.markers) === null || _a === void 0 ? void 0 : _a.markers) === null || _b === void 0 ? void 0 : _b.find(m => m.kind === tree_1.JS.Markers.Spread);
442
+ if (spreadMarker && (0, java_1.spaceContainsNewline)(spreadMarker.prefix)) {
443
+ return true;
444
+ }
445
+ return false;
446
+ }
447
+ /**
448
+ * Check if an element is a spread - either directly marked with Spread marker,
449
+ * or a PropertyAssignment whose name has a Spread marker (for object spreads).
450
+ */
451
+ isSpreadElement(element) {
452
+ var _a;
453
+ // Direct spread marker on element
454
+ if ((0, markers_1.findMarker)(element, tree_1.JS.Markers.Spread)) {
455
+ return true;
456
+ }
457
+ // PropertyAssignment wrapping a spread (for object spread like `...obj`)
458
+ if (element.kind === tree_1.JS.Kind.PropertyAssignment) {
459
+ const propAssign = element;
460
+ const nameElement = (_a = propAssign.name) === null || _a === void 0 ? void 0 : _a.element;
461
+ if ((0, markers_1.findMarker)(nameElement, tree_1.JS.Markers.Spread)) {
462
+ return true;
463
+ }
464
+ }
465
+ return false;
214
466
  }
215
467
  visit(tree, p, parent) {
216
468
  const _super = Object.create(null, {
@@ -271,15 +523,11 @@ class TabsAndIndentsVisitor extends visitor_1.JavaScriptVisitor {
271
523
  }
272
524
  }
273
525
  isActualJNode(v) {
274
- return ((0, java_1.isJava)(v) || (0, tree_1.isJavaScript)(v)) &&
526
+ return (0, java_1.isJava)(v) &&
275
527
  v.kind !== java_1.J.Kind.Container &&
276
528
  v.kind !== java_1.J.Kind.LeftPadded &&
277
529
  v.kind !== java_1.J.Kind.RightPadded;
278
530
  }
279
- combineIndent(oldWs, newIndent) {
280
- const lastNewline = oldWs.lastIndexOf("\n");
281
- return oldWs.substring(0, lastNewline + 1) + newIndent;
282
- }
283
531
  }
284
532
  exports.TabsAndIndentsVisitor = TabsAndIndentsVisitor;
285
533
  //# sourceMappingURL=tabs-and-indents-visitor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-and-indents-visitor.js","sourceRoot":"","sources":["../../src/javascript/tabs-and-indents-visitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tabs-and-indents-visitor.js","sourceRoot":"","sources":["../../src/javascript/tabs-and-indents-visitor.ts"],"names":[],"mappings":"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"}