@openrewrite/rewrite 8.69.0-20251205-160300 → 8.69.0-20251205-203346
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 +15 -0
- package/dist/java/formatting-utils.d.ts.map +1 -1
- package/dist/java/formatting-utils.js +32 -0
- package/dist/java/formatting-utils.js.map +1 -1
- package/dist/java/index.d.ts +1 -0
- package/dist/java/index.d.ts.map +1 -1
- package/dist/java/index.js +1 -0
- package/dist/java/index.js.map +1 -1
- package/dist/javascript/format.d.ts +2 -14
- package/dist/javascript/format.d.ts.map +1 -1
- package/dist/javascript/format.js +61 -212
- package/dist/javascript/format.js.map +1 -1
- package/dist/javascript/parser.d.ts.map +1 -1
- package/dist/javascript/parser.js +3 -1
- package/dist/javascript/parser.js.map +1 -1
- package/dist/javascript/tabs-and-indents-visitor.d.ts +25 -0
- package/dist/javascript/tabs-and-indents-visitor.d.ts.map +1 -0
- package/dist/javascript/tabs-and-indents-visitor.js +257 -0
- package/dist/javascript/tabs-and-indents-visitor.js.map +1 -0
- package/dist/version.txt +1 -1
- package/package.json +1 -1
- package/src/java/formatting-utils.ts +31 -0
- package/src/java/index.ts +1 -0
- package/src/javascript/format.ts +63 -194
- package/src/javascript/parser.ts +3 -1
- package/src/javascript/tabs-and-indents-visitor.ts +250 -0
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
import { J } from "../java";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the effective last whitespace from a Space.
|
|
4
|
+
* When there are comments, the last whitespace is the suffix of the last comment.
|
|
5
|
+
* When there are no comments, it's the whitespace property.
|
|
6
|
+
*/
|
|
7
|
+
export declare function lastWhitespace(space: J.Space): string;
|
|
8
|
+
/**
|
|
9
|
+
* Replaces the effective last whitespace in a Space using a transform function.
|
|
10
|
+
* When there are comments, updates the suffix of the last comment.
|
|
11
|
+
* When there are no comments, updates the whitespace property.
|
|
12
|
+
*
|
|
13
|
+
* @param space The Space to modify (Immer draft)
|
|
14
|
+
* @param transform Function that receives the current last whitespace and returns the new value
|
|
15
|
+
*/
|
|
16
|
+
export declare function replaceLastWhitespace(space: J.Space, transform: (ws: string) => string): J.Space;
|
|
2
17
|
/**
|
|
3
18
|
* Handles element removal from lists while preserving LST formatting.
|
|
4
19
|
* Automatically applies prefixes from removed elements to the next kept element,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatting-utils.d.ts","sourceRoot":"","sources":["../../src/java/formatting-utils.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,CAAC,EAAC,MAAM,SAAS,CAAC;AAG1B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,uBAAuB,CAAC,CAAC,SAAS,CAAC;IAShC,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IARzD,OAAO,CAAC,WAAW,CAAC,CAAI;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;IAEzB;;;OAGG;gBAC0B,4BAA4B,GAAE,OAAe;IAE1E;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAK1B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;CAY1B"}
|
|
1
|
+
{"version":3,"file":"formatting-utils.d.ts","sourceRoot":"","sources":["../../src/java/formatting-utils.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,CAAC,EAAC,MAAM,SAAS,CAAC;AAG1B;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAKrD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAShG;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,uBAAuB,CAAC,CAAC,SAAS,CAAC;IAShC,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IARzD,OAAO,CAAC,WAAW,CAAC,CAAI;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;IAEzB;;;OAGG;gBAC0B,4BAA4B,GAAE,OAAe;IAE1E;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAK1B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;CAY1B"}
|
|
@@ -16,7 +16,39 @@
|
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.ElementRemovalFormatter = void 0;
|
|
19
|
+
exports.lastWhitespace = lastWhitespace;
|
|
20
|
+
exports.replaceLastWhitespace = replaceLastWhitespace;
|
|
19
21
|
const immer_1 = require("immer");
|
|
22
|
+
/**
|
|
23
|
+
* Gets the effective last whitespace from a Space.
|
|
24
|
+
* When there are comments, the last whitespace is the suffix of the last comment.
|
|
25
|
+
* When there are no comments, it's the whitespace property.
|
|
26
|
+
*/
|
|
27
|
+
function lastWhitespace(space) {
|
|
28
|
+
if (space.comments.length > 0) {
|
|
29
|
+
return space.comments[space.comments.length - 1].suffix;
|
|
30
|
+
}
|
|
31
|
+
return space.whitespace;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Replaces the effective last whitespace in a Space using a transform function.
|
|
35
|
+
* When there are comments, updates the suffix of the last comment.
|
|
36
|
+
* When there are no comments, updates the whitespace property.
|
|
37
|
+
*
|
|
38
|
+
* @param space The Space to modify (Immer draft)
|
|
39
|
+
* @param transform Function that receives the current last whitespace and returns the new value
|
|
40
|
+
*/
|
|
41
|
+
function replaceLastWhitespace(space, transform) {
|
|
42
|
+
return (0, immer_1.produce)(space, draft => {
|
|
43
|
+
if (draft.comments.length > 0) {
|
|
44
|
+
const lastComment = draft.comments[draft.comments.length - 1];
|
|
45
|
+
lastComment.suffix = transform(lastComment.suffix);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
draft.whitespace = transform(draft.whitespace);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
20
52
|
/**
|
|
21
53
|
* Handles element removal from lists while preserving LST formatting.
|
|
22
54
|
* Automatically applies prefixes from removed elements to the next kept element,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatting-utils.js","sourceRoot":"","sources":["../../src/java/formatting-utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;
|
|
1
|
+
{"version":3,"file":"formatting-utils.js","sourceRoot":"","sources":["../../src/java/formatting-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/java/index.d.ts
CHANGED
package/dist/java/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/java/index.ts"],"names":[],"mappings":"AAeA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/java/index.ts"],"names":[],"mappings":"AAeA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AAEnC,OAAO,SAAS,CAAC"}
|
package/dist/java/index.js
CHANGED
|
@@ -34,5 +34,6 @@ __exportStar(require("./tree"), exports);
|
|
|
34
34
|
__exportStar(require("./markers"), exports);
|
|
35
35
|
__exportStar(require("./visitor"), exports);
|
|
36
36
|
__exportStar(require("./type-visitor"), exports);
|
|
37
|
+
__exportStar(require("./formatting-utils"), exports);
|
|
37
38
|
require("./print");
|
|
38
39
|
//# sourceMappingURL=index.js.map
|
package/dist/java/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/java/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;GAcG;AACH,yCAAuB;AACvB,yCAAuB;AACvB,4CAA0B;AAC1B,4CAA0B;AAC1B,iDAA+B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/java/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;GAcG;AACH,yCAAuB;AACvB,yCAAuB;AACvB,4CAA0B;AAC1B,4CAA0B;AAC1B,iDAA+B;AAC/B,qDAAmC;AAEnC,mBAAiB"}
|
|
@@ -2,7 +2,8 @@ import { JS } from "./tree";
|
|
|
2
2
|
import { JavaScriptVisitor } from "./visitor";
|
|
3
3
|
import { J, Statement } from "../java";
|
|
4
4
|
import { Cursor, Tree } from "../tree";
|
|
5
|
-
import { BlankLinesStyle, SpacesStyle,
|
|
5
|
+
import { BlankLinesStyle, SpacesStyle, WrappingAndBracesStyle } from "./style";
|
|
6
|
+
export { TabsAndIndentsVisitor } from "./tabs-and-indents-visitor";
|
|
6
7
|
export declare const maybeAutoFormat: <J2 extends J, P>(before: J2, after: J2, p: P, stopAfter?: J, parent?: Cursor) => Promise<J2>;
|
|
7
8
|
export declare const autoFormat: <J2 extends J, P>(j: J2, p: P, stopAfter?: J, parent?: Cursor) => Promise<J2>;
|
|
8
9
|
export declare class AutoformatVisitor<P> extends JavaScriptVisitor<P> {
|
|
@@ -107,17 +108,4 @@ export declare class BlankLinesVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
107
108
|
private static countNewlines;
|
|
108
109
|
postVisit(tree: J, p: P): Promise<J | undefined>;
|
|
109
110
|
}
|
|
110
|
-
export declare class TabsAndIndentsVisitor<P> extends JavaScriptVisitor<P> {
|
|
111
|
-
private readonly tabsAndIndentsStyle;
|
|
112
|
-
private stopAfter?;
|
|
113
|
-
private readonly singleIndent;
|
|
114
|
-
constructor(tabsAndIndentsStyle: TabsAndIndentsStyle, stopAfter?: Tree | undefined);
|
|
115
|
-
protected preVisit(tree: J, p: P): Promise<J | undefined>;
|
|
116
|
-
visitSpace(space: J.Space, p: P): Promise<J.Space>;
|
|
117
|
-
visit<R extends J>(tree: Tree, p: P, parent?: Cursor): Promise<R | undefined>;
|
|
118
|
-
visitLeftPadded<T extends J | J.Space | number | string | boolean>(left: J.LeftPadded<T>, p: P): Promise<J.LeftPadded<T> | undefined>;
|
|
119
|
-
private get currentIndent();
|
|
120
|
-
private combineIndent;
|
|
121
|
-
postVisit(tree: J, p: P): Promise<J | undefined>;
|
|
122
|
-
}
|
|
123
111
|
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/javascript/format.ts"],"names":[],"mappings":"AAeA,OAAO,
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/javascript/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.BlankLinesVisitor = exports.MinimumViableSpacingVisitor = exports.WrappingAndBracesVisitor = exports.SpacesVisitor = exports.NormalizeWhitespaceVisitor = exports.AutoformatVisitor = exports.autoFormat = exports.maybeAutoFormat = exports.TabsAndIndentsVisitor = void 0;
|
|
13
13
|
/*
|
|
14
14
|
* Copyright 2025 the original author or authors.
|
|
15
15
|
* <p>
|
|
@@ -32,6 +32,10 @@ const immer_1 = require("immer");
|
|
|
32
32
|
const tree_2 = require("../tree");
|
|
33
33
|
const style_1 = require("./style");
|
|
34
34
|
const visitor_2 = require("../visitor");
|
|
35
|
+
const markers_1 = require("../markers");
|
|
36
|
+
const tabs_and_indents_visitor_1 = require("./tabs-and-indents-visitor");
|
|
37
|
+
var tabs_and_indents_visitor_2 = require("./tabs-and-indents-visitor");
|
|
38
|
+
Object.defineProperty(exports, "TabsAndIndentsVisitor", { enumerable: true, get: function () { return tabs_and_indents_visitor_2.TabsAndIndentsVisitor; } });
|
|
35
39
|
const maybeAutoFormat = (before, after, p, stopAfter, parent) => __awaiter(void 0, void 0, void 0, function* () {
|
|
36
40
|
if (before !== after) {
|
|
37
41
|
return (0, exports.autoFormat)(after, p, stopAfter, parent);
|
|
@@ -54,7 +58,7 @@ class AutoformatVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
54
58
|
new BlankLinesVisitor((0, style_1.styleFromSourceFile)(style_1.StyleKind.BlankLinesStyle, tree), this.stopAfter),
|
|
55
59
|
new WrappingAndBracesVisitor((0, style_1.styleFromSourceFile)(style_1.StyleKind.WrappingAndBracesStyle, tree), this.stopAfter),
|
|
56
60
|
new SpacesVisitor((0, style_1.styleFromSourceFile)(style_1.StyleKind.SpacesStyle, tree), this.stopAfter),
|
|
57
|
-
new TabsAndIndentsVisitor((0, style_1.styleFromSourceFile)(style_1.StyleKind.TabsAndIndentsStyle, tree), this.stopAfter),
|
|
61
|
+
new tabs_and_indents_visitor_1.TabsAndIndentsVisitor((0, style_1.styleFromSourceFile)(style_1.StyleKind.TabsAndIndentsStyle, tree), this.stopAfter),
|
|
58
62
|
];
|
|
59
63
|
let t = tree;
|
|
60
64
|
for (const visitor of visitors) {
|
|
@@ -70,6 +74,7 @@ class AutoformatVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
70
74
|
exports.AutoformatVisitor = AutoformatVisitor;
|
|
71
75
|
class NormalizeWhitespaceVisitor extends visitor_1.JavaScriptVisitor {
|
|
72
76
|
// called NormalizeFormat in Java
|
|
77
|
+
// Ensures that whitespace is on the outermost AST element possible
|
|
73
78
|
constructor(stopAfter) {
|
|
74
79
|
super();
|
|
75
80
|
this.stopAfter = stopAfter;
|
|
@@ -210,8 +215,13 @@ class SpacesVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
210
215
|
throw new Error("Unsupported operator type " + ret.operator.element.valueOf());
|
|
211
216
|
}
|
|
212
217
|
return (0, immer_1.produce)(ret, draft => {
|
|
213
|
-
|
|
214
|
-
draft.
|
|
218
|
+
// Preserve newlines - only modify if no newlines present
|
|
219
|
+
if (!draft.operator.before.whitespace.includes("\n")) {
|
|
220
|
+
draft.operator.before.whitespace = property ? " " : "";
|
|
221
|
+
}
|
|
222
|
+
if (!draft.right.prefix.whitespace.includes("\n")) {
|
|
223
|
+
draft.right.prefix.whitespace = property ? " " : "";
|
|
224
|
+
}
|
|
215
225
|
});
|
|
216
226
|
});
|
|
217
227
|
}
|
|
@@ -250,7 +260,11 @@ class SpacesVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
250
260
|
return (0, immer_1.produce)(ret, draft => {
|
|
251
261
|
if (draft.elements.length > 1) {
|
|
252
262
|
for (let i = 1; i < draft.elements.length; i++) {
|
|
253
|
-
draft.elements[i].element.prefix.whitespace
|
|
263
|
+
const currentWs = draft.elements[i].element.prefix.whitespace;
|
|
264
|
+
// Preserve original newlines - only adjust spacing when elements are on same line
|
|
265
|
+
if (!currentWs.includes("\n")) {
|
|
266
|
+
draft.elements[i].element.prefix.whitespace = this.style.other.afterComma ? " " : "";
|
|
267
|
+
}
|
|
254
268
|
}
|
|
255
269
|
}
|
|
256
270
|
});
|
|
@@ -386,6 +400,15 @@ class SpacesVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
386
400
|
draft.parameters.elements[0] = yield this.spaceAfterRightPadded(yield this.spaceBeforeRightPaddedElement(draft.parameters.elements[0], this.style.within.functionDeclarationParentheses), false);
|
|
387
401
|
}
|
|
388
402
|
draft.parameters = yield this.spaceBeforeContainer(draft.parameters, this.style.beforeParentheses.functionDeclarationParentheses);
|
|
403
|
+
// Handle generator asterisk spacing
|
|
404
|
+
// - space before * is in the Generator marker's prefix
|
|
405
|
+
// - space after * is in the method name's prefix
|
|
406
|
+
const generatorIndex = ret.markers.markers.findIndex(m => m.kind === tree_1.JS.Markers.Generator);
|
|
407
|
+
if (generatorIndex >= 0) {
|
|
408
|
+
const generator = draft.markers.markers[generatorIndex];
|
|
409
|
+
generator.prefix.whitespace = this.style.other.beforeAsteriskInGenerator ? " " : "";
|
|
410
|
+
draft.name.prefix.whitespace = this.style.other.afterAsteriskInGenerator ? " " : "";
|
|
411
|
+
}
|
|
389
412
|
// TODO typeParameters handling - see visitClassDeclaration
|
|
390
413
|
}));
|
|
391
414
|
});
|
|
@@ -586,7 +609,10 @@ class SpacesVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
586
609
|
return __awaiter(this, void 0, void 0, function* () {
|
|
587
610
|
return (yield (0, visitor_2.produceAsync)(left, (draft) => __awaiter(this, void 0, void 0, function* () {
|
|
588
611
|
if (draft.before.comments.length == 0) {
|
|
589
|
-
|
|
612
|
+
// Preserve newlines - only modify if no newlines present
|
|
613
|
+
if (!draft.before.whitespace.includes("\n")) {
|
|
614
|
+
draft.before.whitespace = spaceBeforePadding ? " " : "";
|
|
615
|
+
}
|
|
590
616
|
}
|
|
591
617
|
draft.element = (yield this.spaceBefore(left.element, spaceBeforeElement));
|
|
592
618
|
})));
|
|
@@ -803,7 +829,10 @@ class WrappingAndBracesVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
803
829
|
return (0, immer_1.produce)(b, draft => {
|
|
804
830
|
var _a;
|
|
805
831
|
if (!draft.end.whitespace.includes("\n") && (draft.statements.length == 0 || !draft.statements[draft.statements.length - 1].after.whitespace.includes("\n"))) {
|
|
806
|
-
|
|
832
|
+
// Skip newline for object literals and empty lambda/function bodies
|
|
833
|
+
const parentKind = (_a = this.cursor.parent) === null || _a === void 0 ? void 0 : _a.value.kind;
|
|
834
|
+
if (parentKind !== java_1.J.Kind.NewClass &&
|
|
835
|
+
!(draft.statements.length === 0 && (parentKind === java_1.J.Kind.Lambda || parentKind === java_1.J.Kind.MethodDeclaration))) {
|
|
807
836
|
draft.end = this.withNewlineSpace(draft.end);
|
|
808
837
|
}
|
|
809
838
|
}
|
|
@@ -923,9 +952,12 @@ class MinimumViableSpacingVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
923
952
|
});
|
|
924
953
|
first = false;
|
|
925
954
|
}
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
955
|
+
// anonymous classes have an empty name
|
|
956
|
+
if (c.name.simpleName !== "") {
|
|
957
|
+
c = (0, immer_1.produce)(c, draft => {
|
|
958
|
+
this.ensureSpace(draft.name.prefix);
|
|
959
|
+
});
|
|
960
|
+
}
|
|
929
961
|
if (c.typeParameters && c.typeParameters.elements.length > 0 && c.typeParameters.before.whitespace === "" && !first) {
|
|
930
962
|
c = (0, immer_1.produce)(c, draft => {
|
|
931
963
|
this.ensureSpace(draft.typeParameters.before);
|
|
@@ -957,9 +989,6 @@ class MinimumViableSpacingVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
957
989
|
return __awaiter(this, void 0, void 0, function* () {
|
|
958
990
|
let m = yield _super.visitMethodDeclaration.call(this, method, p);
|
|
959
991
|
let first = m.leadingAnnotations.length === 0;
|
|
960
|
-
if (method.markers.markers.find(x => x.kind == tree_1.JS.Markers.FunctionDeclaration)) {
|
|
961
|
-
first = false;
|
|
962
|
-
}
|
|
963
992
|
if (m.modifiers.length > 0) {
|
|
964
993
|
if (!first && m.modifiers[0].prefix.whitespace === "") {
|
|
965
994
|
m = (0, immer_1.produce)(m, draft => {
|
|
@@ -973,6 +1002,11 @@ class MinimumViableSpacingVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
973
1002
|
});
|
|
974
1003
|
first = false;
|
|
975
1004
|
}
|
|
1005
|
+
// FunctionDeclaration marker check must come AFTER modifiers processing
|
|
1006
|
+
// to avoid adding unwanted space before the first modifier (e.g., 'async')
|
|
1007
|
+
if ((0, markers_1.findMarker)(method, tree_1.JS.Markers.FunctionDeclaration)) {
|
|
1008
|
+
first = false;
|
|
1009
|
+
}
|
|
976
1010
|
if (!first && m.name.prefix.whitespace === "") {
|
|
977
1011
|
m = (0, immer_1.produce)(m, draft => {
|
|
978
1012
|
this.ensureSpace(draft.name.prefix);
|
|
@@ -1262,7 +1296,9 @@ class BlankLinesVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
1262
1296
|
const b = yield _super.visitBlock.call(this, block, p);
|
|
1263
1297
|
return (0, immer_1.produce)(b, draft => {
|
|
1264
1298
|
var _a;
|
|
1265
|
-
|
|
1299
|
+
const parentKind = (_a = this.cursor.parent) === null || _a === void 0 ? void 0 : _a.value.kind;
|
|
1300
|
+
// Skip newline only for object literals (NewClass) - they should preserve single-line formatting
|
|
1301
|
+
if (parentKind != java_1.J.Kind.NewClass) {
|
|
1266
1302
|
if (!draft.end.whitespace.includes("\n")) {
|
|
1267
1303
|
draft.end.whitespace = draft.end.whitespace.replace(/[ \t]+$/, '') + "\n";
|
|
1268
1304
|
}
|
|
@@ -1303,13 +1339,17 @@ class BlankLinesVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
1303
1339
|
}
|
|
1304
1340
|
}
|
|
1305
1341
|
ensurePrefixHasNewLine(node) {
|
|
1306
|
-
if (
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1342
|
+
if (!node.prefix)
|
|
1343
|
+
return;
|
|
1344
|
+
// Check if newline already exists in the effective last whitespace
|
|
1345
|
+
if ((0, java_1.lastWhitespace)(node.prefix).includes("\n")) {
|
|
1346
|
+
return; // Already has a newline
|
|
1347
|
+
}
|
|
1348
|
+
if (node.kind === tree_1.JS.Kind.ExpressionStatement) {
|
|
1349
|
+
this.ensurePrefixHasNewLine(node.expression);
|
|
1350
|
+
}
|
|
1351
|
+
else {
|
|
1352
|
+
node.prefix = (0, java_1.replaceLastWhitespace)(node.prefix, () => "\n");
|
|
1313
1353
|
}
|
|
1314
1354
|
}
|
|
1315
1355
|
static countNewlines(s) {
|
|
@@ -1329,195 +1369,4 @@ class BlankLinesVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
1329
1369
|
}
|
|
1330
1370
|
}
|
|
1331
1371
|
exports.BlankLinesVisitor = BlankLinesVisitor;
|
|
1332
|
-
class TabsAndIndentsVisitor extends visitor_1.JavaScriptVisitor {
|
|
1333
|
-
constructor(tabsAndIndentsStyle, stopAfter) {
|
|
1334
|
-
super();
|
|
1335
|
-
this.tabsAndIndentsStyle = tabsAndIndentsStyle;
|
|
1336
|
-
this.stopAfter = stopAfter;
|
|
1337
|
-
if (this.tabsAndIndentsStyle.useTabCharacter) {
|
|
1338
|
-
this.singleIndent = "\t";
|
|
1339
|
-
}
|
|
1340
|
-
else {
|
|
1341
|
-
this.singleIndent = " ".repeat(this.tabsAndIndentsStyle.indentSize);
|
|
1342
|
-
}
|
|
1343
|
-
}
|
|
1344
|
-
preVisit(tree, p) {
|
|
1345
|
-
const _super = Object.create(null, {
|
|
1346
|
-
preVisit: { get: () => super.preVisit }
|
|
1347
|
-
});
|
|
1348
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1349
|
-
var _a, _b, _c;
|
|
1350
|
-
let ret = yield _super.preVisit.call(this, tree, p);
|
|
1351
|
-
let indentShouldIncrease = tree.kind === java_1.J.Kind.Block
|
|
1352
|
-
|| ((_c = (_b = (_a = this.cursor.parent) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.parent) === null || _c === void 0 ? void 0 : _c.value.kind) == java_1.J.Kind.Case
|
|
1353
|
-
|| (tree.kind === tree_1.JS.Kind.StatementExpression && tree.statement.kind == java_1.J.Kind.MethodDeclaration && tree.prefix.whitespace.includes("\n"))
|
|
1354
|
-
|| tree.kind === tree_1.JS.Kind.JsxTag;
|
|
1355
|
-
const previousIndent = this.currentIndent;
|
|
1356
|
-
if (tree.kind === java_1.J.Kind.IfElse && this.cursor.getNearestMessage("else-indent") !== undefined) {
|
|
1357
|
-
this.cursor.messages.set("indentToUse", this.cursor.getNearestMessage("else-indent"));
|
|
1358
|
-
}
|
|
1359
|
-
else if (indentShouldIncrease) {
|
|
1360
|
-
this.cursor.messages.set("indentToUse", this.currentIndent + this.singleIndent);
|
|
1361
|
-
}
|
|
1362
|
-
if (tree.kind === tree_1.JS.Kind.JsxTag) {
|
|
1363
|
-
this.cursor.messages.set("jsxTagIndent", this.currentIndent);
|
|
1364
|
-
}
|
|
1365
|
-
if (tree.kind === java_1.J.Kind.IfElse && this.cursor.messages.get("else-indent") !== undefined) {
|
|
1366
|
-
this.cursor.messages.set("indentToUse", this.cursor.messages.get("else-indent"));
|
|
1367
|
-
this.cursor.messages.delete("else-indent");
|
|
1368
|
-
}
|
|
1369
|
-
const relativeIndent = this.currentIndent;
|
|
1370
|
-
ret = (0, immer_1.produce)(ret, draft => {
|
|
1371
|
-
if (draft.prefix == undefined) {
|
|
1372
|
-
draft.prefix = { kind: java_1.J.Kind.Space, comments: [], whitespace: "" };
|
|
1373
|
-
}
|
|
1374
|
-
if (draft.prefix.whitespace.includes("\n")) {
|
|
1375
|
-
draft.prefix.whitespace = this.combineIndent(draft.prefix.whitespace, relativeIndent);
|
|
1376
|
-
}
|
|
1377
|
-
if (draft.kind === java_1.J.Kind.Block) {
|
|
1378
|
-
const block = draft;
|
|
1379
|
-
const indentToUseInClosing = indentShouldIncrease ? previousIndent : relativeIndent;
|
|
1380
|
-
block.end.whitespace = this.combineIndent(block.end.whitespace, indentToUseInClosing);
|
|
1381
|
-
}
|
|
1382
|
-
});
|
|
1383
|
-
indentShouldIncrease = false;
|
|
1384
|
-
// Increase indent for control structures with non-block bodies
|
|
1385
|
-
if (tree.kind === java_1.J.Kind.If) {
|
|
1386
|
-
const ifStmt = tree;
|
|
1387
|
-
if (ifStmt.thenPart.element.kind !== java_1.J.Kind.Block) {
|
|
1388
|
-
indentShouldIncrease = true;
|
|
1389
|
-
this.cursor.messages.set("else-indent", this.currentIndent);
|
|
1390
|
-
}
|
|
1391
|
-
}
|
|
1392
|
-
else if (tree.kind === java_1.J.Kind.WhileLoop) {
|
|
1393
|
-
const whileLoop = tree;
|
|
1394
|
-
if (whileLoop.body.element.kind !== java_1.J.Kind.Block) {
|
|
1395
|
-
indentShouldIncrease = true;
|
|
1396
|
-
}
|
|
1397
|
-
}
|
|
1398
|
-
else if (tree.kind === java_1.J.Kind.ForLoop) {
|
|
1399
|
-
const forLoop = tree;
|
|
1400
|
-
if (forLoop.body.element.kind !== java_1.J.Kind.Block) {
|
|
1401
|
-
indentShouldIncrease = true;
|
|
1402
|
-
}
|
|
1403
|
-
}
|
|
1404
|
-
else if (tree.kind === tree_1.JS.Kind.JsxTag) {
|
|
1405
|
-
indentShouldIncrease = true;
|
|
1406
|
-
}
|
|
1407
|
-
if (indentShouldIncrease) {
|
|
1408
|
-
this.cursor.messages.set("indentToUse", this.currentIndent + this.singleIndent);
|
|
1409
|
-
}
|
|
1410
|
-
return ret;
|
|
1411
|
-
});
|
|
1412
|
-
}
|
|
1413
|
-
visitSpace(space, p) {
|
|
1414
|
-
const _super = Object.create(null, {
|
|
1415
|
-
visitSpace: { get: () => super.visitSpace }
|
|
1416
|
-
});
|
|
1417
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1418
|
-
const ret = yield _super.visitSpace.call(this, space, p);
|
|
1419
|
-
if (space.whitespace.includes("\n")) {
|
|
1420
|
-
let parentCursor = this.cursor.parent;
|
|
1421
|
-
while (parentCursor != null && parentCursor.value.kind !== tree_1.JS.Kind.JsxTag) {
|
|
1422
|
-
parentCursor = parentCursor.parent;
|
|
1423
|
-
}
|
|
1424
|
-
if (parentCursor && parentCursor.value.kind === tree_1.JS.Kind.JsxTag) {
|
|
1425
|
-
parentCursor.messages.set("jsxTagWithNewline", true);
|
|
1426
|
-
}
|
|
1427
|
-
}
|
|
1428
|
-
return ret;
|
|
1429
|
-
});
|
|
1430
|
-
}
|
|
1431
|
-
visit(tree, p, parent) {
|
|
1432
|
-
const _super = Object.create(null, {
|
|
1433
|
-
visit: { get: () => super.visit }
|
|
1434
|
-
});
|
|
1435
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1436
|
-
var _a;
|
|
1437
|
-
if (((_a = this.cursor) === null || _a === void 0 ? void 0 : _a.getNearestMessage("stop")) != null) {
|
|
1438
|
-
return tree;
|
|
1439
|
-
}
|
|
1440
|
-
if (parent) {
|
|
1441
|
-
this.cursor = new tree_2.Cursor(tree, parent);
|
|
1442
|
-
for (let c = this.cursor; c != null; c = c.parent) {
|
|
1443
|
-
let space;
|
|
1444
|
-
const v = c.value;
|
|
1445
|
-
if (v.kind == java_1.J.Kind.RightPadded) {
|
|
1446
|
-
space = v.after;
|
|
1447
|
-
}
|
|
1448
|
-
else if (v.kind == java_1.J.Kind.LeftPadded || v.kind == java_1.J.Kind.Container) {
|
|
1449
|
-
space = v.before;
|
|
1450
|
-
}
|
|
1451
|
-
else if ((0, java_1.isJava)(v) || (0, tree_1.isJavaScript)(v)) {
|
|
1452
|
-
space = v.prefix;
|
|
1453
|
-
}
|
|
1454
|
-
else {
|
|
1455
|
-
continue;
|
|
1456
|
-
}
|
|
1457
|
-
const lastWhitespace = space.comments.length > 0 ? space.comments[space.comments.length - 1].suffix : space.whitespace;
|
|
1458
|
-
const idx = lastWhitespace.lastIndexOf('\n');
|
|
1459
|
-
if (idx !== -1) {
|
|
1460
|
-
c.messages.set("indentToUse", lastWhitespace.substring(idx + 1));
|
|
1461
|
-
break;
|
|
1462
|
-
}
|
|
1463
|
-
}
|
|
1464
|
-
}
|
|
1465
|
-
return yield _super.visit.call(this, tree, p);
|
|
1466
|
-
});
|
|
1467
|
-
}
|
|
1468
|
-
visitLeftPadded(left, p) {
|
|
1469
|
-
const _super = Object.create(null, {
|
|
1470
|
-
visitLeftPadded: { get: () => super.visitLeftPadded }
|
|
1471
|
-
});
|
|
1472
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1473
|
-
const ret = yield _super.visitLeftPadded.call(this, left, p);
|
|
1474
|
-
if (ret == undefined) {
|
|
1475
|
-
return ret;
|
|
1476
|
-
}
|
|
1477
|
-
return (0, immer_1.produce)(ret, draft => {
|
|
1478
|
-
if (draft.before.whitespace.includes("\n")) {
|
|
1479
|
-
draft.before.whitespace = this.combineIndent(draft.before.whitespace, this.currentIndent);
|
|
1480
|
-
}
|
|
1481
|
-
});
|
|
1482
|
-
});
|
|
1483
|
-
}
|
|
1484
|
-
get currentIndent() {
|
|
1485
|
-
var _a;
|
|
1486
|
-
return (_a = this.cursor.getNearestMessage("indentToUse")) !== null && _a !== void 0 ? _a : "";
|
|
1487
|
-
}
|
|
1488
|
-
combineIndent(oldWs, relativeIndent) {
|
|
1489
|
-
return oldWs.substring(0, oldWs.lastIndexOf("\n") + 1) + relativeIndent;
|
|
1490
|
-
}
|
|
1491
|
-
postVisit(tree, p) {
|
|
1492
|
-
const _super = Object.create(null, {
|
|
1493
|
-
postVisit: { get: () => super.postVisit }
|
|
1494
|
-
});
|
|
1495
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1496
|
-
var _a;
|
|
1497
|
-
if (this.stopAfter != null && (0, tree_2.isScope)(this.stopAfter, tree)) {
|
|
1498
|
-
(_a = this.cursor) === null || _a === void 0 ? void 0 : _a.root.messages.set("stop", true);
|
|
1499
|
-
}
|
|
1500
|
-
let treeChanged = tree;
|
|
1501
|
-
if (tree.kind == tree_1.JS.Kind.JsxTag) {
|
|
1502
|
-
const tag = tree;
|
|
1503
|
-
if (this.cursor.messages.get("jsxTagWithNewline")) {
|
|
1504
|
-
const jsxTagIndent = this.cursor.messages.get("jsxTagIndent");
|
|
1505
|
-
if (jsxTagIndent) {
|
|
1506
|
-
this.cursor.messages.delete("jsxTagWithNewline");
|
|
1507
|
-
treeChanged = (0, immer_1.produce)(tag, draft => {
|
|
1508
|
-
if (draft.children) {
|
|
1509
|
-
const lastChild = draft.children[draft.children.length - 1];
|
|
1510
|
-
if (lastChild.kind === java_1.J.Kind.Literal) {
|
|
1511
|
-
lastChild.prefix.whitespace = this.combineIndent(lastChild.prefix.whitespace, jsxTagIndent);
|
|
1512
|
-
}
|
|
1513
|
-
}
|
|
1514
|
-
});
|
|
1515
|
-
}
|
|
1516
|
-
}
|
|
1517
|
-
}
|
|
1518
|
-
return _super.postVisit.call(this, treeChanged, p);
|
|
1519
|
-
});
|
|
1520
|
-
}
|
|
1521
|
-
}
|
|
1522
|
-
exports.TabsAndIndentsVisitor = TabsAndIndentsVisitor;
|
|
1523
1372
|
//# sourceMappingURL=format.js.map
|