@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.
- package/dist/java/formatting-utils.d.ts +22 -0
- package/dist/java/formatting-utils.d.ts.map +1 -1
- package/dist/java/formatting-utils.js +60 -0
- package/dist/java/formatting-utils.js.map +1 -1
- package/dist/javascript/format.d.ts +1 -0
- package/dist/javascript/format.d.ts.map +1 -1
- package/dist/javascript/format.js +72 -11
- package/dist/javascript/format.js.map +1 -1
- package/dist/javascript/parser.d.ts.map +1 -1
- package/dist/javascript/parser.js +12 -2
- package/dist/javascript/parser.js.map +1 -1
- package/dist/javascript/tabs-and-indents-visitor.d.ts +17 -2
- package/dist/javascript/tabs-and-indents-visitor.d.ts.map +1 -1
- package/dist/javascript/tabs-and-indents-visitor.js +339 -91
- package/dist/javascript/tabs-and-indents-visitor.js.map +1 -1
- package/dist/run.d.ts +6 -5
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +36 -37
- package/dist/run.js.map +1 -1
- package/dist/test/rewrite-test.js +5 -5
- package/dist/test/rewrite-test.js.map +1 -1
- package/dist/version.txt +1 -1
- package/package.json +1 -1
- package/src/java/formatting-utils.ts +66 -0
- package/src/javascript/format.ts +64 -9
- package/src/javascript/parser.ts +12 -2
- package/src/javascript/tabs-and-indents-visitor.ts +378 -82
- package/src/run.ts +20 -20
- package/src/test/rewrite-test.ts +6 -6
|
@@ -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,
|
|
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
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
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
|
|
87
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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 ===
|
|
124
|
-
result = this.
|
|
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 =>
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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
|
|
205
|
-
|
|
411
|
+
else {
|
|
412
|
+
myIndent = existingChainedIndent;
|
|
206
413
|
}
|
|
207
|
-
|
|
208
|
-
|
|
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
|
-
|
|
211
|
-
|
|
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 (
|
|
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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"}
|