@openrewrite/rewrite 8.92.16 → 8.92.18

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 (254) hide show
  1. package/README.md +48 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/java/formatting-utils.d.ts +2 -1
  6. package/dist/java/formatting-utils.d.ts.map +1 -1
  7. package/dist/java/formatting-utils.js +4 -3
  8. package/dist/java/formatting-utils.js.map +1 -1
  9. package/dist/java/rpc.d.ts.map +1 -1
  10. package/dist/java/rpc.js +2 -0
  11. package/dist/java/rpc.js.map +1 -1
  12. package/dist/java/tree.d.ts +8 -0
  13. package/dist/java/tree.d.ts.map +1 -1
  14. package/dist/java/tree.js +11 -1
  15. package/dist/java/tree.js.map +1 -1
  16. package/dist/java/type.d.ts +7 -1
  17. package/dist/java/type.d.ts.map +1 -1
  18. package/dist/java/type.js +16 -1
  19. package/dist/java/type.js.map +1 -1
  20. package/dist/javascript/add-import.d.ts +27 -21
  21. package/dist/javascript/add-import.d.ts.map +1 -1
  22. package/dist/javascript/add-import.js +303 -143
  23. package/dist/javascript/add-import.js.map +1 -1
  24. package/dist/javascript/amd.d.ts.map +1 -1
  25. package/dist/javascript/amd.js +25 -10
  26. package/dist/javascript/amd.js.map +1 -1
  27. package/dist/javascript/autodetect.js +36 -45
  28. package/dist/javascript/autodetect.js.map +1 -1
  29. package/dist/javascript/binding.d.ts +6 -4
  30. package/dist/javascript/binding.d.ts.map +1 -1
  31. package/dist/javascript/binding.js +54 -18
  32. package/dist/javascript/binding.js.map +1 -1
  33. package/dist/javascript/comparator.d.ts +22 -5
  34. package/dist/javascript/comparator.d.ts.map +1 -1
  35. package/dist/javascript/comparator.js +120 -38
  36. package/dist/javascript/comparator.js.map +1 -1
  37. package/dist/javascript/format/format.d.ts +2 -0
  38. package/dist/javascript/format/format.d.ts.map +1 -1
  39. package/dist/javascript/format/format.js +11 -1
  40. package/dist/javascript/format/format.js.map +1 -1
  41. package/dist/javascript/format/tabs-and-indents-visitor.d.ts.map +1 -1
  42. package/dist/javascript/format/tabs-and-indents-visitor.js +31 -4
  43. package/dist/javascript/format/tabs-and-indents-visitor.js.map +1 -1
  44. package/dist/javascript/index.d.ts +4 -2
  45. package/dist/javascript/index.d.ts.map +1 -1
  46. package/dist/javascript/index.js +10 -1
  47. package/dist/javascript/index.js.map +1 -1
  48. package/dist/javascript/markers.d.ts +12 -0
  49. package/dist/javascript/markers.d.ts.map +1 -1
  50. package/dist/javascript/markers.js +81 -2
  51. package/dist/javascript/markers.js.map +1 -1
  52. package/dist/javascript/method-matcher.d.ts +13 -2
  53. package/dist/javascript/method-matcher.d.ts.map +1 -1
  54. package/dist/javascript/method-matcher.js +32 -19
  55. package/dist/javascript/method-matcher.js.map +1 -1
  56. package/dist/javascript/node-resolution-result.js +3 -2
  57. package/dist/javascript/node-resolution-result.js.map +1 -1
  58. package/dist/javascript/package-name.d.ts +6 -0
  59. package/dist/javascript/package-name.d.ts.map +1 -0
  60. package/dist/javascript/package-name.js +47 -0
  61. package/dist/javascript/package-name.js.map +1 -0
  62. package/dist/javascript/parser.d.ts +9 -0
  63. package/dist/javascript/parser.d.ts.map +1 -1
  64. package/dist/javascript/parser.js +185 -88
  65. package/dist/javascript/parser.js.map +1 -1
  66. package/dist/javascript/preconditions.d.ts +4 -1
  67. package/dist/javascript/preconditions.d.ts.map +1 -1
  68. package/dist/javascript/preconditions.js +7 -4
  69. package/dist/javascript/preconditions.js.map +1 -1
  70. package/dist/javascript/print.d.ts +10 -1
  71. package/dist/javascript/print.d.ts.map +1 -1
  72. package/dist/javascript/print.js +120 -77
  73. package/dist/javascript/print.js.map +1 -1
  74. package/dist/javascript/recipes/change-method-target-to-import.d.ts +29 -0
  75. package/dist/javascript/recipes/change-method-target-to-import.d.ts.map +1 -0
  76. package/dist/javascript/recipes/change-method-target-to-import.js +164 -0
  77. package/dist/javascript/recipes/change-method-target-to-import.js.map +1 -0
  78. package/dist/javascript/recipes/index.d.ts +1 -0
  79. package/dist/javascript/recipes/index.d.ts.map +1 -1
  80. package/dist/javascript/recipes/index.js +1 -0
  81. package/dist/javascript/recipes/index.js.map +1 -1
  82. package/dist/javascript/scope.d.ts +60 -16
  83. package/dist/javascript/scope.d.ts.map +1 -1
  84. package/dist/javascript/scope.js +596 -131
  85. package/dist/javascript/scope.js.map +1 -1
  86. package/dist/javascript/search/uses-method.d.ts +1 -1
  87. package/dist/javascript/search/uses-method.d.ts.map +1 -1
  88. package/dist/javascript/search/uses-method.js +2 -2
  89. package/dist/javascript/search/uses-method.js.map +1 -1
  90. package/dist/javascript/search/uses-type.d.ts +14 -1
  91. package/dist/javascript/search/uses-type.d.ts.map +1 -1
  92. package/dist/javascript/search/uses-type.js +24 -9
  93. package/dist/javascript/search/uses-type.js.map +1 -1
  94. package/dist/javascript/templating/bindings.d.ts +1 -1
  95. package/dist/javascript/templating/bindings.d.ts.map +1 -1
  96. package/dist/javascript/templating/bindings.js +10 -50
  97. package/dist/javascript/templating/bindings.js.map +1 -1
  98. package/dist/javascript/templating/comparator.d.ts +8 -11
  99. package/dist/javascript/templating/comparator.d.ts.map +1 -1
  100. package/dist/javascript/templating/comparator.js +12 -110
  101. package/dist/javascript/templating/comparator.js.map +1 -1
  102. package/dist/javascript/templating/engine.d.ts +34 -24
  103. package/dist/javascript/templating/engine.d.ts.map +1 -1
  104. package/dist/javascript/templating/engine.js +208 -115
  105. package/dist/javascript/templating/engine.js.map +1 -1
  106. package/dist/javascript/templating/pattern.d.ts +11 -5
  107. package/dist/javascript/templating/pattern.d.ts.map +1 -1
  108. package/dist/javascript/templating/pattern.js +86 -20
  109. package/dist/javascript/templating/pattern.js.map +1 -1
  110. package/dist/javascript/templating/placeholder-replacement.d.ts +34 -3
  111. package/dist/javascript/templating/placeholder-replacement.d.ts.map +1 -1
  112. package/dist/javascript/templating/placeholder-replacement.js +126 -60
  113. package/dist/javascript/templating/placeholder-replacement.js.map +1 -1
  114. package/dist/javascript/templating/precedence.d.ts +3 -1
  115. package/dist/javascript/templating/precedence.d.ts.map +1 -1
  116. package/dist/javascript/templating/precedence.js +28 -8
  117. package/dist/javascript/templating/precedence.js.map +1 -1
  118. package/dist/javascript/templating/template.d.ts +7 -6
  119. package/dist/javascript/templating/template.d.ts.map +1 -1
  120. package/dist/javascript/templating/template.js +31 -28
  121. package/dist/javascript/templating/template.js.map +1 -1
  122. package/dist/javascript/templating/types.d.ts +6 -3
  123. package/dist/javascript/templating/types.d.ts.map +1 -1
  124. package/dist/javascript/templating/utils.d.ts +10 -1
  125. package/dist/javascript/templating/utils.d.ts.map +1 -1
  126. package/dist/javascript/templating/utils.js +22 -3
  127. package/dist/javascript/templating/utils.js.map +1 -1
  128. package/dist/javascript/tree-debug.d.ts +2 -0
  129. package/dist/javascript/tree-debug.d.ts.map +1 -1
  130. package/dist/javascript/tree-debug.js +6 -0
  131. package/dist/javascript/tree-debug.js.map +1 -1
  132. package/dist/javascript/tsconfig.d.ts.map +1 -1
  133. package/dist/javascript/tsconfig.js +7 -17
  134. package/dist/javascript/tsconfig.js.map +1 -1
  135. package/dist/javascript/type-mapping.d.ts +35 -16
  136. package/dist/javascript/type-mapping.d.ts.map +1 -1
  137. package/dist/javascript/type-mapping.js +271 -252
  138. package/dist/javascript/type-mapping.js.map +1 -1
  139. package/dist/javascript/type-report-cli.d.ts +7 -0
  140. package/dist/javascript/type-report-cli.d.ts.map +1 -0
  141. package/dist/javascript/type-report-cli.js +129 -0
  142. package/dist/javascript/type-report-cli.js.map +1 -0
  143. package/dist/javascript/type-report.d.ts +61 -0
  144. package/dist/javascript/type-report.d.ts.map +1 -0
  145. package/dist/javascript/type-report.js +488 -0
  146. package/dist/javascript/type-report.js.map +1 -0
  147. package/dist/markers.d.ts +4 -0
  148. package/dist/markers.d.ts.map +1 -1
  149. package/dist/markers.js +8 -0
  150. package/dist/markers.js.map +1 -1
  151. package/dist/print.d.ts +6 -1
  152. package/dist/print.d.ts.map +1 -1
  153. package/dist/print.js +21 -7
  154. package/dist/print.js.map +1 -1
  155. package/dist/recipe.d.ts +5 -0
  156. package/dist/recipe.d.ts.map +1 -1
  157. package/dist/recipe.js +5 -0
  158. package/dist/recipe.js.map +1 -1
  159. package/dist/rewrite-javascript-version.txt +1 -1
  160. package/dist/rpc/java-rpc-client.d.ts +2 -0
  161. package/dist/rpc/java-rpc-client.d.ts.map +1 -1
  162. package/dist/rpc/java-rpc-client.js +1 -0
  163. package/dist/rpc/java-rpc-client.js.map +1 -1
  164. package/dist/rpc/queue.d.ts +24 -0
  165. package/dist/rpc/queue.d.ts.map +1 -1
  166. package/dist/rpc/queue.js +71 -11
  167. package/dist/rpc/queue.js.map +1 -1
  168. package/dist/rpc/request/get-object.d.ts +4 -0
  169. package/dist/rpc/request/get-object.d.ts.map +1 -1
  170. package/dist/rpc/request/get-object.js +23 -1
  171. package/dist/rpc/request/get-object.js.map +1 -1
  172. package/dist/rpc/request/parse.d.ts.map +1 -1
  173. package/dist/rpc/request/parse.js +3 -1
  174. package/dist/rpc/request/parse.js.map +1 -1
  175. package/dist/rpc/request/prepare-recipe.d.ts +3 -1
  176. package/dist/rpc/request/prepare-recipe.d.ts.map +1 -1
  177. package/dist/rpc/request/prepare-recipe.js +13 -6
  178. package/dist/rpc/request/prepare-recipe.js.map +1 -1
  179. package/dist/rpc/request/print.d.ts +8 -2
  180. package/dist/rpc/request/print.d.ts.map +1 -1
  181. package/dist/rpc/request/print.js +12 -9
  182. package/dist/rpc/request/print.js.map +1 -1
  183. package/dist/rpc/rewrite-rpc.d.ts +3 -2
  184. package/dist/rpc/rewrite-rpc.d.ts.map +1 -1
  185. package/dist/rpc/rewrite-rpc.js +9 -3
  186. package/dist/rpc/rewrite-rpc.js.map +1 -1
  187. package/dist/rpc/server.d.ts.map +1 -1
  188. package/dist/rpc/server.js +19 -5
  189. package/dist/rpc/server.js.map +1 -1
  190. package/dist/search/is-source-file.d.ts +1 -0
  191. package/dist/search/is-source-file.d.ts.map +1 -1
  192. package/dist/search/is-source-file.js +7 -2
  193. package/dist/search/is-source-file.js.map +1 -1
  194. package/dist/test/java-rpc.d.ts.map +1 -1
  195. package/dist/test/java-rpc.js +3 -0
  196. package/dist/test/java-rpc.js.map +1 -1
  197. package/dist/test/rewrite-test.d.ts +5 -0
  198. package/dist/test/rewrite-test.d.ts.map +1 -1
  199. package/dist/test/rewrite-test.js +14 -3
  200. package/dist/test/rewrite-test.js.map +1 -1
  201. package/package.json +4 -3
  202. package/src/index.ts +3 -1
  203. package/src/java/formatting-utils.ts +5 -4
  204. package/src/java/rpc.ts +2 -0
  205. package/src/java/tree.ts +15 -0
  206. package/src/java/type.ts +19 -2
  207. package/src/javascript/add-import.ts +338 -152
  208. package/src/javascript/amd.ts +28 -12
  209. package/src/javascript/autodetect.ts +32 -41
  210. package/src/javascript/binding.ts +64 -22
  211. package/src/javascript/comparator.ts +129 -43
  212. package/src/javascript/format/format.ts +9 -0
  213. package/src/javascript/format/tabs-and-indents-visitor.ts +30 -3
  214. package/src/javascript/index.ts +6 -3
  215. package/src/javascript/markers.ts +77 -5
  216. package/src/javascript/method-matcher.ts +34 -22
  217. package/src/javascript/node-resolution-result.ts +3 -2
  218. package/src/javascript/package-name.ts +45 -0
  219. package/src/javascript/parser.ts +200 -91
  220. package/src/javascript/preconditions.ts +7 -4
  221. package/src/javascript/print.ts +123 -76
  222. package/src/javascript/recipes/change-method-target-to-import.ts +178 -0
  223. package/src/javascript/recipes/index.ts +1 -0
  224. package/src/javascript/scope.ts +705 -169
  225. package/src/javascript/search/uses-method.ts +2 -2
  226. package/src/javascript/search/uses-type.ts +30 -9
  227. package/src/javascript/templating/bindings.ts +13 -38
  228. package/src/javascript/templating/comparator.ts +16 -127
  229. package/src/javascript/templating/engine.ts +236 -129
  230. package/src/javascript/templating/pattern.ts +107 -28
  231. package/src/javascript/templating/placeholder-replacement.ts +154 -62
  232. package/src/javascript/templating/precedence.ts +33 -11
  233. package/src/javascript/templating/template.ts +35 -30
  234. package/src/javascript/templating/types.ts +6 -3
  235. package/src/javascript/templating/utils.ts +24 -2
  236. package/src/javascript/tree-debug.ts +9 -0
  237. package/src/javascript/tsconfig.ts +7 -17
  238. package/src/javascript/type-mapping.ts +277 -255
  239. package/src/javascript/type-report-cli.ts +96 -0
  240. package/src/javascript/type-report.ts +575 -0
  241. package/src/markers.ts +8 -0
  242. package/src/print.ts +23 -8
  243. package/src/recipe.ts +6 -0
  244. package/src/rpc/java-rpc-client.ts +3 -0
  245. package/src/rpc/queue.ts +80 -7
  246. package/src/rpc/request/get-object.ts +24 -0
  247. package/src/rpc/request/parse.ts +4 -1
  248. package/src/rpc/request/prepare-recipe.ts +16 -6
  249. package/src/rpc/request/print.ts +12 -8
  250. package/src/rpc/rewrite-rpc.ts +16 -5
  251. package/src/rpc/server.ts +18 -6
  252. package/src/search/is-source-file.ts +8 -3
  253. package/src/test/java-rpc.ts +3 -0
  254. package/src/test/rewrite-test.ts +14 -3
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TemplateApplier = exports.TemplateEngine = void 0;
4
4
  exports.setTemplateSourceFileCache = setTemplateSourceFileCache;
5
5
  exports.clearTemplateCache = clearTemplateCache;
6
+ exports.opensWithBrace = opensWithBrace;
7
+ exports.replacedByObjectLiteral = replacedByObjectLiteral;
6
8
  /*
7
9
  * Copyright 2025 the original author or authors.
8
10
  * <p>
@@ -33,7 +35,6 @@ const uuid_1 = require("../../uuid");
33
35
  const dependency_workspace_1 = require("../dependency-workspace");
34
36
  const add_import_1 = require("../add-import");
35
37
  const scope_1 = require("../scope");
36
- const java_2 = require("../../java");
37
38
  const markers_1 = require("../../markers");
38
39
  /**
39
40
  * Simple LRU (Least Recently Used) cache implementation.
@@ -144,7 +145,7 @@ class TemplateCache {
144
145
  // Parse and cache (workspace only needed during parsing)
145
146
  // Use templateSourceFileCache if configured for ~3.2x speedup on dependency file parsing
146
147
  const parser = templateParser(workspaceDir, types);
147
- const parseGenerator = parser.parse({ text: fullTemplateString, sourcePath: 'template.tsx' });
148
+ const parseGenerator = parser.parse({ text: fullTemplateString, sourcePath: `${utils_1.TEMPLATE_MODULE}.tsx` });
148
149
  cu = (await parseGenerator.next()).value;
149
150
  this.cache.set(key, cu);
150
151
  return cu;
@@ -185,21 +186,10 @@ function parseFailureReason(cu) {
185
186
  * Not exported from index, so only visible within the templating module.
186
187
  */
187
188
  class TemplateEngine {
188
- /**
189
- * Gets the parsed and extracted template tree (before value substitution).
190
- * This is the cacheable part of template processing.
191
- *
192
- * @param templateParts The string parts of the template
193
- * @param parameters The parameters between the string parts
194
- * @param contextStatements Context declarations (imports, types, etc.) to prepend for type attribution
195
- * @param dependencies NPM dependencies for type attribution
196
- * @returns A Promise resolving to the extracted template AST
197
- */
198
189
  /** The template parsed with its context, which is what gives its code types to attribute against. */
199
- static async parseWithContext(templateParts, parameters, contextStatements, dependencies, types) {
200
- // A capture's declared type reaches the parse as a declaration, so it belongs with context.
201
- const preamble = TemplateEngine.parameterPreamble(parameters);
202
- const templateString = TemplateEngine.buildTemplateString(templateParts, parameters);
190
+ static async parseWithContext(templateParts, parameters, contextStatements, dependencies, types, expression = false, preamble = TemplateEngine.parameterPreamble(parameters)) {
191
+ // A capture's type reaches the parse as a declaration, so it belongs with context.
192
+ const templateString = TemplateEngine.buildTemplateString(templateParts, parameters, expression);
203
193
  const contextWithPreamble = preamble.length > 0
204
194
  ? [...contextStatements, ...preamble]
205
195
  : contextStatements;
@@ -217,31 +207,40 @@ class TemplateEngine {
217
207
  return cu;
218
208
  }
219
209
  /**
220
- * The modules the template's context binds, for the caller to bind in the file being edited.
221
- * An `import` or `require` states one; anything else — a `declare`, a helper signature — types
222
- * the template without asking for a binding.
210
+ * The modules the template's context binds and its code reads, for the caller to bind in the
211
+ * file being edited. An `import` or `require` states one; anything else — a `declare`, a helper
212
+ * signature — types the template without asking for a binding.
223
213
  */
224
214
  static async getContextBindings(templateParts, parameters, contextStatements = [], dependencies = {}, types) {
225
- const cu = await TemplateEngine.parseWithContext(templateParts, parameters, contextStatements, dependencies, types);
226
- // The template's own code is the last statement, so everything ahead of it is context.
215
+ // The bindings are the context's alone, so either reading of code opening with `{` serves
216
+ const cu = await TemplateEngine.parseWithContext(templateParts, parameters, contextStatements, dependencies, types)
217
+ .catch(e => opensWithBrace(templateParts) ?
218
+ TemplateEngine.parseWithContext(templateParts, parameters, contextStatements, dependencies, types, true) :
219
+ Promise.reject(e));
220
+ // The template's own code is the last statement, so everything ahead of it is context, and a
221
+ // name the code reads without binding it itself resolves to the context's module-scope binding.
227
222
  const context = Object.assign(Object.assign({}, cu), { statements: cu.statements.slice(0, -1) });
228
- const attributed = new Set();
229
- (0, scope_1.walk)(context.statements, node => {
230
- if ((0, java_2.isIdentifier)(node) && (node.type !== undefined || node.fieldType !== undefined)) {
231
- attributed.add(node.simpleName);
232
- }
233
- return true;
234
- });
235
- return (0, add_import_1.moduleScopeBindings)(context)
236
- .filter(b => b.module !== undefined)
237
- .map(b => (Object.assign(Object.assign({}, b), { attributed: attributed.has(b.name) })));
223
+ const referenced = (0, scope_1.namesReferencedWithin)(cu.statements[cu.statements.length - 1]);
224
+ return (0, add_import_1.moduleScopeBindings)(context).filter(b => b.module !== undefined && referenced.has(b.name));
238
225
  }
239
- static async getTemplateTree(templateParts, parameters, contextStatements = [], dependencies = {}, types) {
240
- const cu = await TemplateEngine.parseWithContext(templateParts, parameters, contextStatements, dependencies, types);
226
+ /**
227
+ * Gets the parsed and extracted template tree (before value substitution).
228
+ * This is the cacheable part of template processing.
229
+ *
230
+ * @param templateParts The string parts of the template
231
+ * @param parameters The parameters between the string parts
232
+ * @param contextStatements Context declarations (imports, types, etc.) to prepend for type attribution
233
+ * @param dependencies NPM dependencies for type attribution
234
+ * @param expression Whether to parse the code as an expression
235
+ * @param preamble The parameters' declarations, from {@link parameterPreamble}
236
+ * @returns A Promise resolving to the extracted template AST
237
+ */
238
+ static async getTemplateTree(templateParts, parameters, contextStatements = [], dependencies = {}, types, expression = false, preamble) {
239
+ const cu = await TemplateEngine.parseWithContext(templateParts, parameters, contextStatements, dependencies, types, expression, preamble);
241
240
  // The template code is always the last statement (after context + preamble)
242
241
  const lastStatement = cu.statements[cu.statements.length - 1].element;
243
242
  // Extract from wrapper using shared utility
244
- const extracted = utils_1.PlaceholderUtils.extractFromWrapper(lastStatement, 'Template');
243
+ const extracted = utils_1.PlaceholderUtils.extractFromWrapper(lastStatement, 'Template', expression);
245
244
  return (0, mutative_1.create)(extracted, _ => { });
246
245
  }
247
246
  /**
@@ -256,10 +255,10 @@ class TemplateEngine {
256
255
  * @param wrappersMap Map of capture names to J.RightPadded wrappers (for preserving markers)
257
256
  * @param format Whether to fit the result to where it lands
258
257
  * @param renames Local names for the template's declared bindings, keyed as declared
259
- * @param modules The module each declared binding names, keyed as declared
258
+ * @param patternPrefixes The matched pattern's capture prefixes, given only under `format: false`
260
259
  * @returns A Promise resolving to the generated AST node
261
260
  */
262
- static async applyTemplateFromAst(ast, parameters, cursor, coordinates, values = new Map(), wrappersMap = new Map(), format = true, renames = {}, modules = {}) {
261
+ static async applyTemplateFromAst(ast, parameters, cursor, coordinates, values = new Map(), wrappersMap = new Map(), format = true, renames = {}, patternPrefixes) {
263
262
  // Create substitutions map for placeholders
264
263
  const substitutions = new Map();
265
264
  for (let i = 0; i < parameters.length; i++) {
@@ -269,10 +268,10 @@ class TemplateEngine {
269
268
  // Before substitution, so that ids carried over from the source tree survive this pass
270
269
  const fresh = await (0, utils_1.randomizeIds)(ast);
271
270
  const bound = Object.keys(renames).length > 0
272
- ? await (0, bindings_1.renameBindings)(fresh.tree, renames, modules)
271
+ ? await (0, bindings_1.renameBindings)(fresh.tree, renames)
273
272
  : fresh.tree;
274
273
  // Unsubstitute placeholders with actual parameter values and match results
275
- const visitor = new placeholder_replacement_1.PlaceholderReplacementVisitor(substitutions, values, wrappersMap);
274
+ const visitor = new placeholder_replacement_1.PlaceholderReplacementVisitor(substitutions, values, wrappersMap, patternPrefixes);
276
275
  const unsubstitutedAst = (await visitor.visit(bound, null));
277
276
  // An id may only be kept where the node answering to it is leaving the tree, which is the
278
277
  // subtree this application replaces. A parameter named twice, or spliced in from somewhere
@@ -285,7 +284,7 @@ class TemplateEngine {
285
284
  }
286
285
  const uniqueAst = await (0, utils_1.retainIds)(unsubstitutedAst, retainable);
287
286
  // Apply the template to the current AST
288
- return new TemplateApplier(cursor, coordinates, uniqueAst, format).apply();
287
+ return new TemplateApplier(cursor, coordinates, uniqueAst, format, visitor.substituted).apply();
289
288
  }
290
289
  /**
291
290
  * Generates type preamble declarations for captures/parameters with type annotations.
@@ -316,59 +315,42 @@ class TemplateEngine {
316
315
  }
317
316
  return preamble;
318
317
  }
319
- /** The parameter counterpart of {@link capturePreamble}. */
320
- static parameterPreamble(parameters) {
318
+ /**
319
+ * The parameter counterpart of {@link capturePreamble}. A capture without a declared type takes
320
+ * the type of the expression bound to it, as an expression parameter takes its own. A variadic
321
+ * capture binds a list, which has no one type to declare.
322
+ */
323
+ static parameterPreamble(parameters, values) {
321
324
  const preamble = [];
322
325
  for (let i = 0; i < parameters.length; i++) {
323
- const param = parameters[i].value;
324
- const placeholder = `${utils_1.PlaceholderUtils.PLACEHOLDER_PREFIX}${i}__`;
325
- // Check for Capture (could be a Proxy, so check for symbol property)
326
- const isCapture = param instanceof capture_1.CaptureImpl ||
327
- (param && typeof param === 'object' && param[capture_1.CAPTURE_NAME_SYMBOL]);
328
- const isCaptureValue = param instanceof capture_1.CaptureValue;
329
- const isTreeArray = Array.isArray(param) && param.length > 0 && (0, __1.isTree)(param[0]);
330
- if (isCapture) {
331
- const captureType = param[capture_1.CAPTURE_TYPE_SYMBOL];
332
- if (captureType) {
333
- const typeString = typeof captureType === 'string'
334
- ? captureType
335
- : this.typeToString(captureType);
336
- // Only add preamble if we have a concrete type (not 'any')
337
- if (typeString !== 'any') {
338
- preamble.push(`let ${placeholder}: ${typeString};`);
339
- }
340
- }
341
- }
342
- else if (isCaptureValue) {
343
- // For CaptureValue, check if the root capture has a type
344
- const rootCapture = param.rootCapture;
345
- if (rootCapture) {
346
- const captureType = rootCapture[capture_1.CAPTURE_TYPE_SYMBOL];
347
- if (captureType) {
348
- const typeString = typeof captureType === 'string'
349
- ? captureType
350
- : this.typeToString(captureType);
351
- // Only add preamble if we have a concrete type (not 'any')
352
- if (typeString !== 'any') {
353
- preamble.push(`let ${placeholder}: ${typeString};`);
354
- }
355
- }
356
- }
357
- }
358
- else if ((0, __1.isTree)(param) && !isTreeArray) {
359
- // For J elements, derive type from the element's type property if it exists
360
- const jElement = param;
361
- if (jElement.type) {
362
- const typeString = this.typeToString(jElement.type);
363
- // Only add preamble if we have a concrete type (not 'any')
364
- if (typeString !== 'any') {
365
- preamble.push(`let ${placeholder}: ${typeString};`);
366
- }
367
- }
326
+ const type = this.parameterType(parameters[i].value, values);
327
+ const typeString = typeof type === 'string' ? type : type && this.typeToString(type);
328
+ if (typeString && typeString !== 'any') {
329
+ preamble.push(`let ${utils_1.PlaceholderUtils.PLACEHOLDER_PREFIX}${i}__: ${typeString};`);
368
330
  }
369
331
  }
370
332
  return preamble;
371
333
  }
334
+ static parameterType(param, values) {
335
+ var _a;
336
+ // A Capture may be a Proxy, so it is recognised by its symbol
337
+ if (param instanceof capture_1.CaptureImpl || (param && typeof param === 'object' && param[capture_1.CAPTURE_NAME_SYMBOL])) {
338
+ return (_a = param[capture_1.CAPTURE_TYPE_SYMBOL]) !== null && _a !== void 0 ? _a : this.treeType(values === null || values === void 0 ? void 0 : values.get(param[capture_1.CAPTURE_NAME_SYMBOL] || param.getName()));
339
+ }
340
+ else if (param instanceof capture_1.CaptureValue) {
341
+ // The root's declared type is the root's alone, not that of a property or element of it
342
+ return values && this.treeType(param.resolve(values));
343
+ }
344
+ else if (param instanceof capture_1.TemplateParamImpl) {
345
+ return this.treeType(values === null || values === void 0 ? void 0 : values.get(param.name));
346
+ }
347
+ return this.treeType(param);
348
+ }
349
+ static treeType(value) {
350
+ // A declaration's type is that of what it declares, which is no value the placeholder holds
351
+ return (0, __1.isTree)(value) && ((0, parser_utils_1.isExpression)(value) || !(0, parser_utils_1.isStatement)(value)) ?
352
+ java_1.TypedTree.getType(value) : undefined;
353
+ }
372
354
  /**
373
355
  * Builds a template string with parameter placeholders.
374
356
  * RawCode parameters are spliced directly into the template at construction time.
@@ -378,7 +360,7 @@ class TemplateEngine {
378
360
  * @param parameters The parameters between the string parts
379
361
  * @returns The template string
380
362
  */
381
- static buildTemplateString(templateParts, parameters) {
363
+ static buildTemplateString(templateParts, parameters, expression) {
382
364
  let result = '';
383
365
  for (let i = 0; i < templateParts.length; i++) {
384
366
  result += templateParts[i];
@@ -398,7 +380,7 @@ class TemplateEngine {
398
380
  }
399
381
  // Always wrap in function body - let the parser decide what it is,
400
382
  // then we'll extract intelligently based on what was parsed
401
- return `function ${utils_1.WRAPPER_FUNCTION_NAME}() { ${(0, utils_1.dedentTemplate)(result)} }`;
383
+ return (0, utils_1.wrapCode)((0, utils_1.dedentTemplate)(result), expression);
402
384
  }
403
385
  /**
404
386
  * Converts a Type instance to a TypeScript type string.
@@ -454,9 +436,10 @@ class TemplateEngine {
454
436
  * @param captures The captures between the string parts (can include RawCode)
455
437
  * @param contextStatements Context declarations (imports, types, etc.) to prepend for type attribution
456
438
  * @param dependencies NPM dependencies for type attribution
439
+ * @param expression Whether to parse the code as an expression
457
440
  * @returns A Promise resolving to the extracted pattern AST
458
441
  */
459
- static async getPatternTree(templateParts, captures, contextStatements = [], dependencies = {}, types) {
442
+ static async getPatternTree(templateParts, captures, contextStatements = [], dependencies = {}, types, expression = false) {
460
443
  const preamble = TemplateEngine.capturePreamble(captures);
461
444
  // Build the template string with placeholders for captures and raw code
462
445
  let result = '';
@@ -477,7 +460,7 @@ class TemplateEngine {
477
460
  }
478
461
  // Always wrap in function body - let the parser decide what it is,
479
462
  // then we'll extract intelligently based on what was parsed
480
- const templateString = `function ${utils_1.WRAPPER_FUNCTION_NAME}() { ${result} }`;
463
+ const templateString = (0, utils_1.wrapCode)(result, expression);
481
464
  // Add preamble to context statements (so they're skipped during extraction)
482
465
  const contextWithPreamble = preamble.length > 0
483
466
  ? [...contextStatements, ...preamble]
@@ -488,7 +471,7 @@ class TemplateEngine {
488
471
  // The pattern code is always the last statement (after context + preamble)
489
472
  const lastStatement = cu.statements[cu.statements.length - 1].element;
490
473
  // Extract from wrapper using shared utility
491
- return utils_1.PlaceholderUtils.extractFromWrapper(lastStatement, 'Pattern');
474
+ return utils_1.PlaceholderUtils.extractFromWrapper(lastStatement, 'Pattern', expression);
492
475
  }
493
476
  /**
494
477
  * Binds a pattern tree to a set of captures by attaching a CaptureMarker, carrying that
@@ -603,16 +586,62 @@ class MarkerAttachmentVisitor extends __2.JavaScriptVisitor {
603
586
  name: visitedName
604
587
  });
605
588
  }
589
+ /**
590
+ * Promotes a variadic capture's marker from a shorthand property's name to the property, so
591
+ * that `{${props}}` matches the object literal's properties as a sequence. A scalar capture
592
+ * stays on the name, binding the identifier a shorthand property consists of.
593
+ */
594
+ async visitPropertyAssignment(propertyAssignment, p) {
595
+ const visited = await super.visitPropertyAssignment(propertyAssignment, p);
596
+ const nameMarker = visited.initializer === undefined ? utils_1.PlaceholderUtils.getCaptureMarker(visited.name) : undefined;
597
+ if (!(nameMarker === null || nameMarker === void 0 ? void 0 : nameMarker.variadicOptions)) {
598
+ return visited;
599
+ }
600
+ return (0, __1.updateIfChanged)(visited, {
601
+ name: Object.assign(Object.assign({}, visited.name), { markers: Object.assign(Object.assign({}, visited.name.markers), { markers: visited.name.markers.markers.filter(m => m !== nameMarker) }) }),
602
+ markers: Object.assign(Object.assign({}, visited.markers), { markers: [...visited.markers.markers, nameMarker] }),
603
+ });
604
+ }
605
+ }
606
+ // FIXME: This is a heuristic to determine if the parent expects a statement child
607
+ function expectsStatement(parentTree) {
608
+ return parentTree.kind === java_1.J.Kind.Block ||
609
+ parentTree.kind === java_1.J.Kind.Case ||
610
+ parentTree.kind === java_1.J.Kind.DoWhileLoop ||
611
+ parentTree.kind === java_1.J.Kind.ForEachLoop ||
612
+ parentTree.kind === java_1.J.Kind.ForLoop ||
613
+ parentTree.kind === java_1.J.Kind.If ||
614
+ parentTree.kind === java_1.J.Kind.IfElse ||
615
+ parentTree.kind === java_1.J.Kind.WhileLoop ||
616
+ parentTree.kind === __2.JS.Kind.CompilationUnit ||
617
+ parentTree.kind === __2.JS.Kind.ForInLoop;
618
+ }
619
+ /** Whether the code opens with `{`, which is a block where a statement goes and an object literal elsewhere. */
620
+ function opensWithBrace(templateParts) {
621
+ return templateParts[0].trimStart().startsWith('{');
622
+ }
623
+ /** Whether code opening with `{` that replaces `tree`, which `cursor` points at, is an object literal. */
624
+ function replacedByObjectLiteral(tree, cursor) {
625
+ var _a;
626
+ if (tree.kind === java_1.J.Kind.Block) {
627
+ return false;
628
+ }
629
+ else if (!(0, parser_utils_1.isStatement)(tree)) {
630
+ return true;
631
+ }
632
+ const parentTree = (_a = cursor.parentTree()) === null || _a === void 0 ? void 0 : _a.value;
633
+ return parentTree !== undefined && !expectsStatement(parentTree);
606
634
  }
607
635
  /**
608
636
  * Helper class for applying a template to an AST.
609
637
  */
610
638
  class TemplateApplier {
611
- constructor(cursor, coordinates, ast, shouldFormat = true) {
639
+ constructor(cursor, coordinates, ast, shouldFormat = true, substituted = false) {
612
640
  this.cursor = cursor;
613
641
  this.coordinates = coordinates;
614
642
  this.ast = ast;
615
643
  this.shouldFormat = shouldFormat;
644
+ this.substituted = substituted;
616
645
  }
617
646
  /**
618
647
  * Applies the template to the current AST.
@@ -637,17 +666,22 @@ class TemplateApplier {
637
666
  * @returns A Promise resolving to the modified AST
638
667
  */
639
668
  async applyInternal() {
669
+ var _a;
640
670
  const { tree } = this.coordinates;
641
671
  if (!tree) {
642
- return this.ast;
672
+ return this.substituted ? new SubstitutedLayoutVisitor().visit(this.ast, undefined) : this.ast;
643
673
  }
644
674
  const originalTree = tree;
645
675
  let resultToUse = this.wrapTree(originalTree, this.ast);
646
- const slot = this.replacedSlot(originalTree);
647
- if (slot) {
648
- // `format` substitutes the target's prefix, so decide against the prefix that will print
649
- resultToUse = (0, precedence_1.maybeParenthesize)(slot[0], slot[1], Object.assign(Object.assign({}, resultToUse), { prefix: originalTree.prefix }));
676
+ // A replaced node spliced back in as a capture carries its own trailing markers
677
+ const trailing = trailingMarkers(originalTree);
678
+ const slotMarkers = trailing && !(await (0, utils_1.treeIds)(this.ast)).has(originalTree.id) ? trailing : undefined;
679
+ if (slotMarkers) {
680
+ resultToUse = Object.assign(Object.assign({}, resultToUse), { markers: withMarkers(resultToUse.markers, slotMarkers) });
650
681
  }
682
+ const slot = this.replacedSlot(originalTree);
683
+ // `format` substitutes the target's prefix, so decide against the prefix that will print
684
+ resultToUse = (0, precedence_1.maybeParenthesize)(slot === null || slot === void 0 ? void 0 : slot[0], (_a = slot === null || slot === void 0 ? void 0 : slot[1]) !== null && _a !== void 0 ? _a : originalTree.id, Object.assign(Object.assign({}, resultToUse), { prefix: originalTree.prefix }), slotMarkers);
651
685
  return this.format(resultToUse, originalTree);
652
686
  }
653
687
  /** The node holding the tree being replaced and the id it holds it under, per the cursor. */
@@ -677,35 +711,40 @@ class TemplateApplier {
677
711
  [frames[1], frames[0].id] : undefined;
678
712
  }
679
713
  async format(resultToUse, originalTree) {
680
- var _a;
714
+ var _a, _b;
681
715
  // Create a copy of the AST with the prefix from the target
682
716
  const result = Object.assign(Object.assign({}, resultToUse), {
683
717
  // We temporarily set the ID so that the formatter can identify the tree
684
718
  id: originalTree.id, prefix: originalTree.prefix });
685
719
  if (!this.shouldFormat) {
686
- return Object.assign(Object.assign({}, result), { id: resultToUse.id });
720
+ const unmarked = this.substituted ? await new SubstitutedLayoutVisitor().visit(result, undefined) : result;
721
+ return Object.assign(Object.assign({}, unmarked), { id: resultToUse.id });
722
+ }
723
+ // A recipe can apply a template to a child while its cursor still points at the
724
+ // owning node (for example, a JSX attribute's literal value). Keep that owner
725
+ // in the formatting path; dropping it loses the attribute's line indentation.
726
+ const owner = (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.value;
727
+ const parent = (0, __1.isTree)(owner) && owner.id !== originalTree.id &&
728
+ (await (0, utils_1.treeIds)(owner)).has(originalTree.id) ? this.cursor : (_b = this.cursor) === null || _b === void 0 ? void 0 : _b.parent;
729
+ const formatted = await (0, format_1.maybeAutoFormat)(originalTree, result, null, undefined, parent);
730
+ // A value Prettier lays out arrives unmarked, since reconciling takes the markers of Prettier's parse
731
+ let laidOut = formatted;
732
+ if (this.substituted) {
733
+ const restore = new SubstitutedLayoutVisitor(await substitutedValues(result));
734
+ laidOut = (await restore.visit(formatted, undefined));
735
+ if (restore.restored) {
736
+ laidOut = await (0, format_1.autoIndent)(laidOut, null, parent);
737
+ }
687
738
  }
688
- // Apply auto-formatting to the result
689
- const formatted = await (0, format_1.maybeAutoFormat)(originalTree, result, null, undefined, (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.parent);
690
739
  // Restore the original ID
691
- return Object.assign(Object.assign({}, formatted), { id: resultToUse.id });
740
+ return Object.assign(Object.assign({}, laidOut), { id: resultToUse.id });
692
741
  }
693
742
  wrapTree(originalTree, resultToUse) {
694
743
  var _a, _b;
695
744
  const parentTree = (_b = (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.parentTree()) === null || _b === void 0 ? void 0 : _b.value;
696
745
  // Only apply wrapping logic if we have parent context
697
746
  if (parentTree) {
698
- // FIXME: This is a heuristic to determine if the parent expects a statement child
699
- const parentExpectsStatement = parentTree.kind === java_1.J.Kind.Block ||
700
- parentTree.kind === java_1.J.Kind.Case ||
701
- parentTree.kind === java_1.J.Kind.DoWhileLoop ||
702
- parentTree.kind === java_1.J.Kind.ForEachLoop ||
703
- parentTree.kind === java_1.J.Kind.ForLoop ||
704
- parentTree.kind === java_1.J.Kind.If ||
705
- parentTree.kind === java_1.J.Kind.IfElse ||
706
- parentTree.kind === java_1.J.Kind.WhileLoop ||
707
- parentTree.kind === __2.JS.Kind.CompilationUnit ||
708
- parentTree.kind === __2.JS.Kind.ForInLoop;
747
+ const parentExpectsStatement = expectsStatement(parentTree);
709
748
  const originalIsStatement = (0, parser_utils_1.isStatement)(originalTree);
710
749
  const resultIsStatement = (0, parser_utils_1.isStatement)(resultToUse);
711
750
  const resultIsExpression = (0, parser_utils_1.isExpression)(resultToUse);
@@ -719,7 +758,7 @@ class TemplateApplier {
719
758
  kind: __2.JS.Kind.ExpressionStatement,
720
759
  id: (0, uuid_1.randomId)(),
721
760
  prefix: expression.prefix,
722
- markers: expression.markers,
761
+ markers: wrapperMarkers(expression),
723
762
  expression: Object.assign(Object.assign({}, expression), { prefix: java_1.emptySpace })
724
763
  };
725
764
  }
@@ -732,7 +771,7 @@ class TemplateApplier {
732
771
  kind: __2.JS.Kind.StatementExpression,
733
772
  id: (0, uuid_1.randomId)(),
734
773
  prefix: stmt.prefix,
735
- markers: stmt.markers,
774
+ markers: wrapperMarkers(stmt),
736
775
  statement: Object.assign(Object.assign({}, stmt), { prefix: java_1.emptySpace })
737
776
  };
738
777
  }
@@ -742,4 +781,58 @@ class TemplateApplier {
742
781
  }
743
782
  }
744
783
  exports.TemplateApplier = TemplateApplier;
784
+ /**
785
+ * The trailing markers of the node a template replaces. Each prints after whatever node fills the slot,
786
+ * so a pattern does not match on it and the replacement keeps it.
787
+ */
788
+ function trailingMarkers(replaced) {
789
+ const trailing = replaced.markers.markers.filter(precedence_1.isTrailingMarker);
790
+ return trailing.length === 0 ? undefined : (0, __1.markers)(...trailing);
791
+ }
792
+ /** `own`, plus each marker of `added` whose kind `own` does not already hold. */
793
+ function withMarkers(own, added) {
794
+ const missing = added.markers.filter(m => !own.markers.some(o => o.kind === m.kind));
795
+ return missing.length === 0 ? own : Object.assign(Object.assign({}, own), { markers: [...own.markers, ...missing] });
796
+ }
797
+ /** The markers of a node wrapping `wrapped`, less the {@link SubstitutedValue} that belongs to `wrapped` alone. */
798
+ function wrapperMarkers(wrapped) {
799
+ return Object.assign(Object.assign({}, wrapped.markers), { markers: wrapped.markers.markers.filter(m => m.kind !== placeholder_replacement_1.SubstitutedValue.KIND) });
800
+ }
801
+ /** The substituted values in `tree`, by the id of the {@link SubstitutedValue} marking each. */
802
+ async function substitutedValues(tree) {
803
+ const values = new Map();
804
+ await new class extends __2.JavaScriptVisitor {
805
+ async preVisit(t) {
806
+ const marker = (0, markers_1.findMarker)(t, placeholder_replacement_1.SubstitutedValue.KIND);
807
+ if (marker) {
808
+ values.set(marker.id, t);
809
+ }
810
+ return t;
811
+ }
812
+ }().visit(tree, undefined);
813
+ return values;
814
+ }
815
+ /**
816
+ * Puts each substituted value back as it was in `unformatted`, under the prefix its marker assigns it,
817
+ * and drops its {@link SubstitutedValue} marker. Re-indenting them is left to the indent pass.
818
+ */
819
+ class SubstitutedLayoutVisitor extends __2.JavaScriptVisitor {
820
+ constructor(unformatted = new Map()) {
821
+ super();
822
+ this.unformatted = unformatted;
823
+ /** Whether any value was put back. */
824
+ this.restored = false;
825
+ }
826
+ async visit(tree, p, parent) {
827
+ const marker = (0, __1.isTree)(tree) ? (0, markers_1.findMarker)(tree, placeholder_replacement_1.SubstitutedValue.KIND) : undefined;
828
+ if (!marker) {
829
+ return super.visit(tree, p, parent);
830
+ }
831
+ const formatted = tree;
832
+ const before = this.unformatted.get(marker.id);
833
+ this.restored || (this.restored = before !== undefined);
834
+ const value = before ? Object.assign(Object.assign({}, before), { prefix: marker.ownPrefix ? before.prefix : formatted.prefix }) : formatted;
835
+ return Object.assign(Object.assign({}, value), { markers: Object.assign(Object.assign({}, value.markers), { markers: value.markers.markers.filter(m => m !== marker) }) });
836
+ }
837
+ }
745
838
  //# sourceMappingURL=engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/javascript/templating/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/javascript/templating/engine.ts"],"names":[],"mappings":"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"}