@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,256 @@
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.MigrateQueryToSignal = 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
+ const ANGULAR_DECORATORS = ['Component', 'Directive', 'Pipe', 'Injectable'];
23
+ const QUERY_DECORATOR_MAP = {
24
+ 'ViewChild': 'viewChild',
25
+ 'ViewChildren': 'viewChildren',
26
+ 'ContentChild': 'contentChild',
27
+ 'ContentChildren': 'contentChildren',
28
+ };
29
+ class MigrateQueryToSignal extends rewrite_1.Recipe {
30
+ constructor() {
31
+ super(...arguments);
32
+ this.name = "org.openrewrite.angular.migration.migrate-query-to-signal";
33
+ this.displayName = "Migrate query decorators to signal-based functions";
34
+ this.description = "Converts `@ViewChild()`, `@ViewChildren()`, `@ContentChild()`, and `@ContentChildren()` " +
35
+ "decorated properties to signal-based query functions. For example, " +
36
+ "`@ViewChild('ref') el: ElementRef` becomes `el = viewChild<ElementRef>('ref')`.";
37
+ }
38
+ editor() {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ return new class extends javascript_1.JavaScriptVisitor {
41
+ visitClassDeclaration(classDecl, p) {
42
+ const _super = Object.create(null, {
43
+ visitClassDeclaration: { get: () => super.visitClassDeclaration }
44
+ });
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ let c = yield _super.visitClassDeclaration.call(this, classDecl, p);
47
+ if (!c)
48
+ return c;
49
+ if (!c.leadingAnnotations.some(a => (0, java_1.isIdentifier)(a.annotationType)
50
+ && ANGULAR_DECORATORS.includes(a.annotationType.simpleName))) {
51
+ return c;
52
+ }
53
+ let changed = false;
54
+ const usedFunctions = new Set();
55
+ const removedDecorators = new Set();
56
+ const newStatements = c.body.statements.map(stmt => {
57
+ var _a, _b;
58
+ const el = stmt.element;
59
+ if (el.kind !== java_1.J.Kind.VariableDeclarations)
60
+ return stmt;
61
+ const varDecl = el;
62
+ let queryIdx = -1;
63
+ let queryName = '';
64
+ for (let i = 0; i < varDecl.leadingAnnotations.length; i++) {
65
+ const a = varDecl.leadingAnnotations[i];
66
+ if ((0, java_1.isIdentifier)(a.annotationType)) {
67
+ const name = a.annotationType.simpleName;
68
+ if (QUERY_DECORATOR_MAP[name]) {
69
+ queryIdx = i;
70
+ queryName = name;
71
+ break;
72
+ }
73
+ }
74
+ }
75
+ if (queryIdx === -1)
76
+ return stmt;
77
+ const annotation = varDecl.leadingAnnotations[queryIdx];
78
+ if (!((_b = (_a = annotation.arguments) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.length))
79
+ return stmt;
80
+ const funcName = QUERY_DECORATOR_MAP[queryName];
81
+ const transformed = buildQueryField(varDecl, queryIdx, funcName, annotation);
82
+ changed = true;
83
+ usedFunctions.add(funcName);
84
+ removedDecorators.add(queryName);
85
+ return Object.assign(Object.assign({}, stmt), { element: transformed, markers: (0, rewrite_1.markers)({ kind: 'org.openrewrite.java.marker.Semicolon', id: (0, rewrite_1.randomId)() }) });
86
+ });
87
+ if (!changed)
88
+ return c;
89
+ for (const func of usedFunctions) {
90
+ (0, javascript_1.maybeAddImport)(this, { module: '@angular/core', member: func });
91
+ }
92
+ for (const dec of removedDecorators) {
93
+ (0, javascript_1.maybeRemoveImport)(this, '@angular/core', dec);
94
+ }
95
+ (0, javascript_1.maybeRemoveImport)(this, '@angular/core', 'QueryList');
96
+ return (0, mutative_1.create)(c, (draft) => {
97
+ draft.body.statements = newStatements;
98
+ });
99
+ });
100
+ }
101
+ };
102
+ });
103
+ }
104
+ }
105
+ exports.MigrateQueryToSignal = MigrateQueryToSignal;
106
+ function unwrapTypeIdentifier(typeExpr) {
107
+ if (typeExpr === null || typeExpr === void 0 ? void 0 : typeExpr.typeIdentifier)
108
+ return unwrapTypeIdentifier(typeExpr.typeIdentifier);
109
+ return typeExpr;
110
+ }
111
+ function unwrapQueryListType(typeExpr) {
112
+ var _a, _b;
113
+ const unwrapped = unwrapTypeIdentifier(typeExpr);
114
+ if ((unwrapped === null || unwrapped === void 0 ? void 0 : unwrapped.kind) === java_1.J.Kind.ParameterizedType) {
115
+ const pt = unwrapped;
116
+ if ((0, java_1.isIdentifier)(pt.class) && pt.class.simpleName === 'QueryList') {
117
+ if ((_b = (_a = pt.typeParameters) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.length) {
118
+ return pt.typeParameters.elements[0].element;
119
+ }
120
+ }
121
+ }
122
+ return unwrapped;
123
+ }
124
+ function parseQueryAnnotation(annotation) {
125
+ const args = annotation.arguments.elements;
126
+ const selector = args[0].element;
127
+ const selectorIsString = (0, java_1.isLiteral)(selector) && typeof selector.value === 'string';
128
+ let options;
129
+ if (args.length > 1) {
130
+ const secondArg = args[1].element;
131
+ if (secondArg.kind === java_1.J.Kind.NewClass) {
132
+ const obj = secondArg;
133
+ if (obj.body) {
134
+ const filteredProps = obj.body.statements.filter((stmt) => {
135
+ const el = stmt.element;
136
+ if (el.kind === javascript_1.JS.Kind.PropertyAssignment) {
137
+ const prop = el;
138
+ const nameExpr = prop.name.element;
139
+ if ((0, java_1.isIdentifier)(nameExpr) && nameExpr.simpleName === 'static') {
140
+ return false;
141
+ }
142
+ }
143
+ return true;
144
+ });
145
+ if (filteredProps.length > 0) {
146
+ options = filteredProps;
147
+ }
148
+ }
149
+ }
150
+ }
151
+ return { selector, selectorIsString, options };
152
+ }
153
+ function buildQueryField(varDecl, annotationIdx, funcName, annotation) {
154
+ var _a;
155
+ const namedVar = varDecl.variables[0].element;
156
+ const config = parseQueryAnnotation(annotation);
157
+ // Determine type parameter
158
+ const propertyType = varDecl.typeExpression ? unwrapQueryListType(varDecl.typeExpression) : null;
159
+ const needsTypeParam = config.selectorIsString && propertyType && !((_a = config.options) === null || _a === void 0 ? void 0 : _a.some((stmt) => {
160
+ const el = stmt.element;
161
+ return el.kind === javascript_1.JS.Kind.PropertyAssignment
162
+ && (0, java_1.isIdentifier)(el.name.element)
163
+ && el.name.element.simpleName === 'read';
164
+ }));
165
+ let typeParameters = undefined;
166
+ if (needsTypeParam && propertyType) {
167
+ typeParameters = {
168
+ kind: 'org.openrewrite.java.tree.JContainer',
169
+ before: java_1.emptySpace,
170
+ markers: rewrite_1.emptyMarkers,
171
+ elements: [{
172
+ kind: java_1.J.Kind.RightPadded,
173
+ element: Object.assign(Object.assign({}, propertyType), { id: (0, rewrite_1.randomId)(), prefix: java_1.emptySpace }),
174
+ after: java_1.emptySpace,
175
+ markers: rewrite_1.emptyMarkers,
176
+ }],
177
+ };
178
+ }
179
+ // Build arguments
180
+ const args = [];
181
+ // First arg: selector
182
+ args.push({
183
+ kind: java_1.J.Kind.RightPadded,
184
+ element: Object.assign(Object.assign({}, config.selector), { id: (0, rewrite_1.randomId)(), prefix: java_1.emptySpace }),
185
+ after: java_1.emptySpace,
186
+ markers: rewrite_1.emptyMarkers,
187
+ });
188
+ // Second arg: options object (if any remain after filtering)
189
+ if (config.options) {
190
+ args.push({
191
+ kind: java_1.J.Kind.RightPadded,
192
+ element: buildOptionsObject(config.options),
193
+ after: java_1.emptySpace,
194
+ markers: rewrite_1.emptyMarkers,
195
+ });
196
+ }
197
+ const queryCall = {
198
+ kind: java_1.J.Kind.MethodInvocation,
199
+ id: (0, rewrite_1.randomId)(),
200
+ prefix: java_1.singleSpace,
201
+ markers: rewrite_1.emptyMarkers,
202
+ select: undefined,
203
+ typeParameters,
204
+ name: {
205
+ kind: java_1.J.Kind.Identifier,
206
+ id: (0, rewrite_1.randomId)(),
207
+ prefix: java_1.emptySpace,
208
+ markers: rewrite_1.emptyMarkers,
209
+ simpleName: funcName,
210
+ annotations: [],
211
+ type: undefined,
212
+ },
213
+ arguments: {
214
+ kind: 'org.openrewrite.java.tree.JContainer',
215
+ before: java_1.emptySpace,
216
+ markers: rewrite_1.emptyMarkers,
217
+ elements: args,
218
+ },
219
+ methodType: undefined,
220
+ };
221
+ const newAnnotations = [...varDecl.leadingAnnotations];
222
+ newAnnotations.splice(annotationIdx, 1);
223
+ return Object.assign(Object.assign({}, varDecl), { id: (0, rewrite_1.randomId)(), leadingAnnotations: newAnnotations, typeExpression: undefined, variables: [Object.assign(Object.assign({}, varDecl.variables[0]), { element: Object.assign(Object.assign({}, namedVar), { prefix: java_1.emptySpace, dimensionsAfterName: [], initializer: {
224
+ before: java_1.singleSpace,
225
+ element: queryCall,
226
+ markers: rewrite_1.emptyMarkers,
227
+ } }) })] });
228
+ }
229
+ function buildOptionsObject(statements) {
230
+ return {
231
+ kind: java_1.J.Kind.NewClass,
232
+ id: (0, rewrite_1.randomId)(),
233
+ prefix: java_1.singleSpace,
234
+ markers: rewrite_1.emptyMarkers,
235
+ enclosing: undefined,
236
+ new: java_1.emptySpace,
237
+ clazz: undefined,
238
+ arguments: {
239
+ kind: 'org.openrewrite.java.tree.JContainer',
240
+ before: java_1.emptySpace,
241
+ markers: rewrite_1.emptyMarkers,
242
+ elements: [],
243
+ },
244
+ body: {
245
+ kind: java_1.J.Kind.Block,
246
+ id: (0, rewrite_1.randomId)(),
247
+ prefix: java_1.emptySpace,
248
+ markers: rewrite_1.emptyMarkers,
249
+ static: { kind: java_1.J.Kind.RightPadded, element: false, after: java_1.emptySpace, markers: rewrite_1.emptyMarkers },
250
+ statements,
251
+ end: java_1.singleSpace,
252
+ },
253
+ constructorType: undefined,
254
+ };
255
+ }
256
+ //# sourceMappingURL=migrate-query-to-signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-query-to-signal.js","sourceRoot":"","sources":["../../src/migration/migrate-query-to-signal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { ExecutionContext, ScanningRecipe, SourceFile, TreeVisitor } from "@openrewrite/rewrite";
2
+ interface Accumulator {
3
+ originalTsconfigContent: string | null;
4
+ baseAlreadyExists: boolean;
5
+ extendingPaths: string[];
6
+ }
7
+ export declare class MigrateToSolutionStyleTsconfig extends ScanningRecipe<Accumulator> {
8
+ readonly name = "org.openrewrite.angular.migration.migrate-to-solution-style-tsconfig";
9
+ readonly displayName: string;
10
+ readonly description: string;
11
+ initialValue(_ctx: ExecutionContext): Accumulator;
12
+ scanner(acc: Accumulator): Promise<TreeVisitor<any, ExecutionContext>>;
13
+ editorWithData(acc: Accumulator): Promise<TreeVisitor<any, ExecutionContext>>;
14
+ generate(acc: Accumulator, _ctx: ExecutionContext): Promise<SourceFile[]>;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=migrate-to-solution-style-tsconfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-to-solution-style-tsconfig.d.ts","sourceRoot":"","sources":["../../src/migration/migrate-to-solution-style-tsconfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAsB,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAGnH,UAAU,WAAW;IACjB,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,qBAAa,8BAA+B,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC3E,QAAQ,CAAC,IAAI,0EAA0E;IACvF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAwC;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAIwB;IAEpD,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW;IAQ3C,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAsCtE,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAkD7E,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAkBlF"}
@@ -0,0 +1,153 @@
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.MigrateToSolutionStyleTsconfig = void 0;
18
+ const rewrite_1 = require("@openrewrite/rewrite");
19
+ const json_1 = require("@openrewrite/rewrite/json");
20
+ class MigrateToSolutionStyleTsconfig extends rewrite_1.ScanningRecipe {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.name = "org.openrewrite.angular.migration.migrate-to-solution-style-tsconfig";
24
+ this.displayName = "Migrate to solution-style tsconfig";
25
+ this.description = "Migrates a project to use a solution-style `tsconfig.json`. " +
26
+ "The original `tsconfig.json` content is moved to `tsconfig.base.json` (with project-specific " +
27
+ "fields removed), and `tsconfig.json` is replaced with a solution-style config that references " +
28
+ "the project's TypeScript configurations. Other tsconfig files that extend `./tsconfig.json` " +
29
+ "are updated to extend `./tsconfig.base.json`.";
30
+ }
31
+ initialValue(_ctx) {
32
+ return {
33
+ originalTsconfigContent: null,
34
+ baseAlreadyExists: false,
35
+ extendingPaths: [],
36
+ };
37
+ }
38
+ scanner(acc) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ return new class extends rewrite_1.TreeVisitor {
41
+ accept(tree, _ctx) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ if (!(0, json_1.isJson)(tree))
44
+ return tree;
45
+ const doc = tree;
46
+ if (doc.sourcePath === 'tsconfig.base.json') {
47
+ acc.baseAlreadyExists = true;
48
+ return doc;
49
+ }
50
+ if (doc.sourcePath === 'tsconfig.json') {
51
+ const content = yield rewrite_1.TreePrinters.print(doc);
52
+ try {
53
+ const parsed = JSON.parse(content);
54
+ if (Array.isArray(parsed.files) && parsed.files.length === 0 && parsed.references) {
55
+ return doc;
56
+ }
57
+ acc.originalTsconfigContent = content;
58
+ }
59
+ catch (_a) { }
60
+ return doc;
61
+ }
62
+ if (/^tsconfig\.\w+\.json$/.test(doc.sourcePath)) {
63
+ const content = yield rewrite_1.TreePrinters.print(doc);
64
+ try {
65
+ const parsed = JSON.parse(content);
66
+ if (parsed.extends === './tsconfig.json') {
67
+ acc.extendingPaths.push(doc.sourcePath);
68
+ }
69
+ }
70
+ catch (_b) { }
71
+ }
72
+ return doc;
73
+ });
74
+ }
75
+ };
76
+ });
77
+ }
78
+ editorWithData(acc) {
79
+ const _super = Object.create(null, {
80
+ editorWithData: { get: () => super.editorWithData }
81
+ });
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ if (!acc.originalTsconfigContent || acc.baseAlreadyExists) {
84
+ return _super.editorWithData.call(this, acc);
85
+ }
86
+ return new class extends json_1.JsonVisitor {
87
+ constructor() {
88
+ super(...arguments);
89
+ this.isExtendingFile = false;
90
+ }
91
+ visitDocument(doc, ctx) {
92
+ const _super = Object.create(null, {
93
+ visitDocument: { get: () => super.visitDocument }
94
+ });
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ if (doc.sourcePath === 'tsconfig.json') {
97
+ const solutionConfig = { files: [] };
98
+ if (acc.extendingPaths.length > 0) {
99
+ solutionConfig.references = acc.extendingPaths.map(p => ({ path: `./${p}` }));
100
+ }
101
+ const text = JSON.stringify(solutionConfig, null, 2) + '\n';
102
+ const parsed = yield new json_1.JsonParser({}).parseOne({
103
+ text,
104
+ sourcePath: doc.sourcePath
105
+ });
106
+ return Object.assign(Object.assign({}, doc), { value: parsed.value, eof: parsed.eof });
107
+ }
108
+ this.isExtendingFile = acc.extendingPaths.includes(doc.sourcePath);
109
+ return _super.visitDocument.call(this, doc, ctx);
110
+ });
111
+ }
112
+ visitMember(member, p) {
113
+ const _super = Object.create(null, {
114
+ visitMember: { get: () => super.visitMember }
115
+ });
116
+ return __awaiter(this, void 0, void 0, function* () {
117
+ const m = yield _super.visitMember.call(this, member, p);
118
+ if (!this.isExtendingFile)
119
+ return m;
120
+ if ((0, json_1.getMemberKeyName)(m) !== 'extends')
121
+ return m;
122
+ if (!(0, json_1.isLiteral)(m.value))
123
+ return m;
124
+ const literal = m.value;
125
+ if (literal.value !== './tsconfig.json')
126
+ return m;
127
+ return Object.assign(Object.assign({}, m), { value: Object.assign(Object.assign({}, literal), { value: './tsconfig.base.json', source: literal.source.replace('./tsconfig.json', './tsconfig.base.json') }) });
128
+ });
129
+ }
130
+ };
131
+ });
132
+ }
133
+ generate(acc, _ctx) {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ if (!acc.originalTsconfigContent || acc.baseAlreadyExists) {
136
+ return [];
137
+ }
138
+ const parsed = JSON.parse(acc.originalTsconfigContent);
139
+ delete parsed.files;
140
+ delete parsed.include;
141
+ delete parsed.exclude;
142
+ delete parsed.references;
143
+ const text = JSON.stringify(parsed, null, 2) + '\n';
144
+ const doc = yield new json_1.JsonParser({}).parseOne({
145
+ text,
146
+ sourcePath: 'tsconfig.base.json'
147
+ });
148
+ return [doc];
149
+ });
150
+ }
151
+ }
152
+ exports.MigrateToSolutionStyleTsconfig = MigrateToSolutionStyleTsconfig;
153
+ //# sourceMappingURL=migrate-to-solution-style-tsconfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-to-solution-style-tsconfig.js","sourceRoot":"","sources":["../../src/migration/migrate-to-solution-style-tsconfig.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAAmH;AACnH,oDAA6G;AAQ7G,MAAa,8BAA+B,SAAQ,wBAA2B;IAA/E;;QACa,SAAI,GAAG,sEAAsE,CAAC;QAC9E,gBAAW,GAAW,oCAAoC,CAAC;QAC3D,gBAAW,GAAW,8DAA8D;YACzF,+FAA+F;YAC/F,gGAAgG;YAChG,8FAA8F;YAC9F,+CAA+C,CAAC;IAoHxD,CAAC;IAlHG,YAAY,CAAC,IAAsB;QAC/B,OAAO;YACH,uBAAuB,EAAE,IAAI;YAC7B,iBAAiB,EAAE,KAAK;YACxB,cAAc,EAAE,EAAE;SACrB,CAAC;IACN,CAAC;IAEK,OAAO,CAAC,GAAgB;;YAC1B,OAAO,IAAI,KAAM,SAAQ,qBAAmC;gBACxC,MAAM,CAAC,IAAU,EAAE,IAAsB;;wBACrD,IAAI,CAAC,IAAA,aAAM,EAAC,IAAI,CAAC;4BAAE,OAAO,IAAI,CAAC;wBAC/B,MAAM,GAAG,GAAG,IAAqB,CAAC;wBAElC,IAAI,GAAG,CAAC,UAAU,KAAK,oBAAoB,EAAE,CAAC;4BAC1C,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC;4BAC7B,OAAO,GAAG,CAAC;wBACf,CAAC;wBAED,IAAI,GAAG,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;4BACrC,MAAM,OAAO,GAAG,MAAM,sBAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BAC9C,IAAI,CAAC;gCACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gCACnC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oCAChF,OAAO,GAAG,CAAC;gCACf,CAAC;gCACD,GAAG,CAAC,uBAAuB,GAAG,OAAO,CAAC;4BAC1C,CAAC;4BAAC,WAAM,CAAC,CAAA,CAAC;4BACV,OAAO,GAAG,CAAC;wBACf,CAAC;wBAED,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC/C,MAAM,OAAO,GAAG,MAAM,sBAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BAC9C,IAAI,CAAC;gCACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gCACnC,IAAI,MAAM,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;oCACvC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gCAC5C,CAAC;4BACL,CAAC;4BAAC,WAAM,CAAC,CAAA,CAAC;wBACd,CAAC;wBAED,OAAO,GAAG,CAAC;oBACf,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;IAEK,cAAc,CAAC,GAAgB;;;;;YACjC,IAAI,CAAC,GAAG,CAAC,uBAAuB,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;gBACxD,OAAO,OAAM,cAAc,YAAC,GAAG,EAAE;YACrC,CAAC;YAED,OAAO,IAAI,KAAM,SAAQ,kBAA6B;gBAA3C;;oBACC,oBAAe,GAAG,KAAK,CAAC;gBAyCpC,CAAC;gBAvCmB,aAAa,CAAC,GAAkB,EAAE,GAAqB;;;;;wBACnE,IAAI,GAAG,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;4BACrC,MAAM,cAAc,GAAwB,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC;4BACxD,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAChC,cAAc,CAAC,UAAU,GAAG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;4BAChF,CAAC;4BACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;4BAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,iBAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;gCAC7C,IAAI;gCACJ,UAAU,EAAE,GAAG,CAAC,UAAU;6BAC7B,CAAkB,CAAC;4BACpB,OAAO,gCACA,GAAG,KACN,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,GAAG,EAAE,MAAM,CAAC,GAAG,GACD,CAAC;wBACvB,CAAC;wBAED,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBACnE,OAAO,OAAM,aAAa,YAAC,GAAG,EAAE,GAAG,EAAE;oBACzC,CAAC;iBAAA;gBAEe,WAAW,CAAC,MAAmB,EAAE,CAAmB;;;;;wBAChE,MAAM,CAAC,GAAG,MAAM,OAAM,WAAW,YAAC,MAAM,EAAE,CAAC,CAAgB,CAAC;wBAC5D,IAAI,CAAC,IAAI,CAAC,eAAe;4BAAE,OAAO,CAAC,CAAC;wBACpC,IAAI,IAAA,uBAAgB,EAAC,CAAC,CAAC,KAAK,SAAS;4BAAE,OAAO,CAAC,CAAC;wBAChD,IAAI,CAAC,IAAA,gBAAS,EAAC,CAAC,CAAC,KAAK,CAAC;4BAAE,OAAO,CAAC,CAAC;wBAClC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAqB,CAAC;wBACxC,IAAI,OAAO,CAAC,KAAK,KAAK,iBAAiB;4BAAE,OAAO,CAAC,CAAC;wBAElD,OAAO,gCACA,CAAC,KACJ,KAAK,EAAE,gCACA,OAAO,KACV,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,GAC5D,GACL,CAAC;oBACrB,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;IAEK,QAAQ,CAAC,GAAgB,EAAE,IAAsB;;YACnD,IAAI,CAAC,GAAG,CAAC,uBAAuB,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;gBACxD,OAAO,EAAE,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC,KAAK,CAAC;YACpB,OAAO,MAAM,CAAC,OAAO,CAAC;YACtB,OAAO,MAAM,CAAC,OAAO,CAAC;YACtB,OAAO,MAAM,CAAC,UAAU,CAAC;YAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YACpD,MAAM,GAAG,GAAG,MAAM,IAAI,iBAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;gBAC1C,IAAI;gBACJ,UAAU,EAAE,oBAAoB;aACnC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;KAAA;CACJ;AA3HD,wEA2HC"}
@@ -0,0 +1,16 @@
1
+ import { Recipe } from "@openrewrite/rewrite";
2
+ export declare class MoveDocumentImport extends Recipe {
3
+ readonly name = "org.openrewrite.angular.migration.move-document-import";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ private readonly targetModule;
7
+ constructor(options?: {
8
+ targetModule?: string;
9
+ });
10
+ recipeList(): Promise<Recipe[]>;
11
+ }
12
+ /**
13
+ * @deprecated Use {@link MoveDocumentImport} instead.
14
+ */
15
+ export declare const MoveDocumentToCore: typeof MoveDocumentImport;
16
+ //# sourceMappingURL=move-document-to-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move-document-to-core.d.ts","sourceRoot":"","sources":["../../src/migration/move-document-to-core.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAK5C,qBAAa,kBAAmB,SAAQ,MAAM;IAC1C,QAAQ,CAAC,IAAI,4DAA4D;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAOzC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAUxC;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,2BAAqB,CAAC"}
@@ -0,0 +1,48 @@
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.MoveDocumentToCore = exports.MoveDocumentImport = void 0;
18
+ const rewrite_1 = require("@openrewrite/rewrite");
19
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
20
+ const MODULE_HIERARCHY = ['@angular/platform-browser', '@angular/common', '@angular/core'];
21
+ class MoveDocumentImport extends rewrite_1.Recipe {
22
+ constructor(options) {
23
+ var _a;
24
+ super();
25
+ this.name = "org.openrewrite.angular.migration.move-document-import";
26
+ this.targetModule = (_a = options === null || options === void 0 ? void 0 : options.targetModule) !== null && _a !== void 0 ? _a : '@angular/core';
27
+ this.displayName = `Move \`DOCUMENT\` import to \`${this.targetModule}\``;
28
+ this.description = `Moves the \`DOCUMENT\` import from older Angular modules to \`${this.targetModule}\`.`;
29
+ }
30
+ recipeList() {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ const targetIndex = MODULE_HIERARCHY.indexOf(this.targetModule);
33
+ return MODULE_HIERARCHY
34
+ .filter((_, i) => i < targetIndex)
35
+ .map(oldModule => new javascript_1.ChangeImport({
36
+ oldModule,
37
+ oldMember: 'DOCUMENT',
38
+ newModule: this.targetModule,
39
+ }));
40
+ });
41
+ }
42
+ }
43
+ exports.MoveDocumentImport = MoveDocumentImport;
44
+ /**
45
+ * @deprecated Use {@link MoveDocumentImport} instead.
46
+ */
47
+ exports.MoveDocumentToCore = MoveDocumentImport;
48
+ //# sourceMappingURL=move-document-to-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move-document-to-core.js","sourceRoot":"","sources":["../../src/migration/move-document-to-core.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA4C;AAC5C,gEAA6D;AAE7D,MAAM,gBAAgB,GAAG,CAAC,2BAA2B,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;AAE3F,MAAa,kBAAmB,SAAQ,gBAAM;IAM1C,YAAY,OAAmC;;QAC3C,KAAK,EAAE,CAAC;QANH,SAAI,GAAG,wDAAwD,CAAC;QAOrE,IAAI,CAAC,YAAY,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,mCAAI,eAAe,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,iCAAiC,IAAI,CAAC,YAAY,IAAI,CAAC;QAC1E,IAAI,CAAC,WAAW,GAAG,iEAAiE,IAAI,CAAC,YAAY,KAAK,CAAC;IAC/G,CAAC;IAEK,UAAU;;YACZ,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChE,OAAO,gBAAgB;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC;iBACjC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,yBAAY,CAAC;gBAC/B,SAAS;gBACT,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,IAAI,CAAC,YAAY;aAC/B,CAAC,CAAC,CAAC;QACZ,CAAC;KAAA;CACJ;AAvBD,gDAuBC;AAED;;GAEG;AACU,QAAA,kBAAkB,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class RemoveAotSummaries extends Recipe {
3
+ readonly name = "org.openrewrite.angular.migration.remove-aot-summaries";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
7
+ }
8
+ //# sourceMappingURL=remove-aot-summaries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-aot-summaries.d.ts","sourceRoot":"","sources":["../../src/migration/remove-aot-summaries.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAO3E,qBAAa,kBAAmB,SAAQ,MAAM;IAC1C,QAAQ,CAAC,IAAI,4DAA4D;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAwC;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAE8B;IAEpD,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAmD9D"}
@@ -0,0 +1,90 @@
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.RemoveAotSummaries = 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
+ const TESTBED_METHODS = ['configureTestingModule', 'initTestEnvironment'];
23
+ class RemoveAotSummaries extends rewrite_1.Recipe {
24
+ constructor() {
25
+ super(...arguments);
26
+ this.name = "org.openrewrite.angular.migration.remove-aot-summaries";
27
+ this.displayName = "Remove `aotSummaries` from TestBed";
28
+ this.description = "Removes the `aotSummaries` property from `TestBed.configureTestingModule()` and " +
29
+ "`TestBed.initTestEnvironment()` calls. The `aotSummaries` parameter was removed in Angular 14 " +
30
+ "as it was only needed for the View Engine compiler.";
31
+ }
32
+ editor() {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ return new class extends javascript_1.JavaScriptVisitor {
35
+ visitMethodInvocation(method, p) {
36
+ const _super = Object.create(null, {
37
+ visitMethodInvocation: { get: () => super.visitMethodInvocation }
38
+ });
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ var _a;
41
+ let m = yield _super.visitMethodInvocation.call(this, method, p);
42
+ if (!m)
43
+ return m;
44
+ const testBedArgs = (0, javascript_1.capture)({ variadic: true });
45
+ if (!(yield (0, javascript_1.pattern) `TestBed.configureTestingModule(${testBedArgs})`.match(m, this.cursor))
46
+ && !(yield (0, javascript_1.pattern) `TestBed.initTestEnvironment(${testBedArgs})`.match(m, this.cursor)))
47
+ return m;
48
+ const args = (_a = m.arguments) === null || _a === void 0 ? void 0 : _a.elements;
49
+ if (!args || args.length === 0)
50
+ return m;
51
+ for (let argIdx = 0; argIdx < args.length; argIdx++) {
52
+ const arg = args[argIdx].element;
53
+ if (arg.kind !== java_1.J.Kind.NewClass)
54
+ continue;
55
+ const obj = arg;
56
+ if (!obj.body)
57
+ continue;
58
+ let aotIndex = -1;
59
+ for (let i = 0; i < obj.body.statements.length; i++) {
60
+ const stmt = obj.body.statements[i].element;
61
+ if (stmt.kind === javascript_1.JS.Kind.PropertyAssignment) {
62
+ const prop = stmt;
63
+ const nameExpr = prop.name.element;
64
+ if ((0, java_1.isIdentifier)(nameExpr) && nameExpr.simpleName === 'aotSummaries') {
65
+ aotIndex = i;
66
+ break;
67
+ }
68
+ }
69
+ }
70
+ if (aotIndex === -1)
71
+ continue;
72
+ if (obj.body.statements.length === 1) {
73
+ return (0, mutative_1.create)(m, draft => {
74
+ draft.arguments.elements = draft.arguments.elements.filter((_, i) => i !== argIdx);
75
+ });
76
+ }
77
+ return (0, mutative_1.create)(m, draft => {
78
+ const body = draft.arguments.elements[argIdx].element.body;
79
+ body.statements = body.statements.filter((_, i) => i !== aotIndex);
80
+ });
81
+ }
82
+ return m;
83
+ });
84
+ }
85
+ }();
86
+ });
87
+ }
88
+ }
89
+ exports.RemoveAotSummaries = RemoveAotSummaries;
90
+ //# sourceMappingURL=remove-aot-summaries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-aot-summaries.js","sourceRoot":"","sources":["../../src/migration/remove-aot-summaries.ts"],"names":[],"mappings":"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"}