@openrewrite/recipes-angular 0.0.0 → 0.4.0-20260320-120427

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 (421) hide show
  1. package/dist/index.d.ts +107 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +441 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/migration/add-default-configuration.d.ts +8 -0
  6. package/dist/migration/add-default-configuration.d.ts.map +1 -0
  7. package/dist/migration/add-default-configuration.js +124 -0
  8. package/dist/migration/add-default-configuration.js.map +1 -0
  9. package/dist/migration/add-localize-polyfill.d.ts +8 -0
  10. package/dist/migration/add-localize-polyfill.d.ts.map +1 -0
  11. package/dist/migration/add-localize-polyfill.js +78 -0
  12. package/dist/migration/add-localize-polyfill.js.map +1 -0
  13. package/dist/migration/add-module-with-providers-generic.d.ts +8 -0
  14. package/dist/migration/add-module-with-providers-generic.d.ts.map +1 -0
  15. package/dist/migration/add-module-with-providers-generic.js +114 -0
  16. package/dist/migration/add-module-with-providers-generic.js.map +1 -0
  17. package/dist/migration/add-static-false-to-view-queries.d.ts +8 -0
  18. package/dist/migration/add-static-false-to-view-queries.d.ts.map +1 -0
  19. package/dist/migration/add-static-false-to-view-queries.js +100 -0
  20. package/dist/migration/add-static-false-to-view-queries.js.map +1 -0
  21. package/dist/migration/add-testbed-teardown.d.ts +8 -0
  22. package/dist/migration/add-testbed-teardown.d.ts.map +1 -0
  23. package/dist/migration/add-testbed-teardown.js +62 -0
  24. package/dist/migration/add-testbed-teardown.js.map +1 -0
  25. package/dist/migration/enable-aot-build.d.ts +8 -0
  26. package/dist/migration/enable-aot-build.d.ts.map +1 -0
  27. package/dist/migration/enable-aot-build.js +123 -0
  28. package/dist/migration/enable-aot-build.js.map +1 -0
  29. package/dist/migration/explicit-standalone-flag.d.ts +8 -0
  30. package/dist/migration/explicit-standalone-flag.d.ts.map +1 -0
  31. package/dist/migration/explicit-standalone-flag.js +99 -0
  32. package/dist/migration/explicit-standalone-flag.js.map +1 -0
  33. package/dist/migration/migrate-constructor-to-inject.d.ts +8 -0
  34. package/dist/migration/migrate-constructor-to-inject.d.ts.map +1 -0
  35. package/dist/migration/migrate-constructor-to-inject.js +162 -0
  36. package/dist/migration/migrate-constructor-to-inject.js.map +1 -0
  37. package/dist/migration/migrate-input-to-signal.d.ts +8 -0
  38. package/dist/migration/migrate-input-to-signal.d.ts.map +1 -0
  39. package/dist/migration/migrate-input-to-signal.js +293 -0
  40. package/dist/migration/migrate-input-to-signal.js.map +1 -0
  41. package/dist/migration/migrate-output-to-signal.d.ts +8 -0
  42. package/dist/migration/migrate-output-to-signal.d.ts.map +1 -0
  43. package/dist/migration/migrate-output-to-signal.js +259 -0
  44. package/dist/migration/migrate-output-to-signal.js.map +1 -0
  45. package/dist/migration/migrate-query-to-signal.d.ts +8 -0
  46. package/dist/migration/migrate-query-to-signal.d.ts.map +1 -0
  47. package/dist/migration/migrate-query-to-signal.js +256 -0
  48. package/dist/migration/migrate-query-to-signal.js.map +1 -0
  49. package/dist/migration/migrate-to-solution-style-tsconfig.d.ts +17 -0
  50. package/dist/migration/migrate-to-solution-style-tsconfig.d.ts.map +1 -0
  51. package/dist/migration/migrate-to-solution-style-tsconfig.js +153 -0
  52. package/dist/migration/migrate-to-solution-style-tsconfig.js.map +1 -0
  53. package/dist/migration/move-document-to-core.d.ts +16 -0
  54. package/dist/migration/move-document-to-core.d.ts.map +1 -0
  55. package/dist/migration/move-document-to-core.js +48 -0
  56. package/dist/migration/move-document-to-core.js.map +1 -0
  57. package/dist/migration/remove-aot-summaries.d.ts +8 -0
  58. package/dist/migration/remove-aot-summaries.d.ts.map +1 -0
  59. package/dist/migration/remove-aot-summaries.js +90 -0
  60. package/dist/migration/remove-aot-summaries.js.map +1 -0
  61. package/dist/migration/remove-browser-module-with-server-transition.d.ts +8 -0
  62. package/dist/migration/remove-browser-module-with-server-transition.d.ts.map +1 -0
  63. package/dist/migration/remove-browser-module-with-server-transition.js +173 -0
  64. package/dist/migration/remove-browser-module-with-server-transition.js.map +1 -0
  65. package/dist/migration/remove-component-factory-resolver.d.ts +8 -0
  66. package/dist/migration/remove-component-factory-resolver.d.ts.map +1 -0
  67. package/dist/migration/remove-component-factory-resolver.js +70 -0
  68. package/dist/migration/remove-component-factory-resolver.js.map +1 -0
  69. package/dist/migration/remove-default-project.d.ts +8 -0
  70. package/dist/migration/remove-default-project.d.ts.map +1 -0
  71. package/dist/migration/remove-default-project.js +59 -0
  72. package/dist/migration/remove-default-project.js.map +1 -0
  73. package/dist/migration/remove-empty-ng-on-init.d.ts +8 -0
  74. package/dist/migration/remove-empty-ng-on-init.d.ts.map +1 -0
  75. package/dist/migration/remove-empty-ng-on-init.js +98 -0
  76. package/dist/migration/remove-empty-ng-on-init.js.map +1 -0
  77. package/dist/migration/remove-enable-ivy.d.ts +8 -0
  78. package/dist/migration/remove-enable-ivy.d.ts.map +1 -0
  79. package/dist/migration/remove-enable-ivy.js +78 -0
  80. package/dist/migration/remove-enable-ivy.js.map +1 -0
  81. package/dist/migration/remove-entry-components.d.ts +8 -0
  82. package/dist/migration/remove-entry-components.d.ts.map +1 -0
  83. package/dist/migration/remove-entry-components.js +101 -0
  84. package/dist/migration/remove-entry-components.js.map +1 -0
  85. package/dist/migration/remove-es5-browser-support.d.ts +8 -0
  86. package/dist/migration/remove-es5-browser-support.d.ts.map +1 -0
  87. package/dist/migration/remove-es5-browser-support.js +74 -0
  88. package/dist/migration/remove-es5-browser-support.js.map +1 -0
  89. package/dist/migration/remove-extract-css.d.ts +8 -0
  90. package/dist/migration/remove-extract-css.d.ts.map +1 -0
  91. package/dist/migration/remove-extract-css.js +76 -0
  92. package/dist/migration/remove-extract-css.js.map +1 -0
  93. package/dist/migration/remove-ie-polyfills.d.ts +8 -0
  94. package/dist/migration/remove-ie-polyfills.d.ts.map +1 -0
  95. package/dist/migration/remove-ie-polyfills.js +151 -0
  96. package/dist/migration/remove-ie-polyfills.js.map +1 -0
  97. package/dist/migration/remove-module-id.d.ts +8 -0
  98. package/dist/migration/remove-module-id.d.ts.map +1 -0
  99. package/dist/migration/remove-module-id.js +81 -0
  100. package/dist/migration/remove-module-id.js.map +1 -0
  101. package/dist/migration/remove-relative-link-resolution.d.ts +8 -0
  102. package/dist/migration/remove-relative-link-resolution.d.ts.map +1 -0
  103. package/dist/migration/remove-relative-link-resolution.js +84 -0
  104. package/dist/migration/remove-relative-link-resolution.js.map +1 -0
  105. package/dist/migration/remove-standalone-true.d.ts +8 -0
  106. package/dist/migration/remove-standalone-true.d.ts.map +1 -0
  107. package/dist/migration/remove-standalone-true.js +73 -0
  108. package/dist/migration/remove-standalone-true.js.map +1 -0
  109. package/dist/migration/remove-static-false.d.ts +8 -0
  110. package/dist/migration/remove-static-false.d.ts.map +1 -0
  111. package/dist/migration/remove-static-false.js +90 -0
  112. package/dist/migration/remove-static-false.js.map +1 -0
  113. package/dist/migration/remove-zone-js-polyfill.d.ts +8 -0
  114. package/dist/migration/remove-zone-js-polyfill.d.ts.map +1 -0
  115. package/dist/migration/remove-zone-js-polyfill.js +73 -0
  116. package/dist/migration/remove-zone-js-polyfill.js.map +1 -0
  117. package/dist/migration/rename-after-render.d.ts +8 -0
  118. package/dist/migration/rename-after-render.d.ts.map +1 -0
  119. package/dist/migration/rename-after-render.js +52 -0
  120. package/dist/migration/rename-after-render.js.map +1 -0
  121. package/dist/migration/rename-check-no-changes.d.ts +8 -0
  122. package/dist/migration/rename-check-no-changes.d.ts.map +1 -0
  123. package/dist/migration/rename-check-no-changes.js +48 -0
  124. package/dist/migration/rename-check-no-changes.js.map +1 -0
  125. package/dist/migration/rename-file.d.ts +14 -0
  126. package/dist/migration/rename-file.d.ts.map +1 -0
  127. package/dist/migration/rename-file.js +124 -0
  128. package/dist/migration/rename-file.js.map +1 -0
  129. package/dist/migration/rename-pending-tasks.d.ts +8 -0
  130. package/dist/migration/rename-pending-tasks.d.ts.map +1 -0
  131. package/dist/migration/rename-pending-tasks.js +49 -0
  132. package/dist/migration/rename-pending-tasks.js.map +1 -0
  133. package/dist/migration/rename-zoneless-provider.d.ts +8 -0
  134. package/dist/migration/rename-zoneless-provider.d.ts.map +1 -0
  135. package/dist/migration/rename-zoneless-provider.js +48 -0
  136. package/dist/migration/rename-zoneless-provider.js.map +1 -0
  137. package/dist/migration/replace-async-with-wait-for-async.d.ts +8 -0
  138. package/dist/migration/replace-async-with-wait-for-async.d.ts.map +1 -0
  139. package/dist/migration/replace-async-with-wait-for-async.js +52 -0
  140. package/dist/migration/replace-async-with-wait-for-async.js.map +1 -0
  141. package/dist/migration/replace-deep-zone-js-imports.d.ts +8 -0
  142. package/dist/migration/replace-deep-zone-js-imports.d.ts.map +1 -0
  143. package/dist/migration/replace-deep-zone-js-imports.js +144 -0
  144. package/dist/migration/replace-deep-zone-js-imports.js.map +1 -0
  145. package/dist/migration/replace-http-client-module.d.ts +8 -0
  146. package/dist/migration/replace-http-client-module.d.ts.map +1 -0
  147. package/dist/migration/replace-http-client-module.js +248 -0
  148. package/dist/migration/replace-http-client-module.js.map +1 -0
  149. package/dist/migration/replace-initial-navigation.d.ts +8 -0
  150. package/dist/migration/replace-initial-navigation.d.ts.map +1 -0
  151. package/dist/migration/replace-initial-navigation.js +80 -0
  152. package/dist/migration/replace-initial-navigation.js.map +1 -0
  153. package/dist/migration/replace-inject-flags.d.ts +8 -0
  154. package/dist/migration/replace-inject-flags.d.ts.map +1 -0
  155. package/dist/migration/replace-inject-flags.js +101 -0
  156. package/dist/migration/replace-inject-flags.js.map +1 -0
  157. package/dist/migration/replace-load-children-string.d.ts +8 -0
  158. package/dist/migration/replace-load-children-string.d.ts.map +1 -0
  159. package/dist/migration/replace-load-children-string.js +70 -0
  160. package/dist/migration/replace-load-children-string.js.map +1 -0
  161. package/dist/migration/replace-node-sass-with-sass.d.ts +8 -0
  162. package/dist/migration/replace-node-sass-with-sass.d.ts.map +1 -0
  163. package/dist/migration/replace-node-sass-with-sass.js +38 -0
  164. package/dist/migration/replace-node-sass-with-sass.js.map +1 -0
  165. package/dist/migration/replace-router-link-with-href.d.ts +8 -0
  166. package/dist/migration/replace-router-link-with-href.d.ts.map +1 -0
  167. package/dist/migration/replace-router-link-with-href.js +55 -0
  168. package/dist/migration/replace-router-link-with-href.js.map +1 -0
  169. package/dist/migration/replace-testbed-get-with-inject.d.ts +8 -0
  170. package/dist/migration/replace-testbed-get-with-inject.d.ts.map +1 -0
  171. package/dist/migration/replace-testbed-get-with-inject.js +53 -0
  172. package/dist/migration/replace-testbed-get-with-inject.js.map +1 -0
  173. package/dist/migration/replace-untyped-forms.d.ts +8 -0
  174. package/dist/migration/replace-untyped-forms.d.ts.map +1 -0
  175. package/dist/migration/replace-untyped-forms.js +78 -0
  176. package/dist/migration/replace-untyped-forms.js.map +1 -0
  177. package/dist/migration/replace-validator-with-validators.d.ts +8 -0
  178. package/dist/migration/replace-validator-with-validators.d.ts.map +1 -0
  179. package/dist/migration/replace-validator-with-validators.js +62 -0
  180. package/dist/migration/replace-validator-with-validators.js.map +1 -0
  181. package/dist/migration/replace-view-encapsulation-native.d.ts +8 -0
  182. package/dist/migration/replace-view-encapsulation-native.d.ts.map +1 -0
  183. package/dist/migration/replace-view-encapsulation-native.js +67 -0
  184. package/dist/migration/replace-view-encapsulation-native.js.map +1 -0
  185. package/dist/migration/update-component-template-url.d.ts +28 -0
  186. package/dist/migration/update-component-template-url.d.ts.map +1 -0
  187. package/dist/migration/update-component-template-url.js +178 -0
  188. package/dist/migration/update-component-template-url.js.map +1 -0
  189. package/dist/migration/update-tsconfig-module.d.ts +8 -0
  190. package/dist/migration/update-tsconfig-module.d.ts.map +1 -0
  191. package/dist/migration/update-tsconfig-module.js +83 -0
  192. package/dist/migration/update-tsconfig-module.js.map +1 -0
  193. package/dist/migration/update-tsconfig-target.d.ts +8 -0
  194. package/dist/migration/update-tsconfig-target.d.ts.map +1 -0
  195. package/dist/migration/update-tsconfig-target.js +78 -0
  196. package/dist/migration/update-tsconfig-target.js.map +1 -0
  197. package/dist/migration/upgrade-to-angular-10.d.ts +8 -0
  198. package/dist/migration/upgrade-to-angular-10.d.ts.map +1 -0
  199. package/dist/migration/upgrade-to-angular-10.js +68 -0
  200. package/dist/migration/upgrade-to-angular-10.js.map +1 -0
  201. package/dist/migration/upgrade-to-angular-11.d.ts +8 -0
  202. package/dist/migration/upgrade-to-angular-11.d.ts.map +1 -0
  203. package/dist/migration/upgrade-to-angular-11.js +68 -0
  204. package/dist/migration/upgrade-to-angular-11.js.map +1 -0
  205. package/dist/migration/upgrade-to-angular-12.d.ts +8 -0
  206. package/dist/migration/upgrade-to-angular-12.d.ts.map +1 -0
  207. package/dist/migration/upgrade-to-angular-12.js +59 -0
  208. package/dist/migration/upgrade-to-angular-12.js.map +1 -0
  209. package/dist/migration/upgrade-to-angular-13.d.ts +8 -0
  210. package/dist/migration/upgrade-to-angular-13.d.ts.map +1 -0
  211. package/dist/migration/upgrade-to-angular-13.js +61 -0
  212. package/dist/migration/upgrade-to-angular-13.js.map +1 -0
  213. package/dist/migration/upgrade-to-angular-14.d.ts +8 -0
  214. package/dist/migration/upgrade-to-angular-14.d.ts.map +1 -0
  215. package/dist/migration/upgrade-to-angular-14.js +60 -0
  216. package/dist/migration/upgrade-to-angular-14.js.map +1 -0
  217. package/dist/migration/upgrade-to-angular-15.d.ts +8 -0
  218. package/dist/migration/upgrade-to-angular-15.d.ts.map +1 -0
  219. package/dist/migration/upgrade-to-angular-15.js +59 -0
  220. package/dist/migration/upgrade-to-angular-15.js.map +1 -0
  221. package/dist/migration/upgrade-to-angular-16.d.ts +8 -0
  222. package/dist/migration/upgrade-to-angular-16.d.ts.map +1 -0
  223. package/dist/migration/upgrade-to-angular-16.js +73 -0
  224. package/dist/migration/upgrade-to-angular-16.js.map +1 -0
  225. package/dist/migration/upgrade-to-angular-17.d.ts +8 -0
  226. package/dist/migration/upgrade-to-angular-17.d.ts.map +1 -0
  227. package/dist/migration/upgrade-to-angular-17.js +59 -0
  228. package/dist/migration/upgrade-to-angular-17.js.map +1 -0
  229. package/dist/migration/upgrade-to-angular-18.d.ts +8 -0
  230. package/dist/migration/upgrade-to-angular-18.d.ts.map +1 -0
  231. package/dist/migration/upgrade-to-angular-18.js +85 -0
  232. package/dist/migration/upgrade-to-angular-18.js.map +1 -0
  233. package/dist/migration/upgrade-to-angular-19.d.ts +8 -0
  234. package/dist/migration/upgrade-to-angular-19.d.ts.map +1 -0
  235. package/dist/migration/upgrade-to-angular-19.js +68 -0
  236. package/dist/migration/upgrade-to-angular-19.js.map +1 -0
  237. package/dist/migration/upgrade-to-angular-20.d.ts +8 -0
  238. package/dist/migration/upgrade-to-angular-20.d.ts.map +1 -0
  239. package/dist/migration/upgrade-to-angular-20.js +63 -0
  240. package/dist/migration/upgrade-to-angular-20.js.map +1 -0
  241. package/dist/migration/upgrade-to-angular-21.d.ts +8 -0
  242. package/dist/migration/upgrade-to-angular-21.d.ts.map +1 -0
  243. package/dist/migration/upgrade-to-angular-21.js +69 -0
  244. package/dist/migration/upgrade-to-angular-21.js.map +1 -0
  245. package/dist/migration/upgrade-to-angular-8.d.ts +8 -0
  246. package/dist/migration/upgrade-to-angular-8.d.ts.map +1 -0
  247. package/dist/migration/upgrade-to-angular-8.js +70 -0
  248. package/dist/migration/upgrade-to-angular-8.js.map +1 -0
  249. package/dist/migration/upgrade-to-angular-9.d.ts +8 -0
  250. package/dist/migration/upgrade-to-angular-9.d.ts.map +1 -0
  251. package/dist/migration/upgrade-to-angular-9.js +85 -0
  252. package/dist/migration/upgrade-to-angular-9.js.map +1 -0
  253. package/dist/search/find-analyze-for-entry-components-usage.d.ts +8 -0
  254. package/dist/search/find-analyze-for-entry-components-usage.d.ts.map +1 -0
  255. package/dist/search/find-analyze-for-entry-components-usage.js +66 -0
  256. package/dist/search/find-analyze-for-entry-components-usage.js.map +1 -0
  257. package/dist/search/find-angular-decorator.d.ts +8 -0
  258. package/dist/search/find-angular-decorator.d.ts.map +1 -0
  259. package/dist/search/find-angular-decorator.js +78 -0
  260. package/dist/search/find-angular-decorator.js.map +1 -0
  261. package/dist/search/find-angular-http-usage.d.ts +8 -0
  262. package/dist/search/find-angular-http-usage.d.ts.map +1 -0
  263. package/dist/search/find-angular-http-usage.js +55 -0
  264. package/dist/search/find-angular-http-usage.js.map +1 -0
  265. package/dist/search/find-animation-driver-matches-element.d.ts +8 -0
  266. package/dist/search/find-animation-driver-matches-element.d.ts.map +1 -0
  267. package/dist/search/find-animation-driver-matches-element.js +59 -0
  268. package/dist/search/find-animation-driver-matches-element.js.map +1 -0
  269. package/dist/search/find-async-test-helper-usage.d.ts +8 -0
  270. package/dist/search/find-async-test-helper-usage.d.ts.map +1 -0
  271. package/dist/search/find-async-test-helper-usage.js +65 -0
  272. package/dist/search/find-async-test-helper-usage.js.map +1 -0
  273. package/dist/search/find-bare-module-with-providers.d.ts +8 -0
  274. package/dist/search/find-bare-module-with-providers.d.ts.map +1 -0
  275. package/dist/search/find-bare-module-with-providers.js +67 -0
  276. package/dist/search/find-bare-module-with-providers.js.map +1 -0
  277. package/dist/search/find-browser-transfer-state-module-usage.d.ts +8 -0
  278. package/dist/search/find-browser-transfer-state-module-usage.d.ts.map +1 -0
  279. package/dist/search/find-browser-transfer-state-module-usage.js +65 -0
  280. package/dist/search/find-browser-transfer-state-module-usage.js.map +1 -0
  281. package/dist/search/find-common-module-usage.d.ts +8 -0
  282. package/dist/search/find-common-module-usage.d.ts.map +1 -0
  283. package/dist/search/find-common-module-usage.js +67 -0
  284. package/dist/search/find-common-module-usage.js.map +1 -0
  285. package/dist/search/find-compiler-factory-usage.d.ts +8 -0
  286. package/dist/search/find-compiler-factory-usage.d.ts.map +1 -0
  287. package/dist/search/find-compiler-factory-usage.js +70 -0
  288. package/dist/search/find-compiler-factory-usage.js.map +1 -0
  289. package/dist/search/find-date-pipe-default-timezone-usage.d.ts +8 -0
  290. package/dist/search/find-date-pipe-default-timezone-usage.d.ts.map +1 -0
  291. package/dist/search/find-date-pipe-default-timezone-usage.js +66 -0
  292. package/dist/search/find-date-pipe-default-timezone-usage.js.map +1 -0
  293. package/dist/search/find-effect-timing-usage.d.ts +8 -0
  294. package/dist/search/find-effect-timing-usage.d.ts.map +1 -0
  295. package/dist/search/find-effect-timing-usage.js +48 -0
  296. package/dist/search/find-effect-timing-usage.js.map +1 -0
  297. package/dist/search/find-empty-projectable-nodes.d.ts +8 -0
  298. package/dist/search/find-empty-projectable-nodes.d.ts.map +1 -0
  299. package/dist/search/find-empty-projectable-nodes.js +88 -0
  300. package/dist/search/find-empty-projectable-nodes.js.map +1 -0
  301. package/dist/search/find-fake-async-usage.d.ts +8 -0
  302. package/dist/search/find-fake-async-usage.d.ts.map +1 -0
  303. package/dist/search/find-fake-async-usage.js +56 -0
  304. package/dist/search/find-fake-async-usage.js.map +1 -0
  305. package/dist/search/find-hammer-js-usage.d.ts +8 -0
  306. package/dist/search/find-hammer-js-usage.d.ts.map +1 -0
  307. package/dist/search/find-hammer-js-usage.js +69 -0
  308. package/dist/search/find-hammer-js-usage.js.map +1 -0
  309. package/dist/search/find-i18n-usage.d.ts +8 -0
  310. package/dist/search/find-i18n-usage.d.ts.map +1 -0
  311. package/dist/search/find-i18n-usage.js +128 -0
  312. package/dist/search/find-i18n-usage.js.map +1 -0
  313. package/dist/search/find-karma-usage.d.ts +8 -0
  314. package/dist/search/find-karma-usage.d.ts.map +1 -0
  315. package/dist/search/find-karma-usage.js +69 -0
  316. package/dist/search/find-karma-usage.js.map +1 -0
  317. package/dist/search/find-load-children-string-usage.d.ts +8 -0
  318. package/dist/search/find-load-children-string-usage.d.ts.map +1 -0
  319. package/dist/search/find-load-children-string-usage.js +62 -0
  320. package/dist/search/find-load-children-string-usage.js.map +1 -0
  321. package/dist/search/find-missing-injectable.d.ts +8 -0
  322. package/dist/search/find-missing-injectable.d.ts.map +1 -0
  323. package/dist/search/find-missing-injectable.js +98 -0
  324. package/dist/search/find-missing-injectable.js.map +1 -0
  325. package/dist/search/find-ng-class-usage.d.ts +8 -0
  326. package/dist/search/find-ng-class-usage.d.ts.map +1 -0
  327. package/dist/search/find-ng-class-usage.js +65 -0
  328. package/dist/search/find-ng-class-usage.js.map +1 -0
  329. package/dist/search/find-ng-style-usage.d.ts +8 -0
  330. package/dist/search/find-ng-style-usage.d.ts.map +1 -0
  331. package/dist/search/find-ng-style-usage.js +65 -0
  332. package/dist/search/find-ng-style-usage.js.map +1 -0
  333. package/dist/search/find-path-match-type-usage.d.ts +8 -0
  334. package/dist/search/find-path-match-type-usage.d.ts.map +1 -0
  335. package/dist/search/find-path-match-type-usage.js +62 -0
  336. package/dist/search/find-path-match-type-usage.js.map +1 -0
  337. package/dist/search/find-platform-dynamic-server-usage.d.ts +8 -0
  338. package/dist/search/find-platform-dynamic-server-usage.d.ts.map +1 -0
  339. package/dist/search/find-platform-dynamic-server-usage.js +59 -0
  340. package/dist/search/find-platform-dynamic-server-usage.js.map +1 -0
  341. package/dist/search/find-platform-webworker-usage.d.ts +8 -0
  342. package/dist/search/find-platform-webworker-usage.d.ts.map +1 -0
  343. package/dist/search/find-platform-webworker-usage.js +54 -0
  344. package/dist/search/find-platform-webworker-usage.js.map +1 -0
  345. package/dist/search/find-platform-worker-usage.d.ts +8 -0
  346. package/dist/search/find-platform-worker-usage.d.ts.map +1 -0
  347. package/dist/search/find-platform-worker-usage.js +60 -0
  348. package/dist/search/find-platform-worker-usage.js.map +1 -0
  349. package/dist/search/find-preserve-fragment-usage.d.ts +8 -0
  350. package/dist/search/find-preserve-fragment-usage.d.ts.map +1 -0
  351. package/dist/search/find-preserve-fragment-usage.js +52 -0
  352. package/dist/search/find-preserve-fragment-usage.js.map +1 -0
  353. package/dist/search/find-preserve-query-params-usage.d.ts +8 -0
  354. package/dist/search/find-preserve-query-params-usage.d.ts.map +1 -0
  355. package/dist/search/find-preserve-query-params-usage.js +52 -0
  356. package/dist/search/find-preserve-query-params-usage.js.map +1 -0
  357. package/dist/search/find-provided-in-deprecated-usage.d.ts +8 -0
  358. package/dist/search/find-provided-in-deprecated-usage.d.ts.map +1 -0
  359. package/dist/search/find-provided-in-deprecated-usage.js +87 -0
  360. package/dist/search/find-provided-in-deprecated-usage.js.map +1 -0
  361. package/dist/search/find-reflective-injector-usage.d.ts +8 -0
  362. package/dist/search/find-reflective-injector-usage.d.ts.map +1 -0
  363. package/dist/search/find-reflective-injector-usage.js +65 -0
  364. package/dist/search/find-reflective-injector-usage.js.map +1 -0
  365. package/dist/search/find-render-application-usage.d.ts +8 -0
  366. package/dist/search/find-render-application-usage.d.ts.map +1 -0
  367. package/dist/search/find-render-application-usage.js +67 -0
  368. package/dist/search/find-render-application-usage.js.map +1 -0
  369. package/dist/search/find-render-component-type-usage.d.ts +8 -0
  370. package/dist/search/find-render-component-type-usage.d.ts.map +1 -0
  371. package/dist/search/find-render-component-type-usage.js +66 -0
  372. package/dist/search/find-render-component-type-usage.js.map +1 -0
  373. package/dist/search/find-render-module-factory-usage.d.ts +8 -0
  374. package/dist/search/find-render-module-factory-usage.d.ts.map +1 -0
  375. package/dist/search/find-render-module-factory-usage.js +65 -0
  376. package/dist/search/find-render-module-factory-usage.js.map +1 -0
  377. package/dist/search/find-renderer-usage.d.ts +8 -0
  378. package/dist/search/find-renderer-usage.d.ts.map +1 -0
  379. package/dist/search/find-renderer-usage.js +66 -0
  380. package/dist/search/find-renderer-usage.js.map +1 -0
  381. package/dist/search/find-resource-cache-provider-usage.d.ts +8 -0
  382. package/dist/search/find-resource-cache-provider-usage.d.ts.map +1 -0
  383. package/dist/search/find-resource-cache-provider-usage.js +59 -0
  384. package/dist/search/find-resource-cache-provider-usage.js.map +1 -0
  385. package/dist/search/find-root-renderer-usage.d.ts +8 -0
  386. package/dist/search/find-root-renderer-usage.d.ts.map +1 -0
  387. package/dist/search/find-root-renderer-usage.js +67 -0
  388. package/dist/search/find-root-renderer-usage.js.map +1 -0
  389. package/dist/search/find-rxjs-compat-usage.d.ts +8 -0
  390. package/dist/search/find-rxjs-compat-usage.d.ts.map +1 -0
  391. package/dist/search/find-rxjs-compat-usage.js +60 -0
  392. package/dist/search/find-rxjs-compat-usage.js.map +1 -0
  393. package/dist/search/find-server-transfer-state-module-usage.d.ts +8 -0
  394. package/dist/search/find-server-transfer-state-module-usage.d.ts.map +1 -0
  395. package/dist/search/find-server-transfer-state-module-usage.js +59 -0
  396. package/dist/search/find-server-transfer-state-module-usage.js.map +1 -0
  397. package/dist/search/find-setup-testing-router-usage.d.ts +8 -0
  398. package/dist/search/find-setup-testing-router-usage.d.ts.map +1 -0
  399. package/dist/search/find-setup-testing-router-usage.js +65 -0
  400. package/dist/search/find-setup-testing-router-usage.js.map +1 -0
  401. package/dist/search/find-testability-pending-request-usage.d.ts +8 -0
  402. package/dist/search/find-testability-pending-request-usage.d.ts.map +1 -0
  403. package/dist/search/find-testability-pending-request-usage.js +59 -0
  404. package/dist/search/find-testability-pending-request-usage.js.map +1 -0
  405. package/dist/search/find-undecorated-angular-class.d.ts +8 -0
  406. package/dist/search/find-undecorated-angular-class.d.ts.map +1 -0
  407. package/dist/search/find-undecorated-angular-class.js +87 -0
  408. package/dist/search/find-undecorated-angular-class.js.map +1 -0
  409. package/dist/search/find-with-no-dom-reuse-usage.d.ts +8 -0
  410. package/dist/search/find-with-no-dom-reuse-usage.d.ts.map +1 -0
  411. package/dist/search/find-with-no-dom-reuse-usage.js +66 -0
  412. package/dist/search/find-with-no-dom-reuse-usage.js.map +1 -0
  413. package/dist/search/find-wrapped-value-usage.d.ts +8 -0
  414. package/dist/search/find-wrapped-value-usage.d.ts.map +1 -0
  415. package/dist/search/find-wrapped-value-usage.js +66 -0
  416. package/dist/search/find-wrapped-value-usage.js.map +1 -0
  417. package/dist/search/find-zone-js-usage.d.ts +8 -0
  418. package/dist/search/find-zone-js-usage.d.ts.map +1 -0
  419. package/dist/search/find-zone-js-usage.js +65 -0
  420. package/dist/search/find-zone-js-usage.js.map +1 -0
  421. package/package.json +1 -1
@@ -0,0 +1,8 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class ReplaceRouterLinkWithHref extends Recipe {
3
+ readonly name = "org.openrewrite.angular.migration.replace-router-link-with-href";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
7
+ }
8
+ //# sourceMappingURL=replace-router-link-with-href.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-router-link-with-href.d.ts","sourceRoot":"","sources":["../../src/migration/replace-router-link-with-href.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAK3E,qBAAa,yBAA0B,SAAQ,MAAM;IACjD,QAAQ,CAAC,IAAI,qEAAqE;IAClF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAoD;IAChF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAC2C;IAEjE,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAmB9D"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2026 the original author or authors.
4
+ *
5
+ * Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
6
+ */
7
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
14
+ });
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ReplaceRouterLinkWithHref = void 0;
18
+ const rewrite_1 = require("@openrewrite/rewrite");
19
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
20
+ const mutative_1 = require("mutative");
21
+ class ReplaceRouterLinkWithHref extends rewrite_1.Recipe {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.name = "org.openrewrite.angular.migration.replace-router-link-with-href";
25
+ this.displayName = "Replace `RouterLinkWithHref` with `RouterLink`";
26
+ this.description = "Replaces `RouterLinkWithHref` with `RouterLink` in imports and usages. " +
27
+ "`RouterLinkWithHref` was merged into `RouterLink` in Angular 16.";
28
+ }
29
+ editor() {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ return new class extends javascript_1.JavaScriptVisitor {
32
+ visitIdentifier(identifier, p) {
33
+ const _super = Object.create(null, {
34
+ visitIdentifier: { get: () => super.visitIdentifier }
35
+ });
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ let id = yield _super.visitIdentifier.call(this, identifier, p);
38
+ if (!id)
39
+ return id;
40
+ if (id.simpleName === 'RouterLinkWithHref') {
41
+ (0, javascript_1.maybeAddImport)(this, { module: '@angular/router', member: 'RouterLink' });
42
+ (0, javascript_1.maybeRemoveImport)(this, '@angular/router', 'RouterLinkWithHref');
43
+ return (0, mutative_1.create)(id, draft => {
44
+ draft.simpleName = 'RouterLink';
45
+ });
46
+ }
47
+ return id;
48
+ });
49
+ }
50
+ }();
51
+ });
52
+ }
53
+ }
54
+ exports.ReplaceRouterLinkWithHref = ReplaceRouterLinkWithHref;
55
+ //# sourceMappingURL=replace-router-link-with-href.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-router-link-with-href.js","sourceRoot":"","sources":["../../src/migration/replace-router-link-with-href.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA2E;AAC3E,gEAAqG;AAErG,uCAAgC;AAEhC,MAAa,yBAA0B,SAAQ,gBAAM;IAArD;;QACa,SAAI,GAAG,iEAAiE,CAAC;QACzE,gBAAW,GAAW,gDAAgD,CAAC;QACvE,gBAAW,GAAW,yEAAyE;YACpG,kEAAkE,CAAC;IAqB3E,CAAC;IAnBS,MAAM;;YACR,OAAO,IAAI,KAAM,SAAQ,8BAAmC;gBACzC,eAAe,CAAC,UAAwB,EAAE,CAAmB;;;;;wBACxE,IAAI,EAAE,GAAG,MAAM,OAAM,eAAe,YAAC,UAAU,EAAE,CAAC,CAAiB,CAAC;wBACpE,IAAI,CAAC,EAAE;4BAAE,OAAO,EAAE,CAAC;wBAEnB,IAAI,EAAE,CAAC,UAAU,KAAK,oBAAoB,EAAE,CAAC;4BACzC,IAAA,2BAAc,EAAC,IAAI,EAAE,EAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAC,CAAC,CAAC;4BACxE,IAAA,8BAAiB,EAAC,IAAI,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;4BAEjE,OAAO,IAAA,iBAAM,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE;gCACtB,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC;4BACpC,CAAC,CAAiB,CAAC;wBACvB,CAAC;wBAED,OAAO,EAAE,CAAC;oBACd,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AAzBD,8DAyBC"}
@@ -0,0 +1,8 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class ReplaceTestBedGetWithInject extends Recipe {
3
+ readonly name = "org.openrewrite.angular.migration.replace-testbed-get-with-inject";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
7
+ }
8
+ //# sourceMappingURL=replace-testbed-get-with-inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-testbed-get-with-inject.d.ts","sourceRoot":"","sources":["../../src/migration/replace-testbed-get-with-inject.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAK3E,qBAAa,2BAA4B,SAAQ,MAAM;IACnD,QAAQ,CAAC,IAAI,uEAAuE;IACpF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAqD;IACjF,QAAQ,CAAC,WAAW,EAAE,MAAM,CACiD;IAEvE,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAe9D"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2026 the original author or authors.
4
+ *
5
+ * Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
6
+ */
7
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
14
+ });
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ReplaceTestBedGetWithInject = void 0;
18
+ const rewrite_1 = require("@openrewrite/rewrite");
19
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
20
+ const mutative_1 = require("mutative");
21
+ class ReplaceTestBedGetWithInject extends rewrite_1.Recipe {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.name = "org.openrewrite.angular.migration.replace-testbed-get-with-inject";
25
+ this.displayName = "Replace `TestBed.get()` with `TestBed.inject()`";
26
+ this.description = "Replaces deprecated `TestBed.get()` calls with `TestBed.inject()`. " +
27
+ "`TestBed.get()` was deprecated in Angular 9 and removed in Angular 13.";
28
+ }
29
+ editor() {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ return new class extends javascript_1.JavaScriptVisitor {
32
+ visitMethodInvocation(method, p) {
33
+ const _super = Object.create(null, {
34
+ visitMethodInvocation: { get: () => super.visitMethodInvocation }
35
+ });
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ let m = yield _super.visitMethodInvocation.call(this, method, p);
38
+ if (!m)
39
+ return m;
40
+ const args = (0, javascript_1.capture)({ variadic: true });
41
+ if (!(yield (0, javascript_1.pattern) `TestBed.get(${args})`.match(m, this.cursor)))
42
+ return m;
43
+ return (0, mutative_1.create)(m, draft => {
44
+ draft.name.simpleName = 'inject';
45
+ });
46
+ });
47
+ }
48
+ }();
49
+ });
50
+ }
51
+ }
52
+ exports.ReplaceTestBedGetWithInject = ReplaceTestBedGetWithInject;
53
+ //# sourceMappingURL=replace-testbed-get-with-inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-testbed-get-with-inject.js","sourceRoot":"","sources":["../../src/migration/replace-testbed-get-with-inject.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA2E;AAC3E,gEAAoF;AAEpF,uCAAgC;AAEhC,MAAa,2BAA4B,SAAQ,gBAAM;IAAvD;;QACa,SAAI,GAAG,mEAAmE,CAAC;QAC3E,gBAAW,GAAW,iDAAiD,CAAC;QACxE,gBAAW,GAAW,qEAAqE;YAChG,wEAAwE,CAAC;IAiBjF,CAAC;IAfS,MAAM;;YACR,OAAO,IAAI,KAAM,SAAQ,8BAAmC;gBACzC,qBAAqB,CAAC,MAA0B,EAAE,CAAmB;;;;;wBAChF,IAAI,CAAC,GAAG,MAAM,OAAM,qBAAqB,YAAC,MAAM,EAAE,CAAC,CAAuB,CAAC;wBAC3E,IAAI,CAAC,CAAC;4BAAE,OAAO,CAAC,CAAC;wBAEjB,MAAM,IAAI,GAAG,IAAA,oBAAO,EAAI,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;wBAC1C,IAAI,CAAC,CAAA,MAAM,IAAA,oBAAO,EAAA,eAAe,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;4BAAE,OAAO,CAAC,CAAC;wBAEzE,OAAO,IAAA,iBAAM,EAAC,CAAC,EAAE,KAAK,CAAC,EAAE;4BACpB,KAAK,CAAC,IAAY,CAAC,UAAU,GAAG,QAAQ,CAAC;wBAC9C,CAAC,CAAuB,CAAC;oBAC7B,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AArBD,kEAqBC"}
@@ -0,0 +1,8 @@
1
+ import { Recipe } from "@openrewrite/rewrite";
2
+ export declare class ReplaceUntypedForms extends Recipe {
3
+ readonly name = "org.openrewrite.angular.migration.replace-untyped-forms";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ recipeList(): Promise<Recipe[]>;
7
+ }
8
+ //# sourceMappingURL=replace-untyped-forms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-untyped-forms.d.ts","sourceRoot":"","sources":["../../src/migration/replace-untyped-forms.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,MAAM,EAAc,MAAM,sBAAsB,CAAC;AAqC3E,qBAAa,mBAAoB,SAAQ,MAAM;IAC3C,QAAQ,CAAC,IAAI,6DAA6D;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAgD;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAEkD;IAExE,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAQxC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2026 the original author or authors.
4
+ *
5
+ * Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
6
+ */
7
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
14
+ });
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ReplaceUntypedForms = void 0;
18
+ const rewrite_1 = require("@openrewrite/rewrite");
19
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
20
+ const mutative_1 = require("mutative");
21
+ const MODULE = '@angular/forms';
22
+ const FORM_RENAMES = [
23
+ ['FormControl', 'UntypedFormControl'],
24
+ ['FormGroup', 'UntypedFormGroup'],
25
+ ['FormArray', 'UntypedFormArray'],
26
+ ['FormBuilder', 'UntypedFormBuilder'],
27
+ ];
28
+ class RenameFormIdentifiers extends rewrite_1.Recipe {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.name = "org.openrewrite.angular.migration.replace-untyped-forms.rename-identifiers";
32
+ this.displayName = "Rename form identifiers to untyped variants";
33
+ this.description = "Renames form class identifiers in code usages.";
34
+ }
35
+ editor() {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ const renameMap = new Map(FORM_RENAMES);
38
+ return new class extends javascript_1.JavaScriptVisitor {
39
+ visitIdentifier(identifier, p) {
40
+ const _super = Object.create(null, {
41
+ visitIdentifier: { get: () => super.visitIdentifier }
42
+ });
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ let id = yield _super.visitIdentifier.call(this, identifier, p);
45
+ if (!id)
46
+ return id;
47
+ const newName = renameMap.get(id.simpleName);
48
+ if (!newName)
49
+ return id;
50
+ return (0, mutative_1.create)(id, draft => {
51
+ draft.simpleName = newName;
52
+ });
53
+ });
54
+ }
55
+ }();
56
+ });
57
+ }
58
+ }
59
+ class ReplaceUntypedForms extends rewrite_1.Recipe {
60
+ constructor() {
61
+ super(...arguments);
62
+ this.name = "org.openrewrite.angular.migration.replace-untyped-forms";
63
+ this.displayName = "Replace form classes with untyped variants";
64
+ this.description = "Renames `FormControl`, `FormGroup`, `FormArray`, and `FormBuilder` to their " +
65
+ "`Untyped*` equivalents in imports and usages. Angular 14 introduced strictly typed forms, " +
66
+ "requiring existing untyped usages to migrate to the `Untyped*` aliases.";
67
+ }
68
+ recipeList() {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ return [
71
+ ...FORM_RENAMES.map(([oldMember, newMember]) => new javascript_1.ChangeImport({ oldModule: MODULE, oldMember, newModule: MODULE, newMember })),
72
+ new RenameFormIdentifiers(),
73
+ ];
74
+ });
75
+ }
76
+ }
77
+ exports.ReplaceUntypedForms = ReplaceUntypedForms;
78
+ //# sourceMappingURL=replace-untyped-forms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-untyped-forms.js","sourceRoot":"","sources":["../../src/migration/replace-untyped-forms.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA2E;AAC3E,gEAAgF;AAEhF,uCAAgC;AAEhC,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAEhC,MAAM,YAAY,GAAuB;IACrC,CAAC,aAAa,EAAE,oBAAoB,CAAC;IACrC,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACjC,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACjC,CAAC,aAAa,EAAE,oBAAoB,CAAC;CACxC,CAAC;AAEF,MAAM,qBAAsB,SAAQ,gBAAM;IAA1C;;QACa,SAAI,GAAG,4EAA4E,CAAC;QACpF,gBAAW,GAAW,6CAA6C,CAAC;QACpE,gBAAW,GAAW,gDAAgD,CAAC;IAkBpF,CAAC;IAhBS,MAAM;;YACR,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;YACxC,OAAO,IAAI,KAAM,SAAQ,8BAAmC;gBACzC,eAAe,CAAC,UAAwB,EAAE,CAAmB;;;;;wBACxE,IAAI,EAAE,GAAG,MAAM,OAAM,eAAe,YAAC,UAAU,EAAE,CAAC,CAAiB,CAAC;wBACpE,IAAI,CAAC,EAAE;4BAAE,OAAO,EAAE,CAAC;wBAEnB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;wBAC7C,IAAI,CAAC,OAAO;4BAAE,OAAO,EAAE,CAAC;wBAExB,OAAO,IAAA,iBAAM,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE;4BACtB,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC;wBAC/B,CAAC,CAAiB,CAAC;oBACvB,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AAED,MAAa,mBAAoB,SAAQ,gBAAM;IAA/C;;QACa,SAAI,GAAG,yDAAyD,CAAC;QACjE,gBAAW,GAAW,4CAA4C,CAAC;QACnE,gBAAW,GAAW,8EAA8E;YACzG,4FAA4F;YAC5F,yEAAyE,CAAC;IAUlF,CAAC;IARS,UAAU;;YACZ,OAAO;gBACH,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,CAC3C,IAAI,yBAAY,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAC,CAAC,CACjF;gBACD,IAAI,qBAAqB,EAAE;aAC9B,CAAC;QACN,CAAC;KAAA;CACJ;AAfD,kDAeC"}
@@ -0,0 +1,8 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class ReplaceValidatorWithValidators extends Recipe {
3
+ readonly name = "org.openrewrite.angular.migration.replace-validator-with-validators";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
7
+ }
8
+ //# sourceMappingURL=replace-validator-with-validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-validator-with-validators.d.ts","sourceRoot":"","sources":["../../src/migration/replace-validator-with-validators.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAK3E,qBAAa,8BAA+B,SAAQ,MAAM;IACtD,QAAQ,CAAC,IAAI,yEAAyE;IACtF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA4D;IACxF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAEyD;IAE/E,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAsB9D"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2026 the original author or authors.
4
+ *
5
+ * Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
6
+ */
7
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
14
+ });
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ReplaceValidatorWithValidators = void 0;
18
+ const rewrite_1 = require("@openrewrite/rewrite");
19
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
20
+ const java_1 = require("@openrewrite/rewrite/java");
21
+ const mutative_1 = require("mutative");
22
+ class ReplaceValidatorWithValidators extends rewrite_1.Recipe {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.name = "org.openrewrite.angular.migration.replace-validator-with-validators";
26
+ this.displayName = "Replace `validator`/`asyncValidator` with plural forms";
27
+ this.description = "Renames the deprecated singular `validator` and `asyncValidator` " +
28
+ "property names to `validators` and `asyncValidators` (plural). " +
29
+ "Angular 10 deprecated the singular forms in favor of `AbstractControlOptions`.";
30
+ }
31
+ editor() {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ const replacements = new Map([
34
+ ['validator', 'validators'],
35
+ ['asyncValidator', 'asyncValidators'],
36
+ ]);
37
+ return new class extends javascript_1.JavaScriptVisitor {
38
+ visitPropertyAssignment(prop, p) {
39
+ const _super = Object.create(null, {
40
+ visitPropertyAssignment: { get: () => super.visitPropertyAssignment }
41
+ });
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ let pa = yield _super.visitPropertyAssignment.call(this, prop, p);
44
+ if (!pa)
45
+ return pa;
46
+ const nameExpr = pa.name.element;
47
+ if (!(0, java_1.isIdentifier)(nameExpr))
48
+ return pa;
49
+ const replacement = replacements.get(nameExpr.simpleName);
50
+ if (!replacement)
51
+ return pa;
52
+ return (0, mutative_1.create)(pa, draft => {
53
+ draft.name.element.simpleName = replacement;
54
+ });
55
+ });
56
+ }
57
+ }();
58
+ });
59
+ }
60
+ }
61
+ exports.ReplaceValidatorWithValidators = ReplaceValidatorWithValidators;
62
+ //# sourceMappingURL=replace-validator-with-validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-validator-with-validators.js","sourceRoot":"","sources":["../../src/migration/replace-validator-with-validators.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA2E;AAC3E,gEAAsE;AACtE,oDAA0D;AAC1D,uCAAgC;AAEhC,MAAa,8BAA+B,SAAQ,gBAAM;IAA1D;;QACa,SAAI,GAAG,qEAAqE,CAAC;QAC7E,gBAAW,GAAW,wDAAwD,CAAC;QAC/E,gBAAW,GAAW,mEAAmE;YAC9F,iEAAiE;YACjE,gFAAgF,CAAC;IAwBzF,CAAC;IAtBS,MAAM;;YACR,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;gBACzB,CAAC,WAAW,EAAE,YAAY,CAAC;gBAC3B,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;aACxC,CAAC,CAAC;YACH,OAAO,IAAI,KAAM,SAAQ,8BAAmC;gBACzC,uBAAuB,CAAC,IAA2B,EAAE,CAAmB;;;;;wBACnF,IAAI,EAAE,GAAG,MAAM,OAAM,uBAAuB,YAAC,IAAI,EAAE,CAAC,CAA0B,CAAC;wBAC/E,IAAI,CAAC,EAAE;4BAAE,OAAO,EAAE,CAAC;wBAEnB,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;wBACjC,IAAI,CAAC,IAAA,mBAAY,EAAC,QAAQ,CAAC;4BAAE,OAAO,EAAE,CAAC;wBAEvC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAC1D,IAAI,CAAC,WAAW;4BAAE,OAAO,EAAE,CAAC;wBAE5B,OAAO,IAAA,iBAAM,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE;4BACrB,KAAK,CAAC,IAAI,CAAC,OAAe,CAAC,UAAU,GAAG,WAAW,CAAC;wBACzD,CAAC,CAA0B,CAAC;oBAChC,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AA7BD,wEA6BC"}
@@ -0,0 +1,8 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class ReplaceViewEncapsulationNative extends Recipe {
3
+ readonly name = "org.openrewrite.angular.migration.replace-view-encapsulation-native";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
7
+ }
8
+ //# sourceMappingURL=replace-view-encapsulation-native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-view-encapsulation-native.d.ts","sourceRoot":"","sources":["../../src/migration/replace-view-encapsulation-native.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAK3E,qBAAa,8BAA+B,SAAQ,MAAM;IACtD,QAAQ,CAAC,IAAI,yEAAyE;IACtF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA2E;IACvG,QAAQ,CAAC,WAAW,EAAE,MAAM,CAC4D;IAElF,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAiC9D"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2026 the original author or authors.
4
+ *
5
+ * Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
6
+ */
7
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
14
+ });
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ReplaceViewEncapsulationNative = void 0;
18
+ const rewrite_1 = require("@openrewrite/rewrite");
19
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
20
+ const java_1 = require("@openrewrite/rewrite/java");
21
+ const mutative_1 = require("mutative");
22
+ class ReplaceViewEncapsulationNative extends rewrite_1.Recipe {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.name = "org.openrewrite.angular.migration.replace-view-encapsulation-native";
26
+ this.displayName = "Replace `ViewEncapsulation.Native` with `ViewEncapsulation.ShadowDom`";
27
+ this.description = "Replaces `ViewEncapsulation.Native` with `ViewEncapsulation.ShadowDom`. " +
28
+ "`ViewEncapsulation.Native` was deprecated in Angular 6 and removed in Angular 11.";
29
+ }
30
+ editor() {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ return new class extends javascript_1.JavaScriptVisitor {
33
+ visitPropertyAssignment(prop, p) {
34
+ const _super = Object.create(null, {
35
+ visitPropertyAssignment: { get: () => super.visitPropertyAssignment }
36
+ });
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ let pa = yield _super.visitPropertyAssignment.call(this, prop, p);
39
+ if (!pa)
40
+ return pa;
41
+ const nameExpr = pa.name.element;
42
+ if (!(0, java_1.isIdentifier)(nameExpr) || nameExpr.simpleName !== 'encapsulation')
43
+ return pa;
44
+ if (!pa.initializer)
45
+ return pa;
46
+ if (pa.initializer.kind === java_1.J.Kind.FieldAccess) {
47
+ const fieldAccess = pa.initializer;
48
+ if (fieldAccess.target.kind !== java_1.J.Kind.Identifier)
49
+ return pa;
50
+ if (fieldAccess.target.simpleName !== 'ViewEncapsulation')
51
+ return pa;
52
+ if (fieldAccess.name.element.simpleName !== 'Native')
53
+ return pa;
54
+ return (0, mutative_1.create)(pa, draft => {
55
+ const fa = draft.initializer;
56
+ fa.name = Object.assign(Object.assign({}, fieldAccess.name), { element: Object.assign(Object.assign({}, fieldAccess.name.element), { simpleName: 'ShadowDom' }) });
57
+ });
58
+ }
59
+ return pa;
60
+ });
61
+ }
62
+ }();
63
+ });
64
+ }
65
+ }
66
+ exports.ReplaceViewEncapsulationNative = ReplaceViewEncapsulationNative;
67
+ //# sourceMappingURL=replace-view-encapsulation-native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-view-encapsulation-native.js","sourceRoot":"","sources":["../../src/migration/replace-view-encapsulation-native.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA2E;AAC3E,gEAAsE;AACtE,oDAA0D;AAC1D,uCAAgC;AAEhC,MAAa,8BAA+B,SAAQ,gBAAM;IAA1D;;QACa,SAAI,GAAG,qEAAqE,CAAC;QAC7E,gBAAW,GAAW,uEAAuE,CAAC;QAC9F,gBAAW,GAAW,0EAA0E;YACrG,mFAAmF,CAAC;IAmC5F,CAAC;IAjCS,MAAM;;YACR,OAAO,IAAI,KAAM,SAAQ,8BAAmC;gBACzC,uBAAuB,CAAC,IAA2B,EAAE,CAAmB;;;;;wBACnF,IAAI,EAAE,GAAG,MAAM,OAAM,uBAAuB,YAAC,IAAI,EAAE,CAAC,CAA0B,CAAC;wBAC/E,IAAI,CAAC,EAAE;4BAAE,OAAO,EAAE,CAAC;wBAEnB,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;wBACjC,IAAI,CAAC,IAAA,mBAAY,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,UAAU,KAAK,eAAe;4BAAE,OAAO,EAAE,CAAC;wBAElF,IAAI,CAAC,EAAE,CAAC,WAAW;4BAAE,OAAO,EAAE,CAAC;wBAE/B,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;4BAC7C,MAAM,WAAW,GAAG,EAAE,CAAC,WAA4B,CAAC;4BACpD,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU;gCAAE,OAAO,EAAE,CAAC;4BAC7D,IAAK,WAAW,CAAC,MAAuB,CAAC,UAAU,KAAK,mBAAmB;gCAAE,OAAO,EAAE,CAAC;4BACvF,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ;gCAAE,OAAO,EAAE,CAAC;4BAEhE,OAAO,IAAA,iBAAM,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE;gCACtB,MAAM,EAAE,GAAI,KAAa,CAAC,WAAW,CAAC;gCACtC,EAAE,CAAC,IAAI,mCACA,WAAW,CAAC,IAAI,KACnB,OAAO,kCACA,WAAW,CAAC,IAAI,CAAC,OAAO,KAC3B,UAAU,EAAE,WAAW,MAE9B,CAAC;4BACN,CAAC,CAA0B,CAAC;wBAChC,CAAC;wBAED,OAAO,EAAE,CAAC;oBACd,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AAvCD,wEAuCC"}
@@ -0,0 +1,28 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ /**
3
+ * Updates the templateUrl property in Angular @Component decorators.
4
+ *
5
+ * This recipe is useful for:
6
+ * - Refactoring template file paths after directory restructuring
7
+ * - Standardizing template path conventions
8
+ * - Mass updating template references across components
9
+ *
10
+ * Example transformations:
11
+ * - `templateUrl: './old-path.html'` → `templateUrl: './new-path.html'`
12
+ * - `templateUrl: './component.html'` → `templateUrl: './templates/component.html'`
13
+ */
14
+ export declare class UpdateComponentTemplateUrl extends Recipe {
15
+ readonly name = "org.openrewrite.angular.migration.update-component-template-url";
16
+ readonly displayName: string;
17
+ readonly description: string;
18
+ oldTemplateUrl: string;
19
+ newTemplateUrl: string;
20
+ useRegex?: boolean;
21
+ constructor(options?: {
22
+ oldTemplateUrl?: string;
23
+ newTemplateUrl?: string;
24
+ useRegex?: boolean;
25
+ });
26
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
27
+ }
28
+ //# sourceMappingURL=update-component-template-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-component-template-url.d.ts","sourceRoot":"","sources":["../../src/migration/update-component-template-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAU,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAKnF;;;;;;;;;;;GAWG;AACH,qBAAa,0BAA2B,SAAQ,MAAM;IAClD,QAAQ,CAAC,IAAI,qEAAqE;IAClF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAoC;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAgK;IAO5L,cAAc,EAAG,MAAM,CAAC;IAOxB,cAAc,EAAG,MAAM,CAAC;IAQxB,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAEP,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE;IAOxF,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAsI9D"}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.UpdateComponentTemplateUrl = void 0;
19
+ const rewrite_1 = require("@openrewrite/rewrite");
20
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
21
+ const java_1 = require("@openrewrite/rewrite/java");
22
+ const mutative_1 = require("mutative");
23
+ /**
24
+ * Updates the templateUrl property in Angular @Component decorators.
25
+ *
26
+ * This recipe is useful for:
27
+ * - Refactoring template file paths after directory restructuring
28
+ * - Standardizing template path conventions
29
+ * - Mass updating template references across components
30
+ *
31
+ * Example transformations:
32
+ * - `templateUrl: './old-path.html'` → `templateUrl: './new-path.html'`
33
+ * - `templateUrl: './component.html'` → `templateUrl: './templates/component.html'`
34
+ */
35
+ class UpdateComponentTemplateUrl extends rewrite_1.Recipe {
36
+ constructor(options) {
37
+ var _a, _b, _c;
38
+ super(options);
39
+ this.name = "org.openrewrite.angular.migration.update-component-template-url";
40
+ this.displayName = "Update component `templateUrl`";
41
+ this.description = "Updates the `templateUrl` property value in Angular `@Component` decorators. Useful for refactoring template file paths or standardizing path conventions.";
42
+ (_a = this.oldTemplateUrl) !== null && _a !== void 0 ? _a : (this.oldTemplateUrl = '');
43
+ (_b = this.newTemplateUrl) !== null && _b !== void 0 ? _b : (this.newTemplateUrl = '');
44
+ (_c = this.useRegex) !== null && _c !== void 0 ? _c : (this.useRegex = false);
45
+ }
46
+ editor() {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const oldTemplateUrl = this.oldTemplateUrl;
49
+ const newTemplateUrl = this.newTemplateUrl;
50
+ const useRegex = this.useRegex;
51
+ return new class extends javascript_1.JavaScriptVisitor {
52
+ visitAnnotation(annotation, p) {
53
+ const _super = Object.create(null, {
54
+ visitAnnotation: { get: () => super.visitAnnotation }
55
+ });
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ let a = yield _super.visitAnnotation.call(this, annotation, p);
58
+ if (!a) {
59
+ return a;
60
+ }
61
+ // Check if this is a @Component decorator
62
+ const annotType = a.annotationType;
63
+ let isComponentDecorator = false;
64
+ if ((0, java_1.isIdentifier)(annotType)) {
65
+ isComponentDecorator = annotType.simpleName === 'Component';
66
+ }
67
+ if (!isComponentDecorator) {
68
+ return a;
69
+ }
70
+ // Find the templateUrl property in the decorator arguments
71
+ if (!a.arguments || !a.arguments.elements || a.arguments.elements.length === 0) {
72
+ return a;
73
+ }
74
+ const firstArg = a.arguments.elements[0].element;
75
+ if (firstArg.kind !== java_1.J.Kind.NewClass) {
76
+ return a;
77
+ }
78
+ const newClass = firstArg;
79
+ if (!newClass.body) {
80
+ return a;
81
+ }
82
+ // Look for templateUrl property and check if it needs updating
83
+ let needsChange = false;
84
+ let updatedTemplateUrl = null;
85
+ for (const stmtPadded of newClass.body.statements) {
86
+ const stmt = stmtPadded.element;
87
+ if (stmt.kind === javascript_1.JS.Kind.PropertyAssignment) {
88
+ const propAssignment = stmt;
89
+ const nameExpr = propAssignment.name.element;
90
+ if ((0, java_1.isIdentifier)(nameExpr) && nameExpr.simpleName === 'templateUrl') {
91
+ const initializer = propAssignment.initializer;
92
+ if (initializer && (0, java_1.isLiteral)(initializer) && typeof initializer.value === 'string') {
93
+ const currentUrl = initializer.value;
94
+ if (useRegex) {
95
+ // Use regex pattern matching
96
+ const pattern = new RegExp(oldTemplateUrl);
97
+ if (pattern.test(currentUrl)) {
98
+ updatedTemplateUrl = currentUrl.replace(pattern, newTemplateUrl);
99
+ if (updatedTemplateUrl !== currentUrl) {
100
+ needsChange = true;
101
+ }
102
+ }
103
+ }
104
+ else {
105
+ // Use exact string matching
106
+ if (currentUrl === oldTemplateUrl) {
107
+ updatedTemplateUrl = newTemplateUrl;
108
+ needsChange = true;
109
+ }
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
115
+ if (!needsChange || !updatedTemplateUrl) {
116
+ return a;
117
+ }
118
+ // Apply the transformation
119
+ const finalUpdatedUrl = updatedTemplateUrl;
120
+ const modifiedAnnotation = (0, mutative_1.create)(a, draft => {
121
+ if (!draft.arguments || !draft.arguments.elements[0]) {
122
+ return;
123
+ }
124
+ const firstArgDraft = draft.arguments.elements[0].element;
125
+ if (!firstArgDraft.body) {
126
+ return;
127
+ }
128
+ // Find and update the templateUrl property
129
+ for (let i = 0; i < firstArgDraft.body.statements.length; i++) {
130
+ const stmt = firstArgDraft.body.statements[i].element;
131
+ if (stmt.kind === javascript_1.JS.Kind.PropertyAssignment) {
132
+ const propAssignment = stmt;
133
+ const nameExpr = propAssignment.name.element;
134
+ if ((0, java_1.isIdentifier)(nameExpr) && nameExpr.simpleName === 'templateUrl') {
135
+ const initializer = propAssignment.initializer;
136
+ if (initializer && (0, java_1.isLiteral)(initializer)) {
137
+ // Create a new literal with the updated URL
138
+ const newLiteral = Object.assign(Object.assign({}, initializer), { value: finalUpdatedUrl, valueSource: `'${finalUpdatedUrl.replace(/'/g, "\\'")}'` });
139
+ // Create new property assignment with updated literal
140
+ const newPropAssignment = Object.assign(Object.assign({}, propAssignment), { initializer: newLiteral });
141
+ // Update the statement
142
+ firstArgDraft.body.statements[i] = Object.assign(Object.assign({}, firstArgDraft.body.statements[i]), { element: newPropAssignment });
143
+ }
144
+ }
145
+ }
146
+ }
147
+ });
148
+ return modifiedAnnotation;
149
+ });
150
+ }
151
+ }();
152
+ });
153
+ }
154
+ }
155
+ exports.UpdateComponentTemplateUrl = UpdateComponentTemplateUrl;
156
+ __decorate([
157
+ (0, rewrite_1.Option)({
158
+ displayName: "Old template URL",
159
+ description: "The template URL to replace. Can be an exact path (e.g., `./old.html`) or a pattern.",
160
+ example: "./old-template.html"
161
+ })
162
+ ], UpdateComponentTemplateUrl.prototype, "oldTemplateUrl", void 0);
163
+ __decorate([
164
+ (0, rewrite_1.Option)({
165
+ displayName: "New template URL",
166
+ description: "The new template URL to use.",
167
+ example: "./new-template.html"
168
+ })
169
+ ], UpdateComponentTemplateUrl.prototype, "newTemplateUrl", void 0);
170
+ __decorate([
171
+ (0, rewrite_1.Option)({
172
+ displayName: "Use regex pattern",
173
+ description: "If `true`, treats `oldTemplateUrl` as a regex pattern and supports capture groups in `newTemplateUrl`. Default: `false`",
174
+ example: "true",
175
+ required: false
176
+ })
177
+ ], UpdateComponentTemplateUrl.prototype, "useRegex", void 0);
178
+ //# sourceMappingURL=update-component-template-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-component-template-url.js","sourceRoot":"","sources":["../../src/migration/update-component-template-url.ts"],"names":[],"mappings":"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"}