@angular/core 12.1.0 → 12.1.4

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 (159) hide show
  1. package/bundles/core-testing.umd.js +15 -4
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core.umd.js +91 -41
  4. package/bundles/core.umd.js.map +1 -1
  5. package/core.d.ts +14 -12
  6. package/core.metadata.json +1 -1
  7. package/esm2015/src/application_init.js +5 -5
  8. package/esm2015/src/application_ref.js +6 -2
  9. package/esm2015/src/change_detection/differs/iterable_differs.js +1 -1
  10. package/esm2015/src/compiler/compiler_facade.js +31 -8
  11. package/esm2015/src/compiler/compiler_facade_interface.js +1 -1
  12. package/esm2015/src/di/jit/injectable.js +4 -3
  13. package/esm2015/src/di/r3_injector.js +5 -2
  14. package/esm2015/src/error_handler.js +4 -8
  15. package/esm2015/src/errors.js +2 -2
  16. package/esm2015/src/event_emitter.js +1 -1
  17. package/esm2015/src/linker/component_factory_resolver.js +1 -1
  18. package/esm2015/src/linker/template_ref.js +1 -1
  19. package/esm2015/src/linker/view_container_ref.js +1 -1
  20. package/esm2015/src/metadata/di.js +1 -1
  21. package/esm2015/src/render3/component_ref.js +1 -1
  22. package/esm2015/src/render3/jit/directive.js +6 -5
  23. package/esm2015/src/render3/jit/module.js +7 -4
  24. package/esm2015/src/render3/jit/partial.js +27 -9
  25. package/esm2015/src/render3/jit/pipe.js +5 -3
  26. package/esm2015/src/render3/ng_module_ref.js +1 -1
  27. package/esm2015/src/render3/view_ref.js +1 -1
  28. package/esm2015/src/sanitization/bypass.js +1 -1
  29. package/esm2015/src/version.js +1 -1
  30. package/esm2015/src/view/entrypoint.js +1 -1
  31. package/esm2015/src/view/refs.js +1 -1
  32. package/esm2015/testing/src/ng_zone_mock.js +1 -1
  33. package/esm2015/testing/src/r3_test_bed_compiler.js +4 -1
  34. package/esm2015/testing/src/resolvers.js +1 -1
  35. package/esm2015/testing/src/test_bed.js +12 -4
  36. package/fesm2015/core.js +91 -41
  37. package/fesm2015/core.js.map +1 -1
  38. package/fesm2015/testing.js +15 -4
  39. package/fesm2015/testing.js.map +1 -1
  40. package/package.json +1 -1
  41. package/schematics/migrations/missing-injectable/providers_evaluator.js +1 -1
  42. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.js +1 -1
  43. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.js +1 -1
  44. package/schematics/migrations.json +1 -1
  45. package/src/r3_symbols.d.ts +2 -3
  46. package/testing/testing.d.ts +2 -1
  47. package/testing/testing.metadata.json +1 -1
  48. package/testing.d.ts +1 -1
  49. package/schematics/migrations/abstract-control-parent/abstract-control-parent.externs.js +0 -0
  50. package/schematics/migrations/abstract-control-parent/index.mjs +0 -47
  51. package/schematics/migrations/abstract-control-parent/util.mjs +0 -50
  52. package/schematics/migrations/activated-route-snapshot-fragment/activated-route-snapshot-fragment.externs.js +0 -0
  53. package/schematics/migrations/activated-route-snapshot-fragment/index.mjs +0 -48
  54. package/schematics/migrations/activated-route-snapshot-fragment/util.mjs +0 -33
  55. package/schematics/migrations/can-activate-with-redirect-to/can-activate-with-redirect-to.externs.js +0 -0
  56. package/schematics/migrations/can-activate-with-redirect-to/index.mjs +0 -44
  57. package/schematics/migrations/can-activate-with-redirect-to/util.mjs +0 -55
  58. package/schematics/migrations/deep-shadow-piercing-selector/deep-shadow-piercing-selector.externs.js +0 -0
  59. package/schematics/migrations/deep-shadow-piercing-selector/index.mjs +0 -36
  60. package/schematics/migrations/dynamic-queries/dynamic-queries.externs.js +0 -0
  61. package/schematics/migrations/dynamic-queries/index.mjs +0 -51
  62. package/schematics/migrations/dynamic-queries/util.mjs +0 -65
  63. package/schematics/migrations/initial-navigation/collector.mjs +0 -105
  64. package/schematics/migrations/initial-navigation/index.mjs +0 -61
  65. package/schematics/migrations/initial-navigation/initial-navigation.externs.js +0 -0
  66. package/schematics/migrations/initial-navigation/transform.mjs +0 -54
  67. package/schematics/migrations/initial-navigation/update_recorder.mjs +0 -9
  68. package/schematics/migrations/initial-navigation/util.mjs +0 -28
  69. package/schematics/migrations/missing-injectable/definition_collector.mjs +0 -75
  70. package/schematics/migrations/missing-injectable/index.mjs +0 -100
  71. package/schematics/migrations/missing-injectable/missing-injectable.externs.js +0 -0
  72. package/schematics/migrations/missing-injectable/providers_evaluator.mjs +0 -50
  73. package/schematics/migrations/missing-injectable/transform.mjs +0 -187
  74. package/schematics/migrations/missing-injectable/update_recorder.mjs +0 -9
  75. package/schematics/migrations/module-with-providers/collector.mjs +0 -59
  76. package/schematics/migrations/module-with-providers/index.mjs +0 -71
  77. package/schematics/migrations/module-with-providers/module-with-providers.externs.js +0 -0
  78. package/schematics/migrations/module-with-providers/transform.mjs +0 -134
  79. package/schematics/migrations/module-with-providers/util.mjs +0 -25
  80. package/schematics/migrations/move-document/document_import_visitor.mjs +0 -60
  81. package/schematics/migrations/move-document/index.mjs +0 -71
  82. package/schematics/migrations/move-document/move-document.externs.js +0 -0
  83. package/schematics/migrations/move-document/move-import.mjs +0 -45
  84. package/schematics/migrations/native-view-encapsulation/index.mjs +0 -41
  85. package/schematics/migrations/native-view-encapsulation/native-view-encapsulation.externs.js +0 -0
  86. package/schematics/migrations/native-view-encapsulation/util.mjs +0 -34
  87. package/schematics/migrations/navigation-extras-omissions/index.mjs +0 -47
  88. package/schematics/migrations/navigation-extras-omissions/navigation-extras-omissions.externs.js +0 -0
  89. package/schematics/migrations/navigation-extras-omissions/util.mjs +0 -111
  90. package/schematics/migrations/relative-link-resolution/collector.mjs +0 -81
  91. package/schematics/migrations/relative-link-resolution/index.mjs +0 -62
  92. package/schematics/migrations/relative-link-resolution/relative-link-resolution.externs.js +0 -0
  93. package/schematics/migrations/relative-link-resolution/transform.mjs +0 -51
  94. package/schematics/migrations/relative-link-resolution/update_recorder.mjs +0 -9
  95. package/schematics/migrations/relative-link-resolution/util.mjs +0 -28
  96. package/schematics/migrations/renderer-to-renderer2/helpers.mjs +0 -224
  97. package/schematics/migrations/renderer-to-renderer2/index.mjs +0 -113
  98. package/schematics/migrations/renderer-to-renderer2/migration.mjs +0 -211
  99. package/schematics/migrations/renderer-to-renderer2/renderer-to-renderer2.externs.js +0 -0
  100. package/schematics/migrations/renderer-to-renderer2/util.mjs +0 -69
  101. package/schematics/migrations/router-preserve-query-params/index.mjs +0 -50
  102. package/schematics/migrations/router-preserve-query-params/router-preserve-query-params.externs.js +0 -0
  103. package/schematics/migrations/router-preserve-query-params/util.mjs +0 -88
  104. package/schematics/migrations/static-queries/angular/directive_inputs.mjs +0 -70
  105. package/schematics/migrations/static-queries/angular/ng_query_visitor.mjs +0 -113
  106. package/schematics/migrations/static-queries/angular/query-definition.mjs +0 -20
  107. package/schematics/migrations/static-queries/angular/super_class.mjs +0 -21
  108. package/schematics/migrations/static-queries/index.mjs +0 -206
  109. package/schematics/migrations/static-queries/static-queries.externs.js +0 -0
  110. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.mjs +0 -200
  111. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.mjs +0 -24
  112. package/schematics/migrations/static-queries/strategies/timing-strategy.mjs +0 -9
  113. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.mjs +0 -355
  114. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.mjs +0 -38
  115. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.mjs +0 -80
  116. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.mjs +0 -154
  117. package/schematics/migrations/static-queries/transform.mjs +0 -88
  118. package/schematics/migrations/template-var-assignment/analyze_template.mjs +0 -25
  119. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.mjs +0 -65
  120. package/schematics/migrations/template-var-assignment/index.mjs +0 -68
  121. package/schematics/migrations/template-var-assignment/template-var-assignment.externs.js +0 -0
  122. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.mjs +0 -92
  123. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.mjs +0 -286
  124. package/schematics/migrations/undecorated-classes-with-decorated-fields/undecorated-classes-with-decorated-fields.externs.js +0 -0
  125. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.mjs +0 -9
  126. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.mjs +0 -43
  127. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.mjs +0 -82
  128. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.mjs +0 -102
  129. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.mjs +0 -111
  130. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.mjs +0 -17
  131. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.mjs +0 -51
  132. package/schematics/migrations/undecorated-classes-with-di/index.mjs +0 -162
  133. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.mjs +0 -124
  134. package/schematics/migrations/undecorated-classes-with-di/transform.mjs +0 -356
  135. package/schematics/migrations/undecorated-classes-with-di/undecorated-classes-with-di.externs.js +0 -0
  136. package/schematics/migrations/undecorated-classes-with-di/update_recorder.mjs +0 -9
  137. package/schematics/migrations/wait-for-async/index.mjs +0 -76
  138. package/schematics/migrations/wait-for-async/util.mjs +0 -23
  139. package/schematics/migrations/wait-for-async/wait-for-async.externs.js +0 -0
  140. package/schematics/migrations/xhr-factory/index.mjs +0 -91
  141. package/schematics/migrations/xhr-factory/xhr-factory.externs.js +0 -0
  142. package/schematics/utils/import_manager.mjs +0 -197
  143. package/schematics/utils/line_mappings.mjs +0 -60
  144. package/schematics/utils/ng_component_template.mjs +0 -96
  145. package/schematics/utils/ng_decorators.mjs +0 -23
  146. package/schematics/utils/parse_html.mjs +0 -24
  147. package/schematics/utils/project_tsconfig_paths.mjs +0 -74
  148. package/schematics/utils/schematics_prompt.mjs +0 -30
  149. package/schematics/utils/typescript/class_declaration.mjs +0 -33
  150. package/schematics/utils/typescript/compiler_host.mjs +0 -66
  151. package/schematics/utils/typescript/decorators.mjs +0 -20
  152. package/schematics/utils/typescript/find_base_classes.mjs +0 -30
  153. package/schematics/utils/typescript/functions.mjs +0 -28
  154. package/schematics/utils/typescript/imports.mjs +0 -91
  155. package/schematics/utils/typescript/nodes.mjs +0 -57
  156. package/schematics/utils/typescript/parse_tsconfig.mjs +0 -26
  157. package/schematics/utils/typescript/property_name.mjs +0 -23
  158. package/schematics/utils/typescript/symbol.mjs +0 -72
  159. package/schematics/utils/utils.externs.js +0 -0
@@ -1,57 +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
- /** Checks whether the given TypeScript node has the specified modifier set. */
10
- export function hasModifier(node, modifierKind) {
11
- return !!node.modifiers && node.modifiers.some(m => m.kind === modifierKind);
12
- }
13
- /** Find the closest parent node of a particular kind. */
14
- export function closestNode(node, kind) {
15
- let current = node;
16
- while (current && !ts.isSourceFile(current)) {
17
- if (current.kind === kind) {
18
- return current;
19
- }
20
- current = current.parent;
21
- }
22
- return null;
23
- }
24
- /**
25
- * Checks whether a particular node is part of a null check. E.g. given:
26
- * `foo.bar ? foo.bar.value : null` the null check would be `foo.bar`.
27
- */
28
- export function isNullCheck(node) {
29
- if (!node.parent) {
30
- return false;
31
- }
32
- // `foo.bar && foo.bar.value` where `node` is `foo.bar`.
33
- if (ts.isBinaryExpression(node.parent) && node.parent.left === node) {
34
- return true;
35
- }
36
- // `foo.bar && foo.bar.parent && foo.bar.parent.value`
37
- // where `node` is `foo.bar`.
38
- if (node.parent.parent && ts.isBinaryExpression(node.parent.parent) &&
39
- node.parent.parent.left === node.parent) {
40
- return true;
41
- }
42
- // `if (foo.bar) {...}` where `node` is `foo.bar`.
43
- if (ts.isIfStatement(node.parent) && node.parent.expression === node) {
44
- return true;
45
- }
46
- // `foo.bar ? foo.bar.value : null` where `node` is `foo.bar`.
47
- if (ts.isConditionalExpression(node.parent) && node.parent.condition === node) {
48
- return true;
49
- }
50
- return false;
51
- }
52
- /** Checks whether a property access is safe (e.g. `foo.parent?.value`). */
53
- export function isSafeAccess(node) {
54
- return node.parent != null && ts.isPropertyAccessExpression(node.parent) &&
55
- node.parent.expression === node && node.parent.questionDotToken != null;
56
- }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvdXRpbHMvdHlwZXNjcmlwdC9ub2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQywrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFhLEVBQUUsWUFBMkI7SUFDcEUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVELHlEQUF5RDtBQUN6RCxNQUFNLFVBQVUsV0FBVyxDQUFvQixJQUFhLEVBQUUsSUFBbUI7SUFDL0UsSUFBSSxPQUFPLEdBQVksSUFBSSxDQUFDO0lBRTVCLE9BQU8sT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMzQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ3pCLE9BQU8sT0FBWSxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDMUI7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQWE7SUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDaEIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELHdEQUF3RDtJQUN4RCxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1FBQ25FLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxzREFBc0Q7SUFDdEQsNkJBQTZCO0lBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQy9ELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxrREFBa0Q7SUFDbEQsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7UUFDcEUsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELDhEQUE4RDtJQUM5RCxJQUFJLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1FBQzdFLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCwyRUFBMkU7QUFDM0UsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFhO0lBQ3hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gVHlwZVNjcmlwdCBub2RlIGhhcyB0aGUgc3BlY2lmaWVkIG1vZGlmaWVyIHNldC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNNb2RpZmllcihub2RlOiB0cy5Ob2RlLCBtb2RpZmllcktpbmQ6IHRzLlN5bnRheEtpbmQpIHtcbiAgcmV0dXJuICEhbm9kZS5tb2RpZmllcnMgJiYgbm9kZS5tb2RpZmllcnMuc29tZShtID0+IG0ua2luZCA9PT0gbW9kaWZpZXJLaW5kKTtcbn1cblxuLyoqIEZpbmQgdGhlIGNsb3Nlc3QgcGFyZW50IG5vZGUgb2YgYSBwYXJ0aWN1bGFyIGtpbmQuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VzdE5vZGU8VCBleHRlbmRzIHRzLk5vZGU+KG5vZGU6IHRzLk5vZGUsIGtpbmQ6IHRzLlN5bnRheEtpbmQpOiBUfG51bGwge1xuICBsZXQgY3VycmVudDogdHMuTm9kZSA9IG5vZGU7XG5cbiAgd2hpbGUgKGN1cnJlbnQgJiYgIXRzLmlzU291cmNlRmlsZShjdXJyZW50KSkge1xuICAgIGlmIChjdXJyZW50LmtpbmQgPT09IGtpbmQpIHtcbiAgICAgIHJldHVybiBjdXJyZW50IGFzIFQ7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgcGFydGljdWxhciBub2RlIGlzIHBhcnQgb2YgYSBudWxsIGNoZWNrLiBFLmcuIGdpdmVuOlxuICogYGZvby5iYXIgPyBmb28uYmFyLnZhbHVlIDogbnVsbGAgdGhlIG51bGwgY2hlY2sgd291bGQgYmUgYGZvby5iYXJgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsQ2hlY2sobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICBpZiAoIW5vZGUucGFyZW50KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gYGZvby5iYXIgJiYgZm9vLmJhci52YWx1ZWAgd2hlcmUgYG5vZGVgIGlzIGBmb28uYmFyYC5cbiAgaWYgKHRzLmlzQmluYXJ5RXhwcmVzc2lvbihub2RlLnBhcmVudCkgJiYgbm9kZS5wYXJlbnQubGVmdCA9PT0gbm9kZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gYGZvby5iYXIgJiYgZm9vLmJhci5wYXJlbnQgJiYgZm9vLmJhci5wYXJlbnQudmFsdWVgXG4gIC8vIHdoZXJlIGBub2RlYCBpcyBgZm9vLmJhcmAuXG4gIGlmIChub2RlLnBhcmVudC5wYXJlbnQgJiYgdHMuaXNCaW5hcnlFeHByZXNzaW9uKG5vZGUucGFyZW50LnBhcmVudCkgJiZcbiAgICAgIG5vZGUucGFyZW50LnBhcmVudC5sZWZ0ID09PSBub2RlLnBhcmVudCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gYGlmIChmb28uYmFyKSB7Li4ufWAgd2hlcmUgYG5vZGVgIGlzIGBmb28uYmFyYC5cbiAgaWYgKHRzLmlzSWZTdGF0ZW1lbnQobm9kZS5wYXJlbnQpICYmIG5vZGUucGFyZW50LmV4cHJlc3Npb24gPT09IG5vZGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIGBmb28uYmFyID8gZm9vLmJhci52YWx1ZSA6IG51bGxgIHdoZXJlIGBub2RlYCBpcyBgZm9vLmJhcmAuXG4gIGlmICh0cy5pc0NvbmRpdGlvbmFsRXhwcmVzc2lvbihub2RlLnBhcmVudCkgJiYgbm9kZS5wYXJlbnQuY29uZGl0aW9uID09PSBub2RlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciBhIHByb3BlcnR5IGFjY2VzcyBpcyBzYWZlIChlLmcuIGBmb28ucGFyZW50Py52YWx1ZWApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FmZUFjY2Vzcyhub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiB7XG4gIHJldHVybiBub2RlLnBhcmVudCAhPSBudWxsICYmIHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGUucGFyZW50KSAmJlxuICAgICAgbm9kZS5wYXJlbnQuZXhwcmVzc2lvbiA9PT0gbm9kZSAmJiBub2RlLnBhcmVudC5xdWVzdGlvbkRvdFRva2VuICE9IG51bGw7XG59XG4iXX0=
@@ -1,26 +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 path from 'path';
9
- import * as ts from 'typescript';
10
- export function parseTsconfigFile(tsconfigPath, basePath) {
11
- const { config } = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
12
- const parseConfigHost = {
13
- useCaseSensitiveFileNames: ts.sys.useCaseSensitiveFileNames,
14
- fileExists: ts.sys.fileExists,
15
- readDirectory: ts.sys.readDirectory,
16
- readFile: ts.sys.readFile,
17
- };
18
- // Throw if incorrect arguments are passed to this function. Passing relative base paths
19
- // results in root directories not being resolved and in later type checking runtime errors.
20
- // More details can be found here: https://github.com/microsoft/TypeScript/issues/37731.
21
- if (!path.isAbsolute(basePath)) {
22
- throw Error('Unexpected relative base path has been specified.');
23
- }
24
- return ts.parseJsonConfigFileContent(config, parseConfigHost, basePath, {});
25
- }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VfdHNjb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvdXRpbHMvdHlwZXNjcmlwdC9wYXJzZV90c2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsWUFBb0IsRUFBRSxRQUFnQjtJQUN0RSxNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRSxNQUFNLGVBQWUsR0FBRztRQUN0Qix5QkFBeUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLHlCQUF5QjtRQUMzRCxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVO1FBQzdCLGFBQWEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWE7UUFDbkMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUTtLQUMxQixDQUFDO0lBRUYsd0ZBQXdGO0lBQ3hGLDRGQUE0RjtJQUM1Rix3RkFBd0Y7SUFDeEYsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDOUIsTUFBTSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztLQUNsRTtJQUVELE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUc2NvbmZpZ0ZpbGUodHNjb25maWdQYXRoOiBzdHJpbmcsIGJhc2VQYXRoOiBzdHJpbmcpOiB0cy5QYXJzZWRDb21tYW5kTGluZSB7XG4gIGNvbnN0IHtjb25maWd9ID0gdHMucmVhZENvbmZpZ0ZpbGUodHNjb25maWdQYXRoLCB0cy5zeXMucmVhZEZpbGUpO1xuICBjb25zdCBwYXJzZUNvbmZpZ0hvc3QgPSB7XG4gICAgdXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczogdHMuc3lzLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMsXG4gICAgZmlsZUV4aXN0czogdHMuc3lzLmZpbGVFeGlzdHMsXG4gICAgcmVhZERpcmVjdG9yeTogdHMuc3lzLnJlYWREaXJlY3RvcnksXG4gICAgcmVhZEZpbGU6IHRzLnN5cy5yZWFkRmlsZSxcbiAgfTtcblxuICAvLyBUaHJvdyBpZiBpbmNvcnJlY3QgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbi4gUGFzc2luZyByZWxhdGl2ZSBiYXNlIHBhdGhzXG4gIC8vIHJlc3VsdHMgaW4gcm9vdCBkaXJlY3RvcmllcyBub3QgYmVpbmcgcmVzb2x2ZWQgYW5kIGluIGxhdGVyIHR5cGUgY2hlY2tpbmcgcnVudGltZSBlcnJvcnMuXG4gIC8vIE1vcmUgZGV0YWlscyBjYW4gYmUgZm91bmQgaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zNzczMS5cbiAgaWYgKCFwYXRoLmlzQWJzb2x1dGUoYmFzZVBhdGgpKSB7XG4gICAgdGhyb3cgRXJyb3IoJ1VuZXhwZWN0ZWQgcmVsYXRpdmUgYmFzZSBwYXRoIGhhcyBiZWVuIHNwZWNpZmllZC4nKTtcbiAgfVxuXG4gIHJldHVybiB0cy5wYXJzZUpzb25Db25maWdGaWxlQ29udGVudChjb25maWcsIHBhcnNlQ29uZmlnSG9zdCwgYmFzZVBhdGgsIHt9KTtcbn1cbiJdfQ==
@@ -1,23 +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
- /**
10
- * Gets the text of the given property name. Returns null if the property
11
- * name couldn't be determined statically.
12
- */
13
- export function getPropertyNameText(node) {
14
- if (ts.isIdentifier(node) || ts.isStringLiteralLike(node)) {
15
- return node.text;
16
- }
17
- return null;
18
- }
19
- /** Checks whether the given property name has a text. */
20
- export function hasPropertyNameText(node) {
21
- return ts.isStringLiteral(node) || ts.isNumericLiteral(node) || ts.isIdentifier(node);
22
- }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlfbmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy91dGlscy90eXBlc2NyaXB0L3Byb3BlcnR5X25hbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFLakM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQXFCO0lBQ3ZELElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDekQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ2xCO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFxQjtJQUN2RCxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqIFR5cGUgdGhhdCBkZXNjcmliZXMgYSBwcm9wZXJ0eSBuYW1lIHdpdGggYW4gb2J0YWluYWJsZSB0ZXh0LiAqL1xudHlwZSBQcm9wZXJ0eU5hbWVXaXRoVGV4dCA9IEV4Y2x1ZGU8dHMuUHJvcGVydHlOYW1lLCB0cy5Db21wdXRlZFByb3BlcnR5TmFtZT47XG5cbi8qKlxuICogR2V0cyB0aGUgdGV4dCBvZiB0aGUgZ2l2ZW4gcHJvcGVydHkgbmFtZS4gUmV0dXJucyBudWxsIGlmIHRoZSBwcm9wZXJ0eVxuICogbmFtZSBjb3VsZG4ndCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWVUZXh0KG5vZGU6IHRzLlByb3BlcnR5TmFtZSk6IHN0cmluZ3xudWxsIHtcbiAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSB8fCB0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUudGV4dDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBwcm9wZXJ0eSBuYW1lIGhhcyBhIHRleHQuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUHJvcGVydHlOYW1lVGV4dChub2RlOiB0cy5Qcm9wZXJ0eU5hbWUpOiBub2RlIGlzIFByb3BlcnR5TmFtZVdpdGhUZXh0IHtcbiAgcmV0dXJuIHRzLmlzU3RyaW5nTGl0ZXJhbChub2RlKSB8fCB0cy5pc051bWVyaWNMaXRlcmFsKG5vZGUpIHx8IHRzLmlzSWRlbnRpZmllcihub2RlKTtcbn1cbiJdfQ==
@@ -1,72 +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
- export function getValueSymbolOfDeclaration(node, typeChecker) {
10
- let symbol = typeChecker.getSymbolAtLocation(node);
11
- while (symbol && symbol.flags & ts.SymbolFlags.Alias) {
12
- symbol = typeChecker.getAliasedSymbol(symbol);
13
- }
14
- return symbol;
15
- }
16
- /** Checks whether a node is referring to a specific import specifier. */
17
- export function isReferenceToImport(typeChecker, node, importSpecifier) {
18
- const nodeSymbol = typeChecker.getTypeAtLocation(node).getSymbol();
19
- const importSymbol = typeChecker.getTypeAtLocation(importSpecifier).getSymbol();
20
- return !!(nodeSymbol && importSymbol) &&
21
- nodeSymbol.valueDeclaration === importSymbol.valueDeclaration;
22
- }
23
- /** Checks whether a node's type is nullable (`null`, `undefined` or `void`). */
24
- export function isNullableType(typeChecker, node) {
25
- // Skip expressions in the form of `foo.bar!.baz` since the `TypeChecker` seems
26
- // to identify them as null, even though the user indicated that it won't be.
27
- if (node.parent && ts.isNonNullExpression(node.parent)) {
28
- return false;
29
- }
30
- const type = typeChecker.getTypeAtLocation(node);
31
- const typeNode = typeChecker.typeToTypeNode(type, undefined, ts.NodeBuilderFlags.None);
32
- let hasSeenNullableType = false;
33
- // Trace the type of the node back to a type node, walk
34
- // through all of its sub-nodes and look for nullable tyes.
35
- if (typeNode) {
36
- (function walk(current) {
37
- if (current.kind === ts.SyntaxKind.NullKeyword ||
38
- current.kind === ts.SyntaxKind.UndefinedKeyword ||
39
- current.kind === ts.SyntaxKind.VoidKeyword) {
40
- hasSeenNullableType = true;
41
- // Note that we don't descend into type literals, because it may cause
42
- // us to mis-identify the root type as nullable, because it has a nullable
43
- // property (e.g. `{ foo: string | null }`).
44
- }
45
- else if (!hasSeenNullableType && !ts.isTypeLiteralNode(current)) {
46
- current.forEachChild(walk);
47
- }
48
- })(typeNode);
49
- }
50
- return hasSeenNullableType;
51
- }
52
- /**
53
- * Walks through the types and sub-types of a node, looking for a
54
- * type that has the same name as one of the passed-in ones.
55
- */
56
- export function hasOneOfTypes(typeChecker, node, types) {
57
- const type = typeChecker.getTypeAtLocation(node);
58
- const typeNode = type ? typeChecker.typeToTypeNode(type, undefined, ts.NodeBuilderFlags.None) : undefined;
59
- let hasMatch = false;
60
- if (typeNode) {
61
- (function walk(current) {
62
- if (ts.isIdentifier(current) && types.includes(current.text)) {
63
- hasMatch = true;
64
- }
65
- else if (!hasMatch && !ts.isTypeLiteralNode(current)) {
66
- current.forEachChild(walk);
67
- }
68
- })(typeNode);
69
- }
70
- return hasMatch;
71
- }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL3V0aWxzL3R5cGVzY3JpcHQvc3ltYm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxJQUFhLEVBQUUsV0FBMkI7SUFFcEYsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5ELE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7UUFDcEQsTUFBTSxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMvQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLG1CQUFtQixDQUMvQixXQUEyQixFQUFFLElBQWEsRUFBRSxlQUFtQztJQUNqRixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkUsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hGLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLFlBQVksQ0FBQztRQUNqQyxVQUFVLENBQUMsZ0JBQWdCLEtBQUssWUFBWSxDQUFDLGdCQUFnQixDQUFDO0FBQ3BFLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLGNBQWMsQ0FBQyxXQUEyQixFQUFFLElBQWE7SUFDdkUsK0VBQStFO0lBQy9FLDZFQUE2RTtJQUM3RSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN0RCxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsSUFBSSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFFaEMsdURBQXVEO0lBQ3ZELDJEQUEyRDtJQUMzRCxJQUFJLFFBQVEsRUFBRTtRQUNaLENBQUMsU0FBUyxJQUFJLENBQUMsT0FBZ0I7WUFDN0IsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVztnQkFDMUMsT0FBTyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQjtnQkFDL0MsT0FBTyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQkFDOUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixzRUFBc0U7Z0JBQ3RFLDBFQUEwRTtnQkFDMUUsNENBQTRDO2FBQzdDO2lCQUFNLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDakUsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1QjtRQUNILENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUN6QixXQUEyQixFQUFFLElBQWEsRUFBRSxLQUFlO0lBQzdELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxNQUFNLFFBQVEsR0FDVixJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM3RixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxRQUFRLEVBQUU7UUFDWixDQUFDLFNBQVMsSUFBSSxDQUFDLE9BQWdCO1lBQzdCLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDNUQsUUFBUSxHQUFHLElBQUksQ0FBQzthQUNqQjtpQkFBTSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN0RCxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDZDtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZVN5bWJvbE9mRGVjbGFyYXRpb24obm9kZTogdHMuTm9kZSwgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyKTogdHMuU3ltYm9sfFxuICAgIHVuZGVmaW5lZCB7XG4gIGxldCBzeW1ib2wgPSB0eXBlQ2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5vZGUpO1xuXG4gIHdoaWxlIChzeW1ib2wgJiYgc3ltYm9sLmZsYWdzICYgdHMuU3ltYm9sRmxhZ3MuQWxpYXMpIHtcbiAgICBzeW1ib2wgPSB0eXBlQ2hlY2tlci5nZXRBbGlhc2VkU3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICByZXR1cm4gc3ltYm9sO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgYSBub2RlIGlzIHJlZmVycmluZyB0byBhIHNwZWNpZmljIGltcG9ydCBzcGVjaWZpZXIuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZlcmVuY2VUb0ltcG9ydChcbiAgICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIG5vZGU6IHRzLk5vZGUsIGltcG9ydFNwZWNpZmllcjogdHMuSW1wb3J0U3BlY2lmaWVyKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5vZGVTeW1ib2wgPSB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihub2RlKS5nZXRTeW1ib2woKTtcbiAgY29uc3QgaW1wb3J0U3ltYm9sID0gdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24oaW1wb3J0U3BlY2lmaWVyKS5nZXRTeW1ib2woKTtcbiAgcmV0dXJuICEhKG5vZGVTeW1ib2wgJiYgaW1wb3J0U3ltYm9sKSAmJlxuICAgICAgbm9kZVN5bWJvbC52YWx1ZURlY2xhcmF0aW9uID09PSBpbXBvcnRTeW1ib2wudmFsdWVEZWNsYXJhdGlvbjtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIGEgbm9kZSdzIHR5cGUgaXMgbnVsbGFibGUgKGBudWxsYCwgYHVuZGVmaW5lZGAgb3IgYHZvaWRgKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bGxhYmxlVHlwZSh0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIG5vZGU6IHRzLk5vZGUpIHtcbiAgLy8gU2tpcCBleHByZXNzaW9ucyBpbiB0aGUgZm9ybSBvZiBgZm9vLmJhciEuYmF6YCBzaW5jZSB0aGUgYFR5cGVDaGVja2VyYCBzZWVtc1xuICAvLyB0byBpZGVudGlmeSB0aGVtIGFzIG51bGwsIGV2ZW4gdGhvdWdoIHRoZSB1c2VyIGluZGljYXRlZCB0aGF0IGl0IHdvbid0IGJlLlxuICBpZiAobm9kZS5wYXJlbnQgJiYgdHMuaXNOb25OdWxsRXhwcmVzc2lvbihub2RlLnBhcmVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB0eXBlID0gdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24obm9kZSk7XG4gIGNvbnN0IHR5cGVOb2RlID0gdHlwZUNoZWNrZXIudHlwZVRvVHlwZU5vZGUodHlwZSwgdW5kZWZpbmVkLCB0cy5Ob2RlQnVpbGRlckZsYWdzLk5vbmUpO1xuICBsZXQgaGFzU2Vlbk51bGxhYmxlVHlwZSA9IGZhbHNlO1xuXG4gIC8vIFRyYWNlIHRoZSB0eXBlIG9mIHRoZSBub2RlIGJhY2sgdG8gYSB0eXBlIG5vZGUsIHdhbGtcbiAgLy8gdGhyb3VnaCBhbGwgb2YgaXRzIHN1Yi1ub2RlcyBhbmQgbG9vayBmb3IgbnVsbGFibGUgdHllcy5cbiAgaWYgKHR5cGVOb2RlKSB7XG4gICAgKGZ1bmN0aW9uIHdhbGsoY3VycmVudDogdHMuTm9kZSkge1xuICAgICAgaWYgKGN1cnJlbnQua2luZCA9PT0gdHMuU3ludGF4S2luZC5OdWxsS2V5d29yZCB8fFxuICAgICAgICAgIGN1cnJlbnQua2luZCA9PT0gdHMuU3ludGF4S2luZC5VbmRlZmluZWRLZXl3b3JkIHx8XG4gICAgICAgICAgY3VycmVudC5raW5kID09PSB0cy5TeW50YXhLaW5kLlZvaWRLZXl3b3JkKSB7XG4gICAgICAgIGhhc1NlZW5OdWxsYWJsZVR5cGUgPSB0cnVlO1xuICAgICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgZGVzY2VuZCBpbnRvIHR5cGUgbGl0ZXJhbHMsIGJlY2F1c2UgaXQgbWF5IGNhdXNlXG4gICAgICAgIC8vIHVzIHRvIG1pcy1pZGVudGlmeSB0aGUgcm9vdCB0eXBlIGFzIG51bGxhYmxlLCBiZWNhdXNlIGl0IGhhcyBhIG51bGxhYmxlXG4gICAgICAgIC8vIHByb3BlcnR5IChlLmcuIGB7IGZvbzogc3RyaW5nIHwgbnVsbCB9YCkuXG4gICAgICB9IGVsc2UgaWYgKCFoYXNTZWVuTnVsbGFibGVUeXBlICYmICF0cy5pc1R5cGVMaXRlcmFsTm9kZShjdXJyZW50KSkge1xuICAgICAgICBjdXJyZW50LmZvckVhY2hDaGlsZCh3YWxrKTtcbiAgICAgIH1cbiAgICB9KSh0eXBlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gaGFzU2Vlbk51bGxhYmxlVHlwZTtcbn1cblxuLyoqXG4gKiBXYWxrcyB0aHJvdWdoIHRoZSB0eXBlcyBhbmQgc3ViLXR5cGVzIG9mIGEgbm9kZSwgbG9va2luZyBmb3IgYVxuICogdHlwZSB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIG9uZSBvZiB0aGUgcGFzc2VkLWluIG9uZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNPbmVPZlR5cGVzKFxuICAgIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgbm9kZTogdHMuTm9kZSwgdHlwZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gIGNvbnN0IHR5cGUgPSB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihub2RlKTtcbiAgY29uc3QgdHlwZU5vZGUgPVxuICAgICAgdHlwZSA/IHR5cGVDaGVja2VyLnR5cGVUb1R5cGVOb2RlKHR5cGUsIHVuZGVmaW5lZCwgdHMuTm9kZUJ1aWxkZXJGbGFncy5Ob25lKSA6IHVuZGVmaW5lZDtcbiAgbGV0IGhhc01hdGNoID0gZmFsc2U7XG4gIGlmICh0eXBlTm9kZSkge1xuICAgIChmdW5jdGlvbiB3YWxrKGN1cnJlbnQ6IHRzLk5vZGUpIHtcbiAgICAgIGlmICh0cy5pc0lkZW50aWZpZXIoY3VycmVudCkgJiYgdHlwZXMuaW5jbHVkZXMoY3VycmVudC50ZXh0KSkge1xuICAgICAgICBoYXNNYXRjaCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKCFoYXNNYXRjaCAmJiAhdHMuaXNUeXBlTGl0ZXJhbE5vZGUoY3VycmVudCkpIHtcbiAgICAgICAgY3VycmVudC5mb3JFYWNoQ2hpbGQod2Fsayk7XG4gICAgICB9XG4gICAgfSkodHlwZU5vZGUpO1xuICB9XG4gIHJldHVybiBoYXNNYXRjaDtcbn1cbiJdfQ==
File without changes