@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.
- package/dist/index.d.ts +107 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +441 -0
- package/dist/index.js.map +1 -0
- package/dist/migration/add-default-configuration.d.ts +8 -0
- package/dist/migration/add-default-configuration.d.ts.map +1 -0
- package/dist/migration/add-default-configuration.js +124 -0
- package/dist/migration/add-default-configuration.js.map +1 -0
- package/dist/migration/add-localize-polyfill.d.ts +8 -0
- package/dist/migration/add-localize-polyfill.d.ts.map +1 -0
- package/dist/migration/add-localize-polyfill.js +78 -0
- package/dist/migration/add-localize-polyfill.js.map +1 -0
- package/dist/migration/add-module-with-providers-generic.d.ts +8 -0
- package/dist/migration/add-module-with-providers-generic.d.ts.map +1 -0
- package/dist/migration/add-module-with-providers-generic.js +114 -0
- package/dist/migration/add-module-with-providers-generic.js.map +1 -0
- package/dist/migration/add-static-false-to-view-queries.d.ts +8 -0
- package/dist/migration/add-static-false-to-view-queries.d.ts.map +1 -0
- package/dist/migration/add-static-false-to-view-queries.js +100 -0
- package/dist/migration/add-static-false-to-view-queries.js.map +1 -0
- package/dist/migration/add-testbed-teardown.d.ts +8 -0
- package/dist/migration/add-testbed-teardown.d.ts.map +1 -0
- package/dist/migration/add-testbed-teardown.js +62 -0
- package/dist/migration/add-testbed-teardown.js.map +1 -0
- package/dist/migration/enable-aot-build.d.ts +8 -0
- package/dist/migration/enable-aot-build.d.ts.map +1 -0
- package/dist/migration/enable-aot-build.js +123 -0
- package/dist/migration/enable-aot-build.js.map +1 -0
- package/dist/migration/explicit-standalone-flag.d.ts +8 -0
- package/dist/migration/explicit-standalone-flag.d.ts.map +1 -0
- package/dist/migration/explicit-standalone-flag.js +99 -0
- package/dist/migration/explicit-standalone-flag.js.map +1 -0
- package/dist/migration/migrate-constructor-to-inject.d.ts +8 -0
- package/dist/migration/migrate-constructor-to-inject.d.ts.map +1 -0
- package/dist/migration/migrate-constructor-to-inject.js +162 -0
- package/dist/migration/migrate-constructor-to-inject.js.map +1 -0
- package/dist/migration/migrate-input-to-signal.d.ts +8 -0
- package/dist/migration/migrate-input-to-signal.d.ts.map +1 -0
- package/dist/migration/migrate-input-to-signal.js +293 -0
- package/dist/migration/migrate-input-to-signal.js.map +1 -0
- package/dist/migration/migrate-output-to-signal.d.ts +8 -0
- package/dist/migration/migrate-output-to-signal.d.ts.map +1 -0
- package/dist/migration/migrate-output-to-signal.js +259 -0
- package/dist/migration/migrate-output-to-signal.js.map +1 -0
- package/dist/migration/migrate-query-to-signal.d.ts +8 -0
- package/dist/migration/migrate-query-to-signal.d.ts.map +1 -0
- package/dist/migration/migrate-query-to-signal.js +256 -0
- package/dist/migration/migrate-query-to-signal.js.map +1 -0
- package/dist/migration/migrate-to-solution-style-tsconfig.d.ts +17 -0
- package/dist/migration/migrate-to-solution-style-tsconfig.d.ts.map +1 -0
- package/dist/migration/migrate-to-solution-style-tsconfig.js +153 -0
- package/dist/migration/migrate-to-solution-style-tsconfig.js.map +1 -0
- package/dist/migration/move-document-to-core.d.ts +16 -0
- package/dist/migration/move-document-to-core.d.ts.map +1 -0
- package/dist/migration/move-document-to-core.js +48 -0
- package/dist/migration/move-document-to-core.js.map +1 -0
- package/dist/migration/remove-aot-summaries.d.ts +8 -0
- package/dist/migration/remove-aot-summaries.d.ts.map +1 -0
- package/dist/migration/remove-aot-summaries.js +90 -0
- package/dist/migration/remove-aot-summaries.js.map +1 -0
- package/dist/migration/remove-browser-module-with-server-transition.d.ts +8 -0
- package/dist/migration/remove-browser-module-with-server-transition.d.ts.map +1 -0
- package/dist/migration/remove-browser-module-with-server-transition.js +173 -0
- package/dist/migration/remove-browser-module-with-server-transition.js.map +1 -0
- package/dist/migration/remove-component-factory-resolver.d.ts +8 -0
- package/dist/migration/remove-component-factory-resolver.d.ts.map +1 -0
- package/dist/migration/remove-component-factory-resolver.js +70 -0
- package/dist/migration/remove-component-factory-resolver.js.map +1 -0
- package/dist/migration/remove-default-project.d.ts +8 -0
- package/dist/migration/remove-default-project.d.ts.map +1 -0
- package/dist/migration/remove-default-project.js +59 -0
- package/dist/migration/remove-default-project.js.map +1 -0
- package/dist/migration/remove-empty-ng-on-init.d.ts +8 -0
- package/dist/migration/remove-empty-ng-on-init.d.ts.map +1 -0
- package/dist/migration/remove-empty-ng-on-init.js +98 -0
- package/dist/migration/remove-empty-ng-on-init.js.map +1 -0
- package/dist/migration/remove-enable-ivy.d.ts +8 -0
- package/dist/migration/remove-enable-ivy.d.ts.map +1 -0
- package/dist/migration/remove-enable-ivy.js +78 -0
- package/dist/migration/remove-enable-ivy.js.map +1 -0
- package/dist/migration/remove-entry-components.d.ts +8 -0
- package/dist/migration/remove-entry-components.d.ts.map +1 -0
- package/dist/migration/remove-entry-components.js +101 -0
- package/dist/migration/remove-entry-components.js.map +1 -0
- package/dist/migration/remove-es5-browser-support.d.ts +8 -0
- package/dist/migration/remove-es5-browser-support.d.ts.map +1 -0
- package/dist/migration/remove-es5-browser-support.js +74 -0
- package/dist/migration/remove-es5-browser-support.js.map +1 -0
- package/dist/migration/remove-extract-css.d.ts +8 -0
- package/dist/migration/remove-extract-css.d.ts.map +1 -0
- package/dist/migration/remove-extract-css.js +76 -0
- package/dist/migration/remove-extract-css.js.map +1 -0
- package/dist/migration/remove-ie-polyfills.d.ts +8 -0
- package/dist/migration/remove-ie-polyfills.d.ts.map +1 -0
- package/dist/migration/remove-ie-polyfills.js +151 -0
- package/dist/migration/remove-ie-polyfills.js.map +1 -0
- package/dist/migration/remove-module-id.d.ts +8 -0
- package/dist/migration/remove-module-id.d.ts.map +1 -0
- package/dist/migration/remove-module-id.js +81 -0
- package/dist/migration/remove-module-id.js.map +1 -0
- package/dist/migration/remove-relative-link-resolution.d.ts +8 -0
- package/dist/migration/remove-relative-link-resolution.d.ts.map +1 -0
- package/dist/migration/remove-relative-link-resolution.js +84 -0
- package/dist/migration/remove-relative-link-resolution.js.map +1 -0
- package/dist/migration/remove-standalone-true.d.ts +8 -0
- package/dist/migration/remove-standalone-true.d.ts.map +1 -0
- package/dist/migration/remove-standalone-true.js +73 -0
- package/dist/migration/remove-standalone-true.js.map +1 -0
- package/dist/migration/remove-static-false.d.ts +8 -0
- package/dist/migration/remove-static-false.d.ts.map +1 -0
- package/dist/migration/remove-static-false.js +90 -0
- package/dist/migration/remove-static-false.js.map +1 -0
- package/dist/migration/remove-zone-js-polyfill.d.ts +8 -0
- package/dist/migration/remove-zone-js-polyfill.d.ts.map +1 -0
- package/dist/migration/remove-zone-js-polyfill.js +73 -0
- package/dist/migration/remove-zone-js-polyfill.js.map +1 -0
- package/dist/migration/rename-after-render.d.ts +8 -0
- package/dist/migration/rename-after-render.d.ts.map +1 -0
- package/dist/migration/rename-after-render.js +52 -0
- package/dist/migration/rename-after-render.js.map +1 -0
- package/dist/migration/rename-check-no-changes.d.ts +8 -0
- package/dist/migration/rename-check-no-changes.d.ts.map +1 -0
- package/dist/migration/rename-check-no-changes.js +48 -0
- package/dist/migration/rename-check-no-changes.js.map +1 -0
- package/dist/migration/rename-file.d.ts +14 -0
- package/dist/migration/rename-file.d.ts.map +1 -0
- package/dist/migration/rename-file.js +124 -0
- package/dist/migration/rename-file.js.map +1 -0
- package/dist/migration/rename-pending-tasks.d.ts +8 -0
- package/dist/migration/rename-pending-tasks.d.ts.map +1 -0
- package/dist/migration/rename-pending-tasks.js +49 -0
- package/dist/migration/rename-pending-tasks.js.map +1 -0
- package/dist/migration/rename-zoneless-provider.d.ts +8 -0
- package/dist/migration/rename-zoneless-provider.d.ts.map +1 -0
- package/dist/migration/rename-zoneless-provider.js +48 -0
- package/dist/migration/rename-zoneless-provider.js.map +1 -0
- package/dist/migration/replace-async-with-wait-for-async.d.ts +8 -0
- package/dist/migration/replace-async-with-wait-for-async.d.ts.map +1 -0
- package/dist/migration/replace-async-with-wait-for-async.js +52 -0
- package/dist/migration/replace-async-with-wait-for-async.js.map +1 -0
- package/dist/migration/replace-deep-zone-js-imports.d.ts +8 -0
- package/dist/migration/replace-deep-zone-js-imports.d.ts.map +1 -0
- package/dist/migration/replace-deep-zone-js-imports.js +144 -0
- package/dist/migration/replace-deep-zone-js-imports.js.map +1 -0
- package/dist/migration/replace-http-client-module.d.ts +8 -0
- package/dist/migration/replace-http-client-module.d.ts.map +1 -0
- package/dist/migration/replace-http-client-module.js +248 -0
- package/dist/migration/replace-http-client-module.js.map +1 -0
- package/dist/migration/replace-initial-navigation.d.ts +8 -0
- package/dist/migration/replace-initial-navigation.d.ts.map +1 -0
- package/dist/migration/replace-initial-navigation.js +80 -0
- package/dist/migration/replace-initial-navigation.js.map +1 -0
- package/dist/migration/replace-inject-flags.d.ts +8 -0
- package/dist/migration/replace-inject-flags.d.ts.map +1 -0
- package/dist/migration/replace-inject-flags.js +101 -0
- package/dist/migration/replace-inject-flags.js.map +1 -0
- package/dist/migration/replace-load-children-string.d.ts +8 -0
- package/dist/migration/replace-load-children-string.d.ts.map +1 -0
- package/dist/migration/replace-load-children-string.js +70 -0
- package/dist/migration/replace-load-children-string.js.map +1 -0
- package/dist/migration/replace-node-sass-with-sass.d.ts +8 -0
- package/dist/migration/replace-node-sass-with-sass.d.ts.map +1 -0
- package/dist/migration/replace-node-sass-with-sass.js +38 -0
- package/dist/migration/replace-node-sass-with-sass.js.map +1 -0
- package/dist/migration/replace-router-link-with-href.d.ts +8 -0
- package/dist/migration/replace-router-link-with-href.d.ts.map +1 -0
- package/dist/migration/replace-router-link-with-href.js +55 -0
- package/dist/migration/replace-router-link-with-href.js.map +1 -0
- package/dist/migration/replace-testbed-get-with-inject.d.ts +8 -0
- package/dist/migration/replace-testbed-get-with-inject.d.ts.map +1 -0
- package/dist/migration/replace-testbed-get-with-inject.js +53 -0
- package/dist/migration/replace-testbed-get-with-inject.js.map +1 -0
- package/dist/migration/replace-untyped-forms.d.ts +8 -0
- package/dist/migration/replace-untyped-forms.d.ts.map +1 -0
- package/dist/migration/replace-untyped-forms.js +78 -0
- package/dist/migration/replace-untyped-forms.js.map +1 -0
- package/dist/migration/replace-validator-with-validators.d.ts +8 -0
- package/dist/migration/replace-validator-with-validators.d.ts.map +1 -0
- package/dist/migration/replace-validator-with-validators.js +62 -0
- package/dist/migration/replace-validator-with-validators.js.map +1 -0
- package/dist/migration/replace-view-encapsulation-native.d.ts +8 -0
- package/dist/migration/replace-view-encapsulation-native.d.ts.map +1 -0
- package/dist/migration/replace-view-encapsulation-native.js +67 -0
- package/dist/migration/replace-view-encapsulation-native.js.map +1 -0
- package/dist/migration/update-component-template-url.d.ts +28 -0
- package/dist/migration/update-component-template-url.d.ts.map +1 -0
- package/dist/migration/update-component-template-url.js +178 -0
- package/dist/migration/update-component-template-url.js.map +1 -0
- package/dist/migration/update-tsconfig-module.d.ts +8 -0
- package/dist/migration/update-tsconfig-module.d.ts.map +1 -0
- package/dist/migration/update-tsconfig-module.js +83 -0
- package/dist/migration/update-tsconfig-module.js.map +1 -0
- package/dist/migration/update-tsconfig-target.d.ts +8 -0
- package/dist/migration/update-tsconfig-target.d.ts.map +1 -0
- package/dist/migration/update-tsconfig-target.js +78 -0
- package/dist/migration/update-tsconfig-target.js.map +1 -0
- package/dist/migration/upgrade-to-angular-10.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-10.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-10.js +68 -0
- package/dist/migration/upgrade-to-angular-10.js.map +1 -0
- package/dist/migration/upgrade-to-angular-11.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-11.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-11.js +68 -0
- package/dist/migration/upgrade-to-angular-11.js.map +1 -0
- package/dist/migration/upgrade-to-angular-12.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-12.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-12.js +59 -0
- package/dist/migration/upgrade-to-angular-12.js.map +1 -0
- package/dist/migration/upgrade-to-angular-13.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-13.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-13.js +61 -0
- package/dist/migration/upgrade-to-angular-13.js.map +1 -0
- package/dist/migration/upgrade-to-angular-14.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-14.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-14.js +60 -0
- package/dist/migration/upgrade-to-angular-14.js.map +1 -0
- package/dist/migration/upgrade-to-angular-15.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-15.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-15.js +59 -0
- package/dist/migration/upgrade-to-angular-15.js.map +1 -0
- package/dist/migration/upgrade-to-angular-16.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-16.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-16.js +73 -0
- package/dist/migration/upgrade-to-angular-16.js.map +1 -0
- package/dist/migration/upgrade-to-angular-17.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-17.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-17.js +59 -0
- package/dist/migration/upgrade-to-angular-17.js.map +1 -0
- package/dist/migration/upgrade-to-angular-18.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-18.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-18.js +85 -0
- package/dist/migration/upgrade-to-angular-18.js.map +1 -0
- package/dist/migration/upgrade-to-angular-19.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-19.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-19.js +68 -0
- package/dist/migration/upgrade-to-angular-19.js.map +1 -0
- package/dist/migration/upgrade-to-angular-20.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-20.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-20.js +63 -0
- package/dist/migration/upgrade-to-angular-20.js.map +1 -0
- package/dist/migration/upgrade-to-angular-21.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-21.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-21.js +69 -0
- package/dist/migration/upgrade-to-angular-21.js.map +1 -0
- package/dist/migration/upgrade-to-angular-8.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-8.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-8.js +70 -0
- package/dist/migration/upgrade-to-angular-8.js.map +1 -0
- package/dist/migration/upgrade-to-angular-9.d.ts +8 -0
- package/dist/migration/upgrade-to-angular-9.d.ts.map +1 -0
- package/dist/migration/upgrade-to-angular-9.js +85 -0
- package/dist/migration/upgrade-to-angular-9.js.map +1 -0
- package/dist/search/find-analyze-for-entry-components-usage.d.ts +8 -0
- package/dist/search/find-analyze-for-entry-components-usage.d.ts.map +1 -0
- package/dist/search/find-analyze-for-entry-components-usage.js +66 -0
- package/dist/search/find-analyze-for-entry-components-usage.js.map +1 -0
- package/dist/search/find-angular-decorator.d.ts +8 -0
- package/dist/search/find-angular-decorator.d.ts.map +1 -0
- package/dist/search/find-angular-decorator.js +78 -0
- package/dist/search/find-angular-decorator.js.map +1 -0
- package/dist/search/find-angular-http-usage.d.ts +8 -0
- package/dist/search/find-angular-http-usage.d.ts.map +1 -0
- package/dist/search/find-angular-http-usage.js +55 -0
- package/dist/search/find-angular-http-usage.js.map +1 -0
- package/dist/search/find-animation-driver-matches-element.d.ts +8 -0
- package/dist/search/find-animation-driver-matches-element.d.ts.map +1 -0
- package/dist/search/find-animation-driver-matches-element.js +59 -0
- package/dist/search/find-animation-driver-matches-element.js.map +1 -0
- package/dist/search/find-async-test-helper-usage.d.ts +8 -0
- package/dist/search/find-async-test-helper-usage.d.ts.map +1 -0
- package/dist/search/find-async-test-helper-usage.js +65 -0
- package/dist/search/find-async-test-helper-usage.js.map +1 -0
- package/dist/search/find-bare-module-with-providers.d.ts +8 -0
- package/dist/search/find-bare-module-with-providers.d.ts.map +1 -0
- package/dist/search/find-bare-module-with-providers.js +67 -0
- package/dist/search/find-bare-module-with-providers.js.map +1 -0
- package/dist/search/find-browser-transfer-state-module-usage.d.ts +8 -0
- package/dist/search/find-browser-transfer-state-module-usage.d.ts.map +1 -0
- package/dist/search/find-browser-transfer-state-module-usage.js +65 -0
- package/dist/search/find-browser-transfer-state-module-usage.js.map +1 -0
- package/dist/search/find-common-module-usage.d.ts +8 -0
- package/dist/search/find-common-module-usage.d.ts.map +1 -0
- package/dist/search/find-common-module-usage.js +67 -0
- package/dist/search/find-common-module-usage.js.map +1 -0
- package/dist/search/find-compiler-factory-usage.d.ts +8 -0
- package/dist/search/find-compiler-factory-usage.d.ts.map +1 -0
- package/dist/search/find-compiler-factory-usage.js +70 -0
- package/dist/search/find-compiler-factory-usage.js.map +1 -0
- package/dist/search/find-date-pipe-default-timezone-usage.d.ts +8 -0
- package/dist/search/find-date-pipe-default-timezone-usage.d.ts.map +1 -0
- package/dist/search/find-date-pipe-default-timezone-usage.js +66 -0
- package/dist/search/find-date-pipe-default-timezone-usage.js.map +1 -0
- package/dist/search/find-effect-timing-usage.d.ts +8 -0
- package/dist/search/find-effect-timing-usage.d.ts.map +1 -0
- package/dist/search/find-effect-timing-usage.js +48 -0
- package/dist/search/find-effect-timing-usage.js.map +1 -0
- package/dist/search/find-empty-projectable-nodes.d.ts +8 -0
- package/dist/search/find-empty-projectable-nodes.d.ts.map +1 -0
- package/dist/search/find-empty-projectable-nodes.js +88 -0
- package/dist/search/find-empty-projectable-nodes.js.map +1 -0
- package/dist/search/find-fake-async-usage.d.ts +8 -0
- package/dist/search/find-fake-async-usage.d.ts.map +1 -0
- package/dist/search/find-fake-async-usage.js +56 -0
- package/dist/search/find-fake-async-usage.js.map +1 -0
- package/dist/search/find-hammer-js-usage.d.ts +8 -0
- package/dist/search/find-hammer-js-usage.d.ts.map +1 -0
- package/dist/search/find-hammer-js-usage.js +69 -0
- package/dist/search/find-hammer-js-usage.js.map +1 -0
- package/dist/search/find-i18n-usage.d.ts +8 -0
- package/dist/search/find-i18n-usage.d.ts.map +1 -0
- package/dist/search/find-i18n-usage.js +128 -0
- package/dist/search/find-i18n-usage.js.map +1 -0
- package/dist/search/find-karma-usage.d.ts +8 -0
- package/dist/search/find-karma-usage.d.ts.map +1 -0
- package/dist/search/find-karma-usage.js +69 -0
- package/dist/search/find-karma-usage.js.map +1 -0
- package/dist/search/find-load-children-string-usage.d.ts +8 -0
- package/dist/search/find-load-children-string-usage.d.ts.map +1 -0
- package/dist/search/find-load-children-string-usage.js +62 -0
- package/dist/search/find-load-children-string-usage.js.map +1 -0
- package/dist/search/find-missing-injectable.d.ts +8 -0
- package/dist/search/find-missing-injectable.d.ts.map +1 -0
- package/dist/search/find-missing-injectable.js +98 -0
- package/dist/search/find-missing-injectable.js.map +1 -0
- package/dist/search/find-ng-class-usage.d.ts +8 -0
- package/dist/search/find-ng-class-usage.d.ts.map +1 -0
- package/dist/search/find-ng-class-usage.js +65 -0
- package/dist/search/find-ng-class-usage.js.map +1 -0
- package/dist/search/find-ng-style-usage.d.ts +8 -0
- package/dist/search/find-ng-style-usage.d.ts.map +1 -0
- package/dist/search/find-ng-style-usage.js +65 -0
- package/dist/search/find-ng-style-usage.js.map +1 -0
- package/dist/search/find-path-match-type-usage.d.ts +8 -0
- package/dist/search/find-path-match-type-usage.d.ts.map +1 -0
- package/dist/search/find-path-match-type-usage.js +62 -0
- package/dist/search/find-path-match-type-usage.js.map +1 -0
- package/dist/search/find-platform-dynamic-server-usage.d.ts +8 -0
- package/dist/search/find-platform-dynamic-server-usage.d.ts.map +1 -0
- package/dist/search/find-platform-dynamic-server-usage.js +59 -0
- package/dist/search/find-platform-dynamic-server-usage.js.map +1 -0
- package/dist/search/find-platform-webworker-usage.d.ts +8 -0
- package/dist/search/find-platform-webworker-usage.d.ts.map +1 -0
- package/dist/search/find-platform-webworker-usage.js +54 -0
- package/dist/search/find-platform-webworker-usage.js.map +1 -0
- package/dist/search/find-platform-worker-usage.d.ts +8 -0
- package/dist/search/find-platform-worker-usage.d.ts.map +1 -0
- package/dist/search/find-platform-worker-usage.js +60 -0
- package/dist/search/find-platform-worker-usage.js.map +1 -0
- package/dist/search/find-preserve-fragment-usage.d.ts +8 -0
- package/dist/search/find-preserve-fragment-usage.d.ts.map +1 -0
- package/dist/search/find-preserve-fragment-usage.js +52 -0
- package/dist/search/find-preserve-fragment-usage.js.map +1 -0
- package/dist/search/find-preserve-query-params-usage.d.ts +8 -0
- package/dist/search/find-preserve-query-params-usage.d.ts.map +1 -0
- package/dist/search/find-preserve-query-params-usage.js +52 -0
- package/dist/search/find-preserve-query-params-usage.js.map +1 -0
- package/dist/search/find-provided-in-deprecated-usage.d.ts +8 -0
- package/dist/search/find-provided-in-deprecated-usage.d.ts.map +1 -0
- package/dist/search/find-provided-in-deprecated-usage.js +87 -0
- package/dist/search/find-provided-in-deprecated-usage.js.map +1 -0
- package/dist/search/find-reflective-injector-usage.d.ts +8 -0
- package/dist/search/find-reflective-injector-usage.d.ts.map +1 -0
- package/dist/search/find-reflective-injector-usage.js +65 -0
- package/dist/search/find-reflective-injector-usage.js.map +1 -0
- package/dist/search/find-render-application-usage.d.ts +8 -0
- package/dist/search/find-render-application-usage.d.ts.map +1 -0
- package/dist/search/find-render-application-usage.js +67 -0
- package/dist/search/find-render-application-usage.js.map +1 -0
- package/dist/search/find-render-component-type-usage.d.ts +8 -0
- package/dist/search/find-render-component-type-usage.d.ts.map +1 -0
- package/dist/search/find-render-component-type-usage.js +66 -0
- package/dist/search/find-render-component-type-usage.js.map +1 -0
- package/dist/search/find-render-module-factory-usage.d.ts +8 -0
- package/dist/search/find-render-module-factory-usage.d.ts.map +1 -0
- package/dist/search/find-render-module-factory-usage.js +65 -0
- package/dist/search/find-render-module-factory-usage.js.map +1 -0
- package/dist/search/find-renderer-usage.d.ts +8 -0
- package/dist/search/find-renderer-usage.d.ts.map +1 -0
- package/dist/search/find-renderer-usage.js +66 -0
- package/dist/search/find-renderer-usage.js.map +1 -0
- package/dist/search/find-resource-cache-provider-usage.d.ts +8 -0
- package/dist/search/find-resource-cache-provider-usage.d.ts.map +1 -0
- package/dist/search/find-resource-cache-provider-usage.js +59 -0
- package/dist/search/find-resource-cache-provider-usage.js.map +1 -0
- package/dist/search/find-root-renderer-usage.d.ts +8 -0
- package/dist/search/find-root-renderer-usage.d.ts.map +1 -0
- package/dist/search/find-root-renderer-usage.js +67 -0
- package/dist/search/find-root-renderer-usage.js.map +1 -0
- package/dist/search/find-rxjs-compat-usage.d.ts +8 -0
- package/dist/search/find-rxjs-compat-usage.d.ts.map +1 -0
- package/dist/search/find-rxjs-compat-usage.js +60 -0
- package/dist/search/find-rxjs-compat-usage.js.map +1 -0
- package/dist/search/find-server-transfer-state-module-usage.d.ts +8 -0
- package/dist/search/find-server-transfer-state-module-usage.d.ts.map +1 -0
- package/dist/search/find-server-transfer-state-module-usage.js +59 -0
- package/dist/search/find-server-transfer-state-module-usage.js.map +1 -0
- package/dist/search/find-setup-testing-router-usage.d.ts +8 -0
- package/dist/search/find-setup-testing-router-usage.d.ts.map +1 -0
- package/dist/search/find-setup-testing-router-usage.js +65 -0
- package/dist/search/find-setup-testing-router-usage.js.map +1 -0
- package/dist/search/find-testability-pending-request-usage.d.ts +8 -0
- package/dist/search/find-testability-pending-request-usage.d.ts.map +1 -0
- package/dist/search/find-testability-pending-request-usage.js +59 -0
- package/dist/search/find-testability-pending-request-usage.js.map +1 -0
- package/dist/search/find-undecorated-angular-class.d.ts +8 -0
- package/dist/search/find-undecorated-angular-class.d.ts.map +1 -0
- package/dist/search/find-undecorated-angular-class.js +87 -0
- package/dist/search/find-undecorated-angular-class.js.map +1 -0
- package/dist/search/find-with-no-dom-reuse-usage.d.ts +8 -0
- package/dist/search/find-with-no-dom-reuse-usage.d.ts.map +1 -0
- package/dist/search/find-with-no-dom-reuse-usage.js +66 -0
- package/dist/search/find-with-no-dom-reuse-usage.js.map +1 -0
- package/dist/search/find-wrapped-value-usage.d.ts +8 -0
- package/dist/search/find-wrapped-value-usage.d.ts.map +1 -0
- package/dist/search/find-wrapped-value-usage.js +66 -0
- package/dist/search/find-wrapped-value-usage.js.map +1 -0
- package/dist/search/find-zone-js-usage.d.ts +8 -0
- package/dist/search/find-zone-js-usage.d.ts.map +1 -0
- package/dist/search/find-zone-js-usage.js +65 -0
- package/dist/search/find-zone-js-usage.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-fake-async-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-fake-async-usage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAI9F,qBAAa,kBAAmB,SAAQ,MAAM;IAC1C,QAAQ,CAAC,IAAI,0DAA0D;IACvE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA8C;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAE0B;IAEhD,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAmB9D"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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.FindFakeAsyncUsage = 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
|
+
class FindFakeAsyncUsage extends rewrite_1.Recipe {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments);
|
|
24
|
+
this.name = "org.openrewrite.angular.search.find-fake-async-usage";
|
|
25
|
+
this.displayName = "Find zone.js-dependent test helper usage";
|
|
26
|
+
this.description = "Finds `fakeAsync()`, `tick()`, and `waitForAsync()` calls from `@angular/core/testing`. " +
|
|
27
|
+
"These zone.js-dependent test helpers are incompatible with Vitest, the default test runner in Angular 21. " +
|
|
28
|
+
"Migrate to native async/await patterns instead.";
|
|
29
|
+
}
|
|
30
|
+
editor() {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
33
|
+
visitMethodInvocation(method, p) {
|
|
34
|
+
const _super = Object.create(null, {
|
|
35
|
+
visitMethodInvocation: { get: () => super.visitMethodInvocation }
|
|
36
|
+
});
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
var _a;
|
|
39
|
+
const m = yield _super.visitMethodInvocation.call(this, method, p);
|
|
40
|
+
if (m.name.simpleName === 'fakeAsync' || m.name.simpleName === 'tick' || m.name.simpleName === 'waitForAsync') {
|
|
41
|
+
const methodType = m.methodType;
|
|
42
|
+
if (((_a = methodType === null || methodType === void 0 ? void 0 : methodType.declaringType) === null || _a === void 0 ? void 0 : _a.kind) === java_1.Type.Kind.Class
|
|
43
|
+
&& methodType.declaringType.fullyQualifiedName === '@angular/core/testing') {
|
|
44
|
+
return (0, rewrite_1.foundSearchResult)(m, `${m.name.simpleName}() is a zone.js-dependent test helper incompatible with Vitest. ` +
|
|
45
|
+
"Migrate to native async/await. See https://angular.dev/guide/testing");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return m;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.FindFakeAsyncUsage = FindFakeAsyncUsage;
|
|
56
|
+
//# sourceMappingURL=find-fake-async-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-fake-async-usage.js","sourceRoot":"","sources":["../../src/search/find-fake-async-usage.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA8F;AAC9F,gEAAkE;AAClE,oDAAkD;AAElD,MAAa,kBAAmB,SAAQ,gBAAM;IAA9C;;QACa,SAAI,GAAG,sDAAsD,CAAC;QAC9D,gBAAW,GAAW,0CAA0C,CAAC;QACjE,gBAAW,GAAW,0FAA0F;YACrH,4GAA4G;YAC5G,iDAAiD,CAAC;IAqB1D,CAAC;IAnBS,MAAM;;YACR,OAAO,IAAI,KAAM,SAAQ,8BAAmC;gBACxC,qBAAqB,CAAC,MAA0B,EAAE,CAAmB;;;;;;wBACjF,MAAM,CAAC,GAAG,MAAM,OAAM,qBAAqB,YAAC,MAAM,EAAE,CAAC,CAAuB,CAAC;wBAE7E,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;4BAC5G,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;4BAChC,IAAI,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,0CAAE,IAAI,MAAK,WAAI,CAAC,IAAI,CAAC,KAAK;mCAC/C,UAAU,CAAC,aAA4B,CAAC,kBAAkB,KAAK,uBAAuB,EAAE,CAAC;gCAC7F,OAAO,IAAA,2BAAiB,EAAC,CAAC,EACtB,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,kEAAkE;oCACtF,sEAAsE,CAAC,CAAC;4BAChF,CAAC;wBACL,CAAC;wBAED,OAAO,CAAC,CAAC;oBACb,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AA1BD,gDA0BC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindHammerJsUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-hammer-js-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-hammer-js-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-hammer-js-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-hammer-js-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAI9F,qBAAa,iBAAkB,SAAQ,MAAM;IACzC,QAAQ,CAAC,IAAI,yDAAyD;IACtE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAyB;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAyI;IAE/J,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAsC9D"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.FindHammerJsUsage = void 0;
|
|
13
|
+
const rewrite_1 = require("@openrewrite/rewrite");
|
|
14
|
+
const javascript_1 = require("@openrewrite/rewrite/javascript");
|
|
15
|
+
const java_1 = require("@openrewrite/rewrite/java");
|
|
16
|
+
class FindHammerJsUsage extends rewrite_1.Recipe {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.name = "org.openrewrite.angular.search.find-hammer-js-usage";
|
|
20
|
+
this.displayName = "Find HammerJS usage";
|
|
21
|
+
this.description = "Finds `HammerModule` imports and HammerJS references. Angular has deprecated HammerJS support and it will be removed in Angular 21.";
|
|
22
|
+
}
|
|
23
|
+
editor() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
26
|
+
visitImportDeclaration(jsImport, p) {
|
|
27
|
+
const _super = Object.create(null, {
|
|
28
|
+
visitImportDeclaration: { get: () => super.visitImportDeclaration }
|
|
29
|
+
});
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const imp = yield _super.visitImportDeclaration.call(this, jsImport, p);
|
|
32
|
+
if (!imp.moduleSpecifier)
|
|
33
|
+
return imp;
|
|
34
|
+
const moduleSpec = imp.moduleSpecifier.element;
|
|
35
|
+
if (moduleSpec.kind !== java_1.J.Kind.Literal)
|
|
36
|
+
return imp;
|
|
37
|
+
const moduleName = moduleSpec.value;
|
|
38
|
+
if (moduleName === 'hammerjs' || moduleName.startsWith('hammerjs/')) {
|
|
39
|
+
return (0, rewrite_1.foundSearchResult)(imp, "HammerJS import. Angular has deprecated HammerJS support; it will be removed in Angular 21.");
|
|
40
|
+
}
|
|
41
|
+
return imp;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
visitIdentifier(identifier, p) {
|
|
45
|
+
const _super = Object.create(null, {
|
|
46
|
+
visitIdentifier: { get: () => super.visitIdentifier }
|
|
47
|
+
});
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
const id = yield _super.visitIdentifier.call(this, identifier, p);
|
|
51
|
+
if (!id)
|
|
52
|
+
return id;
|
|
53
|
+
if (id.simpleName === 'HammerModule' && ((_a = id.type) === null || _a === void 0 ? void 0 : _a.kind) === java_1.Type.Kind.Class
|
|
54
|
+
&& id.type.fullyQualifiedName === 'HammerModule') {
|
|
55
|
+
return (0, rewrite_1.foundSearchResult)(id, "HammerModule usage. Angular has deprecated HammerJS support; it will be removed in Angular 21.");
|
|
56
|
+
}
|
|
57
|
+
if (id.simpleName === 'HammerGestureConfig' && ((_b = id.type) === null || _b === void 0 ? void 0 : _b.kind) === java_1.Type.Kind.Class
|
|
58
|
+
&& id.type.fullyQualifiedName === 'HammerGestureConfig') {
|
|
59
|
+
return (0, rewrite_1.foundSearchResult)(id, "HammerGestureConfig usage. Angular has deprecated HammerJS support; it will be removed in Angular 21.");
|
|
60
|
+
}
|
|
61
|
+
return id;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.FindHammerJsUsage = FindHammerJsUsage;
|
|
69
|
+
//# sourceMappingURL=find-hammer-js-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-hammer-js-usage.js","sourceRoot":"","sources":["../../src/search/find-hammer-js-usage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAA8F;AAC9F,gEAAsE;AACtE,oDAAkD;AAElD,MAAa,iBAAkB,SAAQ,gBAAM;IAA7C;;QACa,SAAI,GAAG,qDAAqD,CAAC;QAC7D,gBAAW,GAAW,qBAAqB,CAAC;QAC5C,gBAAW,GAAW,qIAAqI,CAAC;IAwCzK,CAAC;IAtCS,MAAM;;YACR,OAAO,IAAI,KAAM,SAAQ,8BAAmC;gBACxC,sBAAsB,CAAC,QAAmB,EAAE,CAAmB;;;;;wBAC3E,MAAM,GAAG,GAAG,MAAM,OAAM,sBAAsB,YAAC,QAAQ,EAAE,CAAC,CAAc,CAAC;wBACzE,IAAI,CAAC,GAAG,CAAC,eAAe;4BAAE,OAAO,GAAG,CAAC;wBAErC,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC;wBAC/C,IAAI,UAAU,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,OAAO;4BAAE,OAAO,GAAG,CAAC;wBAEnD,MAAM,UAAU,GAAI,UAAwB,CAAC,KAAe,CAAC;wBAC7D,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;4BAClE,OAAO,IAAA,2BAAiB,EAAC,GAAG,EACxB,6FAA6F,CAAC,CAAC;wBACvG,CAAC;wBAED,OAAO,GAAG,CAAC;oBACf,CAAC;iBAAA;gBAEc,eAAe,CAAC,UAAwB,EAAE,CAAmB;;;;;;wBACxE,MAAM,EAAE,GAAG,MAAM,OAAM,eAAe,YAAC,UAAU,EAAE,CAAC,CAAiB,CAAC;wBACtE,IAAI,CAAC,EAAE;4BAAE,OAAO,EAAE,CAAC;wBAEnB,IAAI,EAAE,CAAC,UAAU,KAAK,cAAc,IAAI,CAAA,MAAA,EAAE,CAAC,IAAI,0CAAE,IAAI,MAAK,WAAI,CAAC,IAAI,CAAC,KAAK;+BACjE,EAAE,CAAC,IAAmB,CAAC,kBAAkB,KAAK,cAAc,EAAE,CAAC;4BACnE,OAAO,IAAA,2BAAiB,EAAC,EAAE,EACvB,gGAAgG,CAAC,CAAC;wBAC1G,CAAC;wBAED,IAAI,EAAE,CAAC,UAAU,KAAK,qBAAqB,IAAI,CAAA,MAAA,EAAE,CAAC,IAAI,0CAAE,IAAI,MAAK,WAAI,CAAC,IAAI,CAAC,KAAK;+BACxE,EAAE,CAAC,IAAmB,CAAC,kBAAkB,KAAK,qBAAqB,EAAE,CAAC;4BAC1E,OAAO,IAAA,2BAAiB,EAAC,EAAE,EACvB,uGAAuG,CAAC,CAAC;wBACjH,CAAC;wBAED,OAAO,EAAE,CAAC;oBACd,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AA3CD,8CA2CC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Recipe } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindI18nUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-i18n-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
recipeList(): Promise<Recipe[]>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-i18n-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-i18n-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-i18n-usage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsC,MAAM,EAAc,MAAM,sBAAsB,CAAC;AAyE9F,qBAAa,aAAc,SAAQ,MAAM;IACrC,QAAQ,CAAC,IAAI,oDAAoD;IACjE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAqB;IACjD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAG8C;IAEpE,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAMxC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
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.FindI18nUsage = 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 json_1 = require("@openrewrite/rewrite/json");
|
|
22
|
+
const I18N_CONFIG_KEYS = new Set(['i18nLocale', 'i18nFile', 'i18nFormat', 'i18nMissingTranslation']);
|
|
23
|
+
class FindI18nConfigInAngularJson extends rewrite_1.Recipe {
|
|
24
|
+
constructor() {
|
|
25
|
+
super(...arguments);
|
|
26
|
+
this.name = "org.openrewrite.angular.search.find-i18n-usage.angular-json";
|
|
27
|
+
this.displayName = "Find i18n configuration in `angular.json`";
|
|
28
|
+
this.description = "Finds legacy i18n configuration keys (`i18nLocale`, `i18nFile`, `i18nFormat`, `i18nMissingTranslation`) in `angular.json`.";
|
|
29
|
+
}
|
|
30
|
+
editor() {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
return new class extends json_1.JsonVisitor {
|
|
33
|
+
visitDocument(doc, p) {
|
|
34
|
+
const _super = Object.create(null, {
|
|
35
|
+
visitDocument: { get: () => super.visitDocument }
|
|
36
|
+
});
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
if (!doc.sourcePath.endsWith('angular.json'))
|
|
39
|
+
return doc;
|
|
40
|
+
return _super.visitDocument.call(this, doc, p);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
visitMember(member, p) {
|
|
44
|
+
const _super = Object.create(null, {
|
|
45
|
+
visitMember: { get: () => super.visitMember }
|
|
46
|
+
});
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const m = yield _super.visitMember.call(this, member, p);
|
|
49
|
+
if (!m)
|
|
50
|
+
return m;
|
|
51
|
+
const keyName = (0, json_1.getMemberKeyName)(m);
|
|
52
|
+
if (keyName && I18N_CONFIG_KEYS.has(keyName)) {
|
|
53
|
+
return (0, rewrite_1.foundSearchResult)(m, `Legacy i18n config \`${keyName}\`. Angular 9 requires \`@angular/localize\` for i18n support.`);
|
|
54
|
+
}
|
|
55
|
+
return m;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}();
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
class FindLocalizeUsageInTypeScript extends rewrite_1.Recipe {
|
|
63
|
+
constructor() {
|
|
64
|
+
super(...arguments);
|
|
65
|
+
this.name = "org.openrewrite.angular.search.find-i18n-usage.typescript";
|
|
66
|
+
this.displayName = "Find `$localize` usage in TypeScript";
|
|
67
|
+
this.description = "Finds `$localize` tagged template literal usage and `@angular/localize` imports.";
|
|
68
|
+
}
|
|
69
|
+
editor() {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
72
|
+
visitImportDeclaration(jsImport, p) {
|
|
73
|
+
const _super = Object.create(null, {
|
|
74
|
+
visitImportDeclaration: { get: () => super.visitImportDeclaration }
|
|
75
|
+
});
|
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
const imp = yield _super.visitImportDeclaration.call(this, jsImport, p);
|
|
78
|
+
if (!imp.moduleSpecifier)
|
|
79
|
+
return imp;
|
|
80
|
+
const moduleSpec = imp.moduleSpecifier.element;
|
|
81
|
+
if (moduleSpec.kind !== java_1.J.Kind.Literal)
|
|
82
|
+
return imp;
|
|
83
|
+
const moduleName = moduleSpec.value;
|
|
84
|
+
if (moduleName === '@angular/localize' || moduleName.startsWith('@angular/localize/')) {
|
|
85
|
+
return (0, rewrite_1.foundSearchResult)(imp, "`@angular/localize` import. Ensure `import '@angular/localize/init'` is in `polyfills.ts`.");
|
|
86
|
+
}
|
|
87
|
+
return imp;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
visitIdentifier(identifier, p) {
|
|
91
|
+
const _super = Object.create(null, {
|
|
92
|
+
visitIdentifier: { get: () => super.visitIdentifier }
|
|
93
|
+
});
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const id = yield _super.visitIdentifier.call(this, identifier, p);
|
|
96
|
+
if (!id)
|
|
97
|
+
return id;
|
|
98
|
+
if (id.simpleName === '$localize') {
|
|
99
|
+
return (0, rewrite_1.foundSearchResult)(id, "`$localize` usage. Ensure `@angular/localize` is installed and `import '@angular/localize/init'` is in `polyfills.ts`.");
|
|
100
|
+
}
|
|
101
|
+
return id;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
class FindI18nUsage extends rewrite_1.Recipe {
|
|
109
|
+
constructor() {
|
|
110
|
+
super(...arguments);
|
|
111
|
+
this.name = "org.openrewrite.angular.search.find-i18n-usage";
|
|
112
|
+
this.displayName = "Find i18n usage";
|
|
113
|
+
this.description = "Finds i18n usage indicators: legacy i18n configuration in `angular.json` " +
|
|
114
|
+
"(`i18nLocale`, `i18nFile`, `i18nFormat`, `i18nMissingTranslation`), `$localize` tagged template literals, " +
|
|
115
|
+
"and `@angular/localize` imports. Projects with these markers need `@angular/localize` installed and " +
|
|
116
|
+
"`import '@angular/localize/init'` in `polyfills.ts` for Angular 9+.";
|
|
117
|
+
}
|
|
118
|
+
recipeList() {
|
|
119
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
return [
|
|
121
|
+
new FindI18nConfigInAngularJson(),
|
|
122
|
+
new FindLocalizeUsageInTypeScript(),
|
|
123
|
+
];
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.FindI18nUsage = FindI18nUsage;
|
|
128
|
+
//# sourceMappingURL=find-i18n-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-i18n-usage.js","sourceRoot":"","sources":["../../src/search/find-i18n-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindKarmaUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-karma-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-karma-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-karma-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-karma-usage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAG9F,qBAAa,cAAe,SAAQ,MAAM;IACtC,QAAQ,CAAC,IAAI,qDAAqD;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAkC;IAC9D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAC4C;IAElE,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA+B9D"}
|
|
@@ -0,0 +1,69 @@
|
|
|
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.FindKarmaUsage = void 0;
|
|
18
|
+
const rewrite_1 = require("@openrewrite/rewrite");
|
|
19
|
+
const json_1 = require("@openrewrite/rewrite/json");
|
|
20
|
+
class FindKarmaUsage extends rewrite_1.Recipe {
|
|
21
|
+
constructor() {
|
|
22
|
+
super(...arguments);
|
|
23
|
+
this.name = "org.openrewrite.angular.search.find-karma-usage";
|
|
24
|
+
this.displayName = "Find Karma test runner usage";
|
|
25
|
+
this.description = "Finds Karma test runner configuration in package.json dependencies and angular.json test builder. " +
|
|
26
|
+
"Angular 21 replaces Karma with Vitest as the default test runner.";
|
|
27
|
+
}
|
|
28
|
+
editor() {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
return new class extends json_1.JsonVisitor {
|
|
31
|
+
visitDocument(doc, p) {
|
|
32
|
+
const _super = Object.create(null, {
|
|
33
|
+
visitDocument: { get: () => super.visitDocument }
|
|
34
|
+
});
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
if (!doc.sourcePath.endsWith('package.json') && !doc.sourcePath.endsWith('angular.json'))
|
|
37
|
+
return doc;
|
|
38
|
+
return _super.visitDocument.call(this, doc, p);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
visitMember(member, p) {
|
|
42
|
+
const _super = Object.create(null, {
|
|
43
|
+
visitMember: { get: () => super.visitMember }
|
|
44
|
+
});
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
const m = yield _super.visitMember.call(this, member, p);
|
|
47
|
+
if (!m)
|
|
48
|
+
return m;
|
|
49
|
+
const key = (0, json_1.getMemberKeyName)(m);
|
|
50
|
+
if (!key)
|
|
51
|
+
return m;
|
|
52
|
+
if (key.startsWith('karma')) {
|
|
53
|
+
return (0, rewrite_1.foundSearchResult)(m, `Karma dependency '${key}'. Angular 21 uses Vitest as the default test runner. See https://angular.dev/guide/testing`);
|
|
54
|
+
}
|
|
55
|
+
if (key === 'builder' && (0, json_1.isLiteral)(m.value)) {
|
|
56
|
+
const val = m.value.value;
|
|
57
|
+
if (typeof val === 'string' && val.includes('karma')) {
|
|
58
|
+
return (0, rewrite_1.foundSearchResult)(m, "Karma test builder reference. Angular 21 uses Vitest as the default test runner. See https://angular.dev/guide/testing");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return m;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}();
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.FindKarmaUsage = FindKarmaUsage;
|
|
69
|
+
//# sourceMappingURL=find-karma-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-karma-usage.js","sourceRoot":"","sources":["../../src/search/find-karma-usage.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA8F;AAC9F,oDAAyF;AAEzF,MAAa,cAAe,SAAQ,gBAAM;IAA1C;;QACa,SAAI,GAAG,iDAAiD,CAAC;QACzD,gBAAW,GAAW,8BAA8B,CAAC;QACrD,gBAAW,GAAW,oGAAoG;YAC/H,mEAAmE,CAAC;IAiC5E,CAAC;IA/BS,MAAM;;YACR,OAAO,IAAI,KAAM,SAAQ,kBAA6B;gBAClC,aAAa,CAAC,GAAkB,EAAE,CAAmB;;;;;wBACjE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;4BAAE,OAAO,GAAG,CAAC;wBACrG,OAAO,OAAM,aAAa,YAAC,GAAG,EAAE,CAAC,EAAE;oBACvC,CAAC;iBAAA;gBAEe,WAAW,CAAC,MAAmB,EAAE,CAAmB;;;;;wBAChE,MAAM,CAAC,GAAG,MAAM,OAAM,WAAW,YAAC,MAAM,EAAE,CAAC,CAAgB,CAAC;wBAC5D,IAAI,CAAC,CAAC;4BAAE,OAAO,CAAC,CAAC;wBAEjB,MAAM,GAAG,GAAG,IAAA,uBAAgB,EAAC,CAAC,CAAC,CAAC;wBAChC,IAAI,CAAC,GAAG;4BAAE,OAAO,CAAC,CAAC;wBAEnB,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;4BAC1B,OAAO,IAAA,2BAAiB,EAAC,CAAC,EACtB,qBAAqB,GAAG,6FAA6F,CAAC,CAAC;wBAC/H,CAAC;wBAED,IAAI,GAAG,KAAK,SAAS,IAAI,IAAA,gBAAS,EAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,KAAe,CAAC;4BACpC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gCACnD,OAAO,IAAA,2BAAiB,EAAC,CAAC,EACtB,wHAAwH,CAAC,CAAC;4BAClI,CAAC;wBACL,CAAC;wBAED,OAAO,CAAC,CAAC;oBACb,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AArCD,wCAqCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindLoadChildrenStringUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-load-children-string-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-load-children-string-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-load-children-string-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-load-children-string-usage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAI9F,qBAAa,2BAA4B,SAAQ,MAAM;IACnD,QAAQ,CAAC,IAAI,oEAAoE;IACjF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAuD;IACnF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAGiF;IAEvG,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAwB9D"}
|
|
@@ -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.FindLoadChildrenStringUsage = 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
|
+
class FindLoadChildrenStringUsage extends rewrite_1.Recipe {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments);
|
|
24
|
+
this.name = "org.openrewrite.angular.search.find-load-children-string-usage";
|
|
25
|
+
this.displayName = "Find deprecated string-based `loadChildren` usage";
|
|
26
|
+
this.description = "Finds usages of the deprecated string-based `loadChildren` syntax " +
|
|
27
|
+
"(e.g. `loadChildren: './path/to/module#ModuleName'`). " +
|
|
28
|
+
"String-based lazy loading was deprecated in Angular 8 and removed in Angular 11. " +
|
|
29
|
+
"Use dynamic imports instead: `loadChildren: () => import('./path/to/module').then(m => m.ModuleName)`.";
|
|
30
|
+
}
|
|
31
|
+
editor() {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
34
|
+
visitPropertyAssignment(prop, p) {
|
|
35
|
+
const _super = Object.create(null, {
|
|
36
|
+
visitPropertyAssignment: { get: () => super.visitPropertyAssignment }
|
|
37
|
+
});
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
let pa = yield _super.visitPropertyAssignment.call(this, prop, p);
|
|
40
|
+
if (!pa)
|
|
41
|
+
return pa;
|
|
42
|
+
const nameExpr = pa.name.element;
|
|
43
|
+
if (!(0, java_1.isIdentifier)(nameExpr) || nameExpr.simpleName !== 'loadChildren')
|
|
44
|
+
return pa;
|
|
45
|
+
if (!pa.initializer)
|
|
46
|
+
return pa;
|
|
47
|
+
if ((0, java_1.isLiteral)(pa.initializer)) {
|
|
48
|
+
const lit = pa.initializer;
|
|
49
|
+
if (typeof lit.value === 'string' && lit.value.includes('#')) {
|
|
50
|
+
return (0, rewrite_1.foundSearchResult)(pa, "String-based `loadChildren` was removed in Angular 11. " +
|
|
51
|
+
"Use dynamic imports: `loadChildren: () => import('...').then(m => m.ModuleName)`.");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return pa;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}();
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.FindLoadChildrenStringUsage = FindLoadChildrenStringUsage;
|
|
62
|
+
//# sourceMappingURL=find-load-children-string-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-load-children-string-usage.js","sourceRoot":"","sources":["../../src/search/find-load-children-string-usage.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA8F;AAC9F,gEAAsE;AACtE,oDAAqE;AAErE,MAAa,2BAA4B,SAAQ,gBAAM;IAAvD;;QACa,SAAI,GAAG,gEAAgE,CAAC;QACxE,gBAAW,GAAW,mDAAmD,CAAC;QAC1E,gBAAW,GAAW,oEAAoE;YAC/F,wDAAwD;YACxD,mFAAmF;YACnF,wGAAwG,CAAC;IA0BjH,CAAC;IAxBS,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,cAAc;4BAAE,OAAO,EAAE,CAAC;wBAEjF,IAAI,CAAC,EAAE,CAAC,WAAW;4BAAE,OAAO,EAAE,CAAC;wBAE/B,IAAI,IAAA,gBAAS,EAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;4BAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,WAAwB,CAAC;4BACxC,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gCAC3D,OAAO,IAAA,2BAAiB,EAAC,EAAE,EACvB,yDAAyD;oCACzD,mFAAmF,CAAC,CAAC;4BAC7F,CAAC;wBACL,CAAC;wBAED,OAAO,EAAE,CAAC;oBACd,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AAhCD,kEAgCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindMissingInjectable extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-missing-injectable";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-missing-injectable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-missing-injectable.d.ts","sourceRoot":"","sources":["../../src/search/find-missing-injectable.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAM9F,qBAAa,qBAAsB,SAAQ,MAAM;IAC7C,QAAQ,CAAC,IAAI,4DAA4D;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAmE;IAC/F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAE4F;IAElH,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAuD9D"}
|
|
@@ -0,0 +1,98 @@
|
|
|
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.FindMissingInjectable = 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 ANGULAR_DECORATORS = new Set(['Component', 'Directive', 'Pipe', 'Injectable', 'NgModule']);
|
|
22
|
+
class FindMissingInjectable extends rewrite_1.Recipe {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
this.name = "org.openrewrite.angular.search.find-missing-injectable";
|
|
26
|
+
this.displayName = "Find classes with DI dependencies but missing `@Injectable()`";
|
|
27
|
+
this.description = "Finds classes that have constructor parameters (suggesting dependency injection) " +
|
|
28
|
+
"but lack an `@Injectable()` or other Angular class-level decorator. " +
|
|
29
|
+
"Angular 9 with Ivy requires an explicit `@Injectable()` decorator for all services that use dependency injection.";
|
|
30
|
+
}
|
|
31
|
+
editor() {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
34
|
+
constructor() {
|
|
35
|
+
super(...arguments);
|
|
36
|
+
this.importsFromAngular = false;
|
|
37
|
+
}
|
|
38
|
+
visitImportDeclaration(jsImport, p) {
|
|
39
|
+
const _super = Object.create(null, {
|
|
40
|
+
visitImportDeclaration: { get: () => super.visitImportDeclaration }
|
|
41
|
+
});
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
const imp = yield _super.visitImportDeclaration.call(this, jsImport, p);
|
|
44
|
+
if (!(imp === null || imp === void 0 ? void 0 : imp.moduleSpecifier))
|
|
45
|
+
return imp;
|
|
46
|
+
const moduleSpec = imp.moduleSpecifier.element;
|
|
47
|
+
if (moduleSpec.kind === java_1.J.Kind.Literal) {
|
|
48
|
+
const moduleName = moduleSpec.value;
|
|
49
|
+
if (moduleName.startsWith('@angular/')) {
|
|
50
|
+
this.importsFromAngular = true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return imp;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
visitClassDeclaration(classDecl, p) {
|
|
57
|
+
const _super = Object.create(null, {
|
|
58
|
+
visitClassDeclaration: { get: () => super.visitClassDeclaration }
|
|
59
|
+
});
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
var _a;
|
|
62
|
+
const cd = yield _super.visitClassDeclaration.call(this, classDecl, p);
|
|
63
|
+
if (!cd)
|
|
64
|
+
return cd;
|
|
65
|
+
if (!this.importsFromAngular)
|
|
66
|
+
return cd;
|
|
67
|
+
const hasAngularDecorator = cd.leadingAnnotations.some(a => (0, java_1.isIdentifier)(a.annotationType) && ANGULAR_DECORATORS.has(a.annotationType.simpleName));
|
|
68
|
+
if (hasAngularDecorator)
|
|
69
|
+
return cd;
|
|
70
|
+
let hasConstructorParams = false;
|
|
71
|
+
for (const stmt of cd.body.statements) {
|
|
72
|
+
const el = stmt.element;
|
|
73
|
+
if (el.kind !== java_1.J.Kind.MethodDeclaration)
|
|
74
|
+
continue;
|
|
75
|
+
const method = el;
|
|
76
|
+
if (method.name.simpleName !== 'constructor')
|
|
77
|
+
continue;
|
|
78
|
+
const params = (_a = method.parameters) === null || _a === void 0 ? void 0 : _a.elements;
|
|
79
|
+
if (params && params.length > 0) {
|
|
80
|
+
const hasRealParams = params.some(rp => rp.element.kind !== java_1.J.Kind.Empty);
|
|
81
|
+
if (hasRealParams) {
|
|
82
|
+
hasConstructorParams = true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
if (!hasConstructorParams)
|
|
88
|
+
return cd;
|
|
89
|
+
return (0, rewrite_1.foundSearchResult)(cd, "Class has constructor dependencies but no `@Injectable()` decorator. " +
|
|
90
|
+
"Angular 9 with Ivy requires an explicit `@Injectable()` for dependency injection to work.");
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}();
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.FindMissingInjectable = FindMissingInjectable;
|
|
98
|
+
//# sourceMappingURL=find-missing-injectable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-missing-injectable.js","sourceRoot":"","sources":["../../src/search/find-missing-injectable.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA8F;AAC9F,gEAAsE;AACtE,oDAA0D;AAE1D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjG,MAAa,qBAAsB,SAAQ,gBAAM;IAAjD;;QACa,SAAI,GAAG,wDAAwD,CAAC;QAChE,gBAAW,GAAW,+DAA+D,CAAC;QACtF,gBAAW,GAAW,mFAAmF;YAC9G,sEAAsE;YACtE,mHAAmH,CAAC;IAyD5H,CAAC;IAvDS,MAAM;;YACR,OAAO,IAAI,KAAM,SAAQ,8BAAmC;gBAAjD;;oBACC,uBAAkB,GAAG,KAAK,CAAC;gBAmDvC,CAAC;gBAjDmB,sBAAsB,CAAC,QAAmB,EAAE,CAAmB;;;;;wBAC3E,MAAM,GAAG,GAAG,MAAM,OAAM,sBAAsB,YAAC,QAAQ,EAAE,CAAC,CAAc,CAAC;wBACzE,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,eAAe,CAAA;4BAAE,OAAO,GAAG,CAAC;wBAEtC,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC;wBAC/C,IAAI,UAAU,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;4BACrC,MAAM,UAAU,GAAI,UAAwB,CAAC,KAAe,CAAC;4BAC7D,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gCACrC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;4BACnC,CAAC;wBACL,CAAC;wBAED,OAAO,GAAG,CAAC;oBACf,CAAC;iBAAA;gBAEc,qBAAqB,CAAC,SAA6B,EAAE,CAAmB;;;;;;wBACnF,MAAM,EAAE,GAAG,MAAM,OAAM,qBAAqB,YAAC,SAAS,EAAE,CAAC,CAAuB,CAAC;wBACjF,IAAI,CAAC,EAAE;4BAAE,OAAO,EAAE,CAAC;wBAEnB,IAAI,CAAC,IAAI,CAAC,kBAAkB;4BAAE,OAAO,EAAE,CAAC;wBAExC,MAAM,mBAAmB,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACvD,IAAA,mBAAY,EAAC,CAAC,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CACxF,CAAC;wBACF,IAAI,mBAAmB;4BAAE,OAAO,EAAE,CAAC;wBAEnC,IAAI,oBAAoB,GAAG,KAAK,CAAC;wBACjC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;4BACpC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;4BACxB,IAAI,EAAE,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,iBAAiB;gCAAE,SAAS;4BACnD,MAAM,MAAM,GAAG,EAAyB,CAAC;4BACzC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,aAAa;gCAAE,SAAS;4BAEvD,MAAM,MAAM,GAAG,MAAA,MAAM,CAAC,UAAU,0CAAE,QAAQ,CAAC;4BAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC9B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gCAC1E,IAAI,aAAa,EAAE,CAAC;oCAChB,oBAAoB,GAAG,IAAI,CAAC;gCAChC,CAAC;4BACL,CAAC;4BACD,MAAM;wBACV,CAAC;wBAED,IAAI,CAAC,oBAAoB;4BAAE,OAAO,EAAE,CAAC;wBAErC,OAAO,IAAA,2BAAiB,EAAC,EAAE,EACvB,uEAAuE;4BACvE,2FAA2F,CAAC,CAAC;oBACrG,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AA9DD,sDA8DC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindNgClassUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-ng-class-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-ng-class-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-ng-class-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-ng-class-usage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAI9F,qBAAa,gBAAiB,SAAQ,MAAM;IACxC,QAAQ,CAAC,IAAI,wDAAwD;IACrE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA0B;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAC4E;IAElG,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA4B9D"}
|