@angular/core 14.0.0-next.0 → 14.0.0-next.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/core.d.ts +202 -132
  2. package/esm2020/src/application_init.mjs +4 -3
  3. package/esm2020/src/application_module.mjs +5 -104
  4. package/esm2020/src/application_ref.mjs +6 -24
  5. package/esm2020/src/application_tokens.mjs +14 -2
  6. package/esm2020/src/change_detection/change_detection.mjs +2 -3
  7. package/esm2020/src/compiler/compiler_facade_interface.mjs +1 -1
  8. package/esm2020/src/core.mjs +2 -2
  9. package/esm2020/src/core_private_export.mjs +2 -1
  10. package/esm2020/src/core_render3_private_export.mjs +4 -3
  11. package/esm2020/src/debug/debug_node.mjs +137 -53
  12. package/esm2020/src/di/injector_compatibility.mjs +2 -2
  13. package/esm2020/src/di/r3_injector.mjs +5 -15
  14. package/esm2020/src/di/reflective_injector.mjs +1 -1
  15. package/esm2020/src/di/reflective_provider.mjs +4 -4
  16. package/esm2020/src/errors.mjs +22 -5
  17. package/esm2020/src/i18n/tokens.mjs +39 -3
  18. package/esm2020/src/linker/compiler.mjs +4 -3
  19. package/esm2020/src/linker/ng_module_factory_loader.mjs +2 -2
  20. package/esm2020/src/linker/ng_module_registration.mjs +55 -0
  21. package/esm2020/src/linker/template_ref.mjs +3 -3
  22. package/esm2020/src/linker/view_container_ref.mjs +35 -8
  23. package/esm2020/src/metadata/directives.mjs +14 -5
  24. package/esm2020/src/reflection/platform_reflection_capabilities.mjs +1 -1
  25. package/esm2020/src/reflection/reflection_capabilities.mjs +1 -37
  26. package/esm2020/src/render3/component.mjs +3 -3
  27. package/esm2020/src/render3/component_ref.mjs +22 -26
  28. package/esm2020/src/render3/context_discovery.mjs +34 -30
  29. package/esm2020/src/render3/definition.mjs +3 -1
  30. package/esm2020/src/render3/di.mjs +177 -97
  31. package/esm2020/src/render3/hooks.mjs +3 -3
  32. package/esm2020/src/render3/i18n/i18n_parse.mjs +3 -3
  33. package/esm2020/src/render3/index.mjs +2 -2
  34. package/esm2020/src/render3/instructions/element.mjs +28 -7
  35. package/esm2020/src/render3/instructions/element_container.mjs +7 -1
  36. package/esm2020/src/render3/instructions/lview_debug.mjs +7 -4
  37. package/esm2020/src/render3/instructions/shared.mjs +26 -12
  38. package/esm2020/src/render3/interfaces/context.mjs +35 -2
  39. package/esm2020/src/render3/interfaces/definition.mjs +1 -1
  40. package/esm2020/src/render3/interfaces/injector.mjs +1 -1
  41. package/esm2020/src/render3/interfaces/lview_tracking.mjs +33 -0
  42. package/esm2020/src/render3/interfaces/renderer_dom.mjs +1 -1
  43. package/esm2020/src/render3/interfaces/view.mjs +4 -2
  44. package/esm2020/src/render3/jit/directive.mjs +5 -2
  45. package/esm2020/src/render3/jit/environment.mjs +4 -1
  46. package/esm2020/src/render3/jit/module.mjs +7 -1
  47. package/esm2020/src/render3/jit/module_patch.mjs +11 -0
  48. package/esm2020/src/render3/jit/pipe.mjs +5 -2
  49. package/esm2020/src/render3/ng_module_ref.mjs +1 -29
  50. package/esm2020/src/render3/node_manipulation.mjs +12 -3
  51. package/esm2020/src/render3/state.mjs +16 -2
  52. package/esm2020/src/render3/styling/styling_parser.mjs +2 -2
  53. package/esm2020/src/render3/util/discovery_utils.mjs +33 -22
  54. package/esm2020/src/util/coercion.mjs +12 -0
  55. package/esm2020/src/version.mjs +1 -1
  56. package/esm2020/testing/src/fake_async.mjs +3 -2
  57. package/esm2020/testing/src/logger.mjs +3 -3
  58. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  59. package/esm2020/testing/src/r3_test_bed.mjs +13 -2
  60. package/fesm2015/core.mjs +798 -604
  61. package/fesm2015/core.mjs.map +1 -1
  62. package/fesm2015/testing.mjs +15 -3
  63. package/fesm2015/testing.mjs.map +1 -1
  64. package/fesm2020/core.mjs +798 -597
  65. package/fesm2020/core.mjs.map +1 -1
  66. package/fesm2020/testing.mjs +15 -3
  67. package/fesm2020/testing.mjs.map +1 -1
  68. package/package.json +2 -2
  69. package/schematics/migrations/entry-components/util.js +2 -2
  70. package/schematics/migrations/{router-link-empty-expression → path-match-type}/index.d.ts +2 -2
  71. package/schematics/migrations/path-match-type/index.js +95 -0
  72. package/schematics/migrations/path-match-type/transform.d.ts +19 -0
  73. package/schematics/migrations/path-match-type/transform.js +48 -0
  74. package/schematics/migrations/path-match-type/update_recorder.d.ts +18 -0
  75. package/schematics/migrations/path-match-type/update_recorder.js +20 -0
  76. package/schematics/migrations/path-match-type/util.d.ts +11 -0
  77. package/schematics/migrations/path-match-type/util.js +106 -0
  78. package/schematics/migrations/typed-forms/index.d.ts +1 -5
  79. package/schematics/migrations/typed-forms/index.js +12 -34
  80. package/schematics/migrations/typed-forms/util.d.ts +8 -10
  81. package/schematics/migrations/typed-forms/util.js +99 -52
  82. package/schematics/migrations.json +11 -16
  83. package/schematics/utils/import_manager.js +11 -22
  84. package/schematics/utils/typescript/imports.js +5 -9
  85. package/schematics/utils/typescript/parse_tsconfig.js +6 -2
  86. package/schematics/utils/typescript/symbol.js +4 -3
  87. package/testing/testing.d.ts +3 -2
  88. package/esm2020/src/di/util.mjs +0 -51
  89. package/esm2020/src/linker/ng_module_factory_registration.mjs +0 -59
  90. package/esm2020/src/reflection/reflection.mjs +0 -16
  91. package/esm2020/src/reflection/reflector.mjs +0 -56
  92. package/esm2020/src/reflection/types.mjs +0 -9
  93. package/schematics/migrations/router-link-empty-expression/analyze_template.d.ts +0 -11
  94. package/schematics/migrations/router-link-empty-expression/analyze_template.js +0 -34
  95. package/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor.d.ts +0 -20
  96. package/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor.js +0 -47
  97. package/schematics/migrations/router-link-empty-expression/index.js +0 -170
  98. package/schematics/migrations/testbed-teardown/index.d.ts +0 -11
  99. package/schematics/migrations/testbed-teardown/index.js +0 -92
  100. package/schematics/migrations/testbed-teardown/util.d.ts +0 -35
  101. package/schematics/migrations/testbed-teardown/util.js +0 -188
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "14.0.0-next.0",
3
+ "version": "14.0.0-next.11",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
7
7
  "engines": {
8
- "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
8
+ "node": "^14.15.0 || >=16.10.0"
9
9
  },
10
10
  "exports": {
11
11
  "./schematics/*": {
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  const entryComponentsProp = literal.properties.find(property => typescript_1.default.isPropertyAssignment(property) && typescript_1.default.isIdentifier(property.name) &&
37
37
  property.name.text === 'entryComponents');
38
38
  if (entryComponentsProp) {
39
- const replacementNode = typescript_1.default.updateObjectLiteral(literal, literal.properties.filter(prop => prop !== entryComponentsProp));
39
+ const replacementNode = typescript_1.default.factory.updateObjectLiteralExpression(literal, literal.properties.filter(prop => prop !== entryComponentsProp));
40
40
  results.push({
41
41
  start: literal.getStart(),
42
42
  length: literal.getWidth(),
@@ -54,4 +54,4 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
54
54
  }
55
55
  exports.migrateEntryComponentsUsages = migrateEntryComponentsUsages;
56
56
  });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL2VudHJ5LWNvbXBvbmVudHMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCw0REFBNEI7SUFFNUIscUZBQXlFO0lBRXpFLGdGQUFnRjtJQUNoRixTQUFnQiw0QkFBNEIsQ0FDeEMsV0FBMkIsRUFBRSxPQUFtQixFQUFFLFVBQXlCO1FBQzdFLE1BQU0sT0FBTyxHQUF3RSxFQUFFLENBQUM7UUFFeEYsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFhO1lBQ2pELElBQUksb0JBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksb0JBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDdEMsb0JBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM5RCxNQUFNLFFBQVEsR0FBRyxJQUFBLG1DQUFzQixFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFM0QsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFlBQVksS0FBSyxlQUFlO29CQUNyRCxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLEVBQUU7b0JBQ25FLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM3QyxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUMvQyxRQUFRLENBQUMsRUFBRSxDQUFDLG9CQUFFLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLElBQUksb0JBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDM0UsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsQ0FBQztvQkFFbEQsSUFBSSxtQkFBbUIsRUFBRTt3QkFDdkIsTUFBTSxlQUFlLEdBQUcsb0JBQUUsQ0FBQyxtQkFBbUIsQ0FDMUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLENBQUMsQ0FBQzt3QkFFOUUsT0FBTyxDQUFDLElBQUksQ0FBQzs0QkFDWCxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRTs0QkFDekIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUU7NEJBQzFCLEdBQUcsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFOzRCQUNyQixXQUFXLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxvQkFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQzt5QkFDckYsQ0FBQyxDQUFDO3FCQUNKO2lCQUNGO2FBQ0Y7WUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgseURBQXlEO1FBQ3pELDhEQUE4RDtRQUM5RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBckNELG9FQXFDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0Q2FsbERlY29yYXRvckltcG9ydH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9kZWNvcmF0b3JzJztcblxuLyoqIEZpbmRzIGFuZCBtaWdyYXRlcyBhbGwgQW5ndWxhciBkZWNvcmF0b3JzIHRoYXQgcGFzcyBpbiBgZW50cnlDb21wb25lbnRzYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaWdyYXRlRW50cnlDb21wb25lbnRzVXNhZ2VzKFxuICAgIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgcHJpbnRlcjogdHMuUHJpbnRlciwgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSkge1xuICBjb25zdCByZXN1bHRzOiB7c3RhcnQ6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIGVuZDogbnVtYmVyLCByZXBsYWNlbWVudDogc3RyaW5nfVtdID0gW107XG5cbiAgc291cmNlRmlsZS5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24gd2Fsayhub2RlOiB0cy5Ob2RlKSB7XG4gICAgaWYgKHRzLmlzRGVjb3JhdG9yKG5vZGUpICYmIHRzLmlzQ2FsbEV4cHJlc3Npb24obm9kZS5leHByZXNzaW9uKSAmJlxuICAgICAgICBub2RlLmV4cHJlc3Npb24uYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICB0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbi5hcmd1bWVudHNbMF0pKSB7XG4gICAgICBjb25zdCBhbmFseXNpcyA9IGdldENhbGxEZWNvcmF0b3JJbXBvcnQodHlwZUNoZWNrZXIsIG5vZGUpO1xuXG4gICAgICBpZiAoYW5hbHlzaXMgJiYgYW5hbHlzaXMuaW1wb3J0TW9kdWxlID09PSAnQGFuZ3VsYXIvY29yZScgJiZcbiAgICAgICAgICAoYW5hbHlzaXMubmFtZSA9PT0gJ0NvbXBvbmVudCcgfHwgYW5hbHlzaXMubmFtZSA9PT0gJ05nTW9kdWxlJykpIHtcbiAgICAgICAgY29uc3QgbGl0ZXJhbCA9IG5vZGUuZXhwcmVzc2lvbi5hcmd1bWVudHNbMF07XG4gICAgICAgIGNvbnN0IGVudHJ5Q29tcG9uZW50c1Byb3AgPSBsaXRlcmFsLnByb3BlcnRpZXMuZmluZChcbiAgICAgICAgICAgIHByb3BlcnR5ID0+IHRzLmlzUHJvcGVydHlBc3NpZ25tZW50KHByb3BlcnR5KSAmJiB0cy5pc0lkZW50aWZpZXIocHJvcGVydHkubmFtZSkgJiZcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eS5uYW1lLnRleHQgPT09ICdlbnRyeUNvbXBvbmVudHMnKTtcblxuICAgICAgICBpZiAoZW50cnlDb21wb25lbnRzUHJvcCkge1xuICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50Tm9kZSA9IHRzLnVwZGF0ZU9iamVjdExpdGVyYWwoXG4gICAgICAgICAgICAgIGxpdGVyYWwsIGxpdGVyYWwucHJvcGVydGllcy5maWx0ZXIocHJvcCA9PiBwcm9wICE9PSBlbnRyeUNvbXBvbmVudHNQcm9wKSk7XG5cbiAgICAgICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICAgICAgc3RhcnQ6IGxpdGVyYWwuZ2V0U3RhcnQoKSxcbiAgICAgICAgICAgIGxlbmd0aDogbGl0ZXJhbC5nZXRXaWR0aCgpLFxuICAgICAgICAgICAgZW5kOiBsaXRlcmFsLmdldEVuZCgpLFxuICAgICAgICAgICAgcmVwbGFjZW1lbnQ6IHByaW50ZXIucHJpbnROb2RlKHRzLkVtaXRIaW50LlVuc3BlY2lmaWVkLCByZXBsYWNlbWVudE5vZGUsIHNvdXJjZUZpbGUpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBub2RlLmZvckVhY2hDaGlsZCh3YWxrKTtcbiAgfSk7XG5cbiAgLy8gU29ydCB0aGUgb3BlcmF0aW9ucyBpbiByZXZlcnNlIG9yZGVyIGluIG9yZGVyIHRvIGF2b2lkXG4gIC8vIGlzc3VlcyB3aGVuIG1pZ3JhdGluZyBtdWx0aXBsZSB1c2FnZXMgd2l0aGluIHRoZSBzYW1lIGZpbGUuXG4gIHJldHVybiByZXN1bHRzLnNvcnQoKGEsIGIpID0+IGIuc3RhcnQgLSBhLnN0YXJ0KTtcbn1cbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL2VudHJ5LWNvbXBvbmVudHMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCw0REFBNEI7SUFFNUIscUZBQXlFO0lBRXpFLGdGQUFnRjtJQUNoRixTQUFnQiw0QkFBNEIsQ0FDeEMsV0FBMkIsRUFBRSxPQUFtQixFQUFFLFVBQXlCO1FBQzdFLE1BQU0sT0FBTyxHQUF3RSxFQUFFLENBQUM7UUFFeEYsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFhO1lBQ2pELElBQUksb0JBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksb0JBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDdEMsb0JBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM5RCxNQUFNLFFBQVEsR0FBRyxJQUFBLG1DQUFzQixFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFM0QsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFlBQVksS0FBSyxlQUFlO29CQUNyRCxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLEVBQUU7b0JBQ25FLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM3QyxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUMvQyxRQUFRLENBQUMsRUFBRSxDQUFDLG9CQUFFLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLElBQUksb0JBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDM0UsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsQ0FBQztvQkFFbEQsSUFBSSxtQkFBbUIsRUFBRTt3QkFDdkIsTUFBTSxlQUFlLEdBQUcsb0JBQUUsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQzVELE9BQU8sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7d0JBRTlFLE9BQU8sQ0FBQyxJQUFJLENBQUM7NEJBQ1gsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUU7NEJBQ3pCLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFOzRCQUMxQixHQUFHLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRTs0QkFDckIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsb0JBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUM7eUJBQ3JGLENBQUMsQ0FBQztxQkFDSjtpQkFDRjthQUNGO1lBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILHlEQUF5RDtRQUN6RCw4REFBOEQ7UUFDOUQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQXJDRCxvRUFxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2dldENhbGxEZWNvcmF0b3JJbXBvcnR9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvZGVjb3JhdG9ycyc7XG5cbi8qKiBGaW5kcyBhbmQgbWlncmF0ZXMgYWxsIEFuZ3VsYXIgZGVjb3JhdG9ycyB0aGF0IHBhc3MgaW4gYGVudHJ5Q29tcG9uZW50c2AuICovXG5leHBvcnQgZnVuY3Rpb24gbWlncmF0ZUVudHJ5Q29tcG9uZW50c1VzYWdlcyhcbiAgICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIHByaW50ZXI6IHRzLlByaW50ZXIsIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpIHtcbiAgY29uc3QgcmVzdWx0czoge3N0YXJ0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBlbmQ6IG51bWJlciwgcmVwbGFjZW1lbnQ6IHN0cmluZ31bXSA9IFtdO1xuXG4gIHNvdXJjZUZpbGUuZm9yRWFjaENoaWxkKGZ1bmN0aW9uIHdhbGsobm9kZTogdHMuTm9kZSkge1xuICAgIGlmICh0cy5pc0RlY29yYXRvcihub2RlKSAmJiB0cy5pc0NhbGxFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbikgJiZcbiAgICAgICAgbm9kZS5leHByZXNzaW9uLmFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgdHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihub2RlLmV4cHJlc3Npb24uYXJndW1lbnRzWzBdKSkge1xuICAgICAgY29uc3QgYW5hbHlzaXMgPSBnZXRDYWxsRGVjb3JhdG9ySW1wb3J0KHR5cGVDaGVja2VyLCBub2RlKTtcblxuICAgICAgaWYgKGFuYWx5c2lzICYmIGFuYWx5c2lzLmltcG9ydE1vZHVsZSA9PT0gJ0Bhbmd1bGFyL2NvcmUnICYmXG4gICAgICAgICAgKGFuYWx5c2lzLm5hbWUgPT09ICdDb21wb25lbnQnIHx8IGFuYWx5c2lzLm5hbWUgPT09ICdOZ01vZHVsZScpKSB7XG4gICAgICAgIGNvbnN0IGxpdGVyYWwgPSBub2RlLmV4cHJlc3Npb24uYXJndW1lbnRzWzBdO1xuICAgICAgICBjb25zdCBlbnRyeUNvbXBvbmVudHNQcm9wID0gbGl0ZXJhbC5wcm9wZXJ0aWVzLmZpbmQoXG4gICAgICAgICAgICBwcm9wZXJ0eSA9PiB0cy5pc1Byb3BlcnR5QXNzaWdubWVudChwcm9wZXJ0eSkgJiYgdHMuaXNJZGVudGlmaWVyKHByb3BlcnR5Lm5hbWUpICYmXG4gICAgICAgICAgICAgICAgcHJvcGVydHkubmFtZS50ZXh0ID09PSAnZW50cnlDb21wb25lbnRzJyk7XG5cbiAgICAgICAgaWYgKGVudHJ5Q29tcG9uZW50c1Byb3ApIHtcbiAgICAgICAgICBjb25zdCByZXBsYWNlbWVudE5vZGUgPSB0cy5mYWN0b3J5LnVwZGF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKFxuICAgICAgICAgICAgICBsaXRlcmFsLCBsaXRlcmFsLnByb3BlcnRpZXMuZmlsdGVyKHByb3AgPT4gcHJvcCAhPT0gZW50cnlDb21wb25lbnRzUHJvcCkpO1xuXG4gICAgICAgICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICAgIHN0YXJ0OiBsaXRlcmFsLmdldFN0YXJ0KCksXG4gICAgICAgICAgICBsZW5ndGg6IGxpdGVyYWwuZ2V0V2lkdGgoKSxcbiAgICAgICAgICAgIGVuZDogbGl0ZXJhbC5nZXRFbmQoKSxcbiAgICAgICAgICAgIHJlcGxhY2VtZW50OiBwcmludGVyLnByaW50Tm9kZSh0cy5FbWl0SGludC5VbnNwZWNpZmllZCwgcmVwbGFjZW1lbnROb2RlLCBzb3VyY2VGaWxlKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbm9kZS5mb3JFYWNoQ2hpbGQod2Fsayk7XG4gIH0pO1xuXG4gIC8vIFNvcnQgdGhlIG9wZXJhdGlvbnMgaW4gcmV2ZXJzZSBvcmRlciBpbiBvcmRlciB0byBhdm9pZFxuICAvLyBpc3N1ZXMgd2hlbiBtaWdyYXRpbmcgbXVsdGlwbGUgdXNhZ2VzIHdpdGhpbiB0aGUgc2FtZSBmaWxlLlxuICByZXR1cm4gcmVzdWx0cy5zb3J0KChhLCBiKSA9PiBiLnN0YXJ0IC0gYS5zdGFydCk7XG59XG4iXX0=
@@ -5,7 +5,7 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- /// <amd-module name="@angular/core/schematics/migrations/router-link-empty-expression" />
8
+ /// <amd-module name="@angular/core/schematics/migrations/path-match-type" />
9
9
  import { Rule } from '@angular-devkit/schematics';
10
- /** Entry point for the RouterLink empty expression migration. */
10
+ /** Migration that adds explicit type to `Route`/`Routes` which use `patchMatch` */
11
11
  export default function (): Rule;
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ (function (factory) {
21
+ if (typeof module === "object" && typeof module.exports === "object") {
22
+ var v = factory(require, exports);
23
+ if (v !== undefined) module.exports = v;
24
+ }
25
+ else if (typeof define === "function" && define.amd) {
26
+ define("@angular/core/schematics/migrations/path-match-type", ["require", "exports", "@angular-devkit/schematics", "path", "typescript", "@angular/core/schematics/utils/project_tsconfig_paths", "@angular/core/schematics/utils/typescript/compiler_host", "@angular/core/schematics/migrations/path-match-type/transform"], factory);
27
+ }
28
+ })(function (require, exports) {
29
+ "use strict";
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ const schematics_1 = require("@angular-devkit/schematics");
32
+ const path_1 = require("path");
33
+ const typescript_1 = __importDefault(require("typescript"));
34
+ const project_tsconfig_paths_1 = require("@angular/core/schematics/utils/project_tsconfig_paths");
35
+ const compiler_host_1 = require("@angular/core/schematics/utils/typescript/compiler_host");
36
+ const transform_1 = require("@angular/core/schematics/migrations/path-match-type/transform");
37
+ /** Migration that adds explicit type to `Route`/`Routes` which use `patchMatch` */
38
+ function default_1() {
39
+ return (tree) => __awaiter(this, void 0, void 0, function* () {
40
+ const { buildPaths, testPaths } = yield (0, project_tsconfig_paths_1.getProjectTsConfigPaths)(tree);
41
+ const basePath = process.cwd();
42
+ const allPaths = [...buildPaths, ...testPaths];
43
+ if (!allPaths.length) {
44
+ throw new schematics_1.SchematicsException('Could not find any tsconfig file. Cannot perform pathMatch migration.');
45
+ }
46
+ for (const tsconfigPath of allPaths) {
47
+ runMigration(tree, tsconfigPath, basePath);
48
+ }
49
+ });
50
+ }
51
+ exports.default = default_1;
52
+ function runMigration(tree, tsconfigPath, basePath) {
53
+ const { program } = (0, compiler_host_1.createMigrationProgram)(tree, tsconfigPath, basePath);
54
+ const sourceFiles = program.getSourceFiles().filter(sourceFile => (0, compiler_host_1.canMigrateFile)(basePath, sourceFile, program));
55
+ const updateRecorders = new Map();
56
+ const transform = new transform_1.PathMatchTypeTransform(getUpdateRecorder);
57
+ // Migrate all source files in the project.
58
+ transform.migrate(sourceFiles);
59
+ // Record the changes collected in the import manager.
60
+ transform.recordChanges();
61
+ // Walk through each update recorder and commit the update. We need to commit the
62
+ // updates in batches per source file as there can be only one recorder per source
63
+ // file in order to avoid shifted character offsets.
64
+ updateRecorders.forEach(recorder => recorder.commitUpdate());
65
+ /** Gets the update recorder for the specified source file. */
66
+ function getUpdateRecorder(sourceFile) {
67
+ if (updateRecorders.has(sourceFile)) {
68
+ return updateRecorders.get(sourceFile);
69
+ }
70
+ const printer = typescript_1.default.createPrinter();
71
+ const treeRecorder = tree.beginUpdate((0, path_1.relative)(basePath, sourceFile.fileName));
72
+ const recorder = {
73
+ updateNode(oldExpr, newExpr) {
74
+ treeRecorder.insertRight(oldExpr.name.getEnd(), ': ' + printer.printNode(typescript_1.default.EmitHint.Unspecified, newExpr.type, sourceFile));
75
+ },
76
+ addNewImport(start, importText) {
77
+ // New imports should be inserted at the left while decorators should be inserted
78
+ // at the right in order to ensure that imports are inserted before the decorator
79
+ // if the start position of import and decorator is the source file start.
80
+ treeRecorder.insertLeft(start, importText);
81
+ },
82
+ updateExistingImport(namedBindings, newNamedBindings) {
83
+ treeRecorder.remove(namedBindings.getStart(), namedBindings.getWidth());
84
+ treeRecorder.insertRight(namedBindings.getStart(), newNamedBindings);
85
+ },
86
+ commitUpdate() {
87
+ tree.commitUpdate(treeRecorder);
88
+ }
89
+ };
90
+ updateRecorders.set(sourceFile, recorder);
91
+ return recorder;
92
+ }
93
+ }
94
+ });
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy9wYXRoLW1hdGNoLXR5cGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCwyREFBMkU7SUFDM0UsK0JBQThCO0lBQzlCLDREQUE0QjtJQUU1QixrR0FBMkU7SUFDM0UsMkZBQTRGO0lBRTVGLDZGQUFtRDtJQUluRCxtRkFBbUY7SUFDbkY7UUFDRSxPQUFPLENBQU8sSUFBVSxFQUFFLEVBQUU7WUFDMUIsTUFBTSxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsR0FBRyxNQUFNLElBQUEsZ0RBQXVCLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUUvQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDcEIsTUFBTSxJQUFJLGdDQUFtQixDQUN6Qix1RUFBdUUsQ0FBQyxDQUFDO2FBQzlFO1lBRUQsS0FBSyxNQUFNLFlBQVksSUFBSSxRQUFRLEVBQUU7Z0JBQ25DLFlBQVksQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzVDO1FBQ0gsQ0FBQyxDQUFBLENBQUM7SUFDSixDQUFDO0lBZkQsNEJBZUM7SUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFVLEVBQUUsWUFBb0IsRUFBRSxRQUFnQjtRQUN0RSxNQUFNLEVBQUMsT0FBTyxFQUFDLEdBQUcsSUFBQSxzQ0FBc0IsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sV0FBVyxHQUNiLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFBLDhCQUFjLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2pHLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ2pFLE1BQU0sU0FBUyxHQUFHLElBQUksa0NBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVoRSwyQ0FBMkM7UUFDM0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQixzREFBc0Q7UUFDdEQsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTFCLGlGQUFpRjtRQUNqRixrRkFBa0Y7UUFDbEYsb0RBQW9EO1FBQ3BELGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUU3RCw4REFBOEQ7UUFDOUQsU0FBUyxpQkFBaUIsQ0FBQyxVQUF5QjtZQUNsRCxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUUsQ0FBQzthQUN6QztZQUNELE1BQU0sT0FBTyxHQUFHLG9CQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFBLGVBQVEsRUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDL0UsTUFBTSxRQUFRLEdBQW1CO2dCQUMvQixVQUFVLENBQUMsT0FBK0IsRUFBRSxPQUErQjtvQkFDekUsWUFBWSxDQUFDLFdBQVcsQ0FDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFDckIsSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsb0JBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDcEYsQ0FBQztnQkFDRCxZQUFZLENBQUMsS0FBYSxFQUFFLFVBQWtCO29CQUM1QyxpRkFBaUY7b0JBQ2pGLGlGQUFpRjtvQkFDakYsMEVBQTBFO29CQUMxRSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztnQkFDRCxvQkFBb0IsQ0FBQyxhQUE4QixFQUFFLGdCQUF3QjtvQkFDM0UsWUFBWSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQ3hFLFlBQVksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3ZFLENBQUM7Z0JBQ0QsWUFBWTtvQkFDVixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO2FBQ0YsQ0FBQztZQUNGLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UnVsZSwgU2NoZW1hdGljc0V4Y2VwdGlvbiwgVHJlZX0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0UHJvamVjdFRzQ29uZmlnUGF0aHN9IGZyb20gJy4uLy4uL3V0aWxzL3Byb2plY3RfdHNjb25maWdfcGF0aHMnO1xuaW1wb3J0IHtjYW5NaWdyYXRlRmlsZSwgY3JlYXRlTWlncmF0aW9uUHJvZ3JhbX0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9jb21waWxlcl9ob3N0JztcblxuaW1wb3J0IHtQYXRoTWF0Y2hUeXBlVHJhbnNmb3JtfSBmcm9tICcuL3RyYW5zZm9ybSc7XG5pbXBvcnQge1VwZGF0ZVJlY29yZGVyfSBmcm9tICcuL3VwZGF0ZV9yZWNvcmRlcic7XG5cblxuLyoqIE1pZ3JhdGlvbiB0aGF0IGFkZHMgZXhwbGljaXQgdHlwZSB0byBgUm91dGVgL2BSb3V0ZXNgIHdoaWNoIHVzZSBgcGF0Y2hNYXRjaGAgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCk6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKHRyZWU6IFRyZWUpID0+IHtcbiAgICBjb25zdCB7YnVpbGRQYXRocywgdGVzdFBhdGhzfSA9IGF3YWl0IGdldFByb2plY3RUc0NvbmZpZ1BhdGhzKHRyZWUpO1xuICAgIGNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBhbGxQYXRocyA9IFsuLi5idWlsZFBhdGhzLCAuLi50ZXN0UGF0aHNdO1xuXG4gICAgaWYgKCFhbGxQYXRocy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBTY2hlbWF0aWNzRXhjZXB0aW9uKFxuICAgICAgICAgICdDb3VsZCBub3QgZmluZCBhbnkgdHNjb25maWcgZmlsZS4gQ2Fubm90IHBlcmZvcm0gcGF0aE1hdGNoIG1pZ3JhdGlvbi4nKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRzY29uZmlnUGF0aCBvZiBhbGxQYXRocykge1xuICAgICAgcnVuTWlncmF0aW9uKHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcnVuTWlncmF0aW9uKHRyZWU6IFRyZWUsIHRzY29uZmlnUGF0aDogc3RyaW5nLCBiYXNlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHtwcm9ncmFtfSA9IGNyZWF0ZU1pZ3JhdGlvblByb2dyYW0odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzID1cbiAgICAgIHByb2dyYW0uZ2V0U291cmNlRmlsZXMoKS5maWx0ZXIoc291cmNlRmlsZSA9PiBjYW5NaWdyYXRlRmlsZShiYXNlUGF0aCwgc291cmNlRmlsZSwgcHJvZ3JhbSkpO1xuICBjb25zdCB1cGRhdGVSZWNvcmRlcnMgPSBuZXcgTWFwPHRzLlNvdXJjZUZpbGUsIFVwZGF0ZVJlY29yZGVyPigpO1xuICBjb25zdCB0cmFuc2Zvcm0gPSBuZXcgUGF0aE1hdGNoVHlwZVRyYW5zZm9ybShnZXRVcGRhdGVSZWNvcmRlcik7XG5cbiAgLy8gTWlncmF0ZSBhbGwgc291cmNlIGZpbGVzIGluIHRoZSBwcm9qZWN0LlxuICB0cmFuc2Zvcm0ubWlncmF0ZShzb3VyY2VGaWxlcyk7XG4gIC8vIFJlY29yZCB0aGUgY2hhbmdlcyBjb2xsZWN0ZWQgaW4gdGhlIGltcG9ydCBtYW5hZ2VyLlxuICB0cmFuc2Zvcm0ucmVjb3JkQ2hhbmdlcygpO1xuXG4gIC8vIFdhbGsgdGhyb3VnaCBlYWNoIHVwZGF0ZSByZWNvcmRlciBhbmQgY29tbWl0IHRoZSB1cGRhdGUuIFdlIG5lZWQgdG8gY29tbWl0IHRoZVxuICAvLyB1cGRhdGVzIGluIGJhdGNoZXMgcGVyIHNvdXJjZSBmaWxlIGFzIHRoZXJlIGNhbiBiZSBvbmx5IG9uZSByZWNvcmRlciBwZXIgc291cmNlXG4gIC8vIGZpbGUgaW4gb3JkZXIgdG8gYXZvaWQgc2hpZnRlZCBjaGFyYWN0ZXIgb2Zmc2V0cy5cbiAgdXBkYXRlUmVjb3JkZXJzLmZvckVhY2gocmVjb3JkZXIgPT4gcmVjb3JkZXIuY29tbWl0VXBkYXRlKCkpO1xuXG4gIC8qKiBHZXRzIHRoZSB1cGRhdGUgcmVjb3JkZXIgZm9yIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGUuICovXG4gIGZ1bmN0aW9uIGdldFVwZGF0ZVJlY29yZGVyKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpOiBVcGRhdGVSZWNvcmRlciB7XG4gICAgaWYgKHVwZGF0ZVJlY29yZGVycy5oYXMoc291cmNlRmlsZSkpIHtcbiAgICAgIHJldHVybiB1cGRhdGVSZWNvcmRlcnMuZ2V0KHNvdXJjZUZpbGUpITtcbiAgICB9XG4gICAgY29uc3QgcHJpbnRlciA9IHRzLmNyZWF0ZVByaW50ZXIoKTtcbiAgICBjb25zdCB0cmVlUmVjb3JkZXIgPSB0cmVlLmJlZ2luVXBkYXRlKHJlbGF0aXZlKGJhc2VQYXRoLCBzb3VyY2VGaWxlLmZpbGVOYW1lKSk7XG4gICAgY29uc3QgcmVjb3JkZXI6IFVwZGF0ZVJlY29yZGVyID0ge1xuICAgICAgdXBkYXRlTm9kZShvbGRFeHByOiB0cy5WYXJpYWJsZURlY2xhcmF0aW9uLCBuZXdFeHByOiB0cy5WYXJpYWJsZURlY2xhcmF0aW9uKSB7XG4gICAgICAgIHRyZWVSZWNvcmRlci5pbnNlcnRSaWdodChcbiAgICAgICAgICAgIG9sZEV4cHIubmFtZS5nZXRFbmQoKSxcbiAgICAgICAgICAgICc6ICcgKyBwcmludGVyLnByaW50Tm9kZSh0cy5FbWl0SGludC5VbnNwZWNpZmllZCwgbmV3RXhwci50eXBlISwgc291cmNlRmlsZSkpO1xuICAgICAgfSxcbiAgICAgIGFkZE5ld0ltcG9ydChzdGFydDogbnVtYmVyLCBpbXBvcnRUZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgLy8gTmV3IGltcG9ydHMgc2hvdWxkIGJlIGluc2VydGVkIGF0IHRoZSBsZWZ0IHdoaWxlIGRlY29yYXRvcnMgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICAgIC8vIGF0IHRoZSByaWdodCBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBpbXBvcnRzIGFyZSBpbnNlcnRlZCBiZWZvcmUgdGhlIGRlY29yYXRvclxuICAgICAgICAvLyBpZiB0aGUgc3RhcnQgcG9zaXRpb24gb2YgaW1wb3J0IGFuZCBkZWNvcmF0b3IgaXMgdGhlIHNvdXJjZSBmaWxlIHN0YXJ0LlxuICAgICAgICB0cmVlUmVjb3JkZXIuaW5zZXJ0TGVmdChzdGFydCwgaW1wb3J0VGV4dCk7XG4gICAgICB9LFxuICAgICAgdXBkYXRlRXhpc3RpbmdJbXBvcnQobmFtZWRCaW5kaW5nczogdHMuTmFtZWRJbXBvcnRzLCBuZXdOYW1lZEJpbmRpbmdzOiBzdHJpbmcpIHtcbiAgICAgICAgdHJlZVJlY29yZGVyLnJlbW92ZShuYW1lZEJpbmRpbmdzLmdldFN0YXJ0KCksIG5hbWVkQmluZGluZ3MuZ2V0V2lkdGgoKSk7XG4gICAgICAgIHRyZWVSZWNvcmRlci5pbnNlcnRSaWdodChuYW1lZEJpbmRpbmdzLmdldFN0YXJ0KCksIG5ld05hbWVkQmluZGluZ3MpO1xuICAgICAgfSxcbiAgICAgIGNvbW1pdFVwZGF0ZSgpIHtcbiAgICAgICAgdHJlZS5jb21taXRVcGRhdGUodHJlZVJlY29yZGVyKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHVwZGF0ZVJlY29yZGVycy5zZXQoc291cmNlRmlsZSwgcmVjb3JkZXIpO1xuICAgIHJldHVybiByZWNvcmRlcjtcbiAgfVxufVxuIl19
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ /// <amd-module name="@angular/core/schematics/migrations/path-match-type/transform" />
9
+ import ts from 'typescript';
10
+ import { UpdateRecorder } from './update_recorder';
11
+ export declare class PathMatchTypeTransform {
12
+ private getUpdateRecorder;
13
+ private printer;
14
+ private importManager;
15
+ constructor(getUpdateRecorder: (sf: ts.SourceFile) => UpdateRecorder);
16
+ migrate(sourceFiles: ts.SourceFile[]): void;
17
+ /** Records all changes that were made in the import manager. */
18
+ recordChanges(): void;
19
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ (function (factory) {
12
+ if (typeof module === "object" && typeof module.exports === "object") {
13
+ var v = factory(require, exports);
14
+ if (v !== undefined) module.exports = v;
15
+ }
16
+ else if (typeof define === "function" && define.amd) {
17
+ define("@angular/core/schematics/migrations/path-match-type/transform", ["require", "exports", "typescript", "@angular/core/schematics/utils/import_manager", "@angular/core/schematics/migrations/path-match-type/util"], factory);
18
+ }
19
+ })(function (require, exports) {
20
+ "use strict";
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.PathMatchTypeTransform = void 0;
23
+ const typescript_1 = __importDefault(require("typescript"));
24
+ const import_manager_1 = require("@angular/core/schematics/utils/import_manager");
25
+ const util_1 = require("@angular/core/schematics/migrations/path-match-type/util");
26
+ class PathMatchTypeTransform {
27
+ constructor(getUpdateRecorder) {
28
+ this.getUpdateRecorder = getUpdateRecorder;
29
+ this.printer = typescript_1.default.createPrinter();
30
+ this.importManager = new import_manager_1.ImportManager(this.getUpdateRecorder, this.printer);
31
+ }
32
+ migrate(sourceFiles) {
33
+ for (const sourceFile of sourceFiles) {
34
+ const toMigrate = (0, util_1.findExpressionsToMigrate)(sourceFile, this.importManager);
35
+ const recorder = this.getUpdateRecorder(sourceFile);
36
+ for (const [oldNode, newNode] of toMigrate) {
37
+ recorder.updateNode(oldNode, newNode, sourceFile);
38
+ }
39
+ }
40
+ }
41
+ /** Records all changes that were made in the import manager. */
42
+ recordChanges() {
43
+ this.importManager.recordChanges();
44
+ }
45
+ }
46
+ exports.PathMatchTypeTransform = PathMatchTypeTransform;
47
+ });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvcGF0aC1tYXRjaC10eXBlL3RyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCw0REFBNEI7SUFFNUIsa0ZBQXlEO0lBR3pELG1GQUFnRDtJQUdoRCxNQUFhLHNCQUFzQjtRQUlqQyxZQUFvQixpQkFBd0Q7WUFBeEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF1QztZQUhwRSxZQUFPLEdBQUcsb0JBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QixrQkFBYSxHQUFHLElBQUksOEJBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRUQsQ0FBQztRQUVoRixPQUFPLENBQUMsV0FBNEI7WUFDbEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7Z0JBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUEsK0JBQXdCLEVBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRCxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksU0FBUyxFQUFFO29CQUMxQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7aUJBQ25EO2FBQ0Y7UUFDSCxDQUFDO1FBQ0QsZ0VBQWdFO1FBQ2hFLGFBQWE7WUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JDLENBQUM7S0FDRjtJQW5CRCx3REFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0ltcG9ydE1hbmFnZXJ9IGZyb20gJy4uLy4uL3V0aWxzL2ltcG9ydF9tYW5hZ2VyJztcblxuaW1wb3J0IHtVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi91cGRhdGVfcmVjb3JkZXInO1xuaW1wb3J0IHtmaW5kRXhwcmVzc2lvbnNUb01pZ3JhdGV9IGZyb20gJy4vdXRpbCc7XG5cblxuZXhwb3J0IGNsYXNzIFBhdGhNYXRjaFR5cGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKCk7XG4gIHByaXZhdGUgaW1wb3J0TWFuYWdlciA9IG5ldyBJbXBvcnRNYW5hZ2VyKHRoaXMuZ2V0VXBkYXRlUmVjb3JkZXIsIHRoaXMucHJpbnRlcik7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnZXRVcGRhdGVSZWNvcmRlcjogKHNmOiB0cy5Tb3VyY2VGaWxlKSA9PiBVcGRhdGVSZWNvcmRlcikge31cblxuICBtaWdyYXRlKHNvdXJjZUZpbGVzOiB0cy5Tb3VyY2VGaWxlW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2Ygc291cmNlRmlsZXMpIHtcbiAgICAgIGNvbnN0IHRvTWlncmF0ZSA9IGZpbmRFeHByZXNzaW9uc1RvTWlncmF0ZShzb3VyY2VGaWxlLCB0aGlzLmltcG9ydE1hbmFnZXIpO1xuICAgICAgY29uc3QgcmVjb3JkZXIgPSB0aGlzLmdldFVwZGF0ZVJlY29yZGVyKHNvdXJjZUZpbGUpO1xuICAgICAgZm9yIChjb25zdCBbb2xkTm9kZSwgbmV3Tm9kZV0gb2YgdG9NaWdyYXRlKSB7XG4gICAgICAgIHJlY29yZGVyLnVwZGF0ZU5vZGUob2xkTm9kZSwgbmV3Tm9kZSwgc291cmNlRmlsZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKiBSZWNvcmRzIGFsbCBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlIGluIHRoZSBpbXBvcnQgbWFuYWdlci4gKi9cbiAgcmVjb3JkQ2hhbmdlcygpIHtcbiAgICB0aGlzLmltcG9ydE1hbmFnZXIucmVjb3JkQ2hhbmdlcygpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ /// <amd-module name="@angular/core/schematics/migrations/path-match-type/update_recorder" />
9
+ import ts from 'typescript';
10
+ import { ImportManagerUpdateRecorder } from '../../utils/import_manager';
11
+ /**
12
+ * Update recorder interface that is used to transform source files
13
+ * in a non-colliding way.
14
+ */
15
+ export interface UpdateRecorder extends ImportManagerUpdateRecorder {
16
+ updateNode(oldNode: ts.VariableDeclaration, newNode: ts.VariableDeclaration, sourceFile: ts.SourceFile): void;
17
+ commitUpdate(): void;
18
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ (function (factory) {
9
+ if (typeof module === "object" && typeof module.exports === "object") {
10
+ var v = factory(require, exports);
11
+ if (v !== undefined) module.exports = v;
12
+ }
13
+ else if (typeof define === "function" && define.amd) {
14
+ define("@angular/core/schematics/migrations/path-match-type/update_recorder", ["require", "exports"], factory);
15
+ }
16
+ })(function (require, exports) {
17
+ "use strict";
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlX3JlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvcGF0aC1tYXRjaC10eXBlL3VwZGF0ZV9yZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0ltcG9ydE1hbmFnZXJVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi4vLi4vdXRpbHMvaW1wb3J0X21hbmFnZXInO1xuXG4vKipcbiAqIFVwZGF0ZSByZWNvcmRlciBpbnRlcmZhY2UgdGhhdCBpcyB1c2VkIHRvIHRyYW5zZm9ybSBzb3VyY2UgZmlsZXNcbiAqIGluIGEgbm9uLWNvbGxpZGluZyB3YXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUmVjb3JkZXIgZXh0ZW5kcyBJbXBvcnRNYW5hZ2VyVXBkYXRlUmVjb3JkZXIge1xuICB1cGRhdGVOb2RlKFxuICAgICAgb2xkTm9kZTogdHMuVmFyaWFibGVEZWNsYXJhdGlvbiwgbmV3Tm9kZTogdHMuVmFyaWFibGVEZWNsYXJhdGlvbixcbiAgICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpOiB2b2lkO1xuICBjb21taXRVcGRhdGUoKTogdm9pZDtcbn1cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ /// <amd-module name="@angular/core/schematics/migrations/path-match-type/util" />
9
+ import ts from 'typescript';
10
+ import { ImportManager } from '../../utils/import_manager';
11
+ export declare function findExpressionsToMigrate(sourceFile: ts.SourceFile, importManager: ImportManager): Map<ts.VariableDeclaration, ts.VariableDeclaration>;
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ (function (factory) {
12
+ if (typeof module === "object" && typeof module.exports === "object") {
13
+ var v = factory(require, exports);
14
+ if (v !== undefined) module.exports = v;
15
+ }
16
+ else if (typeof define === "function" && define.amd) {
17
+ define("@angular/core/schematics/migrations/path-match-type/util", ["require", "exports", "typescript"], factory);
18
+ }
19
+ })(function (require, exports) {
20
+ "use strict";
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.findExpressionsToMigrate = void 0;
23
+ const typescript_1 = __importDefault(require("typescript"));
24
+ function findExpressionsToMigrate(sourceFile, importManager) {
25
+ const migratedNodesMap = new Map();
26
+ let _currentVariableDecl = null;
27
+ (() => {
28
+ sourceFile.forEachChild(function visitNode(node) {
29
+ if (typescript_1.default.isVariableDeclaration(node)) {
30
+ _currentVariableDecl = node;
31
+ node.forEachChild(visitNode);
32
+ _currentVariableDecl = null;
33
+ }
34
+ if (isRouteOrRoutesVariableDeclaration(node)) {
35
+ // The variable declaration is already explicitly typed as `Route` or `Routes` so it does
36
+ // not need a migration.
37
+ return;
38
+ }
39
+ else if (typescript_1.default.isObjectLiteralExpression(node)) {
40
+ if (_currentVariableDecl !== null && _currentVariableDecl.type === undefined) {
41
+ visitObjectLiteral(node);
42
+ }
43
+ }
44
+ else {
45
+ node.forEachChild(visitNode);
46
+ }
47
+ });
48
+ function visitObjectLiteral(obj) {
49
+ const hasPathMatch = obj.properties.some(p => isPropertyWithName(p, 'pathMatch'));
50
+ const hasPath = obj.properties.some(p => isPropertyWithName(p, 'path'));
51
+ const childrenProperty = obj.properties.find(p => isPropertyWithName(p, 'children'));
52
+ // The object must have _both_ pathMatch _and_ path for us to be reasonably sure that it's
53
+ // a `Route` definition.
54
+ if (hasPath && hasPathMatch) {
55
+ updateCurrentVariableDeclaration();
56
+ }
57
+ else if (childrenProperty !== undefined && typescript_1.default.isPropertyAssignment(childrenProperty) &&
58
+ typescript_1.default.isArrayLiteralExpression(childrenProperty.initializer)) {
59
+ // Also need to check the children if it exists
60
+ for (const child of childrenProperty.initializer.elements) {
61
+ if (typescript_1.default.isObjectLiteralExpression(child)) {
62
+ visitObjectLiteral(child);
63
+ // If the child caused a migration, we can exit early
64
+ if (_currentVariableDecl && migratedNodesMap.has(_currentVariableDecl)) {
65
+ break;
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ function isPropertyWithName(p, name) {
72
+ if (typescript_1.default.isPropertyAssignment(p)) {
73
+ return p.name.getText() === name;
74
+ }
75
+ else if (typescript_1.default.isShorthandPropertyAssignment(p)) {
76
+ return p.name.getText() === name;
77
+ }
78
+ else {
79
+ // Don't attempt to migrate edge case spreadAssignment
80
+ return false;
81
+ }
82
+ }
83
+ function updateCurrentVariableDeclaration() {
84
+ if (_currentVariableDecl === null || _currentVariableDecl.initializer === undefined) {
85
+ return;
86
+ }
87
+ let typeToUse;
88
+ if (typescript_1.default.isArrayLiteralExpression(_currentVariableDecl.initializer)) {
89
+ typeToUse = importManager.addImportToSourceFile(sourceFile, 'Routes', '@angular/router');
90
+ }
91
+ else {
92
+ typeToUse = importManager.addImportToSourceFile(sourceFile, 'Route', '@angular/router');
93
+ }
94
+ const migrated = typescript_1.default.factory.updateVariableDeclaration(_currentVariableDecl, _currentVariableDecl.name, _currentVariableDecl.exclamationToken, typeToUse, _currentVariableDecl.initializer);
95
+ migratedNodesMap.set(_currentVariableDecl, migrated);
96
+ }
97
+ })();
98
+ return migratedNodesMap;
99
+ }
100
+ exports.findExpressionsToMigrate = findExpressionsToMigrate;
101
+ function isRouteOrRoutesVariableDeclaration(node) {
102
+ return typescript_1.default.isVariableDeclaration(node) && node.type &&
103
+ (node.type.getText() === 'Route' || node.type.getText() === 'Routes');
104
+ }
105
+ });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3BhdGgtbWF0Y2gtdHlwZS91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDREQUE0QjtJQUs1QixTQUFnQix3QkFBd0IsQ0FBQyxVQUF5QixFQUFFLGFBQTRCO1FBQzlGLE1BQU0sZ0JBQWdCLEdBQXdELElBQUksR0FBRyxFQUFFLENBQUM7UUFDeEYsSUFBSSxvQkFBb0IsR0FBZ0MsSUFBSSxDQUFDO1FBQzdELENBQUMsR0FBRyxFQUFFO1lBQ0osVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLFNBQVMsQ0FBQyxJQUFhO2dCQUN0RCxJQUFJLG9CQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2xDLG9CQUFvQixHQUFHLElBQUksQ0FBQztvQkFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDN0Isb0JBQW9CLEdBQUcsSUFBSSxDQUFDO2lCQUM3QjtnQkFDRCxJQUFJLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUM1Qyx5RkFBeUY7b0JBQ3pGLHdCQUF3QjtvQkFDeEIsT0FBTztpQkFDUjtxQkFBTSxJQUFJLG9CQUFFLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzdDLElBQUksb0JBQW9CLEtBQUssSUFBSSxJQUFJLG9CQUFvQixDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7d0JBQzVFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUMxQjtpQkFDRjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUM5QjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsU0FBUyxrQkFBa0IsQ0FBQyxHQUErQjtnQkFDekQsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDbEYsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDeEUsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNyRiwwRkFBMEY7Z0JBQzFGLHdCQUF3QjtnQkFDeEIsSUFBSSxPQUFPLElBQUksWUFBWSxFQUFFO29CQUMzQixnQ0FBZ0MsRUFBRSxDQUFDO2lCQUNwQztxQkFBTSxJQUNILGdCQUFnQixLQUFLLFNBQVMsSUFBSSxvQkFBRSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDO29CQUMzRSxvQkFBRSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUM3RCwrQ0FBK0M7b0JBQy9DLEtBQUssTUFBTSxLQUFLLElBQUksZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTt3QkFDekQsSUFBSSxvQkFBRSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUN2QyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDMUIscURBQXFEOzRCQUNyRCxJQUFJLG9CQUFvQixJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO2dDQUN0RSxNQUFNOzZCQUNQO3lCQUNGO3FCQUNGO2lCQUNGO1lBQ0gsQ0FBQztZQUVELFNBQVMsa0JBQWtCLENBQUMsQ0FBOEIsRUFBRSxJQUFZO2dCQUN0RSxJQUFJLG9CQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzlCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUM7aUJBQ2xDO3FCQUFNLElBQUksb0JBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDOUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQztpQkFDbEM7cUJBQU07b0JBQ0wsc0RBQXNEO29CQUN0RCxPQUFPLEtBQUssQ0FBQztpQkFDZDtZQUNILENBQUM7WUFFRCxTQUFTLGdDQUFnQztnQkFDdkMsSUFBSSxvQkFBb0IsS0FBSyxJQUFJLElBQUksb0JBQW9CLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtvQkFDbkYsT0FBTztpQkFDUjtnQkFDRCxJQUFJLFNBQXNCLENBQUM7Z0JBQzNCLElBQUksb0JBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDakUsU0FBUyxHQUFHLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixDQUM3RCxDQUFDO2lCQUM1QjtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsYUFBYSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLENBQzVELENBQUM7aUJBQzVCO2dCQUVELE1BQU0sUUFBUSxHQUFHLG9CQUFFLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUNqRCxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQ3RGLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDakQsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRUwsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBL0VELDREQStFQztJQUVELFNBQVMsa0NBQWtDLENBQUMsSUFBYTtRQUN2RCxPQUFPLG9CQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUk7WUFDOUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQzVFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0ltcG9ydE1hbmFnZXJ9IGZyb20gJy4uLy4uL3V0aWxzL2ltcG9ydF9tYW5hZ2VyJztcblxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEV4cHJlc3Npb25zVG9NaWdyYXRlKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIGltcG9ydE1hbmFnZXI6IEltcG9ydE1hbmFnZXIpIHtcbiAgY29uc3QgbWlncmF0ZWROb2Rlc01hcDogTWFwPHRzLlZhcmlhYmxlRGVjbGFyYXRpb24sIHRzLlZhcmlhYmxlRGVjbGFyYXRpb24+ID0gbmV3IE1hcCgpO1xuICBsZXQgX2N1cnJlbnRWYXJpYWJsZURlY2w6IHRzLlZhcmlhYmxlRGVjbGFyYXRpb258bnVsbCA9IG51bGw7XG4gICgoKSA9PiB7XG4gICAgc291cmNlRmlsZS5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24gdmlzaXROb2RlKG5vZGU6IHRzLk5vZGUpIHtcbiAgICAgIGlmICh0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgICAgX2N1cnJlbnRWYXJpYWJsZURlY2wgPSBub2RlO1xuICAgICAgICBub2RlLmZvckVhY2hDaGlsZCh2aXNpdE5vZGUpO1xuICAgICAgICBfY3VycmVudFZhcmlhYmxlRGVjbCA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoaXNSb3V0ZU9yUm91dGVzVmFyaWFibGVEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgICAvLyBUaGUgdmFyaWFibGUgZGVjbGFyYXRpb24gaXMgYWxyZWFkeSBleHBsaWNpdGx5IHR5cGVkIGFzIGBSb3V0ZWAgb3IgYFJvdXRlc2Agc28gaXQgZG9lc1xuICAgICAgICAvLyBub3QgbmVlZCBhIG1pZ3JhdGlvbi5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgICAgIGlmIChfY3VycmVudFZhcmlhYmxlRGVjbCAhPT0gbnVsbCAmJiBfY3VycmVudFZhcmlhYmxlRGVjbC50eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2aXNpdE9iamVjdExpdGVyYWwobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUuZm9yRWFjaENoaWxkKHZpc2l0Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiB2aXNpdE9iamVjdExpdGVyYWwob2JqOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbikge1xuICAgICAgY29uc3QgaGFzUGF0aE1hdGNoID0gb2JqLnByb3BlcnRpZXMuc29tZShwID0+IGlzUHJvcGVydHlXaXRoTmFtZShwLCAncGF0aE1hdGNoJykpO1xuICAgICAgY29uc3QgaGFzUGF0aCA9IG9iai5wcm9wZXJ0aWVzLnNvbWUocCA9PiBpc1Byb3BlcnR5V2l0aE5hbWUocCwgJ3BhdGgnKSk7XG4gICAgICBjb25zdCBjaGlsZHJlblByb3BlcnR5ID0gb2JqLnByb3BlcnRpZXMuZmluZChwID0+IGlzUHJvcGVydHlXaXRoTmFtZShwLCAnY2hpbGRyZW4nKSk7XG4gICAgICAvLyBUaGUgb2JqZWN0IG11c3QgaGF2ZSBfYm90aF8gcGF0aE1hdGNoIF9hbmRfIHBhdGggZm9yIHVzIHRvIGJlIHJlYXNvbmFibHkgc3VyZSB0aGF0IGl0J3NcbiAgICAgIC8vIGEgYFJvdXRlYCBkZWZpbml0aW9uLlxuICAgICAgaWYgKGhhc1BhdGggJiYgaGFzUGF0aE1hdGNoKSB7XG4gICAgICAgIHVwZGF0ZUN1cnJlbnRWYXJpYWJsZURlY2xhcmF0aW9uKCk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGNoaWxkcmVuUHJvcGVydHkgIT09IHVuZGVmaW5lZCAmJiB0cy5pc1Byb3BlcnR5QXNzaWdubWVudChjaGlsZHJlblByb3BlcnR5KSAmJlxuICAgICAgICAgIHRzLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihjaGlsZHJlblByb3BlcnR5LmluaXRpYWxpemVyKSkge1xuICAgICAgICAvLyBBbHNvIG5lZWQgdG8gY2hlY2sgdGhlIGNoaWxkcmVuIGlmIGl0IGV4aXN0c1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuUHJvcGVydHkuaW5pdGlhbGl6ZXIuZWxlbWVudHMpIHtcbiAgICAgICAgICBpZiAodHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihjaGlsZCkpIHtcbiAgICAgICAgICAgIHZpc2l0T2JqZWN0TGl0ZXJhbChjaGlsZCk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgY2hpbGQgY2F1c2VkIGEgbWlncmF0aW9uLCB3ZSBjYW4gZXhpdCBlYXJseVxuICAgICAgICAgICAgaWYgKF9jdXJyZW50VmFyaWFibGVEZWNsICYmIG1pZ3JhdGVkTm9kZXNNYXAuaGFzKF9jdXJyZW50VmFyaWFibGVEZWNsKSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Byb3BlcnR5V2l0aE5hbWUocDogdHMuT2JqZWN0TGl0ZXJhbEVsZW1lbnRMaWtlLCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgIGlmICh0cy5pc1Byb3BlcnR5QXNzaWdubWVudChwKSkge1xuICAgICAgICByZXR1cm4gcC5uYW1lLmdldFRleHQoKSA9PT0gbmFtZTtcbiAgICAgIH0gZWxzZSBpZiAodHMuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQocCkpIHtcbiAgICAgICAgcmV0dXJuIHAubmFtZS5nZXRUZXh0KCkgPT09IG5hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEb24ndCBhdHRlbXB0IHRvIG1pZ3JhdGUgZWRnZSBjYXNlIHNwcmVhZEFzc2lnbm1lbnRcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUN1cnJlbnRWYXJpYWJsZURlY2xhcmF0aW9uKCkge1xuICAgICAgaWYgKF9jdXJyZW50VmFyaWFibGVEZWNsID09PSBudWxsIHx8IF9jdXJyZW50VmFyaWFibGVEZWNsLmluaXRpYWxpemVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IHR5cGVUb1VzZTogdHMuVHlwZU5vZGU7XG4gICAgICBpZiAodHMuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKF9jdXJyZW50VmFyaWFibGVEZWNsLmluaXRpYWxpemVyKSkge1xuICAgICAgICB0eXBlVG9Vc2UgPSBpbXBvcnRNYW5hZ2VyLmFkZEltcG9ydFRvU291cmNlRmlsZShzb3VyY2VGaWxlLCAnUm91dGVzJywgJ0Bhbmd1bGFyL3JvdXRlcicpIGFzXG4gICAgICAgICAgICB1bmtub3duIGFzIHRzLlR5cGVOb2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZVRvVXNlID0gaW1wb3J0TWFuYWdlci5hZGRJbXBvcnRUb1NvdXJjZUZpbGUoc291cmNlRmlsZSwgJ1JvdXRlJywgJ0Bhbmd1bGFyL3JvdXRlcicpIGFzXG4gICAgICAgICAgICB1bmtub3duIGFzIHRzLlR5cGVOb2RlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtaWdyYXRlZCA9IHRzLmZhY3RvcnkudXBkYXRlVmFyaWFibGVEZWNsYXJhdGlvbihcbiAgICAgICAgICBfY3VycmVudFZhcmlhYmxlRGVjbCwgX2N1cnJlbnRWYXJpYWJsZURlY2wubmFtZSwgX2N1cnJlbnRWYXJpYWJsZURlY2wuZXhjbGFtYXRpb25Ub2tlbixcbiAgICAgICAgICB0eXBlVG9Vc2UsIF9jdXJyZW50VmFyaWFibGVEZWNsLmluaXRpYWxpemVyKTtcbiAgICAgIG1pZ3JhdGVkTm9kZXNNYXAuc2V0KF9jdXJyZW50VmFyaWFibGVEZWNsLCBtaWdyYXRlZCk7XG4gICAgfVxuICB9KSgpO1xuXG4gIHJldHVybiBtaWdyYXRlZE5vZGVzTWFwO1xufVxuXG5mdW5jdGlvbiBpc1JvdXRlT3JSb3V0ZXNWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGU6IHRzLk5vZGUpIHtcbiAgcmV0dXJuIHRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbihub2RlKSAmJiBub2RlLnR5cGUgJiZcbiAgICAgIChub2RlLnR5cGUuZ2V0VGV4dCgpID09PSAnUm91dGUnIHx8IG5vZGUudHlwZS5nZXRUZXh0KCkgPT09ICdSb3V0ZXMnKTtcbn1cbiJdfQ==
@@ -6,9 +6,5 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/core/schematics/migrations/typed-forms" />
9
- import { Rule, UpdateRecorder } from '@angular-devkit/schematics';
10
- import ts from 'typescript';
11
- import { MigratableNode } from './util';
9
+ import { Rule } from '@angular-devkit/schematics';
12
10
  export default function (): Rule;
13
- export declare function migrateNode(update: UpdateRecorder, node: MigratableNode, importd: ts.ImportSpecifier | null): void;
14
- export declare function insertAnyImport(update: UpdateRecorder, importd: ts.ImportSpecifier): void;
@@ -25,7 +25,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
25
25
  })(function (require, exports) {
26
26
  "use strict";
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.insertAnyImport = exports.migrateNode = void 0;
29
28
  const schematics_1 = require("@angular-devkit/schematics");
30
29
  const path_1 = require("path");
31
30
  const project_tsconfig_paths_1 = require("@angular/core/schematics/utils/project_tsconfig_paths");
@@ -50,41 +49,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
50
49
  const typeChecker = program.getTypeChecker();
51
50
  const sourceFiles = program.getSourceFiles().filter(sourceFile => (0, compiler_host_1.canMigrateFile)(basePath, sourceFile, program));
52
51
  for (const sourceFile of sourceFiles) {
53
- const controlClassImports = (0, util_1.getControlClassImports)(sourceFile);
54
- const formBuilderImport = (0, util_1.getFormBuilderImport)(sourceFile);
55
- // If no relevant classes are imported, we can exit early.
56
- if (controlClassImports.length === 0 && formBuilderImport === null)
57
- return;
58
- const update = tree.beginUpdate((0, path_1.relative)(basePath, sourceFile.fileName));
59
- // For each control class, migrate all of its uses.
60
- for (const importSpecifier of controlClassImports) {
61
- const usages = (0, util_1.findControlClassUsages)(sourceFile, typeChecker, importSpecifier);
62
- for (const node of usages) {
63
- migrateNode(update, node, importSpecifier);
52
+ let update = null;
53
+ const rewriter = (startPos, origLength, text) => {
54
+ if (update === null) {
55
+ // Lazily initialize update, because most files will not require migration.
56
+ update = tree.beginUpdate((0, path_1.relative)(basePath, sourceFile.fileName));
64
57
  }
58
+ update.remove(startPos, origLength);
59
+ update.insertLeft(startPos, text);
60
+ };
61
+ (0, util_1.migrateFile)(sourceFile, typeChecker, rewriter);
62
+ if (update !== null) {
63
+ tree.commitUpdate(update);
65
64
  }
66
- // For each FormBuilder method, migrate all of its uses.
67
- const nodes = (0, util_1.findFormBuilderCalls)(sourceFile, typeChecker, formBuilderImport);
68
- for (const n of nodes) {
69
- migrateNode(update, n, formBuilderImport);
70
- }
71
- // Add the any symbol used by the migrated calls.
72
- if ((0, util_1.getAnyImport)(sourceFile) === null) {
73
- const firstValidFormsImport = [...controlClassImports, formBuilderImport].sort().filter(i => i !== null)[0];
74
- insertAnyImport(update, firstValidFormsImport);
75
- }
76
- tree.commitUpdate(update);
77
65
  }
78
66
  }
79
- function migrateNode(update, node, importd) {
80
- if (importd === null)
81
- return;
82
- update.insertRight(node.node.getEnd(), node.generic);
83
- }
84
- exports.migrateNode = migrateNode;
85
- function insertAnyImport(update, importd) {
86
- update.insertLeft(importd.getStart(), `${util_1.anySymbolName}, `);
87
- }
88
- exports.insertAnyImport = insertAnyImport;
89
67
  });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy90eXBlZC1mb3Jtcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCwyREFBMkY7SUFDM0YsK0JBQThCO0lBRzlCLGtHQUEyRTtJQUMzRSwyRkFBNEY7SUFFNUYsK0VBQStKO0lBRS9KO1FBQ0UsT0FBTyxDQUFPLElBQVUsRUFBRSxFQUFFO1lBQzFCLE1BQU0sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFDLEdBQUcsTUFBTSxJQUFBLGdEQUF1QixFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFFL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BCLE1BQU0sSUFBSSxnQ0FBbUIsQ0FDekIsa0VBQWtFLENBQUMsQ0FBQzthQUN6RTtZQUVELEtBQUssTUFBTSxZQUFZLElBQUksUUFBUSxFQUFFO2dCQUNuQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3REO1FBQ0gsQ0FBQyxDQUFBLENBQUM7SUFDSixDQUFDO0lBZkQsNEJBZUM7SUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVUsRUFBRSxZQUFvQixFQUFFLFFBQWdCO1FBQ2hGLE1BQU0sRUFBQyxPQUFPLEVBQUMsR0FBRyxJQUFBLHNDQUFzQixFQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sV0FBVyxHQUNiLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFBLDhCQUFjLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWpHLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFO1lBQ3BDLE1BQU0sbUJBQW1CLEdBQUcsSUFBQSw2QkFBc0IsRUFBQyxVQUFVLENBQUMsQ0FBQztZQUMvRCxNQUFNLGlCQUFpQixHQUFHLElBQUEsMkJBQW9CLEVBQUMsVUFBVSxDQUFDLENBQUM7WUFFM0QsMERBQTBEO1lBQzFELElBQUksbUJBQW1CLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxpQkFBaUIsS0FBSyxJQUFJO2dCQUFFLE9BQU87WUFFM0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFBLGVBQVEsRUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFekUsbURBQW1EO1lBQ25ELEtBQUssTUFBTSxlQUFlLElBQUksbUJBQW1CLEVBQUU7Z0JBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUEsNkJBQXNCLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDaEYsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUU7b0JBQ3pCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO2lCQUM1QzthQUNGO1lBRUQsd0RBQXdEO1lBQ3hELE1BQU0sS0FBSyxHQUFHLElBQUEsMkJBQW9CLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9FLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFO2dCQUNyQixXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2FBQzNDO1lBRUQsaURBQWlEO1lBQ2pELElBQUksSUFBQSxtQkFBWSxFQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDckMsTUFBTSxxQkFBcUIsR0FDdkIsQ0FBQyxHQUFHLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDO2dCQUNuRixlQUFlLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQUM7YUFDaEQ7WUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFNBQWdCLFdBQVcsQ0FDdkIsTUFBc0IsRUFBRSxJQUFvQixFQUFFLE9BQWdDO1FBQ2hGLElBQUksT0FBTyxLQUFLLElBQUk7WUFBRSxPQUFPO1FBQzdCLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUpELGtDQUlDO0lBRUQsU0FBZ0IsZUFBZSxDQUFDLE1BQXNCLEVBQUUsT0FBMkI7UUFDakYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxvQkFBYSxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRkQsMENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtSdWxlLCBTY2hlbWF0aWNzRXhjZXB0aW9uLCBUcmVlLCBVcGRhdGVSZWNvcmRlcn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0UHJvamVjdFRzQ29uZmlnUGF0aHN9IGZyb20gJy4uLy4uL3V0aWxzL3Byb2plY3RfdHNjb25maWdfcGF0aHMnO1xuaW1wb3J0IHtjYW5NaWdyYXRlRmlsZSwgY3JlYXRlTWlncmF0aW9uUHJvZ3JhbX0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9jb21waWxlcl9ob3N0JztcblxuaW1wb3J0IHthbnlTeW1ib2xOYW1lLCBmaW5kQ29udHJvbENsYXNzVXNhZ2VzLCBmaW5kRm9ybUJ1aWxkZXJDYWxscywgZ2V0QW55SW1wb3J0LCBnZXRDb250cm9sQ2xhc3NJbXBvcnRzLCBnZXRGb3JtQnVpbGRlckltcG9ydCwgTWlncmF0YWJsZU5vZGV9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCk6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKHRyZWU6IFRyZWUpID0+IHtcbiAgICBjb25zdCB7YnVpbGRQYXRocywgdGVzdFBhdGhzfSA9IGF3YWl0IGdldFByb2plY3RUc0NvbmZpZ1BhdGhzKHRyZWUpO1xuICAgIGNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBhbGxQYXRocyA9IFsuLi5idWlsZFBhdGhzLCAuLi50ZXN0UGF0aHNdO1xuXG4gICAgaWYgKCFhbGxQYXRocy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBTY2hlbWF0aWNzRXhjZXB0aW9uKFxuICAgICAgICAgICdDb3VsZCBub3QgZmluZCBhbnkgdHNjb25maWcgZmlsZS4gQ2Fubm90IG1pZ3JhdGUgdG8gVHlwZWQgRm9ybXMuJyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0c2NvbmZpZ1BhdGggb2YgYWxsUGF0aHMpIHtcbiAgICAgIHJ1blR5cGVkRm9ybXNNaWdyYXRpb24odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBydW5UeXBlZEZvcm1zTWlncmF0aW9uKHRyZWU6IFRyZWUsIHRzY29uZmlnUGF0aDogc3RyaW5nLCBiYXNlUGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IHtwcm9ncmFtfSA9IGNyZWF0ZU1pZ3JhdGlvblByb2dyYW0odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCk7XG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBzb3VyY2VGaWxlcyA9XG4gICAgICBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZmlsdGVyKHNvdXJjZUZpbGUgPT4gY2FuTWlncmF0ZUZpbGUoYmFzZVBhdGgsIHNvdXJjZUZpbGUsIHByb2dyYW0pKTtcblxuICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2Ygc291cmNlRmlsZXMpIHtcbiAgICBjb25zdCBjb250cm9sQ2xhc3NJbXBvcnRzID0gZ2V0Q29udHJvbENsYXNzSW1wb3J0cyhzb3VyY2VGaWxlKTtcbiAgICBjb25zdCBmb3JtQnVpbGRlckltcG9ydCA9IGdldEZvcm1CdWlsZGVySW1wb3J0KHNvdXJjZUZpbGUpO1xuXG4gICAgLy8gSWYgbm8gcmVsZXZhbnQgY2xhc3NlcyBhcmUgaW1wb3J0ZWQsIHdlIGNhbiBleGl0IGVhcmx5LlxuICAgIGlmIChjb250cm9sQ2xhc3NJbXBvcnRzLmxlbmd0aCA9PT0gMCAmJiBmb3JtQnVpbGRlckltcG9ydCA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdXBkYXRlID0gdHJlZS5iZWdpblVwZGF0ZShyZWxhdGl2ZShiYXNlUGF0aCwgc291cmNlRmlsZS5maWxlTmFtZSkpO1xuXG4gICAgLy8gRm9yIGVhY2ggY29udHJvbCBjbGFzcywgbWlncmF0ZSBhbGwgb2YgaXRzIHVzZXMuXG4gICAgZm9yIChjb25zdCBpbXBvcnRTcGVjaWZpZXIgb2YgY29udHJvbENsYXNzSW1wb3J0cykge1xuICAgICAgY29uc3QgdXNhZ2VzID0gZmluZENvbnRyb2xDbGFzc1VzYWdlcyhzb3VyY2VGaWxlLCB0eXBlQ2hlY2tlciwgaW1wb3J0U3BlY2lmaWVyKTtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB1c2FnZXMpIHtcbiAgICAgICAgbWlncmF0ZU5vZGUodXBkYXRlLCBub2RlLCBpbXBvcnRTcGVjaWZpZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvciBlYWNoIEZvcm1CdWlsZGVyIG1ldGhvZCwgbWlncmF0ZSBhbGwgb2YgaXRzIHVzZXMuXG4gICAgY29uc3Qgbm9kZXMgPSBmaW5kRm9ybUJ1aWxkZXJDYWxscyhzb3VyY2VGaWxlLCB0eXBlQ2hlY2tlciwgZm9ybUJ1aWxkZXJJbXBvcnQpO1xuICAgIGZvciAoY29uc3QgbiBvZiBub2Rlcykge1xuICAgICAgbWlncmF0ZU5vZGUodXBkYXRlLCBuLCBmb3JtQnVpbGRlckltcG9ydCk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHRoZSBhbnkgc3ltYm9sIHVzZWQgYnkgdGhlIG1pZ3JhdGVkIGNhbGxzLlxuICAgIGlmIChnZXRBbnlJbXBvcnQoc291cmNlRmlsZSkgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZpcnN0VmFsaWRGb3Jtc0ltcG9ydCA9XG4gICAgICAgICAgWy4uLmNvbnRyb2xDbGFzc0ltcG9ydHMsIGZvcm1CdWlsZGVySW1wb3J0XS5zb3J0KCkuZmlsdGVyKGkgPT4gaSAhPT0gbnVsbClbMF0hO1xuICAgICAgaW5zZXJ0QW55SW1wb3J0KHVwZGF0ZSwgZmlyc3RWYWxpZEZvcm1zSW1wb3J0KTtcbiAgICB9XG5cbiAgICB0cmVlLmNvbW1pdFVwZGF0ZSh1cGRhdGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaWdyYXRlTm9kZShcbiAgICB1cGRhdGU6IFVwZGF0ZVJlY29yZGVyLCBub2RlOiBNaWdyYXRhYmxlTm9kZSwgaW1wb3J0ZDogdHMuSW1wb3J0U3BlY2lmaWVyfG51bGwpIHtcbiAgaWYgKGltcG9ydGQgPT09IG51bGwpIHJldHVybjtcbiAgdXBkYXRlLmluc2VydFJpZ2h0KG5vZGUubm9kZS5nZXRFbmQoKSwgbm9kZS5nZW5lcmljKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFueUltcG9ydCh1cGRhdGU6IFVwZGF0ZVJlY29yZGVyLCBpbXBvcnRkOiB0cy5JbXBvcnRTcGVjaWZpZXIpIHtcbiAgdXBkYXRlLmluc2VydExlZnQoaW1wb3J0ZC5nZXRTdGFydCgpLCBgJHthbnlTeW1ib2xOYW1lfSwgYCk7XG59XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy90eXBlZC1mb3Jtcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDJEQUEyRjtJQUMzRiwrQkFBOEI7SUFFOUIsa0dBQTJFO0lBQzNFLDJGQUE0RjtJQUU1RiwrRUFBbUM7SUFFbkM7UUFDRSxPQUFPLENBQU8sSUFBVSxFQUFFLEVBQUU7WUFDMUIsTUFBTSxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsR0FBRyxNQUFNLElBQUEsZ0RBQXVCLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUUvQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDcEIsTUFBTSxJQUFJLGdDQUFtQixDQUN6QixrRUFBa0UsQ0FBQyxDQUFDO2FBQ3pFO1lBRUQsS0FBSyxNQUFNLFlBQVksSUFBSSxRQUFRLEVBQUU7Z0JBQ25DLHNCQUFzQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDdEQ7UUFDSCxDQUFDLENBQUEsQ0FBQztJQUNKLENBQUM7SUFmRCw0QkFlQztJQUVELFNBQVMsc0JBQXNCLENBQUMsSUFBVSxFQUFFLFlBQW9CLEVBQUUsUUFBZ0I7UUFDaEYsTUFBTSxFQUFDLE9BQU8sRUFBQyxHQUFHLElBQUEsc0NBQXNCLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQ2IsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUEsOEJBQWMsRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakcsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7WUFDcEMsSUFBSSxNQUFNLEdBQXdCLElBQUksQ0FBQztZQUV2QyxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQWdCLEVBQUUsVUFBa0IsRUFBRSxJQUFZLEVBQUUsRUFBRTtnQkFDdEUsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO29CQUNuQiwyRUFBMkU7b0JBQzNFLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUEsZUFBUSxFQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDcEU7Z0JBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQztZQUVGLElBQUEsa0JBQVcsRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRS9DLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUMzQjtTQUNGO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1J1bGUsIFNjaGVtYXRpY3NFeGNlcHRpb24sIFRyZWUsIFVwZGF0ZVJlY29yZGVyfSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcyc7XG5pbXBvcnQge3JlbGF0aXZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtnZXRQcm9qZWN0VHNDb25maWdQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvcHJvamVjdF90c2NvbmZpZ19wYXRocyc7XG5pbXBvcnQge2Nhbk1pZ3JhdGVGaWxlLCBjcmVhdGVNaWdyYXRpb25Qcm9ncmFtfSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L2NvbXBpbGVyX2hvc3QnO1xuXG5pbXBvcnQge21pZ3JhdGVGaWxlfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpOiBSdWxlIHtcbiAgcmV0dXJuIGFzeW5jICh0cmVlOiBUcmVlKSA9PiB7XG4gICAgY29uc3Qge2J1aWxkUGF0aHMsIHRlc3RQYXRoc30gPSBhd2FpdCBnZXRQcm9qZWN0VHNDb25maWdQYXRocyh0cmVlKTtcbiAgICBjb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgYWxsUGF0aHMgPSBbLi4uYnVpbGRQYXRocywgLi4udGVzdFBhdGhzXTtcblxuICAgIGlmICghYWxsUGF0aHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgICAnQ291bGQgbm90IGZpbmQgYW55IHRzY29uZmlnIGZpbGUuIENhbm5vdCBtaWdyYXRlIHRvIFR5cGVkIEZvcm1zLicpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHNjb25maWdQYXRoIG9mIGFsbFBhdGhzKSB7XG4gICAgICBydW5UeXBlZEZvcm1zTWlncmF0aW9uKHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcnVuVHlwZWRGb3Jtc01pZ3JhdGlvbih0cmVlOiBUcmVlLCB0c2NvbmZpZ1BhdGg6IHN0cmluZywgYmFzZVBhdGg6IHN0cmluZykge1xuICBjb25zdCB7cHJvZ3JhbX0gPSBjcmVhdGVNaWdyYXRpb25Qcm9ncmFtKHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgpO1xuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3Qgc291cmNlRmlsZXMgPVxuICAgICAgcHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpLmZpbHRlcihzb3VyY2VGaWxlID0+IGNhbk1pZ3JhdGVGaWxlKGJhc2VQYXRoLCBzb3VyY2VGaWxlLCBwcm9ncmFtKSk7XG5cbiAgZm9yIChjb25zdCBzb3VyY2VGaWxlIG9mIHNvdXJjZUZpbGVzKSB7XG4gICAgbGV0IHVwZGF0ZTogVXBkYXRlUmVjb3JkZXJ8bnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCByZXdyaXRlciA9IChzdGFydFBvczogbnVtYmVyLCBvcmlnTGVuZ3RoOiBudW1iZXIsIHRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHVwZGF0ZSA9PT0gbnVsbCkge1xuICAgICAgICAvLyBMYXppbHkgaW5pdGlhbGl6ZSB1cGRhdGUsIGJlY2F1c2UgbW9zdCBmaWxlcyB3aWxsIG5vdCByZXF1aXJlIG1pZ3JhdGlvbi5cbiAgICAgICAgdXBkYXRlID0gdHJlZS5iZWdpblVwZGF0ZShyZWxhdGl2ZShiYXNlUGF0aCwgc291cmNlRmlsZS5maWxlTmFtZSkpO1xuICAgICAgfVxuICAgICAgdXBkYXRlLnJlbW92ZShzdGFydFBvcywgb3JpZ0xlbmd0aCk7XG4gICAgICB1cGRhdGUuaW5zZXJ0TGVmdChzdGFydFBvcywgdGV4dCk7XG4gICAgfTtcblxuICAgIG1pZ3JhdGVGaWxlKHNvdXJjZUZpbGUsIHR5cGVDaGVja2VyLCByZXdyaXRlcik7XG5cbiAgICBpZiAodXBkYXRlICE9PSBudWxsKSB7XG4gICAgICB0cmVlLmNvbW1pdFVwZGF0ZSh1cGRhdGUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -7,15 +7,13 @@
7
7
  */
8
8
  /// <amd-module name="@angular/core/schematics/migrations/typed-forms/util" />
9
9
  import ts from 'typescript';
10
- export declare const controlClassNames: string[];
11
- export declare const builderMethodNames: string[];
12
- export declare const anySymbolName = "AnyForUntypedForms";
10
+ export declare const classes: Set<string>;
11
+ export declare const formControl = "FormControl";
12
+ export declare const untypedPrefix = "Untyped";
13
+ export declare const forms = "@angular/forms";
13
14
  export interface MigratableNode {
14
- node: ts.Expression;
15
- generic: string;
15
+ node: ts.Node;
16
+ importName: string;
16
17
  }
17
- export declare function getControlClassImports(sourceFile: ts.SourceFile): (ts.ImportSpecifier | null)[];
18
- export declare function getFormBuilderImport(sourceFile: ts.SourceFile): ts.ImportSpecifier | null;
19
- export declare function getAnyImport(sourceFile: ts.SourceFile): ts.ImportSpecifier | null;
20
- export declare function findControlClassUsages(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker, importSpecifier: ts.ImportSpecifier | null): MigratableNode[];
21
- export declare function findFormBuilderCalls(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker, importSpecifier: ts.ImportSpecifier | null): MigratableNode[];
18
+ export declare type rewriteFn = (startPos: number, origLength: number, text: string) => void;
19
+ export declare function migrateFile(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker, rewrite: rewriteFn): void;