@openrewrite/rewrite 8.69.0 → 8.69.1

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.
Files changed (93) hide show
  1. package/dist/java/type.d.ts +5 -0
  2. package/dist/java/type.d.ts.map +1 -1
  3. package/dist/java/type.js +12 -0
  4. package/dist/java/type.js.map +1 -1
  5. package/dist/javascript/assertions.d.ts.map +1 -1
  6. package/dist/javascript/assertions.js +9 -0
  7. package/dist/javascript/assertions.js.map +1 -1
  8. package/dist/javascript/comparator.d.ts.map +1 -1
  9. package/dist/javascript/comparator.js +5 -9
  10. package/dist/javascript/comparator.js.map +1 -1
  11. package/dist/javascript/{format.d.ts → format/format.d.ts} +15 -33
  12. package/dist/javascript/format/format.d.ts.map +1 -0
  13. package/dist/javascript/{format.js → format/format.js} +56 -313
  14. package/dist/javascript/format/format.js.map +1 -0
  15. package/dist/javascript/format/index.d.ts +3 -0
  16. package/dist/javascript/format/index.d.ts.map +1 -0
  17. package/dist/javascript/format/index.js +38 -0
  18. package/dist/javascript/format/index.js.map +1 -0
  19. package/dist/javascript/format/minimum-viable-spacing-visitor.d.ts +28 -0
  20. package/dist/javascript/format/minimum-viable-spacing-visitor.d.ts.map +1 -0
  21. package/dist/javascript/format/minimum-viable-spacing-visitor.js +308 -0
  22. package/dist/javascript/format/minimum-viable-spacing-visitor.js.map +1 -0
  23. package/dist/javascript/format/normalize-whitespace-visitor.d.ts +14 -0
  24. package/dist/javascript/format/normalize-whitespace-visitor.d.ts.map +1 -0
  25. package/dist/javascript/format/normalize-whitespace-visitor.js +65 -0
  26. package/dist/javascript/format/normalize-whitespace-visitor.js.map +1 -0
  27. package/dist/javascript/format/prettier-config-loader.d.ts +92 -0
  28. package/dist/javascript/format/prettier-config-loader.d.ts.map +1 -0
  29. package/dist/javascript/format/prettier-config-loader.js +419 -0
  30. package/dist/javascript/format/prettier-config-loader.js.map +1 -0
  31. package/dist/javascript/format/prettier-format.d.ts +111 -0
  32. package/dist/javascript/format/prettier-format.d.ts.map +1 -0
  33. package/dist/javascript/format/prettier-format.js +496 -0
  34. package/dist/javascript/format/prettier-format.js.map +1 -0
  35. package/dist/javascript/{tabs-and-indents-visitor.d.ts → format/tabs-and-indents-visitor.d.ts} +4 -4
  36. package/dist/javascript/format/tabs-and-indents-visitor.d.ts.map +1 -0
  37. package/dist/javascript/{tabs-and-indents-visitor.js → format/tabs-and-indents-visitor.js} +7 -7
  38. package/dist/javascript/format/tabs-and-indents-visitor.js.map +1 -0
  39. package/dist/javascript/format/whitespace-reconciler.d.ts +106 -0
  40. package/dist/javascript/format/whitespace-reconciler.d.ts.map +1 -0
  41. package/dist/javascript/format/whitespace-reconciler.js +291 -0
  42. package/dist/javascript/format/whitespace-reconciler.js.map +1 -0
  43. package/dist/javascript/markers.d.ts.map +1 -1
  44. package/dist/javascript/markers.js +21 -0
  45. package/dist/javascript/markers.js.map +1 -1
  46. package/dist/javascript/parser.d.ts +15 -3
  47. package/dist/javascript/parser.d.ts.map +1 -1
  48. package/dist/javascript/parser.js +107 -24
  49. package/dist/javascript/parser.js.map +1 -1
  50. package/dist/javascript/recipes/auto-format.d.ts +3 -0
  51. package/dist/javascript/recipes/auto-format.d.ts.map +1 -1
  52. package/dist/javascript/recipes/auto-format.js +22 -1
  53. package/dist/javascript/recipes/auto-format.js.map +1 -1
  54. package/dist/javascript/style.d.ts +52 -1
  55. package/dist/javascript/style.d.ts.map +1 -1
  56. package/dist/javascript/style.js +43 -2
  57. package/dist/javascript/style.js.map +1 -1
  58. package/dist/test/rewrite-test.d.ts +3 -4
  59. package/dist/test/rewrite-test.d.ts.map +1 -1
  60. package/dist/test/rewrite-test.js +6 -18
  61. package/dist/test/rewrite-test.js.map +1 -1
  62. package/dist/version.txt +1 -1
  63. package/dist/yaml/assertions.d.ts +4 -0
  64. package/dist/yaml/assertions.d.ts.map +1 -0
  65. package/dist/yaml/assertions.js +31 -0
  66. package/dist/yaml/assertions.js.map +1 -0
  67. package/dist/yaml/index.d.ts +2 -1
  68. package/dist/yaml/index.d.ts.map +1 -1
  69. package/dist/yaml/index.js +2 -1
  70. package/dist/yaml/index.js.map +1 -1
  71. package/package.json +5 -4
  72. package/src/java/type.ts +12 -0
  73. package/src/javascript/assertions.ts +9 -0
  74. package/src/javascript/comparator.ts +6 -11
  75. package/src/javascript/{format.ts → format/format.ts} +59 -267
  76. package/src/javascript/format/index.ts +21 -0
  77. package/src/javascript/format/minimum-viable-spacing-visitor.ts +256 -0
  78. package/src/javascript/format/normalize-whitespace-visitor.ts +42 -0
  79. package/src/javascript/format/prettier-config-loader.ts +422 -0
  80. package/src/javascript/format/prettier-format.ts +622 -0
  81. package/src/javascript/{tabs-and-indents-visitor.ts → format/tabs-and-indents-visitor.ts} +8 -8
  82. package/src/javascript/format/whitespace-reconciler.ts +345 -0
  83. package/src/javascript/markers.ts +19 -0
  84. package/src/javascript/parser.ts +107 -20
  85. package/src/javascript/recipes/auto-format.ts +28 -1
  86. package/src/javascript/style.ts +41 -2
  87. package/src/test/rewrite-test.ts +6 -18
  88. package/src/yaml/assertions.ts +28 -0
  89. package/src/yaml/index.ts +2 -1
  90. package/dist/javascript/format.d.ts.map +0 -1
  91. package/dist/javascript/format.js.map +0 -1
  92. package/dist/javascript/tabs-and-indents-visitor.d.ts.map +0 -1
  93. package/dist/javascript/tabs-and-indents-visitor.js.map +0 -1
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MinimumViableSpacingVisitor = void 0;
13
+ /*
14
+ * Copyright 2025 the original author or authors.
15
+ * <p>
16
+ * Licensed under the Moderne Source Available License (the "License");
17
+ * you may not use this file except in compliance with the License.
18
+ * You may obtain a copy of the License at
19
+ * <p>
20
+ * https://docs.moderne.io/licensing/moderne-source-available-license
21
+ * <p>
22
+ * Unless required by applicable law or agreed to in writing, software
23
+ * distributed under the License is distributed on an "AS IS" BASIS,
24
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25
+ * See the License for the specific language governing permissions and
26
+ * limitations under the License.
27
+ */
28
+ const visitor_1 = require("../visitor");
29
+ const java_1 = require("../../java");
30
+ const tree_1 = require("../../tree");
31
+ const tree_2 = require("../tree");
32
+ const immer_1 = require("immer");
33
+ const markers_1 = require("../../markers");
34
+ /**
35
+ * Ensures minimum viable spacing between AST elements.
36
+ * Adds required spaces where they are missing (e.g., after keywords).
37
+ */
38
+ class MinimumViableSpacingVisitor extends visitor_1.JavaScriptVisitor {
39
+ constructor(stopAfter) {
40
+ super();
41
+ this.stopAfter = stopAfter;
42
+ }
43
+ visit(tree, p, parent) {
44
+ const _super = Object.create(null, {
45
+ visit: { get: () => super.visit }
46
+ });
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ var _a;
49
+ if (((_a = this.cursor) === null || _a === void 0 ? void 0 : _a.getNearestMessage("stop")) != null) {
50
+ return tree;
51
+ }
52
+ return _super.visit.call(this, tree, p, parent);
53
+ });
54
+ }
55
+ postVisit(tree, p) {
56
+ const _super = Object.create(null, {
57
+ postVisit: { get: () => super.postVisit }
58
+ });
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ var _a;
61
+ if (this.stopAfter != null && (0, tree_1.isScope)(this.stopAfter, tree)) {
62
+ (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.root.messages.set("stop", true);
63
+ }
64
+ return _super.postVisit.call(this, tree, p);
65
+ });
66
+ }
67
+ visitAwait(await_, p) {
68
+ const _super = Object.create(null, {
69
+ visitAwait: { get: () => super.visitAwait }
70
+ });
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ const ret = yield _super.visitAwait.call(this, await_, p);
73
+ return (0, immer_1.produce)(ret, draft => {
74
+ this.ensureSpace(draft.expression.prefix);
75
+ });
76
+ });
77
+ }
78
+ visitClassDeclaration(classDecl, p) {
79
+ const _super = Object.create(null, {
80
+ visitClassDeclaration: { get: () => super.visitClassDeclaration }
81
+ });
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ let c = yield _super.visitClassDeclaration.call(this, classDecl, p);
84
+ let first = c.leadingAnnotations.length === 0;
85
+ if (c.modifiers.length > 0) {
86
+ if (!first && c.modifiers[0].prefix.whitespace === "") {
87
+ c = (0, immer_1.produce)(c, draft => {
88
+ this.ensureSpace(draft.modifiers[0].prefix);
89
+ });
90
+ }
91
+ c = (0, immer_1.produce)(c, draft => {
92
+ for (let i = 1; i < draft.modifiers.length; i++) {
93
+ this.ensureSpace(draft.modifiers[i].prefix);
94
+ }
95
+ });
96
+ first = false;
97
+ }
98
+ if (c.classKind.prefix.whitespace === "" && !first) {
99
+ c = (0, immer_1.produce)(c, draft => {
100
+ this.ensureSpace(draft.classKind.prefix);
101
+ });
102
+ first = false;
103
+ }
104
+ // anonymous classes have an empty name
105
+ if (c.name.simpleName !== "") {
106
+ c = (0, immer_1.produce)(c, draft => {
107
+ this.ensureSpace(draft.name.prefix);
108
+ });
109
+ }
110
+ // Note: typeParameters should NOT have space before them - they immediately follow the class name
111
+ // e.g., "class DataTable<Row>" not "class DataTable <Row>"
112
+ if (c.extends && c.extends.before.whitespace === "") {
113
+ c = (0, immer_1.produce)(c, draft => {
114
+ this.ensureSpace(draft.extends.before);
115
+ });
116
+ }
117
+ if (c.implements && c.implements.before.whitespace === "") {
118
+ c = (0, immer_1.produce)(c, draft => {
119
+ this.ensureSpace(draft.implements.before);
120
+ if (draft.implements != undefined && draft.implements.elements.length > 0) {
121
+ this.ensureSpace(draft.implements.elements[0].element.prefix);
122
+ }
123
+ });
124
+ }
125
+ c = (0, immer_1.produce)(c, draft => {
126
+ draft.body.prefix.whitespace = "";
127
+ });
128
+ return c;
129
+ });
130
+ }
131
+ visitMethodDeclaration(method, p) {
132
+ const _super = Object.create(null, {
133
+ visitMethodDeclaration: { get: () => super.visitMethodDeclaration }
134
+ });
135
+ return __awaiter(this, void 0, void 0, function* () {
136
+ let m = yield _super.visitMethodDeclaration.call(this, method, p);
137
+ let first = m.leadingAnnotations.length === 0;
138
+ if (m.modifiers.length > 0) {
139
+ if (!first && m.modifiers[0].prefix.whitespace === "") {
140
+ m = (0, immer_1.produce)(m, draft => {
141
+ this.ensureSpace(draft.modifiers[0].prefix);
142
+ });
143
+ }
144
+ m = (0, immer_1.produce)(m, draft => {
145
+ for (let i = 1; i < draft.modifiers.length; i++) {
146
+ this.ensureSpace(draft.modifiers[i].prefix);
147
+ }
148
+ });
149
+ first = false;
150
+ }
151
+ // FunctionDeclaration marker check must come AFTER modifiers processing
152
+ // to avoid adding unwanted space before the first modifier (e.g., 'async')
153
+ if ((0, markers_1.findMarker)(method, tree_2.JS.Markers.FunctionDeclaration)) {
154
+ first = false;
155
+ }
156
+ if (!first && m.name.prefix.whitespace === "") {
157
+ m = (0, immer_1.produce)(m, draft => {
158
+ this.ensureSpace(draft.name.prefix);
159
+ });
160
+ }
161
+ if (m.throws && m.throws.before.whitespace === "") {
162
+ m = (0, immer_1.produce)(m, draft => {
163
+ this.ensureSpace(draft.throws.before);
164
+ });
165
+ }
166
+ return m;
167
+ });
168
+ }
169
+ visitNamespaceDeclaration(namespaceDeclaration, p) {
170
+ const _super = Object.create(null, {
171
+ visitNamespaceDeclaration: { get: () => super.visitNamespaceDeclaration }
172
+ });
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ const ret = yield _super.visitNamespaceDeclaration.call(this, namespaceDeclaration, p);
175
+ return (0, immer_1.produce)(ret, draft => {
176
+ if (draft.modifiers.length > 0) {
177
+ draft.keywordType.before.whitespace = " ";
178
+ }
179
+ this.ensureSpace(draft.name.element.prefix);
180
+ });
181
+ });
182
+ }
183
+ visitNewClass(newClass, p) {
184
+ const _super = Object.create(null, {
185
+ visitNewClass: { get: () => super.visitNewClass }
186
+ });
187
+ return __awaiter(this, void 0, void 0, function* () {
188
+ const ret = yield _super.visitNewClass.call(this, newClass, p);
189
+ return (0, immer_1.produce)(ret, draft => {
190
+ if (draft.class) {
191
+ if (draft.class.kind == java_1.J.Kind.Identifier) {
192
+ this.ensureSpace(draft.class.prefix);
193
+ }
194
+ }
195
+ });
196
+ });
197
+ }
198
+ visitReturn(returnNode, p) {
199
+ const _super = Object.create(null, {
200
+ visitReturn: { get: () => super.visitReturn }
201
+ });
202
+ return __awaiter(this, void 0, void 0, function* () {
203
+ const r = yield _super.visitReturn.call(this, returnNode, p);
204
+ if (r.expression && r.expression.prefix.whitespace === "" &&
205
+ !r.markers.markers.find(m => m.id === "org.openrewrite.java.marker.ImplicitReturn")) {
206
+ return (0, immer_1.produce)(r, draft => {
207
+ this.ensureSpace(draft.expression.prefix);
208
+ });
209
+ }
210
+ return r;
211
+ });
212
+ }
213
+ visitThrow(thrown, p) {
214
+ const _super = Object.create(null, {
215
+ visitThrow: { get: () => super.visitThrow }
216
+ });
217
+ return __awaiter(this, void 0, void 0, function* () {
218
+ const ret = yield _super.visitThrow.call(this, thrown, p);
219
+ return ret && (0, immer_1.produce)(ret, draft => {
220
+ this.ensureSpace(draft.exception.prefix);
221
+ });
222
+ });
223
+ }
224
+ visitTypeDeclaration(typeDeclaration, p) {
225
+ const _super = Object.create(null, {
226
+ visitTypeDeclaration: { get: () => super.visitTypeDeclaration }
227
+ });
228
+ return __awaiter(this, void 0, void 0, function* () {
229
+ const ret = yield _super.visitTypeDeclaration.call(this, typeDeclaration, p);
230
+ return (0, immer_1.produce)(ret, draft => {
231
+ if (draft.modifiers.length > 0) {
232
+ this.ensureSpace(draft.name.before);
233
+ }
234
+ this.ensureSpace(draft.name.element.prefix);
235
+ });
236
+ });
237
+ }
238
+ visitTypeOf(typeOf, p) {
239
+ const _super = Object.create(null, {
240
+ visitTypeOf: { get: () => super.visitTypeOf }
241
+ });
242
+ return __awaiter(this, void 0, void 0, function* () {
243
+ const ret = yield _super.visitTypeOf.call(this, typeOf, p);
244
+ return (0, immer_1.produce)(ret, draft => {
245
+ this.ensureSpace(draft.expression.prefix);
246
+ });
247
+ });
248
+ }
249
+ visitTypeParameter(typeParam, p) {
250
+ const _super = Object.create(null, {
251
+ visitTypeParameter: { get: () => super.visitTypeParameter }
252
+ });
253
+ return __awaiter(this, void 0, void 0, function* () {
254
+ const ret = yield _super.visitTypeParameter.call(this, typeParam, p);
255
+ return (0, immer_1.produce)(ret, draft => {
256
+ if (draft.bounds && draft.bounds.elements.length > 0) {
257
+ this.ensureSpace(draft.bounds.before);
258
+ this.ensureSpace(draft.bounds.elements[0].element.prefix);
259
+ }
260
+ });
261
+ });
262
+ }
263
+ visitVariableDeclarations(v, p) {
264
+ const _super = Object.create(null, {
265
+ visitVariableDeclarations: { get: () => super.visitVariableDeclarations }
266
+ });
267
+ return __awaiter(this, void 0, void 0, function* () {
268
+ let ret = yield _super.visitVariableDeclarations.call(this, v, p);
269
+ let first = ret.leadingAnnotations.length === 0;
270
+ if (first && ret.modifiers.length > 0) {
271
+ ret = (0, immer_1.produce)(ret, draft => {
272
+ for (let i = 1; i < draft.modifiers.length; i++) {
273
+ this.ensureSpace(draft.modifiers[i].prefix);
274
+ }
275
+ });
276
+ first = false;
277
+ }
278
+ if (!first) {
279
+ ret = (0, immer_1.produce)(ret, draft => {
280
+ this.ensureSpace(draft.variables[0].element.prefix);
281
+ });
282
+ }
283
+ return ret;
284
+ });
285
+ }
286
+ visitCase(caseNode, p) {
287
+ const _super = Object.create(null, {
288
+ visitCase: { get: () => super.visitCase }
289
+ });
290
+ return __awaiter(this, void 0, void 0, function* () {
291
+ const c = yield _super.visitCase.call(this, caseNode, p);
292
+ if (c.guard && c.caseLabels.elements.length > 0 && c.caseLabels.elements[c.caseLabels.elements.length - 1].after.whitespace === "") {
293
+ return (0, immer_1.produce)(c, draft => {
294
+ const last = draft.caseLabels.elements.length - 1;
295
+ draft.caseLabels.elements[last].after.whitespace = " ";
296
+ });
297
+ }
298
+ return c;
299
+ });
300
+ }
301
+ ensureSpace(spaceDraft) {
302
+ if (spaceDraft.whitespace.length === 0 && spaceDraft.comments.length === 0) {
303
+ spaceDraft.whitespace = " ";
304
+ }
305
+ }
306
+ }
307
+ exports.MinimumViableSpacingVisitor = MinimumViableSpacingVisitor;
308
+ //# sourceMappingURL=minimum-viable-spacing-visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimum-viable-spacing-visitor.js","sourceRoot":"","sources":["../../../src/javascript/format/minimum-viable-spacing-visitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { JavaScriptVisitor } from "../visitor";
2
+ import { J } from "../../java";
3
+ import { Cursor, Tree } from "../../tree";
4
+ /**
5
+ * Ensures that whitespace is on the outermost AST element possible.
6
+ * Called NormalizeFormat in Java.
7
+ */
8
+ export declare class NormalizeWhitespaceVisitor<P> extends JavaScriptVisitor<P> {
9
+ private stopAfter?;
10
+ constructor(stopAfter?: Tree | undefined);
11
+ visit<R extends J>(tree: Tree, p: P, parent?: Cursor): Promise<R | undefined>;
12
+ postVisit(tree: J, p: P): Promise<J | undefined>;
13
+ }
14
+ //# sourceMappingURL=normalize-whitespace-visitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-whitespace-visitor.d.ts","sourceRoot":"","sources":["../../../src/javascript/format/normalize-whitespace-visitor.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAC,CAAC,EAAC,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAC,MAAM,EAAW,IAAI,EAAC,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,qBAAa,0BAA0B,CAAC,CAAC,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,SAAS,CAAC;gBAAV,SAAS,CAAC,EAAE,IAAI,YAAA;IAIrB,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;IAO7E,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;CAMlE"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.NormalizeWhitespaceVisitor = void 0;
13
+ /*
14
+ * Copyright 2025 the original author or authors.
15
+ * <p>
16
+ * Licensed under the Moderne Source Available License (the "License");
17
+ * you may not use this file except in compliance with the License.
18
+ * You may obtain a copy of the License at
19
+ * <p>
20
+ * https://docs.moderne.io/licensing/moderne-source-available-license
21
+ * <p>
22
+ * Unless required by applicable law or agreed to in writing, software
23
+ * distributed under the License is distributed on an "AS IS" BASIS,
24
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25
+ * See the License for the specific language governing permissions and
26
+ * limitations under the License.
27
+ */
28
+ const visitor_1 = require("../visitor");
29
+ const tree_1 = require("../../tree");
30
+ /**
31
+ * Ensures that whitespace is on the outermost AST element possible.
32
+ * Called NormalizeFormat in Java.
33
+ */
34
+ class NormalizeWhitespaceVisitor extends visitor_1.JavaScriptVisitor {
35
+ constructor(stopAfter) {
36
+ super();
37
+ this.stopAfter = stopAfter;
38
+ }
39
+ visit(tree, p, parent) {
40
+ const _super = Object.create(null, {
41
+ visit: { get: () => super.visit }
42
+ });
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ var _a;
45
+ if (((_a = this.cursor) === null || _a === void 0 ? void 0 : _a.getNearestMessage("stop")) != null) {
46
+ return tree;
47
+ }
48
+ return _super.visit.call(this, tree, p, parent);
49
+ });
50
+ }
51
+ postVisit(tree, p) {
52
+ const _super = Object.create(null, {
53
+ postVisit: { get: () => super.postVisit }
54
+ });
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ var _a;
57
+ if (this.stopAfter != null && (0, tree_1.isScope)(this.stopAfter, tree)) {
58
+ (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.root.messages.set("stop", true);
59
+ }
60
+ return _super.postVisit.call(this, tree, p);
61
+ });
62
+ }
63
+ }
64
+ exports.NormalizeWhitespaceVisitor = NormalizeWhitespaceVisitor;
65
+ //# sourceMappingURL=normalize-whitespace-visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-whitespace-visitor.js","sourceRoot":"","sources":["../../../src/javascript/format/normalize-whitespace-visitor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;GAcG;AACH,wCAA6C;AAE7C,qCAAiD;AAEjD;;;GAGG;AACH,MAAa,0BAA8B,SAAQ,2BAAoB;IACnE,YAAoB,SAAgB;QAChC,KAAK,EAAE,CAAC;QADQ,cAAS,GAAT,SAAS,CAAO;IAEpC,CAAC;IAEc,KAAK,CAAc,IAAU,EAAE,CAAI,EAAE,MAAe;;;;;;YAC/D,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,iBAAiB,CAAC,MAAM,CAAC,KAAI,IAAI,EAAE,CAAC;gBACjD,OAAO,IAAS,CAAC;YACrB,CAAC;YACD,OAAO,OAAM,KAAK,YAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE;QACxC,CAAC;KAAA;IAEc,SAAS,CAAC,IAAO,EAAE,CAAI;;;;;;YAClC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAA,cAAO,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1D,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,OAAM,SAAS,YAAC,IAAI,EAAE,CAAC,EAAE;QACpC,CAAC;KAAA;CACJ;AAlBD,gEAkBC"}
@@ -0,0 +1,92 @@
1
+ import { PrettierStyle } from '../style';
2
+ /**
3
+ * Clears the in-memory Prettier module cache.
4
+ * Call this in long-running processes to free memory when Prettier
5
+ * versions are no longer needed.
6
+ */
7
+ export declare function clearPrettierModuleCache(): void;
8
+ /**
9
+ * Result of detecting Prettier in a project.
10
+ */
11
+ export interface PrettierDetectionResult {
12
+ /**
13
+ * Whether Prettier is available in the project.
14
+ */
15
+ available: boolean;
16
+ /**
17
+ * The Prettier version from the project's node_modules.
18
+ */
19
+ version?: string;
20
+ /**
21
+ * Reference to the bundled Prettier for resolving configs.
22
+ * We use our bundled version to resolve configs (stable API),
23
+ * but at formatting time, the project's version will be loaded dynamically.
24
+ */
25
+ bundledPrettier?: typeof import('prettier');
26
+ }
27
+ /**
28
+ * Manages Prettier configuration detection and loading for a parse session.
29
+ *
30
+ * This class:
31
+ * 1. Detects if Prettier is installed in the project
32
+ * 2. Resolves Prettier config per-file (with overrides)
33
+ * 3. Caches resolved configs for marker deduplication
34
+ * 4. Creates PrettierStyle markers for source files
35
+ *
36
+ * The marker only stores the version and resolved config - at formatting time,
37
+ * the correct version of Prettier will be loaded dynamically (like npx).
38
+ */
39
+ export declare class PrettierConfigLoader {
40
+ private readonly projectRoot;
41
+ private detection?;
42
+ private configCache;
43
+ /**
44
+ * Creates a new PrettierConfigLoader for a project.
45
+ *
46
+ * @param projectRoot The root directory of the project (where package.json is)
47
+ */
48
+ constructor(projectRoot: string);
49
+ /**
50
+ * Detects Prettier in the project and loads our bundled version for config resolution.
51
+ * Call this once at the start of parsing.
52
+ */
53
+ detectPrettier(): Promise<PrettierDetectionResult>;
54
+ /**
55
+ * Gets the Prettier version from the project's package.json or node_modules.
56
+ * Scans upward from projectRoot to support monorepo structures where Prettier
57
+ * is installed at the repository root.
58
+ */
59
+ private getPrettierVersionFromProject;
60
+ /**
61
+ * Finds the .prettierignore file by scanning upward from projectRoot.
62
+ * Returns undefined if no .prettierignore file is found.
63
+ */
64
+ private findPrettierIgnore;
65
+ /**
66
+ * Gets or creates a PrettierStyle marker for the given source file.
67
+ * Returns undefined if Prettier is not available or no config applies to this file.
68
+ *
69
+ * @param filePath Absolute path to the source file
70
+ */
71
+ getConfigMarker(filePath: string): Promise<PrettierStyle | undefined>;
72
+ /**
73
+ * Clears the config cache. Call this between parse batches if needed.
74
+ */
75
+ clearCache(): void;
76
+ }
77
+ /**
78
+ * Dynamically loads a specific version of Prettier for formatting.
79
+ *
80
+ * This function will attempt to load Prettier in this order:
81
+ * 1. From the in-memory cache (if already loaded)
82
+ * 2. From the current working directory's node_modules (if version matches)
83
+ * 3. From the cached npm project at ~/.cache/openrewrite/prettier/<version>/
84
+ * 4. Install to cache and load from there
85
+ *
86
+ * Concurrent requests for the same version are deduplicated.
87
+ *
88
+ * @param version The Prettier version to load (e.g., "3.4.2")
89
+ * @returns The loaded Prettier module
90
+ */
91
+ export declare function loadPrettierVersion(version: string): Promise<typeof import('prettier')>;
92
+ //# sourceMappingURL=prettier-config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prettier-config-loader.d.ts","sourceRoot":"","sources":["../../../src/javascript/format/prettier-config-loader.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAkBvC;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AA0FD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,cAAc,UAAU,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAoB;IASjB,OAAO,CAAC,QAAQ,CAAC,WAAW;IARxC,OAAO,CAAC,SAAS,CAAC,CAA0B;IAC5C,OAAO,CAAC,WAAW,CAAyC;IAE5D;;;;OAIG;gBAC0B,WAAW,EAAE,MAAM;IAEhD;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAuCxD;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IAgDrC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;;;;OAKG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IA6C3E;;OAEG;IACH,UAAU,IAAI,IAAI;CAGrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,UAAU,CAAC,CAAC,CAwB7F"}