@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.
@@ -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;IA6F5G;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAO/B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAoC/B;;;;;OAKG;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,GAAE,MAA4B,GAAG,IAAI;IAkCzE;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;CAG5B"}
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
- // Create new workspace
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
- // Remove existing workspace if it exists
123
- if (fs.existsSync(workspaceDir)) {
124
- fs.rmSync(workspaceDir, { recursive: true, force: true });
125
- }
126
- // Create workspace directory
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(workspaceDir, 'package.json'), JSON.stringify(packageJson, null, 2));
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: workspaceDir,
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
- if (fs.existsSync(workspaceDir)) {
149
- fs.rmSync(workspaceDir, { recursive: true, force: true });
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":"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"}
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":"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"}
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
- const { DependencyWorkspace } = yield import('./dependency-workspace.js');
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
- this.templateProcessor = new TemplateProcessor(this.pattern.templateParts, this.pattern.captures, this.pattern.options.imports || []);
354
- this.patternAst = yield this.templateProcessor.toAstPattern();
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 id = pattern;
413
- const captureInfo = PlaceholderUtils.parseCapture(id.simpleName);
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(captureInfo.name, target);
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, {} // dependencies not used yet
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
- if (node.kind === java_1.J.Kind.Identifier) {
617
- const id = node;
618
- return id.simpleName.startsWith(this.CAPTURE_PREFIX);
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, {} // dependencies not used in pattern matching yet
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
- // Return a copy to avoid sharing cached AST instances
903
- return (0, immer_1.produce)(extracted, draft => { });
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-20251015-160653
1
+ 8.64.0-20251016-064327
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrewrite/rewrite",
3
- "version": "8.64.0-20251015-160653",
3
+ "version": "8.64.0-20251016-064729",
4
4
  "license": "Moderne Source Available License",
5
5
  "description": "OpenRewrite JavaScript.",
6
6
  "homepage": "https://github.com/openrewrite/rewrite",
@@ -81,23 +81,30 @@ export class DependencyWorkspace {
81
81
  return cached;
82
82
  }
83
83
 
84
- // Create new workspace
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
- // Remove existing workspace if it exists
93
- if (fs.existsSync(workspaceDir)) {
94
- fs.rmSync(workspaceDir, {recursive: true, force: true});
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(workspaceDir, 'package.json'),
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: workspaceDir,
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
- if (fs.existsSync(workspaceDir)) {
127
- fs.rmSync(workspaceDir, {recursive: true, force: true});
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
- this.templateProcessor = new TemplateProcessor(
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 this.templateProcessor.toAstPattern();
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 id = pattern as J.Identifier;
472
- const captureInfo = PlaceholderUtils.parseCapture(id.simpleName);
500
+ const captureName = PlaceholderUtils.getCaptureName(pattern);
473
501
 
474
- if (!captureInfo) {
502
+ if (!captureName) {
475
503
  return false;
476
504
  }
477
505
 
478
506
  // Store the binding
479
- this.bindings.set(captureInfo.name, target);
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(this.templateParts, this.parameters, cursor, {
604
- tree,
605
- mode: JavaCoordinates.Mode.Replace
606
- }, values, this.options.imports || []);
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
- {} // dependencies not used yet
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
- if (node.kind === J.Kind.Identifier) {
753
- const id = node as J.Identifier;
754
- return id.simpleName.startsWith(this.CAPTURE_PREFIX);
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
- {} // dependencies not used in pattern matching yet
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
- // Return a copy to avoid sharing cached AST instances
1059
- return produce(extracted, draft => {});
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) {