@codegraft/core 0.1.0-beta.0 → 0.1.0-beta.10

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.
@@ -2,9 +2,13 @@ import type { GrammarId, LazyTransformer, RichNode, ZoneSplitter } from './types
2
2
  import type { NodeTypeOf, NodeTypeAllOf, FieldNameOf } from './generated/node-types.js';
3
3
  import { EditCollector } from './edit-collector.js';
4
4
  import { type Resolver } from './resolver.js';
5
+ import { Formatter } from './formatter.js';
5
6
  /** Shared per-transform state a {@link Collection} records edits into. */
6
7
  interface Session {
7
8
  collector: EditCollector;
9
+ /** The layout formatter every edit's rendering is delegated to (re-indent, container layout, line
10
+ * collapse). Always present — formatting is applied on every transform. */
11
+ formatter: Formatter;
8
12
  /** The binding resolver for `node`'s zone (JS/TS/TSX), or `null` if unsupported. */
9
13
  resolver(node: RichNode): Resolver | null;
10
14
  }
@@ -94,6 +98,10 @@ export declare class Collection<G extends GrammarId = GrammarId> {
94
98
  * - `separator`: also drop the trailing `,` of a list element, leaving no array hole / dangling comma.
95
99
  * - `wholeLines`: remove the whole lines the node spans (a full-line comment, a YAML entry), so no
96
100
  * blank line is left; `collapseBlankBefore` additionally absorbs a blank-line separator directly above.
101
+ *
102
+ * Under `format`, a node that owns its line(s) collapses that line automatically (no leftover blank),
103
+ * while an inline element is left untouched around the hole — so `wholeLines` is only needed to force
104
+ * whole-line removal where the codemod can't opt in per node (and for `collapseBlankBefore`).
97
105
  */
98
106
  remove(options?: {
99
107
  separator?: boolean;
@@ -114,10 +122,13 @@ export declare class Collection<G extends GrammarId = GrammarId> {
114
122
  insertAfter(text: TextArg<G>): this;
115
123
  /** Surround each selected node with `before`…`after`. */
116
124
  wrap(before: string, after: string): this;
117
- /** Append `text` as the last element of each container node (array/object/argument list/block):
118
- * after the last element with the right separator, or just inside an empty container. */
125
+ /** Append `text` as the last element of each container: a fresh indented line in a block/class
126
+ * body (re-indented under `format`), or after the last element of an array/object/argument list
127
+ * (comma-separated) or interface/object-type body (`;`-separated). Under `format` a multi-line
128
+ * container keeps its layout — the element lands on its own line at the elements' indent, with a
129
+ * trailing separator matching the container's style — while an inline one stays on one line. */
119
130
  append(text: string): this;
120
- /** Prepend `text` as the first element of each container node. */
131
+ /** Prepend `text` as the first element of each container — the mirror of {@link append}. */
121
132
  prepend(text: string): this;
122
133
  /** Insert a top-level import once: a no-op if a statement importing the same module already
123
134
  * exists. Placed after the last existing import, else before the first node. */
@@ -136,7 +147,10 @@ export declare class Collection<G extends GrammarId = GrammarId> {
136
147
  * trailing/inner comments are removed by their own range (residual whitespace is Prettier's job —
137
148
  * note that a same-line trailing comment often attaches as an `inner` comment). */
138
149
  removeComments(): this;
139
- /** Rewrite each node's first leading comment with `fn(its text)`; no-op where there is none. */
150
+ /** Rewrite each node's first leading comment with `fn(its text)`; no-op where there is none.
151
+ * Emptying it (`fn` returns `''`) drops the comment: under `format` its line collapses (no blank
152
+ * left behind, like `remove`/`dropDirective`), keeping any sibling comments and the node; off, the
153
+ * verbatim overwrite leaves the residual line for the downstream formatter. */
140
154
  mapLeadingComment(fn: (text: string) => string): this;
141
155
  /** The first leading comment matching `pattern`, as a `RegExpMatchArray` (use a capture group
142
156
  * to extract the expression), or `null`. Read it, then `dropDirective` to strip it. */
@@ -155,7 +169,8 @@ export declare class Collection<G extends GrammarId = GrammarId> {
155
169
  * edits, which are emitted via magic-string.
156
170
  *
157
171
  * `namespace` opts into the scan-gate (a source not mentioning it is returned untouched,
158
- * unparsed) and ensures the TypeScript grammar for `evaluate`'s string form.
172
+ * unparsed) and ensures the TypeScript grammar for `evaluate`'s string form. Formatting is applied
173
+ * on every transform; its style is detected per source and tunable via `transform`'s `FormatOptions`.
159
174
  */
160
175
  export declare function createCodemodTransformer<Ctx extends Record<string, unknown> = Record<string, unknown>, G extends GrammarId = GrammarId>(target: GrammarId | ZoneSplitter, codemod: (root: Collection<G>, context: Ctx) => void, options?: {
161
176
  namespace?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,QAAQ,EAGR,YAAY,EACb,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAa,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAIlG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAG7D,0EAA0E;AAC1E,UAAU,OAAO;IACf,SAAS,EAAE,aAAa,CAAA;IACxB,oFAAoF;IACpF,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAA;CAC1C;AAED;;;2CAG2C;AAC3C,KAAK,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AACrH;oGACoG;AACpG,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI;KAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;CAAE,CAAA;AAExG,oGAAoG;AACpG,KAAK,OAAO,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;AAE1F;;;;;;;;;;GAUG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;;gBAIzC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO;IAO/C;wEACoE;IACpE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAgBjE;gGAC4F;IAC5F,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IAY7C,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;IAIlE,mGAAmG;IACnG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAI3C,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC;IAIvB,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC;IAIzB,mEAAmE;IACnE,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC;IAIzB,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC;IAI5B,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC;IAI5B,8FAA8F;IAC9F,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAQ9C,kGAAkG;IAClG,YAAY,IAAI,UAAU,CAAC,CAAC,CAAC;IAI7B,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC;IAItB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IAKhC,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAKhD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IAI3C,KAAK,IAAI,QAAQ,EAAE;IAInB,sGAAsG;IACtG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO;IAItC,gDAAgD;IAChD,QAAQ,IAAI,MAAM,EAAE;IAMpB,IAAI,IAAI,IAAI,QAAQ,CAEnB;IACD,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,IAAI,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,CAE3B;IACD,gFAAgF;IAChF,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAI1C,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAMnC;8EAC0E;IAC1E,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAMlC,2FAA2F;IAC3F,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAMlC,mGAAmG;IACnG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAM1C,2FAA2F;IAC3F,eAAe,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAQvC;;;0FAGsF;IACtF,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;IASjE,6FAA6F;IAC7F,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAOnC;6EACyE;IACzE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI;IAUlF;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAgBpG;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAcjC,yFAAyF;IACzF,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAKpC,wFAAwF;IACxF,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAKnC,yDAAyD;IACzD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQzC;8FAC0F;IAC1F,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS1B,kEAAkE;IAClE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS3B;qFACiF;IACjF,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASrC,uFAAuF;IACvF,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKjC,oFAAoF;IACpF,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAIvC,oDAAoD;IACpD,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAMtC,mGAAmG;IACnG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKrC,yEAAyE;IACzE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKtC;;wFAEoF;IACpF,cAAc,IAAI,IAAI;IAWtB,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAQrD;4FACwF;IACxF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAQnD;wDACoD;IACpD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOpC;oFACgF;IAChF,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAkClE;AAmHD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,CAAC,SAAS,SAAS,GAAG,SAAS,EAE/B,MAAM,EAAE,SAAS,GAAG,YAAY,EAChC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,EACpD,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,eAAe,CAAC,GAAG,CAAC,CA8CtB"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,9 @@ import { attachComments, COMMENT_TYPES } from './comment-attachment.js';
5
5
  import { EditCollector } from './edit-collector.js';
6
6
  import { evaluate as evaluateNode } from './evaluate.js';
7
7
  import { createResolver } from './resolver.js';
8
+ import { resolveStyle } from './format.js';
9
+ import { Formatter } from './formatter.js';
10
+ import { trailingSeparator } from './containers.js';
8
11
  import { assert } from './assert.js';
9
12
  /**
10
13
  * A jscodeshift-style selection of CST nodes bound to one transform run. Query methods
@@ -184,7 +187,8 @@ export class Collection {
184
187
  /** Replace each selected node with `text`, or with the string a callback derives from it. */
185
188
  replaceWith(text) {
186
189
  for (const node of this.#nodes) {
187
- this.#session.collector.overwrite(node.documentStartIndex, node.documentEndIndex, this.#text(text, node));
190
+ const next = this.#session.formatter.reindent(this.#text(text, node), node.documentStartIndex);
191
+ this.#session.collector.overwrite(node.documentStartIndex, node.documentEndIndex, next);
188
192
  }
189
193
  return this;
190
194
  }
@@ -205,11 +209,16 @@ export class Collection {
205
209
  * - `separator`: also drop the trailing `,` of a list element, leaving no array hole / dangling comma.
206
210
  * - `wholeLines`: remove the whole lines the node spans (a full-line comment, a YAML entry), so no
207
211
  * blank line is left; `collapseBlankBefore` additionally absorbs a blank-line separator directly above.
212
+ *
213
+ * Under `format`, a node that owns its line(s) collapses that line automatically (no leftover blank),
214
+ * while an inline element is left untouched around the hole — so `wholeLines` is only needed to force
215
+ * whole-line removal where the codemod can't opt in per node (and for `collapseBlankBefore`).
208
216
  */
209
217
  remove(options) {
218
+ const removing = new Set(this.#nodes);
210
219
  for (const node of this.#nodes) {
211
220
  if (options?.wholeLines) {
212
- this.#session.collector.removeLines(node.documentStartIndex, node.documentEndIndex, options.collapseBlankBefore);
221
+ this.#session.formatter.removeWholeLines(node.documentStartIndex, node.documentEndIndex, options.collapseBlankBefore);
213
222
  continue;
214
223
  }
215
224
  let end = node.documentEndIndex;
@@ -218,7 +227,9 @@ export class Collection {
218
227
  if (comma)
219
228
  end = comma.documentEndIndex;
220
229
  }
221
- this.#session.collector.remove(node.documentStartIndex, end);
230
+ // Collapse the line when the node owned it, the way Prettier would have — and a blank line that
231
+ // would dangle against the container's edge once the rest of the removal set is gone.
232
+ this.#session.formatter.removeNode(node.documentStartIndex, end, blankCollapse(node, removing));
222
233
  }
223
234
  return this;
224
235
  }
@@ -236,21 +247,36 @@ export class Collection {
236
247
  this.#session.collector.remove(wrapper.documentStartIndex, wrapper.documentEndIndex);
237
248
  return this;
238
249
  }
239
- this.#session.collector.remove(wrapper.documentStartIndex, kept[0].documentStartIndex);
240
- this.#session.collector.remove(kept[kept.length - 1].documentEndIndex, wrapper.documentEndIndex);
250
+ const first = kept[0];
251
+ const last = kept[kept.length - 1];
252
+ this.#session.collector.remove(wrapper.documentStartIndex, first.documentStartIndex);
253
+ this.#session.collector.remove(last.documentEndIndex, wrapper.documentEndIndex);
254
+ // The kept statements drop a level: the delete above lets the first line inherit the wrapper's
255
+ // indent, but the continuation lines keep their deeper source indent — dedent them to match.
256
+ // Deferred so edits to the kept nodes in the same pass (an inner conditional collapsed away) win.
257
+ const formatter = this.#session.formatter;
258
+ const dedent = formatter.indentAt(first.documentStartIndex).length - formatter.indentAt(wrapper.documentStartIndex).length;
259
+ formatter.deferReindent(first.documentStartIndex, last.documentEndIndex, dedent);
241
260
  return this;
242
261
  }
243
262
  // ---- insertion ----
244
263
  /** Insert `text` (literal or derived per node) immediately before each selected node. */
245
264
  insertBefore(text) {
246
- for (const node of this.#nodes)
247
- this.#session.collector.insertLeft(node.documentStartIndex, this.#text(text, node));
265
+ for (const node of this.#nodes) {
266
+ const at = node.documentStartIndex;
267
+ let next = this.#session.formatter.reindent(this.#text(text, node), at);
268
+ // A trailing newline would leave the displaced node at column 0 — restore its indent.
269
+ if (next.endsWith('\n'))
270
+ next += this.#session.formatter.indentAt(at);
271
+ this.#session.collector.insertLeft(at, next);
272
+ }
248
273
  return this;
249
274
  }
250
275
  /** Insert `text` (literal or derived per node) immediately after each selected node. */
251
276
  insertAfter(text) {
252
- for (const node of this.#nodes)
253
- this.#session.collector.insertRight(node.documentEndIndex, this.#text(text, node));
277
+ for (const node of this.#nodes) {
278
+ this.#session.collector.insertRight(node.documentEndIndex, this.#session.formatter.reindent(this.#text(text, node), node.documentStartIndex));
279
+ }
254
280
  return this;
255
281
  }
256
282
  /** Surround each selected node with `before`…`after`. */
@@ -261,25 +287,20 @@ export class Collection {
261
287
  }
262
288
  return this;
263
289
  }
264
- /** Append `text` as the last element of each container node (array/object/argument list/block):
265
- * after the last element with the right separator, or just inside an empty container. */
290
+ /** Append `text` as the last element of each container: a fresh indented line in a block/class
291
+ * body (re-indented under `format`), or after the last element of an array/object/argument list
292
+ * (comma-separated) or interface/object-type body (`;`-separated). Under `format` a multi-line
293
+ * container keeps its layout — the element lands on its own line at the elements' indent, with a
294
+ * trailing separator matching the container's style — while an inline one stays on one line. */
266
295
  append(text) {
267
- for (const node of this.#nodes) {
268
- const elements = node.children;
269
- if (elements.length === 0)
270
- this.#session.collector.insertRight(openDelimiter(node).documentEndIndex, text);
271
- else
272
- this.#session.collector.insertRight(elements[elements.length - 1].documentEndIndex, separatorFor(node) + text);
273
- }
296
+ for (const node of this.#nodes)
297
+ this.#session.formatter.append(node, text);
274
298
  return this;
275
299
  }
276
- /** Prepend `text` as the first element of each container node. */
300
+ /** Prepend `text` as the first element of each container — the mirror of {@link append}. */
277
301
  prepend(text) {
278
- for (const node of this.#nodes) {
279
- const open = openDelimiter(node).documentEndIndex;
280
- const elements = node.children;
281
- this.#session.collector.insertRight(open, elements.length === 0 ? text : text + separatorFor(node));
282
- }
302
+ for (const node of this.#nodes)
303
+ this.#session.formatter.prepend(node, text);
283
304
  return this;
284
305
  }
285
306
  /** Insert a top-level import once: a no-op if a statement importing the same module already
@@ -289,9 +310,10 @@ export class Collection {
289
310
  const imports = this.find('import_statement').#nodes;
290
311
  if (imports.some((imp) => importSource(imp.text) === source))
291
312
  return this;
313
+ const eol = this.#session.formatter.eol;
292
314
  if (imports.length === 0)
293
- return this.prependToFile(statement + '\n');
294
- this.#session.collector.insertRight(imports[imports.length - 1].documentEndIndex, '\n' + statement);
315
+ return this.prependToFile(statement + eol);
316
+ this.#session.collector.insertRight(imports[imports.length - 1].documentEndIndex, eol + statement);
295
317
  return this;
296
318
  }
297
319
  /** Insert `text` at the very start of the first selected node (typically the file). */
@@ -310,9 +332,7 @@ export class Collection {
310
332
  // ---- comments ----
311
333
  /** Add a leading comment line above each selected node (pass the full comment, e.g. `// note`). */
312
334
  addLeadingComment(text) {
313
- for (const node of this.#nodes)
314
- this.#session.collector.insertLeft(node.documentStartIndex, text + '\n');
315
- return this;
335
+ return this.insertBefore(`${text}\n`);
316
336
  }
317
337
  /** Add a trailing comment after each selected node, on the same line. */
318
338
  addTrailingComment(text) {
@@ -334,12 +354,22 @@ export class Collection {
334
354
  }
335
355
  return this;
336
356
  }
337
- /** Rewrite each node's first leading comment with `fn(its text)`; no-op where there is none. */
357
+ /** Rewrite each node's first leading comment with `fn(its text)`; no-op where there is none.
358
+ * Emptying it (`fn` returns `''`) drops the comment: under `format` its line collapses (no blank
359
+ * left behind, like `remove`/`dropDirective`), keeping any sibling comments and the node; off, the
360
+ * verbatim overwrite leaves the residual line for the downstream formatter. */
338
361
  mapLeadingComment(fn) {
339
362
  for (const node of this.#nodes) {
340
363
  const comment = node.leadingComments[0];
341
- if (comment)
342
- this.#session.collector.overwrite(comment.documentStartIndex, comment.documentEndIndex, fn(comment.text));
364
+ if (!comment)
365
+ continue;
366
+ const next = fn(comment.text);
367
+ if (next === '') {
368
+ this.#session.formatter.removeNode(comment.documentStartIndex, comment.documentEndIndex);
369
+ }
370
+ else {
371
+ this.#session.collector.overwrite(comment.documentStartIndex, comment.documentEndIndex, next);
372
+ }
343
373
  }
344
374
  return this;
345
375
  }
@@ -358,8 +388,13 @@ export class Collection {
358
388
  dropDirective(pattern) {
359
389
  const node = this.#single();
360
390
  const comment = node.leadingComments.find((c) => pattern.test(c.text));
361
- if (comment)
362
- this.#session.collector.remove(comment.documentStartIndex, node.documentStartIndex);
391
+ if (!comment)
392
+ return this;
393
+ // The contract is "drop the directive and the gap up to the node" — so removal still runs to the
394
+ // node, taking any comments stacked under the directive with it. It collapses those whole lines
395
+ // but stops at the node's line, leaving the node's own line for a following `remove` to collapse
396
+ // independently: the two deletes abut at the node's line start and compose.
397
+ this.#session.formatter.removeLeadingTo(comment.documentStartIndex, node.documentStartIndex);
363
398
  return this;
364
399
  }
365
400
  /** Evaluate a string expression (e.g. a directive's captured text) against `context`. Parsed as
@@ -398,34 +433,6 @@ _a = Collection;
398
433
  function snippet(value) {
399
434
  return value instanceof Collection ? value.text : String(value);
400
435
  }
401
- /** The `,` token immediately after `node` among its parent's children (comments skipped), or
402
- * `null` — the separator `remove({ separator: true })` drops alongside a list element. */
403
- function trailingSeparator(node) {
404
- const siblings = node.parent?.allChildren;
405
- if (!siblings)
406
- return null;
407
- const i = siblings.indexOf(node);
408
- if (i === -1)
409
- return null;
410
- for (let j = i + 1; j < siblings.length; j++) {
411
- const sib = siblings[j];
412
- if (COMMENT_TYPES[sib.language].has(sib.type))
413
- continue;
414
- return sib.type === ',' ? sib : null;
415
- }
416
- return null;
417
- }
418
- /** The opening delimiter token (`[` / `{` / `(`) of a container node. */
419
- function openDelimiter(node) {
420
- const open = node.allChildren[0];
421
- assert(open, `container '${node.type}' has no opening delimiter`);
422
- return open;
423
- }
424
- const NEWLINE_CONTAINERS = new Set(['statement_block', 'class_body', 'program']);
425
- /** Separator between a container's elements: newline for statement lists, comma otherwise. */
426
- function separatorFor(node) {
427
- return NEWLINE_CONTAINERS.has(node.type) ? '\n' : ', ';
428
- }
429
436
  /** The module specifier of an import statement's source text, for idempotent `ensureImport`. */
430
437
  function importSource(statementText) {
431
438
  const match = statementText.match(/from\s*['"]([^'"]+)['"]/) ?? statementText.match(/import\s*['"]([^'"]+)['"]/);
@@ -478,6 +485,23 @@ function siblingAt(node, delta) {
478
485
  const i = siblings?.indexOf(node) ?? -1;
479
486
  return i === -1 ? null : (siblings[i + delta] ?? null);
480
487
  }
488
+ /** Which dangling blank lines a removed `node`'s line collapse should also absorb, given the whole
489
+ * set `removing`. `before` when every following sibling is removed too (the node ends up last, so a
490
+ * blank that preceded it would dangle before the container's close); `after` when every preceding
491
+ * one is (it ends up first, so a following blank would dangle after the open). */
492
+ function blankCollapse(node, removing) {
493
+ const siblings = node.parent?.children;
494
+ const i = siblings?.indexOf(node) ?? -1;
495
+ if (i === -1)
496
+ return { before: false, after: false };
497
+ const allRemoved = (from, to) => {
498
+ for (let j = from; j < to; j++)
499
+ if (!removing.has(siblings[j]))
500
+ return false;
501
+ return true;
502
+ };
503
+ return { before: allRemoved(i + 1, siblings.length), after: allRemoved(0, i) };
504
+ }
481
505
  // JS/TS scope boundaries — the structural notion behind `closestScope` (no resolver needed).
482
506
  const SCOPE_NODES = new Set([
483
507
  'program',
@@ -516,31 +540,39 @@ function rootOf(node) {
516
540
  * edits, which are emitted via magic-string.
517
541
  *
518
542
  * `namespace` opts into the scan-gate (a source not mentioning it is returned untouched,
519
- * unparsed) and ensures the TypeScript grammar for `evaluate`'s string form.
543
+ * unparsed) and ensures the TypeScript grammar for `evaluate`'s string form. Formatting is applied
544
+ * on every transform; its style is detected per source and tunable via `transform`'s `FormatOptions`.
520
545
  */
521
546
  export function createCodemodTransformer(target, codemod, options) {
522
547
  const namespace = options?.namespace;
523
548
  let pending = null;
524
549
  async function build() {
525
550
  await Parser.init();
551
+ // A ZoneSplitter registers its own grammar(s) first: its shell grammar may also be the grammar
552
+ // of one of its zones (Vue's `<template>` is parsed by the vue grammar `init()` loads), so it
553
+ // must be present before the `grammars` preload — whose entry for it is then a no-op.
554
+ if (typeof target !== 'string')
555
+ await target.init();
526
556
  const grammars = typeof target === 'string' ? [target] : target.grammars;
527
557
  for (const grammar of grammars)
528
558
  await Parser.loadGrammar(grammar);
529
- if (typeof target !== 'string')
530
- await target.init();
531
559
  if (namespace !== undefined)
532
560
  await Parser.loadGrammar('typescript');
533
- function run(source, context) {
561
+ function run(source, context, options) {
534
562
  const collector = new EditCollector(source);
535
563
  if (namespace !== undefined && !source.includes(namespace))
536
564
  return collector;
537
565
  const zones = splitAndParse(source, target);
538
566
  for (const zone of zones)
539
567
  attachComments(zone.tree);
568
+ // Every edit is rendered layout-aware: the file's indent unit / EOL are detected once (and
569
+ // overridable per apply via `options`).
570
+ const formatter = new Formatter(collector, source, resolveStyle(source, options));
540
571
  // One resolver per zone tree, built on first use (only if the codemod asks for scope).
541
572
  const resolvers = new Map();
542
573
  const session = {
543
574
  collector,
575
+ formatter,
544
576
  resolver(node) {
545
577
  const treeRoot = rootOf(node);
546
578
  if (!resolvers.has(treeRoot))
@@ -549,12 +581,13 @@ export function createCodemodTransformer(target, codemod, options) {
549
581
  },
550
582
  };
551
583
  codemod(new Collection(zones.map((zone) => zone.tree), session), context);
584
+ formatter.flush(); // apply deferred reindents (unwrap), now that explicit edits have won overlaps
552
585
  return collector;
553
586
  }
554
587
  return {
555
- transform: (source, context) => run(source, context).toString(),
588
+ transform: (source, context, options) => run(source, context, options).toString(),
556
589
  transformWithMap(source, context, options) {
557
- const collector = run(source, context);
590
+ const collector = run(source, context, options);
558
591
  return { code: collector.toString(), map: collector.generateMap(options?.source ?? 'input') };
559
592
  },
560
593
  };
@@ -1 +1 @@
1
- {"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"comment-attachment.d.ts","sourceRoot":"","sources":["../src/comment-attachment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAOhE,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAEnD"}
1
+ {"version":3,"file":"comment-attachment.d.ts","sourceRoot":"","sources":["../src/comment-attachment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAShE,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAEnD"}
@@ -14,6 +14,8 @@ export const COMMENT_TYPES = {
14
14
  html: new Set(['comment']),
15
15
  css: new Set(['comment']),
16
16
  yaml: new Set(['comment']),
17
+ // `.vue` `<template>` zone — tree-sitter-vue names HTML comments `comment` too.
18
+ vue: new Set(['comment']),
17
19
  };
18
20
  /**
19
21
  * Classify every comment among its parent's named siblings onto the relevant RichNode's
@@ -1 +1 @@
1
- {"version":3,"file":"comment-attachment.js","sourceRoot":"","sources":["../src/comment-attachment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comment-attachment.js","sourceRoot":"","sources":["../src/comment-attachment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { RichNode } from './types.js';
2
+ /** The opening delimiter token (`[` / `{` / `(`) of a container node. */
3
+ export declare function openDelimiter(node: RichNode): RichNode;
4
+ /** The separator token (a `,` by default, or `;` for a `;`-list) immediately after `node` among its
5
+ * parent's children (comments skipped), or `null` — the trailing separator `remove({ separator })`
6
+ * drops alongside a list element, and `append` extends to keep the container's style. */
7
+ export declare function trailingSeparator(node: RichNode, sep?: string): RichNode | null;
8
+ /** Whether `node` spans more than one line (its open and close sit on different rows) — the cue for
9
+ * `append`/`prepend` to lay an element on its own line rather than inline. */
10
+ export declare function isMultiline(node: RichNode): boolean;
11
+ /** Containers whose elements are separated by newlines (a block / class body), not commas. */
12
+ export declare const NEWLINE_CONTAINERS: Set<string>;
13
+ /** Containers whose members are separated/terminated by `;` (a TS interface / object type). */
14
+ export declare const SEMI_CONTAINERS: Set<string>;
15
+ //# sourceMappingURL=containers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAQ1C,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAItD;AAED;;0FAE0F;AAC1F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAM,GAAG,QAAQ,GAAG,IAAI,CAW5E;AAED;+EAC+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEnD;AAED,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,aAAwD,CAAA;AAEvF,+FAA+F;AAC/F,eAAO,MAAM,eAAe,aAA6C,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { COMMENT_TYPES } from './comment-attachment.js';
2
+ import { assert } from './assert.js';
3
+ // Structural queries over container nodes (arrays / objects / blocks / interface bodies …), shared by
4
+ // the Collection (routing, `remove({ separator })`) and the Formatter (layout). Kept here so neither
5
+ // has to import the other.
6
+ /** The opening delimiter token (`[` / `{` / `(`) of a container node. */
7
+ export function openDelimiter(node) {
8
+ const open = node.allChildren[0];
9
+ assert(open, `container '${node.type}' has no opening delimiter`);
10
+ return open;
11
+ }
12
+ /** The separator token (a `,` by default, or `;` for a `;`-list) immediately after `node` among its
13
+ * parent's children (comments skipped), or `null` — the trailing separator `remove({ separator })`
14
+ * drops alongside a list element, and `append` extends to keep the container's style. */
15
+ export function trailingSeparator(node, sep = ',') {
16
+ const siblings = node.parent?.allChildren;
17
+ if (!siblings)
18
+ return null;
19
+ const i = siblings.indexOf(node);
20
+ if (i === -1)
21
+ return null;
22
+ for (let j = i + 1; j < siblings.length; j++) {
23
+ const sib = siblings[j];
24
+ if (COMMENT_TYPES[sib.language].has(sib.type))
25
+ continue;
26
+ return sib.type === sep ? sib : null;
27
+ }
28
+ return null;
29
+ }
30
+ /** Whether `node` spans more than one line (its open and close sit on different rows) — the cue for
31
+ * `append`/`prepend` to lay an element on its own line rather than inline. */
32
+ export function isMultiline(node) {
33
+ return node.startPosition.row !== node.endPosition.row;
34
+ }
35
+ /** Containers whose elements are separated by newlines (a block / class body), not commas. */
36
+ export const NEWLINE_CONTAINERS = new Set(['statement_block', 'class_body', 'program']);
37
+ /** Containers whose members are separated/terminated by `;` (a TS interface / object type). */
38
+ export const SEMI_CONTAINERS = new Set(['interface_body', 'object_type']);
39
+ //# sourceMappingURL=containers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.js","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,sGAAsG;AACtG,qGAAqG;AACrG,2BAA2B;AAE3B,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;IAChC,MAAM,CAAC,IAAI,EAAE,cAAc,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAA;IACjE,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;0FAE0F;AAC1F,MAAM,UAAU,iBAAiB,CAAC,IAAc,EAAE,GAAG,GAAG,GAAG;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,CAAA;IACzC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAQ;QACvD,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;IACtC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;+EAC+E;AAC/E,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;AACxD,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAA;AAEvF,+FAA+F;AAC/F,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAA"}
@@ -1,12 +1,12 @@
1
1
  import type { SourceMap } from './types.js';
2
2
  /**
3
- * Collects edits against a source string and produces the transformed code (and, on
4
- * demand, a source map) via magic-string.
3
+ * A pure edit buffer: collects text edits against a source string and produces the transformed code
4
+ * (and, on demand, a source map) via magic-string. It knows nothing about lines, indentation, or
5
+ * formatting — that policy lives in the {@link Formatter}, which drives this buffer.
5
6
  *
6
- * Overlap is resolved **first-wins**: an edit overlapping one already accepted is
7
- * dropped silently — the text-layer side of outer-wins. Because edits are applied
8
- * through magic-string at their original offsets, the kept text keeps its original
9
- * position, so the generated map is precise.
7
+ * Overlap is resolved **first-wins**: an edit overlapping one already accepted is dropped silently —
8
+ * the text-layer side of outer-wins. Because edits are applied through magic-string at their original
9
+ * offsets, the kept text keeps its original position, so the generated map is precise.
10
10
  */
11
11
  export declare class EditCollector {
12
12
  #private;
@@ -15,11 +15,6 @@ export declare class EditCollector {
15
15
  overwrite(start: number, end: number, replacement: string): void;
16
16
  /** Delete `[start, end)`. */
17
17
  remove(start: number, end: number): void;
18
- /** Delete the whole lines `[start, end)` touches — from the start of `start`'s line (leading
19
- * indentation included) through the newline after `end`'s line, so nothing blank is left behind.
20
- * With `collapseBlankBefore`, also absorb whole blank lines immediately above (a separator before
21
- * a dropped block). */
22
- removeLines(start: number, end: number, collapseBlankBefore?: boolean): void;
23
18
  /** Insert `text` at `index`, attached to the left chunk. A point insertion: it claims no
24
19
  * range, so it composes with edits on either side (and survives removal of the right side). */
25
20
  insertLeft(index: number, text: string): void;