@openrewrite/rewrite 8.64.0-20251015-160653 → 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 +12 -0
- package/dist/javascript/templating.d.ts.map +1 -1
- package/dist/javascript/templating.js +118 -23
- 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 +141 -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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"}
|
|
@@ -32,6 +32,18 @@ export declare function capture(name?: string): Capture;
|
|
|
32
32
|
export declare namespace capture {
|
|
33
33
|
var nextUnnamedId: number;
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Concise alias for `capture`. Works well for inline captures in patterns and templates.
|
|
37
|
+
*
|
|
38
|
+
* @param name Optional name for the capture. If not provided, an auto-generated name is used.
|
|
39
|
+
* @returns A Capture object
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // Inline captures with _ alias
|
|
43
|
+
* pattern`isDate(${_('dateArg')})`
|
|
44
|
+
* template`${_('dateArg')} instanceof Date`
|
|
45
|
+
*/
|
|
46
|
+
export declare const _: typeof capture;
|
|
35
47
|
/**
|
|
36
48
|
* Configuration options for patterns.
|
|
37
49
|
*/
|
|
@@ -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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"}
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.Template = exports.MatchResult = exports.Pattern = void 0;
|
|
12
|
+
exports.Template = exports.MatchResult = exports.Pattern = exports._ = void 0;
|
|
13
13
|
exports.capture = capture;
|
|
14
14
|
exports.pattern = pattern;
|
|
15
15
|
exports.template = template;
|
|
@@ -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;
|
|
@@ -128,6 +140,18 @@ function capture(name) {
|
|
|
128
140
|
}
|
|
129
141
|
// Static counter for generating unique IDs for unnamed captures
|
|
130
142
|
capture.nextUnnamedId = 1;
|
|
143
|
+
/**
|
|
144
|
+
* Concise alias for `capture`. Works well for inline captures in patterns and templates.
|
|
145
|
+
*
|
|
146
|
+
* @param name Optional name for the capture. If not provided, an auto-generated name is used.
|
|
147
|
+
* @returns A Capture object
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* // Inline captures with _ alias
|
|
151
|
+
* pattern`isDate(${_('dateArg')})`
|
|
152
|
+
* template`${_('dateArg')} instanceof Date`
|
|
153
|
+
*/
|
|
154
|
+
exports._ = capture;
|
|
131
155
|
/**
|
|
132
156
|
* Represents a pattern that can be matched against AST nodes.
|
|
133
157
|
*/
|
|
@@ -243,6 +267,7 @@ class JavaScriptTemplateSemanticallyEqualVisitor extends comparator_1.JavaScript
|
|
|
243
267
|
// Check basic structural equality first
|
|
244
268
|
if (method.name.simpleName !== otherMethod.name.simpleName ||
|
|
245
269
|
method.arguments.elements.length !== otherMethod.arguments.elements.length) {
|
|
270
|
+
this.abort();
|
|
246
271
|
return method;
|
|
247
272
|
}
|
|
248
273
|
// Check type attribution
|
|
@@ -350,8 +375,8 @@ class Matcher {
|
|
|
350
375
|
matches() {
|
|
351
376
|
return __awaiter(this, void 0, void 0, function* () {
|
|
352
377
|
if (!this.patternAst) {
|
|
353
|
-
|
|
354
|
-
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();
|
|
355
380
|
}
|
|
356
381
|
return this.matchNode(this.patternAst, this.ast);
|
|
357
382
|
});
|
|
@@ -395,8 +420,7 @@ class Matcher {
|
|
|
395
420
|
});
|
|
396
421
|
}
|
|
397
422
|
matchesParameter(identifier, other) {
|
|
398
|
-
return PlaceholderUtils.isCapture(identifier) &&
|
|
399
|
-
matcher.handleCapture(identifier, other);
|
|
423
|
+
return PlaceholderUtils.isCapture(identifier) && matcher.handleCapture(identifier, other);
|
|
400
424
|
}
|
|
401
425
|
}).compare(pattern, target));
|
|
402
426
|
});
|
|
@@ -409,13 +433,12 @@ class Matcher {
|
|
|
409
433
|
* @returns true if the capture is successful, false otherwise
|
|
410
434
|
*/
|
|
411
435
|
handleCapture(pattern, target) {
|
|
412
|
-
const
|
|
413
|
-
|
|
414
|
-
if (!captureInfo) {
|
|
436
|
+
const captureName = PlaceholderUtils.getCaptureName(pattern);
|
|
437
|
+
if (!captureName) {
|
|
415
438
|
return false;
|
|
416
439
|
}
|
|
417
440
|
// Store the binding
|
|
418
|
-
this.bindings.set(
|
|
441
|
+
this.bindings.set(captureName, target);
|
|
419
442
|
return true;
|
|
420
443
|
}
|
|
421
444
|
}
|
|
@@ -503,7 +526,7 @@ class Template {
|
|
|
503
526
|
return TemplateEngine.applyTemplate(this.templateParts, this.parameters, cursor, {
|
|
504
527
|
tree,
|
|
505
528
|
mode: JavaCoordinates.Mode.Replace
|
|
506
|
-
}, values, this.options.imports || []);
|
|
529
|
+
}, values, this.options.imports || [], this.options.dependencies || {});
|
|
507
530
|
});
|
|
508
531
|
}
|
|
509
532
|
}
|
|
@@ -530,10 +553,11 @@ class TemplateEngine {
|
|
|
530
553
|
* @param coordinates The coordinates specifying where and how to insert the generated AST
|
|
531
554
|
* @param values Map of capture names to values to replace the parameters with
|
|
532
555
|
* @param imports Import statements to prepend for type attribution
|
|
556
|
+
* @param dependencies NPM dependencies for type attribution
|
|
533
557
|
* @returns A Promise resolving to the generated AST node
|
|
534
558
|
*/
|
|
535
559
|
static applyTemplate(templateParts_1, parameters_1, cursor_1, coordinates_1) {
|
|
536
|
-
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 = {}) {
|
|
537
561
|
// Build the template string with parameter placeholders
|
|
538
562
|
const templateString = TemplateEngine.buildTemplateString(templateParts, parameters);
|
|
539
563
|
// If the template string is empty, return undefined
|
|
@@ -543,8 +567,7 @@ class TemplateEngine {
|
|
|
543
567
|
// Use cache to get or parse the compilation unit
|
|
544
568
|
// For templates, we don't have captures, so use empty array
|
|
545
569
|
const cu = yield templateCache.getOrParse(templateString, [], // templates don't have captures in the cache key
|
|
546
|
-
imports,
|
|
547
|
-
);
|
|
570
|
+
imports, dependencies);
|
|
548
571
|
// Check if there are any statements
|
|
549
572
|
if (!cu.statements || cu.statements.length === 0) {
|
|
550
573
|
return undefined;
|
|
@@ -613,12 +636,29 @@ class PlaceholderUtils {
|
|
|
613
636
|
* @returns true if the node is a capture placeholder, false otherwise
|
|
614
637
|
*/
|
|
615
638
|
static isCapture(node) {
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
639
|
+
// Check for CaptureMarker first (efficient)
|
|
640
|
+
for (const marker of node.markers.markers) {
|
|
641
|
+
if (marker instanceof CaptureMarker) {
|
|
642
|
+
return true;
|
|
643
|
+
}
|
|
619
644
|
}
|
|
620
645
|
return false;
|
|
621
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
|
+
}
|
|
622
662
|
/**
|
|
623
663
|
* Parses a capture placeholder to extract name and type constraint.
|
|
624
664
|
*
|
|
@@ -841,11 +881,13 @@ class TemplateProcessor {
|
|
|
841
881
|
* @param templateParts The string parts of the template
|
|
842
882
|
* @param captures The captures between the string parts
|
|
843
883
|
* @param imports Import statements to prepend for type attribution
|
|
884
|
+
* @param dependencies NPM dependencies for type attribution
|
|
844
885
|
*/
|
|
845
|
-
constructor(templateParts, captures, imports = []) {
|
|
886
|
+
constructor(templateParts, captures, imports = [], dependencies = {}) {
|
|
846
887
|
this.templateParts = templateParts;
|
|
847
888
|
this.captures = captures;
|
|
848
889
|
this.imports = imports;
|
|
890
|
+
this.dependencies = dependencies;
|
|
849
891
|
}
|
|
850
892
|
/**
|
|
851
893
|
* Converts the template to an AST pattern.
|
|
@@ -857,8 +899,7 @@ class TemplateProcessor {
|
|
|
857
899
|
// Combine template parts and placeholders
|
|
858
900
|
const templateString = this.buildTemplateString();
|
|
859
901
|
// Use cache to get or parse the compilation unit
|
|
860
|
-
const cu = yield templateCache.getOrParse(templateString, this.captures, this.imports,
|
|
861
|
-
);
|
|
902
|
+
const cu = yield templateCache.getOrParse(templateString, this.captures, this.imports, this.dependencies);
|
|
862
903
|
// Extract the relevant part of the AST
|
|
863
904
|
return this.extractPatternFromAst(cu);
|
|
864
905
|
});
|
|
@@ -899,8 +940,62 @@ class TemplateProcessor {
|
|
|
899
940
|
// Otherwise, return the statement itself
|
|
900
941
|
extracted = firstStatement;
|
|
901
942
|
}
|
|
902
|
-
//
|
|
903
|
-
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
|
+
}
|
|
904
999
|
}
|
|
905
1000
|
}
|
|
906
1001
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templating.js","sourceRoot":"","sources":["../../src/javascript/templating.ts"],"names":[],"mappings":"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"}
|
|
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.
|
|
@@ -148,6 +164,19 @@ export function capture(name?: string): Capture {
|
|
|
148
164
|
// Static counter for generating unique IDs for unnamed captures
|
|
149
165
|
capture.nextUnnamedId = 1;
|
|
150
166
|
|
|
167
|
+
/**
|
|
168
|
+
* Concise alias for `capture`. Works well for inline captures in patterns and templates.
|
|
169
|
+
*
|
|
170
|
+
* @param name Optional name for the capture. If not provided, an auto-generated name is used.
|
|
171
|
+
* @returns A Capture object
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* // Inline captures with _ alias
|
|
175
|
+
* pattern`isDate(${_('dateArg')})`
|
|
176
|
+
* template`${_('dateArg')} instanceof Date`
|
|
177
|
+
*/
|
|
178
|
+
export const _ = capture;
|
|
179
|
+
|
|
151
180
|
/**
|
|
152
181
|
* Configuration options for patterns.
|
|
153
182
|
*/
|
|
@@ -290,6 +319,7 @@ class JavaScriptTemplateSemanticallyEqualVisitor extends JavaScriptComparatorVis
|
|
|
290
319
|
// Check basic structural equality first
|
|
291
320
|
if (method.name.simpleName !== otherMethod.name.simpleName ||
|
|
292
321
|
method.arguments.elements.length !== otherMethod.arguments.elements.length) {
|
|
322
|
+
this.abort();
|
|
293
323
|
return method;
|
|
294
324
|
}
|
|
295
325
|
|
|
@@ -384,7 +414,6 @@ class JavaScriptTemplateSemanticallyEqualVisitor extends JavaScriptComparatorVis
|
|
|
384
414
|
class Matcher {
|
|
385
415
|
private readonly bindings = new Map<string, J>();
|
|
386
416
|
private patternAst?: J;
|
|
387
|
-
private templateProcessor?: TemplateProcessor;
|
|
388
417
|
|
|
389
418
|
/**
|
|
390
419
|
* Creates a new matcher for a pattern against an AST node.
|
|
@@ -405,12 +434,13 @@ class Matcher {
|
|
|
405
434
|
*/
|
|
406
435
|
async matches(): Promise<boolean> {
|
|
407
436
|
if (!this.patternAst) {
|
|
408
|
-
|
|
437
|
+
const templateProcessor = new TemplateProcessor(
|
|
409
438
|
this.pattern.templateParts,
|
|
410
439
|
this.pattern.captures,
|
|
411
|
-
this.pattern.options.imports || []
|
|
440
|
+
this.pattern.options.imports || [],
|
|
441
|
+
this.pattern.options.dependencies || {}
|
|
412
442
|
);
|
|
413
|
-
this.patternAst = await
|
|
443
|
+
this.patternAst = await templateProcessor.toAstPattern();
|
|
414
444
|
}
|
|
415
445
|
|
|
416
446
|
return this.matchNode(this.patternAst, this.ast);
|
|
@@ -454,8 +484,7 @@ class Matcher {
|
|
|
454
484
|
}
|
|
455
485
|
|
|
456
486
|
private matchesParameter(identifier: J.Identifier, other: J): boolean {
|
|
457
|
-
return PlaceholderUtils.isCapture(identifier) &&
|
|
458
|
-
matcher.handleCapture(identifier, other);
|
|
487
|
+
return PlaceholderUtils.isCapture(identifier) && matcher.handleCapture(identifier, other);
|
|
459
488
|
}
|
|
460
489
|
}).compare(pattern, target));
|
|
461
490
|
}
|
|
@@ -468,15 +497,14 @@ class Matcher {
|
|
|
468
497
|
* @returns true if the capture is successful, false otherwise
|
|
469
498
|
*/
|
|
470
499
|
private handleCapture(pattern: J, target: J): boolean {
|
|
471
|
-
const
|
|
472
|
-
const captureInfo = PlaceholderUtils.parseCapture(id.simpleName);
|
|
500
|
+
const captureName = PlaceholderUtils.getCaptureName(pattern);
|
|
473
501
|
|
|
474
|
-
if (!
|
|
502
|
+
if (!captureName) {
|
|
475
503
|
return false;
|
|
476
504
|
}
|
|
477
505
|
|
|
478
506
|
// Store the binding
|
|
479
|
-
this.bindings.set(
|
|
507
|
+
this.bindings.set(captureName, target);
|
|
480
508
|
return true;
|
|
481
509
|
}
|
|
482
510
|
}
|
|
@@ -600,10 +628,18 @@ export class Template {
|
|
|
600
628
|
* @returns A Promise resolving to the generated AST node
|
|
601
629
|
*/
|
|
602
630
|
async apply(cursor: Cursor, tree: J, values?: Pick<Map<string, J>, 'get'>): Promise<J | undefined> {
|
|
603
|
-
return TemplateEngine.applyTemplate(
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
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
|
+
);
|
|
607
643
|
}
|
|
608
644
|
}
|
|
609
645
|
|
|
@@ -642,6 +678,7 @@ class TemplateEngine {
|
|
|
642
678
|
* @param coordinates The coordinates specifying where and how to insert the generated AST
|
|
643
679
|
* @param values Map of capture names to values to replace the parameters with
|
|
644
680
|
* @param imports Import statements to prepend for type attribution
|
|
681
|
+
* @param dependencies NPM dependencies for type attribution
|
|
645
682
|
* @returns A Promise resolving to the generated AST node
|
|
646
683
|
*/
|
|
647
684
|
static async applyTemplate(
|
|
@@ -650,7 +687,8 @@ class TemplateEngine {
|
|
|
650
687
|
cursor: Cursor,
|
|
651
688
|
coordinates: JavaCoordinates,
|
|
652
689
|
values: Pick<Map<string, J>, 'get'> = new Map(),
|
|
653
|
-
imports: string[] = []
|
|
690
|
+
imports: string[] = [],
|
|
691
|
+
dependencies: Record<string, string> = {}
|
|
654
692
|
): Promise<J | undefined> {
|
|
655
693
|
// Build the template string with parameter placeholders
|
|
656
694
|
const templateString = TemplateEngine.buildTemplateString(templateParts, parameters);
|
|
@@ -666,7 +704,7 @@ class TemplateEngine {
|
|
|
666
704
|
templateString,
|
|
667
705
|
[], // templates don't have captures in the cache key
|
|
668
706
|
imports,
|
|
669
|
-
|
|
707
|
+
dependencies
|
|
670
708
|
);
|
|
671
709
|
|
|
672
710
|
// Check if there are any statements
|
|
@@ -749,13 +787,32 @@ class PlaceholderUtils {
|
|
|
749
787
|
* @returns true if the node is a capture placeholder, false otherwise
|
|
750
788
|
*/
|
|
751
789
|
static isCapture(node: J): boolean {
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
790
|
+
// Check for CaptureMarker first (efficient)
|
|
791
|
+
for (const marker of node.markers.markers) {
|
|
792
|
+
if (marker instanceof CaptureMarker) {
|
|
793
|
+
return true;
|
|
794
|
+
}
|
|
755
795
|
}
|
|
756
796
|
return false;
|
|
757
797
|
}
|
|
758
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
|
+
|
|
759
816
|
/**
|
|
760
817
|
* Parses a capture placeholder to extract name and type constraint.
|
|
761
818
|
*
|
|
@@ -987,11 +1044,13 @@ class TemplateProcessor {
|
|
|
987
1044
|
* @param templateParts The string parts of the template
|
|
988
1045
|
* @param captures The captures between the string parts
|
|
989
1046
|
* @param imports Import statements to prepend for type attribution
|
|
1047
|
+
* @param dependencies NPM dependencies for type attribution
|
|
990
1048
|
*/
|
|
991
1049
|
constructor(
|
|
992
1050
|
private readonly templateParts: TemplateStringsArray,
|
|
993
1051
|
private readonly captures: Capture[],
|
|
994
|
-
private readonly imports: string[] = []
|
|
1052
|
+
private readonly imports: string[] = [],
|
|
1053
|
+
private readonly dependencies: Record<string, string> = {}
|
|
995
1054
|
) {
|
|
996
1055
|
}
|
|
997
1056
|
|
|
@@ -1009,7 +1068,7 @@ class TemplateProcessor {
|
|
|
1009
1068
|
templateString,
|
|
1010
1069
|
this.captures,
|
|
1011
1070
|
this.imports,
|
|
1012
|
-
|
|
1071
|
+
this.dependencies
|
|
1013
1072
|
);
|
|
1014
1073
|
|
|
1015
1074
|
// Extract the relevant part of the AST
|
|
@@ -1055,8 +1114,66 @@ class TemplateProcessor {
|
|
|
1055
1114
|
extracted = firstStatement;
|
|
1056
1115
|
}
|
|
1057
1116
|
|
|
1058
|
-
//
|
|
1059
|
-
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
|
+
}
|
|
1060
1177
|
}
|
|
1061
1178
|
}
|
|
1062
1179
|
|
|
@@ -1097,7 +1214,6 @@ class RewriteRuleImpl implements RewriteRule {
|
|
|
1097
1214
|
async tryOn(cursor: Cursor, node: J): Promise<J | undefined> {
|
|
1098
1215
|
for (const pattern of this.before) {
|
|
1099
1216
|
const match = await pattern.match(node);
|
|
1100
|
-
|
|
1101
1217
|
if (match) {
|
|
1102
1218
|
const result = await this.after.apply(cursor, node, match);
|
|
1103
1219
|
if (result) {
|