@angular/core 12.1.0-next.5 → 12.1.2

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 (158) hide show
  1. package/bundles/core-testing.umd.js +239 -46
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core.umd.js +60 -37
  4. package/bundles/core.umd.js.map +1 -1
  5. package/core.d.ts +45 -19
  6. package/core.metadata.json +1 -1
  7. package/esm2015/src/application_init.js +5 -5
  8. package/esm2015/src/application_ref.js +29 -8
  9. package/esm2015/src/change_detection/differs/iterable_differs.js +1 -1
  10. package/esm2015/src/compiler/compiler_facade_interface.js +1 -1
  11. package/esm2015/src/error_handler.js +2 -6
  12. package/esm2015/src/event_emitter.js +1 -1
  13. package/esm2015/src/linker/component_factory_resolver.js +1 -1
  14. package/esm2015/src/linker/template_ref.js +1 -1
  15. package/esm2015/src/linker/view_container_ref.js +1 -1
  16. package/esm2015/src/metadata/di.js +1 -1
  17. package/esm2015/src/metadata/do_boostrap.js +1 -1
  18. package/esm2015/src/render3/component_ref.js +1 -1
  19. package/esm2015/src/render3/definition.js +16 -16
  20. package/esm2015/src/render3/ng_module_ref.js +1 -1
  21. package/esm2015/src/render3/view_ref.js +1 -1
  22. package/esm2015/src/sanitization/bypass.js +1 -1
  23. package/esm2015/src/version.js +1 -1
  24. package/esm2015/src/view/entrypoint.js +1 -1
  25. package/esm2015/src/view/refs.js +1 -1
  26. package/esm2015/testing/src/ng_zone_mock.js +1 -1
  27. package/esm2015/testing/src/r3_test_bed.js +84 -7
  28. package/esm2015/testing/src/r3_test_bed_compiler.js +4 -1
  29. package/esm2015/testing/src/resolvers.js +1 -1
  30. package/esm2015/testing/src/test_bed.js +110 -21
  31. package/esm2015/testing/src/test_bed_common.js +7 -1
  32. package/esm2015/testing/src/test_hooks.js +45 -0
  33. package/esm2015/testing/src/testing.js +3 -3
  34. package/fesm2015/core.js +50 -33
  35. package/fesm2015/core.js.map +1 -1
  36. package/fesm2015/testing.js +216 -29
  37. package/fesm2015/testing.js.map +1 -1
  38. package/package.json +1 -1
  39. package/schematics/migrations/missing-injectable/providers_evaluator.js +1 -1
  40. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.js +1 -1
  41. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.js +1 -1
  42. package/schematics/migrations.json +1 -1
  43. package/src/r3_symbols.d.ts +2 -3
  44. package/testing/testing.d.ts +64 -5
  45. package/testing/testing.metadata.json +1 -1
  46. package/testing.d.ts +1 -1
  47. package/esm2015/testing/src/before_each.js +0 -33
  48. package/schematics/migrations/abstract-control-parent/abstract-control-parent.externs.js +0 -0
  49. package/schematics/migrations/abstract-control-parent/index.mjs +0 -47
  50. package/schematics/migrations/abstract-control-parent/util.mjs +0 -50
  51. package/schematics/migrations/activated-route-snapshot-fragment/activated-route-snapshot-fragment.externs.js +0 -0
  52. package/schematics/migrations/activated-route-snapshot-fragment/index.mjs +0 -48
  53. package/schematics/migrations/activated-route-snapshot-fragment/util.mjs +0 -33
  54. package/schematics/migrations/can-activate-with-redirect-to/can-activate-with-redirect-to.externs.js +0 -0
  55. package/schematics/migrations/can-activate-with-redirect-to/index.mjs +0 -44
  56. package/schematics/migrations/can-activate-with-redirect-to/util.mjs +0 -55
  57. package/schematics/migrations/deep-shadow-piercing-selector/deep-shadow-piercing-selector.externs.js +0 -0
  58. package/schematics/migrations/deep-shadow-piercing-selector/index.mjs +0 -36
  59. package/schematics/migrations/dynamic-queries/dynamic-queries.externs.js +0 -0
  60. package/schematics/migrations/dynamic-queries/index.mjs +0 -51
  61. package/schematics/migrations/dynamic-queries/util.mjs +0 -65
  62. package/schematics/migrations/initial-navigation/collector.mjs +0 -105
  63. package/schematics/migrations/initial-navigation/index.mjs +0 -61
  64. package/schematics/migrations/initial-navigation/initial-navigation.externs.js +0 -0
  65. package/schematics/migrations/initial-navigation/transform.mjs +0 -54
  66. package/schematics/migrations/initial-navigation/update_recorder.mjs +0 -9
  67. package/schematics/migrations/initial-navigation/util.mjs +0 -28
  68. package/schematics/migrations/missing-injectable/definition_collector.mjs +0 -75
  69. package/schematics/migrations/missing-injectable/index.mjs +0 -100
  70. package/schematics/migrations/missing-injectable/missing-injectable.externs.js +0 -0
  71. package/schematics/migrations/missing-injectable/providers_evaluator.mjs +0 -50
  72. package/schematics/migrations/missing-injectable/transform.mjs +0 -187
  73. package/schematics/migrations/missing-injectable/update_recorder.mjs +0 -9
  74. package/schematics/migrations/module-with-providers/collector.mjs +0 -59
  75. package/schematics/migrations/module-with-providers/index.mjs +0 -71
  76. package/schematics/migrations/module-with-providers/module-with-providers.externs.js +0 -0
  77. package/schematics/migrations/module-with-providers/transform.mjs +0 -134
  78. package/schematics/migrations/module-with-providers/util.mjs +0 -25
  79. package/schematics/migrations/move-document/document_import_visitor.mjs +0 -60
  80. package/schematics/migrations/move-document/index.mjs +0 -71
  81. package/schematics/migrations/move-document/move-document.externs.js +0 -0
  82. package/schematics/migrations/move-document/move-import.mjs +0 -45
  83. package/schematics/migrations/native-view-encapsulation/index.mjs +0 -41
  84. package/schematics/migrations/native-view-encapsulation/native-view-encapsulation.externs.js +0 -0
  85. package/schematics/migrations/native-view-encapsulation/util.mjs +0 -34
  86. package/schematics/migrations/navigation-extras-omissions/index.mjs +0 -47
  87. package/schematics/migrations/navigation-extras-omissions/navigation-extras-omissions.externs.js +0 -0
  88. package/schematics/migrations/navigation-extras-omissions/util.mjs +0 -111
  89. package/schematics/migrations/relative-link-resolution/collector.mjs +0 -81
  90. package/schematics/migrations/relative-link-resolution/index.mjs +0 -62
  91. package/schematics/migrations/relative-link-resolution/relative-link-resolution.externs.js +0 -0
  92. package/schematics/migrations/relative-link-resolution/transform.mjs +0 -51
  93. package/schematics/migrations/relative-link-resolution/update_recorder.mjs +0 -9
  94. package/schematics/migrations/relative-link-resolution/util.mjs +0 -28
  95. package/schematics/migrations/renderer-to-renderer2/helpers.mjs +0 -224
  96. package/schematics/migrations/renderer-to-renderer2/index.mjs +0 -113
  97. package/schematics/migrations/renderer-to-renderer2/migration.mjs +0 -211
  98. package/schematics/migrations/renderer-to-renderer2/renderer-to-renderer2.externs.js +0 -0
  99. package/schematics/migrations/renderer-to-renderer2/util.mjs +0 -69
  100. package/schematics/migrations/router-preserve-query-params/index.mjs +0 -50
  101. package/schematics/migrations/router-preserve-query-params/router-preserve-query-params.externs.js +0 -0
  102. package/schematics/migrations/router-preserve-query-params/util.mjs +0 -88
  103. package/schematics/migrations/static-queries/angular/directive_inputs.mjs +0 -70
  104. package/schematics/migrations/static-queries/angular/ng_query_visitor.mjs +0 -113
  105. package/schematics/migrations/static-queries/angular/query-definition.mjs +0 -20
  106. package/schematics/migrations/static-queries/angular/super_class.mjs +0 -21
  107. package/schematics/migrations/static-queries/index.mjs +0 -206
  108. package/schematics/migrations/static-queries/static-queries.externs.js +0 -0
  109. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.mjs +0 -200
  110. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.mjs +0 -24
  111. package/schematics/migrations/static-queries/strategies/timing-strategy.mjs +0 -9
  112. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.mjs +0 -355
  113. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.mjs +0 -38
  114. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.mjs +0 -80
  115. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.mjs +0 -154
  116. package/schematics/migrations/static-queries/transform.mjs +0 -88
  117. package/schematics/migrations/template-var-assignment/analyze_template.mjs +0 -25
  118. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.mjs +0 -65
  119. package/schematics/migrations/template-var-assignment/index.mjs +0 -68
  120. package/schematics/migrations/template-var-assignment/template-var-assignment.externs.js +0 -0
  121. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.mjs +0 -92
  122. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.mjs +0 -286
  123. package/schematics/migrations/undecorated-classes-with-decorated-fields/undecorated-classes-with-decorated-fields.externs.js +0 -0
  124. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.mjs +0 -9
  125. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.mjs +0 -43
  126. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.mjs +0 -82
  127. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.mjs +0 -102
  128. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.mjs +0 -111
  129. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.mjs +0 -17
  130. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.mjs +0 -51
  131. package/schematics/migrations/undecorated-classes-with-di/index.mjs +0 -162
  132. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.mjs +0 -124
  133. package/schematics/migrations/undecorated-classes-with-di/transform.mjs +0 -356
  134. package/schematics/migrations/undecorated-classes-with-di/undecorated-classes-with-di.externs.js +0 -0
  135. package/schematics/migrations/undecorated-classes-with-di/update_recorder.mjs +0 -9
  136. package/schematics/migrations/wait-for-async/index.mjs +0 -76
  137. package/schematics/migrations/wait-for-async/util.mjs +0 -23
  138. package/schematics/migrations/wait-for-async/wait-for-async.externs.js +0 -0
  139. package/schematics/migrations/xhr-factory/index.mjs +0 -91
  140. package/schematics/migrations/xhr-factory/xhr-factory.externs.js +0 -0
  141. package/schematics/utils/import_manager.mjs +0 -197
  142. package/schematics/utils/line_mappings.mjs +0 -60
  143. package/schematics/utils/ng_component_template.mjs +0 -96
  144. package/schematics/utils/ng_decorators.mjs +0 -23
  145. package/schematics/utils/parse_html.mjs +0 -24
  146. package/schematics/utils/project_tsconfig_paths.mjs +0 -74
  147. package/schematics/utils/schematics_prompt.mjs +0 -30
  148. package/schematics/utils/typescript/class_declaration.mjs +0 -33
  149. package/schematics/utils/typescript/compiler_host.mjs +0 -66
  150. package/schematics/utils/typescript/decorators.mjs +0 -20
  151. package/schematics/utils/typescript/find_base_classes.mjs +0 -30
  152. package/schematics/utils/typescript/functions.mjs +0 -28
  153. package/schematics/utils/typescript/imports.mjs +0 -91
  154. package/schematics/utils/typescript/nodes.mjs +0 -57
  155. package/schematics/utils/typescript/parse_tsconfig.mjs +0 -26
  156. package/schematics/utils/typescript/property_name.mjs +0 -23
  157. package/schematics/utils/typescript/symbol.mjs +0 -72
  158. package/schematics/utils/utils.externs.js +0 -0
@@ -1,34 +0,0 @@
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
- import * as ts from 'typescript';
9
- import { getImportOfIdentifier } from '../../utils/typescript/imports';
10
- /** Finds all the Identifier nodes in a file that refer to `Native` view encapsulation. */
11
- export function findNativeEncapsulationNodes(typeChecker, sourceFile) {
12
- const results = new Set();
13
- sourceFile.forEachChild(function walkNode(node) {
14
- // Note that we look directly for nodes in the form of `<something>.Native`, rather than going
15
- // for `Component` class decorators, because it's much simpler and it allows us to handle cases
16
- // where `ViewEncapsulation.Native` might be used in a different context (e.g. a variable).
17
- // Using the encapsulation outside of a decorator is an edge case, but we do have public APIs
18
- // where it can be passed in (see the `defaultViewEncapsulation` property on the
19
- // `COMPILER_OPTIONS` provider).
20
- if (ts.isPropertyAccessExpression(node) && ts.isIdentifier(node.name) &&
21
- node.name.text === 'Native' && ts.isIdentifier(node.expression)) {
22
- const expressionImport = getImportOfIdentifier(typeChecker, node.expression);
23
- if (expressionImport && expressionImport.name === 'ViewEncapsulation' &&
24
- expressionImport.importModule === '@angular/core') {
25
- results.add(node.name);
26
- }
27
- }
28
- else {
29
- node.forEachChild(walkNode);
30
- }
31
- });
32
- return results;
33
- }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL25hdGl2ZS12aWV3LWVuY2Fwc3VsYXRpb24vdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVyRSwwRkFBMEY7QUFDMUYsTUFBTSxVQUFVLDRCQUE0QixDQUN4QyxXQUEyQixFQUFFLFVBQXlCO0lBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO0lBRXpDLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxRQUFRLENBQUMsSUFBYTtRQUNyRCw4RkFBOEY7UUFDOUYsK0ZBQStGO1FBQy9GLDJGQUEyRjtRQUMzRiw2RkFBNkY7UUFDN0YsZ0ZBQWdGO1FBQ2hGLGdDQUFnQztRQUNoQyxJQUFJLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ25FLE1BQU0sZ0JBQWdCLEdBQUcscUJBQXFCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3RSxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLElBQUksS0FBSyxtQkFBbUI7Z0JBQ2pFLGdCQUFnQixDQUFDLFlBQVksS0FBSyxlQUFlLEVBQUU7Z0JBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0SW1wb3J0T2ZJZGVudGlmaWVyfSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L2ltcG9ydHMnO1xuXG4vKiogRmluZHMgYWxsIHRoZSBJZGVudGlmaWVyIG5vZGVzIGluIGEgZmlsZSB0aGF0IHJlZmVyIHRvIGBOYXRpdmVgIHZpZXcgZW5jYXBzdWxhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTmF0aXZlRW5jYXBzdWxhdGlvbk5vZGVzKFxuICAgIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IFNldDx0cy5JZGVudGlmaWVyPiB7XG4gIGNvbnN0IHJlc3VsdHMgPSBuZXcgU2V0PHRzLklkZW50aWZpZXI+KCk7XG5cbiAgc291cmNlRmlsZS5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24gd2Fsa05vZGUobm9kZTogdHMuTm9kZSkge1xuICAgIC8vIE5vdGUgdGhhdCB3ZSBsb29rIGRpcmVjdGx5IGZvciBub2RlcyBpbiB0aGUgZm9ybSBvZiBgPHNvbWV0aGluZz4uTmF0aXZlYCwgcmF0aGVyIHRoYW4gZ29pbmdcbiAgICAvLyBmb3IgYENvbXBvbmVudGAgY2xhc3MgZGVjb3JhdG9ycywgYmVjYXVzZSBpdCdzIG11Y2ggc2ltcGxlciBhbmQgaXQgYWxsb3dzIHVzIHRvIGhhbmRsZSBjYXNlc1xuICAgIC8vIHdoZXJlIGBWaWV3RW5jYXBzdWxhdGlvbi5OYXRpdmVgIG1pZ2h0IGJlIHVzZWQgaW4gYSBkaWZmZXJlbnQgY29udGV4dCAoZS5nLiBhIHZhcmlhYmxlKS5cbiAgICAvLyBVc2luZyB0aGUgZW5jYXBzdWxhdGlvbiBvdXRzaWRlIG9mIGEgZGVjb3JhdG9yIGlzIGFuIGVkZ2UgY2FzZSwgYnV0IHdlIGRvIGhhdmUgcHVibGljIEFQSXNcbiAgICAvLyB3aGVyZSBpdCBjYW4gYmUgcGFzc2VkIGluIChzZWUgdGhlIGBkZWZhdWx0Vmlld0VuY2Fwc3VsYXRpb25gIHByb3BlcnR5IG9uIHRoZVxuICAgIC8vIGBDT01QSUxFUl9PUFRJT05TYCBwcm92aWRlcikuXG4gICAgaWYgKHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGUpICYmIHRzLmlzSWRlbnRpZmllcihub2RlLm5hbWUpICYmXG4gICAgICAgIG5vZGUubmFtZS50ZXh0ID09PSAnTmF0aXZlJyAmJiB0cy5pc0lkZW50aWZpZXIobm9kZS5leHByZXNzaW9uKSkge1xuICAgICAgY29uc3QgZXhwcmVzc2lvbkltcG9ydCA9IGdldEltcG9ydE9mSWRlbnRpZmllcih0eXBlQ2hlY2tlciwgbm9kZS5leHByZXNzaW9uKTtcbiAgICAgIGlmIChleHByZXNzaW9uSW1wb3J0ICYmIGV4cHJlc3Npb25JbXBvcnQubmFtZSA9PT0gJ1ZpZXdFbmNhcHN1bGF0aW9uJyAmJlxuICAgICAgICAgIGV4cHJlc3Npb25JbXBvcnQuaW1wb3J0TW9kdWxlID09PSAnQGFuZ3VsYXIvY29yZScpIHtcbiAgICAgICAgcmVzdWx0cy5hZGQobm9kZS5uYW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5mb3JFYWNoQ2hpbGQod2Fsa05vZGUpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iXX0=
@@ -1,47 +0,0 @@
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
- import { SchematicsException } from '@angular-devkit/schematics';
9
- import { relative } from 'path';
10
- import * as ts from 'typescript';
11
- import { getProjectTsConfigPaths } from '../../utils/project_tsconfig_paths';
12
- import { canMigrateFile, createMigrationProgram } from '../../utils/typescript/compiler_host';
13
- import { findLiteralsToMigrate, migrateLiteral } from './util';
14
- /** Migration that switches `Router.navigateByUrl` and `Router.createUrlTree` to a new signature. */
15
- export default function () {
16
- return (tree) => {
17
- const { buildPaths, testPaths } = getProjectTsConfigPaths(tree);
18
- const basePath = process.cwd();
19
- const allPaths = [...buildPaths, ...testPaths];
20
- if (!allPaths.length) {
21
- throw new SchematicsException('Could not find any tsconfig file. Cannot migrate ' +
22
- 'Router.navigateByUrl and Router.createUrlTree calls.');
23
- }
24
- for (const tsconfigPath of allPaths) {
25
- runNavigationExtrasOmissionsMigration(tree, tsconfigPath, basePath);
26
- }
27
- };
28
- }
29
- function runNavigationExtrasOmissionsMigration(tree, tsconfigPath, basePath) {
30
- const { program } = createMigrationProgram(tree, tsconfigPath, basePath);
31
- const typeChecker = program.getTypeChecker();
32
- const printer = ts.createPrinter();
33
- const sourceFiles = program.getSourceFiles().filter(sourceFile => canMigrateFile(basePath, sourceFile, program));
34
- sourceFiles.forEach(sourceFile => {
35
- const literalsToMigrate = findLiteralsToMigrate(sourceFile, typeChecker);
36
- const update = tree.beginUpdate(relative(basePath, sourceFile.fileName));
37
- literalsToMigrate.forEach((instances, methodName) => instances.forEach(instance => {
38
- const migratedNode = migrateLiteral(methodName, instance);
39
- if (migratedNode !== instance) {
40
- update.remove(instance.getStart(), instance.getWidth());
41
- update.insertRight(instance.getStart(), printer.printNode(ts.EmitHint.Unspecified, migratedNode, sourceFile));
42
- }
43
- }));
44
- tree.commitUpdate(update);
45
- });
46
- }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy9uYXZpZ2F0aW9uLWV4dHJhcy1vbWlzc2lvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFPLG1CQUFtQixFQUFPLE1BQU0sNEJBQTRCLENBQUM7QUFDM0UsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsY0FBYyxFQUFFLHNCQUFzQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFDLHFCQUFxQixFQUFFLGNBQWMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUc3RCxvR0FBb0c7QUFDcEcsTUFBTSxDQUFDLE9BQU87SUFDWixPQUFPLENBQUMsSUFBVSxFQUFFLEVBQUU7UUFDcEIsTUFBTSxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxtQkFBbUIsQ0FDekIsbURBQW1EO2dCQUNuRCxzREFBc0QsQ0FBQyxDQUFDO1NBQzdEO1FBRUQsS0FBSyxNQUFNLFlBQVksSUFBSSxRQUFRLEVBQUU7WUFDbkMscUNBQXFDLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNyRTtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHFDQUFxQyxDQUFDLElBQVUsRUFBRSxZQUFvQixFQUFFLFFBQWdCO0lBQy9GLE1BQU0sRUFBQyxPQUFPLEVBQUMsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM3QyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsTUFBTSxXQUFXLEdBQ2IsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFakcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUMvQixNQUFNLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFekUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoRixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRTFELElBQUksWUFBWSxLQUFLLFFBQVEsRUFBRTtnQkFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxXQUFXLENBQ2QsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUNuQixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO2FBQzNFO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UnVsZSwgU2NoZW1hdGljc0V4Y2VwdGlvbiwgVHJlZX0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtnZXRQcm9qZWN0VHNDb25maWdQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvcHJvamVjdF90c2NvbmZpZ19wYXRocyc7XG5pbXBvcnQge2Nhbk1pZ3JhdGVGaWxlLCBjcmVhdGVNaWdyYXRpb25Qcm9ncmFtfSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L2NvbXBpbGVyX2hvc3QnO1xuaW1wb3J0IHtmaW5kTGl0ZXJhbHNUb01pZ3JhdGUsIG1pZ3JhdGVMaXRlcmFsfSBmcm9tICcuL3V0aWwnO1xuXG5cbi8qKiBNaWdyYXRpb24gdGhhdCBzd2l0Y2hlcyBgUm91dGVyLm5hdmlnYXRlQnlVcmxgIGFuZCBgUm91dGVyLmNyZWF0ZVVybFRyZWVgIHRvIGEgbmV3IHNpZ25hdHVyZS4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCk6IFJ1bGUge1xuICByZXR1cm4gKHRyZWU6IFRyZWUpID0+IHtcbiAgICBjb25zdCB7YnVpbGRQYXRocywgdGVzdFBhdGhzfSA9IGdldFByb2plY3RUc0NvbmZpZ1BhdGhzKHRyZWUpO1xuICAgIGNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBhbGxQYXRocyA9IFsuLi5idWlsZFBhdGhzLCAuLi50ZXN0UGF0aHNdO1xuXG4gICAgaWYgKCFhbGxQYXRocy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBTY2hlbWF0aWNzRXhjZXB0aW9uKFxuICAgICAgICAgICdDb3VsZCBub3QgZmluZCBhbnkgdHNjb25maWcgZmlsZS4gQ2Fubm90IG1pZ3JhdGUgJyArXG4gICAgICAgICAgJ1JvdXRlci5uYXZpZ2F0ZUJ5VXJsIGFuZCBSb3V0ZXIuY3JlYXRlVXJsVHJlZSBjYWxscy4nKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRzY29uZmlnUGF0aCBvZiBhbGxQYXRocykge1xuICAgICAgcnVuTmF2aWdhdGlvbkV4dHJhc09taXNzaW9uc01pZ3JhdGlvbih0cmVlLCB0c2NvbmZpZ1BhdGgsIGJhc2VQYXRoKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJ1bk5hdmlnYXRpb25FeHRyYXNPbWlzc2lvbnNNaWdyYXRpb24odHJlZTogVHJlZSwgdHNjb25maWdQYXRoOiBzdHJpbmcsIGJhc2VQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3Qge3Byb2dyYW19ID0gY3JlYXRlTWlncmF0aW9uUHJvZ3JhbSh0cmVlLCB0c2NvbmZpZ1BhdGgsIGJhc2VQYXRoKTtcbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKCk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzID1cbiAgICAgIHByb2dyYW0uZ2V0U291cmNlRmlsZXMoKS5maWx0ZXIoc291cmNlRmlsZSA9PiBjYW5NaWdyYXRlRmlsZShiYXNlUGF0aCwgc291cmNlRmlsZSwgcHJvZ3JhbSkpO1xuXG4gIHNvdXJjZUZpbGVzLmZvckVhY2goc291cmNlRmlsZSA9PiB7XG4gICAgY29uc3QgbGl0ZXJhbHNUb01pZ3JhdGUgPSBmaW5kTGl0ZXJhbHNUb01pZ3JhdGUoc291cmNlRmlsZSwgdHlwZUNoZWNrZXIpO1xuICAgIGNvbnN0IHVwZGF0ZSA9IHRyZWUuYmVnaW5VcGRhdGUocmVsYXRpdmUoYmFzZVBhdGgsIHNvdXJjZUZpbGUuZmlsZU5hbWUpKTtcblxuICAgIGxpdGVyYWxzVG9NaWdyYXRlLmZvckVhY2goKGluc3RhbmNlcywgbWV0aG9kTmFtZSkgPT4gaW5zdGFuY2VzLmZvckVhY2goaW5zdGFuY2UgPT4ge1xuICAgICAgY29uc3QgbWlncmF0ZWROb2RlID0gbWlncmF0ZUxpdGVyYWwobWV0aG9kTmFtZSwgaW5zdGFuY2UpO1xuXG4gICAgICBpZiAobWlncmF0ZWROb2RlICE9PSBpbnN0YW5jZSkge1xuICAgICAgICB1cGRhdGUucmVtb3ZlKGluc3RhbmNlLmdldFN0YXJ0KCksIGluc3RhbmNlLmdldFdpZHRoKCkpO1xuICAgICAgICB1cGRhdGUuaW5zZXJ0UmlnaHQoXG4gICAgICAgICAgICBpbnN0YW5jZS5nZXRTdGFydCgpLFxuICAgICAgICAgICAgcHJpbnRlci5wcmludE5vZGUodHMuRW1pdEhpbnQuVW5zcGVjaWZpZWQsIG1pZ3JhdGVkTm9kZSwgc291cmNlRmlsZSkpO1xuICAgICAgfVxuICAgIH0pKTtcblxuICAgIHRyZWUuY29tbWl0VXBkYXRlKHVwZGF0ZSk7XG4gIH0pO1xufVxuIl19
@@ -1,111 +0,0 @@
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
- import * as ts from 'typescript';
9
- import { getImportSpecifier } from '../../utils/typescript/imports';
10
- import { isReferenceToImport } from '../../utils/typescript/symbol';
11
- /**
12
- * Configures the methods that the migration should be looking for
13
- * and the properties from `NavigationExtras` that should be preserved.
14
- */
15
- const methodConfig = new Map([
16
- ['navigateByUrl', new Set(['skipLocationChange', 'replaceUrl', 'state'])],
17
- [
18
- 'createUrlTree', new Set([
19
- 'relativeTo', 'queryParams', 'fragment', 'preserveQueryParams', 'queryParamsHandling',
20
- 'preserveFragment'
21
- ])
22
- ]
23
- ]);
24
- export function migrateLiteral(methodName, node) {
25
- const allowedProperties = methodConfig.get(methodName);
26
- if (!allowedProperties) {
27
- throw Error(`Attempting to migrate unconfigured method called ${methodName}.`);
28
- }
29
- const propertiesToKeep = [];
30
- const removedPropertyNames = [];
31
- node.properties.forEach(property => {
32
- // Only look for regular and shorthand property assignments since resolving things
33
- // like spread operators becomes too complicated for this migration.
34
- if ((ts.isPropertyAssignment(property) || ts.isShorthandPropertyAssignment(property)) &&
35
- (ts.isStringLiteralLike(property.name) || ts.isNumericLiteral(property.name) ||
36
- ts.isIdentifier(property.name))) {
37
- if (allowedProperties.has(property.name.text)) {
38
- propertiesToKeep.push(property);
39
- }
40
- else {
41
- removedPropertyNames.push(property.name.text);
42
- }
43
- }
44
- else {
45
- propertiesToKeep.push(property);
46
- }
47
- });
48
- // Don't modify the node if there's nothing to remove.
49
- if (removedPropertyNames.length === 0) {
50
- return node;
51
- }
52
- // Note that the trailing/leading spaces are necessary so the comment looks good.
53
- const removalComment = ` Removed unsupported properties by Angular migration: ${removedPropertyNames.join(', ')}. `;
54
- if (propertiesToKeep.length > 0) {
55
- propertiesToKeep[0] = addUniqueLeadingComment(propertiesToKeep[0], removalComment);
56
- return ts.createObjectLiteral(propertiesToKeep);
57
- }
58
- else {
59
- return addUniqueLeadingComment(ts.createObjectLiteral(propertiesToKeep), removalComment);
60
- }
61
- }
62
- export function findLiteralsToMigrate(sourceFile, typeChecker) {
63
- const results = new Map(Array.from(methodConfig.keys(), key => [key, new Set()]));
64
- const routerImport = getImportSpecifier(sourceFile, '@angular/router', 'Router');
65
- const seenLiterals = new Map();
66
- if (routerImport) {
67
- sourceFile.forEachChild(function visitNode(node) {
68
- var _a;
69
- // Look for calls that look like `foo.<method to migrate>` with more than one parameter.
70
- if (ts.isCallExpression(node) && node.arguments.length > 1 &&
71
- ts.isPropertyAccessExpression(node.expression) && ts.isIdentifier(node.expression.name) &&
72
- methodConfig.has(node.expression.name.text)) {
73
- // Check whether the type of the object on which the
74
- // function is called refers to the Router import.
75
- if (isReferenceToImport(typeChecker, node.expression.expression, routerImport)) {
76
- const methodName = node.expression.name.text;
77
- const parameterDeclaration = (_a = typeChecker.getTypeAtLocation(node.arguments[1]).getSymbol()) === null || _a === void 0 ? void 0 : _a.valueDeclaration;
78
- // Find the source of the object literal.
79
- if (parameterDeclaration && ts.isObjectLiteralExpression(parameterDeclaration)) {
80
- if (!seenLiterals.has(parameterDeclaration)) {
81
- results.get(methodName).add(parameterDeclaration);
82
- seenLiterals.set(parameterDeclaration, methodName);
83
- // If the same literal has been passed into multiple different methods, we can't
84
- // migrate it, because the supported properties are different. When we detect such
85
- // a case, we drop it from the results so that it gets ignored. If it's used multiple
86
- // times for the same method, it can still be migrated.
87
- }
88
- else if (seenLiterals.get(parameterDeclaration) !== methodName) {
89
- results.forEach(literals => literals.delete(parameterDeclaration));
90
- }
91
- }
92
- }
93
- }
94
- else {
95
- node.forEachChild(visitNode);
96
- }
97
- });
98
- }
99
- return results;
100
- }
101
- /** Adds a leading comment to a node, if the node doesn't have such a comment already. */
102
- function addUniqueLeadingComment(node, comment) {
103
- const existingComments = ts.getSyntheticLeadingComments(node);
104
- // This logic is primarily to ensure that we don't add the same comment multiple
105
- // times when tslint runs over the same file again with outdated information.
106
- if (!existingComments || existingComments.every(c => c.text !== comment)) {
107
- return ts.addSyntheticLeadingComment(node, ts.SyntaxKind.MultiLineCommentTrivia, comment);
108
- }
109
- return node;
110
- }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL25hdmlnYXRpb24tZXh0cmFzLW9taXNzaW9ucy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRWxFOzs7R0FHRztBQUNILE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFzQjtJQUNoRCxDQUFDLGVBQWUsRUFBRSxJQUFJLEdBQUcsQ0FBUyxDQUFDLG9CQUFvQixFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pGO1FBQ0UsZUFBZSxFQUFFLElBQUksR0FBRyxDQUFTO1lBQy9CLFlBQVksRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQjtZQUNyRixrQkFBa0I7U0FDbkIsQ0FBQztLQUNIO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsVUFBa0IsRUFBRSxJQUFnQztJQUN0RCxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdkQsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1FBQ3RCLE1BQU0sS0FBSyxDQUFDLG9EQUFvRCxVQUFVLEdBQUcsQ0FBQyxDQUFDO0tBQ2hGO0lBRUQsTUFBTSxnQkFBZ0IsR0FBa0MsRUFBRSxDQUFDO0lBQzNELE1BQU0sb0JBQW9CLEdBQWEsRUFBRSxDQUFDO0lBRTFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2pDLGtGQUFrRjtR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QUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsRUFBRTtRQUN4RSxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMzRjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtnZXRJbXBvcnRTcGVjaWZpZXJ9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvaW1wb3J0cyc7XG5pbXBvcnQge2lzUmVmZXJlbmNlVG9JbXBvcnR9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvc3ltYm9sJztcblxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSBtZXRob2RzIHRoYXQgdGhlIG1pZ3JhdGlvbiBzaG91bGQgYmUgbG9va2luZyBmb3JcbiAqIGFuZCB0aGUgcHJvcGVydGllcyBmcm9tIGBOYXZpZ2F0aW9uRXh0cmFzYCB0aGF0IHNob3VsZCBiZSBwcmVzZXJ2ZWQuXG4gKi9cbmNvbnN0IG1ldGhvZENvbmZpZyA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oW1xuICBbJ25hdmlnYXRlQnlVcmwnLCBuZXcgU2V0PHN0cmluZz4oWydza2lwTG9jYXRpb25DaGFuZ2UnLCAncmVwbGFjZVVybCcsICdzdGF0ZSddKV0sXG4gIFtcbiAgICAnY3JlYXRlVXJsVHJlZScsIG5ldyBTZXQ8c3RyaW5nPihbXG4gICAgICAncmVsYXRpdmVUbycsICdxdWVyeVBhcmFtcycsICdmcmFnbWVudCcsICdwcmVzZXJ2ZVF1ZXJ5UGFyYW1zJywgJ3F1ZXJ5UGFyYW1zSGFuZGxpbmcnLFxuICAgICAgJ3ByZXNlcnZlRnJhZ21lbnQnXG4gICAgXSlcbiAgXVxuXSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBtaWdyYXRlTGl0ZXJhbChcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcsIG5vZGU6IHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24ge1xuICBjb25zdCBhbGxvd2VkUHJvcGVydGllcyA9IG1ldGhvZENvbmZpZy5nZXQobWV0aG9kTmFtZSk7XG5cbiAgaWYgKCFhbGxvd2VkUHJvcGVydGllcykge1xuICAgIHRocm93IEVycm9yKGBBdHRlbXB0aW5nIHRvIG1pZ3JhdGUgdW5jb25maWd1cmVkIG1ldGhvZCBjYWxsZWQgJHttZXRob2ROYW1lfS5gKTtcbiAgfVxuXG4gIGNvbnN0IHByb3BlcnRpZXNUb0tlZXA6IHRzLk9iamVjdExpdGVyYWxFbGVtZW50TGlrZVtdID0gW107XG4gIGNvbnN0IHJlbW92ZWRQcm9wZXJ0eU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIG5vZGUucHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcbiAgICAvLyBPbmx5IGxvb2sgZm9yIHJlZ3VsYXIgYW5kIHNob3J0aGFuZCBwcm9wZXJ0eSBhc3NpZ25tZW50cyBzaW5jZSByZXNvbHZpbmcgdGhpbmdzXG4gICAgLy8gbGlrZSBzcHJlYWQgb3BlcmF0b3JzIGJlY29tZXMgdG9vIGNvbXBsaWNhdGVkIGZvciB0aGlzIG1pZ3JhdGlvbi5cbiAgICBpZiAoKHRzLmlzUHJvcGVydHlBc3NpZ25tZW50KHByb3BlcnR5KSB8fCB0cy5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudChwcm9wZXJ0eSkpICYmXG4gICAgICAgICh0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKHByb3BlcnR5Lm5hbWUpIHx8IHRzLmlzTnVtZXJpY0xpdGVyYWwocHJvcGVydHkubmFtZSkgfHxcbiAgICAgICAgIHRzLmlzSWRlbnRpZmllcihwcm9wZXJ0eS5uYW1lKSkpIHtcbiAgICAgIGlmIChhbGxvd2VkUHJvcGVydGllcy5oYXMocHJvcGVydHkubmFtZS50ZXh0KSkge1xuICAgICAgICBwcm9wZXJ0aWVzVG9LZWVwLnB1c2gocHJvcGVydHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtb3ZlZFByb3BlcnR5TmFtZXMucHVzaChwcm9wZXJ0eS5uYW1lLnRleHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wZXJ0aWVzVG9LZWVwLnB1c2gocHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gRG9uJ3QgbW9kaWZ5IHRoZSBub2RlIGlmIHRoZXJlJ3Mgbm90aGluZyB0byByZW1vdmUuXG4gIGlmIChyZW1vdmVkUHJvcGVydHlOYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIC8vIE5vdGUgdGhhdCB0aGUgdHJhaWxpbmcvbGVhZGluZyBzcGFjZXMgYXJlIG5lY2Vzc2FyeSBzbyB0aGUgY29tbWVudCBsb29rcyBnb29kLlxuICBjb25zdCByZW1vdmFsQ29tbWVudCA9XG4gICAgICBgIFJlbW92ZWQgdW5zdXBwb3J0ZWQgcHJvcGVydGllcyBieSBBbmd1bGFyIG1pZ3JhdGlvbjogJHtyZW1vdmVkUHJvcGVydHlOYW1lcy5qb2luKCcsICcpfS4gYDtcblxuICBpZiAocHJvcGVydGllc1RvS2VlcC5sZW5ndGggPiAwKSB7XG4gICAgcHJvcGVydGllc1RvS2VlcFswXSA9IGFkZFVuaXF1ZUxlYWRpbmdDb21tZW50KHByb3BlcnRpZXNUb0tlZXBbMF0sIHJlbW92YWxDb21tZW50KTtcbiAgICByZXR1cm4gdHMuY3JlYXRlT2JqZWN0TGl0ZXJhbChwcm9wZXJ0aWVzVG9LZWVwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYWRkVW5pcXVlTGVhZGluZ0NvbW1lbnQodHMuY3JlYXRlT2JqZWN0TGl0ZXJhbChwcm9wZXJ0aWVzVG9LZWVwKSwgcmVtb3ZhbENvbW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTGl0ZXJhbHNUb01pZ3JhdGUoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyKSB7XG4gIGNvbnN0IHJlc3VsdHMgPSBuZXcgTWFwPHN0cmluZywgU2V0PHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uPj4oXG4gICAgICBBcnJheS5mcm9tKG1ldGhvZENvbmZpZy5rZXlzKCksIGtleSA9PiBba2V5LCBuZXcgU2V0KCldKSk7XG4gIGNvbnN0IHJvdXRlckltcG9ydCA9IGdldEltcG9ydFNwZWNpZmllcihzb3VyY2VGaWxlLCAnQGFuZ3VsYXIvcm91dGVyJywgJ1JvdXRlcicpO1xuICBjb25zdCBzZWVuTGl0ZXJhbHMgPSBuZXcgTWFwPHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uLCBzdHJpbmc+KCk7XG5cbiAgaWYgKHJvdXRlckltcG9ydCkge1xuICAgIHNvdXJjZUZpbGUuZm9yRWFjaENoaWxkKGZ1bmN0aW9uIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKSB7XG4gICAgICAvLyBMb29rIGZvciBjYWxscyB0aGF0IGxvb2sgbGlrZSBgZm9vLjxtZXRob2QgdG8gbWlncmF0ZT5gIHdpdGggbW9yZSB0aGFuIG9uZSBwYXJhbWV0ZXIuXG4gICAgICBpZiAodHMuaXNDYWxsRXhwcmVzc2lvbihub2RlKSAmJiBub2RlLmFyZ3VtZW50cy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgdHMuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obm9kZS5leHByZXNzaW9uKSAmJiB0cy5pc0lkZW50aWZpZXIobm9kZS5leHByZXNzaW9uLm5hbWUpICYmXG4gICAgICAgICAgbWV0aG9kQ29uZmlnLmhhcyhub2RlLmV4cHJlc3Npb24ubmFtZS50ZXh0KSkge1xuICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSB0eXBlIG9mIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlXG4gICAgICAgIC8vIGZ1bmN0aW9uIGlzIGNhbGxlZCByZWZlcnMgdG8gdGhlIFJvdXRlciBpbXBvcnQuXG4gICAgICAgIGlmIChpc1JlZmVyZW5jZVRvSW1wb3J0KHR5cGVDaGVja2VyLCBub2RlLmV4cHJlc3Npb24uZXhwcmVzc2lvbiwgcm91dGVySW1wb3J0KSkge1xuICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBub2RlLmV4cHJlc3Npb24ubmFtZS50ZXh0O1xuICAgICAgICAgIGNvbnN0IHBhcmFtZXRlckRlY2xhcmF0aW9uID1cbiAgICAgICAgICAgICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24obm9kZS5hcmd1bWVudHNbMV0pLmdldFN5bWJvbCgpPy52YWx1ZURlY2xhcmF0aW9uO1xuXG4gICAgICAgICAgLy8gRmluZCB0aGUgc291cmNlIG9mIHRoZSBvYmplY3QgbGl0ZXJhbC5cbiAgICAgICAgICBpZiAocGFyYW1ldGVyRGVjbGFyYXRpb24gJiYgdHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihwYXJhbWV0ZXJEZWNsYXJhdGlvbikpIHtcbiAgICAgICAgICAgIGlmICghc2VlbkxpdGVyYWxzLmhhcyhwYXJhbWV0ZXJEZWNsYXJhdGlvbikpIHtcbiAgICAgICAgICAgICAgcmVzdWx0cy5nZXQobWV0aG9kTmFtZSkhLmFkZChwYXJhbWV0ZXJEZWNsYXJhdGlvbik7XG4gICAgICAgICAgICAgIHNlZW5MaXRlcmFscy5zZXQocGFyYW1ldGVyRGVjbGFyYXRpb24sIG1ldGhvZE5hbWUpO1xuICAgICAgICAgICAgICAvLyBJZiB0aGUgc2FtZSBsaXRlcmFsIGhhcyBiZWVuIHBhc3NlZCBpbnRvIG11bHRpcGxlIGRpZmZlcmVudCBtZXRob2RzLCB3ZSBjYW4ndFxuICAgICAgICAgICAgICAvLyBtaWdyYXRlIGl0LCBiZWNhdXNlIHRoZSBzdXBwb3J0ZWQgcHJvcGVydGllcyBhcmUgZGlmZmVyZW50LiBXaGVuIHdlIGRldGVjdCBzdWNoXG4gICAgICAgICAgICAgIC8vIGEgY2FzZSwgd2UgZHJvcCBpdCBmcm9tIHRoZSByZXN1bHRzIHNvIHRoYXQgaXQgZ2V0cyBpZ25vcmVkLiBJZiBpdCdzIHVzZWQgbXVsdGlwbGVcbiAgICAgICAgICAgICAgLy8gdGltZXMgZm9yIHRoZSBzYW1lIG1ldGhvZCwgaXQgY2FuIHN0aWxsIGJlIG1pZ3JhdGVkLlxuICAgICAgICAgICAgfSBlbHNlIGlmIChzZWVuTGl0ZXJhbHMuZ2V0KHBhcmFtZXRlckRlY2xhcmF0aW9uKSAhPT0gbWV0aG9kTmFtZSkge1xuICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2gobGl0ZXJhbHMgPT4gbGl0ZXJhbHMuZGVsZXRlKHBhcmFtZXRlckRlY2xhcmF0aW9uKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLmZvckVhY2hDaGlsZCh2aXNpdE5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbi8qKiBBZGRzIGEgbGVhZGluZyBjb21tZW50IHRvIGEgbm9kZSwgaWYgdGhlIG5vZGUgZG9lc24ndCBoYXZlIHN1Y2ggYSBjb21tZW50IGFscmVhZHkuICovXG5mdW5jdGlvbiBhZGRVbmlxdWVMZWFkaW5nQ29tbWVudDxUIGV4dGVuZHMgdHMuTm9kZT4obm9kZTogVCwgY29tbWVudDogc3RyaW5nKTogVCB7XG4gIGNvbnN0IGV4aXN0aW5nQ29tbWVudHMgPSB0cy5nZXRTeW50aGV0aWNMZWFkaW5nQ29tbWVudHMobm9kZSk7XG5cbiAgLy8gVGhpcyBsb2dpYyBpcyBwcmltYXJpbHkgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgYWRkIHRoZSBzYW1lIGNvbW1lbnQgbXVsdGlwbGVcbiAgLy8gdGltZXMgd2hlbiB0c2xpbnQgcnVucyBvdmVyIHRoZSBzYW1lIGZpbGUgYWdhaW4gd2l0aCBvdXRkYXRlZCBpbmZvcm1hdGlvbi5cbiAgaWYgKCFleGlzdGluZ0NvbW1lbnRzIHx8IGV4aXN0aW5nQ29tbWVudHMuZXZlcnkoYyA9PiBjLnRleHQgIT09IGNvbW1lbnQpKSB7XG4gICAgcmV0dXJuIHRzLmFkZFN5bnRoZXRpY0xlYWRpbmdDb21tZW50KG5vZGUsIHRzLlN5bnRheEtpbmQuTXVsdGlMaW5lQ29tbWVudFRyaXZpYSwgY29tbWVudCk7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cbiJdfQ==
@@ -1,81 +0,0 @@
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
- import * as ts from 'typescript';
9
- import { isExtraOptions, isRouterModuleForRoot } from './util';
10
- /**
11
- * Visitor that walks through specified TypeScript nodes and collects all
12
- * found ExtraOptions#RelativeLinkResolution assignments.
13
- */
14
- export class RelativeLinkResolutionCollector {
15
- constructor(typeChecker) {
16
- this.typeChecker = typeChecker;
17
- this.forRootCalls = [];
18
- this.extraOptionsLiterals = [];
19
- }
20
- visitNode(node) {
21
- let forRootCall = null;
22
- let literal = null;
23
- if (isRouterModuleForRoot(this.typeChecker, node) && node.arguments.length > 0) {
24
- if (node.arguments.length === 1) {
25
- forRootCall = node;
26
- }
27
- else if (ts.isObjectLiteralExpression(node.arguments[1])) {
28
- literal = node.arguments[1];
29
- }
30
- else if (ts.isIdentifier(node.arguments[1])) {
31
- literal = this.getLiteralNeedingMigrationFromIdentifier(node.arguments[1]);
32
- }
33
- }
34
- else if (ts.isVariableDeclaration(node)) {
35
- literal = this.getLiteralNeedingMigration(node);
36
- }
37
- if (literal !== null) {
38
- this.extraOptionsLiterals.push(literal);
39
- }
40
- else if (forRootCall !== null) {
41
- this.forRootCalls.push(forRootCall);
42
- }
43
- else {
44
- // no match found, continue iteration
45
- ts.forEachChild(node, n => this.visitNode(n));
46
- }
47
- }
48
- getLiteralNeedingMigrationFromIdentifier(id) {
49
- const symbolForIdentifier = this.typeChecker.getSymbolAtLocation(id);
50
- if (symbolForIdentifier === undefined) {
51
- return null;
52
- }
53
- if (symbolForIdentifier.declarations === undefined ||
54
- symbolForIdentifier.declarations.length === 0) {
55
- return null;
56
- }
57
- const declarationNode = symbolForIdentifier.declarations[0];
58
- if (!ts.isVariableDeclaration(declarationNode) || declarationNode.initializer === undefined ||
59
- !ts.isObjectLiteralExpression(declarationNode.initializer)) {
60
- return null;
61
- }
62
- return declarationNode.initializer;
63
- }
64
- getLiteralNeedingMigration(node) {
65
- if (node.initializer === undefined) {
66
- return null;
67
- }
68
- // declaration could be `x: ExtraOptions = {}` or `x = {} as ExtraOptions`
69
- if (ts.isAsExpression(node.initializer) &&
70
- ts.isObjectLiteralExpression(node.initializer.expression) &&
71
- isExtraOptions(this.typeChecker, node.initializer.type)) {
72
- return node.initializer.expression;
73
- }
74
- else if (node.type !== undefined && ts.isObjectLiteralExpression(node.initializer) &&
75
- isExtraOptions(this.typeChecker, node.type)) {
76
- return node.initializer;
77
- }
78
- return null;
79
- }
80
- }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvcmVsYXRpdmUtbGluay1yZXNvbHV0aW9uL2NvbGxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQUMsY0FBYyxFQUFFLHFCQUFxQixFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRzdEOzs7R0FHRztBQUNILE1BQU0sT0FBTywrQkFBK0I7SUFJMUMsWUFBNkIsV0FBMkI7UUFBM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBSC9DLGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUN2Qyx5QkFBb0IsR0FBaUMsRUFBRSxDQUFDO0lBRU4sQ0FBQztJQUU1RCxTQUFTLENBQUMsSUFBYTtRQUNyQixJQUFJLFdBQVcsR0FBMkIsSUFBSSxDQUFDO1FBQy9DLElBQUksT0FBTyxHQUFvQyxJQUFJLENBQUM7UUFDcEQsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM5RSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDL0IsV0FBVyxHQUFHLElBQUksQ0FBQzthQUNwQjtpQkFBTSxJQUFJLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFELE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBK0IsQ0FBQzthQUMzRDtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3QyxPQUFPLEdBQUcsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFrQixDQUFDLENBQUM7YUFDN0Y7U0FDRjthQUFNLElBQUksRUFBRSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pDLE9BQU8sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakQ7UUFFRCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN6QzthQUFNLElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNyQzthQUFNO1lBQ0wscUNBQXFDO1lBQ3JDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUVPLHdDQUF3QyxDQUFDLEVBQWlCO1FBRWhFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRSxJQUFJLG1CQUFtQixLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxtQkFBbUIsQ0FBQyxZQUFZLEtBQUssU0FBUztZQUM5QyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNqRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxlQUFlLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLElBQUksZUFBZSxDQUFDLFdBQVcsS0FBSyxTQUFTO1lBQ3ZGLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM5RCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDO0lBQ3JDLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxJQUE0QjtRQUU3RCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCwwRUFBMEU7UUFDMUUsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDbkMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3pELGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztTQUNwQzthQUFNLElBQ0gsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksRUFBRSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDekUsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9DLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN6QjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtpc0V4dHJhT3B0aW9ucywgaXNSb3V0ZXJNb2R1bGVGb3JSb290fSBmcm9tICcuL3V0aWwnO1xuXG5cbi8qKlxuICogVmlzaXRvciB0aGF0IHdhbGtzIHRocm91Z2ggc3BlY2lmaWVkIFR5cGVTY3JpcHQgbm9kZXMgYW5kIGNvbGxlY3RzIGFsbFxuICogZm91bmQgRXh0cmFPcHRpb25zI1JlbGF0aXZlTGlua1Jlc29sdXRpb24gYXNzaWdubWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWxhdGl2ZUxpbmtSZXNvbHV0aW9uQ29sbGVjdG9yIHtcbiAgcmVhZG9ubHkgZm9yUm9vdENhbGxzOiB0cy5DYWxsRXhwcmVzc2lvbltdID0gW107XG4gIHJlYWRvbmx5IGV4dHJhT3B0aW9uc0xpdGVyYWxzOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpIHt9XG5cbiAgdmlzaXROb2RlKG5vZGU6IHRzLk5vZGUpIHtcbiAgICBsZXQgZm9yUm9vdENhbGw6IHRzLkNhbGxFeHByZXNzaW9ufG51bGwgPSBudWxsO1xuICAgIGxldCBsaXRlcmFsOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbnxudWxsID0gbnVsbDtcbiAgICBpZiAoaXNSb3V0ZXJNb2R1bGVGb3JSb290KHRoaXMudHlwZUNoZWNrZXIsIG5vZGUpICYmIG5vZGUuYXJndW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChub2RlLmFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZm9yUm9vdENhbGwgPSBub2RlO1xuICAgICAgfSBlbHNlIGlmICh0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGUuYXJndW1lbnRzWzFdKSkge1xuICAgICAgICBsaXRlcmFsID0gbm9kZS5hcmd1bWVudHNbMV0gYXMgdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb247XG4gICAgICB9IGVsc2UgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlLmFyZ3VtZW50c1sxXSkpIHtcbiAgICAgICAgbGl0ZXJhbCA9IHRoaXMuZ2V0TGl0ZXJhbE5lZWRpbmdNaWdyYXRpb25Gcm9tSWRlbnRpZmllcihub2RlLmFyZ3VtZW50c1sxXSBhcyB0cy5JZGVudGlmaWVyKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgbGl0ZXJhbCA9IHRoaXMuZ2V0TGl0ZXJhbE5lZWRpbmdNaWdyYXRpb24obm9kZSk7XG4gICAgfVxuXG4gICAgaWYgKGxpdGVyYWwgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuZXh0cmFPcHRpb25zTGl0ZXJhbHMucHVzaChsaXRlcmFsKTtcbiAgICB9IGVsc2UgaWYgKGZvclJvb3RDYWxsICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmZvclJvb3RDYWxscy5wdXNoKGZvclJvb3RDYWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbm8gbWF0Y2ggZm91bmQsIGNvbnRpbnVlIGl0ZXJhdGlvblxuICAgICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIG4gPT4gdGhpcy52aXNpdE5vZGUobikpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGl0ZXJhbE5lZWRpbmdNaWdyYXRpb25Gcm9tSWRlbnRpZmllcihpZDogdHMuSWRlbnRpZmllcik6IHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uXG4gICAgICB8bnVsbCB7XG4gICAgY29uc3Qgc3ltYm9sRm9ySWRlbnRpZmllciA9IHRoaXMudHlwZUNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihpZCk7XG4gICAgaWYgKHN5bWJvbEZvcklkZW50aWZpZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHN5bWJvbEZvcklkZW50aWZpZXIuZGVjbGFyYXRpb25zID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgc3ltYm9sRm9ySWRlbnRpZmllci5kZWNsYXJhdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkZWNsYXJhdGlvbk5vZGUgPSBzeW1ib2xGb3JJZGVudGlmaWVyLmRlY2xhcmF0aW9uc1swXTtcbiAgICBpZiAoIXRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbk5vZGUpIHx8IGRlY2xhcmF0aW9uTm9kZS5pbml0aWFsaXplciA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICF0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKGRlY2xhcmF0aW9uTm9kZS5pbml0aWFsaXplcikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBkZWNsYXJhdGlvbk5vZGUuaW5pdGlhbGl6ZXI7XG4gIH1cblxuICBwcml2YXRlIGdldExpdGVyYWxOZWVkaW5nTWlncmF0aW9uKG5vZGU6IHRzLlZhcmlhYmxlRGVjbGFyYXRpb24pOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvblxuICAgICAgfG51bGwge1xuICAgIGlmIChub2RlLmluaXRpYWxpemVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIGRlY2xhcmF0aW9uIGNvdWxkIGJlIGB4OiBFeHRyYU9wdGlvbnMgPSB7fWAgb3IgYHggPSB7fSBhcyBFeHRyYU9wdGlvbnNgXG4gICAgaWYgKHRzLmlzQXNFeHByZXNzaW9uKG5vZGUuaW5pdGlhbGl6ZXIpICYmXG4gICAgICAgIHRzLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24obm9kZS5pbml0aWFsaXplci5leHByZXNzaW9uKSAmJlxuICAgICAgICBpc0V4dHJhT3B0aW9ucyh0aGlzLnR5cGVDaGVja2VyLCBub2RlLmluaXRpYWxpemVyLnR5cGUpKSB7XG4gICAgICByZXR1cm4gbm9kZS5pbml0aWFsaXplci5leHByZXNzaW9uO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIG5vZGUudHlwZSAhPT0gdW5kZWZpbmVkICYmIHRzLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24obm9kZS5pbml0aWFsaXplcikgJiZcbiAgICAgICAgaXNFeHRyYU9wdGlvbnModGhpcy50eXBlQ2hlY2tlciwgbm9kZS50eXBlKSkge1xuICAgICAgcmV0dXJuIG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -1,62 +0,0 @@
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
- import { SchematicsException } from '@angular-devkit/schematics';
9
- import { relative } from 'path';
10
- import { getProjectTsConfigPaths } from '../../utils/project_tsconfig_paths';
11
- import { canMigrateFile, createMigrationProgram } from '../../utils/typescript/compiler_host';
12
- import { RelativeLinkResolutionCollector } from './collector';
13
- import { RelativeLinkResolutionTransform } from './transform';
14
- /** Entry point for the v11 "relativeLinkResolution RouterModule options" schematic. */
15
- export default function () {
16
- return (tree) => {
17
- const { buildPaths, testPaths } = getProjectTsConfigPaths(tree);
18
- const basePath = process.cwd();
19
- if (!buildPaths.length && !testPaths.length) {
20
- throw new SchematicsException('Could not find any tsconfig file. Cannot update the "relativeLinkResolution" option for RouterModule');
21
- }
22
- for (const tsconfigPath of [...buildPaths, ...testPaths]) {
23
- runRelativeLinkResolutionMigration(tree, tsconfigPath, basePath);
24
- }
25
- };
26
- }
27
- function runRelativeLinkResolutionMigration(tree, tsconfigPath, basePath) {
28
- const { program } = createMigrationProgram(tree, tsconfigPath, basePath);
29
- const typeChecker = program.getTypeChecker();
30
- const relativeLinkResolutionCollector = new RelativeLinkResolutionCollector(typeChecker);
31
- const sourceFiles = program.getSourceFiles().filter(sourceFile => canMigrateFile(basePath, sourceFile, program));
32
- // Analyze source files by detecting all modules.
33
- sourceFiles.forEach(sourceFile => relativeLinkResolutionCollector.visitNode(sourceFile));
34
- const { forRootCalls, extraOptionsLiterals } = relativeLinkResolutionCollector;
35
- const transformer = new RelativeLinkResolutionTransform(getUpdateRecorder);
36
- const updateRecorders = new Map();
37
- transformer.migrateRouterModuleForRootCalls(forRootCalls);
38
- transformer.migrateObjectLiterals(extraOptionsLiterals);
39
- // Walk through each update recorder and commit the update. We need to commit the
40
- // updates in batches per source file as there can be only one recorder per source
41
- // file in order to avoid shift character offsets.
42
- updateRecorders.forEach(recorder => recorder.commitUpdate());
43
- /** Gets the update recorder for the specified source file. */
44
- function getUpdateRecorder(sourceFile) {
45
- if (updateRecorders.has(sourceFile)) {
46
- return updateRecorders.get(sourceFile);
47
- }
48
- const treeRecorder = tree.beginUpdate(relative(basePath, sourceFile.fileName));
49
- const recorder = {
50
- updateNode(node, newText) {
51
- treeRecorder.remove(node.getStart(), node.getWidth());
52
- treeRecorder.insertRight(node.getStart(), newText);
53
- },
54
- commitUpdate() {
55
- tree.commitUpdate(treeRecorder);
56
- }
57
- };
58
- updateRecorders.set(sourceFile, recorder);
59
- return recorder;
60
- }
61
- }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy9yZWxhdGl2ZS1saW5rLXJlc29sdXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFPLG1CQUFtQixFQUFPLE1BQU0sNEJBQTRCLENBQUM7QUFDM0UsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU5QixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsY0FBYyxFQUFFLHNCQUFzQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUc1RCx1RkFBdUY7QUFDdkYsTUFBTSxDQUFDLE9BQU87SUFDWixPQUFPLENBQUMsSUFBVSxFQUFFLEVBQUU7UUFDcEIsTUFBTSxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxtQkFBbUIsQ0FDekIsc0dBQXNHLENBQUMsQ0FBQztTQUM3RztRQUVELEtBQUssTUFBTSxZQUFZLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFO1lBQ3hELGtDQUFrQyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDbEU7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxrQ0FBa0MsQ0FBQyxJQUFVLEVBQUUsWUFBb0IsRUFBRSxRQUFnQjtJQUM1RixNQUFNLEVBQUMsT0FBTyxFQUFDLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDN0MsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sV0FBVyxHQUNiLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRWpHLGlEQUFpRDtJQUNqRCxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFekYsTUFBTSxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBQyxHQUFHLCtCQUErQixDQUFDO0lBQzdFLE1BQU0sV0FBVyxHQUFHLElBQUksK0JBQStCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzRSxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztJQUNqRSxXQUFXLENBQUMsK0JBQStCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUQsV0FBVyxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFeEQsaUZBQWlGO0lBQ2pGLGtGQUFrRjtJQUNsRixrREFBa0Q7SUFDbEQsZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRTdELDhEQUE4RDtJQUM5RCxTQUFTLGlCQUFpQixDQUFDLFVBQXlCO1FBQ2xELElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNuQyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFFLENBQUM7U0FDekM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDL0UsTUFBTSxRQUFRLEdBQW1CO1lBQy9CLFVBQVUsQ0FBQyxJQUFhLEVBQUUsT0FBZTtnQkFDdkMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3RELFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELENBQUM7WUFDRCxZQUFZO2dCQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEMsQ0FBQztTQUNGLENBQUM7UUFDRixlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1J1bGUsIFNjaGVtYXRpY3NFeGNlcHRpb24sIFRyZWV9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB7cmVsYXRpdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge2dldFByb2plY3RUc0NvbmZpZ1BhdGhzfSBmcm9tICcuLi8uLi91dGlscy9wcm9qZWN0X3RzY29uZmlnX3BhdGhzJztcbmltcG9ydCB7Y2FuTWlncmF0ZUZpbGUsIGNyZWF0ZU1pZ3JhdGlvblByb2dyYW19IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvY29tcGlsZXJfaG9zdCc7XG5pbXBvcnQge1JlbGF0aXZlTGlua1Jlc29sdXRpb25Db2xsZWN0b3J9IGZyb20gJy4vY29sbGVjdG9yJztcbmltcG9ydCB7UmVsYXRpdmVMaW5rUmVzb2x1dGlvblRyYW5zZm9ybX0gZnJvbSAnLi90cmFuc2Zvcm0nO1xuaW1wb3J0IHtVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi91cGRhdGVfcmVjb3JkZXInO1xuXG4vKiogRW50cnkgcG9pbnQgZm9yIHRoZSB2MTEgXCJyZWxhdGl2ZUxpbmtSZXNvbHV0aW9uIFJvdXRlck1vZHVsZSBvcHRpb25zXCIgc2NoZW1hdGljLiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKTogUnVsZSB7XG4gIHJldHVybiAodHJlZTogVHJlZSkgPT4ge1xuICAgIGNvbnN0IHtidWlsZFBhdGhzLCB0ZXN0UGF0aHN9ID0gZ2V0UHJvamVjdFRzQ29uZmlnUGF0aHModHJlZSk7XG4gICAgY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgaWYgKCFidWlsZFBhdGhzLmxlbmd0aCAmJiAhdGVzdFBhdGhzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oXG4gICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIGFueSB0c2NvbmZpZyBmaWxlLiBDYW5ub3QgdXBkYXRlIHRoZSBcInJlbGF0aXZlTGlua1Jlc29sdXRpb25cIiBvcHRpb24gZm9yIFJvdXRlck1vZHVsZScpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHNjb25maWdQYXRoIG9mIFsuLi5idWlsZFBhdGhzLCAuLi50ZXN0UGF0aHNdKSB7XG4gICAgICBydW5SZWxhdGl2ZUxpbmtSZXNvbHV0aW9uTWlncmF0aW9uKHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcnVuUmVsYXRpdmVMaW5rUmVzb2x1dGlvbk1pZ3JhdGlvbih0cmVlOiBUcmVlLCB0c2NvbmZpZ1BhdGg6IHN0cmluZywgYmFzZVBhdGg6IHN0cmluZykge1xuICBjb25zdCB7cHJvZ3JhbX0gPSBjcmVhdGVNaWdyYXRpb25Qcm9ncmFtKHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgpO1xuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgcmVsYXRpdmVMaW5rUmVzb2x1dGlvbkNvbGxlY3RvciA9IG5ldyBSZWxhdGl2ZUxpbmtSZXNvbHV0aW9uQ29sbGVjdG9yKHR5cGVDaGVja2VyKTtcbiAgY29uc3Qgc291cmNlRmlsZXMgPVxuICAgICAgcHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpLmZpbHRlcihzb3VyY2VGaWxlID0+IGNhbk1pZ3JhdGVGaWxlKGJhc2VQYXRoLCBzb3VyY2VGaWxlLCBwcm9ncmFtKSk7XG5cbiAgLy8gQW5hbHl6ZSBzb3VyY2UgZmlsZXMgYnkgZGV0ZWN0aW5nIGFsbCBtb2R1bGVzLlxuICBzb3VyY2VGaWxlcy5mb3JFYWNoKHNvdXJjZUZpbGUgPT4gcmVsYXRpdmVMaW5rUmVzb2x1dGlvbkNvbGxlY3Rvci52aXNpdE5vZGUoc291cmNlRmlsZSkpO1xuXG4gIGNvbnN0IHtmb3JSb290Q2FsbHMsIGV4dHJhT3B0aW9uc0xpdGVyYWxzfSA9IHJlbGF0aXZlTGlua1Jlc29sdXRpb25Db2xsZWN0b3I7XG4gIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFJlbGF0aXZlTGlua1Jlc29sdXRpb25UcmFuc2Zvcm0oZ2V0VXBkYXRlUmVjb3JkZXIpO1xuICBjb25zdCB1cGRhdGVSZWNvcmRlcnMgPSBuZXcgTWFwPHRzLlNvdXJjZUZpbGUsIFVwZGF0ZVJlY29yZGVyPigpO1xuICB0cmFuc2Zvcm1lci5taWdyYXRlUm91dGVyTW9kdWxlRm9yUm9vdENhbGxzKGZvclJvb3RDYWxscyk7XG4gIHRyYW5zZm9ybWVyLm1pZ3JhdGVPYmplY3RMaXRlcmFscyhleHRyYU9wdGlvbnNMaXRlcmFscyk7XG5cbiAgLy8gV2FsayB0aHJvdWdoIGVhY2ggdXBkYXRlIHJlY29yZGVyIGFuZCBjb21taXQgdGhlIHVwZGF0ZS4gV2UgbmVlZCB0byBjb21taXQgdGhlXG4gIC8vIHVwZGF0ZXMgaW4gYmF0Y2hlcyBwZXIgc291cmNlIGZpbGUgYXMgdGhlcmUgY2FuIGJlIG9ubHkgb25lIHJlY29yZGVyIHBlciBzb3VyY2VcbiAgLy8gZmlsZSBpbiBvcmRlciB0byBhdm9pZCBzaGlmdCBjaGFyYWN0ZXIgb2Zmc2V0cy5cbiAgdXBkYXRlUmVjb3JkZXJzLmZvckVhY2gocmVjb3JkZXIgPT4gcmVjb3JkZXIuY29tbWl0VXBkYXRlKCkpO1xuXG4gIC8qKiBHZXRzIHRoZSB1cGRhdGUgcmVjb3JkZXIgZm9yIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGUuICovXG4gIGZ1bmN0aW9uIGdldFVwZGF0ZVJlY29yZGVyKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpOiBVcGRhdGVSZWNvcmRlciB7XG4gICAgaWYgKHVwZGF0ZVJlY29yZGVycy5oYXMoc291cmNlRmlsZSkpIHtcbiAgICAgIHJldHVybiB1cGRhdGVSZWNvcmRlcnMuZ2V0KHNvdXJjZUZpbGUpITtcbiAgICB9XG4gICAgY29uc3QgdHJlZVJlY29yZGVyID0gdHJlZS5iZWdpblVwZGF0ZShyZWxhdGl2ZShiYXNlUGF0aCwgc291cmNlRmlsZS5maWxlTmFtZSkpO1xuICAgIGNvbnN0IHJlY29yZGVyOiBVcGRhdGVSZWNvcmRlciA9IHtcbiAgICAgIHVwZGF0ZU5vZGUobm9kZTogdHMuTm9kZSwgbmV3VGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRyZWVSZWNvcmRlci5yZW1vdmUobm9kZS5nZXRTdGFydCgpLCBub2RlLmdldFdpZHRoKCkpO1xuICAgICAgICB0cmVlUmVjb3JkZXIuaW5zZXJ0UmlnaHQobm9kZS5nZXRTdGFydCgpLCBuZXdUZXh0KTtcbiAgICAgIH0sXG4gICAgICBjb21taXRVcGRhdGUoKSB7XG4gICAgICAgIHRyZWUuY29tbWl0VXBkYXRlKHRyZWVSZWNvcmRlcik7XG4gICAgICB9XG4gICAgfTtcbiAgICB1cGRhdGVSZWNvcmRlcnMuc2V0KHNvdXJjZUZpbGUsIHJlY29yZGVyKTtcbiAgICByZXR1cm4gcmVjb3JkZXI7XG4gIH1cbn1cbiJdfQ==
@@ -1,51 +0,0 @@
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
- import * as ts from 'typescript';
9
- const RELATIVE_LINK_RESOLUTION = 'relativeLinkResolution';
10
- export class RelativeLinkResolutionTransform {
11
- constructor(getUpdateRecorder) {
12
- this.getUpdateRecorder = getUpdateRecorder;
13
- this.printer = ts.createPrinter();
14
- }
15
- /** Migrate the ExtraOptions#RelativeLinkResolution property assignments. */
16
- migrateRouterModuleForRootCalls(calls) {
17
- calls.forEach(c => {
18
- this._updateCallExpressionWithoutExtraOptions(c);
19
- });
20
- }
21
- migrateObjectLiterals(vars) {
22
- vars.forEach(v => this._maybeUpdateLiteral(v));
23
- }
24
- _updateCallExpressionWithoutExtraOptions(callExpression) {
25
- const args = callExpression.arguments;
26
- const emptyLiteral = ts.createObjectLiteral();
27
- const newNode = ts.updateCall(callExpression, callExpression.expression, callExpression.typeArguments, [args[0], this._getMigratedLiteralExpression(emptyLiteral)]);
28
- this._updateNode(callExpression, newNode);
29
- }
30
- _getMigratedLiteralExpression(literal) {
31
- if (literal.properties.some(prop => ts.isPropertyAssignment(prop) &&
32
- prop.name.getText() === RELATIVE_LINK_RESOLUTION)) {
33
- // literal already defines a value for relativeLinkResolution. Skip it
34
- return literal;
35
- }
36
- const legacyExpression = ts.createPropertyAssignment(RELATIVE_LINK_RESOLUTION, ts.createIdentifier(`'legacy'`));
37
- return ts.updateObjectLiteral(literal, [...literal.properties, legacyExpression]);
38
- }
39
- _maybeUpdateLiteral(literal) {
40
- const updatedLiteral = this._getMigratedLiteralExpression(literal);
41
- if (updatedLiteral !== literal) {
42
- this._updateNode(literal, updatedLiteral);
43
- }
44
- }
45
- _updateNode(node, newNode) {
46
- const newText = this.printer.printNode(ts.EmitHint.Unspecified, newNode, node.getSourceFile());
47
- const recorder = this.getUpdateRecorder(node.getSourceFile());
48
- recorder.updateNode(node, newText);
49
- }
50
- }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvcmVsYXRpdmUtbGluay1yZXNvbHV0aW9uL3RyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUtqQyxNQUFNLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO0FBRTFELE1BQU0sT0FBTywrQkFBK0I7SUFHMUMsWUFBb0IsaUJBQXdEO1FBQXhELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBdUM7UUFGcEUsWUFBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUUwQyxDQUFDO0lBRWhGLDRFQUE0RTtJQUM1RSwrQkFBK0IsQ0FBQyxLQUEwQjtRQUN4RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hCLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFrQztRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLHdDQUF3QyxDQUFDLGNBQWlDO1FBQ2hGLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUM7UUFDdEMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FDekIsY0FBYyxFQUFFLGNBQWMsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLGFBQWEsRUFDdkUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sNkJBQTZCLENBQUMsT0FBbUM7UUFDdkUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssd0JBQXdCLENBQUMsRUFBRTtZQUM3RCxzRUFBc0U7WUFDdEUsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFDRCxNQUFNLGdCQUFnQixHQUNsQixFQUFFLENBQUMsd0JBQXdCLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDM0YsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBbUM7UUFDN0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLElBQUksY0FBYyxLQUFLLE9BQU8sRUFBRTtZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsSUFBYSxFQUFFLE9BQWdCO1FBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMvRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDOUQsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi91cGRhdGVfcmVjb3JkZXInO1xuXG5cbmNvbnN0IFJFTEFUSVZFX0xJTktfUkVTT0xVVElPTiA9ICdyZWxhdGl2ZUxpbmtSZXNvbHV0aW9uJztcblxuZXhwb3J0IGNsYXNzIFJlbGF0aXZlTGlua1Jlc29sdXRpb25UcmFuc2Zvcm0ge1xuICBwcml2YXRlIHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnZXRVcGRhdGVSZWNvcmRlcjogKHNmOiB0cy5Tb3VyY2VGaWxlKSA9PiBVcGRhdGVSZWNvcmRlcikge31cblxuICAvKiogTWlncmF0ZSB0aGUgRXh0cmFPcHRpb25zI1JlbGF0aXZlTGlua1Jlc29sdXRpb24gcHJvcGVydHkgYXNzaWdubWVudHMuICovXG4gIG1pZ3JhdGVSb3V0ZXJNb2R1bGVGb3JSb290Q2FsbHMoY2FsbHM6IHRzLkNhbGxFeHByZXNzaW9uW10pIHtcbiAgICBjYWxscy5mb3JFYWNoKGMgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlQ2FsbEV4cHJlc3Npb25XaXRob3V0RXh0cmFPcHRpb25zKGMpO1xuICAgIH0pO1xuICB9XG5cbiAgbWlncmF0ZU9iamVjdExpdGVyYWxzKHZhcnM6IHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uW10pIHtcbiAgICB2YXJzLmZvckVhY2godiA9PiB0aGlzLl9tYXliZVVwZGF0ZUxpdGVyYWwodikpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ2FsbEV4cHJlc3Npb25XaXRob3V0RXh0cmFPcHRpb25zKGNhbGxFeHByZXNzaW9uOiB0cy5DYWxsRXhwcmVzc2lvbikge1xuICAgIGNvbnN0IGFyZ3MgPSBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHM7XG4gICAgY29uc3QgZW1wdHlMaXRlcmFsID0gdHMuY3JlYXRlT2JqZWN0TGl0ZXJhbCgpO1xuICAgIGNvbnN0IG5ld05vZGUgPSB0cy51cGRhdGVDYWxsKFxuICAgICAgICBjYWxsRXhwcmVzc2lvbiwgY2FsbEV4cHJlc3Npb24uZXhwcmVzc2lvbiwgY2FsbEV4cHJlc3Npb24udHlwZUFyZ3VtZW50cyxcbiAgICAgICAgW2FyZ3NbMF0sIHRoaXMuX2dldE1pZ3JhdGVkTGl0ZXJhbEV4cHJlc3Npb24oZW1wdHlMaXRlcmFsKV0pO1xuICAgIHRoaXMuX3VwZGF0ZU5vZGUoY2FsbEV4cHJlc3Npb24sIG5ld05vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TWlncmF0ZWRMaXRlcmFsRXhwcmVzc2lvbihsaXRlcmFsOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbikge1xuICAgIGlmIChsaXRlcmFsLnByb3BlcnRpZXMuc29tZShcbiAgICAgICAgICAgIHByb3AgPT4gdHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQocHJvcCkgJiZcbiAgICAgICAgICAgICAgICBwcm9wLm5hbWUuZ2V0VGV4dCgpID09PSBSRUxBVElWRV9MSU5LX1JFU09MVVRJT04pKSB7XG4gICAgICAvLyBsaXRlcmFsIGFscmVhZHkgZGVmaW5lcyBhIHZhbHVlIGZvciByZWxhdGl2ZUxpbmtSZXNvbHV0aW9uLiBTa2lwIGl0XG4gICAgICByZXR1cm4gbGl0ZXJhbDtcbiAgICB9XG4gICAgY29uc3QgbGVnYWN5RXhwcmVzc2lvbiA9XG4gICAgICAgIHRzLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChSRUxBVElWRV9MSU5LX1JFU09MVVRJT04sIHRzLmNyZWF0ZUlkZW50aWZpZXIoYCdsZWdhY3knYCkpO1xuICAgIHJldHVybiB0cy51cGRhdGVPYmplY3RMaXRlcmFsKGxpdGVyYWwsIFsuLi5saXRlcmFsLnByb3BlcnRpZXMsIGxlZ2FjeUV4cHJlc3Npb25dKTtcbiAgfVxuXG4gIHByaXZhdGUgX21heWJlVXBkYXRlTGl0ZXJhbChsaXRlcmFsOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbikge1xuICAgIGNvbnN0IHVwZGF0ZWRMaXRlcmFsID0gdGhpcy5fZ2V0TWlncmF0ZWRMaXRlcmFsRXhwcmVzc2lvbihsaXRlcmFsKTtcbiAgICBpZiAodXBkYXRlZExpdGVyYWwgIT09IGxpdGVyYWwpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZU5vZGUobGl0ZXJhbCwgdXBkYXRlZExpdGVyYWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZU5vZGUobm9kZTogdHMuTm9kZSwgbmV3Tm9kZTogdHMuTm9kZSkge1xuICAgIGNvbnN0IG5ld1RleHQgPSB0aGlzLnByaW50ZXIucHJpbnROb2RlKHRzLkVtaXRIaW50LlVuc3BlY2lmaWVkLCBuZXdOb2RlLCBub2RlLmdldFNvdXJjZUZpbGUoKSk7XG4gICAgY29uc3QgcmVjb3JkZXIgPSB0aGlzLmdldFVwZGF0ZVJlY29yZGVyKG5vZGUuZ2V0U291cmNlRmlsZSgpKTtcbiAgICByZWNvcmRlci51cGRhdGVOb2RlKG5vZGUsIG5ld1RleHQpO1xuICB9XG59XG4iXX0=
@@ -1,9 +0,0 @@
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
- export {};
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlX3JlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvcmVsYXRpdmUtbGluay1yZXNvbHV0aW9uL3VwZGF0ZV9yZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8qKlxuICogVXBkYXRlIHJlY29yZGVyIGludGVyZmFjZSB0aGF0IGlzIHVzZWQgdG8gdHJhbnNmb3JtIHNvdXJjZSBmaWxlcyBpbiBhIG5vbi1jb2xsaWRpbmdcbiAqIHdheS4gQWxzbyB0aGlzIGluZGlyZWN0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJlLXVzZSBsb2dpYyBmb3IgYm90aCBUU0xpbnQgcnVsZXNcbiAqIGFuZCBDTEkgZGV2a2l0IHNjaGVtYXRpYyB1cGRhdGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVJlY29yZGVyIHtcbiAgdXBkYXRlTm9kZShub2RlOiB0cy5Ob2RlLCBuZXdUZXh0OiBzdHJpbmcpOiB2b2lkO1xuICBjb21taXRVcGRhdGUoKTogdm9pZDtcbn1cbiJdfQ==
@@ -1,28 +0,0 @@
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
- import * as ts from 'typescript';
9
- import { getImportOfIdentifier } from '../../utils/typescript/imports';
10
- /** Determine whether a node is a ModuleWithProviders type reference node without a generic type */
11
- export function isRouterModuleForRoot(typeChecker, node) {
12
- if (!ts.isCallExpression(node) || !ts.isPropertyAccessExpression(node.expression) ||
13
- !ts.isIdentifier(node.expression.expression) || node.expression.name.text !== 'forRoot') {
14
- return false;
15
- }
16
- const imp = getImportOfIdentifier(typeChecker, node.expression.expression);
17
- return !!imp && imp.name === 'RouterModule' && imp.importModule === '@angular/router' &&
18
- !node.typeArguments;
19
- }
20
- export function isExtraOptions(typeChecker, node) {
21
- if (!ts.isTypeReferenceNode(node) || !ts.isIdentifier(node.typeName)) {
22
- return false;
23
- }
24
- const imp = getImportOfIdentifier(typeChecker, node.typeName);
25
- return imp !== null && imp.name === 'ExtraOptions' && imp.importModule === '@angular/router' &&
26
- !node.typeArguments;
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3JlbGF0aXZlLWxpbmstcmVzb2x1dGlvbi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRXJFLG1HQUFtRztBQUNuRyxNQUFNLFVBQVUscUJBQXFCLENBQ2pDLFdBQTJCLEVBQUUsSUFBYTtJQUM1QyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDN0UsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUMzRixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsTUFBTSxHQUFHLEdBQUcscUJBQXFCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0UsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxJQUFJLEdBQUcsQ0FBQyxZQUFZLEtBQUssaUJBQWlCO1FBQ2pGLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsV0FBMkIsRUFBRSxJQUFhO0lBQzVDLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNwRSxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxHQUFHLEdBQUcscUJBQXFCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5RCxPQUFPLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjLElBQUksR0FBRyxDQUFDLFlBQVksS0FBSyxpQkFBaUI7UUFDeEYsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge2dldEltcG9ydE9mSWRlbnRpZmllcn0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9pbXBvcnRzJztcblxuLyoqIERldGVybWluZSB3aGV0aGVyIGEgbm9kZSBpcyBhIE1vZHVsZVdpdGhQcm92aWRlcnMgdHlwZSByZWZlcmVuY2Ugbm9kZSB3aXRob3V0IGEgZ2VuZXJpYyB0eXBlICovXG5leHBvcnQgZnVuY3Rpb24gaXNSb3V0ZXJNb2R1bGVGb3JSb290KFxuICAgIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgbm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuQ2FsbEV4cHJlc3Npb24ge1xuICBpZiAoIXRzLmlzQ2FsbEV4cHJlc3Npb24obm9kZSkgfHwgIXRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbikgfHxcbiAgICAgICF0cy5pc0lkZW50aWZpZXIobm9kZS5leHByZXNzaW9uLmV4cHJlc3Npb24pIHx8IG5vZGUuZXhwcmVzc2lvbi5uYW1lLnRleHQgIT09ICdmb3JSb290Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBpbXAgPSBnZXRJbXBvcnRPZklkZW50aWZpZXIodHlwZUNoZWNrZXIsIG5vZGUuZXhwcmVzc2lvbi5leHByZXNzaW9uKTtcbiAgcmV0dXJuICEhaW1wICYmIGltcC5uYW1lID09PSAnUm91dGVyTW9kdWxlJyAmJiBpbXAuaW1wb3J0TW9kdWxlID09PSAnQGFuZ3VsYXIvcm91dGVyJyAmJlxuICAgICAgIW5vZGUudHlwZUFyZ3VtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0cmFPcHRpb25zKFxuICAgIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgbm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuVHlwZVJlZmVyZW5jZU5vZGUge1xuICBpZiAoIXRzLmlzVHlwZVJlZmVyZW5jZU5vZGUobm9kZSkgfHwgIXRzLmlzSWRlbnRpZmllcihub2RlLnR5cGVOYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGltcCA9IGdldEltcG9ydE9mSWRlbnRpZmllcih0eXBlQ2hlY2tlciwgbm9kZS50eXBlTmFtZSk7XG4gIHJldHVybiBpbXAgIT09IG51bGwgJiYgaW1wLm5hbWUgPT09ICdFeHRyYU9wdGlvbnMnICYmIGltcC5pbXBvcnRNb2R1bGUgPT09ICdAYW5ndWxhci9yb3V0ZXInICYmXG4gICAgICAhbm9kZS50eXBlQXJndW1lbnRzO1xufVxuIl19