@openrewrite/rewrite 8.66.0 → 8.66.2

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 (113) hide show
  1. package/dist/java/tree.d.ts +10 -1
  2. package/dist/java/tree.d.ts.map +1 -1
  3. package/dist/java/tree.js +21 -5
  4. package/dist/java/tree.js.map +1 -1
  5. package/dist/java/type-visitor.d.ts +1 -1
  6. package/dist/java/type-visitor.d.ts.map +1 -1
  7. package/dist/java/visitor.d.ts +2 -2
  8. package/dist/java/visitor.d.ts.map +1 -1
  9. package/dist/java/visitor.js +8 -2
  10. package/dist/java/visitor.js.map +1 -1
  11. package/dist/javascript/assertions.d.ts +6 -0
  12. package/dist/javascript/assertions.d.ts.map +1 -1
  13. package/dist/javascript/assertions.js +14 -6
  14. package/dist/javascript/assertions.js.map +1 -1
  15. package/dist/javascript/comparator.d.ts +217 -7
  16. package/dist/javascript/comparator.d.ts.map +1 -1
  17. package/dist/javascript/comparator.js +1020 -2848
  18. package/dist/javascript/comparator.js.map +1 -1
  19. package/dist/javascript/format.d.ts +5 -3
  20. package/dist/javascript/format.d.ts.map +1 -1
  21. package/dist/javascript/format.js +87 -44
  22. package/dist/javascript/format.js.map +1 -1
  23. package/dist/javascript/index.d.ts +2 -1
  24. package/dist/javascript/index.d.ts.map +1 -1
  25. package/dist/javascript/index.js +2 -1
  26. package/dist/javascript/index.js.map +1 -1
  27. package/dist/javascript/parser.d.ts +2 -1
  28. package/dist/javascript/parser.d.ts.map +1 -1
  29. package/dist/javascript/parser.js +54 -43
  30. package/dist/javascript/parser.js.map +1 -1
  31. package/dist/javascript/templating/capture.d.ts +293 -0
  32. package/dist/javascript/templating/capture.d.ts.map +1 -0
  33. package/dist/javascript/templating/capture.js +461 -0
  34. package/dist/javascript/templating/capture.js.map +1 -0
  35. package/dist/javascript/templating/comparator.d.ts +171 -0
  36. package/dist/javascript/templating/comparator.d.ts.map +1 -0
  37. package/dist/javascript/templating/comparator.js +1221 -0
  38. package/dist/javascript/templating/comparator.js.map +1 -0
  39. package/dist/javascript/templating/engine.d.ts +108 -0
  40. package/dist/javascript/templating/engine.d.ts.map +1 -0
  41. package/dist/javascript/templating/engine.js +661 -0
  42. package/dist/javascript/templating/engine.js.map +1 -0
  43. package/dist/javascript/templating/index.d.ts +6 -0
  44. package/dist/javascript/templating/index.d.ts.map +1 -0
  45. package/dist/javascript/templating/index.js +44 -0
  46. package/dist/javascript/templating/index.js.map +1 -0
  47. package/dist/javascript/templating/pattern.d.ts +276 -0
  48. package/dist/javascript/templating/pattern.d.ts.map +1 -0
  49. package/dist/javascript/templating/pattern.js +952 -0
  50. package/dist/javascript/templating/pattern.js.map +1 -0
  51. package/dist/javascript/templating/placeholder-replacement.d.ts +83 -0
  52. package/dist/javascript/templating/placeholder-replacement.d.ts.map +1 -0
  53. package/dist/javascript/templating/placeholder-replacement.js +467 -0
  54. package/dist/javascript/templating/placeholder-replacement.js.map +1 -0
  55. package/dist/javascript/templating/rewrite.d.ts +84 -0
  56. package/dist/javascript/templating/rewrite.d.ts.map +1 -0
  57. package/dist/javascript/templating/rewrite.js +208 -0
  58. package/dist/javascript/templating/rewrite.js.map +1 -0
  59. package/dist/javascript/templating/template.d.ts +230 -0
  60. package/dist/javascript/templating/template.d.ts.map +1 -0
  61. package/dist/javascript/templating/template.js +367 -0
  62. package/dist/javascript/templating/template.js.map +1 -0
  63. package/dist/javascript/templating/types.d.ts +610 -0
  64. package/dist/javascript/templating/types.d.ts.map +1 -0
  65. package/dist/javascript/templating/types.js +3 -0
  66. package/dist/javascript/templating/types.js.map +1 -0
  67. package/dist/javascript/templating/utils.d.ts +135 -0
  68. package/dist/javascript/templating/utils.d.ts.map +1 -0
  69. package/dist/javascript/templating/utils.js +251 -0
  70. package/dist/javascript/templating/utils.js.map +1 -0
  71. package/dist/javascript/type-mapping.d.ts.map +1 -1
  72. package/dist/javascript/type-mapping.js +21 -11
  73. package/dist/javascript/type-mapping.js.map +1 -1
  74. package/dist/json/rpc.js +2 -2
  75. package/dist/json/rpc.js.map +1 -1
  76. package/dist/recipe/order-imports.js.map +1 -1
  77. package/dist/test/rewrite-test.d.ts.map +1 -1
  78. package/dist/test/rewrite-test.js +10 -6
  79. package/dist/test/rewrite-test.js.map +1 -1
  80. package/dist/version.txt +1 -1
  81. package/dist/visitor.d.ts +4 -4
  82. package/dist/visitor.d.ts.map +1 -1
  83. package/dist/visitor.js +8 -3
  84. package/dist/visitor.js.map +1 -1
  85. package/package.json +5 -2
  86. package/src/java/tree.ts +10 -3
  87. package/src/java/type-visitor.ts +1 -1
  88. package/src/java/visitor.ts +11 -5
  89. package/src/javascript/assertions.ts +9 -3
  90. package/src/javascript/comparator.ts +1095 -3373
  91. package/src/javascript/format.ts +72 -33
  92. package/src/javascript/index.ts +2 -1
  93. package/src/javascript/parser.ts +67 -45
  94. package/src/javascript/templating/capture.ts +595 -0
  95. package/src/javascript/templating/comparator.ts +1383 -0
  96. package/src/javascript/templating/engine.ts +750 -0
  97. package/src/javascript/templating/index.ts +67 -0
  98. package/src/javascript/templating/pattern.ts +1101 -0
  99. package/src/javascript/templating/placeholder-replacement.ts +475 -0
  100. package/src/javascript/templating/rewrite.ts +229 -0
  101. package/src/javascript/templating/template.ts +414 -0
  102. package/src/javascript/templating/types.ts +674 -0
  103. package/src/javascript/templating/utils.ts +298 -0
  104. package/src/javascript/type-mapping.ts +20 -11
  105. package/src/json/rpc.ts +2 -2
  106. package/src/recipe/order-imports.ts +1 -1
  107. package/src/test/rewrite-test.ts +12 -7
  108. package/src/visitor.ts +14 -6
  109. package/dist/javascript/templating.d.ts +0 -265
  110. package/dist/javascript/templating.d.ts.map +0 -1
  111. package/dist/javascript/templating.js +0 -1027
  112. package/dist/javascript/templating.js.map +0 -1
  113. package/src/javascript/templating.ts +0 -1226
@@ -0,0 +1,293 @@
1
+ import { Cursor } from '../..';
2
+ import { J, Type } from '../../java';
3
+ import { Any, Capture, CaptureOptions, ConstraintFunction, TemplateParam, VariadicOptions } from './types';
4
+ /**
5
+ * Combines multiple constraints with AND logic.
6
+ * All constraints must return true for the combined constraint to pass.
7
+ *
8
+ * @example
9
+ * const largeEvenNumber = capture('n', {
10
+ * constraint: and(
11
+ * (node) => typeof node.value === 'number',
12
+ * (node) => node.value > 100,
13
+ * (node) => node.value % 2 === 0
14
+ * )
15
+ * });
16
+ */
17
+ export declare function and<T>(...constraints: ((node: T, cursor?: Cursor) => boolean)[]): (node: T, cursor?: Cursor) => boolean;
18
+ /**
19
+ * Combines multiple constraints with OR logic.
20
+ * At least one constraint must return true for the combined constraint to pass.
21
+ *
22
+ * @example
23
+ * const stringOrNumber = capture('value', {
24
+ * constraint: or(
25
+ * (node) => node.kind === J.Kind.Literal && typeof node.value === 'string',
26
+ * (node) => node.kind === J.Kind.Literal && typeof node.value === 'number'
27
+ * )
28
+ * });
29
+ */
30
+ export declare function or<T>(...constraints: ((node: T, cursor?: Cursor) => boolean)[]): (node: T, cursor?: Cursor) => boolean;
31
+ /**
32
+ * Negates a constraint.
33
+ * Returns true when the constraint returns false, and vice versa.
34
+ *
35
+ * @example
36
+ * const notString = capture('value', {
37
+ * constraint: not((node) => typeof node.value === 'string')
38
+ * });
39
+ */
40
+ export declare function not<T>(constraint: (node: T, cursor?: Cursor) => boolean): (node: T, cursor?: Cursor) => boolean;
41
+ export declare const CAPTURE_NAME_SYMBOL: unique symbol;
42
+ export declare const CAPTURE_VARIADIC_SYMBOL: unique symbol;
43
+ export declare const CAPTURE_CONSTRAINT_SYMBOL: unique symbol;
44
+ export declare const CAPTURE_CAPTURING_SYMBOL: unique symbol;
45
+ export declare const CAPTURE_TYPE_SYMBOL: unique symbol;
46
+ export declare const RAW_CODE_SYMBOL: unique symbol;
47
+ export declare class CaptureImpl<T = any> implements Capture<T> {
48
+ readonly name: string;
49
+ [CAPTURE_NAME_SYMBOL]: string;
50
+ [CAPTURE_VARIADIC_SYMBOL]: VariadicOptions | undefined;
51
+ [CAPTURE_CONSTRAINT_SYMBOL]: ConstraintFunction<T> | undefined;
52
+ [CAPTURE_CAPTURING_SYMBOL]: boolean;
53
+ [CAPTURE_TYPE_SYMBOL]: string | Type | undefined;
54
+ constructor(name: string, options?: CaptureOptions<T>, capturing?: boolean);
55
+ getName(): string;
56
+ isVariadic(): boolean;
57
+ getVariadicOptions(): VariadicOptions | undefined;
58
+ getConstraint(): ConstraintFunction<T> | undefined;
59
+ isCapturing(): boolean;
60
+ getType(): string | Type | undefined;
61
+ }
62
+ export declare class TemplateParamImpl<T = any> implements TemplateParam<T> {
63
+ readonly name: string;
64
+ constructor(name: string);
65
+ getName(): string;
66
+ }
67
+ /**
68
+ * Represents a property access on a captured value.
69
+ * When you access a property on a Capture (e.g., method.name), you get a CaptureValue
70
+ * that knows how to resolve that property from the matched values.
71
+ */
72
+ export declare class CaptureValue {
73
+ readonly rootCapture: Capture;
74
+ readonly propertyPath: string[];
75
+ readonly arrayOperation?: {
76
+ type: "index" | "slice" | "length";
77
+ args?: number[];
78
+ } | undefined;
79
+ constructor(rootCapture: Capture, propertyPath: string[], arrayOperation?: {
80
+ type: "index" | "slice" | "length";
81
+ args?: number[];
82
+ } | undefined);
83
+ /**
84
+ * Resolves this capture value by looking up the root capture in the values map
85
+ * and navigating through the property path.
86
+ */
87
+ resolve(values: Pick<Map<string, J | J[]>, 'get'>): any;
88
+ /**
89
+ * Checks if this CaptureValue will resolve to an array that should be expanded.
90
+ */
91
+ isArrayExpansion(): boolean;
92
+ }
93
+ export declare function capture<T = any>(options: CaptureOptions<T> & {
94
+ variadic?: never;
95
+ }): Capture<T> & T;
96
+ export declare function capture<T = any>(options: {
97
+ name?: string;
98
+ variadic: true | VariadicOptions;
99
+ constraint?: ConstraintFunction<T[]>;
100
+ min?: number;
101
+ max?: number;
102
+ }): Capture<T[]> & T[];
103
+ export declare function capture<T = any>(name?: string): Capture<T> & T;
104
+ export declare namespace capture {
105
+ var nextUnnamedId: number;
106
+ }
107
+ /**
108
+ * Creates a non-capturing pattern match for use in patterns.
109
+ *
110
+ * Use `any()` when you need to match AST structure without binding the matched value to a name.
111
+ * This is useful for validation patterns where you care about structure but not the specific values.
112
+ *
113
+ * **Key Differences from `capture()`:**
114
+ * - `any()` returns `Any<T>` type (not `Capture<T>`)
115
+ * - Cannot be used in templates (TypeScript compiler prevents this)
116
+ * - Does not bind matched values (more memory efficient for patterns)
117
+ * - Supports same features: constraints, variadic matching
118
+ *
119
+ * @template T The expected type of the matched AST node (for TypeScript autocomplete and constraints)
120
+ * @param options Optional configuration (variadic, constraint)
121
+ * @returns An Any object that matches patterns without capturing
122
+ *
123
+ * @example
124
+ * // Match any single argument without capturing
125
+ * const pat = pattern`foo(${any()})`;
126
+ *
127
+ * @example
128
+ * // Match with constraint validation
129
+ * const numericArg = any<J.Literal>({
130
+ * constraint: (node) => typeof node.value === 'number'
131
+ * });
132
+ * const pat = pattern`process(${numericArg})`;
133
+ *
134
+ * @example
135
+ * // Variadic any - match zero or more without capturing
136
+ * const rest = any({ variadic: true });
137
+ * const first = capture('first');
138
+ * const pat = pattern`foo(${first}, ${rest})`;
139
+ *
140
+ * @example
141
+ * // Mixed with captures - capture some, ignore others
142
+ * const important = capture('important');
143
+ * const pat = pattern`
144
+ * if (${any()}) {
145
+ * ${important}
146
+ * }
147
+ * `;
148
+ *
149
+ * @example
150
+ * // Variadic with constraints
151
+ * const numericArgs = any<J.Literal>({
152
+ * variadic: true,
153
+ * constraint: (nodes) => nodes.every(n => typeof n.value === 'number')
154
+ * });
155
+ * const pat = pattern`sum(${numericArgs})`;
156
+ */
157
+ export declare function any<T = any>(options: {
158
+ constraint: ConstraintFunction<T>;
159
+ } & {
160
+ variadic?: never;
161
+ }): Any<T> & T;
162
+ export declare function any<T = any>(options: {
163
+ variadic: true | VariadicOptions;
164
+ constraint?: ConstraintFunction<T[]>;
165
+ min?: number;
166
+ max?: number;
167
+ }): Any<T[]> & T[];
168
+ export declare function any<T = any>(options?: CaptureOptions<T>): Any<T> & T;
169
+ export declare namespace any {
170
+ var nextAnonId: number;
171
+ }
172
+ /**
173
+ * Creates a parameter specification for use in standalone templates (not used with patterns).
174
+ *
175
+ * Use `param()` when creating templates that are not used with pattern matching.
176
+ * Use `capture()` when the template works with a pattern.
177
+ *
178
+ * @template T The expected type of the parameter value (for TypeScript autocomplete only)
179
+ * @param name Optional name for the parameter. If not provided, an auto-generated name is used.
180
+ * @returns A TemplateParam object (simpler than Capture, no property access support)
181
+ *
182
+ * @remarks
183
+ * **When to use `param()` vs `capture()`:**
184
+ *
185
+ * - Use `param()` in **standalone templates** (no pattern matching involved)
186
+ * - Use `capture()` in **patterns** and templates used with patterns
187
+ *
188
+ * **Key Differences:**
189
+ * - `TemplateParam` is simpler - no property access proxy overhead
190
+ * - `Capture` supports property access (e.g., `capture('x').name.simpleName`)
191
+ * - Both work in templates, but `param()` makes intent clearer for standalone use
192
+ *
193
+ * @example
194
+ * // ✅ GOOD: Use param() for standalone templates
195
+ * const value = param<J.Literal>('value');
196
+ * const tmpl = template`return ${value} * 2;`;
197
+ * await tmpl.apply(cursor, node, new Map([['value', someLiteral]]));
198
+ *
199
+ * @example
200
+ * // ✅ GOOD: Use capture() with patterns
201
+ * const value = capture('value');
202
+ * const pat = pattern`foo(${value})`;
203
+ * const tmpl = template`bar(${value})`; // capture() makes sense here
204
+ *
205
+ * @example
206
+ * // ⚠️ CONFUSING: Using capture() in standalone template
207
+ * const value = capture('value');
208
+ * template`return ${value} * 2;`; // "Capturing" what? There's no pattern!
209
+ *
210
+ * @example
211
+ * // ❌ WRONG: param() doesn't support property access
212
+ * const node = param<J.MethodInvocation>('invocation');
213
+ * template`console.log(${node.name})` // Error! Use capture() for property access
214
+ */
215
+ export declare function param<T = any>(name?: string): TemplateParam<T>;
216
+ /**
217
+ * Represents raw code that should be inserted verbatim into templates at construction time.
218
+ * This is useful for dynamic code generation where the code structure is determined at runtime.
219
+ */
220
+ export declare class RawCode {
221
+ readonly code: string;
222
+ [RAW_CODE_SYMBOL]: boolean;
223
+ constructor(code: string);
224
+ }
225
+ /**
226
+ * Creates a raw code specification for inserting literal code strings into templates.
227
+ *
228
+ * Use `raw()` when you need to insert code that is generated dynamically (e.g., from recipe options,
229
+ * computed field names, or programmatic string manipulation) directly into a template at construction time.
230
+ *
231
+ * The string is spliced into the template before parsing, so it becomes part of the template's AST.
232
+ * This is different from `param()` or `capture()` which are placeholders replaced during application.
233
+ *
234
+ * @param code The code string to insert verbatim into the template
235
+ * @returns A RawCode object that will be spliced into the template
236
+ *
237
+ * @remarks
238
+ * **When to use `raw()` vs `param()` vs `capture()`:**
239
+ *
240
+ * - Use `raw()` when you have a **code string** to insert at **template construction time**
241
+ * - Use `param()` when you have an **AST node** to substitute at **template application time**
242
+ * - Use `capture()` when working with **pattern matching** and need to reference matched values
243
+ *
244
+ * **Safety Considerations:**
245
+ * - No validation is performed on the code string
246
+ * - The code must be syntactically valid at the position where it's inserted
247
+ * - Recipe authors are trusted to provide valid code
248
+ *
249
+ * @example
250
+ * // Recipe option determines the log level
251
+ * class MyRecipe extends Recipe {
252
+ * @Option
253
+ * logLevel: string = "info";
254
+ *
255
+ * getVisitor() {
256
+ * // Template constructed with dynamic method name
257
+ * const replacement = template`logger.${raw(this.logLevel)}(${_('msg')})`;
258
+ * // Produces: logger.info(...) or logger.warn(...) etc.
259
+ * }
260
+ * }
261
+ *
262
+ * @example
263
+ * // Build object literal from collected field names
264
+ * const fields = ["userId", "timestamp", "status"];
265
+ * template`{ ${raw(fields.join(', '))} }`
266
+ * // Produces: { userId, timestamp, status }
267
+ *
268
+ * @example
269
+ * // Dynamic import path
270
+ * const modulePath = "./utils";
271
+ * template`import { helper } from ${raw(`'${modulePath}'`)}`
272
+ * // Produces: import { helper } from './utils'
273
+ *
274
+ * @example
275
+ * // Configurable operator
276
+ * const operator = ">=";
277
+ * template`${_('value')} ${raw(operator)} threshold`
278
+ * // Produces: value >= threshold
279
+ */
280
+ export declare function raw(code: string): RawCode;
281
+ /**
282
+ * Concise alias for `capture`. Works well for inline captures in patterns and templates.
283
+ *
284
+ * @param name Optional name for the capture. If not provided, an auto-generated name is used.
285
+ * @returns A Capture object
286
+ *
287
+ * @example
288
+ * // Inline captures with _ alias
289
+ * pattern`isDate(${_('dateArg')})`
290
+ * template`${_('dateArg')} instanceof Date`
291
+ */
292
+ export declare const _: typeof capture;
293
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/javascript/templating/capture.ts"],"names":[],"mappings":"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"}