@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
package/dist/run.d.ts
CHANGED
|
@@ -16,13 +16,14 @@ export type ProgressCallback = (phase: 'parsing' | 'scanning' | 'processing', cu
|
|
|
16
16
|
* Streaming version of scheduleRun that yields results as soon as each file is processed.
|
|
17
17
|
* This allows callers to print diffs immediately and free memory earlier.
|
|
18
18
|
*
|
|
19
|
-
* Accepts either an array or an async iterable of source files.
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* Accepts either an array or an async iterable of source files. Files are processed
|
|
20
|
+
* immediately as they're yielded from the iterable, avoiding the need to collect all
|
|
21
|
+
* files into memory before starting work.
|
|
22
22
|
*
|
|
23
|
-
* For scanning recipes,
|
|
23
|
+
* For scanning recipes, each file is scanned immediately as it's pulled from the generator,
|
|
24
|
+
* then stored for the edit phase. The scan phase completes before any results are yielded.
|
|
24
25
|
*
|
|
25
|
-
* @param onProgress Optional callback for progress updates during
|
|
26
|
+
* @param onProgress Optional callback for progress updates during scanning and processing phases.
|
|
26
27
|
*/
|
|
27
28
|
export declare function scheduleRunStreaming(recipe: Recipe, before: SourceFile[] | AsyncIterable<SourceFile>, ctx: ExecutionContext, onProgress?: ProgressCallback): AsyncGenerator<Result, void, undefined>;
|
|
28
29
|
//# sourceMappingURL=run.d.ts.map
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAa,UAAU,EAAC,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAAC,MAAM,EAAiB,MAAM,UAAU,CAAC;AAEhD,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,qBAAa,MAAM;aACa,MAAM,CAAC,EAAE,UAAU;aAAkB,KAAK,CAAC,EAAE,UAAU;gBAAvD,MAAM,CAAC,EAAE,UAAU,YAAA,EAAkB,KAAK,CAAC,EAAE,UAAU,YAAA;IAG7E,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;CAWhC;AA0BD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAMjH;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;AAE1I
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAa,UAAU,EAAC,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAAC,MAAM,EAAiB,MAAM,UAAU,CAAC;AAEhD,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,qBAAa,MAAM;aACa,MAAM,CAAC,EAAE,UAAU;aAAkB,KAAK,CAAC,EAAE,UAAU;gBAAvD,MAAM,CAAC,EAAE,UAAU,YAAA,EAAkB,KAAK,CAAC,EAAE,UAAU,YAAA;IAG7E,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;CAWhC;AA0BD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAMjH;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;AAE1I;;;;;;;;;;;;GAYG;AACH,wBAAuB,oBAAoB,CACvC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,UAAU,CAAC,EAChD,GAAG,EAAE,gBAAgB,EACrB,UAAU,CAAC,EAAE,gBAAgB,GAC9B,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAiEzC"}
|
package/dist/run.js
CHANGED
|
@@ -104,13 +104,14 @@ function scheduleRun(recipe, before, ctx) {
|
|
|
104
104
|
* Streaming version of scheduleRun that yields results as soon as each file is processed.
|
|
105
105
|
* This allows callers to print diffs immediately and free memory earlier.
|
|
106
106
|
*
|
|
107
|
-
* Accepts either an array or an async iterable of source files.
|
|
108
|
-
*
|
|
109
|
-
*
|
|
107
|
+
* Accepts either an array or an async iterable of source files. Files are processed
|
|
108
|
+
* immediately as they're yielded from the iterable, avoiding the need to collect all
|
|
109
|
+
* files into memory before starting work.
|
|
110
110
|
*
|
|
111
|
-
* For scanning recipes,
|
|
111
|
+
* For scanning recipes, each file is scanned immediately as it's pulled from the generator,
|
|
112
|
+
* then stored for the edit phase. The scan phase completes before any results are yielded.
|
|
112
113
|
*
|
|
113
|
-
* @param onProgress Optional callback for progress updates during
|
|
114
|
+
* @param onProgress Optional callback for progress updates during scanning and processing phases.
|
|
114
115
|
*/
|
|
115
116
|
function scheduleRunStreaming(recipe, before, ctx, onProgress) {
|
|
116
117
|
return __asyncGenerator(this, arguments, function* scheduleRunStreaming_1() {
|
|
@@ -118,39 +119,37 @@ function scheduleRunStreaming(recipe, before, ctx, onProgress) {
|
|
|
118
119
|
const cursor = (0, tree_1.rootCursor)();
|
|
119
120
|
const isScanning = yield __await(hasScanningRecipe(recipe));
|
|
120
121
|
if (isScanning) {
|
|
121
|
-
// For scanning recipes,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
122
|
+
// For scanning recipes, pull files from the generator and scan them immediately.
|
|
123
|
+
// Files are stored for the later edit phase.
|
|
124
|
+
const files = [];
|
|
125
|
+
const iterable = Array.isArray(before) ? before : before;
|
|
126
|
+
const knownTotal = Array.isArray(before) ? before.length : -1; // -1 = unknown total
|
|
127
|
+
// Phase 1: Pull files from generator and scan each immediately
|
|
128
|
+
let scanCount = 0;
|
|
129
|
+
try {
|
|
130
|
+
for (var _g = true, iterable_1 = __asyncValues(iterable), iterable_1_1; iterable_1_1 = yield __await(iterable_1.next()), _a = iterable_1_1.done, !_a; _g = true) {
|
|
131
|
+
_c = iterable_1_1.value;
|
|
132
|
+
_g = false;
|
|
133
|
+
const b = _c;
|
|
134
|
+
files.push(b);
|
|
135
|
+
scanCount++;
|
|
136
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress('scanning', scanCount, knownTotal, b.sourcePath);
|
|
137
|
+
// Scan this file immediately
|
|
138
|
+
yield __await(recurseRecipeList(recipe, b, (recipe, b2) => __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
if (recipe instanceof recipe_1.ScanningRecipe) {
|
|
140
|
+
return (yield recipe.scanner(recipe.accumulator(cursor, ctx))).visit(b2, ctx, cursor);
|
|
141
|
+
}
|
|
142
|
+
})));
|
|
134
143
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
finally { if (e_2) throw e_2.error; }
|
|
144
|
+
}
|
|
145
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
146
|
+
finally {
|
|
147
|
+
try {
|
|
148
|
+
if (!_g && !_a && (_b = iterable_1.return)) yield __await(_b.call(iterable_1));
|
|
141
149
|
}
|
|
150
|
+
finally { if (e_2) throw e_2.error; }
|
|
142
151
|
}
|
|
143
152
|
const totalFiles = files.length;
|
|
144
|
-
// Phase 1: Run scanners on all files
|
|
145
|
-
for (let i = 0; i < files.length; i++) {
|
|
146
|
-
const b = files[i];
|
|
147
|
-
onProgress === null || onProgress === void 0 ? void 0 : onProgress('scanning', i + 1, totalFiles, b.sourcePath);
|
|
148
|
-
yield __await(recurseRecipeList(recipe, b, (recipe, b2) => __awaiter(this, void 0, void 0, function* () {
|
|
149
|
-
if (recipe instanceof recipe_1.ScanningRecipe) {
|
|
150
|
-
return (yield recipe.scanner(recipe.accumulator(cursor, ctx))).visit(b2, ctx, cursor);
|
|
151
|
-
}
|
|
152
|
-
})));
|
|
153
|
-
}
|
|
154
153
|
// Phase 2: Collect generated files
|
|
155
154
|
const generated = (yield __await(recurseRecipeList(recipe, [], (recipe, generated) => __awaiter(this, void 0, void 0, function* () {
|
|
156
155
|
if (recipe instanceof recipe_1.ScanningRecipe) {
|
|
@@ -180,8 +179,8 @@ function scheduleRunStreaming(recipe, before, ctx, onProgress) {
|
|
|
180
179
|
// For non-scanning recipes, process files immediately as they come in
|
|
181
180
|
const iterable = Array.isArray(before) ? before : before;
|
|
182
181
|
try {
|
|
183
|
-
for (var _h = true,
|
|
184
|
-
_f =
|
|
182
|
+
for (var _h = true, iterable_2 = __asyncValues(iterable), iterable_2_1; iterable_2_1 = yield __await(iterable_2.next()), _d = iterable_2_1.done, !_d; _h = true) {
|
|
183
|
+
_f = iterable_2_1.value;
|
|
185
184
|
_h = false;
|
|
186
185
|
const b = _f;
|
|
187
186
|
const editedB = yield __await(recurseRecipeList(recipe, b, (recipe, b2) => __awaiter(this, void 0, void 0, function* () { return (yield recipe.editor()).visit(b2, ctx, cursor); })));
|
|
@@ -192,7 +191,7 @@ function scheduleRunStreaming(recipe, before, ctx, onProgress) {
|
|
|
192
191
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
193
192
|
finally {
|
|
194
193
|
try {
|
|
195
|
-
if (!_h && !_d && (_e =
|
|
194
|
+
if (!_h && !_d && (_e = iterable_2.return)) yield __await(_e.call(iterable_2));
|
|
196
195
|
}
|
|
197
196
|
finally { if (e_3) throw e_3.error; }
|
|
198
197
|
}
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,kCAMC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -319,9 +319,9 @@ function dedent(s) {
|
|
|
319
319
|
return '';
|
|
320
320
|
const str = start > 0 || end < s.length ? s.slice(start, end) : s;
|
|
321
321
|
const lines = str.split('\n');
|
|
322
|
-
//
|
|
323
|
-
//
|
|
324
|
-
const startLine =
|
|
322
|
+
// Always consider all lines for minIndent calculation
|
|
323
|
+
// If first line has content at column 0, minIndent will be 0 and no dedenting happens
|
|
324
|
+
const startLine = 0;
|
|
325
325
|
// Find minimum indentation
|
|
326
326
|
let minIndent = Infinity;
|
|
327
327
|
for (let i = startLine; i < lines.length; i++) {
|
|
@@ -344,8 +344,8 @@ function dedent(s) {
|
|
|
344
344
|
if (minIndent === Infinity || minIndent === 0) {
|
|
345
345
|
return lines.join('\n');
|
|
346
346
|
}
|
|
347
|
-
// Remove common indentation from lines
|
|
348
|
-
return lines.map(
|
|
347
|
+
// Remove common indentation from all lines
|
|
348
|
+
return lines.map(line => line.length >= minIndent ? line.slice(minIndent) : '').join('\n');
|
|
349
349
|
}
|
|
350
350
|
function dedentAfter(s) {
|
|
351
351
|
if (s !== null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewrite-test.js","sourceRoot":"","sources":["../../src/test/rewrite-test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAmQA,wBAoDC;AAED,kCAcC;AAiBD,kCAEC;AA1VD;;;;;;;;;;;;;;GAcG;AACH,sCAAiC;AACjC,4CAA8C;AAC9C,wCAAoD;AAEpD,oCAAsC;AAEtC,gCAA2C;AAC3C,gEAA0D;AAC1D,kCAA6C;AAC7C,gDAA8C;AAC9C,wCAA6D;AAC7D,8CAAgD;AAchD,MAAa,UAAU;IAAvB;QACI,+BAA0B,GAAY,IAAI,CAAA;QAE1C,WAAM,GAAW,IAAI,UAAU,EAAE,CAAA;QAEjC;;;WAGG;QACH,qBAAgB,GAAqB,IAAI,4BAAgB,EAAE,CAAC;QAE5D;;WAEG;QACH,2BAAsB,GAAqB,IAAI,CAAC,gBAAgB,CAAC;QAEzD,wBAAmB,GAA6C,EAAE,CAAA;IAqK9E,CAAC;IAnKG,SAAS,CAAM,IAAY,EAAE,OAA8B;QACvD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAC7C,CAAC;IAEK,UAAU,CAAC,GAAG,WAA6H;;;YAC7I,gDAAgD;YAChD,MAAM,cAAc,GAAsB,EAAE,CAAC;YAC7C,KAAK,MAAM,eAAe,IAAI,WAAW,EAAE,CAAC;gBACxC,IAAI,eAAe,IAAI,OAAQ,eAAuB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACzE,mCAAmC;oBACnC,IAAI,OAAQ,eAAuB,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,UAAU,EAAE,CAAC;;4BACvE,KAAyB,eAAA,oBAAA,cAAA,eAAiE,CAAA,CAAA,IAAA,sDAAE,CAAC;gCAApE,cAAiE;gCAAjE,WAAiE;gCAA/E,MAAM,IAAI,KAAA,CAAA;gCACjB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAC9B,CAAC;;;;;;;;;oBACL,CAAC;yBAAM,CAAC;wBACJ,iBAAiB;wBACjB,KAAK,MAAM,IAAI,IAAI,eAA4D,EAAE,CAAC;4BAC9E,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC9B,CAAC;oBACL,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,cAAc,CAAC,IAAI,CAAC,eAAkC,CAAC,CAAC;gBAC5D,CAAC;YACL,CAAC;YAED,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBACvD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACtB,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,OAAO,MAAM,CAAC;YAClB,CAAC,EAAE,EAA2C,CAAC,CAAC;YAEhD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,mDAAmD,CAAC,MAAM,CAAC,CAAC;gBACvE,IAAI,CAAC,0BAA0B,KAAI,MAAM,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA,CAAC;gBAClF,MAAM,SAAS,GAAG,CAAC,MAAM,IAAA,iBAAW,EAAC,IAAI,CAAC,MAAM,EAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAC3C,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5C,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC/D,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACtD,CAAC;YAED,8EAA8E;YAC9E,6DAA6D;YAC7D,IAAI;QACR,CAAC;KAAA;IAEa,qBAAqB,CAAC,MAAuC;;YACvE,KAAK,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;gBACnC,IAAI,UAAU,CAAC,IAAI,KAAK,4BAAc,EAAE,CAAC;oBACrC,MAAM,IAAI,KAAK,CAAC,uCAAuC;wBAClD,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAW,CAAC,oBAAoB,CAA2B,CAAC,OAAO,CAAC,CAAC;gBAC9H,CAAC;YACL,CAAC;QACL,CAAC;KAAA;IAEa,2BAA2B,CAAC,MAAuC;;YAC7E,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;gBACtC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,oBAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvE,CAAC;QACL,CAAC;KAAA;IAEa,yBAAyB,CAAC,KAAwB,EAAE,SAAmB,EAAE,MAAuC;;;YAC1H,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBACzD,MAAM,KAAK,GAAG,MAAA,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBAC7B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;wBACX,OAAO,CAAC,CAAC,MAAM,KAAK,YAAa,CAAC,CAAC,CAAC,CAAC;oBACzC,CAAC;yBAAM,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;wBACjB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAM,CAAC,UAAU,CAAC,CAAC;wBACrE,OAAO,CAAC,CAAC,YAAY,CAAC;oBAC1B,CAAC;gBACL,CAAC,CAAC,0CAAE,KAAK,CAAC;gBAEV,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACd,IAAI,KAAK,EAAE,CAAC;wBACR,MAAM,CAAC,MAAM,oBAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC;wBACtE,6FAA6F;wBAC7F,2CAA2C;oBAC/C,CAAC;oBACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACnB,MAAM,IAAI,CAAC,WAAW,CAAC,YAAa,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACxC,CAAC;YACL,CAAC;QACL,CAAC;KAAA;IAEa,oBAAoB,CAAC,KAAwB,EAAE,SAAmB;;YAC5E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACd,SAAS;gBACb,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBAC5E,CAAC;gBACD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,KAAK,0CAAE,UAAU,MAAK,IAAI,CAAC,IAAI,CAAA,EAAA,CAAC,CAAC;gBACrE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;KAAA;IAEa,WAAW,CAAC,IAAqB,EAAE,KAAkB;;YAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,2DAA2D,GAAG,IAAA,iBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YAC1G,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,IAAI,yBAAyB,EAAE,CAAC,KAAK,CAAC,KAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC3E,MAAM,WAAW,GAAG,MAAM,oBAAY,CAAC,KAAK,CAAC,KAAM,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;gBACjD,IAAI,CAAC,KAAoC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAe,CAAC;YACnF,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACW,KAAK,CAAC,KAAwB;;;YACxC,IAAI,SAAS,GAAG,IAAA,0BAAW,GAAE,CAAC;YAC9B,MAAM,MAAM,GAA8D,EAAE,CAAC;YAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBACtE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC;gBAC7E,CAAC;YACL,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACtD,MAAM,MAAM,GAAiB,EAAE,CAAC;;gBAChC,KAA+B,eAAA,KAAA,cAAA,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA,IAAA,sDAAE,CAAC;oBAAjE,cAA8D;oBAA9D,WAA8D;oBAAlF,MAAM,UAAU,KAAA,CAAA;oBACvB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5B,CAAC;;;;;;;;;YACD,MAAM,YAAY,GAAoC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtG,OAAO,MAAM,IAAA,eAAQ,EAAC,YAAY,EAAE,KAA2B,EAAE,0CAAtB,CAAC,IAAI,EAAE,UAAU,CAAC;gBACzD,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gBACzE,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;oBAClB,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC;wBACvB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC;wBACvB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;4BACvB,MAAM,IAAI,KAAK,CAAC,qGAAqG,CAAC,CAAC;wBAC3H,CAAC;wBACD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC1B,CAAC;oBACD,OAAO,CAAC,IAAI,EAAE,CAAe,CAAC,CAAC;gBACnC,CAAC;gBACD,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC9B,CAAC,CAAA,CAAC,CAAC;QACP,CAAC;KAAA;IAEa,mDAAmD,CAAC,MAAuC;;YACrG,MAAM,SAAS,GAAG,IAAI,yBAAyB,EAAE,CAAC;YAClD,KAAK,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;gBACnC,MAAM,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC;KAAA;CACJ;AArLD,gCAqLC;AAED,MAAM,yBAA0B,SAAQ,8BAAmC;IACjD,UAAU,CAAC,KAAc,EAAE,CAAmB;;;;;YAChE,MAAM,GAAG,GAAG,OAAM,UAAU,YAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,GAAG,CAAC;QACf,CAAC;KAAA;CACJ;AAED,MAAM,UAAW,SAAQ,eAAM;IAA/B;;QACI,SAAI,GAAG,sBAAsB,CAAC;QAC9B,gBAAW,GAAG,YAAY,CAAC;QAC3B,gBAAW,GAAG,mCAAmC,CAAC;IAKtD,CAAC;IAHS,MAAM;;YACR,OAAO,IAAA,qBAAW,GAAE,CAAC;QACzB,CAAC;KAAA;CACJ;AAID;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,MAAM,CAAC,CAAS;IAC5B,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAEjB,+CAA+C;IAC/C,IAAI,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,YAAY;IAEzD,oDAAoD;IACpD,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAE,OAAO;YACrB,GAAG,GAAG,CAAC,CAAC;YACR,MAAM;QACV,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;YAAE,MAAM,CAAE,kBAAkB;IACzD,CAAC;IAED,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,EAAE,CAAC;IAE5B,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9B,
|
|
1
|
+
{"version":3,"file":"rewrite-test.js","sourceRoot":"","sources":["../../src/test/rewrite-test.ts"],"names":[],"mappings":"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"}
|
package/dist/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
8.69.0-
|
|
1
|
+
8.69.0-20251208-174001
|
package/package.json
CHANGED
|
@@ -48,6 +48,72 @@ export function replaceLastWhitespace(space: J.Space, transform: (ws: string) =>
|
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Strips leading spaces and tabs from a string (but not newlines).
|
|
53
|
+
*/
|
|
54
|
+
export function stripLeadingIndent(s: string): string {
|
|
55
|
+
return s.replace(/^[ \t]*/, '');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Replaces the indentation after the last newline in a whitespace string.
|
|
60
|
+
* If there's no newline, returns just the new indent.
|
|
61
|
+
*/
|
|
62
|
+
export function replaceIndentAfterLastNewline(ws: string, newIndent: string): string {
|
|
63
|
+
const lastNewline = ws.lastIndexOf("\n");
|
|
64
|
+
return ws.substring(0, lastNewline + 1) + newIndent;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Checks if a Space contains any newlines (in whitespace or comment suffixes).
|
|
69
|
+
*/
|
|
70
|
+
export function spaceContainsNewline(space: J.Space | undefined): boolean {
|
|
71
|
+
if (!space) return false;
|
|
72
|
+
if (space.whitespace.includes("\n")) return true;
|
|
73
|
+
return space.comments.some(c => c.suffix.includes("\n"));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Normalizes indentation in an entire Space, including both whitespace and comment suffixes.
|
|
78
|
+
* Each newline followed by whitespace gets its indentation normalized to the target indent.
|
|
79
|
+
*
|
|
80
|
+
* @param space The Space to normalize
|
|
81
|
+
* @param targetIndent The indentation to use after newlines
|
|
82
|
+
* @returns The normalized Space, or the original if unchanged
|
|
83
|
+
*/
|
|
84
|
+
export function normalizeSpaceIndent(space: J.Space, targetIndent: string): J.Space {
|
|
85
|
+
let changed = false;
|
|
86
|
+
|
|
87
|
+
// Normalize whitespace
|
|
88
|
+
let newWhitespace = space.whitespace;
|
|
89
|
+
if (space.whitespace.includes("\n")) {
|
|
90
|
+
newWhitespace = replaceIndentAfterLastNewline(space.whitespace, targetIndent);
|
|
91
|
+
changed = changed || newWhitespace !== space.whitespace;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Normalize comment suffixes
|
|
95
|
+
const newComments = space.comments.map(comment => {
|
|
96
|
+
if (comment.suffix.includes("\n")) {
|
|
97
|
+
const newSuffix = replaceIndentAfterLastNewline(comment.suffix, targetIndent);
|
|
98
|
+
if (newSuffix !== comment.suffix) {
|
|
99
|
+
changed = true;
|
|
100
|
+
return {...comment, suffix: newSuffix};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return comment;
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
if (!changed) {
|
|
107
|
+
return space;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return {
|
|
111
|
+
...space,
|
|
112
|
+
whitespace: newWhitespace,
|
|
113
|
+
comments: newComments
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
51
117
|
/**
|
|
52
118
|
* Handles element removal from lists while preserving LST formatting.
|
|
53
119
|
* Automatically applies prefixes from removed elements to the next kept element,
|
package/src/javascript/format.ts
CHANGED
|
@@ -213,7 +213,19 @@ export class SpacesVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
213
213
|
public async visitContainer<T extends J>(container: J.Container<T>, p: P): Promise<J.Container<T>> {
|
|
214
214
|
const ret = await super.visitContainer(container, p) as J.Container<T>;
|
|
215
215
|
return produce(ret, draft => {
|
|
216
|
+
if (draft.elements.length > 0) {
|
|
217
|
+
// Apply beforeComma rule to all elements except the last
|
|
218
|
+
// (last element's after is before closing bracket, not a comma)
|
|
219
|
+
for (let i = 0; i < draft.elements.length - 1; i++) {
|
|
220
|
+
const afterWs = draft.elements[i].after.whitespace;
|
|
221
|
+
// Preserve newlines - only adjust when on same line
|
|
222
|
+
if (!afterWs.includes("\n")) {
|
|
223
|
+
draft.elements[i].after.whitespace = this.style.other.beforeComma ? " " : "";
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
216
227
|
if (draft.elements.length > 1) {
|
|
228
|
+
// Apply afterComma rule to elements after the first
|
|
217
229
|
for (let i = 1; i < draft.elements.length; i++) {
|
|
218
230
|
const currentWs = draft.elements[i].element.prefix.whitespace;
|
|
219
231
|
// Preserve original newlines - only adjust spacing when elements are on same line
|
|
@@ -235,10 +247,17 @@ export class SpacesVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
235
247
|
if (ne.elements.elements.length > 0) {
|
|
236
248
|
// Check if this is a multi-line export (any element's prefix has a newline)
|
|
237
249
|
const isMultiLine = ne.elements.elements.some(e => e.element.prefix.whitespace.includes("\n"));
|
|
238
|
-
// Only adjust brace spacing for single-line exports
|
|
239
250
|
if (!isMultiLine) {
|
|
251
|
+
// Single-line: adjust brace spacing
|
|
240
252
|
ne.elements.elements[0].element.prefix.whitespace = this.style.within.es6ImportExportBraces ? " " : "";
|
|
241
253
|
ne.elements.elements[ne.elements.elements.length - 1].after.whitespace = this.style.within.es6ImportExportBraces ? " " : "";
|
|
254
|
+
} else {
|
|
255
|
+
// Multi-line: apply beforeComma rule to last element's after (for trailing commas)
|
|
256
|
+
// If it has only spaces (no newline), it's the space before a trailing comma
|
|
257
|
+
const lastAfter = ne.elements.elements[ne.elements.elements.length - 1].after.whitespace;
|
|
258
|
+
if (!lastAfter.includes("\n") && lastAfter.trim() === "") {
|
|
259
|
+
ne.elements.elements[ne.elements.elements.length - 1].after.whitespace = this.style.other.beforeComma ? " " : "";
|
|
260
|
+
}
|
|
242
261
|
}
|
|
243
262
|
}
|
|
244
263
|
}
|
|
@@ -292,20 +311,33 @@ export class SpacesVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
292
311
|
const ret = await super.visitImportDeclaration(jsImport, p) as JS.Import;
|
|
293
312
|
return produce(ret, draft => {
|
|
294
313
|
if (draft.importClause) {
|
|
295
|
-
|
|
314
|
+
// Space after 'import' keyword:
|
|
315
|
+
// - If there's a default import (name), space goes in importClause.prefix
|
|
316
|
+
// - If typeOnly (import type ...), space goes in importClause.prefix (before 'type')
|
|
317
|
+
// - If only namedBindings (no default, no type), space goes in namedBindings.prefix (importClause.prefix is empty)
|
|
318
|
+
const hasDefaultImport = !!draft.importClause.name;
|
|
319
|
+
draft.importClause.prefix.whitespace = (hasDefaultImport || draft.importClause.typeOnly) ? " " : "";
|
|
296
320
|
if (draft.importClause.name) {
|
|
297
321
|
draft.importClause.name.after.whitespace = "";
|
|
298
322
|
}
|
|
299
323
|
if (draft.importClause.namedBindings) {
|
|
324
|
+
// Space before namedBindings - always needed
|
|
300
325
|
draft.importClause.namedBindings.prefix.whitespace = " ";
|
|
301
326
|
if (draft.importClause.namedBindings.kind == JS.Kind.NamedImports) {
|
|
302
327
|
const ni = draft.importClause.namedBindings as Draft<JS.NamedImports>;
|
|
303
328
|
// Check if this is a multi-line import (any element's prefix has a newline)
|
|
304
329
|
const isMultiLine = ni.elements.elements.some(e => e.element.prefix.whitespace.includes("\n"));
|
|
305
|
-
// Only adjust brace spacing for single-line imports
|
|
306
330
|
if (!isMultiLine) {
|
|
331
|
+
// Single-line: adjust brace spacing
|
|
307
332
|
ni.elements.elements[0].element.prefix.whitespace = this.style.within.es6ImportExportBraces ? " " : "";
|
|
308
333
|
ni.elements.elements[ni.elements.elements.length - 1].after.whitespace = this.style.within.es6ImportExportBraces ? " " : "";
|
|
334
|
+
} else {
|
|
335
|
+
// Multi-line: apply beforeComma rule to last element's after (for trailing commas)
|
|
336
|
+
// If it has only spaces (no newline), it's the space before a trailing comma
|
|
337
|
+
const lastAfter = ni.elements.elements[ni.elements.elements.length - 1].after.whitespace;
|
|
338
|
+
if (!lastAfter.includes("\n") && lastAfter.trim() === "") {
|
|
339
|
+
ni.elements.elements[ni.elements.elements.length - 1].after.whitespace = this.style.other.beforeComma ? " " : "";
|
|
340
|
+
}
|
|
309
341
|
}
|
|
310
342
|
}
|
|
311
343
|
}
|
|
@@ -452,6 +484,21 @@ export class SpacesVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
452
484
|
});
|
|
453
485
|
}
|
|
454
486
|
|
|
487
|
+
protected async visitTypeLiteral(typeLiteral: JS.TypeLiteral, p: P): Promise<J | undefined> {
|
|
488
|
+
const ret = await super.visitTypeLiteral(typeLiteral, p) as JS.TypeLiteral;
|
|
489
|
+
// Apply objectLiteralTypeBraces spacing for single-line type literals
|
|
490
|
+
const isSingleLine = !ret.members.end.whitespace.includes("\n") &&
|
|
491
|
+
ret.members.statements.every(s => !s.element.prefix.whitespace.includes("\n"));
|
|
492
|
+
if (isSingleLine && ret.members.statements.length > 0) {
|
|
493
|
+
return produce(ret, draft => {
|
|
494
|
+
const space = this.style.within.objectLiteralTypeBraces ? " " : "";
|
|
495
|
+
draft.members.statements[0].element.prefix.whitespace = space;
|
|
496
|
+
draft.members.end.whitespace = space;
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
return ret;
|
|
500
|
+
}
|
|
501
|
+
|
|
455
502
|
protected async visitUnary(unary: J.Unary, p: P): Promise<J | undefined> {
|
|
456
503
|
const ret = await super.visitUnary(unary, p) as J.Unary;
|
|
457
504
|
return produce(ret, draft => {
|
|
@@ -701,9 +748,10 @@ export class WrappingAndBracesVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
701
748
|
const b = await super.visitBlock(block, p) as J.Block;
|
|
702
749
|
return produce(b, draft => {
|
|
703
750
|
if (!draft.end.whitespace.includes("\n") && (draft.statements.length == 0 || !draft.statements[draft.statements.length - 1].after.whitespace.includes("\n"))) {
|
|
704
|
-
// Skip newline for object literals and empty lambda/function bodies
|
|
751
|
+
// Skip newline for object literals, type literals, and empty lambda/function bodies
|
|
705
752
|
const parentKind = this.cursor.parent?.value.kind;
|
|
706
753
|
if (parentKind !== J.Kind.NewClass &&
|
|
754
|
+
parentKind !== JS.Kind.TypeLiteral &&
|
|
707
755
|
!(draft.statements.length === 0 && (parentKind === J.Kind.Lambda || parentKind === J.Kind.MethodDeclaration))) {
|
|
708
756
|
draft.end = this.withNewlineSpace(draft.end);
|
|
709
757
|
}
|
|
@@ -1032,14 +1080,21 @@ export class BlankLinesVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
1032
1080
|
if (statements.length > 0) {
|
|
1033
1081
|
this.keepMaximumBlankLines(draft.body.statements[0].element, 0);
|
|
1034
1082
|
|
|
1083
|
+
const isInterface = draft.classKind.type === J.ClassDeclaration.Kind.Type.Interface;
|
|
1035
1084
|
for (let i = 1; i < statements.length; i++) {
|
|
1036
1085
|
const previousElement = statements[i - 1].element;
|
|
1037
1086
|
let currentElement = statements[i].element;
|
|
1038
1087
|
if (previousElement.kind == J.Kind.VariableDeclarations || currentElement.kind == J.Kind.VariableDeclarations) {
|
|
1039
|
-
|
|
1088
|
+
const fieldBlankLines = isInterface
|
|
1089
|
+
? this.style.minimum.aroundFieldInInterface ?? 0
|
|
1090
|
+
: this.style.minimum.aroundField;
|
|
1091
|
+
this.minimumBlankLines(currentElement, fieldBlankLines);
|
|
1040
1092
|
}
|
|
1041
1093
|
if (previousElement.kind == J.Kind.MethodDeclaration || currentElement.kind == J.Kind.MethodDeclaration) {
|
|
1042
|
-
|
|
1094
|
+
const methodBlankLines = isInterface
|
|
1095
|
+
? this.style.minimum.aroundMethodInInterface ?? 0
|
|
1096
|
+
: this.style.minimum.aroundMethod;
|
|
1097
|
+
this.minimumBlankLines(currentElement, methodBlankLines);
|
|
1043
1098
|
}
|
|
1044
1099
|
this.keepMaximumBlankLines(currentElement, this.style.keepMaximum.inCode);
|
|
1045
1100
|
draft.body.statements[i].element = currentElement;
|
|
@@ -1092,7 +1147,7 @@ export class BlankLinesVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
1092
1147
|
}
|
|
1093
1148
|
this.keepMaximumBlankLines(draft, this.style.keepMaximum.inCode);
|
|
1094
1149
|
}
|
|
1095
|
-
} else if (parent?.kind === J.Kind.Block && grandparent?.kind !== J.Kind.NewClass ||
|
|
1150
|
+
} else if (parent?.kind === J.Kind.Block && grandparent?.kind !== J.Kind.NewClass && grandparent?.kind !== JS.Kind.TypeLiteral ||
|
|
1096
1151
|
(parent?.kind === JS.Kind.CompilationUnit && (parent! as JS.CompilationUnit).statements[0].element.id != draft.id) ||
|
|
1097
1152
|
(parent?.kind === J.Kind.Case)) {
|
|
1098
1153
|
if (draft.kind != J.Kind.Case) {
|
|
@@ -1106,8 +1161,8 @@ export class BlankLinesVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
1106
1161
|
const b = await super.visitBlock(block, p) as J.Block;
|
|
1107
1162
|
return produce(b, draft => {
|
|
1108
1163
|
const parentKind = this.cursor.parent?.value.kind;
|
|
1109
|
-
// Skip newline
|
|
1110
|
-
if (parentKind != J.Kind.NewClass) {
|
|
1164
|
+
// Skip newline for object literals (NewClass) and type literals (TypeLiteral)
|
|
1165
|
+
if (parentKind != J.Kind.NewClass && parentKind != JS.Kind.TypeLiteral) {
|
|
1111
1166
|
draft.end = replaceLastWhitespace(draft.end, ws =>
|
|
1112
1167
|
ws.includes("\n") ? ws : ws.replace(/[ \t]+$/, '') + "\n"
|
|
1113
1168
|
);
|
package/src/javascript/parser.ts
CHANGED
|
@@ -3474,7 +3474,7 @@ export class JavaScriptParserVisitor {
|
|
|
3474
3474
|
statements: node.clauses.map(clause =>
|
|
3475
3475
|
this.rightPadded(
|
|
3476
3476
|
this.visit(clause),
|
|
3477
|
-
|
|
3477
|
+
emptySpace
|
|
3478
3478
|
)),
|
|
3479
3479
|
end: end
|
|
3480
3480
|
}
|
|
@@ -3722,7 +3722,17 @@ export class JavaScriptParserVisitor {
|
|
|
3722
3722
|
}
|
|
3723
3723
|
|
|
3724
3724
|
visitJsxText(node: ts.JsxText): J.Literal {
|
|
3725
|
-
|
|
3725
|
+
// For JsxText, we don't use mapLiteral because it would put whitespace into prefix.
|
|
3726
|
+
// In JSX, the text content (including leading/trailing whitespace) should be in value/valueSource.
|
|
3727
|
+
return {
|
|
3728
|
+
kind: J.Kind.Literal,
|
|
3729
|
+
id: randomId(),
|
|
3730
|
+
prefix: emptySpace,
|
|
3731
|
+
markers: emptyMarkers,
|
|
3732
|
+
value: node.text,
|
|
3733
|
+
valueSource: node.text,
|
|
3734
|
+
type: Type.Primitive.String
|
|
3735
|
+
};
|
|
3726
3736
|
}
|
|
3727
3737
|
|
|
3728
3738
|
visitJsxElement(node: ts.JsxElement): JSX.Tag {
|