@openrewrite/rewrite 8.64.0-20251015-185250 → 8.64.0-20251016-064729
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/javascript/dependency-workspace.d.ts +2 -0
- package/dist/javascript/dependency-workspace.d.ts.map +1 -1
- package/dist/javascript/dependency-workspace.js +101 -12
- package/dist/javascript/dependency-workspace.js.map +1 -1
- package/dist/javascript/templating.d.ts.map +1 -1
- package/dist/javascript/templating.js +105 -22
- package/dist/javascript/templating.js.map +1 -1
- package/dist/version.txt +1 -1
- package/package.json +1 -1
- package/src/javascript/dependency-workspace.ts +99 -13
- package/src/javascript/templating.ts +128 -25
|
@@ -30,6 +30,8 @@ export declare class DependencyWorkspace {
|
|
|
30
30
|
/**
|
|
31
31
|
* Cleans up old workspace directories.
|
|
32
32
|
* Removes workspaces older than the specified age.
|
|
33
|
+
* Also removes all temporary directories (*.tmp-*) regardless of age,
|
|
34
|
+
* as these indicate incomplete/crashed operations.
|
|
33
35
|
*
|
|
34
36
|
* @param maxAgeMs Maximum age in milliseconds (default: 24 hours)
|
|
35
37
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-workspace.d.ts","sourceRoot":"","sources":["../../src/javascript/dependency-workspace.ts"],"names":[],"mappings":"AAqBA;;;;GAIG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuD;IAC7F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAE1D;;;;;;;;OAQG;WACU,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"dependency-workspace.d.ts","sourceRoot":"","sources":["../../src/javascript/dependency-workspace.ts"],"names":[],"mappings":"AAqBA;;;;GAIG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuD;IAC7F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAE1D;;;;;;;;OAQG;WACU,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqK5G;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAO/B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAoC/B;;;;;;;OAOG;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,GAAE,MAA4B,GAAG,IAAI;IA8CzE;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;CAG5B"}
|
|
@@ -113,19 +113,25 @@ class DependencyWorkspace {
|
|
|
113
113
|
if (cached && fs.existsSync(cached) && this.isWorkspaceValid(cached, dependencies)) {
|
|
114
114
|
return cached;
|
|
115
115
|
}
|
|
116
|
-
//
|
|
116
|
+
// Final workspace location
|
|
117
117
|
const workspaceDir = path.join(this.WORKSPACE_BASE, hash);
|
|
118
|
+
// Check if valid workspace already exists on disk (cross-VM reuse)
|
|
119
|
+
if (fs.existsSync(workspaceDir) && this.isWorkspaceValid(workspaceDir, dependencies)) {
|
|
120
|
+
this.cache.set(hash, workspaceDir);
|
|
121
|
+
return workspaceDir;
|
|
122
|
+
}
|
|
118
123
|
// Ensure base directory exists
|
|
119
124
|
if (!fs.existsSync(this.WORKSPACE_BASE)) {
|
|
120
125
|
fs.mkdirSync(this.WORKSPACE_BASE, { recursive: true });
|
|
121
126
|
}
|
|
122
|
-
//
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
fs.mkdirSync(workspaceDir, { recursive: true });
|
|
127
|
+
// Create workspace in temporary location to ensure atomicity
|
|
128
|
+
// This prevents reusing partially created workspaces from crashes
|
|
129
|
+
// and handles concurrency with other Node processes
|
|
130
|
+
const tempSuffix = `.tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
131
|
+
const tempWorkspaceDir = path.join(this.WORKSPACE_BASE, hash + tempSuffix);
|
|
128
132
|
try {
|
|
133
|
+
// Create temporary workspace directory
|
|
134
|
+
fs.mkdirSync(tempWorkspaceDir, { recursive: true });
|
|
129
135
|
// Create package.json
|
|
130
136
|
const packageJson = {
|
|
131
137
|
name: "openrewrite-template-workspace",
|
|
@@ -133,20 +139,90 @@ class DependencyWorkspace {
|
|
|
133
139
|
private: true,
|
|
134
140
|
dependencies: dependencies
|
|
135
141
|
};
|
|
136
|
-
fs.writeFileSync(path.join(
|
|
142
|
+
fs.writeFileSync(path.join(tempWorkspaceDir, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
137
143
|
// Run npm install
|
|
138
144
|
(0, child_process_1.execSync)('npm install --silent', {
|
|
139
|
-
cwd:
|
|
145
|
+
cwd: tempWorkspaceDir,
|
|
140
146
|
stdio: 'pipe' // Suppress output
|
|
141
147
|
});
|
|
148
|
+
// Atomically move to final location with retry logic for concurrency
|
|
149
|
+
let moved = false;
|
|
150
|
+
let retries = 3;
|
|
151
|
+
while (!moved && retries > 0) {
|
|
152
|
+
try {
|
|
153
|
+
// Attempt atomic rename (works on POSIX, fails on Windows if target exists)
|
|
154
|
+
fs.renameSync(tempWorkspaceDir, workspaceDir);
|
|
155
|
+
moved = true;
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
// Handle concurrent creation by another process
|
|
159
|
+
if (error.code === 'EEXIST' || error.code === 'ENOTEMPTY' || error.code === 'EISDIR' ||
|
|
160
|
+
(error.code === 'EPERM' && fs.existsSync(workspaceDir))) {
|
|
161
|
+
// Target exists - check if it's valid
|
|
162
|
+
if (this.isWorkspaceValid(workspaceDir, dependencies)) {
|
|
163
|
+
// Another process created a valid workspace - use theirs
|
|
164
|
+
moved = true; // Don't try again
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
// Invalid workspace exists - try to remove and retry
|
|
168
|
+
try {
|
|
169
|
+
fs.rmSync(workspaceDir, { recursive: true, force: true });
|
|
170
|
+
retries--;
|
|
171
|
+
}
|
|
172
|
+
catch (removeError) {
|
|
173
|
+
// Another process might be using it, give up
|
|
174
|
+
retries = 0;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else if (error.code === 'EXDEV') {
|
|
179
|
+
// Cross-device link - fallback to copy+remove (not atomic, but rare)
|
|
180
|
+
try {
|
|
181
|
+
fs.cpSync(tempWorkspaceDir, workspaceDir, { recursive: true });
|
|
182
|
+
moved = true;
|
|
183
|
+
}
|
|
184
|
+
catch (copyError) {
|
|
185
|
+
// Check if another process created it while we were copying
|
|
186
|
+
if (this.isWorkspaceValid(workspaceDir, dependencies)) {
|
|
187
|
+
moved = true;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
throw error;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
// Unexpected error
|
|
196
|
+
throw error;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Clean up temp directory
|
|
201
|
+
try {
|
|
202
|
+
if (fs.existsSync(tempWorkspaceDir)) {
|
|
203
|
+
fs.rmSync(tempWorkspaceDir, { recursive: true, force: true });
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch (_a) {
|
|
207
|
+
// Ignore cleanup errors
|
|
208
|
+
}
|
|
209
|
+
// Verify final workspace is valid (might be from another process)
|
|
210
|
+
if (!this.isWorkspaceValid(workspaceDir, dependencies)) {
|
|
211
|
+
throw new Error('Failed to create valid workspace due to concurrent modifications');
|
|
212
|
+
}
|
|
142
213
|
// Cache the workspace
|
|
143
214
|
this.cache.set(hash, workspaceDir);
|
|
144
215
|
return workspaceDir;
|
|
145
216
|
}
|
|
146
217
|
catch (error) {
|
|
147
|
-
// Clean up on failure
|
|
148
|
-
|
|
149
|
-
fs.
|
|
218
|
+
// Clean up temporary workspace on failure
|
|
219
|
+
try {
|
|
220
|
+
if (fs.existsSync(tempWorkspaceDir)) {
|
|
221
|
+
fs.rmSync(tempWorkspaceDir, { recursive: true, force: true });
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (_b) {
|
|
225
|
+
// Ignore cleanup errors
|
|
150
226
|
}
|
|
151
227
|
throw new Error(`Failed to create dependency workspace: ${error}`);
|
|
152
228
|
}
|
|
@@ -200,6 +276,8 @@ class DependencyWorkspace {
|
|
|
200
276
|
/**
|
|
201
277
|
* Cleans up old workspace directories.
|
|
202
278
|
* Removes workspaces older than the specified age.
|
|
279
|
+
* Also removes all temporary directories (*.tmp-*) regardless of age,
|
|
280
|
+
* as these indicate incomplete/crashed operations.
|
|
203
281
|
*
|
|
204
282
|
* @param maxAgeMs Maximum age in milliseconds (default: 24 hours)
|
|
205
283
|
*/
|
|
@@ -214,6 +292,17 @@ class DependencyWorkspace {
|
|
|
214
292
|
continue;
|
|
215
293
|
}
|
|
216
294
|
const workspaceDir = path.join(this.WORKSPACE_BASE, entry.name);
|
|
295
|
+
// Always clean up temporary directories (incomplete operations)
|
|
296
|
+
if (entry.name.includes('.tmp-')) {
|
|
297
|
+
try {
|
|
298
|
+
fs.rmSync(workspaceDir, { recursive: true, force: true });
|
|
299
|
+
}
|
|
300
|
+
catch (error) {
|
|
301
|
+
// Ignore errors, might be in use by another process
|
|
302
|
+
}
|
|
303
|
+
continue;
|
|
304
|
+
}
|
|
305
|
+
// Clean up old regular workspaces
|
|
217
306
|
try {
|
|
218
307
|
const stats = fs.statSync(workspaceDir);
|
|
219
308
|
const age = now - stats.mtimeMs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-workspace.js","sourceRoot":"","sources":["../../src/javascript/dependency-workspace.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;GAcG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,+CAAiC;AACjC,iDAAuC;AAEvC;;;;GAIG;AACH,MAAa,mBAAmB;IAI5B;;;;;;;;OAQG;IACH,MAAM,CAAO,oBAAoB,CAAC,YAAoC,EAAE,SAAkB;;YACtF,IAAI,SAAS,EAAE,CAAC;gBACZ,uDAAuD;gBACvD,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;oBACjD,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,8CAA8C;gBAC9C,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;gBAE3C,IAAI,CAAC;oBACD,MAAM,WAAW,GAAG;wBAChB,IAAI,EAAE,gCAAgC;wBACtC,OAAO,EAAE,OAAO;wBAChB,OAAO,EAAE,IAAI;wBACb,YAAY,EAAE,YAAY;qBAC7B,CAAC;oBAEF,EAAE,CAAC,aAAa,CACZ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EACpC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CACvC,CAAC;oBAEF,kBAAkB;oBAClB,IAAA,wBAAQ,EAAC,sBAAsB,EAAE;wBAC7B,GAAG,EAAE,SAAS;wBACd,KAAK,EAAE,MAAM,CAAC,kBAAkB;qBACnC,CAAC,CAAC;oBAEH,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;gBACvE,CAAC;YACL,CAAC;YAED,kCAAkC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAEjD,cAAc;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;gBACjF,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"dependency-workspace.js","sourceRoot":"","sources":["../../src/javascript/dependency-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templating.d.ts","sourceRoot":"","sources":["../../src/javascript/templating.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAC,MAAM,EAAU,IAAI,EAAC,MAAM,IAAI,CAAC;AACxC,OAAO,EAAC,CAAC,EAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"templating.d.ts","sourceRoot":"","sources":["../../src/javascript/templating.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,8 @@ const __1 = require("..");
|
|
|
36
36
|
const java_1 = require("../java");
|
|
37
37
|
const immer_1 = require("immer");
|
|
38
38
|
const comparator_1 = require("./comparator");
|
|
39
|
+
const dependency_workspace_1 = require("./dependency-workspace");
|
|
40
|
+
const uuid_1 = require("../uuid");
|
|
39
41
|
/**
|
|
40
42
|
* Cache for compiled templates and patterns.
|
|
41
43
|
* Stores parsed ASTs to avoid expensive re-parsing and dependency resolution.
|
|
@@ -73,8 +75,7 @@ class TemplateCache {
|
|
|
73
75
|
// the same dependencies will automatically share the same workspace
|
|
74
76
|
let workspaceDir;
|
|
75
77
|
if (dependencies && Object.keys(dependencies).length > 0) {
|
|
76
|
-
|
|
77
|
-
workspaceDir = yield DependencyWorkspace.getOrCreateWorkspace(dependencies);
|
|
78
|
+
workspaceDir = yield dependency_workspace_1.DependencyWorkspace.getOrCreateWorkspace(dependencies);
|
|
78
79
|
}
|
|
79
80
|
// Prepend imports for type attribution context
|
|
80
81
|
const fullTemplateString = imports.length > 0
|
|
@@ -97,6 +98,17 @@ class TemplateCache {
|
|
|
97
98
|
}
|
|
98
99
|
// Global cache instance
|
|
99
100
|
const templateCache = new TemplateCache();
|
|
101
|
+
/**
|
|
102
|
+
* Marker that stores capture metadata on pattern AST nodes.
|
|
103
|
+
* This avoids the need to parse capture names from identifiers during matching.
|
|
104
|
+
*/
|
|
105
|
+
class CaptureMarker {
|
|
106
|
+
constructor(captureName) {
|
|
107
|
+
this.captureName = captureName;
|
|
108
|
+
this.kind = 'org.openrewrite.javascript.CaptureMarker';
|
|
109
|
+
this.id = (0, uuid_1.randomId)();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
100
112
|
class CaptureImpl {
|
|
101
113
|
constructor(name) {
|
|
102
114
|
this.name = name;
|
|
@@ -255,6 +267,7 @@ class JavaScriptTemplateSemanticallyEqualVisitor extends comparator_1.JavaScript
|
|
|
255
267
|
// Check basic structural equality first
|
|
256
268
|
if (method.name.simpleName !== otherMethod.name.simpleName ||
|
|
257
269
|
method.arguments.elements.length !== otherMethod.arguments.elements.length) {
|
|
270
|
+
this.abort();
|
|
258
271
|
return method;
|
|
259
272
|
}
|
|
260
273
|
// Check type attribution
|
|
@@ -362,8 +375,8 @@ class Matcher {
|
|
|
362
375
|
matches() {
|
|
363
376
|
return __awaiter(this, void 0, void 0, function* () {
|
|
364
377
|
if (!this.patternAst) {
|
|
365
|
-
|
|
366
|
-
this.patternAst = yield
|
|
378
|
+
const templateProcessor = new TemplateProcessor(this.pattern.templateParts, this.pattern.captures, this.pattern.options.imports || [], this.pattern.options.dependencies || {});
|
|
379
|
+
this.patternAst = yield templateProcessor.toAstPattern();
|
|
367
380
|
}
|
|
368
381
|
return this.matchNode(this.patternAst, this.ast);
|
|
369
382
|
});
|
|
@@ -407,8 +420,7 @@ class Matcher {
|
|
|
407
420
|
});
|
|
408
421
|
}
|
|
409
422
|
matchesParameter(identifier, other) {
|
|
410
|
-
return PlaceholderUtils.isCapture(identifier) &&
|
|
411
|
-
matcher.handleCapture(identifier, other);
|
|
423
|
+
return PlaceholderUtils.isCapture(identifier) && matcher.handleCapture(identifier, other);
|
|
412
424
|
}
|
|
413
425
|
}).compare(pattern, target));
|
|
414
426
|
});
|
|
@@ -421,13 +433,12 @@ class Matcher {
|
|
|
421
433
|
* @returns true if the capture is successful, false otherwise
|
|
422
434
|
*/
|
|
423
435
|
handleCapture(pattern, target) {
|
|
424
|
-
const
|
|
425
|
-
|
|
426
|
-
if (!captureInfo) {
|
|
436
|
+
const captureName = PlaceholderUtils.getCaptureName(pattern);
|
|
437
|
+
if (!captureName) {
|
|
427
438
|
return false;
|
|
428
439
|
}
|
|
429
440
|
// Store the binding
|
|
430
|
-
this.bindings.set(
|
|
441
|
+
this.bindings.set(captureName, target);
|
|
431
442
|
return true;
|
|
432
443
|
}
|
|
433
444
|
}
|
|
@@ -515,7 +526,7 @@ class Template {
|
|
|
515
526
|
return TemplateEngine.applyTemplate(this.templateParts, this.parameters, cursor, {
|
|
516
527
|
tree,
|
|
517
528
|
mode: JavaCoordinates.Mode.Replace
|
|
518
|
-
}, values, this.options.imports || []);
|
|
529
|
+
}, values, this.options.imports || [], this.options.dependencies || {});
|
|
519
530
|
});
|
|
520
531
|
}
|
|
521
532
|
}
|
|
@@ -542,10 +553,11 @@ class TemplateEngine {
|
|
|
542
553
|
* @param coordinates The coordinates specifying where and how to insert the generated AST
|
|
543
554
|
* @param values Map of capture names to values to replace the parameters with
|
|
544
555
|
* @param imports Import statements to prepend for type attribution
|
|
556
|
+
* @param dependencies NPM dependencies for type attribution
|
|
545
557
|
* @returns A Promise resolving to the generated AST node
|
|
546
558
|
*/
|
|
547
559
|
static applyTemplate(templateParts_1, parameters_1, cursor_1, coordinates_1) {
|
|
548
|
-
return __awaiter(this, arguments, void 0, function* (templateParts, parameters, cursor, coordinates, values = new Map(), imports = []) {
|
|
560
|
+
return __awaiter(this, arguments, void 0, function* (templateParts, parameters, cursor, coordinates, values = new Map(), imports = [], dependencies = {}) {
|
|
549
561
|
// Build the template string with parameter placeholders
|
|
550
562
|
const templateString = TemplateEngine.buildTemplateString(templateParts, parameters);
|
|
551
563
|
// If the template string is empty, return undefined
|
|
@@ -555,8 +567,7 @@ class TemplateEngine {
|
|
|
555
567
|
// Use cache to get or parse the compilation unit
|
|
556
568
|
// For templates, we don't have captures, so use empty array
|
|
557
569
|
const cu = yield templateCache.getOrParse(templateString, [], // templates don't have captures in the cache key
|
|
558
|
-
imports,
|
|
559
|
-
);
|
|
570
|
+
imports, dependencies);
|
|
560
571
|
// Check if there are any statements
|
|
561
572
|
if (!cu.statements || cu.statements.length === 0) {
|
|
562
573
|
return undefined;
|
|
@@ -625,12 +636,29 @@ class PlaceholderUtils {
|
|
|
625
636
|
* @returns true if the node is a capture placeholder, false otherwise
|
|
626
637
|
*/
|
|
627
638
|
static isCapture(node) {
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
639
|
+
// Check for CaptureMarker first (efficient)
|
|
640
|
+
for (const marker of node.markers.markers) {
|
|
641
|
+
if (marker instanceof CaptureMarker) {
|
|
642
|
+
return true;
|
|
643
|
+
}
|
|
631
644
|
}
|
|
632
645
|
return false;
|
|
633
646
|
}
|
|
647
|
+
/**
|
|
648
|
+
* Gets the capture name from a node with a CaptureMarker.
|
|
649
|
+
*
|
|
650
|
+
* @param node The node to extract capture name from
|
|
651
|
+
* @returns The capture name, or null if not a capture
|
|
652
|
+
*/
|
|
653
|
+
static getCaptureName(node) {
|
|
654
|
+
// Check for CaptureMarker
|
|
655
|
+
for (const marker of node.markers.markers) {
|
|
656
|
+
if (marker instanceof CaptureMarker) {
|
|
657
|
+
return marker.captureName;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
return undefined;
|
|
661
|
+
}
|
|
634
662
|
/**
|
|
635
663
|
* Parses a capture placeholder to extract name and type constraint.
|
|
636
664
|
*
|
|
@@ -853,11 +881,13 @@ class TemplateProcessor {
|
|
|
853
881
|
* @param templateParts The string parts of the template
|
|
854
882
|
* @param captures The captures between the string parts
|
|
855
883
|
* @param imports Import statements to prepend for type attribution
|
|
884
|
+
* @param dependencies NPM dependencies for type attribution
|
|
856
885
|
*/
|
|
857
|
-
constructor(templateParts, captures, imports = []) {
|
|
886
|
+
constructor(templateParts, captures, imports = [], dependencies = {}) {
|
|
858
887
|
this.templateParts = templateParts;
|
|
859
888
|
this.captures = captures;
|
|
860
889
|
this.imports = imports;
|
|
890
|
+
this.dependencies = dependencies;
|
|
861
891
|
}
|
|
862
892
|
/**
|
|
863
893
|
* Converts the template to an AST pattern.
|
|
@@ -869,8 +899,7 @@ class TemplateProcessor {
|
|
|
869
899
|
// Combine template parts and placeholders
|
|
870
900
|
const templateString = this.buildTemplateString();
|
|
871
901
|
// Use cache to get or parse the compilation unit
|
|
872
|
-
const cu = yield templateCache.getOrParse(templateString, this.captures, this.imports,
|
|
873
|
-
);
|
|
902
|
+
const cu = yield templateCache.getOrParse(templateString, this.captures, this.imports, this.dependencies);
|
|
874
903
|
// Extract the relevant part of the AST
|
|
875
904
|
return this.extractPatternFromAst(cu);
|
|
876
905
|
});
|
|
@@ -911,8 +940,62 @@ class TemplateProcessor {
|
|
|
911
940
|
// Otherwise, return the statement itself
|
|
912
941
|
extracted = firstStatement;
|
|
913
942
|
}
|
|
914
|
-
//
|
|
915
|
-
return
|
|
943
|
+
// Attach CaptureMarkers to capture identifiers
|
|
944
|
+
return this.attachCaptureMarkers(extracted);
|
|
945
|
+
}
|
|
946
|
+
/**
|
|
947
|
+
* Attaches CaptureMarkers to capture identifiers in the AST.
|
|
948
|
+
* This allows efficient capture detection without string parsing.
|
|
949
|
+
*
|
|
950
|
+
* @param ast The AST to process
|
|
951
|
+
* @returns The AST with CaptureMarkers attached
|
|
952
|
+
*/
|
|
953
|
+
attachCaptureMarkers(ast) {
|
|
954
|
+
const visited = new Set();
|
|
955
|
+
return (0, immer_1.produce)(ast, draft => {
|
|
956
|
+
this.visitAndAttachMarkers(draft, visited);
|
|
957
|
+
});
|
|
958
|
+
}
|
|
959
|
+
/**
|
|
960
|
+
* Recursively visits AST nodes and attaches CaptureMarkers to capture identifiers.
|
|
961
|
+
*
|
|
962
|
+
* @param node The node to visit
|
|
963
|
+
* @param visited Set of already visited nodes to avoid cycles
|
|
964
|
+
*/
|
|
965
|
+
visitAndAttachMarkers(node, visited) {
|
|
966
|
+
var _a;
|
|
967
|
+
if (!node || typeof node !== 'object' || visited.has(node)) {
|
|
968
|
+
return;
|
|
969
|
+
}
|
|
970
|
+
// Mark as visited to avoid cycles
|
|
971
|
+
visited.add(node);
|
|
972
|
+
// If this is an identifier that looks like a capture, attach a marker
|
|
973
|
+
if (node.kind === java_1.J.Kind.Identifier && ((_a = node.simpleName) === null || _a === void 0 ? void 0 : _a.startsWith(PlaceholderUtils.CAPTURE_PREFIX))) {
|
|
974
|
+
const captureInfo = PlaceholderUtils.parseCapture(node.simpleName);
|
|
975
|
+
if (captureInfo) {
|
|
976
|
+
// Initialize markers if needed
|
|
977
|
+
if (!node.markers) {
|
|
978
|
+
node.markers = { kind: 'org.openrewrite.marker.Markers', id: (0, uuid_1.randomId)(), markers: [] };
|
|
979
|
+
}
|
|
980
|
+
if (!node.markers.markers) {
|
|
981
|
+
node.markers.markers = [];
|
|
982
|
+
}
|
|
983
|
+
// Add CaptureMarker
|
|
984
|
+
node.markers.markers.push(new CaptureMarker(captureInfo.name));
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
// Recursively visit all properties
|
|
988
|
+
for (const key in node) {
|
|
989
|
+
if (node.hasOwnProperty(key)) {
|
|
990
|
+
const value = node[key];
|
|
991
|
+
if (Array.isArray(value)) {
|
|
992
|
+
value.forEach(item => this.visitAndAttachMarkers(item, visited));
|
|
993
|
+
}
|
|
994
|
+
else if (typeof value === 'object' && value !== null) {
|
|
995
|
+
this.visitAndAttachMarkers(value, visited);
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
}
|
|
916
999
|
}
|
|
917
1000
|
}
|
|
918
1001
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templating.js","sourceRoot":"","sources":["../../src/javascript/templating.ts"],"names":[],"mappings":";;;;;;;;;;;;AA4IA,0BAKC;AA2WD,0BAMC;AA4GD,4BAQC;AAohBD,0BAWC;AArpCD;;;;;;;;;;;;;;GAcG;AACH,wBAAqB;AACrB,qCAA0C;AAC1C,uCAA4C;AAC5C,0BAAwC;AACxC,kCAAgC;AAChC,iCAA8B;AAC9B,6CAAyD;AAEzD;;;GAGG;AACH,MAAM,aAAa;IAAnB;QACY,UAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IAuE1D,CAAC;IArEG;;OAEG;IACK,WAAW,CACf,cAAsB,EACtB,QAAmB,EACnB,OAAiB,EACjB,YAAoC;QAEpC,wEAAwE;QACxE,MAAM,WAAW,GAAG,cAAc,CAAC;QAEnC,gBAAgB;QAChB,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExD,UAAU;QACV,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAErC,eAAe;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QAEnD,OAAO,GAAG,WAAW,KAAK,WAAW,KAAK,UAAU,KAAK,OAAO,EAAE,CAAC;IACvE,CAAC;IAED;;OAEG;IACG,UAAU,CACZ,cAAsB,EACtB,QAAmB,EACnB,OAAiB,EACjB,YAAoC;;YAEpC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAE9E,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,EAAE,EAAE,CAAC;gBACL,OAAO,EAAE,CAAC;YACd,CAAC;YAED,gDAAgD;YAChD,oEAAoE;YACpE,oEAAoE;YACpE,IAAI,YAAgC,CAAC;YACrC,IAAI,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvD,MAAM,EAAC,mBAAmB,EAAC,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;gBACxE,YAAY,GAAG,MAAM,mBAAmB,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YAChF,CAAC;YAED,+CAA+C;YAC/C,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;gBACzC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,cAAc;gBAC5C,CAAC,CAAC,cAAc,CAAC;YAErB,yDAAyD;YACzD,MAAM,MAAM,GAAG,IAAI,yBAAgB,CAAC,EAAC,UAAU,EAAE,YAAY,EAAC,CAAC,CAAC;YAChE,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAC,CAAC,CAAC;YAC3F,EAAE,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,KAA2B,CAAC;YAE/D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,OAAO,EAAE,CAAC;QACd,CAAC;KAAA;IAED;;OAEG;IACH,KAAK;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACJ;AAED,wBAAwB;AACxB,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAa1C,MAAM,WAAW;IACb,YACoB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAEhC,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,OAAO,CAAC,IAAa;IACjC,IAAI,IAAI,EAAE,CAAC;QACP,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,WAAW,CAAC,WAAW,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,gEAAgE;AAChE,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;AAE1B;;;;;;;;;;GAUG;AACU,QAAA,CAAC,GAAG,OAAO,CAAC;AAoBzB;;GAEG;AACH,MAAa,OAAO;IAGhB;;;OAGG;IACH,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,YACoB,aAAmC,EACnC,QAAmB;QADnB,kBAAa,GAAb,aAAa,CAAsB;QACnC,aAAQ,GAAR,QAAQ,CAAW;QAlB/B,aAAQ,GAAmB,EAAE,CAAC;IAoBtC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,OAAuB;QAC7B,IAAI,CAAC,QAAQ,mCAAQ,IAAI,CAAC,QAAQ,GAAK,OAAO,CAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACG,KAAK,CAAC,GAAM;;YACd,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,CAAC;KAAA;CACJ;AApDD,0BAoDC;AAED,MAAa,WAAW;IACpB,YACqB,WAA2B,IAAI,GAAG,EAAE;QAApC,aAAQ,GAAR,QAAQ,CAA4B;IAEzD,CAAC;IAED,GAAG,CAAC,OAAyB;QACzB,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAClE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;CACJ;AAVD,kCAUC;AAED;;;;GAIG;AACH,MAAM,0CAA2C,SAAQ,wCAA2B;IAChF;;;OAGG;IACK,QAAQ,CAAC,MAAa,EAAE,MAAa;QACzC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,MAAM,KAAK,MAAM,CAAC;QAC7B,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,yCAAyC;QACzC,yFAAyF;QACzF,uEAAuE;QACvE,IAAI,MAAM,CAAC,IAAI,KAAK,WAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACvE,MAAM,YAAY,GAAG,MAAqB,CAAC;YAC3C,MAAM,YAAY,GAAG,MAAqB,CAAC;YAE3C,wCAAwC;YACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;QACjF,CAAC;QAED,4DAA4D;QAC5D,IAAI,WAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,WAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,OAAO,WAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC;gBACjD,WAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;QAED,oDAAoD;QACpD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACY,qBAAqB,CAAC,MAA0B,EAAE,KAAQ;;;;;YACrE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACzC,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,MAAM,WAAW,GAAG,KAA2B,CAAC;YAEhD,wCAAwC;YACxC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,CAAC,UAAU;gBACtD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC7E,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,yBAAyB;YACzB,oDAAoD;YACpD,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;gBAChD,4DAA4D;gBAC5D,IAAI,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;oBAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,OAAO,MAAM,CAAC;gBAClB,CAAC;gBACD,6DAA6D;gBAC7D,OAAO,OAAM,qBAAqB,YAAC,MAAM,EAAE,KAAK,EAAE;YACtD,CAAC;YAED,kDAAkD;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;YAC5E,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,uCAAuC;gBACvC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,kFAAkF;YAClF,iFAAiF;YACjF,4CAA4C;YAE5C,0BAA0B;YAC1B,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,KAAK,SAAS,CAAC,EAAE,CAAC;gBACvF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,IAAI,MAAM,CAAC,cAAc,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBACtD,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACvF,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,OAAO,MAAM,CAAC;gBAClB,CAAC;gBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7D,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBAC5G,IAAI,CAAC,IAAI,CAAC,KAAK;wBAAE,OAAO,MAAM,CAAC;gBACnC,CAAC;YACL,CAAC;YAED,gFAAgF;YAChF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO,MAAM,CAAC;YAE/B,oBAAoB;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAClG,IAAI,CAAC,IAAI,CAAC,KAAK;oBAAE,OAAO,MAAM,CAAC;YACnC,CAAC;YAED,OAAO,MAAM,CAAC;QAClB,CAAC;KAAA;IAED;;OAEG;IACY,eAAe,CAAC,UAAwB,EAAE,KAAQ;;;;;YAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnC,OAAO,UAAU,CAAC;YACtB,CAAC;YAED,MAAM,eAAe,GAAG,KAAqB,CAAC;YAE9C,qBAAqB;YACrB,IAAI,UAAU,CAAC,UAAU,KAAK,eAAe,CAAC,UAAU,EAAE,CAAC;gBACvD,OAAO,UAAU,CAAC;YACtB,CAAC;YAED,2DAA2D;YAC3D,IAAI,UAAU,CAAC,SAAS,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,OAAO,UAAU,CAAC;gBACtB,CAAC;YACL,CAAC;iBAAM,IAAI,UAAU,CAAC,SAAS,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC;gBAC3D,2CAA2C;gBAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,UAAU,CAAC;YACtB,CAAC;YAED,OAAO,OAAM,eAAe,YAAC,UAAU,EAAE,KAAK,EAAE;QACpD,CAAC;KAAA;CACJ;AAED;;GAEG;AACH,MAAM,OAAO;IAKT;;;;;OAKG;IACH,YACqB,OAAgB,EAChB,GAAM;QADN,YAAO,GAAP,OAAO,CAAS;QAChB,QAAG,GAAH,GAAG,CAAG;QAZV,aAAQ,GAAG,IAAI,GAAG,EAAa,CAAC;IAcjD,CAAC;IAED;;;;OAIG;IACG,OAAO;;YACT,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnB,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC1C,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CACrC,CAAC;gBACF,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;YAClE,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC;KAAA;IAED;;;;OAIG;IACH,MAAM;QACF,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACW,SAAS,CAAC,OAAU,EAAE,MAAS;;YACzC,4CAA4C;YAC5C,IAAI,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;YAED,oCAAoC;YACpC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/B,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC;YACrB,OAAO,MAAM,CAAC,CAAC,IAAI,KAAM,SAAQ,0CAA0C;gBAC7D,WAAW,CAAC,CAAI,EAAE,KAAQ;oBAChC,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,QAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAiB,EAAE,KAAK,CAAC,CAAC;gBACzH,CAAC;gBAEc,eAAe,CAAC,UAAwB,EAAE,KAAQ;;;;;wBAC7D,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,OAAM,eAAe,YAAC,UAAU,EAAE,KAAK,CAAC,CAAC;oBAClH,CAAC;iBAAA;gBAEO,gBAAgB,CAAC,UAAwB,EAAE,KAAQ;oBACvD,OAAO,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;wBACzC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACjD,CAAC;aACJ,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACjC,CAAC;KAAA;IAED;;;;;;OAMG;IACK,aAAa,CAAC,OAAU,EAAE,MAAS;QACvC,MAAM,EAAE,GAAG,OAAuB,CAAC;QACnC,MAAM,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAEjE,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,OAAO,CAAC,OAA6B,EAAE,GAAG,QAA8B;IACpF,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,EAAE,IAAI,GAAG,EAAmB,CAAC,CAAC;IAC/B,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC;AAC5G,CAAC;AAQD,IAAU,eAAe,CASxB;AATD,WAAU,eAAe;IAIrB,IAAY,IAIX;IAJD,WAAY,IAAI;QACZ,mCAAM,CAAA;QACN,iCAAK,CAAA;QACL,qCAAO,CAAA;IACX,CAAC,EAJW,IAAI,GAAJ,oBAAI,KAAJ,oBAAI,QAIf;AACL,CAAC,EATS,eAAe,KAAf,eAAe,QASxB;AA4BD;;;;;;;;;;;;;GAaG;AACH,MAAa,QAAQ;IAGjB;;;;;OAKG;IACH,YACqB,aAAmC,EACnC,UAAuB;QADvB,kBAAa,GAAb,aAAa,CAAsB;QACnC,eAAU,GAAV,UAAU,CAAa;QAVpC,YAAO,GAAoB,EAAE,CAAC;IAYtC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,OAAwB;QAC9B,IAAI,CAAC,OAAO,mCAAQ,IAAI,CAAC,OAAO,GAAK,OAAO,CAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACG,KAAK,CAAC,MAAc,EAAE,IAAO,EAAE,MAAoC;;YACrE,OAAO,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;gBAC7E,IAAI;gBACJ,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO;aACrC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;KAAA;CACJ;AA/CD,4BA+CC;AAED,SAAgB,QAAQ,CAAC,OAA6B,EAAE,GAAG,UAA+B;IACtF,8FAA8F;IAC9F,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC/C,uDAAuD;QACvD,OAAO,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AACtD,CAAC;AAaD;;;GAGG;AACH,MAAM,cAAc;IAChB;;;;;;;;;;OAUG;IACH,MAAM,CAAO,aAAa;6DACtB,aAAmC,EACnC,UAAuB,EACvB,MAAc,EACd,WAA4B,EAC5B,SAAsC,IAAI,GAAG,EAAE,EAC/C,UAAoB,EAAE;YAEtB,wDAAwD;YACxD,MAAM,cAAc,GAAG,cAAc,CAAC,mBAAmB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAErF,oDAAoD;YACpD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;gBACzB,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,iDAAiD;YACjD,4DAA4D;YAC5D,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,UAAU,CACrC,cAAc,EACd,EAAE,EAAE,iDAAiD;YACrD,OAAO,EACP,EAAE,CAAC,4BAA4B;aAClC,CAAC;YAEF,oCAAoC;YACpC,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/C,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,4DAA4D;YAC5D,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9C,IAAI,sBAAsB,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBACjD,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,uCAAuC;YACvC,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;YACrE,IAAI,SAAS,GAAG,cAAc,CAAC,IAAI,KAAK,KAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAChE,cAAyC,CAAC,UAAU,CAAC,CAAC;gBACvD,cAAc,CAAC;YAEnB,sDAAsD;YACtD,MAAM,GAAG,GAAG,IAAA,eAAO,EAAC,SAAS,EAAE,KAAK,CAAC,EAAE,GAAE,CAAC,CAAC,CAAC;YAE5C,4CAA4C;YAC5C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqB,CAAC;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,WAAW,GAAG,GAAG,gBAAgB,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC;gBACnE,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;YAED,2EAA2E;YAC3E,MAAM,OAAO,GAAG,IAAI,6BAA6B,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACzE,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAE,CAAC;YAE3D,wCAAwC;YACxC,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1F,CAAC;KAAA;IAED;;;;;;OAMG;IACK,MAAM,CAAC,mBAAmB,CAC9B,aAAmC,EACnC,UAAuB;QAEvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAClC,gDAAgD;gBAChD,+DAA+D;gBAC/D,IAAI,KAAK,YAAY,WAAW,IAAI,IAAA,UAAM,EAAC,KAAK,CAAC,EAAE,CAAC;oBAChD,MAAM,WAAW,GAAG,GAAG,gBAAgB,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC;oBACnE,MAAM,IAAI,WAAW,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,KAAK,CAAC;gBACpB,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,gBAAgB;IAIlB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,IAAO;QACpB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,EAAE,GAAG,IAAoB,CAAC;YAChC,OAAO,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,UAAkB;QAClC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,mDAAmD;QACnD,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,UAAU,CAAC,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,CAAC;QAED,uEAAuE;QACvE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO;YACH,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;SAC3B,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,cAAuB;QACtD,OAAO,cAAc;YACjB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,cAAc,IAAI;YACrD,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,CAAC;IAC5C,CAAC;;AAzDe,+BAAc,GAAG,YAAY,CAAC;AAC9B,mCAAkB,GAAG,gBAAgB,CAAC;AA2D1D;;GAEG;AACH,MAAM,6BAA8B,SAAQ,2BAAsB;IAC9D,YACqB,aAAqC,EACrC,SAAsC,IAAI,GAAG,EAAE;QAEhE,KAAK,EAAE,CAAC;QAHS,kBAAa,GAAb,aAAa,CAAwB;QACrC,WAAM,GAAN,MAAM,CAAyC;IAGpE,CAAC;IAEK,KAAK,CAAc,IAAO,EAAE,CAAM,EAAE,MAAe;;;;;YACrD,sCAAsC;YACtC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;oBACvB,OAAO,WAAgB,CAAC;gBAC5B,CAAC;YACL,CAAC;YAED,iCAAiC;YACjC,OAAO,OAAM,KAAK,YAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE;QACxC,CAAC;KAAA;IAED;;;;;OAKG;IACK,aAAa,CAAC,IAAO;;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAoB,CAAC;YACxC,OAAO,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,IAAiB,CAAC;YAClC,OAAO,CAAA,MAAA,OAAO,CAAC,WAAW,0CAAE,UAAU,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAAI,KAAK,CAAC;QACzF,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CAAC,WAAc;QACrC,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAE7D,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACvF,OAAO,WAAW,CAAC;QACvB,CAAC;QAED,mCAAmC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,WAAW,CAAC;QACvB,CAAC;QAED,kEAAkE;QAClE,IAAI,KAAK,CAAC,KAAK,YAAY,WAAW,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,IAAA,eAAO,EAAC,WAAW,EAAE,KAAK,CAAC,EAAE;oBAChC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;oBACpC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gBACtC,CAAC,CAAC,CAAC;YACP,CAAC;YACD,kDAAkD;YAClD,OAAO,WAAW,CAAC;QACvB,CAAC;QAED,yDAAyD;QACzD,IAAI,IAAA,UAAM,EAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,sDAAsD;YACtD,OAAO,IAAA,eAAO,EAAC,KAAK,CAAC,KAAU,EAAE,KAAK,CAAC,EAAE;gBACrC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;gBACpC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CAAC,IAAO;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,OAAQ,IAAqB,CAAC,UAAU,CAAC;QAC7C,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,OAAQ,IAAkB,CAAC,WAAW,IAAI,IAAI,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,eAAe;IACjB,YACqB,MAAc,EACd,WAA4B,EAC5B,GAAM,EACN,aAA0B,EAAE;QAH5B,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAiB;QAC5B,QAAG,GAAH,GAAG,CAAG;QACN,eAAU,GAAV,UAAU,CAAkB;IAEjD,CAAC;IAED;;;;OAIG;IACG,KAAK;;YACP,MAAM,EAAC,GAAG,EAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YAE/B,oDAAoD;YACpD,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;gBACjC,KAAK,mBAAmB;oBACpB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACpC,KAAK,kBAAkB;oBACnB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACnC,KAAK,WAAW;oBACZ,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC/B;oBACI,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;KAAA;IAED;;;;OAIG;IACW,iBAAiB;;YAC3B,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YAEhC,2DAA2D;YAC3D,OAAO,IAAI,CAAC,CAAC,CAAC,IAAA,eAAO,EAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBACpC,KAAK,CAAC,MAAM,GAAI,IAAU,CAAC,MAAM,CAAC;YACtC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC;KAAA;IAED;;;;OAIG;IACW,gBAAgB;;YAC1B,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YAEhC,2DAA2D;YAC3D,OAAO,IAAA,eAAO,EAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,MAAM,GAAI,IAAU,CAAC,MAAM,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAED;;;;OAIG;IACW,YAAY;;YACtB,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YAEhC,2DAA2D;YAC3D,OAAO,IAAA,eAAO,EAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,MAAM,GAAI,IAAU,CAAC,MAAM,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;CACJ;AAED;;;GAGG;AACH,MAAM,iBAAiB;IACnB;;;;;;OAMG;IACH,YACqB,aAAmC,EACnC,QAAmB,EACnB,UAAoB,EAAE;QAFtB,kBAAa,GAAb,aAAa,CAAsB;QACnC,aAAQ,GAAR,QAAQ,CAAW;QACnB,YAAO,GAAP,OAAO,CAAe;IAE3C,CAAC;IAED;;;;OAIG;IACG,YAAY;;YACd,0CAA0C;YAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAElD,iDAAiD;YACjD,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,UAAU,CACrC,cAAc,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,EAAE,CAAC,gDAAgD;aACtD,CAAC;YAEF,uCAAuC;YACvC,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;KAAA;IAED;;;;OAIG;IACK,mBAAmB;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,IAAI,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACK,qBAAqB,CAAC,EAAsB;QAChD,2DAA2D;QAC3D,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAElD,qEAAqE;QACrE,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC;QAEpE,IAAI,SAAY,CAAC;QACjB,4EAA4E;QAC5E,IAAI,cAAc,CAAC,IAAI,KAAK,KAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtD,SAAS,GAAI,cAAyC,CAAC,UAAU,CAAC;QACtE,CAAC;aAAM,CAAC;YACJ,yCAAyC;YACzC,SAAS,GAAG,cAAc,CAAC;QAC/B,CAAC;QAED,sDAAsD;QACtD,OAAO,IAAA,eAAO,EAAC,SAAS,EAAE,KAAK,CAAC,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;CACJ;AA0BD;;GAEG;AACH,MAAM,eAAe;IACjB,YACqB,MAAiB,EACjB,KAAe;QADf,WAAM,GAAN,MAAM,CAAW;QACjB,UAAK,GAAL,KAAK,CAAU;IAEpC,CAAC;IAEK,KAAK,CAAC,MAAc,EAAE,IAAO;;YAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAExC,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC3D,IAAI,MAAM,EAAE,CAAC;wBACT,OAAO,MAAM,CAAC;oBAClB,CAAC;gBACL,CAAC;YACL,CAAC;YAED,wCAAwC;YACxC,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,SAAgB,OAAO,CACnB,SAA8B;IAE9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,mDAAmD;IACnD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7G,CAAC"}
|
|
1
|
+
{"version":3,"file":"templating.js","sourceRoot":"","sources":["../../src/javascript/templating.ts"],"names":[],"mappings":"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"}
|
package/dist/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
8.64.0-
|
|
1
|
+
8.64.0-20251016-064327
|
package/package.json
CHANGED
|
@@ -81,23 +81,30 @@ export class DependencyWorkspace {
|
|
|
81
81
|
return cached;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
//
|
|
84
|
+
// Final workspace location
|
|
85
85
|
const workspaceDir = path.join(this.WORKSPACE_BASE, hash);
|
|
86
86
|
|
|
87
|
+
// Check if valid workspace already exists on disk (cross-VM reuse)
|
|
88
|
+
if (fs.existsSync(workspaceDir) && this.isWorkspaceValid(workspaceDir, dependencies)) {
|
|
89
|
+
this.cache.set(hash, workspaceDir);
|
|
90
|
+
return workspaceDir;
|
|
91
|
+
}
|
|
92
|
+
|
|
87
93
|
// Ensure base directory exists
|
|
88
94
|
if (!fs.existsSync(this.WORKSPACE_BASE)) {
|
|
89
95
|
fs.mkdirSync(this.WORKSPACE_BASE, {recursive: true});
|
|
90
96
|
}
|
|
91
97
|
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Create workspace directory
|
|
98
|
-
fs.mkdirSync(workspaceDir, {recursive: true});
|
|
98
|
+
// Create workspace in temporary location to ensure atomicity
|
|
99
|
+
// This prevents reusing partially created workspaces from crashes
|
|
100
|
+
// and handles concurrency with other Node processes
|
|
101
|
+
const tempSuffix = `.tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
102
|
+
const tempWorkspaceDir = path.join(this.WORKSPACE_BASE, hash + tempSuffix);
|
|
99
103
|
|
|
100
104
|
try {
|
|
105
|
+
// Create temporary workspace directory
|
|
106
|
+
fs.mkdirSync(tempWorkspaceDir, {recursive: true});
|
|
107
|
+
|
|
101
108
|
// Create package.json
|
|
102
109
|
const packageJson = {
|
|
103
110
|
name: "openrewrite-template-workspace",
|
|
@@ -107,24 +114,89 @@ export class DependencyWorkspace {
|
|
|
107
114
|
};
|
|
108
115
|
|
|
109
116
|
fs.writeFileSync(
|
|
110
|
-
path.join(
|
|
117
|
+
path.join(tempWorkspaceDir, 'package.json'),
|
|
111
118
|
JSON.stringify(packageJson, null, 2)
|
|
112
119
|
);
|
|
113
120
|
|
|
114
121
|
// Run npm install
|
|
115
122
|
execSync('npm install --silent', {
|
|
116
|
-
cwd:
|
|
123
|
+
cwd: tempWorkspaceDir,
|
|
117
124
|
stdio: 'pipe' // Suppress output
|
|
118
125
|
});
|
|
119
126
|
|
|
127
|
+
// Atomically move to final location with retry logic for concurrency
|
|
128
|
+
let moved = false;
|
|
129
|
+
let retries = 3;
|
|
130
|
+
|
|
131
|
+
while (!moved && retries > 0) {
|
|
132
|
+
try {
|
|
133
|
+
// Attempt atomic rename (works on POSIX, fails on Windows if target exists)
|
|
134
|
+
fs.renameSync(tempWorkspaceDir, workspaceDir);
|
|
135
|
+
moved = true;
|
|
136
|
+
} catch (error: any) {
|
|
137
|
+
// Handle concurrent creation by another process
|
|
138
|
+
if (error.code === 'EEXIST' || error.code === 'ENOTEMPTY' || error.code === 'EISDIR' ||
|
|
139
|
+
(error.code === 'EPERM' && fs.existsSync(workspaceDir))) {
|
|
140
|
+
// Target exists - check if it's valid
|
|
141
|
+
if (this.isWorkspaceValid(workspaceDir, dependencies)) {
|
|
142
|
+
// Another process created a valid workspace - use theirs
|
|
143
|
+
moved = true; // Don't try again
|
|
144
|
+
} else {
|
|
145
|
+
// Invalid workspace exists - try to remove and retry
|
|
146
|
+
try {
|
|
147
|
+
fs.rmSync(workspaceDir, {recursive: true, force: true});
|
|
148
|
+
retries--;
|
|
149
|
+
} catch (removeError) {
|
|
150
|
+
// Another process might be using it, give up
|
|
151
|
+
retries = 0;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
} else if (error.code === 'EXDEV') {
|
|
155
|
+
// Cross-device link - fallback to copy+remove (not atomic, but rare)
|
|
156
|
+
try {
|
|
157
|
+
fs.cpSync(tempWorkspaceDir, workspaceDir, {recursive: true});
|
|
158
|
+
moved = true;
|
|
159
|
+
} catch (copyError) {
|
|
160
|
+
// Check if another process created it while we were copying
|
|
161
|
+
if (this.isWorkspaceValid(workspaceDir, dependencies)) {
|
|
162
|
+
moved = true;
|
|
163
|
+
} else {
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
} else {
|
|
168
|
+
// Unexpected error
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Clean up temp directory
|
|
175
|
+
try {
|
|
176
|
+
if (fs.existsSync(tempWorkspaceDir)) {
|
|
177
|
+
fs.rmSync(tempWorkspaceDir, {recursive: true, force: true});
|
|
178
|
+
}
|
|
179
|
+
} catch {
|
|
180
|
+
// Ignore cleanup errors
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Verify final workspace is valid (might be from another process)
|
|
184
|
+
if (!this.isWorkspaceValid(workspaceDir, dependencies)) {
|
|
185
|
+
throw new Error('Failed to create valid workspace due to concurrent modifications');
|
|
186
|
+
}
|
|
187
|
+
|
|
120
188
|
// Cache the workspace
|
|
121
189
|
this.cache.set(hash, workspaceDir);
|
|
122
190
|
|
|
123
191
|
return workspaceDir;
|
|
124
192
|
} catch (error) {
|
|
125
|
-
// Clean up on failure
|
|
126
|
-
|
|
127
|
-
fs.
|
|
193
|
+
// Clean up temporary workspace on failure
|
|
194
|
+
try {
|
|
195
|
+
if (fs.existsSync(tempWorkspaceDir)) {
|
|
196
|
+
fs.rmSync(tempWorkspaceDir, {recursive: true, force: true});
|
|
197
|
+
}
|
|
198
|
+
} catch {
|
|
199
|
+
// Ignore cleanup errors
|
|
128
200
|
}
|
|
129
201
|
throw new Error(`Failed to create dependency workspace: ${error}`);
|
|
130
202
|
}
|
|
@@ -185,6 +257,8 @@ export class DependencyWorkspace {
|
|
|
185
257
|
/**
|
|
186
258
|
* Cleans up old workspace directories.
|
|
187
259
|
* Removes workspaces older than the specified age.
|
|
260
|
+
* Also removes all temporary directories (*.tmp-*) regardless of age,
|
|
261
|
+
* as these indicate incomplete/crashed operations.
|
|
188
262
|
*
|
|
189
263
|
* @param maxAgeMs Maximum age in milliseconds (default: 24 hours)
|
|
190
264
|
*/
|
|
@@ -202,6 +276,18 @@ export class DependencyWorkspace {
|
|
|
202
276
|
}
|
|
203
277
|
|
|
204
278
|
const workspaceDir = path.join(this.WORKSPACE_BASE, entry.name);
|
|
279
|
+
|
|
280
|
+
// Always clean up temporary directories (incomplete operations)
|
|
281
|
+
if (entry.name.includes('.tmp-')) {
|
|
282
|
+
try {
|
|
283
|
+
fs.rmSync(workspaceDir, {recursive: true, force: true});
|
|
284
|
+
} catch (error) {
|
|
285
|
+
// Ignore errors, might be in use by another process
|
|
286
|
+
}
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// Clean up old regular workspaces
|
|
205
291
|
try {
|
|
206
292
|
const stats = fs.statSync(workspaceDir);
|
|
207
293
|
const age = now - stats.mtimeMs;
|
|
@@ -20,6 +20,9 @@ import {Cursor, isTree, Tree} from '..';
|
|
|
20
20
|
import {J, Type} from '../java';
|
|
21
21
|
import {produce} from "immer";
|
|
22
22
|
import {JavaScriptComparatorVisitor} from "./comparator";
|
|
23
|
+
import {DependencyWorkspace} from './dependency-workspace';
|
|
24
|
+
import {Marker} from '../markers';
|
|
25
|
+
import {randomId} from '../uuid';
|
|
23
26
|
|
|
24
27
|
/**
|
|
25
28
|
* Cache for compiled templates and patterns.
|
|
@@ -73,7 +76,6 @@ class TemplateCache {
|
|
|
73
76
|
// the same dependencies will automatically share the same workspace
|
|
74
77
|
let workspaceDir: string | undefined;
|
|
75
78
|
if (dependencies && Object.keys(dependencies).length > 0) {
|
|
76
|
-
const {DependencyWorkspace} = await import('./dependency-workspace.js');
|
|
77
79
|
workspaceDir = await DependencyWorkspace.getOrCreateWorkspace(dependencies);
|
|
78
80
|
}
|
|
79
81
|
|
|
@@ -102,6 +104,20 @@ class TemplateCache {
|
|
|
102
104
|
// Global cache instance
|
|
103
105
|
const templateCache = new TemplateCache();
|
|
104
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Marker that stores capture metadata on pattern AST nodes.
|
|
109
|
+
* This avoids the need to parse capture names from identifiers during matching.
|
|
110
|
+
*/
|
|
111
|
+
class CaptureMarker implements Marker {
|
|
112
|
+
readonly kind = 'org.openrewrite.javascript.CaptureMarker';
|
|
113
|
+
readonly id = randomId();
|
|
114
|
+
|
|
115
|
+
constructor(
|
|
116
|
+
public readonly captureName: string
|
|
117
|
+
) {
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
105
121
|
/**
|
|
106
122
|
* Capture specification for pattern matching.
|
|
107
123
|
* Represents a placeholder in a template pattern that can capture a part of the AST.
|
|
@@ -303,6 +319,7 @@ class JavaScriptTemplateSemanticallyEqualVisitor extends JavaScriptComparatorVis
|
|
|
303
319
|
// Check basic structural equality first
|
|
304
320
|
if (method.name.simpleName !== otherMethod.name.simpleName ||
|
|
305
321
|
method.arguments.elements.length !== otherMethod.arguments.elements.length) {
|
|
322
|
+
this.abort();
|
|
306
323
|
return method;
|
|
307
324
|
}
|
|
308
325
|
|
|
@@ -397,7 +414,6 @@ class JavaScriptTemplateSemanticallyEqualVisitor extends JavaScriptComparatorVis
|
|
|
397
414
|
class Matcher {
|
|
398
415
|
private readonly bindings = new Map<string, J>();
|
|
399
416
|
private patternAst?: J;
|
|
400
|
-
private templateProcessor?: TemplateProcessor;
|
|
401
417
|
|
|
402
418
|
/**
|
|
403
419
|
* Creates a new matcher for a pattern against an AST node.
|
|
@@ -418,12 +434,13 @@ class Matcher {
|
|
|
418
434
|
*/
|
|
419
435
|
async matches(): Promise<boolean> {
|
|
420
436
|
if (!this.patternAst) {
|
|
421
|
-
|
|
437
|
+
const templateProcessor = new TemplateProcessor(
|
|
422
438
|
this.pattern.templateParts,
|
|
423
439
|
this.pattern.captures,
|
|
424
|
-
this.pattern.options.imports || []
|
|
440
|
+
this.pattern.options.imports || [],
|
|
441
|
+
this.pattern.options.dependencies || {}
|
|
425
442
|
);
|
|
426
|
-
this.patternAst = await
|
|
443
|
+
this.patternAst = await templateProcessor.toAstPattern();
|
|
427
444
|
}
|
|
428
445
|
|
|
429
446
|
return this.matchNode(this.patternAst, this.ast);
|
|
@@ -467,8 +484,7 @@ class Matcher {
|
|
|
467
484
|
}
|
|
468
485
|
|
|
469
486
|
private matchesParameter(identifier: J.Identifier, other: J): boolean {
|
|
470
|
-
return PlaceholderUtils.isCapture(identifier) &&
|
|
471
|
-
matcher.handleCapture(identifier, other);
|
|
487
|
+
return PlaceholderUtils.isCapture(identifier) && matcher.handleCapture(identifier, other);
|
|
472
488
|
}
|
|
473
489
|
}).compare(pattern, target));
|
|
474
490
|
}
|
|
@@ -481,15 +497,14 @@ class Matcher {
|
|
|
481
497
|
* @returns true if the capture is successful, false otherwise
|
|
482
498
|
*/
|
|
483
499
|
private handleCapture(pattern: J, target: J): boolean {
|
|
484
|
-
const
|
|
485
|
-
const captureInfo = PlaceholderUtils.parseCapture(id.simpleName);
|
|
500
|
+
const captureName = PlaceholderUtils.getCaptureName(pattern);
|
|
486
501
|
|
|
487
|
-
if (!
|
|
502
|
+
if (!captureName) {
|
|
488
503
|
return false;
|
|
489
504
|
}
|
|
490
505
|
|
|
491
506
|
// Store the binding
|
|
492
|
-
this.bindings.set(
|
|
507
|
+
this.bindings.set(captureName, target);
|
|
493
508
|
return true;
|
|
494
509
|
}
|
|
495
510
|
}
|
|
@@ -613,10 +628,18 @@ export class Template {
|
|
|
613
628
|
* @returns A Promise resolving to the generated AST node
|
|
614
629
|
*/
|
|
615
630
|
async apply(cursor: Cursor, tree: J, values?: Pick<Map<string, J>, 'get'>): Promise<J | undefined> {
|
|
616
|
-
return TemplateEngine.applyTemplate(
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
631
|
+
return TemplateEngine.applyTemplate(
|
|
632
|
+
this.templateParts,
|
|
633
|
+
this.parameters,
|
|
634
|
+
cursor,
|
|
635
|
+
{
|
|
636
|
+
tree,
|
|
637
|
+
mode: JavaCoordinates.Mode.Replace
|
|
638
|
+
},
|
|
639
|
+
values,
|
|
640
|
+
this.options.imports || [],
|
|
641
|
+
this.options.dependencies || {}
|
|
642
|
+
);
|
|
620
643
|
}
|
|
621
644
|
}
|
|
622
645
|
|
|
@@ -655,6 +678,7 @@ class TemplateEngine {
|
|
|
655
678
|
* @param coordinates The coordinates specifying where and how to insert the generated AST
|
|
656
679
|
* @param values Map of capture names to values to replace the parameters with
|
|
657
680
|
* @param imports Import statements to prepend for type attribution
|
|
681
|
+
* @param dependencies NPM dependencies for type attribution
|
|
658
682
|
* @returns A Promise resolving to the generated AST node
|
|
659
683
|
*/
|
|
660
684
|
static async applyTemplate(
|
|
@@ -663,7 +687,8 @@ class TemplateEngine {
|
|
|
663
687
|
cursor: Cursor,
|
|
664
688
|
coordinates: JavaCoordinates,
|
|
665
689
|
values: Pick<Map<string, J>, 'get'> = new Map(),
|
|
666
|
-
imports: string[] = []
|
|
690
|
+
imports: string[] = [],
|
|
691
|
+
dependencies: Record<string, string> = {}
|
|
667
692
|
): Promise<J | undefined> {
|
|
668
693
|
// Build the template string with parameter placeholders
|
|
669
694
|
const templateString = TemplateEngine.buildTemplateString(templateParts, parameters);
|
|
@@ -679,7 +704,7 @@ class TemplateEngine {
|
|
|
679
704
|
templateString,
|
|
680
705
|
[], // templates don't have captures in the cache key
|
|
681
706
|
imports,
|
|
682
|
-
|
|
707
|
+
dependencies
|
|
683
708
|
);
|
|
684
709
|
|
|
685
710
|
// Check if there are any statements
|
|
@@ -762,13 +787,32 @@ class PlaceholderUtils {
|
|
|
762
787
|
* @returns true if the node is a capture placeholder, false otherwise
|
|
763
788
|
*/
|
|
764
789
|
static isCapture(node: J): boolean {
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
790
|
+
// Check for CaptureMarker first (efficient)
|
|
791
|
+
for (const marker of node.markers.markers) {
|
|
792
|
+
if (marker instanceof CaptureMarker) {
|
|
793
|
+
return true;
|
|
794
|
+
}
|
|
768
795
|
}
|
|
769
796
|
return false;
|
|
770
797
|
}
|
|
771
798
|
|
|
799
|
+
/**
|
|
800
|
+
* Gets the capture name from a node with a CaptureMarker.
|
|
801
|
+
*
|
|
802
|
+
* @param node The node to extract capture name from
|
|
803
|
+
* @returns The capture name, or null if not a capture
|
|
804
|
+
*/
|
|
805
|
+
static getCaptureName(node: J): string | undefined {
|
|
806
|
+
// Check for CaptureMarker
|
|
807
|
+
for (const marker of node.markers.markers) {
|
|
808
|
+
if (marker instanceof CaptureMarker) {
|
|
809
|
+
return marker.captureName;
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
return undefined;
|
|
814
|
+
}
|
|
815
|
+
|
|
772
816
|
/**
|
|
773
817
|
* Parses a capture placeholder to extract name and type constraint.
|
|
774
818
|
*
|
|
@@ -1000,11 +1044,13 @@ class TemplateProcessor {
|
|
|
1000
1044
|
* @param templateParts The string parts of the template
|
|
1001
1045
|
* @param captures The captures between the string parts
|
|
1002
1046
|
* @param imports Import statements to prepend for type attribution
|
|
1047
|
+
* @param dependencies NPM dependencies for type attribution
|
|
1003
1048
|
*/
|
|
1004
1049
|
constructor(
|
|
1005
1050
|
private readonly templateParts: TemplateStringsArray,
|
|
1006
1051
|
private readonly captures: Capture[],
|
|
1007
|
-
private readonly imports: string[] = []
|
|
1052
|
+
private readonly imports: string[] = [],
|
|
1053
|
+
private readonly dependencies: Record<string, string> = {}
|
|
1008
1054
|
) {
|
|
1009
1055
|
}
|
|
1010
1056
|
|
|
@@ -1022,7 +1068,7 @@ class TemplateProcessor {
|
|
|
1022
1068
|
templateString,
|
|
1023
1069
|
this.captures,
|
|
1024
1070
|
this.imports,
|
|
1025
|
-
|
|
1071
|
+
this.dependencies
|
|
1026
1072
|
);
|
|
1027
1073
|
|
|
1028
1074
|
// Extract the relevant part of the AST
|
|
@@ -1068,8 +1114,66 @@ class TemplateProcessor {
|
|
|
1068
1114
|
extracted = firstStatement;
|
|
1069
1115
|
}
|
|
1070
1116
|
|
|
1071
|
-
//
|
|
1072
|
-
return
|
|
1117
|
+
// Attach CaptureMarkers to capture identifiers
|
|
1118
|
+
return this.attachCaptureMarkers(extracted);
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
/**
|
|
1122
|
+
* Attaches CaptureMarkers to capture identifiers in the AST.
|
|
1123
|
+
* This allows efficient capture detection without string parsing.
|
|
1124
|
+
*
|
|
1125
|
+
* @param ast The AST to process
|
|
1126
|
+
* @returns The AST with CaptureMarkers attached
|
|
1127
|
+
*/
|
|
1128
|
+
private attachCaptureMarkers(ast: J): J {
|
|
1129
|
+
const visited = new Set<any>();
|
|
1130
|
+
return produce(ast, draft => {
|
|
1131
|
+
this.visitAndAttachMarkers(draft, visited);
|
|
1132
|
+
});
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
/**
|
|
1136
|
+
* Recursively visits AST nodes and attaches CaptureMarkers to capture identifiers.
|
|
1137
|
+
*
|
|
1138
|
+
* @param node The node to visit
|
|
1139
|
+
* @param visited Set of already visited nodes to avoid cycles
|
|
1140
|
+
*/
|
|
1141
|
+
private visitAndAttachMarkers(node: any, visited: Set<any>): void {
|
|
1142
|
+
if (!node || typeof node !== 'object' || visited.has(node)) {
|
|
1143
|
+
return;
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
// Mark as visited to avoid cycles
|
|
1147
|
+
visited.add(node);
|
|
1148
|
+
|
|
1149
|
+
// If this is an identifier that looks like a capture, attach a marker
|
|
1150
|
+
if (node.kind === J.Kind.Identifier && node.simpleName?.startsWith(PlaceholderUtils.CAPTURE_PREFIX)) {
|
|
1151
|
+
const captureInfo = PlaceholderUtils.parseCapture(node.simpleName);
|
|
1152
|
+
if (captureInfo) {
|
|
1153
|
+
// Initialize markers if needed
|
|
1154
|
+
if (!node.markers) {
|
|
1155
|
+
node.markers = { kind: 'org.openrewrite.marker.Markers', id: randomId(), markers: [] };
|
|
1156
|
+
}
|
|
1157
|
+
if (!node.markers.markers) {
|
|
1158
|
+
node.markers.markers = [];
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
// Add CaptureMarker
|
|
1162
|
+
node.markers.markers.push(new CaptureMarker(captureInfo.name));
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
// Recursively visit all properties
|
|
1167
|
+
for (const key in node) {
|
|
1168
|
+
if (node.hasOwnProperty(key)) {
|
|
1169
|
+
const value = node[key];
|
|
1170
|
+
if (Array.isArray(value)) {
|
|
1171
|
+
value.forEach(item => this.visitAndAttachMarkers(item, visited));
|
|
1172
|
+
} else if (typeof value === 'object' && value !== null) {
|
|
1173
|
+
this.visitAndAttachMarkers(value, visited);
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1073
1177
|
}
|
|
1074
1178
|
}
|
|
1075
1179
|
|
|
@@ -1110,7 +1214,6 @@ class RewriteRuleImpl implements RewriteRule {
|
|
|
1110
1214
|
async tryOn(cursor: Cursor, node: J): Promise<J | undefined> {
|
|
1111
1215
|
for (const pattern of this.before) {
|
|
1112
1216
|
const match = await pattern.match(node);
|
|
1113
|
-
|
|
1114
1217
|
if (match) {
|
|
1115
1218
|
const result = await this.after.apply(cursor, node, match);
|
|
1116
1219
|
if (result) {
|