@angular/core 13.0.0-rc.1 → 13.0.1

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 (180) hide show
  1. package/core.d.ts +224 -221
  2. package/esm2020/index.mjs +6 -5
  3. package/esm2020/src/application_module.mjs +2 -7
  4. package/esm2020/src/core_render3_private_export.mjs +2 -1
  5. package/esm2020/src/debug/debug_node.mjs +2 -3
  6. package/esm2020/src/linker/component_factory_resolver.mjs +5 -5
  7. package/esm2020/src/linker/ng_module_factory.mjs +1 -1
  8. package/esm2020/src/metadata/view.mjs +3 -1
  9. package/esm2020/src/render3/definition.mjs +2 -7
  10. package/esm2020/src/render3/di.mjs +3 -3
  11. package/esm2020/src/render3/di_setup.mjs +1 -1
  12. package/esm2020/src/render3/error_code.mjs +2 -5
  13. package/esm2020/src/render3/error_details_base_url.mjs +16 -0
  14. package/esm2020/src/render3/fields.mjs +1 -2
  15. package/esm2020/src/render3/instructions/lview_debug.mjs +36 -13
  16. package/esm2020/src/render3/instructions/shared.mjs +3 -5
  17. package/esm2020/src/render3/ng_module_ref.mjs +2 -5
  18. package/esm2020/src/render3/util/view_traversal_utils.mjs +1 -1
  19. package/esm2020/src/version.mjs +1 -1
  20. package/esm2020/testing/src/logger.mjs +3 -3
  21. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  22. package/esm2020/testing/src/test_compiler.mjs +3 -3
  23. package/fesm2015/core.mjs +103 -78
  24. package/fesm2015/core.mjs.map +1 -1
  25. package/fesm2015/testing.mjs +4 -4
  26. package/fesm2020/core.mjs +103 -78
  27. package/fesm2020/core.mjs.map +1 -1
  28. package/fesm2020/testing.mjs +4 -4
  29. package/package.json +1 -1
  30. package/schematics/migrations/router-link-empty-expression/index.js +2 -2
  31. package/schematics/migrations.json +0 -100
  32. package/schematics/utils/ng_component_template.d.ts +4 -1
  33. package/schematics/utils/ng_component_template.js +28 -14
  34. package/testing/testing.d.ts +1 -1
  35. package/schematics/migrations/abstract-control-parent/index.d.ts +0 -11
  36. package/schematics/migrations/abstract-control-parent/index.js +0 -69
  37. package/schematics/migrations/abstract-control-parent/util.d.ts +0 -14
  38. package/schematics/migrations/abstract-control-parent/util.js +0 -67
  39. package/schematics/migrations/activated-route-snapshot-fragment/index.d.ts +0 -13
  40. package/schematics/migrations/activated-route-snapshot-fragment/index.js +0 -73
  41. package/schematics/migrations/activated-route-snapshot-fragment/util.d.ts +0 -16
  42. package/schematics/migrations/activated-route-snapshot-fragment/util.js +0 -51
  43. package/schematics/migrations/can-activate-with-redirect-to/index.d.ts +0 -11
  44. package/schematics/migrations/can-activate-with-redirect-to/index.js +0 -69
  45. package/schematics/migrations/can-activate-with-redirect-to/util.d.ts +0 -11
  46. package/schematics/migrations/can-activate-with-redirect-to/util.js +0 -73
  47. package/schematics/migrations/deep-shadow-piercing-selector/index.d.ts +0 -10
  48. package/schematics/migrations/deep-shadow-piercing-selector/index.js +0 -49
  49. package/schematics/migrations/dynamic-queries/index.d.ts +0 -13
  50. package/schematics/migrations/dynamic-queries/index.js +0 -76
  51. package/schematics/migrations/dynamic-queries/util.d.ts +0 -25
  52. package/schematics/migrations/dynamic-queries/util.js +0 -84
  53. package/schematics/migrations/initial-navigation/collector.d.ts +0 -22
  54. package/schematics/migrations/initial-navigation/collector.js +0 -122
  55. package/schematics/migrations/initial-navigation/index.d.ts +0 -11
  56. package/schematics/migrations/initial-navigation/index.js +0 -83
  57. package/schematics/migrations/initial-navigation/transform.d.ts +0 -20
  58. package/schematics/migrations/initial-navigation/transform.js +0 -71
  59. package/schematics/migrations/initial-navigation/update_recorder.d.ts +0 -18
  60. package/schematics/migrations/initial-navigation/update_recorder.js +0 -20
  61. package/schematics/migrations/initial-navigation/util.d.ts +0 -12
  62. package/schematics/migrations/initial-navigation/util.js +0 -46
  63. package/schematics/migrations/missing-injectable/definition_collector.d.ts +0 -37
  64. package/schematics/migrations/missing-injectable/definition_collector.js +0 -92
  65. package/schematics/migrations/missing-injectable/index.d.ts +0 -11
  66. package/schematics/migrations/missing-injectable/index.js +0 -136
  67. package/schematics/migrations/missing-injectable/providers_evaluator.d.ts +0 -26
  68. package/schematics/migrations/missing-injectable/providers_evaluator.js +0 -71
  69. package/schematics/migrations/missing-injectable/transform.d.ts +0 -70
  70. package/schematics/migrations/missing-injectable/transform.js +0 -203
  71. package/schematics/migrations/missing-injectable/update_recorder.d.ts +0 -21
  72. package/schematics/migrations/missing-injectable/update_recorder.js +0 -20
  73. package/schematics/migrations/module-with-providers/collector.d.ts +0 -34
  74. package/schematics/migrations/module-with-providers/collector.js +0 -76
  75. package/schematics/migrations/module-with-providers/index.d.ts +0 -13
  76. package/schematics/migrations/module-with-providers/index.js +0 -107
  77. package/schematics/migrations/module-with-providers/transform.d.ts +0 -50
  78. package/schematics/migrations/module-with-providers/transform.js +0 -149
  79. package/schematics/migrations/module-with-providers/util.d.ts +0 -13
  80. package/schematics/migrations/module-with-providers/util.js +0 -43
  81. package/schematics/migrations/move-document/document_import_visitor.d.ts +0 -27
  82. package/schematics/migrations/move-document/document_import_visitor.js +0 -77
  83. package/schematics/migrations/move-document/index.d.ts +0 -11
  84. package/schematics/migrations/move-document/index.js +0 -93
  85. package/schematics/migrations/move-document/move-import.d.ts +0 -12
  86. package/schematics/migrations/move-document/move-import.js +0 -64
  87. package/schematics/migrations/native-view-encapsulation/index.d.ts +0 -11
  88. package/schematics/migrations/native-view-encapsulation/index.js +0 -63
  89. package/schematics/migrations/native-view-encapsulation/util.d.ts +0 -11
  90. package/schematics/migrations/native-view-encapsulation/util.js +0 -51
  91. package/schematics/migrations/navigation-extras-omissions/index.d.ts +0 -11
  92. package/schematics/migrations/navigation-extras-omissions/index.js +0 -72
  93. package/schematics/migrations/navigation-extras-omissions/util.d.ts +0 -11
  94. package/schematics/migrations/navigation-extras-omissions/util.js +0 -129
  95. package/schematics/migrations/relative-link-resolution/collector.d.ts +0 -22
  96. package/schematics/migrations/relative-link-resolution/collector.js +0 -98
  97. package/schematics/migrations/relative-link-resolution/index.d.ts +0 -11
  98. package/schematics/migrations/relative-link-resolution/index.js +0 -84
  99. package/schematics/migrations/relative-link-resolution/transform.d.ts +0 -22
  100. package/schematics/migrations/relative-link-resolution/transform.js +0 -68
  101. package/schematics/migrations/relative-link-resolution/update_recorder.d.ts +0 -18
  102. package/schematics/migrations/relative-link-resolution/update_recorder.js +0 -20
  103. package/schematics/migrations/relative-link-resolution/util.d.ts +0 -12
  104. package/schematics/migrations/relative-link-resolution/util.js +0 -46
  105. package/schematics/migrations/renderer-to-renderer2/helpers.d.ts +0 -25
  106. package/schematics/migrations/renderer-to-renderer2/helpers.js +0 -241
  107. package/schematics/migrations/renderer-to-renderer2/index.d.ts +0 -14
  108. package/schematics/migrations/renderer-to-renderer2/index.js +0 -138
  109. package/schematics/migrations/renderer-to-renderer2/migration.d.ts +0 -18
  110. package/schematics/migrations/renderer-to-renderer2/migration.js +0 -228
  111. package/schematics/migrations/renderer-to-renderer2/util.d.ts +0 -18
  112. package/schematics/migrations/renderer-to-renderer2/util.js +0 -86
  113. package/schematics/migrations/router-preserve-query-params/index.d.ts +0 -14
  114. package/schematics/migrations/router-preserve-query-params/index.js +0 -75
  115. package/schematics/migrations/router-preserve-query-params/util.d.ts +0 -11
  116. package/schematics/migrations/router-preserve-query-params/util.js +0 -106
  117. package/schematics/migrations/static-queries/angular/directive_inputs.d.ts +0 -11
  118. package/schematics/migrations/static-queries/angular/directive_inputs.js +0 -87
  119. package/schematics/migrations/static-queries/angular/ng_query_visitor.d.ts +0 -45
  120. package/schematics/migrations/static-queries/angular/ng_query_visitor.js +0 -130
  121. package/schematics/migrations/static-queries/angular/query-definition.d.ts +0 -37
  122. package/schematics/migrations/static-queries/angular/query-definition.js +0 -33
  123. package/schematics/migrations/static-queries/angular/super_class.d.ts +0 -15
  124. package/schematics/migrations/static-queries/angular/super_class.js +0 -35
  125. package/schematics/migrations/static-queries/index.d.ts +0 -11
  126. package/schematics/migrations/static-queries/index.js +0 -244
  127. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.d.ts +0 -41
  128. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.js +0 -210
  129. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.d.ts +0 -24
  130. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.js +0 -38
  131. package/schematics/migrations/static-queries/strategies/timing-strategy.d.ts +0 -19
  132. package/schematics/migrations/static-queries/strategies/timing-strategy.js +0 -20
  133. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.d.ts +0 -82
  134. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.js +0 -372
  135. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.d.ts +0 -18
  136. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.js +0 -55
  137. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.d.ts +0 -27
  138. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.js +0 -93
  139. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.d.ts +0 -34
  140. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.js +0 -172
  141. package/schematics/migrations/static-queries/transform.d.ts +0 -21
  142. package/schematics/migrations/static-queries/transform.js +0 -105
  143. package/schematics/migrations/template-var-assignment/analyze_template.d.ts +0 -20
  144. package/schematics/migrations/template-var-assignment/analyze_template.js +0 -38
  145. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.d.ts +0 -28
  146. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.js +0 -80
  147. package/schematics/migrations/template-var-assignment/index.d.ts +0 -11
  148. package/schematics/migrations/template-var-assignment/index.js +0 -101
  149. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.d.ts +0 -14
  150. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.js +0 -128
  151. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.d.ts +0 -64
  152. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.js +0 -302
  153. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.d.ts +0 -19
  154. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.js +0 -20
  155. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.d.ts +0 -18
  156. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.js +0 -56
  157. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.d.ts +0 -18
  158. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.js +0 -99
  159. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.d.ts +0 -37
  160. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.js +0 -118
  161. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.d.ts +0 -37
  162. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.js +0 -129
  163. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.d.ts +0 -10
  164. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.js +0 -31
  165. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.d.ts +0 -16
  166. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.js +0 -68
  167. package/schematics/migrations/undecorated-classes-with-di/index.d.ts +0 -11
  168. package/schematics/migrations/undecorated-classes-with-di/index.js +0 -226
  169. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.d.ts +0 -38
  170. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.js +0 -135
  171. package/schematics/migrations/undecorated-classes-with-di/transform.d.ts +0 -97
  172. package/schematics/migrations/undecorated-classes-with-di/transform.js +0 -373
  173. package/schematics/migrations/undecorated-classes-with-di/update_recorder.d.ts +0 -20
  174. package/schematics/migrations/undecorated-classes-with-di/update_recorder.js +0 -20
  175. package/schematics/migrations/wait-for-async/index.d.ts +0 -11
  176. package/schematics/migrations/wait-for-async/index.js +0 -101
  177. package/schematics/migrations/wait-for-async/util.d.ts +0 -11
  178. package/schematics/migrations/wait-for-async/util.js +0 -40
  179. package/schematics/migrations/xhr-factory/index.d.ts +0 -10
  180. package/schematics/migrations/xhr-factory/index.js +0 -107
@@ -1,55 +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
- 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/static-queries/strategies/usage_strategy/super_class_context", ["require", "exports", "typescript", "@angular/core/schematics/utils/typescript/functions", "@angular/core/schematics/utils/typescript/nodes", "@angular/core/schematics/utils/typescript/property_name", "@angular/core/schematics/migrations/static-queries/angular/super_class"], factory);
18
- }
19
- })(function (require, exports) {
20
- "use strict";
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.updateSuperClassAbstractMembersContext = void 0;
23
- const typescript_1 = __importDefault(require("typescript"));
24
- const functions_1 = require("@angular/core/schematics/utils/typescript/functions");
25
- const nodes_1 = require("@angular/core/schematics/utils/typescript/nodes");
26
- const property_name_1 = require("@angular/core/schematics/utils/typescript/property_name");
27
- const super_class_1 = require("@angular/core/schematics/migrations/static-queries/angular/super_class");
28
- /**
29
- * Updates the specified function context to map abstract super-class class members
30
- * to their implementation TypeScript nodes. This allows us to run the declaration visitor
31
- * for the super class with the context of the "baseClass" (e.g. with implemented abstract
32
- * class members)
33
- */
34
- function updateSuperClassAbstractMembersContext(baseClass, context, classMetadataMap) {
35
- (0, super_class_1.getSuperClassDeclarations)(baseClass, classMetadataMap).forEach(superClassDecl => {
36
- superClassDecl.members.forEach(superClassMember => {
37
- if (!superClassMember.name || !(0, nodes_1.hasModifier)(superClassMember, typescript_1.default.SyntaxKind.AbstractKeyword)) {
38
- return;
39
- }
40
- // Find the matching implementation of the abstract declaration from the super class.
41
- const baseClassImpl = baseClass.members.find(baseClassMethod => !!baseClassMethod.name &&
42
- (0, property_name_1.getPropertyNameText)(baseClassMethod.name) ===
43
- (0, property_name_1.getPropertyNameText)(superClassMember.name));
44
- if (!baseClassImpl || !(0, functions_1.isFunctionLikeDeclaration)(baseClassImpl) || !baseClassImpl.body) {
45
- return;
46
- }
47
- if (!context.has(superClassMember)) {
48
- context.set(superClassMember, baseClassImpl);
49
- }
50
- });
51
- });
52
- }
53
- exports.updateSuperClassAbstractMembersContext = updateSuperClassAbstractMembersContext;
54
- });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwZXJfY2xhc3NfY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3N0YXRpYy1xdWVyaWVzL3N0cmF0ZWdpZXMvdXNhZ2Vfc3RyYXRlZ3kvc3VwZXJfY2xhc3NfY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCw0REFBNEI7SUFFNUIsbUZBQWlGO0lBQ2pGLDJFQUErRDtJQUMvRCwyRkFBK0U7SUFFL0Usd0dBQW9FO0lBS3BFOzs7OztPQUtHO0lBQ0gsU0FBZ0Isc0NBQXNDLENBQ2xELFNBQThCLEVBQUUsT0FBd0IsRUFBRSxnQkFBa0M7UUFDOUYsSUFBQSx1Q0FBeUIsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDOUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDLElBQUEsbUJBQVcsRUFBQyxnQkFBZ0IsRUFBRSxvQkFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDM0YsT0FBTztpQkFDUjtnQkFFRCxxRkFBcUY7Z0JBQ3JGLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN4QyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSTtvQkFDckMsSUFBQSxtQ0FBbUIsRUFBQyxlQUFlLENBQUMsSUFBSSxDQUFDO3dCQUNyQyxJQUFBLG1DQUFtQixFQUFDLGdCQUFnQixDQUFDLElBQUssQ0FBQyxDQUFDLENBQUM7Z0JBRXpELElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFBLHFDQUF5QixFQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtvQkFDdEYsT0FBTztpQkFDUjtnQkFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO29CQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDO2lCQUM5QztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBdkJELHdGQXVCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7aXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbn0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtoYXNNb2RpZmllcn0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9ub2Rlcyc7XG5pbXBvcnQge2dldFByb3BlcnR5TmFtZVRleHR9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvcHJvcGVydHlfbmFtZSc7XG5pbXBvcnQge0NsYXNzTWV0YWRhdGFNYXB9IGZyb20gJy4uLy4uL2FuZ3VsYXIvbmdfcXVlcnlfdmlzaXRvcic7XG5pbXBvcnQge2dldFN1cGVyQ2xhc3NEZWNsYXJhdGlvbnN9IGZyb20gJy4uLy4uL2FuZ3VsYXIvc3VwZXJfY2xhc3MnO1xuXG5pbXBvcnQge0Z1bmN0aW9uQ29udGV4dH0gZnJvbSAnLi9kZWNsYXJhdGlvbl91c2FnZV92aXNpdG9yJztcblxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiBjb250ZXh0IHRvIG1hcCBhYnN0cmFjdCBzdXBlci1jbGFzcyBjbGFzcyBtZW1iZXJzXG4gKiB0byB0aGVpciBpbXBsZW1lbnRhdGlvbiBUeXBlU2NyaXB0IG5vZGVzLiBUaGlzIGFsbG93cyB1cyB0byBydW4gdGhlIGRlY2xhcmF0aW9uIHZpc2l0b3JcbiAqIGZvciB0aGUgc3VwZXIgY2xhc3Mgd2l0aCB0aGUgY29udGV4dCBvZiB0aGUgXCJiYXNlQ2xhc3NcIiAoZS5nLiB3aXRoIGltcGxlbWVudGVkIGFic3RyYWN0XG4gKiBjbGFzcyBtZW1iZXJzKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3VwZXJDbGFzc0Fic3RyYWN0TWVtYmVyc0NvbnRleHQoXG4gICAgYmFzZUNsYXNzOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCBjb250ZXh0OiBGdW5jdGlvbkNvbnRleHQsIGNsYXNzTWV0YWRhdGFNYXA6IENsYXNzTWV0YWRhdGFNYXApIHtcbiAgZ2V0U3VwZXJDbGFzc0RlY2xhcmF0aW9ucyhiYXNlQ2xhc3MsIGNsYXNzTWV0YWRhdGFNYXApLmZvckVhY2goc3VwZXJDbGFzc0RlY2wgPT4ge1xuICAgIHN1cGVyQ2xhc3NEZWNsLm1lbWJlcnMuZm9yRWFjaChzdXBlckNsYXNzTWVtYmVyID0+IHtcbiAgICAgIGlmICghc3VwZXJDbGFzc01lbWJlci5uYW1lIHx8ICFoYXNNb2RpZmllcihzdXBlckNsYXNzTWVtYmVyLCB0cy5TeW50YXhLaW5kLkFic3RyYWN0S2V5d29yZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBGaW5kIHRoZSBtYXRjaGluZyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWJzdHJhY3QgZGVjbGFyYXRpb24gZnJvbSB0aGUgc3VwZXIgY2xhc3MuXG4gICAgICBjb25zdCBiYXNlQ2xhc3NJbXBsID0gYmFzZUNsYXNzLm1lbWJlcnMuZmluZChcbiAgICAgICAgICBiYXNlQ2xhc3NNZXRob2QgPT4gISFiYXNlQ2xhc3NNZXRob2QubmFtZSAmJlxuICAgICAgICAgICAgICBnZXRQcm9wZXJ0eU5hbWVUZXh0KGJhc2VDbGFzc01ldGhvZC5uYW1lKSA9PT1cbiAgICAgICAgICAgICAgICAgIGdldFByb3BlcnR5TmFtZVRleHQoc3VwZXJDbGFzc01lbWJlci5uYW1lISkpO1xuXG4gICAgICBpZiAoIWJhc2VDbGFzc0ltcGwgfHwgIWlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24oYmFzZUNsYXNzSW1wbCkgfHwgIWJhc2VDbGFzc0ltcGwuYm9keSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghY29udGV4dC5oYXMoc3VwZXJDbGFzc01lbWJlcikpIHtcbiAgICAgICAgY29udGV4dC5zZXQoc3VwZXJDbGFzc01lbWJlciwgYmFzZUNsYXNzSW1wbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuIl19
@@ -1,27 +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
- /// <amd-module name="@angular/core/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor" />
9
- import type { TmplAstBoundAttribute, TmplAstBoundEvent, TmplAstBoundText, TmplAstElement, TmplAstNode, TmplAstTemplate } from '@angular/compiler';
10
- import { TemplateAstVisitor } from '../../../../utils/template_ast_visitor';
11
- /**
12
- * AST visitor that traverses the Render3 HTML AST in order to check if the given
13
- * query property is accessed statically in the template.
14
- */
15
- export declare class TemplateUsageVisitor extends TemplateAstVisitor {
16
- queryPropertyName: string;
17
- private hasQueryTemplateReference;
18
- private expressionAstVisitor;
19
- constructor(queryPropertyName: string, compilerModule: typeof import('@angular/compiler'));
20
- /** Checks whether the given query is statically accessed within the specified HTML nodes. */
21
- isQueryUsedStatically(htmlNodes: TmplAstNode[]): boolean;
22
- visitElement(element: TmplAstElement): void;
23
- visitTemplate(template: TmplAstTemplate): void;
24
- visitBoundAttribute(attribute: TmplAstBoundAttribute): void;
25
- visitBoundText(text: TmplAstBoundText): void;
26
- visitBoundEvent(node: TmplAstBoundEvent): void;
27
- }
@@ -1,93 +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
- (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/static-queries/strategies/usage_strategy/template_usage_visitor", ["require", "exports", "@angular/core/schematics/utils/template_ast_visitor"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.TemplateUsageVisitor = void 0;
20
- const template_ast_visitor_1 = require("@angular/core/schematics/utils/template_ast_visitor");
21
- /**
22
- * AST visitor that traverses the Render3 HTML AST in order to check if the given
23
- * query property is accessed statically in the template.
24
- */
25
- class TemplateUsageVisitor extends template_ast_visitor_1.TemplateAstVisitor {
26
- constructor(queryPropertyName, compilerModule) {
27
- super(compilerModule);
28
- this.queryPropertyName = queryPropertyName;
29
- this.hasQueryTemplateReference = false;
30
- // AST visitor that checks if the given expression contains property reads that
31
- // refer to the specified query property name.
32
- // This class must be defined within the template visitor due to the need to extend from a class
33
- // value found within `@angular/compiler` which is dynamically imported and provided to the
34
- // visitor.
35
- this.expressionAstVisitor = new (class extends compilerModule.RecursiveAstVisitor {
36
- constructor() {
37
- super(...arguments);
38
- this.hasQueryPropertyRead = false;
39
- }
40
- visitPropertyRead(node, span) {
41
- // The receiver of the property read needs to be "implicit" as queries are accessed
42
- // from the component instance and not from other objects.
43
- if (node.receiver instanceof compilerModule.ImplicitReceiver &&
44
- node.name === queryPropertyName) {
45
- this.hasQueryPropertyRead = true;
46
- return;
47
- }
48
- super.visitPropertyRead(node, span);
49
- }
50
- })();
51
- }
52
- /** Checks whether the given query is statically accessed within the specified HTML nodes. */
53
- isQueryUsedStatically(htmlNodes) {
54
- this.hasQueryTemplateReference = false;
55
- this.expressionAstVisitor.hasQueryPropertyRead = false;
56
- // Visit all AST nodes and check if the query property is used statically.
57
- this.visitAll(htmlNodes);
58
- return !this.hasQueryTemplateReference && this.expressionAstVisitor.hasQueryPropertyRead;
59
- }
60
- visitElement(element) {
61
- // In case there is a template references variable that matches the query property
62
- // name, we can finish this visitor as such a template variable can be used in the
63
- // entire template and the query therefore can't be accessed from the template.
64
- if (element.references.some(r => r.name === this.queryPropertyName)) {
65
- this.hasQueryTemplateReference = true;
66
- return;
67
- }
68
- this.visitAll(element.attributes);
69
- this.visitAll(element.inputs);
70
- this.visitAll(element.outputs);
71
- this.visitAll(element.children);
72
- }
73
- visitTemplate(template) {
74
- this.visitAll(template.attributes);
75
- this.visitAll(template.inputs);
76
- this.visitAll(template.outputs);
77
- // We don't want to visit any children of the template as these never can't
78
- // access a query statically. The templates can be rendered in the ngAfterViewInit"
79
- // lifecycle hook at the earliest.
80
- }
81
- visitBoundAttribute(attribute) {
82
- attribute.value.visit(this.expressionAstVisitor, attribute.sourceSpan);
83
- }
84
- visitBoundText(text) {
85
- text.value.visit(this.expressionAstVisitor, text.sourceSpan);
86
- }
87
- visitBoundEvent(node) {
88
- node.handler.visit(this.expressionAstVisitor, node.handlerSpan);
89
- }
90
- }
91
- exports.TemplateUsageVisitor = TemplateUsageVisitor;
92
- });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfdXNhZ2VfdmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3N0YXRpYy1xdWVyaWVzL3N0cmF0ZWdpZXMvdXNhZ2Vfc3RyYXRlZ3kvdGVtcGxhdGVfdXNhZ2VfdmlzaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFHSCw4RkFBMEU7SUFFMUU7OztPQUdHO0lBQ0gsTUFBYSxvQkFBcUIsU0FBUSx5Q0FBa0I7UUFJMUQsWUFDVyxpQkFBeUIsRUFBRSxjQUFrRDtZQUN0RixLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFEYixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7WUFKNUIsOEJBQXlCLEdBQUcsS0FBSyxDQUFDO1lBT3hDLCtFQUErRTtZQUMvRSw4Q0FBOEM7WUFDOUMsZ0dBQWdHO1lBQ2hHLDJGQUEyRjtZQUMzRixXQUFXO1lBQ1gsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFNLFNBQVEsY0FBYyxDQUFDLG1CQUFtQjtnQkFBaEQ7O29CQUMvQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7Z0JBYy9CLENBQUM7Z0JBWFUsaUJBQWlCLENBQUMsSUFBa0IsRUFBRSxJQUFxQjtvQkFDbEUsbUZBQW1GO29CQUNuRiwwREFBMEQ7b0JBQzFELElBQUksSUFBSSxDQUFDLFFBQVEsWUFBWSxjQUFjLENBQUMsZ0JBQWdCO3dCQUN4RCxJQUFJLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFO3dCQUNuQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO3dCQUNqQyxPQUFPO3FCQUNSO29CQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7YUFDRixDQUFDLEVBQUUsQ0FBQztRQUNQLENBQUM7UUFFRCw2RkFBNkY7UUFDN0YscUJBQXFCLENBQUMsU0FBd0I7WUFDNUMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztZQUN2QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBRXZELDBFQUEwRTtZQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXpCLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDO1FBQzNGLENBQUM7UUFFUSxZQUFZLENBQUMsT0FBdUI7WUFDM0Msa0ZBQWtGO1lBQ2xGLGtGQUFrRjtZQUNsRiwrRUFBK0U7WUFDL0UsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ25FLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFUSxhQUFhLENBQUMsUUFBeUI7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFaEMsMkVBQTJFO1lBQzNFLG1GQUFtRjtZQUNuRixrQ0FBa0M7UUFDcEMsQ0FBQztRQUVRLG1CQUFtQixDQUFDLFNBQWdDO1lBQzNELFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVRLGNBQWMsQ0FBQyxJQUFzQjtZQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFUSxlQUFlLENBQUMsSUFBdUI7WUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRSxDQUFDO0tBQ0Y7SUE5RUQsb0RBOEVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0eXBlIHtQYXJzZVNvdXJjZVNwYW4sIFByb3BlcnR5UmVhZCwgVG1wbEFzdEJvdW5kQXR0cmlidXRlLCBUbXBsQXN0Qm91bmRFdmVudCwgVG1wbEFzdEJvdW5kVGV4dCwgVG1wbEFzdEVsZW1lbnQsIFRtcGxBc3ROb2RlLCBUbXBsQXN0VGVtcGxhdGV9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7VGVtcGxhdGVBc3RWaXNpdG9yfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy90ZW1wbGF0ZV9hc3RfdmlzaXRvcic7XG5cbi8qKlxuICogQVNUIHZpc2l0b3IgdGhhdCB0cmF2ZXJzZXMgdGhlIFJlbmRlcjMgSFRNTCBBU1QgaW4gb3JkZXIgdG8gY2hlY2sgaWYgdGhlIGdpdmVuXG4gKiBxdWVyeSBwcm9wZXJ0eSBpcyBhY2Nlc3NlZCBzdGF0aWNhbGx5IGluIHRoZSB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlVXNhZ2VWaXNpdG9yIGV4dGVuZHMgVGVtcGxhdGVBc3RWaXNpdG9yIHtcbiAgcHJpdmF0ZSBoYXNRdWVyeVRlbXBsYXRlUmVmZXJlbmNlID0gZmFsc2U7XG4gIHByaXZhdGUgZXhwcmVzc2lvbkFzdFZpc2l0b3I7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgcXVlcnlQcm9wZXJ0eU5hbWU6IHN0cmluZywgY29tcGlsZXJNb2R1bGU6IHR5cGVvZiBpbXBvcnQoJ0Bhbmd1bGFyL2NvbXBpbGVyJykpIHtcbiAgICBzdXBlcihjb21waWxlck1vZHVsZSk7XG5cbiAgICAvLyBBU1QgdmlzaXRvciB0aGF0IGNoZWNrcyBpZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBjb250YWlucyBwcm9wZXJ0eSByZWFkcyB0aGF0XG4gICAgLy8gcmVmZXIgdG8gdGhlIHNwZWNpZmllZCBxdWVyeSBwcm9wZXJ0eSBuYW1lLlxuICAgIC8vIFRoaXMgY2xhc3MgbXVzdCBiZSBkZWZpbmVkIHdpdGhpbiB0aGUgdGVtcGxhdGUgdmlzaXRvciBkdWUgdG8gdGhlIG5lZWQgdG8gZXh0ZW5kIGZyb20gYSBjbGFzc1xuICAgIC8vIHZhbHVlIGZvdW5kIHdpdGhpbiBgQGFuZ3VsYXIvY29tcGlsZXJgIHdoaWNoIGlzIGR5bmFtaWNhbGx5IGltcG9ydGVkIGFuZCBwcm92aWRlZCB0byB0aGVcbiAgICAvLyB2aXNpdG9yLlxuICAgIHRoaXMuZXhwcmVzc2lvbkFzdFZpc2l0b3IgPSBuZXcgKGNsYXNzIGV4dGVuZHMgY29tcGlsZXJNb2R1bGUuUmVjdXJzaXZlQXN0VmlzaXRvciB7XG4gICAgICBoYXNRdWVyeVByb3BlcnR5UmVhZCA9IGZhbHNlO1xuXG5cbiAgICAgIG92ZXJyaWRlIHZpc2l0UHJvcGVydHlSZWFkKG5vZGU6IFByb3BlcnR5UmVhZCwgc3BhbjogUGFyc2VTb3VyY2VTcGFuKTogYW55IHtcbiAgICAgICAgLy8gVGhlIHJlY2VpdmVyIG9mIHRoZSBwcm9wZXJ0eSByZWFkIG5lZWRzIHRvIGJlIFwiaW1wbGljaXRcIiBhcyBxdWVyaWVzIGFyZSBhY2Nlc3NlZFxuICAgICAgICAvLyBmcm9tIHRoZSBjb21wb25lbnQgaW5zdGFuY2UgYW5kIG5vdCBmcm9tIG90aGVyIG9iamVjdHMuXG4gICAgICAgIGlmIChub2RlLnJlY2VpdmVyIGluc3RhbmNlb2YgY29tcGlsZXJNb2R1bGUuSW1wbGljaXRSZWNlaXZlciAmJlxuICAgICAgICAgICAgbm9kZS5uYW1lID09PSBxdWVyeVByb3BlcnR5TmFtZSkge1xuICAgICAgICAgIHRoaXMuaGFzUXVlcnlQcm9wZXJ0eVJlYWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLnZpc2l0UHJvcGVydHlSZWFkKG5vZGUsIHNwYW4pO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHF1ZXJ5IGlzIHN0YXRpY2FsbHkgYWNjZXNzZWQgd2l0aGluIHRoZSBzcGVjaWZpZWQgSFRNTCBub2Rlcy4gKi9cbiAgaXNRdWVyeVVzZWRTdGF0aWNhbGx5KGh0bWxOb2RlczogVG1wbEFzdE5vZGVbXSk6IGJvb2xlYW4ge1xuICAgIHRoaXMuaGFzUXVlcnlUZW1wbGF0ZVJlZmVyZW5jZSA9IGZhbHNlO1xuICAgIHRoaXMuZXhwcmVzc2lvbkFzdFZpc2l0b3IuaGFzUXVlcnlQcm9wZXJ0eVJlYWQgPSBmYWxzZTtcblxuICAgIC8vIFZpc2l0IGFsbCBBU1Qgbm9kZXMgYW5kIGNoZWNrIGlmIHRoZSBxdWVyeSBwcm9wZXJ0eSBpcyB1c2VkIHN0YXRpY2FsbHkuXG4gICAgdGhpcy52aXNpdEFsbChodG1sTm9kZXMpO1xuXG4gICAgcmV0dXJuICF0aGlzLmhhc1F1ZXJ5VGVtcGxhdGVSZWZlcmVuY2UgJiYgdGhpcy5leHByZXNzaW9uQXN0VmlzaXRvci5oYXNRdWVyeVByb3BlcnR5UmVhZDtcbiAgfVxuXG4gIG92ZXJyaWRlIHZpc2l0RWxlbWVudChlbGVtZW50OiBUbXBsQXN0RWxlbWVudCk6IHZvaWQge1xuICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYSB0ZW1wbGF0ZSByZWZlcmVuY2VzIHZhcmlhYmxlIHRoYXQgbWF0Y2hlcyB0aGUgcXVlcnkgcHJvcGVydHlcbiAgICAvLyBuYW1lLCB3ZSBjYW4gZmluaXNoIHRoaXMgdmlzaXRvciBhcyBzdWNoIGEgdGVtcGxhdGUgdmFyaWFibGUgY2FuIGJlIHVzZWQgaW4gdGhlXG4gICAgLy8gZW50aXJlIHRlbXBsYXRlIGFuZCB0aGUgcXVlcnkgdGhlcmVmb3JlIGNhbid0IGJlIGFjY2Vzc2VkIGZyb20gdGhlIHRlbXBsYXRlLlxuICAgIGlmIChlbGVtZW50LnJlZmVyZW5jZXMuc29tZShyID0+IHIubmFtZSA9PT0gdGhpcy5xdWVyeVByb3BlcnR5TmFtZSkpIHtcbiAgICAgIHRoaXMuaGFzUXVlcnlUZW1wbGF0ZVJlZmVyZW5jZSA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy52aXNpdEFsbChlbGVtZW50LmF0dHJpYnV0ZXMpO1xuICAgIHRoaXMudmlzaXRBbGwoZWxlbWVudC5pbnB1dHMpO1xuICAgIHRoaXMudmlzaXRBbGwoZWxlbWVudC5vdXRwdXRzKTtcbiAgICB0aGlzLnZpc2l0QWxsKGVsZW1lbnQuY2hpbGRyZW4pO1xuICB9XG5cbiAgb3ZlcnJpZGUgdmlzaXRUZW1wbGF0ZSh0ZW1wbGF0ZTogVG1wbEFzdFRlbXBsYXRlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdEFsbCh0ZW1wbGF0ZS5hdHRyaWJ1dGVzKTtcbiAgICB0aGlzLnZpc2l0QWxsKHRlbXBsYXRlLmlucHV0cyk7XG4gICAgdGhpcy52aXNpdEFsbCh0ZW1wbGF0ZS5vdXRwdXRzKTtcblxuICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gdmlzaXQgYW55IGNoaWxkcmVuIG9mIHRoZSB0ZW1wbGF0ZSBhcyB0aGVzZSBuZXZlciBjYW4ndFxuICAgIC8vIGFjY2VzcyBhIHF1ZXJ5IHN0YXRpY2FsbHkuIFRoZSB0ZW1wbGF0ZXMgY2FuIGJlIHJlbmRlcmVkIGluIHRoZSBuZ0FmdGVyVmlld0luaXRcIlxuICAgIC8vIGxpZmVjeWNsZSBob29rIGF0IHRoZSBlYXJsaWVzdC5cbiAgfVxuXG4gIG92ZXJyaWRlIHZpc2l0Qm91bmRBdHRyaWJ1dGUoYXR0cmlidXRlOiBUbXBsQXN0Qm91bmRBdHRyaWJ1dGUpIHtcbiAgICBhdHRyaWJ1dGUudmFsdWUudmlzaXQodGhpcy5leHByZXNzaW9uQXN0VmlzaXRvciwgYXR0cmlidXRlLnNvdXJjZVNwYW4pO1xuICB9XG5cbiAgb3ZlcnJpZGUgdmlzaXRCb3VuZFRleHQodGV4dDogVG1wbEFzdEJvdW5kVGV4dCkge1xuICAgIHRleHQudmFsdWUudmlzaXQodGhpcy5leHByZXNzaW9uQXN0VmlzaXRvciwgdGV4dC5zb3VyY2VTcGFuKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHZpc2l0Qm91bmRFdmVudChub2RlOiBUbXBsQXN0Qm91bmRFdmVudCkge1xuICAgIG5vZGUuaGFuZGxlci52aXNpdCh0aGlzLmV4cHJlc3Npb25Bc3RWaXNpdG9yLCBub2RlLmhhbmRsZXJTcGFuKTtcbiAgfVxufVxuIl19
@@ -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
- /// <amd-module name="@angular/core/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy" />
9
- import ts from 'typescript';
10
- import { ClassMetadataMap } from '../../angular/ng_query_visitor';
11
- import { NgQueryDefinition } from '../../angular/query-definition';
12
- import { TimingResult, TimingStrategy } from '../timing-strategy';
13
- /**
14
- * Query timing strategy that determines the timing of a given query by inspecting how
15
- * the query is accessed within the project's TypeScript source files. Read more about
16
- * this strategy here: https://hackmd.io/s/Hymvc2OKE
17
- */
18
- export declare class QueryUsageStrategy implements TimingStrategy {
19
- private classMetadata;
20
- private typeChecker;
21
- private compilerModule;
22
- constructor(classMetadata: ClassMetadataMap, typeChecker: ts.TypeChecker, compilerModule: typeof import('@angular/compiler'));
23
- setup(): void;
24
- /**
25
- * Analyzes the usage of the given query and determines the query timing based
26
- * on the current usage of the query.
27
- */
28
- detectTiming(query: NgQueryDefinition): TimingResult;
29
- /**
30
- * Checks whether a given query is used statically within the given class, its super
31
- * class or derived classes.
32
- */
33
- private analyzeQueryUsage;
34
- }
@@ -1,172 +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
- 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/static-queries/strategies/usage_strategy/usage_strategy", ["require", "exports", "typescript", "@angular/core/schematics/utils/parse_html", "@angular/core/schematics/utils/typescript/property_name", "@angular/core/schematics/migrations/static-queries/angular/query-definition", "@angular/core/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor", "@angular/core/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context", "@angular/core/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor"], factory);
18
- }
19
- })(function (require, exports) {
20
- "use strict";
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.QueryUsageStrategy = void 0;
23
- const typescript_1 = __importDefault(require("typescript"));
24
- const parse_html_1 = require("@angular/core/schematics/utils/parse_html");
25
- const property_name_1 = require("@angular/core/schematics/utils/typescript/property_name");
26
- const query_definition_1 = require("@angular/core/schematics/migrations/static-queries/angular/query-definition");
27
- const declaration_usage_visitor_1 = require("@angular/core/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor");
28
- const super_class_context_1 = require("@angular/core/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context");
29
- const template_usage_visitor_1 = require("@angular/core/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor");
30
- /**
31
- * Object that maps a given type of query to a list of lifecycle hooks that
32
- * could be used to access such a query statically.
33
- */
34
- const STATIC_QUERY_LIFECYCLE_HOOKS = {
35
- [query_definition_1.QueryType.ViewChild]: ['ngOnChanges', 'ngOnInit', 'ngDoCheck', 'ngAfterContentInit', 'ngAfterContentChecked'],
36
- [query_definition_1.QueryType.ContentChild]: ['ngOnChanges', 'ngOnInit', 'ngDoCheck'],
37
- };
38
- /**
39
- * Query timing strategy that determines the timing of a given query by inspecting how
40
- * the query is accessed within the project's TypeScript source files. Read more about
41
- * this strategy here: https://hackmd.io/s/Hymvc2OKE
42
- */
43
- class QueryUsageStrategy {
44
- constructor(classMetadata, typeChecker, compilerModule) {
45
- this.classMetadata = classMetadata;
46
- this.typeChecker = typeChecker;
47
- this.compilerModule = compilerModule;
48
- }
49
- setup() { }
50
- /**
51
- * Analyzes the usage of the given query and determines the query timing based
52
- * on the current usage of the query.
53
- */
54
- detectTiming(query) {
55
- if (query.property === null) {
56
- return { timing: null, message: 'Queries defined on accessors cannot be analyzed.' };
57
- }
58
- const usage = this.analyzeQueryUsage(query.container, query, []);
59
- if (usage === declaration_usage_visitor_1.ResolvedUsage.AMBIGUOUS) {
60
- return {
61
- timing: query_definition_1.QueryTiming.STATIC,
62
- message: 'Query timing is ambiguous. Please check if the query can be marked as dynamic.'
63
- };
64
- }
65
- else if (usage === declaration_usage_visitor_1.ResolvedUsage.SYNCHRONOUS) {
66
- return { timing: query_definition_1.QueryTiming.STATIC };
67
- }
68
- else {
69
- return { timing: query_definition_1.QueryTiming.DYNAMIC };
70
- }
71
- }
72
- /**
73
- * Checks whether a given query is used statically within the given class, its super
74
- * class or derived classes.
75
- */
76
- analyzeQueryUsage(classDecl, query, knownInputNames, functionCtx = new Map(), visitInheritedClasses = true) {
77
- const usageVisitor = new declaration_usage_visitor_1.DeclarationUsageVisitor(query.property, this.typeChecker, functionCtx);
78
- const classMetadata = this.classMetadata.get(classDecl);
79
- let usage = declaration_usage_visitor_1.ResolvedUsage.ASYNCHRONOUS;
80
- // In case there is metadata for the current class, we collect all resolved Angular input
81
- // names and add them to the list of known inputs that need to be checked for usages of
82
- // the current query. e.g. queries used in an @Input() *setter* are always static.
83
- if (classMetadata) {
84
- knownInputNames.push(...classMetadata.ngInputNames);
85
- }
86
- // Array of TypeScript nodes which can contain usages of the given query in
87
- // order to access it statically.
88
- const possibleStaticQueryNodes = filterQueryClassMemberNodes(classDecl, query, knownInputNames);
89
- // In case nodes that can possibly access a query statically have been found, check
90
- // if the query declaration is synchronously used within any of these nodes.
91
- if (possibleStaticQueryNodes.length) {
92
- possibleStaticQueryNodes.forEach(n => usage = combineResolvedUsage(usage, usageVisitor.getResolvedNodeUsage(n)));
93
- }
94
- if (!classMetadata) {
95
- return usage;
96
- }
97
- // In case there is a component template for the current class, we check if the
98
- // template statically accesses the current query. In case that's true, the query
99
- // can be marked as static.
100
- if (classMetadata.template && (0, property_name_1.hasPropertyNameText)(query.property.name)) {
101
- const template = classMetadata.template;
102
- const parsedHtml = (0, parse_html_1.parseHtmlGracefully)(template.content, template.filePath, this.compilerModule);
103
- const htmlVisitor = new template_usage_visitor_1.TemplateUsageVisitor(query.property.name.text, this.compilerModule);
104
- if (parsedHtml && htmlVisitor.isQueryUsedStatically(parsedHtml)) {
105
- return declaration_usage_visitor_1.ResolvedUsage.SYNCHRONOUS;
106
- }
107
- }
108
- // In case derived classes should also be analyzed, we determine the classes that derive
109
- // from the current class and check if these have input setters or lifecycle hooks that
110
- // use the query statically.
111
- if (visitInheritedClasses) {
112
- classMetadata.derivedClasses.forEach(derivedClass => {
113
- usage = combineResolvedUsage(usage, this.analyzeQueryUsage(derivedClass, query, knownInputNames));
114
- });
115
- }
116
- // In case the current class has a super class, we determine declared abstract function-like
117
- // declarations in the super-class that are implemented in the current class. The super class
118
- // will then be analyzed with the abstract declarations mapped to the implemented TypeScript
119
- // nodes. This allows us to handle queries which are used in super classes through derived
120
- // abstract method declarations.
121
- if (classMetadata.superClass) {
122
- const superClassDecl = classMetadata.superClass;
123
- // Update the function context to map abstract declaration nodes to their implementation
124
- // node in the base class. This ensures that the declaration usage visitor can analyze
125
- // abstract class member declarations.
126
- (0, super_class_context_1.updateSuperClassAbstractMembersContext)(classDecl, functionCtx, this.classMetadata);
127
- usage = combineResolvedUsage(usage, this.analyzeQueryUsage(superClassDecl, query, [], functionCtx, false));
128
- }
129
- return usage;
130
- }
131
- }
132
- exports.QueryUsageStrategy = QueryUsageStrategy;
133
- /**
134
- * Combines two resolved usages based on a fixed priority. "Synchronous" takes
135
- * precedence over "Ambiguous" whereas ambiguous takes precedence over "Asynchronous".
136
- */
137
- function combineResolvedUsage(base, target) {
138
- if (base === declaration_usage_visitor_1.ResolvedUsage.SYNCHRONOUS) {
139
- return base;
140
- }
141
- else if (target !== declaration_usage_visitor_1.ResolvedUsage.ASYNCHRONOUS) {
142
- return target;
143
- }
144
- else {
145
- return declaration_usage_visitor_1.ResolvedUsage.ASYNCHRONOUS;
146
- }
147
- }
148
- /**
149
- * Filters all class members from the class declaration that can access the
150
- * given query statically (e.g. ngOnInit lifecycle hook or @Input setters)
151
- */
152
- function filterQueryClassMemberNodes(classDecl, query, knownInputNames) {
153
- // Returns an array of TypeScript nodes which can contain usages of the given query
154
- // in order to access it statically. e.g.
155
- // (1) queries used in the "ngOnInit" lifecycle hook are static.
156
- // (2) inputs with setters can access queries statically.
157
- return classDecl.members
158
- .filter((m) => {
159
- if (typescript_1.default.isMethodDeclaration(m) && m.body && (0, property_name_1.hasPropertyNameText)(m.name) &&
160
- STATIC_QUERY_LIFECYCLE_HOOKS[query.type].indexOf(m.name.text) !== -1) {
161
- return true;
162
- }
163
- else if (knownInputNames && typescript_1.default.isSetAccessor(m) && m.body &&
164
- (0, property_name_1.hasPropertyNameText)(m.name) && knownInputNames.indexOf(m.name.text) !== -1) {
165
- return true;
166
- }
167
- return false;
168
- })
169
- .map(member => member.body);
170
- }
171
- });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2Vfc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy9zdGF0aWMtcXVlcmllcy9zdHJhdGVnaWVzL3VzYWdlX3N0cmF0ZWd5L3VzYWdlX3N0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDREQUE0QjtJQUU1QiwwRUFBaUU7SUFDakUsMkZBQStFO0lBRS9FLGtIQUF5RjtJQUd6RixzSkFBb0c7SUFDcEcsMElBQTZFO0lBQzdFLGdKQUE4RDtJQUc5RDs7O09BR0c7SUFDSCxNQUFNLDRCQUE0QixHQUFHO1FBQ25DLENBQUMsNEJBQVMsQ0FBQyxTQUFTLENBQUMsRUFDakIsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsQ0FBQztRQUMzRixDQUFDLDRCQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQztLQUNuRSxDQUFDO0lBRUY7Ozs7T0FJRztJQUNILE1BQWEsa0JBQWtCO1FBQzdCLFlBQ1ksYUFBK0IsRUFBVSxXQUEyQixFQUNwRSxjQUFrRDtZQURsRCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7WUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7WUFDcEUsbUJBQWMsR0FBZCxjQUFjLENBQW9DO1FBQUcsQ0FBQztRQUVsRSxLQUFLLEtBQUksQ0FBQztRQUVWOzs7V0FHRztRQUNILFlBQVksQ0FBQyxLQUF3QjtZQUNuQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUMzQixPQUFPLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsa0RBQWtELEVBQUMsQ0FBQzthQUNwRjtZQUVELE1BQU0sS0FBSyxHQUFH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O1lBQ3ZELElBQUksb0JBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUEsbUNBQW1CLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbEUsNEJBQTRCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN4RSxPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNLElBQ0gsZUFBZSxJQUFJLG9CQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJO2dCQUNoRCxJQUFBLG1DQUFtQixFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQzlFLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQzthQUNULEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtwYXJzZUh0bWxHcmFjZWZ1bGx5fSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9wYXJzZV9odG1sJztcbmltcG9ydCB7aGFzUHJvcGVydHlOYW1lVGV4dH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9wcm9wZXJ0eV9uYW1lJztcbmltcG9ydCB7Q2xhc3NNZXRhZGF0YU1hcH0gZnJvbSAnLi4vLi4vYW5ndWxhci9uZ19xdWVyeV92aXNpdG9yJztcbmltcG9ydCB7TmdRdWVyeURlZmluaXRpb24sIFF1ZXJ5VGltaW5nLCBRdWVyeVR5cGV9IGZyb20gJy4uLy4uL2FuZ3VsYXIvcXVlcnktZGVmaW5pdGlvbic7XG5pbXBvcnQge1RpbWluZ1Jlc3VsdCwgVGltaW5nU3RyYXRlZ3l9IGZyb20gJy4uL3RpbWluZy1zdHJhdGVneSc7XG5cbmltcG9ydCB7RGVjbGFyYXRpb25Vc2FnZVZpc2l0b3IsIEZ1bmN0aW9uQ29udGV4dCwgUmVzb2x2ZWRVc2FnZX0gZnJvbSAnLi9kZWNsYXJhdGlvbl91c2FnZV92aXNpdG9yJztcbmltcG9ydCB7dXBkYXRlU3VwZXJDbGFzc0Fic3RyYWN0TWVtYmVyc0NvbnRleHR9IGZyb20gJy4vc3VwZXJfY2xhc3NfY29udGV4dCc7XG5pbXBvcnQge1RlbXBsYXRlVXNhZ2VWaXNpdG9yfSBmcm9tICcuL3RlbXBsYXRlX3VzYWdlX3Zpc2l0b3InO1xuXG5cbi8qKlxuICogT2JqZWN0IHRoYXQgbWFwcyBhIGdpdmVuIHR5cGUgb2YgcXVlcnkgdG8gYSBsaXN0IG9mIGxpZmVjeWNsZSBob29rcyB0aGF0XG4gKiBjb3VsZCBiZSB1c2VkIHRvIGFjY2VzcyBzdWNoIGEgcXVlcnkgc3RhdGljYWxseS5cbiAqL1xuY29uc3QgU1RBVElDX1FVRVJZX0xJRkVDWUNMRV9IT09LUyA9IHtcbiAgW1F1ZXJ5VHlwZS5WaWV3Q2hpbGRdOlxuICAgICAgWyduZ09uQ2hhbmdlcycsICduZ09uSW5pdCcsICduZ0RvQ2hlY2snLCAnbmdBZnRlckNvbnRlbnRJbml0JywgJ25nQWZ0ZXJDb250ZW50Q2hlY2tlZCddLFxuICBbUXVlcnlUeXBlLkNvbnRlbnRDaGlsZF06IFsnbmdPbkNoYW5nZXMnLCAnbmdPbkluaXQnLCAnbmdEb0NoZWNrJ10sXG59O1xuXG4vKipcbiAqIFF1ZXJ5IHRpbWluZyBzdHJhdGVneSB0aGF0IGRldGVybWluZXMgdGhlIHRpbWluZyBvZiBhIGdpdmVuIHF1ZXJ5IGJ5IGluc3BlY3RpbmcgaG93XG4gKiB0aGUgcXVlcnkgaXMgYWNjZXNzZWQgd2l0aGluIHRoZSBwcm9qZWN0J3MgVHlwZVNjcmlwdCBzb3VyY2UgZmlsZXMuIFJlYWQgbW9yZSBhYm91dFxuICogdGhpcyBzdHJhdGVneSBoZXJlOiBodHRwczovL2hhY2ttZC5pby9zL0h5bXZjMk9LRVxuICovXG5leHBvcnQgY2xhc3MgUXVlcnlVc2FnZVN0cmF0ZWd5IGltcGxlbWVudHMgVGltaW5nU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgY2xhc3NNZXRhZGF0YTogQ2xhc3NNZXRhZGF0YU1hcCwgcHJpdmF0ZSB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gICAgICBwcml2YXRlIGNvbXBpbGVyTW9kdWxlOiB0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlcicpKSB7fVxuXG4gIHNldHVwKCkge31cblxuICAvKipcbiAgICogQW5hbHl6ZXMgdGhlIHVzYWdlIG9mIHRoZSBnaXZlbiBxdWVyeSBhbmQgZGV0ZXJtaW5lcyB0aGUgcXVlcnkgdGltaW5nIGJhc2VkXG4gICAqIG9uIHRoZSBjdXJyZW50IHVzYWdlIG9mIHRoZSBxdWVyeS5cbiAgICovXG4gIGRldGVjdFRpbWluZyhxdWVyeTogTmdRdWVyeURlZmluaXRpb24pOiBUaW1pbmdSZXN1bHQge1xuICAgIGlmIChxdWVyeS5wcm9wZXJ0eSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt0aW1pbmc6IG51bGwsIG1lc3NhZ2U6ICdRdWVyaWVzIGRlZmluZWQgb24gYWNjZXNzb3JzIGNhbm5vdCBiZSBhbmFseXplZC4nfTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2FnZSA9IHRoaXMuYW5hbHl6ZVF1ZXJ5VXNhZ2UocXVlcnkuY29udGFpbmVyLCBxdWVyeSwgW10pO1xuXG4gICAgaWYgKHVzYWdlID09PSBSZXNvbHZlZFVzYWdlLkFNQklHVU9VUykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGltaW5nOiBRdWVyeVRpbWluZy5TVEFUSUMsXG4gICAgICAgIG1lc3NhZ2U6ICdRdWVyeSB0aW1pbmcgaXMgYW1iaWd1b3VzLiBQbGVhc2UgY2hlY2sgaWYgdGhlIHF1ZXJ5IGNhbiBiZSBtYXJrZWQgYXMgZHluYW1pYy4nXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodXNhZ2UgPT09IFJlc29sdmVkVXNhZ2UuU1lOQ0hST05PVVMpIHtcbiAgICAgIHJldHVybiB7dGltaW5nOiBRdWVyeVRpbWluZy5TVEFUSUN9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge3RpbWluZzogUXVlcnlUaW1pbmcuRFlOQU1JQ307XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gcXVlcnkgaXMgdXNlZCBzdGF0aWNhbGx5IHdpdGhpbiB0aGUgZ2l2ZW4gY2xhc3MsIGl0cyBzdXBlclxuICAgKiBjbGFzcyBvciBkZXJpdmVkIGNsYXNzZXMuXG4gICAqL1xuICBwcml2YXRlIGFuYWx5emVRdWVyeVVzYWdlKFxuICAgICAgY2xhc3NEZWNsOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCBxdWVyeTogTmdRdWVyeURlZmluaXRpb24sIGtub3duSW5wdXROYW1lczogc3RyaW5nW10sXG4gICAgICBmdW5jdGlvbkN0eDogRnVuY3Rpb25Db250ZXh0ID0gbmV3IE1hcCgpLCB2aXNpdEluaGVyaXRlZENsYXNzZXMgPSB0cnVlKTogUmVzb2x2ZWRVc2FnZSB7XG4gICAgY29uc3QgdXNhZ2VWaXNpdG9yID1cbiAgICAgICAgbmV3IERlY2xhcmF0aW9uVXNhZ2VWaXNpdG9yKHF1ZXJ5LnByb3BlcnR5ISwgdGhpcy50eXBlQ2hlY2tlciwgZnVuY3Rpb25DdHgpO1xuICAgIGNvbnN0IGNsYXNzTWV0YWRhdGEgPSB0aGlzLmNsYXNzTWV0YWRhdGEuZ2V0KGNsYXNzRGVjbCk7XG4gICAgbGV0IHVzYWdlOiBSZXNvbHZlZFVzYWdlID0gUmVzb2x2ZWRVc2FnZS5BU1lOQ0hST05PVVM7XG5cbiAgICAvLyBJbiBjYXNlIHRoZXJlIGlzIG1ldGFkYXRhIGZvciB0aGUgY3VycmVudCBjbGFzcywgd2UgY29sbGVjdCBhbGwgcmVzb2x2ZWQgQW5ndWxhciBpbnB1dFxuICAgIC8vIG5hbWVzIGFuZCBhZGQgdGhlbSB0byB0aGUgbGlzdCBvZiBrbm93biBpbnB1dHMgdGhhdCBuZWVkIHRvIGJlIGNoZWNrZWQgZm9yIHVzYWdlcyBvZlxuICAgIC8vIHRoZSBjdXJyZW50IHF1ZXJ5LiBlLmcuIHF1ZXJpZXMgdXNlZCBpbiBhbiBASW5wdXQoKSAqc2V0dGVyKiBhcmUgYWx3YXlzIHN0YXRpYy5cbiAgICBpZiAoY2xhc3NNZXRhZGF0YSkge1xuICAgICAga25vd25JbnB1dE5hbWVzLnB1c2goLi4uY2xhc3NNZXRhZGF0YS5uZ0lucHV0TmFtZXMpO1xuICAgIH1cblxuICAgIC8vIEFycmF5IG9mIFR5cGVTY3JpcHQgbm9kZXMgd2hpY2ggY2FuIGNvbnRhaW4gdXNhZ2VzIG9mIHRoZSBnaXZlbiBxdWVyeSBpblxuICAgIC8vIG9yZGVyIHRvIGFjY2VzcyBpdCBzdGF0aWNhbGx5LlxuICAgIGNvbnN0IHBvc3NpYmxlU3RhdGljUXVlcnlOb2RlcyA9IGZpbHRlclF1ZXJ5Q2xhc3NNZW1iZXJOb2RlcyhjbGFzc0RlY2wsIHF1ZXJ5LCBrbm93bklucHV0TmFtZXMpO1xuXG4gICAgLy8gSW4gY2FzZSBub2RlcyB0aGF0IGNhbiBwb3NzaWJseSBhY2Nlc3MgYSBxdWVyeSBzdGF0aWNhbGx5IGhhdmUgYmVlbiBmb3VuZCwgY2hlY2tcbiAgICAvLyBpZiB0aGUgcXVlcnkgZGVjbGFyYXRpb24gaXMgc3luY2hyb25vdXNseSB1c2VkIHdpdGhpbiBhbnkgb2YgdGhlc2Ugbm9kZXMuXG4gICAgaWYgKHBvc3NpYmxlU3RhdGljUXVlcnlOb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHBvc3NpYmxlU3RhdGljUXVlcnlOb2Rlcy5mb3JFYWNoKFxuICAgICAgICAgIG4gPT4gdXNhZ2UgPSBjb21iaW5lUmVzb2x2ZWRVc2FnZSh1c2FnZSwgdXNhZ2VWaXNpdG9yLmdldFJlc29sdmVkTm9kZVVzYWdlKG4pKSk7XG4gICAgfVxuXG4gICAgaWYgKCFjbGFzc01ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdXNhZ2U7XG4gICAgfVxuXG4gICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhIGNvbXBvbmVudCB0ZW1wbGF0ZSBmb3IgdGhlIGN1cnJlbnQgY2xhc3MsIHdlIGNoZWNrIGlmIHRoZVxuICAgIC8vIHRlbXBsYXRlIHN0YXRpY2FsbHkgYWNjZXNzZXMgdGhlIGN1cnJlbnQgcXVlcnkuIEluIGNhc2UgdGhhdCdzIHRydWUsIHRoZSBxdWVyeVxuICAgIC8vIGNhbiBiZSBtYXJrZWQgYXMgc3RhdGljLlxuICAgIGlmIChjbGFzc01ldGFkYXRhLnRlbXBsYXRlICYmIGhhc1Byb3BlcnR5TmFtZVRleHQocXVlcnkucHJvcGVydHkhLm5hbWUpKSB7XG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IGNsYXNzTWV0YWRhdGEudGVtcGxhdGU7XG4gICAgICBjb25zdCBwYXJzZWRIdG1sID1cbiAgICAgICAgICBwYXJzZUh0bWxHcmFjZWZ1bGx5KHRlbXBsYXRlLmNvbnRlbnQsIHRlbXBsYXRlLmZpbGVQYXRoLCB0aGlzLmNvbXBpbGVyTW9kdWxlKTtcbiAgICAgIGNvbnN0IGh0bWxWaXNpdG9yID0gbmV3IFRlbXBsYXRlVXNhZ2VWaXNpdG9yKHF1ZXJ5LnByb3BlcnR5IS5uYW1lLnRleHQsIHRoaXMuY29tcGlsZXJNb2R1bGUpO1xuXG4gICAgICBpZiAocGFyc2VkSHRtbCAmJiBodG1sVmlzaXRvci5pc1F1ZXJ5VXNlZFN0YXRpY2FsbHkocGFyc2VkSHRtbCkpIHtcbiAgICAgICAgcmV0dXJuIFJlc29sdmVkVXNhZ2UuU1lOQ0hST05PVVM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW4gY2FzZSBkZXJpdmVkIGNsYXNzZXMgc2hvdWxkIGFsc28gYmUgYW5hbHl6ZWQsIHdlIGRldGVybWluZSB0aGUgY2xhc3NlcyB0aGF0IGRlcml2ZVxuICAgIC8vIGZyb20gdGhlIGN1cnJlbnQgY2xhc3MgYW5kIGNoZWNrIGlmIHRoZXNlIGhhdmUgaW5wdXQgc2V0dGVycyBvciBsaWZlY3ljbGUgaG9va3MgdGhhdFxuICAgIC8vIHVzZSB0aGUgcXVlcnkgc3RhdGljYWxseS5cbiAgICBpZiAodmlzaXRJbmhlcml0ZWRDbGFzc2VzKSB7XG4gICAgICBjbGFzc01ldGFkYXRhLmRlcml2ZWRDbGFzc2VzLmZvckVhY2goZGVyaXZlZENsYXNzID0+IHtcbiAgICAgICAgdXNhZ2UgPSBjb21iaW5lUmVzb2x2ZWRVc2FnZShcbiAgICAgICAgICAgIHVzYWdlLCB0aGlzLmFuYWx5emVRdWVyeVVzYWdlKGRlcml2ZWRDbGFzcywgcXVlcnksIGtub3duSW5wdXROYW1lcykpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSW4gY2FzZSB0aGUgY3VycmVudCBjbGFzcyBoYXMgYSBzdXBlciBjbGFzcywgd2UgZGV0ZXJtaW5lIGRlY2xhcmVkIGFic3RyYWN0IGZ1bmN0aW9uLWxpa2VcbiAgICAvLyBkZWNsYXJhdGlvbnMgaW4gdGhlIHN1cGVyLWNsYXNzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIHRoZSBjdXJyZW50IGNsYXNzLiBUaGUgc3VwZXIgY2xhc3NcbiAgICAvLyB3aWxsIHRoZW4gYmUgYW5hbHl6ZWQgd2l0aCB0aGUgYWJzdHJhY3QgZGVjbGFyYXRpb25zIG1hcHBlZCB0byB0aGUgaW1wbGVtZW50ZWQgVHlwZVNjcmlwdFxuICAgIC8vIG5vZGVzLiBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgcXVlcmllcyB3aGljaCBhcmUgdXNlZCBpbiBzdXBlciBjbGFzc2VzIHRocm91Z2ggZGVyaXZlZFxuICAgIC8vIGFic3RyYWN0IG1ldGhvZCBkZWNsYXJhdGlvbnMuXG4gICAgaWYgKGNsYXNzTWV0YWRhdGEuc3VwZXJDbGFzcykge1xuICAgICAgY29uc3Qgc3VwZXJDbGFzc0RlY2wgPSBjbGFzc01ldGFkYXRhLnN1cGVyQ2xhc3M7XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgZnVuY3Rpb24gY29udGV4dCB0byBtYXAgYWJzdHJhY3QgZGVjbGFyYXRpb24gbm9kZXMgdG8gdGhlaXIgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIG5vZGUgaW4gdGhlIGJhc2UgY2xhc3MuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBkZWNsYXJhdGlvbiB1c2FnZSB2aXNpdG9yIGNhbiBhbmFseXplXG4gICAgICAvLyBhYnN0cmFjdCBjbGFzcyBtZW1iZXIgZGVjbGFyYXRpb25zLlxuICAgICAgdXBkYXRlU3VwZXJDbGFzc0Fic3RyYWN0TWVtYmVyc0NvbnRleHQoY2xhc3NEZWNsLCBmdW5jdGlvbkN0eCwgdGhpcy5jbGFzc01ldGFkYXRhKTtcblxuICAgICAgdXNhZ2UgPSBjb21iaW5lUmVzb2x2ZWRVc2FnZShcbiAgICAgICAgICB1c2FnZSwgdGhpcy5hbmFseXplUXVlcnlVc2FnZShzdXBlckNsYXNzRGVjbCwgcXVlcnksIFtdLCBmdW5jdGlvbkN0eCwgZmFsc2UpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNhZ2U7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21iaW5lcyB0d28gcmVzb2x2ZWQgdXNhZ2VzIGJhc2VkIG9uIGEgZml4ZWQgcHJpb3JpdHkuIFwiU3luY2hyb25vdXNcIiB0YWtlc1xuICogcHJlY2VkZW5jZSBvdmVyIFwiQW1iaWd1b3VzXCIgd2hlcmVhcyBhbWJpZ3VvdXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIFwiQXN5bmNocm9ub3VzXCIuXG4gKi9cbmZ1bmN0aW9uIGNvbWJpbmVSZXNvbHZlZFVzYWdlKGJhc2U6IFJlc29sdmVkVXNhZ2UsIHRhcmdldDogUmVzb2x2ZWRVc2FnZSk6IFJlc29sdmVkVXNhZ2Uge1xuICBpZiAoYmFzZSA9PT0gUmVzb2x2ZWRVc2FnZS5TWU5DSFJPTk9VUykge1xuICAgIHJldHVybiBiYXNlO1xuICB9IGVsc2UgaWYgKHRhcmdldCAhPT0gUmVzb2x2ZWRVc2FnZS5BU1lOQ0hST05PVVMpIHtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBSZXNvbHZlZFVzYWdlLkFTWU5DSFJPTk9VUztcbiAgfVxufVxuXG4vKipcbiAqIEZpbHRlcnMgYWxsIGNsYXNzIG1lbWJlcnMgZnJvbSB0aGUgY2xhc3MgZGVjbGFyYXRpb24gdGhhdCBjYW4gYWNjZXNzIHRoZVxuICogZ2l2ZW4gcXVlcnkgc3RhdGljYWxseSAoZS5nLiBuZ09uSW5pdCBsaWZlY3ljbGUgaG9vayBvciBASW5wdXQgc2V0dGVycylcbiAqL1xuZnVuY3Rpb24gZmlsdGVyUXVlcnlDbGFzc01lbWJlck5vZGVzKFxuICAgIGNsYXNzRGVjbDogdHMuQ2xhc3NEZWNsYXJhdGlvbiwgcXVlcnk6IE5nUXVlcnlEZWZpbml0aW9uLFxuICAgIGtub3duSW5wdXROYW1lczogc3RyaW5nW10pOiB0cy5CbG9ja1tdIHtcbiAgLy8gUmV0dXJucyBhbiBhcnJheSBvZiBUeXBlU2NyaXB0IG5vZGVzIHdoaWNoIGNhbiBjb250YWluIHVzYWdlcyBvZiB0aGUgZ2l2ZW4gcXVlcnlcbiAgLy8gaW4gb3JkZXIgdG8gYWNjZXNzIGl0IHN0YXRpY2FsbHkuIGUuZy5cbiAgLy8gICgxKSBxdWVyaWVzIHVzZWQgaW4gdGhlIFwibmdPbkluaXRcIiBsaWZlY3ljbGUgaG9vayBhcmUgc3RhdGljLlxuICAvLyAgKDIpIGlucHV0cyB3aXRoIHNldHRlcnMgY2FuIGFjY2VzcyBxdWVyaWVzIHN0YXRpY2FsbHkuXG4gIHJldHVybiBjbGFzc0RlY2wubWVtYmVyc1xuICAgICAgLmZpbHRlcihcbiAgICAgICAgICAobSk6XG4gICAgICAgICAgICAgIG0gaXModHMuU2V0QWNjZXNzb3JEZWNsYXJhdGlvbiB8IHRzLk1ldGhvZERlY2xhcmF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRzLmlzTWV0aG9kRGVjbGFyYXRpb24obSkgJiYgbS5ib2R5ICYmIGhhc1Byb3BlcnR5TmFtZVRleHQobS5uYW1lKSAmJlxuICAgICAgICAgICAgICAgICAgICBTVEFUSUNfUVVFUllfTElGRUNZQ0xFX0hPT0tTW3F1ZXJ5LnR5cGVdLmluZGV4T2YobS5uYW1lLnRleHQpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAga25vd25JbnB1dE5hbWVzICYmIHRzLmlzU2V0QWNjZXNzb3IobSkgJiYgbS5ib2R5ICYmXG4gICAgICAgICAgICAgICAgICAgIGhhc1Byb3BlcnR5TmFtZVRleHQobS5uYW1lKSAmJiBrbm93bklucHV0TmFtZXMuaW5kZXhPZihtLm5hbWUudGV4dCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9KVxuICAgICAgLm1hcChtZW1iZXIgPT4gbWVtYmVyLmJvZHkhKTtcbn1cbiJdfQ==
@@ -1,21 +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
- /// <amd-module name="@angular/core/schematics/migrations/static-queries/transform" />
9
- import ts from 'typescript';
10
- import { NgQueryDefinition, QueryTiming } from './angular/query-definition';
11
- export declare type TransformedQueryResult = null | {
12
- /** Transformed call expression. */
13
- node: ts.CallExpression;
14
- /** Failure message which is set when the query could not be transformed successfully. */
15
- failureMessage: string | null;
16
- };
17
- /**
18
- * Transforms the given query decorator by explicitly specifying the timing based on the
19
- * determined timing. The updated decorator call expression node will be returned.
20
- */
21
- export declare function getTransformedQueryCallExpr(query: NgQueryDefinition, timing: QueryTiming | null, createTodo: boolean): TransformedQueryResult;
@@ -1,105 +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
- 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/static-queries/transform", ["require", "exports", "typescript", "@angular/core/schematics/utils/typescript/property_name", "@angular/core/schematics/migrations/static-queries/angular/query-definition"], factory);
18
- }
19
- })(function (require, exports) {
20
- "use strict";
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.getTransformedQueryCallExpr = void 0;
23
- const typescript_1 = __importDefault(require("typescript"));
24
- const property_name_1 = require("@angular/core/schematics/utils/typescript/property_name");
25
- const query_definition_1 = require("@angular/core/schematics/migrations/static-queries/angular/query-definition");
26
- const TODO_SPECIFY_COMMENT = 'TODO: add static flag';
27
- const TODO_CHECK_COMMENT = 'TODO: check static flag';
28
- /**
29
- * Transforms the given query decorator by explicitly specifying the timing based on the
30
- * determined timing. The updated decorator call expression node will be returned.
31
- */
32
- function getTransformedQueryCallExpr(query, timing, createTodo) {
33
- const queryExpr = query.decorator.node.expression;
34
- const queryArguments = queryExpr.arguments;
35
- const queryPropertyAssignments = timing === null ?
36
- [] :
37
- [typescript_1.default.createPropertyAssignment('static', timing === query_definition_1.QueryTiming.STATIC ? typescript_1.default.createTrue() : typescript_1.default.createFalse())];
38
- // If the query decorator is already called with two arguments, we need to
39
- // keep the existing options untouched and just add the new property if possible.
40
- if (queryArguments.length === 2) {
41
- const existingOptions = queryArguments[1];
42
- const existingOptionsText = existingOptions.getFullText();
43
- const hasTodoComment = existingOptionsText.includes(TODO_SPECIFY_COMMENT) ||
44
- existingOptionsText.includes(TODO_CHECK_COMMENT);
45
- let newOptionsNode;
46
- let failureMessage = null;
47
- if (typescript_1.default.isObjectLiteralExpression(existingOptions)) {
48
- // In case the options already contains a property for the "static" flag,
49
- // we just skip this query and leave it untouched.
50
- if (existingOptions.properties.some(p => !!p.name && (0, property_name_1.getPropertyNameText)(p.name) === 'static')) {
51
- return null;
52
- }
53
- newOptionsNode = typescript_1.default.updateObjectLiteral(existingOptions, existingOptions.properties.concat(queryPropertyAssignments));
54
- // In case we want to add a todo and the options do not have the todo
55
- // yet, we add the query timing todo as synthetic multi-line comment.
56
- if (createTodo && !hasTodoComment) {
57
- addQueryTimingTodoToNode(newOptionsNode, timing === null);
58
- }
59
- }
60
- else {
61
- // In case the options query parameter is not an object literal expression, and
62
- // we want to set the query timing, we just preserve the existing query parameter.
63
- newOptionsNode = existingOptions;
64
- // We always want to add a TODO in case the query options cannot be updated.
65
- if (!hasTodoComment) {
66
- addQueryTimingTodoToNode(existingOptions, true);
67
- }
68
- // If there is a new explicit timing that has been determined for the given query,
69
- // we create a transformation failure message that shows developers that they need
70
- // to set the query timing manually to the determined query timing.
71
- if (timing !== null) {
72
- failureMessage = 'Cannot update query to set explicit timing. Please manually ' +
73
- `set the query timing to: "{static: ${(timing === query_definition_1.QueryTiming.STATIC).toString()}}"`;
74
- }
75
- }
76
- return {
77
- failureMessage,
78
- node: typescript_1.default.updateCall(queryExpr, queryExpr.expression, queryExpr.typeArguments, [queryArguments[0], newOptionsNode])
79
- };
80
- }
81
- const optionsNode = typescript_1.default.createObjectLiteral(queryPropertyAssignments);
82
- if (createTodo) {
83
- addQueryTimingTodoToNode(optionsNode, timing === null);
84
- }
85
- return {
86
- failureMessage: null,
87
- node: typescript_1.default.updateCall(queryExpr, queryExpr.expression, queryExpr.typeArguments, [queryArguments[0], optionsNode])
88
- };
89
- }
90
- exports.getTransformedQueryCallExpr = getTransformedQueryCallExpr;
91
- /**
92
- * Adds a to-do to the given TypeScript node which reminds developers to specify
93
- * an explicit query timing or to double-check the updated timing.
94
- */
95
- function addQueryTimingTodoToNode(node, addSpecifyTimingTodo) {
96
- typescript_1.default.setSyntheticLeadingComments(node, [{
97
- pos: -1,
98
- end: -1,
99
- hasTrailingNewLine: false,
100
- kind: typescript_1.default.SyntaxKind.MultiLineCommentTrivia,
101
- text: ` ${addSpecifyTimingTodo ? TODO_SPECIFY_COMMENT : TODO_CHECK_COMMENT} `
102
- }]);
103
- }
104
- });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvc3RhdGljLXF1ZXJpZXMvdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDREQUE0QjtJQUM1QiwyRkFBeUU7SUFDekUsa0hBQTBFO0lBUzFFLE1BQU0sb0JBQW9CLEdBQUcsdUJBQXVCLENBQUM7SUFDckQsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztJQUVyRDs7O09BR0c7SUFDSCxTQUFnQiwyQkFBMkIsQ0FDdkMsS0FBd0IsRUFBRSxNQUF3QixFQUNsRCxVQUFtQjtRQUNyQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUMzQyxNQUFNLHdCQUF3QixHQUFHLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQztZQUM5QyxFQUFFLENBQUMsQ0FBQztZQUNKLENBQUMsb0JBQUUsQ0FBQyx3QkFBd0IsQ0FDeEIsUUFBUSxFQUFFLE1BQU0sS0FBSyw4QkFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdkYsMEVBQTBFO1FBQzFFLGlGQUFpRjtRQUNqRixJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9CLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxNQUFNLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxRCxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FB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KlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge2dldFByb3BlcnR5TmFtZVRleHR9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvcHJvcGVydHlfbmFtZSc7XG5pbXBvcnQge05nUXVlcnlEZWZpbml0aW9uLCBRdWVyeVRpbWluZ30gZnJvbSAnLi9hbmd1bGFyL3F1ZXJ5LWRlZmluaXRpb24nO1xuXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1lZFF1ZXJ5UmVzdWx0ID0gbnVsbHx7XG4gIC8qKiBUcmFuc2Zvcm1lZCBjYWxsIGV4cHJlc3Npb24uICovXG4gIG5vZGU6IHRzLkNhbGxFeHByZXNzaW9uO1xuICAvKiogRmFpbHVyZSBtZXNzYWdlIHdoaWNoIGlzIHNldCB3aGVuIHRoZSBxdWVyeSBjb3VsZCBub3QgYmUgdHJhbnNmb3JtZWQgc3VjY2Vzc2Z1bGx5LiAqL1xuICBmYWlsdXJlTWVzc2FnZTogc3RyaW5nfG51bGw7XG59O1xuXG5jb25zdCBUT0RPX1NQRUNJRllfQ09NTUVOVCA9ICdUT0RPOiBhZGQgc3RhdGljIGZsYWcnO1xuY29uc3QgVE9ET19DSEVDS19DT01NRU5UID0gJ1RPRE86IGNoZWNrIHN0YXRpYyBmbGFnJztcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSBnaXZlbiBxdWVyeSBkZWNvcmF0b3IgYnkgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRoZSB0aW1pbmcgYmFzZWQgb24gdGhlXG4gKiBkZXRlcm1pbmVkIHRpbWluZy4gVGhlIHVwZGF0ZWQgZGVjb3JhdG9yIGNhbGwgZXhwcmVzc2lvbiBub2RlIHdpbGwgYmUgcmV0dXJuZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2Zvcm1lZFF1ZXJ5Q2FsbEV4cHIoXG4gICAgcXVlcnk6IE5nUXVlcnlEZWZpbml0aW9uLCB0aW1pbmc6IFF1ZXJ5VGltaW5nfG51bGwsXG4gICAgY3JlYXRlVG9kbzogYm9vbGVhbik6IFRyYW5zZm9ybWVkUXVlcnlSZXN1bHQge1xuICBjb25zdCBxdWVyeUV4cHIgPSBxdWVyeS5kZWNvcmF0b3Iubm9kZS5leHByZXNzaW9uO1xuICBjb25zdCBxdWVyeUFyZ3VtZW50cyA9IHF1ZXJ5RXhwci5hcmd1bWVudHM7XG4gIGNvbnN0IHF1ZXJ5UHJvcGVydHlBc3NpZ25tZW50cyA9IHRpbWluZyA9PT0gbnVsbCA/XG4gICAgICBbXSA6XG4gICAgICBbdHMuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFxuICAgICAgICAgICdzdGF0aWMnLCB0aW1pbmcgPT09IFF1ZXJ5VGltaW5nLlNUQVRJQyA/IHRzLmNyZWF0ZVRydWUoKSA6IHRzLmNyZWF0ZUZhbHNlKCkpXTtcblxuICAvLyBJZiB0aGUgcXVlcnkgZGVjb3JhdG9yIGlzIGFscmVhZHkgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50cywgd2UgbmVlZCB0b1xuICAvLyBrZWVwIHRoZSBleGlzdGluZyBvcHRpb25zIHVudG91Y2hlZCBhbmQganVzdCBhZGQgdGhlIG5ldyBwcm9wZXJ0eSBpZiBwb3NzaWJsZS5cbiAgaWYgKHF1ZXJ5QXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9ucyA9IHF1ZXJ5QXJndW1lbnRzWzFdO1xuICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9uc1RleHQgPSBleGlzdGluZ09wdGlvbnMuZ2V0RnVsbFRleHQoKTtcbiAgICBjb25zdCBoYXNUb2RvQ29tbWVudCA9IGV4aXN0aW5nT3B0aW9uc1RleHQuaW5jbHVkZXMoVE9ET19TUEVDSUZZX0NPTU1FTlQpIHx8XG4gICAgICAgIGV4aXN0aW5nT3B0aW9uc1RleHQuaW5jbHVkZXMoVE9ET19DSEVDS19DT01NRU5UKTtcbiAgICBsZXQgbmV3T3B0aW9uc05vZGU6IHRzLkV4cHJlc3Npb247XG4gICAgbGV0IGZhaWx1cmVNZXNzYWdlOiBzdHJpbmd8bnVsbCA9IG51bGw7XG5cbiAgICBpZiAodHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihleGlzdGluZ09wdGlvbnMpKSB7XG4gICAgICAvLyBJbiBjYXNlIHRoZSBvcHRpb25zIGFscmVhZHkgY29udGFpbnMgYSBwcm9wZXJ0eSBmb3IgdGhlIFwic3RhdGljXCIgZmxhZyxcbiAgICAgIC8vIHdlIGp1c3Qgc2tpcCB0aGlzIHF1ZXJ5IGFuZCBsZWF2ZSBpdCB1bnRvdWNoZWQuXG4gICAgICBpZiAoZXhpc3RpbmdPcHRpb25zLnByb3BlcnRpZXMuc29tZShcbiAgICAgICAgICAgICAgcCA9PiAhIXAubmFtZSAmJiBnZXRQcm9wZXJ0eU5hbWVUZXh0KHAubmFtZSkgPT09ICdzdGF0aWMnKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgbmV3T3B0aW9uc05vZGUgPSB0cy51cGRhdGVPYmplY3RMaXRlcmFsKFxuICAgICAgICAgIGV4aXN0aW5nT3B0aW9ucywgZXhpc3RpbmdPcHRpb25zLnByb3BlcnRpZXMuY29uY2F0KHF1ZXJ5UHJvcGVydHlBc3NpZ25tZW50cykpO1xuXG4gICAgICAvLyBJbiBjYXNlIHdlIHdhbnQgdG8gYWRkIGEgdG9kbyBhbmQgdGhlIG9wdGlvbnMgZG8gbm90IGhhdmUgdGhlIHRvZG9cbiAgICAgIC8vIHlldCwgd2UgYWRkIHRoZSBxdWVyeSB0aW1pbmcgdG9kbyBhcyBzeW50aGV0aWMgbXVsdGktbGluZSBjb21tZW50LlxuICAgICAgaWYgKGNyZWF0ZVRvZG8gJiYgIWhhc1RvZG9Db21tZW50KSB7XG4gICAgICAgIGFkZFF1ZXJ5VGltaW5nVG9kb1RvTm9kZShuZXdPcHRpb25zTm9kZSwgdGltaW5nID09PSBudWxsKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgb3B0aW9ucyBxdWVyeSBwYXJhbWV0ZXIgaXMgbm90IGFuIG9iamVjdCBsaXRlcmFsIGV4cHJlc3Npb24sIGFuZFxuICAgICAgLy8gd2Ugd2FudCB0byBzZXQgdGhlIHF1ZXJ5IHRpbWluZywgd2UganVzdCBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgbmV3T3B0aW9uc05vZGUgPSBleGlzdGluZ09wdGlvbnM7XG4gICAgICAvLyBXZSBhbHdheXMgd2FudCB0byBhZGQgYSBUT0RPIGluIGNhc2UgdGhlIHF1ZXJ5IG9wdGlvbnMgY2Fubm90IGJlIHVwZGF0ZWQuXG4gICAgICBpZiAoIWhhc1RvZG9Db21tZW50KSB7XG4gICAgICAgIGFkZFF1ZXJ5VGltaW5nVG9kb1RvTm9kZShleGlzdGluZ09wdGlvbnMsIHRydWUpO1xuICAgICAgfVxuICAgICAgLy8gSWYgdGhlcmUgaXMgYSBuZXcgZXhwbGljaXQgdGltaW5nIHRoYXQgaGFzIGJlZW4gZGV0ZXJtaW5lZCBmb3IgdGhlIGdpdmVuIHF1ZXJ5LFxuICAgICAgLy8gd2UgY3JlYXRlIGEgdHJhbnNmb3JtYXRpb24gZmFpbHVyZSBtZXNzYWdlIHRoYXQgc2hvd3MgZGV2ZWxvcGVycyB0aGF0IHRoZXkgbmVlZFxuICAgICAgLy8gdG8gc2V0IHRoZSBxdWVyeSB0aW1pbmcgbWFudWFsbHkgdG8gdGhlIGRldGVybWluZWQgcXVlcnkgdGltaW5nLlxuICAgICAgaWYgKHRpbWluZyAhPT0gbnVsbCkge1xuICAgICAgICBmYWlsdXJlTWVzc2FnZSA9ICdDYW5ub3QgdXBkYXRlIHF1ZXJ5IHRvIHNldCBleHBsaWNpdCB0aW1pbmcuIFBsZWFzZSBtYW51YWxseSAnICtcbiAgICAgICAgICAgIGBzZXQgdGhlIHF1ZXJ5IHRpbWluZyB0bzogXCJ7c3RhdGljOiAkeyh0aW1pbmcgPT09IFF1ZXJ5VGltaW5nLlNUQVRJQykudG9TdHJpbmcoKX19XCJgO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBmYWlsdXJlTWVzc2FnZSxcbiAgICAgIG5vZGU6IHRzLnVwZGF0ZUNhbGwoXG4gICAgICAgICAgcXVlcnlFeHByLCBxdWVyeUV4cHIuZXhwcmVzc2lvbiwgcXVlcnlFeHByLnR5cGVBcmd1bWVudHMsXG4gICAgICAgICAgW3F1ZXJ5QXJndW1lbnRzWzBdLCBuZXdPcHRpb25zTm9kZSFdKVxuICAgIH07XG4gIH1cblxuICBjb25zdCBvcHRpb25zTm9kZSA9IHRzLmNyZWF0ZU9iamVjdExpdGVyYWwocXVlcnlQcm9wZXJ0eUFzc2lnbm1lbnRzKTtcblxuICBpZiAoY3JlYXRlVG9kbykge1xuICAgIGFkZFF1ZXJ5VGltaW5nVG9kb1RvTm9kZShvcHRpb25zTm9kZSwgdGltaW5nID09PSBudWxsKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZmFpbHVyZU1lc3NhZ2U6IG51bGwsXG4gICAgbm9kZTogdHMudXBkYXRlQ2FsbChcbiAgICAgICAgcXVlcnlFeHByLCBxdWVyeUV4cHIuZXhwcmVzc2lvbiwgcXVlcnlFeHByLnR5cGVBcmd1bWVudHMsIFtxdWVyeUFyZ3VtZW50c1swXSwgb3B0aW9uc05vZGVdKVxuICB9O1xufVxuXG4vKipcbiAqIEFkZHMgYSB0by1kbyB0byB0aGUgZ2l2ZW4gVHlwZVNjcmlwdCBub2RlIHdoaWNoIHJlbWluZHMgZGV2ZWxvcGVycyB0byBzcGVjaWZ5XG4gKiBhbiBleHBsaWNpdCBxdWVyeSB0aW1pbmcgb3IgdG8gZG91YmxlLWNoZWNrIHRoZSB1cGRhdGVkIHRpbWluZy5cbiAqL1xuZnVuY3Rpb24gYWRkUXVlcnlUaW1pbmdUb2RvVG9Ob2RlKG5vZGU6IHRzLk5vZGUsIGFkZFNwZWNpZnlUaW1pbmdUb2RvOiBib29sZWFuKSB7XG4gIHRzLnNldFN5bnRoZXRpY0xlYWRpbmdDb21tZW50cyhcbiAgICAgIG5vZGUsIFt7XG4gICAgICAgIHBvczogLTEsXG4gICAgICAgIGVuZDogLTEsXG4gICAgICAgIGhhc1RyYWlsaW5nTmV3TGluZTogZmFsc2UsXG4gICAgICAgIGtpbmQ6IHRzLlN5bnRheEtpbmQuTXVsdGlMaW5lQ29tbWVudFRyaXZpYSxcbiAgICAgICAgdGV4dDogYCAke2FkZFNwZWNpZnlUaW1pbmdUb2RvID8gVE9ET19TUEVDSUZZX0NPTU1FTlQgOiBUT0RPX0NIRUNLX0NPTU1FTlR9IGBcbiAgICAgIH1dKTtcbn1cbiJdfQ==
@@ -1,20 +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
- /// <amd-module name="@angular/core/schematics/migrations/template-var-assignment/analyze_template" />
9
- import type { PropertyWrite } from '@angular/compiler';
10
- import { ResolvedTemplate } from '../../utils/ng_component_template';
11
- export interface TemplateVariableAssignment {
12
- node: PropertyWrite;
13
- start: number;
14
- end: number;
15
- }
16
- /**
17
- * Analyzes a given resolved template by looking for property assignments to local
18
- * template variables within bound events.
19
- */
20
- export declare function analyzeResolvedTemplate(template: ResolvedTemplate, compilerModule: typeof import('@angular/compiler')): TemplateVariableAssignment[] | null;