@openrewrite/rewrite 8.67.0-20251106-140126 → 8.67.0-20251107-071946

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/java/tree.d.ts +2 -0
  2. package/dist/java/tree.d.ts.map +1 -1
  3. package/dist/java/tree.js +5 -1
  4. package/dist/java/tree.js.map +1 -1
  5. package/dist/javascript/assertions.js +2 -2
  6. package/dist/javascript/assertions.js.map +1 -1
  7. package/dist/javascript/format.js +1 -1
  8. package/dist/javascript/format.js.map +1 -1
  9. package/dist/javascript/templating/engine.d.ts +34 -8
  10. package/dist/javascript/templating/engine.d.ts.map +1 -1
  11. package/dist/javascript/templating/engine.js +317 -60
  12. package/dist/javascript/templating/engine.js.map +1 -1
  13. package/dist/javascript/templating/pattern.d.ts +11 -0
  14. package/dist/javascript/templating/pattern.d.ts.map +1 -1
  15. package/dist/javascript/templating/pattern.js +36 -295
  16. package/dist/javascript/templating/pattern.js.map +1 -1
  17. package/dist/javascript/templating/placeholder-replacement.d.ts +1 -1
  18. package/dist/javascript/templating/placeholder-replacement.d.ts.map +1 -1
  19. package/dist/javascript/templating/template.d.ts +9 -2
  20. package/dist/javascript/templating/template.d.ts.map +1 -1
  21. package/dist/javascript/templating/template.js +37 -0
  22. package/dist/javascript/templating/template.js.map +1 -1
  23. package/dist/javascript/templating/types.d.ts +26 -11
  24. package/dist/javascript/templating/types.d.ts.map +1 -1
  25. package/dist/javascript/templating/utils.d.ts +41 -22
  26. package/dist/javascript/templating/utils.d.ts.map +1 -1
  27. package/dist/javascript/templating/utils.js +111 -76
  28. package/dist/javascript/templating/utils.js.map +1 -1
  29. package/dist/version.txt +1 -1
  30. package/package.json +3 -1
  31. package/src/java/tree.ts +2 -0
  32. package/src/javascript/assertions.ts +1 -1
  33. package/src/javascript/format.ts +1 -1
  34. package/src/javascript/templating/engine.ts +376 -54
  35. package/src/javascript/templating/pattern.ts +55 -322
  36. package/src/javascript/templating/placeholder-replacement.ts +1 -1
  37. package/src/javascript/templating/template.ts +57 -3
  38. package/src/javascript/templating/types.ts +27 -11
  39. package/src/javascript/templating/utils.ts +113 -81
@@ -27,15 +27,10 @@ exports.pattern = pattern;
27
27
  * limitations under the License.
28
28
  */
29
29
  const __1 = require("../..");
30
- const java_1 = require("../../java");
31
- const index_1 = require("../index");
32
- const visitor_1 = require("../visitor");
33
- const visitor_2 = require("../../visitor");
34
- const util_1 = require("../../util");
35
30
  const capture_1 = require("./capture");
36
31
  const comparator_1 = require("./comparator");
37
32
  const utils_1 = require("./utils");
38
- const tree_1 = require("../../tree");
33
+ const engine_1 = require("./engine");
39
34
  /**
40
35
  * Builder for creating patterns programmatically.
41
36
  * Use when pattern structure is not known at compile time.
@@ -179,8 +174,42 @@ class Pattern {
179
174
  */
180
175
  configure(options) {
181
176
  this._options = Object.assign(Object.assign({}, this._options), options);
177
+ // Invalidate cache when configuration changes
178
+ this._cachedAstPattern = undefined;
182
179
  return this;
183
180
  }
181
+ /**
182
+ * Gets the AST pattern for this pattern, using two-level caching:
183
+ * 1. Instance-level cache (fastest - this pattern instance)
184
+ * 2. Global LRU cache (fast - shared across pattern instances with same code)
185
+ * 3. Compute via TemplateProcessor (slow - parse and process)
186
+ *
187
+ * @returns The cached or newly computed pattern AST
188
+ * @internal
189
+ */
190
+ getAstPattern() {
191
+ return __awaiter(this, void 0, void 0, function* () {
192
+ // Level 1: Instance cache (fastest path)
193
+ if (this._cachedAstPattern) {
194
+ return this._cachedAstPattern;
195
+ }
196
+ // Generate cache key for global lookup
197
+ const contextStatements = this._options.context || this._options.imports || [];
198
+ const cacheKey = (0, utils_1.generateCacheKey)(this.templateParts, this.captures.map(c => c.getName()).join(','), contextStatements, this._options.dependencies || {});
199
+ // Level 2: Global cache (fast path - shared with Template)
200
+ const cached = utils_1.globalAstCache.get(cacheKey);
201
+ if (cached) {
202
+ this._cachedAstPattern = cached;
203
+ return cached;
204
+ }
205
+ // Level 3: Compute via TemplateEngine (slow path)
206
+ const result = yield engine_1.TemplateEngine.getPatternTree(this.templateParts, this.captures, contextStatements, this._options.dependencies || {});
207
+ // Cache in both levels
208
+ utils_1.globalAstCache.set(cacheKey, result);
209
+ this._cachedAstPattern = result;
210
+ return result;
211
+ });
212
+ }
184
213
  /**
185
214
  * Creates a matcher for this pattern against a specific AST node.
186
215
  *
@@ -315,10 +344,7 @@ class Matcher {
315
344
  matches() {
316
345
  return __awaiter(this, void 0, void 0, function* () {
317
346
  if (!this.patternAst) {
318
- // Prefer 'context' over deprecated 'imports'
319
- const contextStatements = this.pattern.options.context || this.pattern.options.imports || [];
320
- const templateProcessor = new TemplateProcessor(this.pattern.templateParts, this.pattern.captures, contextStatements, this.pattern.options.dependencies || {});
321
- this.patternAst = yield templateProcessor.toAstPattern();
347
+ this.patternAst = yield this.pattern.getAstPattern();
322
348
  }
323
349
  return this.matchNode(this.patternAst, this.ast);
324
350
  });
@@ -459,291 +485,6 @@ class Matcher {
459
485
  return true;
460
486
  }
461
487
  }
462
- /**
463
- * Visitor that attaches CaptureMarkers to capture identifiers in the AST.
464
- * Markers are attached to Identifiers, then moved up to wrappers (RightPadded, ExpressionStatement).
465
- * Uses JavaScriptVisitor to properly handle AST traversal and avoid cycles in Type objects.
466
- */
467
- class MarkerAttachmentVisitor extends visitor_1.JavaScriptVisitor {
468
- constructor(captures) {
469
- super();
470
- this.captures = captures;
471
- }
472
- /**
473
- * Attaches CaptureMarker to capture identifiers.
474
- */
475
- visitIdentifier(ident, p) {
476
- const _super = Object.create(null, {
477
- visitIdentifier: { get: () => super.visitIdentifier }
478
- });
479
- return __awaiter(this, void 0, void 0, function* () {
480
- var _a, _b;
481
- // First call parent to handle standard visitation
482
- const visited = yield _super.visitIdentifier.call(this, ident, p);
483
- if (!visited || visited.kind !== java_1.J.Kind.Identifier) {
484
- return visited;
485
- }
486
- ident = visited;
487
- // Check if this is a capture placeholder
488
- if ((_a = ident.simpleName) === null || _a === void 0 ? void 0 : _a.startsWith(utils_1.PlaceholderUtils.CAPTURE_PREFIX)) {
489
- const captureInfo = utils_1.PlaceholderUtils.parseCapture(ident.simpleName);
490
- if (captureInfo) {
491
- // Find the original capture object to get variadic options and constraint
492
- const captureObj = this.captures.find(c => c.getName() === captureInfo.name);
493
- const variadicOptions = captureObj === null || captureObj === void 0 ? void 0 : captureObj.getVariadicOptions();
494
- const constraint = (_b = captureObj === null || captureObj === void 0 ? void 0 : captureObj.getConstraint) === null || _b === void 0 ? void 0 : _b.call(captureObj);
495
- // Add CaptureMarker to the Identifier with constraint
496
- const marker = new utils_1.CaptureMarker(captureInfo.name, variadicOptions, constraint);
497
- return (0, util_1.updateIfChanged)(ident, {
498
- markers: Object.assign(Object.assign({}, ident.markers), { markers: [...ident.markers.markers, marker] })
499
- });
500
- }
501
- }
502
- return ident;
503
- });
504
- }
505
- /**
506
- * Propagates markers from element to RightPadded wrapper.
507
- */
508
- visitRightPadded(right, p) {
509
- return __awaiter(this, void 0, void 0, function* () {
510
- if (!(0, tree_1.isTree)(right.element)) {
511
- return right;
512
- }
513
- const visitedElement = yield this.visit(right.element, p);
514
- if (visitedElement && visitedElement !== right.element) {
515
- return (0, visitor_2.produceAsync)(right, (draft) => __awaiter(this, void 0, void 0, function* () {
516
- // Visit element first
517
- if (right.element && right.element.kind) {
518
- // Check if element has a CaptureMarker
519
- const elementMarker = utils_1.PlaceholderUtils.getCaptureMarker(visitedElement);
520
- if (elementMarker) {
521
- draft.markers.markers.push(elementMarker);
522
- }
523
- else {
524
- draft.element = visitedElement;
525
- }
526
- }
527
- }));
528
- }
529
- return right;
530
- });
531
- }
532
- /**
533
- * Propagates markers from expression to ExpressionStatement.
534
- */
535
- visitExpressionStatement(expressionStatement, p) {
536
- return __awaiter(this, void 0, void 0, function* () {
537
- // Visit the expression
538
- const visitedExpression = yield this.visit(expressionStatement.expression, p);
539
- // Check if expression has a CaptureMarker
540
- const expressionMarker = utils_1.PlaceholderUtils.getCaptureMarker(visitedExpression);
541
- if (expressionMarker) {
542
- return (0, util_1.updateIfChanged)(expressionStatement, {
543
- markers: Object.assign(Object.assign({}, expressionStatement.markers), { markers: [...expressionStatement.markers.markers, expressionMarker] }),
544
- });
545
- }
546
- // No marker to move, just update with visited expression
547
- return (0, util_1.updateIfChanged)(expressionStatement, {
548
- expression: visitedExpression
549
- });
550
- });
551
- }
552
- }
553
- /**
554
- * Processor for template strings.
555
- * Converts a template string with captures into an AST pattern.
556
- */
557
- class TemplateProcessor {
558
- /**
559
- * Creates a new template processor.
560
- *
561
- * @param templateParts The string parts of the template
562
- * @param captures The captures between the string parts (can be Capture or Any)
563
- * @param contextStatements Context declarations (imports, types, etc.) to prepend for type attribution
564
- * @param dependencies NPM dependencies for type attribution
565
- */
566
- constructor(templateParts, captures, contextStatements = [], dependencies = {}) {
567
- this.templateParts = templateParts;
568
- this.captures = captures;
569
- this.contextStatements = contextStatements;
570
- this.dependencies = dependencies;
571
- }
572
- /**
573
- * Converts the template to an AST pattern.
574
- *
575
- * @returns A Promise resolving to the AST pattern
576
- */
577
- toAstPattern() {
578
- return __awaiter(this, void 0, void 0, function* () {
579
- // Generate type preamble for captures with types
580
- const preamble = this.generateTypePreamble();
581
- // Combine template parts and placeholders
582
- const templateString = this.buildTemplateString();
583
- // Add preamble to context statements (so they're skipped during extraction)
584
- const contextWithPreamble = preamble.length > 0
585
- ? [...this.contextStatements, ...preamble]
586
- : this.contextStatements;
587
- // Use cache to get or parse the compilation unit
588
- const cu = yield utils_1.templateCache.getOrParse(templateString, this.captures, contextWithPreamble, this.dependencies);
589
- // Extract the relevant part of the AST
590
- // The pattern code is always the last statement (after context + preamble)
591
- return yield this.extractPatternFromAst(cu);
592
- });
593
- }
594
- /**
595
- * Generates type preamble declarations for captures with type annotations.
596
- *
597
- * @returns Array of preamble statements
598
- */
599
- generateTypePreamble() {
600
- const preamble = [];
601
- for (const capture of this.captures) {
602
- const captureName = capture[capture_1.CAPTURE_NAME_SYMBOL] || capture.getName();
603
- const captureType = capture[capture_1.CAPTURE_TYPE_SYMBOL];
604
- if (captureType) {
605
- // Convert Type to string if needed
606
- const typeString = typeof captureType === 'string'
607
- ? captureType
608
- : this.typeToString(captureType);
609
- const placeholder = utils_1.PlaceholderUtils.createCapture(captureName, undefined);
610
- preamble.push(`let ${placeholder}: ${typeString};`);
611
- }
612
- else {
613
- const placeholder = utils_1.PlaceholderUtils.createCapture(captureName, undefined);
614
- preamble.push(`let ${placeholder};`);
615
- }
616
- }
617
- return preamble;
618
- }
619
- /**
620
- * Builds a template string with placeholders for captures.
621
- * If the template looks like a block pattern, wraps it in a function.
622
- *
623
- * @returns The template string
624
- */
625
- buildTemplateString() {
626
- let result = '';
627
- for (let i = 0; i < this.templateParts.length; i++) {
628
- result += this.templateParts[i];
629
- if (i < this.captures.length) {
630
- const capture = this.captures[i];
631
- // Use symbol to access capture name without triggering Proxy
632
- const captureName = capture[capture_1.CAPTURE_NAME_SYMBOL] || capture.getName();
633
- result += utils_1.PlaceholderUtils.createCapture(captureName, undefined);
634
- }
635
- }
636
- // Check if this looks like a block pattern (starts with { and contains statement keywords)
637
- const trimmed = result.trim();
638
- if (trimmed.startsWith('{') && trimmed.endsWith('}')) {
639
- // Check for statement keywords that indicate this is a block, not an object literal
640
- const hasStatementKeywords = /\b(return|if|for|while|do|switch|try|throw|break|continue|const|let|var|function|class)\b/.test(result);
641
- if (hasStatementKeywords) {
642
- // Wrap in a function to ensure it parses as a block
643
- return `function __PATTERN__() ${result}`;
644
- }
645
- }
646
- return result;
647
- }
648
- /**
649
- * Converts a Type instance to a TypeScript type string.
650
- *
651
- * @param type The Type instance
652
- * @returns A TypeScript type string
653
- */
654
- typeToString(type) {
655
- // Handle Type.Class and Type.ShallowClass - return their fully qualified names
656
- if (type.kind === java_1.Type.Kind.Class || type.kind === java_1.Type.Kind.ShallowClass) {
657
- const classType = type;
658
- return classType.fullyQualifiedName;
659
- }
660
- // Handle Type.Primitive - map to TypeScript primitive types
661
- if (type.kind === java_1.Type.Kind.Primitive) {
662
- const primitiveType = type;
663
- switch (primitiveType.keyword) {
664
- case 'String':
665
- return 'string';
666
- case 'boolean':
667
- return 'boolean';
668
- case 'double':
669
- case 'float':
670
- case 'int':
671
- case 'long':
672
- case 'short':
673
- case 'byte':
674
- return 'number';
675
- case 'void':
676
- return 'void';
677
- default:
678
- return 'any';
679
- }
680
- }
681
- // Handle Type.Array - render component type plus []
682
- if (type.kind === java_1.Type.Kind.Array) {
683
- const arrayType = type;
684
- const componentTypeString = this.typeToString(arrayType.elemType);
685
- return `${componentTypeString}[]`;
686
- }
687
- // For other types, return 'any' as a fallback
688
- // TODO: Implement proper Type to string conversion for other Type.Kind values
689
- return 'any';
690
- }
691
- /**
692
- * Extracts the pattern from the parsed AST.
693
- * The pattern code is always the last statement in the compilation unit
694
- * (after all context statements and type preamble declarations).
695
- *
696
- * @param cu The compilation unit
697
- * @returns The extracted pattern
698
- */
699
- extractPatternFromAst(cu) {
700
- return __awaiter(this, void 0, void 0, function* () {
701
- var _a;
702
- // Check if we have any statements
703
- if (!cu.statements || cu.statements.length === 0) {
704
- throw new Error(`No statements found in compilation unit`);
705
- }
706
- // The pattern code is always the last statement
707
- const lastStatement = cu.statements[cu.statements.length - 1].element;
708
- let extracted;
709
- // Check if this is our wrapper function for block patterns
710
- if (lastStatement.kind === java_1.J.Kind.MethodDeclaration) {
711
- const method = lastStatement;
712
- if (((_a = method.name) === null || _a === void 0 ? void 0 : _a.simpleName) === '__PATTERN__' && method.body) {
713
- // Extract the block from the wrapper function
714
- extracted = method.body;
715
- }
716
- else {
717
- extracted = lastStatement;
718
- }
719
- }
720
- else if (lastStatement.kind === index_1.JS.Kind.ExpressionStatement) {
721
- // If the statement is an expression statement, extract the expression
722
- extracted = lastStatement.expression;
723
- }
724
- else {
725
- // Otherwise, return the statement itself
726
- extracted = lastStatement;
727
- }
728
- // Attach CaptureMarkers to capture identifiers
729
- return yield this.attachCaptureMarkers(extracted);
730
- });
731
- }
732
- /**
733
- * Attaches CaptureMarkers to capture identifiers in the AST.
734
- * This allows efficient capture detection without string parsing.
735
- * Uses JavaScriptVisitor to properly handle AST traversal and avoid cycles in Type objects.
736
- *
737
- * @param ast The AST to process
738
- * @returns The AST with CaptureMarkers attached
739
- */
740
- attachCaptureMarkers(ast) {
741
- return __awaiter(this, void 0, void 0, function* () {
742
- const visitor = new MarkerAttachmentVisitor(this.captures);
743
- return (yield visitor.visit(ast, undefined));
744
- });
745
- }
746
- }
747
488
  /**
748
489
  * Tagged template function for creating patterns.
749
490
  *
@@ -1 +1 @@
1
- {"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../../src/javascript/templating/pattern.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../../src/javascript/templating/pattern.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Cursor } from '../..';
2
2
  import { J } from '../../java';
3
3
  import { JS } from '..';
4
4
  import { JavaScriptVisitor } from '../visitor';
5
- import { Parameter } from './engine';
5
+ import { Parameter } from './types';
6
6
  /**
7
7
  * Visitor that replaces placeholder nodes with actual parameter values.
8
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"placeholder-replacement.d.ts","sourceRoot":"","sources":["../../../src/javascript/templating/placeholder-replacement.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,MAAM,EAAS,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,CAAC,EAAC,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAC,EAAE,EAAC,MAAM,IAAI,CAAC;AACtB,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAI7C,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAC;AAEnC;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,iBAAiB,CAAC,GAAG,CAAC;IAEjE,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAFX,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EACrC,MAAM,GAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAa,EACrD,WAAW,GAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAa;IAK7G;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAcnB;;;;;;;OAOG;YACW,sBAAsB;IAqI9B,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAanE,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAiCjF,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IA+B1D,sBAAsB,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAe1G;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAiF1B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;CAS7B"}
1
+ {"version":3,"file":"placeholder-replacement.d.ts","sourceRoot":"","sources":["../../../src/javascript/templating/placeholder-replacement.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,MAAM,EAAS,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,CAAC,EAAC,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAC,EAAE,EAAC,MAAM,IAAI,CAAC;AACtB,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAI7C,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAElC;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,iBAAiB,CAAC,GAAG,CAAC;IAEjE,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAFX,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EACrC,MAAM,GAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAa,EACrD,WAAW,GAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAa;IAK7G;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAcnB;;;;;;;OAOG;YACW,sBAAsB;IAqI9B,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAanE,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAiCjF,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IA+B1D,sBAAsB,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAe1G;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAiF1B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;CAS7B"}
@@ -1,7 +1,6 @@
1
1
  import { Cursor, Tree } from '../..';
2
2
  import { J } from '../../java';
3
- import { TemplateOptions, TemplateParameter, Capture } from './types';
4
- import { Parameter } from './engine';
3
+ import { Capture, Parameter, TemplateOptions, TemplateParameter } from './types';
5
4
  /**
6
5
  * Coordinates for template application.
7
6
  */
@@ -109,6 +108,7 @@ export declare class Template {
109
108
  private readonly templateParts;
110
109
  private readonly parameters;
111
110
  private options;
111
+ private _cachedTemplate?;
112
112
  /**
113
113
  * Creates a new builder for constructing templates programmatically.
114
114
  *
@@ -144,6 +144,13 @@ export declare class Template {
144
144
  * })
145
145
  */
146
146
  configure(options: TemplateOptions): Template;
147
+ /**
148
+ * Gets the cached template tree or computes it.
149
+ * Uses two-level caching: instance cache → global cache → compute.
150
+ *
151
+ * @returns A Promise resolving to the template AST tree
152
+ */
153
+ private getTemplate;
147
154
  /**
148
155
  * Applies this template and returns the resulting tree.
149
156
  *
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/javascript/templating/template.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,OAAO,CAAC;AACnC,OAAO,EAAC,CAAC,EAAC,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAC,eAAe,EAAE,iBAAiB,EAAE,OAAO,EAAC,MAAM,SAAS,CAAC;AAIpE,OAAO,EAAiB,SAAS,EAAC,MAAM,UAAU,CAAC;AAEnD;;GAEG;AACH,KAAK,eAAe,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,GAAG,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC;IAC/B,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC;CAC/B,CAAC;AAEF,kBAAU,eAAe,CAAC;IAEtB,KAAY,QAAQ,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,WAAW,CAAC;IAE9E,KAAY,IAAI;QACZ,MAAM,IAAA;QACN,KAAK,IAAA;QACL,OAAO,IAAA;KACV;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAA2B;IAEzC;;;;;OAKG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAcvB;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAWrC;;;;OAIG;IACH,KAAK,IAAI,QAAQ;CAiBpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBAAa,QAAQ;IA2Bb,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IA3B/B,OAAO,CAAC,OAAO,CAAuB;IAEtC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,OAAO,IAAI,eAAe;IAIjC;;;;;OAKG;gBAEkB,aAAa,EAAE,oBAAoB,EACnC,UAAU,EAAE,SAAS,EAAE;IAI5C;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ;IAK7C;;;;;;;OAOG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;CAoDpJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,UAAU,EAAE,iBAAiB,EAAE,GAAG,QAAQ,CAQpG;AAED,YAAY,EAAC,eAAe,EAAC,CAAC"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/javascript/templating/template.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,OAAO,CAAC;AACnC,OAAO,EAAC,CAAC,EAAC,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAM/E;;GAEG;AACH,KAAK,eAAe,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,GAAG,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC;IAC/B,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC;CAC/B,CAAC;AAEF,kBAAU,eAAe,CAAC;IAEtB,KAAY,QAAQ,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,WAAW,CAAC;IAE9E,KAAY,IAAI;QACZ,MAAM,IAAA;QACN,KAAK,IAAA;QACL,OAAO,IAAA;KACV;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAA2B;IAEzC;;;;;OAKG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAcvB;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAWrC;;;;OAIG;IACH,KAAK,IAAI,QAAQ;CAiBpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBAAa,QAAQ;IA4Bb,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IA5B/B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAI;IAE5B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,OAAO,IAAI,eAAe;IAIjC;;;;;OAKG;gBAEkB,aAAa,EAAE,oBAAoB,EACnC,UAAU,EAAE,SAAS,EAAE;IAI5C;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ;IAO7C;;;;;OAKG;YACW,WAAW;IAsCzB;;;;;;;OAOG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;CA2DpJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,UAAU,EAAE,iBAAiB,EAAE,GAAG,QAAQ,CAQpG;AAED,YAAY,EAAC,eAAe,EAAC,CAAC"}
@@ -193,8 +193,40 @@ class Template {
193
193
  */
194
194
  configure(options) {
195
195
  this.options = Object.assign(Object.assign({}, this.options), options);
196
+ // Invalidate cache when configuration changes
197
+ this._cachedTemplate = undefined;
196
198
  return this;
197
199
  }
200
+ /**
201
+ * Gets the cached template tree or computes it.
202
+ * Uses two-level caching: instance cache → global cache → compute.
203
+ *
204
+ * @returns A Promise resolving to the template AST tree
205
+ */
206
+ getTemplate() {
207
+ return __awaiter(this, void 0, void 0, function* () {
208
+ // Level 1: Instance cache (fastest path)
209
+ if (this._cachedTemplate) {
210
+ return this._cachedTemplate;
211
+ }
212
+ // Generate cache key for global lookup
213
+ const contextStatements = this.options.context || this.options.imports || [];
214
+ const paramNames = this.parameters.map((p, i) => `param${i}`).join(',');
215
+ const cacheKey = (0, utils_1.generateCacheKey)(this.templateParts, paramNames, contextStatements, this.options.dependencies || {});
216
+ // Level 2: Global cache (fast path - shared with Pattern)
217
+ const cached = utils_1.globalAstCache.get(cacheKey);
218
+ if (cached) {
219
+ this._cachedTemplate = cached;
220
+ return cached;
221
+ }
222
+ // Level 3: Compute via TemplateEngine (slow path)
223
+ const result = yield engine_1.TemplateEngine.getTemplateTree(this.templateParts, this.parameters, contextStatements, this.options.dependencies || {});
224
+ // Cache in both levels
225
+ utils_1.globalAstCache.set(cacheKey, result);
226
+ this._cachedTemplate = result;
227
+ return result;
228
+ });
229
+ }
198
230
  /**
199
231
  * Applies this template and returns the resulting tree.
200
232
  *
@@ -241,8 +273,13 @@ class Template {
241
273
  normalizedValues = normalized;
242
274
  }
243
275
  }
276
+ // Get the cached template tree (uses two-level caching)
277
+ const templateTree = yield this.getTemplate();
244
278
  // Prefer 'context' over deprecated 'imports'
245
279
  const contextStatements = this.options.context || this.options.imports || [];
280
+ // Apply template with value substitution using TemplateEngine
281
+ // Note: TemplateEngine.applyTemplate will call getTemplateTree again,
282
+ // but that's okay because it hits the templateCache which is fast
246
283
  return engine_1.TemplateEngine.applyTemplate(this.templateParts, this.parameters, cursor, {
247
284
  tree,
248
285
  mode: JavaCoordinates.Mode.Replace
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/javascript/templating/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/javascript/templating/template.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Cursor, Tree } from '../..';
2
2
  import { J, Type } from '../../java';
3
- import type { Pattern, MatchResult } from "./pattern";
3
+ import type { MatchResult, Pattern } from "./pattern";
4
4
  import type { Template } from "./template";
5
5
  /**
6
6
  * Options for variadic captures that match zero or more nodes in a sequence.
@@ -81,14 +81,14 @@ export interface CaptureOptions<T = any> {
81
81
  * but does NOT enforce any runtime constraints on what the capture will match.
82
82
  *
83
83
  * **Pattern Matching Behavior:**
84
- * - A bare `pattern`${capture('x')}`` will structurally match ANY expression
85
- * - Pattern structure determines matching: `pattern`foo(${capture('x')})`` only matches `foo()` calls
84
+ * - A bare `pattern`${capture()}`` will structurally match ANY expression
85
+ * - Pattern structure determines matching: `pattern`foo(${capture()})`` only matches `foo()` calls with one arg
86
86
  * - Use structural patterns to narrow matching scope before applying semantic validation
87
87
  *
88
88
  * **Variadic Captures:**
89
89
  * Use `{ variadic: true }` to match zero or more nodes in a sequence:
90
90
  * ```typescript
91
- * const args = capture('args', { variadic: true });
91
+ * const args = capture({ variadic: true });
92
92
  * pattern`foo(${args})` // Matches: foo(), foo(a), foo(a, b, c)
93
93
  * ```
94
94
  */
@@ -145,8 +145,9 @@ export interface Capture<T = any> {
145
145
  *
146
146
  * @example
147
147
  * // Variadic any - match zero or more without capturing
148
+ * const first = any();
148
149
  * const rest = any({ variadic: true });
149
- * const pat = pattern`bar(${capture('first')}, ${rest})`
150
+ * const pat = pattern`bar(${first}, ${rest})`
150
151
  *
151
152
  * @example
152
153
  * // With constraints - validate but don't capture
@@ -245,6 +246,17 @@ export interface PatternOptions {
245
246
  * - Primitives: Values to be converted to literals
246
247
  */
247
248
  export type TemplateParameter = Capture | any | TemplateParam | Tree | Tree[] | string | number | boolean;
249
+ /**
250
+ * Parameter specification for template generation (internal).
251
+ * Represents a placeholder in a template that will be replaced with a parameter value.
252
+ * This is the internal wrapper used by the template engine.
253
+ */
254
+ export interface Parameter {
255
+ /**
256
+ * The value to substitute into the template.
257
+ */
258
+ value: any;
259
+ }
248
260
  /**
249
261
  * Configuration options for templates.
250
262
  */
@@ -309,18 +321,21 @@ export interface RewriteRule {
309
321
  *
310
322
  * @example
311
323
  * ```typescript
312
- * const rule1 = rewrite(() => ({
313
- * before: pattern`${capture('a')} + ${capture('b')}`,
314
- * after: template`${capture('b')} + ${capture('a')}`
315
- * }));
324
+ * const rule1 = rewrite(() => {
325
+ * const { a, b } = { a: capture(), b: capture() };
326
+ * return {
327
+ * before: pattern`${a} + ${b}`,
328
+ * after: template`${b} + ${a}`
329
+ * };
330
+ * });
316
331
  *
317
332
  * const rule2 = rewrite(() => ({
318
333
  * before: pattern`${capture('x')} + 1`,
319
- * after: template`${capture('x')} + 2`
334
+ * after: template`${capture('x')}++`
320
335
  * }));
321
336
  *
322
337
  * const combined = rule1.andThen(rule2);
323
- * // Will first swap operands, then if result matches "x + 1", change to "x + 2"
338
+ * // Will first swap operands, then if result matches "x + 1", change to "x++"
324
339
  * ```
325
340
  */
326
341
  andThen(next: RewriteRule): RewriteRule;