@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,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindBareModuleWithProviders extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-bare-module-with-providers";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-bare-module-with-providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-bare-module-with-providers.d.ts","sourceRoot":"","sources":["../../src/search/find-bare-module-with-providers.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,CAAqD;IACjF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAE6D;IAEnF,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA6B9D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2026 the original author or authors.
|
|
4
|
+
*
|
|
5
|
+
* Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.FindBareModuleWithProviders = 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 FindBareModuleWithProviders extends rewrite_1.Recipe {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments);
|
|
24
|
+
this.name = "org.openrewrite.angular.search.find-bare-module-with-providers";
|
|
25
|
+
this.displayName = "Find `ModuleWithProviders` without generic type";
|
|
26
|
+
this.description = "Finds imports of `ModuleWithProviders` from `@angular/core`. " +
|
|
27
|
+
"Starting in Angular 10, `ModuleWithProviders` requires a generic type parameter " +
|
|
28
|
+
"(e.g. `ModuleWithProviders<MyModule>`). Ensure all usages specify the module type.";
|
|
29
|
+
}
|
|
30
|
+
editor() {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
33
|
+
visitImportDeclaration(jsImport, p) {
|
|
34
|
+
const _super = Object.create(null, {
|
|
35
|
+
visitImportDeclaration: { get: () => super.visitImportDeclaration }
|
|
36
|
+
});
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
var _a;
|
|
39
|
+
const imp = yield _super.visitImportDeclaration.call(this, jsImport, p);
|
|
40
|
+
if (!imp.moduleSpecifier)
|
|
41
|
+
return imp;
|
|
42
|
+
const moduleSpec = imp.moduleSpecifier.element;
|
|
43
|
+
if (moduleSpec.kind !== java_1.J.Kind.Literal)
|
|
44
|
+
return imp;
|
|
45
|
+
const moduleName = moduleSpec.value;
|
|
46
|
+
if (moduleName !== '@angular/core')
|
|
47
|
+
return imp;
|
|
48
|
+
const namedBindings = (_a = imp.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings;
|
|
49
|
+
if ((namedBindings === null || namedBindings === void 0 ? void 0 : namedBindings.kind) === javascript_1.JS.Kind.NamedImports) {
|
|
50
|
+
const named = namedBindings;
|
|
51
|
+
for (const specifier of named.elements.elements) {
|
|
52
|
+
const spec = specifier.element;
|
|
53
|
+
if ((0, java_1.isIdentifier)(spec.specifier) && spec.specifier.simpleName === 'ModuleWithProviders') {
|
|
54
|
+
return (0, rewrite_1.foundSearchResult)(imp, "`ModuleWithProviders` requires a generic type parameter since Angular 10. " +
|
|
55
|
+
"Ensure all usages specify the module type: `ModuleWithProviders<MyModule>`.");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return imp;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.FindBareModuleWithProviders = FindBareModuleWithProviders;
|
|
67
|
+
//# sourceMappingURL=find-bare-module-with-providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-bare-module-with-providers.js","sourceRoot":"","sources":["../../src/search/find-bare-module-with-providers.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA8F;AAC9F,gEAAsE;AACtE,oDAA0D;AAE1D,MAAa,2BAA4B,SAAQ,gBAAM;IAAvD;;QACa,SAAI,GAAG,gEAAgE,CAAC;QACxE,gBAAW,GAAW,iDAAiD,CAAC;QACxE,gBAAW,GAAW,+DAA+D;YAC1F,kFAAkF;YAClF,oFAAoF,CAAC;IA+B7F,CAAC;IA7BS,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,eAAe;4BAAE,OAAO,GAAG,CAAC;wBAE/C,MAAM,aAAa,GAAG,MAAA,GAAG,CAAC,YAAY,0CAAE,aAAa,CAAC;wBACtD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,MAAK,eAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;4BAC/C,MAAM,KAAK,GAAG,aAAgC,CAAC;4BAC/C,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gCAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,OAA6B,CAAC;gCACrD,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,KAAK,qBAAqB,EAAE,CAAC;oCACtF,OAAO,IAAA,2BAAiB,EAAC,GAAG,EACxB,4EAA4E;wCAC5E,6EAA6E,CAAC,CAAC;gCACvF,CAAC;4BACL,CAAC;wBACL,CAAC;wBAED,OAAO,GAAG,CAAC;oBACf,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AApCD,kEAoCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindBrowserTransferStateModuleUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-browser-transfer-state-module-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-browser-transfer-state-module-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-browser-transfer-state-module-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-browser-transfer-state-module-usage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAI9F,qBAAa,mCAAoC,SAAQ,MAAM;IAC3D,QAAQ,CAAC,IAAI,6EAA6E;IAC1F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA6C;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CACqE;IAE3F,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA4B9D"}
|
|
@@ -0,0 +1,65 @@
|
|
|
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.FindBrowserTransferStateModuleUsage = 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 FindBrowserTransferStateModuleUsage extends rewrite_1.Recipe {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments);
|
|
24
|
+
this.name = "org.openrewrite.angular.search.find-browser-transfer-state-module-usage";
|
|
25
|
+
this.displayName = "Find `BrowserTransferStateModule` usage";
|
|
26
|
+
this.description = "Finds usages of `BrowserTransferStateModule` from `@angular/platform-browser` " +
|
|
27
|
+
"which was removed in Angular 16. `TransferState` can be used directly without this module.";
|
|
28
|
+
}
|
|
29
|
+
editor() {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
32
|
+
visitImportDeclaration(jsImport, p) {
|
|
33
|
+
const _super = Object.create(null, {
|
|
34
|
+
visitImportDeclaration: { get: () => super.visitImportDeclaration }
|
|
35
|
+
});
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
var _a;
|
|
38
|
+
const imp = yield _super.visitImportDeclaration.call(this, jsImport, p);
|
|
39
|
+
if (!imp.moduleSpecifier)
|
|
40
|
+
return imp;
|
|
41
|
+
const moduleSpec = imp.moduleSpecifier.element;
|
|
42
|
+
if (moduleSpec.kind !== java_1.J.Kind.Literal)
|
|
43
|
+
return imp;
|
|
44
|
+
const moduleName = moduleSpec.value;
|
|
45
|
+
if (moduleName !== '@angular/platform-browser')
|
|
46
|
+
return imp;
|
|
47
|
+
const namedBindings = (_a = imp.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings;
|
|
48
|
+
if ((namedBindings === null || namedBindings === void 0 ? void 0 : namedBindings.kind) === javascript_1.JS.Kind.NamedImports) {
|
|
49
|
+
const named = namedBindings;
|
|
50
|
+
for (const specifier of named.elements.elements) {
|
|
51
|
+
const spec = specifier.element;
|
|
52
|
+
if ((0, java_1.isIdentifier)(spec.specifier) && spec.specifier.simpleName === 'BrowserTransferStateModule') {
|
|
53
|
+
return (0, rewrite_1.foundSearchResult)(imp, "BrowserTransferStateModule has been removed in Angular 16. TransferState can be used directly without this module.");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return imp;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.FindBrowserTransferStateModuleUsage = FindBrowserTransferStateModuleUsage;
|
|
65
|
+
//# sourceMappingURL=find-browser-transfer-state-module-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-browser-transfer-state-module-usage.js","sourceRoot":"","sources":["../../src/search/find-browser-transfer-state-module-usage.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA8F;AAC9F,gEAAsE;AACtE,oDAA0D;AAE1D,MAAa,mCAAoC,SAAQ,gBAAM;IAA/D;;QACa,SAAI,GAAG,yEAAyE,CAAC;QACjF,gBAAW,GAAW,yCAAyC,CAAC;QAChE,gBAAW,GAAW,gFAAgF;YAC3G,4FAA4F,CAAC;IA8BrG,CAAC;IA5BS,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,2BAA2B;4BAAE,OAAO,GAAG,CAAC;wBAE3D,MAAM,aAAa,GAAG,MAAA,GAAG,CAAC,YAAY,0CAAE,aAAa,CAAC;wBACtD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,MAAK,eAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;4BAC/C,MAAM,KAAK,GAAG,aAAgC,CAAC;4BAC/C,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gCAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,OAA6B,CAAC;gCACrD,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,KAAK,4BAA4B,EAAE,CAAC;oCAC7F,OAAO,IAAA,2BAAiB,EAAC,GAAG,EACxB,oHAAoH,CAAC,CAAC;gCAC9H,CAAC;4BACL,CAAC;wBACL,CAAC;wBAED,OAAO,GAAG,CAAC;oBACf,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AAlCD,kFAkCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindCommonModuleUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-common-module-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-common-module-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-common-module-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-common-module-usage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAI9F,qBAAa,qBAAsB,SAAQ,MAAM;IAC7C,QAAQ,CAAC,IAAI,6DAA6D;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA+B;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAEoE;IAE1F,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA6B9D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2026 the original author or authors.
|
|
4
|
+
*
|
|
5
|
+
* Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.FindCommonModuleUsage = 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 FindCommonModuleUsage extends rewrite_1.Recipe {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments);
|
|
24
|
+
this.name = "org.openrewrite.angular.search.find-common-module-usage";
|
|
25
|
+
this.displayName = "Find `CommonModule` usage";
|
|
26
|
+
this.description = "Finds imports of `CommonModule` from `@angular/common`. " +
|
|
27
|
+
"Since Angular 19, standalone components are the default and `CommonModule` is no longer needed " +
|
|
28
|
+
"in component `imports` arrays. Built-in directives and pipes are available automatically.";
|
|
29
|
+
}
|
|
30
|
+
editor() {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
33
|
+
visitImportDeclaration(jsImport, p) {
|
|
34
|
+
const _super = Object.create(null, {
|
|
35
|
+
visitImportDeclaration: { get: () => super.visitImportDeclaration }
|
|
36
|
+
});
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
var _a;
|
|
39
|
+
const imp = yield _super.visitImportDeclaration.call(this, jsImport, p);
|
|
40
|
+
if (!imp.moduleSpecifier)
|
|
41
|
+
return imp;
|
|
42
|
+
const moduleSpec = imp.moduleSpecifier.element;
|
|
43
|
+
if (moduleSpec.kind !== java_1.J.Kind.Literal)
|
|
44
|
+
return imp;
|
|
45
|
+
const moduleName = moduleSpec.value;
|
|
46
|
+
if (moduleName !== '@angular/common')
|
|
47
|
+
return imp;
|
|
48
|
+
const namedBindings = (_a = imp.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings;
|
|
49
|
+
if ((namedBindings === null || namedBindings === void 0 ? void 0 : namedBindings.kind) === javascript_1.JS.Kind.NamedImports) {
|
|
50
|
+
const named = namedBindings;
|
|
51
|
+
for (const specifier of named.elements.elements) {
|
|
52
|
+
const spec = specifier.element;
|
|
53
|
+
if ((0, java_1.isIdentifier)(spec.specifier) && spec.specifier.simpleName === 'CommonModule') {
|
|
54
|
+
return (0, rewrite_1.foundSearchResult)(imp, "CommonModule is unnecessary in standalone components (default since Angular 19). " +
|
|
55
|
+
"Built-in directives and pipes are available automatically. See https://angular.dev/guide/components/importing");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return imp;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.FindCommonModuleUsage = FindCommonModuleUsage;
|
|
67
|
+
//# sourceMappingURL=find-common-module-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-common-module-usage.js","sourceRoot":"","sources":["../../src/search/find-common-module-usage.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA8F;AAC9F,gEAAsE;AACtE,oDAA0D;AAE1D,MAAa,qBAAsB,SAAQ,gBAAM;IAAjD;;QACa,SAAI,GAAG,yDAAyD,CAAC;QACjE,gBAAW,GAAW,2BAA2B,CAAC;QAClD,gBAAW,GAAW,0DAA0D;YACrF,iGAAiG;YACjG,2FAA2F,CAAC;IA+BpG,CAAC;IA7BS,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,iBAAiB;4BAAE,OAAO,GAAG,CAAC;wBAEjD,MAAM,aAAa,GAAG,MAAA,GAAG,CAAC,YAAY,0CAAE,aAAa,CAAC;wBACtD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,MAAK,eAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;4BAC/C,MAAM,KAAK,GAAG,aAAgC,CAAC;4BAC/C,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gCAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,OAA6B,CAAC;gCACrD,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;oCAC/E,OAAO,IAAA,2BAAiB,EAAC,GAAG,EACxB,mFAAmF;wCACnF,+GAA+G,CAAC,CAAC;gCACzH,CAAC;4BACL,CAAC;wBACL,CAAC;wBAED,OAAO,GAAG,CAAC;oBACf,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AApCD,sDAoCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindCompilerFactoryUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-compiler-factory-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-compiler-factory-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-compiler-factory-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-compiler-factory-usage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAS9F,qBAAa,wBAAyB,SAAQ,MAAM;IAChD,QAAQ,CAAC,IAAI,gEAAgE;IAC7E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAgC;IAC5D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAE2D;IAEjF,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA4B9D"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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.FindCompilerFactoryUsage = 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 DEPRECATED_SYMBOLS = [
|
|
22
|
+
'CompilerFactory', 'Compiler', 'CompilerOptions',
|
|
23
|
+
'ModuleWithComponentFactories', 'NgModuleFactory', 'NgModuleFactoryLoader'
|
|
24
|
+
];
|
|
25
|
+
class FindCompilerFactoryUsage extends rewrite_1.Recipe {
|
|
26
|
+
constructor() {
|
|
27
|
+
super(...arguments);
|
|
28
|
+
this.name = "org.openrewrite.angular.search.find-compiler-factory-usage";
|
|
29
|
+
this.displayName = "Find View Engine API usage";
|
|
30
|
+
this.description = "Finds usages of View Engine APIs from `@angular/core` " +
|
|
31
|
+
"(`CompilerFactory`, `Compiler`, `CompilerOptions`, `ModuleWithComponentFactories`, " +
|
|
32
|
+
"`NgModuleFactory`, `NgModuleFactoryLoader`) which were deprecated in Angular 13.";
|
|
33
|
+
}
|
|
34
|
+
editor() {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
37
|
+
visitImportDeclaration(jsImport, p) {
|
|
38
|
+
const _super = Object.create(null, {
|
|
39
|
+
visitImportDeclaration: { get: () => super.visitImportDeclaration }
|
|
40
|
+
});
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
var _a;
|
|
43
|
+
const imp = yield _super.visitImportDeclaration.call(this, jsImport, p);
|
|
44
|
+
if (!imp.moduleSpecifier)
|
|
45
|
+
return imp;
|
|
46
|
+
const moduleSpec = imp.moduleSpecifier.element;
|
|
47
|
+
if (moduleSpec.kind !== java_1.J.Kind.Literal)
|
|
48
|
+
return imp;
|
|
49
|
+
const moduleName = moduleSpec.value;
|
|
50
|
+
if (moduleName !== '@angular/core')
|
|
51
|
+
return imp;
|
|
52
|
+
const namedBindings = (_a = imp.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings;
|
|
53
|
+
if ((namedBindings === null || namedBindings === void 0 ? void 0 : namedBindings.kind) === javascript_1.JS.Kind.NamedImports) {
|
|
54
|
+
const named = namedBindings;
|
|
55
|
+
for (const specifier of named.elements.elements) {
|
|
56
|
+
const spec = specifier.element;
|
|
57
|
+
if ((0, java_1.isIdentifier)(spec.specifier) && DEPRECATED_SYMBOLS.includes(spec.specifier.simpleName)) {
|
|
58
|
+
return (0, rewrite_1.foundSearchResult)(imp, `${spec.specifier.simpleName} was deprecated in Angular 13 with the removal of the View Engine rendering pipeline.`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return imp;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.FindCompilerFactoryUsage = FindCompilerFactoryUsage;
|
|
70
|
+
//# sourceMappingURL=find-compiler-factory-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-compiler-factory-usage.js","sourceRoot":"","sources":["../../src/search/find-compiler-factory-usage.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA8F;AAC9F,gEAAsE;AACtE,oDAA0D;AAE1D,MAAM,kBAAkB,GAAG;IACvB,iBAAiB,EAAE,UAAU,EAAE,iBAAiB;IAChD,8BAA8B,EAAE,iBAAiB,EAAE,uBAAuB;CAC7E,CAAC;AAEF,MAAa,wBAAyB,SAAQ,gBAAM;IAApD;;QACa,SAAI,GAAG,4DAA4D,CAAC;QACpE,gBAAW,GAAW,4BAA4B,CAAC;QACnD,gBAAW,GAAW,wDAAwD;YACnF,qFAAqF;YACrF,kFAAkF,CAAC;IA8B3F,CAAC;IA5BS,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,eAAe;4BAAE,OAAO,GAAG,CAAC;wBAE/C,MAAM,aAAa,GAAG,MAAA,GAAG,CAAC,YAAY,0CAAE,aAAa,CAAC;wBACtD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,MAAK,eAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;4BAC/C,MAAM,KAAK,GAAG,aAAgC,CAAC;4BAC/C,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gCAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,OAA6B,CAAC;gCACrD,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;oCACzF,OAAO,IAAA,2BAAiB,EAAC,GAAG,EACxB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,uFAAuF,CAAC,CAAC;gCAC7H,CAAC;4BACL,CAAC;wBACL,CAAC;wBAED,OAAO,GAAG,CAAC;oBACf,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AAnCD,4DAmCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindDatePipeDefaultTimezoneUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-date-pipe-default-timezone-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-date-pipe-default-timezone-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-date-pipe-default-timezone-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-date-pipe-default-timezone-usage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAI9F,qBAAa,gCAAiC,SAAQ,MAAM;IACxD,QAAQ,CAAC,IAAI,0EAA0E;IACvF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA6C;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAC2D;IAEjF,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA6B9D"}
|
|
@@ -0,0 +1,66 @@
|
|
|
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.FindDatePipeDefaultTimezoneUsage = 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 FindDatePipeDefaultTimezoneUsage extends rewrite_1.Recipe {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments);
|
|
24
|
+
this.name = "org.openrewrite.angular.search.find-date-pipe-default-timezone-usage";
|
|
25
|
+
this.displayName = "Find `DATE_PIPE_DEFAULT_TIMEZONE` usage";
|
|
26
|
+
this.description = "Finds usages of `DATE_PIPE_DEFAULT_TIMEZONE` which was deprecated in Angular 15. " +
|
|
27
|
+
"Use `DATE_PIPE_DEFAULT_OPTIONS` with a `{timezone: '...'}` object value instead.";
|
|
28
|
+
}
|
|
29
|
+
editor() {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
32
|
+
visitImportDeclaration(jsImport, p) {
|
|
33
|
+
const _super = Object.create(null, {
|
|
34
|
+
visitImportDeclaration: { get: () => super.visitImportDeclaration }
|
|
35
|
+
});
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
var _a;
|
|
38
|
+
const imp = yield _super.visitImportDeclaration.call(this, jsImport, p);
|
|
39
|
+
if (!imp.moduleSpecifier)
|
|
40
|
+
return imp;
|
|
41
|
+
const moduleSpec = imp.moduleSpecifier.element;
|
|
42
|
+
if (moduleSpec.kind !== java_1.J.Kind.Literal)
|
|
43
|
+
return imp;
|
|
44
|
+
const moduleName = moduleSpec.value;
|
|
45
|
+
if (moduleName !== '@angular/common')
|
|
46
|
+
return imp;
|
|
47
|
+
const namedBindings = (_a = imp.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings;
|
|
48
|
+
if ((namedBindings === null || namedBindings === void 0 ? void 0 : namedBindings.kind) === javascript_1.JS.Kind.NamedImports) {
|
|
49
|
+
const named = namedBindings;
|
|
50
|
+
for (const specifier of named.elements.elements) {
|
|
51
|
+
const spec = specifier.element;
|
|
52
|
+
if ((0, java_1.isIdentifier)(spec.specifier) && spec.specifier.simpleName === 'DATE_PIPE_DEFAULT_TIMEZONE') {
|
|
53
|
+
return (0, rewrite_1.foundSearchResult)(imp, "DATE_PIPE_DEFAULT_TIMEZONE has been deprecated in Angular 15. " +
|
|
54
|
+
"Use DATE_PIPE_DEFAULT_OPTIONS with a {timezone: '...'} object value instead.");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return imp;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.FindDatePipeDefaultTimezoneUsage = FindDatePipeDefaultTimezoneUsage;
|
|
66
|
+
//# sourceMappingURL=find-date-pipe-default-timezone-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-date-pipe-default-timezone-usage.js","sourceRoot":"","sources":["../../src/search/find-date-pipe-default-timezone-usage.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAA8F;AAC9F,gEAAsE;AACtE,oDAA0D;AAE1D,MAAa,gCAAiC,SAAQ,gBAAM;IAA5D;;QACa,SAAI,GAAG,sEAAsE,CAAC;QAC9E,gBAAW,GAAW,yCAAyC,CAAC;QAChE,gBAAW,GAAW,mFAAmF;YAC9G,kFAAkF,CAAC;IA+B3F,CAAC;IA7BS,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,iBAAiB;4BAAE,OAAO,GAAG,CAAC;wBAEjD,MAAM,aAAa,GAAG,MAAA,GAAG,CAAC,YAAY,0CAAE,aAAa,CAAC;wBACtD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,MAAK,eAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;4BAC/C,MAAM,KAAK,GAAG,aAAgC,CAAC;4BAC/C,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gCAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,OAA6B,CAAC;gCACrD,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,KAAK,4BAA4B,EAAE,CAAC;oCAC7F,OAAO,IAAA,2BAAiB,EAAC,GAAG,EACxB,gEAAgE;wCAChE,8EAA8E,CAAC,CAAC;gCACxF,CAAC;4BACL,CAAC;wBACL,CAAC;wBAED,OAAO,GAAG,CAAC;oBACf,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AAnCD,4EAmCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindEffectTimingUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-effect-timing-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-effect-timing-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-effect-timing-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-effect-timing-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAI9F,qBAAa,qBAAsB,SAAQ,MAAM;IAC7C,QAAQ,CAAC,IAAI,6DAA6D;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAiE;IAC7F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAmR;IAEzS,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAkB9D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
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.FindEffectTimingUsage = 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 FindEffectTimingUsage extends rewrite_1.Recipe {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.name = "org.openrewrite.angular.search.find-effect-timing-usage";
|
|
20
|
+
this.displayName = "Find `effect()` usage affected by Angular 19 timing changes";
|
|
21
|
+
this.description = "Finds `effect()` calls from `@angular/core`. In Angular 19, effects triggered outside change detection now run as part of the change detection process instead of as a microtask, and effects triggered during change detection run earlier, before the component's template.";
|
|
22
|
+
}
|
|
23
|
+
editor() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
26
|
+
visitMethodInvocation(method, p) {
|
|
27
|
+
const _super = Object.create(null, {
|
|
28
|
+
visitMethodInvocation: { get: () => super.visitMethodInvocation }
|
|
29
|
+
});
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
var _a;
|
|
32
|
+
const m = yield _super.visitMethodInvocation.call(this, method, p);
|
|
33
|
+
if (m.name.simpleName === 'effect') {
|
|
34
|
+
const methodType = m.methodType;
|
|
35
|
+
if (((_a = methodType === null || methodType === void 0 ? void 0 : methodType.declaringType) === null || _a === void 0 ? void 0 : _a.kind) === java_1.Type.Kind.Class
|
|
36
|
+
&& methodType.declaringType.fullyQualifiedName === '@angular/core') {
|
|
37
|
+
return (0, rewrite_1.foundSearchResult)(m, "effect() timing changed in v19. See https://angular.dev/api/core/effect");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return m;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.FindEffectTimingUsage = FindEffectTimingUsage;
|
|
48
|
+
//# sourceMappingURL=find-effect-timing-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-effect-timing-usage.js","sourceRoot":"","sources":["../../src/search/find-effect-timing-usage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAA8F;AAC9F,gEAAkE;AAClE,oDAAkD;AAElD,MAAa,qBAAsB,SAAQ,gBAAM;IAAjD;;QACa,SAAI,GAAG,yDAAyD,CAAC;QACjE,gBAAW,GAAW,6DAA6D,CAAC;QACpF,gBAAW,GAAW,+QAA+Q,CAAC;IAoBnT,CAAC;IAlBS,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,QAAQ,EAAE,CAAC;4BACjC,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,eAAe,EAAE,CAAC;gCACrF,OAAO,IAAA,2BAAiB,EAAC,CAAC,EACtB,yEAAyE,CAAC,CAAC;4BACnF,CAAC;wBACL,CAAC;wBAED,OAAO,CAAC,CAAC;oBACb,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AAvBD,sDAuBC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindEmptyProjectableNodes extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-empty-projectable-nodes";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-empty-projectable-nodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-empty-projectable-nodes.d.ts","sourceRoot":"","sources":["../../src/search/find-empty-projectable-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAI9F,qBAAa,yBAA0B,SAAQ,MAAM;IACjD,QAAQ,CAAC,IAAI,iEAAiE;IAC9E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAgE;IAC5F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA4P;IAElR,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAuC9D"}
|
|
@@ -0,0 +1,88 @@
|
|
|
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.FindEmptyProjectableNodes = 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 FindEmptyProjectableNodes extends rewrite_1.Recipe {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.name = "org.openrewrite.angular.search.find-empty-projectable-nodes";
|
|
20
|
+
this.displayName = "Find `createComponent` calls with empty `projectableNodes`";
|
|
21
|
+
this.description = "Finds `createComponent()` calls that pass empty arrays in `projectableNodes`. In Angular 19, passing an empty array now renders the default `ng-content` fallback content. To suppress fallback content, pass `[document.createTextNode('')]` instead.";
|
|
22
|
+
}
|
|
23
|
+
editor() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
26
|
+
visitMethodInvocation(method, p) {
|
|
27
|
+
const _super = Object.create(null, {
|
|
28
|
+
visitMethodInvocation: { get: () => super.visitMethodInvocation }
|
|
29
|
+
});
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
const m = yield _super.visitMethodInvocation.call(this, method, p);
|
|
33
|
+
if (m.name.simpleName !== 'createComponent')
|
|
34
|
+
return m;
|
|
35
|
+
const methodType = m.methodType;
|
|
36
|
+
if (((_a = methodType === null || methodType === void 0 ? void 0 : methodType.declaringType) === null || _a === void 0 ? void 0 : _a.kind) !== java_1.Type.Kind.Class
|
|
37
|
+
|| methodType.declaringType.fullyQualifiedName !== '@angular/core') {
|
|
38
|
+
return m;
|
|
39
|
+
}
|
|
40
|
+
const args = (_b = m.arguments) === null || _b === void 0 ? void 0 : _b.elements;
|
|
41
|
+
if (!args || args.length < 2)
|
|
42
|
+
return m;
|
|
43
|
+
// The second argument is the options object { projectableNodes: [...] }
|
|
44
|
+
const optionsArg = args[1].element;
|
|
45
|
+
if (optionsArg.kind !== java_1.J.Kind.NewClass)
|
|
46
|
+
return m;
|
|
47
|
+
const optionsObj = optionsArg;
|
|
48
|
+
if (!optionsObj.body)
|
|
49
|
+
return m;
|
|
50
|
+
for (const stmt of optionsObj.body.statements) {
|
|
51
|
+
if (stmt.element.kind !== javascript_1.JS.Kind.PropertyAssignment)
|
|
52
|
+
continue;
|
|
53
|
+
const prop = stmt.element;
|
|
54
|
+
const nameExpr = prop.name.element;
|
|
55
|
+
if (!(0, java_1.isIdentifier)(nameExpr) || nameExpr.simpleName !== 'projectableNodes')
|
|
56
|
+
continue;
|
|
57
|
+
if (prop.initializer && hasEmptyArrayElement(prop.initializer)) {
|
|
58
|
+
return (0, rewrite_1.foundSearchResult)(m, "Empty projectableNodes now render ng-content fallback in v19. See https://angular.dev/api/core/createComponent");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return m;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.FindEmptyProjectableNodes = FindEmptyProjectableNodes;
|
|
69
|
+
function hasEmptyArrayElement(node) {
|
|
70
|
+
var _a, _b;
|
|
71
|
+
// projectableNodes: [[], [node]] — look for [] elements in the outer array
|
|
72
|
+
const elements = (_a = node.initializer) === null || _a === void 0 ? void 0 : _a.elements;
|
|
73
|
+
if (!elements)
|
|
74
|
+
return false;
|
|
75
|
+
for (const rp of elements) {
|
|
76
|
+
const elem = rp.element;
|
|
77
|
+
// Empty array: J$NewArray whose only element is J$Empty
|
|
78
|
+
if (elem.kind === java_1.J.Kind.NewArray) {
|
|
79
|
+
const innerElements = (_b = elem.initializer) === null || _b === void 0 ? void 0 : _b.elements;
|
|
80
|
+
if (innerElements && innerElements.length === 1
|
|
81
|
+
&& innerElements[0].element.kind === java_1.J.Kind.Empty) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=find-empty-projectable-nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-empty-projectable-nodes.js","sourceRoot":"","sources":["../../src/search/find-empty-projectable-nodes.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAA8F;AAC9F,gEAAsE;AACtE,oDAAgE;AAEhE,MAAa,yBAA0B,SAAQ,gBAAM;IAArD;;QACa,SAAI,GAAG,6DAA6D,CAAC;QACrE,gBAAW,GAAW,4DAA4D,CAAC;QACnF,gBAAW,GAAW,wPAAwP,CAAC;IAyC5R,CAAC;IAvCS,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,iBAAiB;4BAAE,OAAO,CAAC,CAAC;wBAEtD,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;wBAChC,IAAI,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,0CAAE,IAAI,MAAK,WAAI,CAAC,IAAI,CAAC,KAAK;+BAC/C,UAAU,CAAC,aAA4B,CAAC,kBAAkB,KAAK,eAAe,EAAE,CAAC;4BACrF,OAAO,CAAC,CAAC;wBACb,CAAC;wBAED,MAAM,IAAI,GAAG,MAAA,CAAC,CAAC,SAAS,0CAAE,QAAQ,CAAC;wBACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;4BAAE,OAAO,CAAC,CAAC;wBAEvC,wEAAwE;wBACxE,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;wBACnC,IAAI,UAAU,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,QAAQ;4BAAE,OAAO,CAAC,CAAC;wBAElD,MAAM,UAAU,GAAG,UAAwB,CAAC;wBAC5C,IAAI,CAAC,UAAU,CAAC,IAAI;4BAAE,OAAO,CAAC,CAAC;wBAE/B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;4BAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,eAAE,CAAC,IAAI,CAAC,kBAAkB;gCAAE,SAAS;4BAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAgC,CAAC;4BACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;4BACnC,IAAI,CAAC,IAAA,mBAAY,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,UAAU,KAAK,kBAAkB;gCAAE,SAAS;4BAEpF,IAAI,IAAI,CAAC,WAAW,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gCAC7D,OAAO,IAAA,2BAAiB,EAAC,CAAC,EACtB,gHAAgH,CAAC,CAAC;4BAC1H,CAAC;wBACL,CAAC;wBAED,OAAO,CAAC,CAAC;oBACb,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AA5CD,8DA4CC;AAED,SAAS,oBAAoB,CAAC,IAAS;;IACnC,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,WAAW,0CAAE,QAAQ,CAAC;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;QACxB,wDAAwD;QACxD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,WAAW,0CAAE,QAAQ,CAAC;YACjD,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;mBACxC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACpD,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class FindFakeAsyncUsage extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.angular.search.find-fake-async-usage";
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=find-fake-async-usage.d.ts.map
|