@openrewrite/rewrite 8.66.0 → 8.66.1

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 (75) hide show
  1. package/dist/javascript/comparator.d.ts +67 -4
  2. package/dist/javascript/comparator.d.ts.map +1 -1
  3. package/dist/javascript/comparator.js +523 -2794
  4. package/dist/javascript/comparator.js.map +1 -1
  5. package/dist/javascript/format.d.ts.map +1 -1
  6. package/dist/javascript/format.js +4 -3
  7. package/dist/javascript/format.js.map +1 -1
  8. package/dist/javascript/index.d.ts +1 -1
  9. package/dist/javascript/index.d.ts.map +1 -1
  10. package/dist/javascript/index.js +1 -1
  11. package/dist/javascript/index.js.map +1 -1
  12. package/dist/javascript/parser.d.ts.map +1 -1
  13. package/dist/javascript/parser.js +18 -16
  14. package/dist/javascript/parser.js.map +1 -1
  15. package/dist/javascript/templating/capture.d.ts +226 -0
  16. package/dist/javascript/templating/capture.d.ts.map +1 -0
  17. package/dist/javascript/templating/capture.js +371 -0
  18. package/dist/javascript/templating/capture.js.map +1 -0
  19. package/dist/javascript/templating/comparator.d.ts +61 -0
  20. package/dist/javascript/templating/comparator.d.ts.map +1 -0
  21. package/dist/javascript/templating/comparator.js +393 -0
  22. package/dist/javascript/templating/comparator.js.map +1 -0
  23. package/dist/javascript/templating/engine.d.ts +75 -0
  24. package/dist/javascript/templating/engine.d.ts.map +1 -0
  25. package/dist/javascript/templating/engine.js +228 -0
  26. package/dist/javascript/templating/engine.js.map +1 -0
  27. package/dist/javascript/templating/index.d.ts +6 -0
  28. package/dist/javascript/templating/index.d.ts.map +1 -0
  29. package/dist/javascript/templating/index.js +42 -0
  30. package/dist/javascript/templating/index.js.map +1 -0
  31. package/dist/javascript/templating/pattern.d.ts +171 -0
  32. package/dist/javascript/templating/pattern.d.ts.map +1 -0
  33. package/dist/javascript/templating/pattern.js +681 -0
  34. package/dist/javascript/templating/pattern.js.map +1 -0
  35. package/dist/javascript/templating/placeholder-replacement.d.ts +58 -0
  36. package/dist/javascript/templating/placeholder-replacement.d.ts.map +1 -0
  37. package/dist/javascript/templating/placeholder-replacement.js +365 -0
  38. package/dist/javascript/templating/placeholder-replacement.js.map +1 -0
  39. package/dist/javascript/templating/rewrite.d.ts +39 -0
  40. package/dist/javascript/templating/rewrite.d.ts.map +1 -0
  41. package/dist/javascript/templating/rewrite.js +81 -0
  42. package/dist/javascript/templating/rewrite.js.map +1 -0
  43. package/dist/javascript/templating/template.d.ts +204 -0
  44. package/dist/javascript/templating/template.d.ts.map +1 -0
  45. package/dist/javascript/templating/template.js +293 -0
  46. package/dist/javascript/templating/template.js.map +1 -0
  47. package/dist/javascript/templating/types.d.ts +263 -0
  48. package/dist/javascript/templating/types.d.ts.map +1 -0
  49. package/dist/javascript/templating/types.js +3 -0
  50. package/dist/javascript/templating/types.js.map +1 -0
  51. package/dist/javascript/templating/utils.d.ts +118 -0
  52. package/dist/javascript/templating/utils.d.ts.map +1 -0
  53. package/dist/javascript/templating/utils.js +253 -0
  54. package/dist/javascript/templating/utils.js.map +1 -0
  55. package/dist/version.txt +1 -1
  56. package/package.json +2 -1
  57. package/src/javascript/comparator.ts +554 -3323
  58. package/src/javascript/format.ts +3 -2
  59. package/src/javascript/index.ts +1 -1
  60. package/src/javascript/parser.ts +19 -17
  61. package/src/javascript/templating/capture.ts +503 -0
  62. package/src/javascript/templating/comparator.ts +430 -0
  63. package/src/javascript/templating/engine.ts +252 -0
  64. package/src/javascript/templating/index.ts +60 -0
  65. package/src/javascript/templating/pattern.ts +727 -0
  66. package/src/javascript/templating/placeholder-replacement.ts +372 -0
  67. package/src/javascript/templating/rewrite.ts +95 -0
  68. package/src/javascript/templating/template.ts +326 -0
  69. package/src/javascript/templating/types.ts +300 -0
  70. package/src/javascript/templating/utils.ts +284 -0
  71. package/dist/javascript/templating.d.ts +0 -265
  72. package/dist/javascript/templating.d.ts.map +0 -1
  73. package/dist/javascript/templating.js +0 -1027
  74. package/dist/javascript/templating.js.map +0 -1
  75. package/src/javascript/templating.ts +0 -1226
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../../src/javascript/templating/pattern.ts"],"names":[],"mappings":";;;;;;;;;;;;AA0sBA,0BAYC;AAttBD;;;;;;;;;;;;;;GAcG;AACH,iCAA8B;AAC9B,qCAA6B;AAC7B,oCAA4B;AAC5B,qCAAoC;AAEpC,uCAAqF;AACrF,6CAAuD;AACvD,mCAAiH;AAEjH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAa,cAAc;IAA3B;QACY,UAAK,GAAa,EAAE,CAAC;QACrB,aAAQ,GAA2B,EAAE,CAAC;IA+DlD,CAAC;IA7DG;;;;;OAKG;IACH,IAAI,CAAC,GAAW;QACZ,4EAA4E;QAC5E,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,6CAA6C;QAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAkC;QACtC,+CAA+C;QAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,sCAAsC;QACtC,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,qBAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAiB,CAAC,CAAC;QACtC,wCAAwC;QACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK;QACD,uDAAuD;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QAED,0CAA0C;QAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAS,CAAC;QAClD,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,KAAK,EAAE;YAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACzB,QAAQ,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,qCAAqC;QACrC,OAAO,OAAO,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;CACJ;AAjED,wCAiEC;AAED;;GAEG;AACH,MAAa,OAAO;IAGhB;;;OAGG;IACH,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,OAAO;QACV,OAAO,IAAI,cAAc,EAAE,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,YACoB,aAAmC,EACnC,QAAgC;QADhC,kBAAa,GAAb,aAAa,CAAsB;QACnC,aAAQ,GAAR,QAAQ,CAAwB;QApC5C,aAAQ,GAAmB,EAAE,CAAC;IAsCtC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,OAAuB;QAC7B,IAAI,CAAC,QAAQ,mCAAQ,IAAI,CAAC,QAAQ,GAAK,OAAO,CAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACG,KAAK,CAAC,GAAM;;YACd,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,0CAA0C;YAC1C,MAAM,OAAO,GAAI,OAAe,CAAC,OAAO,CAAC;YACzC,OAAO,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,CAAC;KAAA;CACJ;AA3ED,0BA2EC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,WAAW;IACpB,YACqB,UAA4C,IAAI,GAAG,EAAE;QAArD,YAAO,GAAP,OAAO,CAA8C;IAE1E,CAAC;IAQD,iBAAiB;IACjB,GAAG,CAAC,OAA8B;QAC9B,2DAA2D;QAC3D,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAe,CAAC,6BAAmB,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAClH,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACK,eAAe,CAAC,KAA0B;QAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,qCAAqC;YACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAK,KAAK,CAAC,CAAC,CAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9D,4CAA4C;gBAC5C,OAAQ,KAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAQ,CAAC;YACpE,CAAC;YACD,+BAA+B;YAC/B,OAAO,KAAY,CAAC;QACxB,CAAC;QACD,iCAAiC;QACjC,IAAK,KAAa,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACvC,OAAQ,KAA0B,CAAC,OAAO,CAAC;QAC/C,CAAC;QACD,iBAAiB;QACjB,OAAO,KAAU,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,CAAC,2BAAmB,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiD,CAAC;QACxE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAK,KAAK,CAAC,CAAC,CAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACtF,0CAA0C;gBAC1C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAA2B,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAK,KAAa,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACvE,2BAA2B;gBAC3B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAyB,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAlED,kCAkEC;AAED;;GAEG;AACH,MAAM,OAAO;IAKT;;;;;OAKG;IACH,YACqB,OAAgB,EAChB,GAAM;QADN,YAAO,GAAP,OAAO,CAAS;QAChB,QAAG,GAAH,GAAG,CAAG;QAZ3B,gGAAgG;QAC/E,YAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IAalE,CAAC;IAED;;;;OAIG;IACG,OAAO;;YACT,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnB,6CAA6C;gBAC7C,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC7F,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAC3C,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,iBAAiB,EACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAC1C,CAAC;gBACF,IAAI,CAAC,UAAU,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,CAAC;YAC7D,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC;KAAA;IAED;;;;OAIG;IACH,MAAM;QACF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAa,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACK,eAAe,CAAC,KAA0B;QAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,qCAAqC;YACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAK,KAAK,CAAC,CAAC,CAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9D,4CAA4C;gBAC5C,OAAQ,KAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAQ,CAAC;YACpE,CAAC;YACD,+BAA+B;YAC/B,OAAO,KAAY,CAAC;QACxB,CAAC;QACD,iCAAiC;QACjC,IAAK,KAAa,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACvC,OAAQ,KAA0B,CAAC,OAAO,CAAC;QAC/C,CAAC;QACD,iBAAiB;QACjB,OAAO,KAAU,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACW,SAAS,CAAC,OAAU,EAAE,MAAS;;;YACzC,4CAA4C;YAC5C,IAAI,wBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;YAED,oCAAoC;YACpC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/B,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,4EAA4E;YAC5E,oEAAoE;YACpE,MAAM,mBAAmB,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,mCAAI,IAAI,CAAC;YAC7E,MAAM,UAAU,GAAG,IAAI,sCAAyB,CAAC;gBAC7C,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;gBACjD,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC3E,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;gBACjC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;aACpD,EAAE,mBAAmB,CAAC,CAAC;YACxB,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrD,CAAC;KAAA;IAED;;;;OAIG;IACK,SAAS;QACb,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,KAAuC;QACxD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;OAOG;IACK,aAAa,CAAC,OAAU,EAAE,MAAS,EAAE,OAA0B;;QACnE,MAAM,WAAW,GAAG,wBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,wEAAwE;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,CAAC;QAChF,MAAM,UAAU,GAAG,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,0DAAI,CAAC;QAEjD,8BAA8B;QAC9B,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,MAAa,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,4DAA4D;QAC5D,MAAM,SAAS,GAAG,MAAC,UAAkB,aAAlB,UAAU,uBAAV,UAAU,CAAW,kCAAwB,CAAC,mCAAI,IAAI,CAAC;QAC1E,IAAI,SAAS,EAAE,CAAC;YACZ,0EAA0E;YAC1E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,MAAM,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACK,qBAAqB,CAAC,OAAU,EAAE,OAAY,EAAE,QAA6B;;QACjF,MAAM,WAAW,GAAG,wBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,wEAAwE;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,CAAC;QAChF,MAAM,UAAU,GAAG,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,0DAAI,CAAC;QAEjD,iGAAiG;QACjG,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,OAAc,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,4DAA4D;QAC5D,MAAM,SAAS,GAAG,MAAC,UAAkB,aAAlB,UAAU,uBAAV,UAAU,CAAW,kCAAwB,CAAC,mCAAI,IAAI,CAAC;QAC1E,IAAI,SAAS,EAAE,CAAC;YACZ,8EAA8E;YAC9E,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,iBAAiB;IACnB;;;;;;;OAOG;IACH,YACqB,aAAmC,EACnC,QAAgC,EAChC,oBAA8B,EAAE,EAChC,eAAuC,EAAE;QAHzC,kBAAa,GAAb,aAAa,CAAsB;QACnC,aAAQ,GAAR,QAAQ,CAAwB;QAChC,sBAAiB,GAAjB,iBAAiB,CAAe;QAChC,iBAAY,GAAZ,YAAY,CAA6B;IAE9D,CAAC;IAED;;;;OAIG;IACG,YAAY;;YACd,0CAA0C;YAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAElD,iDAAiD;YACjD,MAAM,EAAE,GAAG,MAAM,qBAAa,CAAC,UAAU,CACrC,cAAc,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,YAAY,CACpB,CAAC;YAEF,uCAAuC;YACvC,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;KAAA;IAED;;;;;OAKG;IACK,mBAAmB;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjC,6DAA6D;gBAC7D,MAAM,WAAW,GAAI,OAAe,CAAC,6BAAmB,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC/E,MAAM,IAAI,wBAAgB,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACrE,CAAC;QACL,CAAC;QAED,2FAA2F;QAC3F,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnD,oFAAoF;YACpF,MAAM,oBAAoB,GAAG,2FAA2F,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtI,IAAI,oBAAoB,EAAE,CAAC;gBACvB,oDAAoD;gBACpD,OAAO,0BAA0B,MAAM,EAAE,CAAC;YAC9C,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACK,qBAAqB,CAAC,EAAsB;;QAChD,4DAA4D;QAC5D,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAE5D,uDAAuD;QACvD,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,qBAAqB,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAClE,0EAA0E;YAC1E,4EAA4E;YAC5E,IAAI,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChG,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,qBAAqB,6BAA6B,CAAA,MAAA,EAAE,CAAC,UAAU,0CAAE,MAAM,KAAI,CAAC,aAAa,CAAC,CAAC;QAC9I,CAAC;QAED,qEAAqE;QACrE,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC;QAEpE,IAAI,SAAY,CAAC;QAEjB,2DAA2D;QAC3D,IAAI,cAAc,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,cAAqC,CAAC;YACrD,IAAI,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,UAAU,MAAK,aAAa,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC3D,8CAA8C;gBAC9C,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACJ,SAAS,GAAG,cAAc,CAAC;YAC/B,CAAC;QACL,CAAC;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,UAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7D,4EAA4E;YAC5E,SAAS,GAAI,cAAyC,CAAC,UAAU,CAAC;QACtE,CAAC;aAAM,CAAC;YACJ,yCAAyC;YACzC,SAAS,GAAG,cAAc,CAAC;QAC/B,CAAC;QAED,+CAA+C;QAC/C,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;OAMG;IACK,oBAAoB,CAAC,GAAM;QAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAc,CAAC;QACtC,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;OAOG;IACK,qBAAqB,CAAC,IAAS,EAAE,OAAwB;;QAC7D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,OAAO;QACX,CAAC;QAED,kCAAkC;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElB,0EAA0E;QAC1E,uFAAuF;QACvF,IAAI,IAAI,CAAC,IAAI,KAAK,UAAE,CAAC,IAAI,CAAC,mBAAmB;YACzC,CAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,MAAK,QAAC,CAAC,IAAI,CAAC,UAAU;aAC3C,MAAA,IAAI,CAAC,UAAU,CAAC,UAAU,0CAAE,UAAU,CAAC,wBAAgB,CAAC,cAAc,CAAC,CAAA,EAAE,CAAC;YAE1E,MAAM,WAAW,GAAG,wBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC9E,IAAI,WAAW,EAAE,CAAC;gBACd,gDAAgD;gBAChD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAChB,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,gCAAgC,EAAE,EAAE,EAAE,IAAA,eAAQ,GAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBAC3F,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACxB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;gBAC9B,CAAC;gBAED,2DAA2D;gBAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC7E,MAAM,eAAe,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,kBAAkB,EAAE,CAAC;gBAEzD,+CAA+C;gBAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,qBAAa,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;YACpF,CAAC;QACL,CAAC;QACD,4EAA4E;aACvE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU,KAAI,MAAA,IAAI,CAAC,UAAU,0CAAE,UAAU,CAAC,wBAAgB,CAAC,cAAc,CAAC,CAAA,EAAE,CAAC;YACvG,MAAM,WAAW,GAAG,wBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnE,IAAI,WAAW,EAAE,CAAC;gBACd,+BAA+B;gBAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAChB,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,gCAAgC,EAAE,EAAE,EAAE,IAAA,eAAQ,GAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBAC3F,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACxB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;gBAC9B,CAAC;gBAED,2DAA2D;gBAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC7E,MAAM,eAAe,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,kBAAkB,EAAE,CAAC;gBAEzD,uDAAuD;gBACvD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,qBAAa,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;YACpF,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBACrE,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACrD,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,OAAO,CAAC,OAA6B,EAAE,GAAG,QAAyC;IAC/F,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,qBAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,2DAA2D;QAC3D,MAAM,IAAI,GAAI,OAAe,CAAC,6BAAmB,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACxE,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC,EAAE,IAAI,GAAG,EAA8B,CAAC,CAAC;IAC1C,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACzC,2DAA2D;QAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAS,CAAC,6BAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;IACrC,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { Cursor } from '../..';
2
+ import { J } from '../../java';
3
+ import { JS } from '..';
4
+ import { JavaScriptVisitor } from '../visitor';
5
+ import { Parameter } from './engine';
6
+ /**
7
+ * Visitor that replaces placeholder nodes with actual parameter values.
8
+ */
9
+ export declare class PlaceholderReplacementVisitor extends JavaScriptVisitor<any> {
10
+ private readonly substitutions;
11
+ private readonly values;
12
+ private readonly wrappersMap;
13
+ constructor(substitutions: Map<string, Parameter>, values?: Pick<Map<string, J | J[]>, 'get'>, wrappersMap?: Pick<Map<string, J.RightPadded<J> | J.RightPadded<J>[]>, 'get'>);
14
+ /**
15
+ * Merges prefixes by preserving comments from the source element
16
+ * while using whitespace from the template placeholder.
17
+ *
18
+ * @param sourcePrefix The prefix from the captured element (may contain comments)
19
+ * @param templatePrefix The prefix from the template placeholder (defines whitespace)
20
+ * @returns A merged prefix with source comments and template whitespace
21
+ */
22
+ private mergePrefix;
23
+ /**
24
+ * Expands variadic placeholders in a list of elements.
25
+ *
26
+ * @param elements The list of wrapped elements to process
27
+ * @param unwrapElement Optional function to unwrap the placeholder node from its container (e.g., ExpressionStatement)
28
+ * @param p Context parameter for visitor
29
+ * @returns Promise of new list with placeholders expanded
30
+ */
31
+ private expandVariadicElements;
32
+ visit<R extends J>(tree: J, p: any, parent?: Cursor): Promise<R | undefined>;
33
+ visitMethodInvocation(method: J.MethodInvocation, p: any): Promise<J | undefined>;
34
+ visitBlock(block: J.Block, p: any): Promise<J | undefined>;
35
+ visitJsCompilationUnit(compilationUnit: JS.CompilationUnit, p: any): Promise<J | undefined>;
36
+ /**
37
+ * Checks if a node is a placeholder.
38
+ *
39
+ * @param node The node to check
40
+ * @returns True if the node is a placeholder
41
+ */
42
+ private isPlaceholder;
43
+ /**
44
+ * Replaces a placeholder node with the actual parameter value.
45
+ *
46
+ * @param placeholder The placeholder node
47
+ * @returns The replacement node or the original if not a placeholder
48
+ */
49
+ private replacePlaceholder;
50
+ /**
51
+ * Gets the placeholder text from a node.
52
+ *
53
+ * @param node The node to get placeholder text from
54
+ * @returns The placeholder text or null
55
+ */
56
+ private getPlaceholderText;
57
+ }
58
+ //# sourceMappingURL=placeholder-replacement.d.ts.map
@@ -0,0 +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;IAgH9B,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;IAejF,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"}
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PlaceholderReplacementVisitor = void 0;
13
+ /*
14
+ * Copyright 2025 the original author or authors.
15
+ * <p>
16
+ * Licensed under the Moderne Source Available License (the "License");
17
+ * you may not use this file except in compliance with the License.
18
+ * You may obtain a copy of the License at
19
+ * <p>
20
+ * https://docs.moderne.io/licensing/moderne-source-available-license
21
+ * <p>
22
+ * Unless required by applicable law or agreed to in writing, software
23
+ * distributed under the License is distributed on an "AS IS" BASIS,
24
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25
+ * See the License for the specific language governing permissions and
26
+ * limitations under the License.
27
+ */
28
+ const __1 = require("../..");
29
+ const java_1 = require("../../java");
30
+ const __2 = require("..");
31
+ const visitor_1 = require("../visitor");
32
+ const immer_1 = require("immer");
33
+ const utils_1 = require("./utils");
34
+ const capture_1 = require("./capture");
35
+ /**
36
+ * Visitor that replaces placeholder nodes with actual parameter values.
37
+ */
38
+ class PlaceholderReplacementVisitor extends visitor_1.JavaScriptVisitor {
39
+ constructor(substitutions, values = new Map(), wrappersMap = new Map()) {
40
+ super();
41
+ this.substitutions = substitutions;
42
+ this.values = values;
43
+ this.wrappersMap = wrappersMap;
44
+ }
45
+ /**
46
+ * Merges prefixes by preserving comments from the source element
47
+ * while using whitespace from the template placeholder.
48
+ *
49
+ * @param sourcePrefix The prefix from the captured element (may contain comments)
50
+ * @param templatePrefix The prefix from the template placeholder (defines whitespace)
51
+ * @returns A merged prefix with source comments and template whitespace
52
+ */
53
+ mergePrefix(sourcePrefix, templatePrefix) {
54
+ // If source has no comments, just use template prefix
55
+ if (sourcePrefix.comments.length === 0) {
56
+ return templatePrefix;
57
+ }
58
+ // Preserve comments from source, use whitespace from template
59
+ return {
60
+ kind: java_1.J.Kind.Space,
61
+ comments: sourcePrefix.comments,
62
+ whitespace: templatePrefix.whitespace
63
+ };
64
+ }
65
+ /**
66
+ * Expands variadic placeholders in a list of elements.
67
+ *
68
+ * @param elements The list of wrapped elements to process
69
+ * @param unwrapElement Optional function to unwrap the placeholder node from its container (e.g., ExpressionStatement)
70
+ * @param p Context parameter for visitor
71
+ * @returns Promise of new list with placeholders expanded
72
+ */
73
+ expandVariadicElements(elements_1) {
74
+ return __awaiter(this, arguments, void 0, function* (elements, unwrapElement = (e) => e, p) {
75
+ const newElements = [];
76
+ for (const wrapped of elements) {
77
+ const element = wrapped.element;
78
+ const placeholderNode = unwrapElement(element);
79
+ // Check if this element contains a placeholder
80
+ if (this.isPlaceholder(placeholderNode)) {
81
+ const placeholderText = this.getPlaceholderText(placeholderNode);
82
+ if (placeholderText) {
83
+ const param = this.substitutions.get(placeholderText);
84
+ if (param) {
85
+ let arrayToExpand = undefined;
86
+ // Check if it's a direct Tree[] array
87
+ if (Array.isArray(param.value)) {
88
+ arrayToExpand = param.value;
89
+ }
90
+ // Check if it's a CaptureValue
91
+ else if (param.value instanceof capture_1.CaptureValue) {
92
+ const resolved = param.value.resolve(this.values);
93
+ if (Array.isArray(resolved)) {
94
+ arrayToExpand = resolved;
95
+ }
96
+ }
97
+ // Check if it's a direct variadic capture
98
+ else {
99
+ const isCapture = param.value instanceof capture_1.CaptureImpl ||
100
+ (param.value && typeof param.value === 'object' && param.value[capture_1.CAPTURE_NAME_SYMBOL]);
101
+ if (isCapture) {
102
+ const name = param.value[capture_1.CAPTURE_NAME_SYMBOL] || param.value.name;
103
+ const capture = Array.from(this.substitutions.values())
104
+ .map(p => p.value)
105
+ .find(v => v instanceof capture_1.CaptureImpl && v.getName() === name);
106
+ if (capture === null || capture === void 0 ? void 0 : capture.isVariadic()) {
107
+ // Prefer wrappers if available (to preserve markers like Semicolon)
108
+ // Otherwise fall back to elements
109
+ const wrappersArray = this.wrappersMap.get(name);
110
+ if (Array.isArray(wrappersArray)) {
111
+ arrayToExpand = wrappersArray;
112
+ }
113
+ else {
114
+ const matchedArray = this.values.get(name);
115
+ if (Array.isArray(matchedArray)) {
116
+ arrayToExpand = matchedArray;
117
+ }
118
+ }
119
+ }
120
+ }
121
+ }
122
+ // Expand the array if we found one
123
+ if (arrayToExpand !== undefined) {
124
+ if (arrayToExpand.length > 0) {
125
+ for (let i = 0; i < arrayToExpand.length; i++) {
126
+ const item = arrayToExpand[i];
127
+ // Check if item is a JRightPadded wrapper or just an element
128
+ // JRightPadded wrappers have 'element', 'after', and 'markers' properties
129
+ // Also ensure the element field is not null
130
+ const isWrapper = item && typeof item === 'object' && 'element' in item && 'after' in item && item.element != null;
131
+ if (isWrapper) {
132
+ // Item is a JRightPadded wrapper - use it directly to preserve markers
133
+ newElements.push((0, immer_1.produce)(item, draft => {
134
+ if (i === 0 && draft.element) {
135
+ // Merge the placeholder's prefix with the first item's prefix
136
+ // Modify prefix directly without nested produce to avoid immer issues
137
+ draft.element.prefix = this.mergePrefix(draft.element.prefix, element.prefix);
138
+ }
139
+ // Keep all other wrapper properties (including markers with Semicolon)
140
+ }));
141
+ }
142
+ else if (item) {
143
+ // Item is just an element (not a wrapper) - wrap it (backward compatibility)
144
+ const elem = item;
145
+ newElements.push((0, immer_1.produce)(wrapped, draft => {
146
+ draft.element = (0, immer_1.produce)(elem, itemDraft => {
147
+ if (i === 0) {
148
+ itemDraft.prefix = this.mergePrefix(elem.prefix, element.prefix);
149
+ }
150
+ // For i > 0, prefix is already correct, no changes needed
151
+ });
152
+ }));
153
+ }
154
+ }
155
+ continue; // Skip adding the placeholder itself
156
+ }
157
+ else {
158
+ // Empty array - don't add any elements
159
+ continue;
160
+ }
161
+ }
162
+ }
163
+ }
164
+ }
165
+ // Not a placeholder (or expansion failed) - process normally
166
+ const replacedElement = yield this.visit(element, p);
167
+ if (replacedElement) {
168
+ newElements.push((0, immer_1.produce)(wrapped, draft => {
169
+ draft.element = replacedElement;
170
+ }));
171
+ }
172
+ }
173
+ return newElements;
174
+ });
175
+ }
176
+ visit(tree, p, parent) {
177
+ const _super = Object.create(null, {
178
+ visit: { get: () => super.visit }
179
+ });
180
+ return __awaiter(this, void 0, void 0, function* () {
181
+ // Check if this node is a placeholder
182
+ if (this.isPlaceholder(tree)) {
183
+ const replacement = this.replacePlaceholder(tree);
184
+ if (replacement !== tree) {
185
+ return replacement;
186
+ }
187
+ }
188
+ // Continue with normal traversal
189
+ return _super.visit.call(this, tree, p, parent);
190
+ });
191
+ }
192
+ visitMethodInvocation(method, p) {
193
+ const _super = Object.create(null, {
194
+ visitMethodInvocation: { get: () => super.visitMethodInvocation }
195
+ });
196
+ return __awaiter(this, void 0, void 0, function* () {
197
+ // Check if any arguments are placeholders (possibly variadic)
198
+ const hasPlaceholder = method.arguments.elements.some(arg => this.isPlaceholder(arg.element));
199
+ if (!hasPlaceholder) {
200
+ return _super.visitMethodInvocation.call(this, method, p);
201
+ }
202
+ const newArguments = yield this.expandVariadicElements(method.arguments.elements, undefined, p);
203
+ return (0, immer_1.produce)(method, draft => {
204
+ draft.arguments.elements = newArguments;
205
+ });
206
+ });
207
+ }
208
+ visitBlock(block, p) {
209
+ const _super = Object.create(null, {
210
+ visitBlock: { get: () => super.visitBlock }
211
+ });
212
+ return __awaiter(this, void 0, void 0, function* () {
213
+ // Check if any statements are placeholders (possibly variadic)
214
+ const hasPlaceholder = block.statements.some(stmt => {
215
+ const stmtElement = stmt.element;
216
+ // Check if it's an ExpressionStatement containing a placeholder
217
+ if (stmtElement.kind === __2.JS.Kind.ExpressionStatement) {
218
+ const exprStmt = stmtElement;
219
+ return this.isPlaceholder(exprStmt.expression);
220
+ }
221
+ return this.isPlaceholder(stmtElement);
222
+ });
223
+ if (!hasPlaceholder) {
224
+ return _super.visitBlock.call(this, block, p);
225
+ }
226
+ // Unwrap function to extract placeholder from ExpressionStatement
227
+ const unwrapStatement = (element) => {
228
+ if (element.kind === __2.JS.Kind.ExpressionStatement) {
229
+ return element.expression;
230
+ }
231
+ return element;
232
+ };
233
+ const newStatements = yield this.expandVariadicElements(block.statements, unwrapStatement, p);
234
+ return (0, immer_1.produce)(block, draft => {
235
+ draft.statements = newStatements;
236
+ });
237
+ });
238
+ }
239
+ visitJsCompilationUnit(compilationUnit, p) {
240
+ const _super = Object.create(null, {
241
+ visitJsCompilationUnit: { get: () => super.visitJsCompilationUnit }
242
+ });
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ // Check if any statements are placeholders (possibly variadic)
245
+ const hasPlaceholder = compilationUnit.statements.some(stmt => this.isPlaceholder(stmt.element));
246
+ if (!hasPlaceholder) {
247
+ return _super.visitJsCompilationUnit.call(this, compilationUnit, p);
248
+ }
249
+ const newStatements = yield this.expandVariadicElements(compilationUnit.statements, undefined, p);
250
+ return (0, immer_1.produce)(compilationUnit, draft => {
251
+ draft.statements = newStatements;
252
+ });
253
+ });
254
+ }
255
+ /**
256
+ * Checks if a node is a placeholder.
257
+ *
258
+ * @param node The node to check
259
+ * @returns True if the node is a placeholder
260
+ */
261
+ isPlaceholder(node) {
262
+ var _a;
263
+ if (node.kind === java_1.J.Kind.Identifier) {
264
+ const identifier = node;
265
+ return identifier.simpleName.startsWith(utils_1.PlaceholderUtils.PLACEHOLDER_PREFIX);
266
+ }
267
+ else if (node.kind === java_1.J.Kind.Literal) {
268
+ const literal = node;
269
+ return ((_a = literal.valueSource) === null || _a === void 0 ? void 0 : _a.startsWith(utils_1.PlaceholderUtils.PLACEHOLDER_PREFIX)) || false;
270
+ }
271
+ return false;
272
+ }
273
+ /**
274
+ * Replaces a placeholder node with the actual parameter value.
275
+ *
276
+ * @param placeholder The placeholder node
277
+ * @returns The replacement node or the original if not a placeholder
278
+ */
279
+ replacePlaceholder(placeholder) {
280
+ const placeholderText = this.getPlaceholderText(placeholder);
281
+ if (!placeholderText || !placeholderText.startsWith(utils_1.PlaceholderUtils.PLACEHOLDER_PREFIX)) {
282
+ return placeholder;
283
+ }
284
+ // Find the corresponding parameter
285
+ const param = this.substitutions.get(placeholderText);
286
+ if (!param || param.value === undefined) {
287
+ return placeholder;
288
+ }
289
+ // Check if the parameter value is a CaptureValue
290
+ const isCaptureValue = param.value instanceof capture_1.CaptureValue;
291
+ if (isCaptureValue) {
292
+ // Resolve the capture value to get the actual property value
293
+ const propertyValue = param.value.resolve(this.values);
294
+ if (propertyValue !== undefined) {
295
+ // If the property value is already a J node, use it
296
+ if ((0, __1.isTree)(propertyValue)) {
297
+ const propValueAsJ = propertyValue;
298
+ return (0, immer_1.produce)(propValueAsJ, draft => {
299
+ draft.markers = placeholder.markers;
300
+ draft.prefix = this.mergePrefix(propValueAsJ.prefix, placeholder.prefix);
301
+ });
302
+ }
303
+ // If it's a primitive value and placeholder is an identifier, update the simpleName
304
+ if (typeof propertyValue === 'string' && placeholder.kind === java_1.J.Kind.Identifier) {
305
+ return (0, immer_1.produce)(placeholder, draft => {
306
+ draft.simpleName = propertyValue;
307
+ });
308
+ }
309
+ // If it's a primitive value and placeholder is a literal, update the value
310
+ if (typeof propertyValue === 'string' && placeholder.kind === java_1.J.Kind.Literal) {
311
+ return (0, immer_1.produce)(placeholder, draft => {
312
+ draft.value = propertyValue;
313
+ draft.valueSource = `"${propertyValue}"`;
314
+ });
315
+ }
316
+ }
317
+ // If no match found or unhandled type, return placeholder unchanged
318
+ return placeholder;
319
+ }
320
+ // Check if the parameter value is a Capture (could be a Proxy) or TemplateParam
321
+ const isCapture = param.value instanceof capture_1.CaptureImpl ||
322
+ (param.value && typeof param.value === 'object' && param.value[capture_1.CAPTURE_NAME_SYMBOL]);
323
+ const isTemplateParam = param.value instanceof capture_1.TemplateParamImpl;
324
+ if (isCapture || isTemplateParam) {
325
+ // Simple capture/template param (no property path for template params)
326
+ const name = isTemplateParam ? param.value.name :
327
+ (param.value[capture_1.CAPTURE_NAME_SYMBOL] || param.value.name);
328
+ const matchedNode = this.values.get(name);
329
+ if (matchedNode && !Array.isArray(matchedNode)) {
330
+ return (0, immer_1.produce)(matchedNode, draft => {
331
+ draft.markers = placeholder.markers;
332
+ draft.prefix = this.mergePrefix(matchedNode.prefix, placeholder.prefix);
333
+ });
334
+ }
335
+ // If no match found, return placeholder unchanged
336
+ return placeholder;
337
+ }
338
+ // If the parameter value is an AST node, use it directly
339
+ if ((0, __1.isTree)(param.value)) {
340
+ // Return the AST node, preserving comments from the source
341
+ return (0, immer_1.produce)(param.value, draft => {
342
+ draft.markers = placeholder.markers;
343
+ draft.prefix = this.mergePrefix(param.value.prefix, placeholder.prefix);
344
+ });
345
+ }
346
+ return placeholder;
347
+ }
348
+ /**
349
+ * Gets the placeholder text from a node.
350
+ *
351
+ * @param node The node to get placeholder text from
352
+ * @returns The placeholder text or null
353
+ */
354
+ getPlaceholderText(node) {
355
+ if (node.kind === java_1.J.Kind.Identifier) {
356
+ return node.simpleName;
357
+ }
358
+ else if (node.kind === java_1.J.Kind.Literal) {
359
+ return node.valueSource || null;
360
+ }
361
+ return null;
362
+ }
363
+ }
364
+ exports.PlaceholderReplacementVisitor = PlaceholderReplacementVisitor;
365
+ //# sourceMappingURL=placeholder-replacement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder-replacement.js","sourceRoot":"","sources":["../../../src/javascript/templating/placeholder-replacement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { RewriteRule, RewriteConfig } from './types';
2
+ /**
3
+ * Creates a replacement rule using a capture context and configuration.
4
+ *
5
+ * @param builderFn Function that takes a capture context and returns before/after configuration
6
+ * @returns A replacement rule that can be applied to AST nodes
7
+ *
8
+ * @example
9
+ * // Single pattern
10
+ * const swapOperands = rewrite(() => ({
11
+ * before: pattern`${"left"} + ${"right"}`,
12
+ * after: template`${"right"} + ${"left"}`
13
+ * }));
14
+ *
15
+ * @example
16
+ * // Multiple patterns
17
+ * const normalizeComparisons = rewrite(() => ({
18
+ * before: [
19
+ * pattern`${"left"} == ${"right"}`,
20
+ * pattern`${"left"} === ${"right"}`
21
+ * ],
22
+ * after: template`${"left"} === ${"right"}`
23
+ * }));
24
+ *
25
+ * @example
26
+ * // Using in a visitor - IMPORTANT: use `|| node` to handle undefined when no match
27
+ * class MyVisitor extends JavaScriptVisitor<any> {
28
+ * override async visitBinary(binary: J.Binary, p: any): Promise<J | undefined> {
29
+ * const rule = rewrite(() => ({
30
+ * before: pattern`${capture('a')} + ${capture('b')}`,
31
+ * after: template`${capture('b')} + ${capture('a')}`
32
+ * }));
33
+ * // tryOn() returns undefined if no pattern matches, so always use || node
34
+ * return await rule.tryOn(this.cursor, binary) || binary;
35
+ * }
36
+ * }
37
+ */
38
+ export declare function rewrite(builderFn: () => RewriteConfig): RewriteRule;
39
+ //# sourceMappingURL=rewrite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrite.d.ts","sourceRoot":"","sources":["../../../src/javascript/templating/rewrite.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AA8BnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,OAAO,CACnB,SAAS,EAAE,MAAM,aAAa,GAC/B,WAAW,CASb"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.rewrite = rewrite;
13
+ /**
14
+ * Implementation of a replacement rule.
15
+ */
16
+ class RewriteRuleImpl {
17
+ constructor(before, after) {
18
+ this.before = before;
19
+ this.after = after;
20
+ }
21
+ tryOn(cursor, node) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ for (const pattern of this.before) {
24
+ const match = yield pattern.match(node);
25
+ if (match) {
26
+ const result = yield this.after.apply(cursor, node, match);
27
+ if (result) {
28
+ return result;
29
+ }
30
+ }
31
+ }
32
+ // Return undefined if no patterns match
33
+ return undefined;
34
+ });
35
+ }
36
+ }
37
+ /**
38
+ * Creates a replacement rule using a capture context and configuration.
39
+ *
40
+ * @param builderFn Function that takes a capture context and returns before/after configuration
41
+ * @returns A replacement rule that can be applied to AST nodes
42
+ *
43
+ * @example
44
+ * // Single pattern
45
+ * const swapOperands = rewrite(() => ({
46
+ * before: pattern`${"left"} + ${"right"}`,
47
+ * after: template`${"right"} + ${"left"}`
48
+ * }));
49
+ *
50
+ * @example
51
+ * // Multiple patterns
52
+ * const normalizeComparisons = rewrite(() => ({
53
+ * before: [
54
+ * pattern`${"left"} == ${"right"}`,
55
+ * pattern`${"left"} === ${"right"}`
56
+ * ],
57
+ * after: template`${"left"} === ${"right"}`
58
+ * }));
59
+ *
60
+ * @example
61
+ * // Using in a visitor - IMPORTANT: use `|| node` to handle undefined when no match
62
+ * class MyVisitor extends JavaScriptVisitor<any> {
63
+ * override async visitBinary(binary: J.Binary, p: any): Promise<J | undefined> {
64
+ * const rule = rewrite(() => ({
65
+ * before: pattern`${capture('a')} + ${capture('b')}`,
66
+ * after: template`${capture('b')} + ${capture('a')}`
67
+ * }));
68
+ * // tryOn() returns undefined if no pattern matches, so always use || node
69
+ * return await rule.tryOn(this.cursor, binary) || binary;
70
+ * }
71
+ * }
72
+ */
73
+ function rewrite(builderFn) {
74
+ const config = builderFn();
75
+ // Ensure we have valid before and after properties
76
+ if (!config.before || !config.after) {
77
+ throw new Error('Builder function must return an object with before and after properties');
78
+ }
79
+ return new RewriteRuleImpl(Array.isArray(config.before) ? config.before : [config.before], config.after);
80
+ }
81
+ //# sourceMappingURL=rewrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrite.js","sourceRoot":"","sources":["../../../src/javascript/templating/rewrite.ts"],"names":[],"mappings":";;;;;;;;;;;AAmFA,0BAWC;AAzED;;GAEG;AACH,MAAM,eAAe;IACjB,YACqB,MAAiB,EACjB,KAAe;QADf,WAAM,GAAN,MAAM,CAAW;QACjB,UAAK,GAAL,KAAK,CAAU;IAEpC,CAAC;IAEK,KAAK,CAAC,MAAc,EAAE,IAAO;;YAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC3D,IAAI,MAAM,EAAE,CAAC;wBACT,OAAO,MAAM,CAAC;oBAClB,CAAC;gBACL,CAAC;YACL,CAAC;YAED,wCAAwC;YACxC,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,SAAgB,OAAO,CACnB,SAA8B;IAE9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,mDAAmD;IACnD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7G,CAAC"}