@angular/compiler 19.0.0-next.0 → 19.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/compiler.mjs +4742 -4473
  3. package/fesm2022/compiler.mjs.map +1 -1
  4. package/index.d.ts +35 -3
  5. package/package.json +2 -4
  6. package/esm2022/compiler.mjs +0 -13
  7. package/esm2022/index.mjs +0 -13
  8. package/esm2022/public_api.mjs +0 -15
  9. package/esm2022/src/assertions.mjs +0 -31
  10. package/esm2022/src/chars.mjs +0 -90
  11. package/esm2022/src/compiler.mjs +0 -88
  12. package/esm2022/src/compiler_facade_interface.mjs +0 -29
  13. package/esm2022/src/config.mjs +0 -20
  14. package/esm2022/src/constant_pool.mjs +0 -285
  15. package/esm2022/src/core.mjs +0 -96
  16. package/esm2022/src/expression_parser/ast.mjs +0 -755
  17. package/esm2022/src/expression_parser/lexer.mjs +0 -421
  18. package/esm2022/src/expression_parser/parser.mjs +0 -1222
  19. package/esm2022/src/i18n/digest.mjs +0 -322
  20. package/esm2022/src/i18n/extractor_merger.mjs +0 -409
  21. package/esm2022/src/i18n/i18n_ast.mjs +0 -212
  22. package/esm2022/src/i18n/i18n_html_parser.mjs +0 -54
  23. package/esm2022/src/i18n/i18n_parser.mjs +0 -247
  24. package/esm2022/src/i18n/index.mjs +0 -16
  25. package/esm2022/src/i18n/message_bundle.mjs +0 -93
  26. package/esm2022/src/i18n/parse_util.mjs +0 -17
  27. package/esm2022/src/i18n/serializers/placeholder.mjs +0 -139
  28. package/esm2022/src/i18n/serializers/serializer.mjs +0 -77
  29. package/esm2022/src/i18n/serializers/xliff.mjs +0 -300
  30. package/esm2022/src/i18n/serializers/xliff2.mjs +0 -349
  31. package/esm2022/src/i18n/serializers/xmb.mjs +0 -188
  32. package/esm2022/src/i18n/serializers/xml_helper.mjs +0 -94
  33. package/esm2022/src/i18n/serializers/xtb.mjs +0 -186
  34. package/esm2022/src/i18n/translation_bundle.mjs +0 -164
  35. package/esm2022/src/injectable_compiler_2.mjs +0 -138
  36. package/esm2022/src/jit_compiler_facade.mjs +0 -681
  37. package/esm2022/src/ml_parser/ast.mjs +0 -167
  38. package/esm2022/src/ml_parser/defaults.mjs +0 -24
  39. package/esm2022/src/ml_parser/entities.mjs +0 -2144
  40. package/esm2022/src/ml_parser/html_parser.mjs +0 -18
  41. package/esm2022/src/ml_parser/html_tags.mjs +0 -156
  42. package/esm2022/src/ml_parser/html_whitespaces.mjs +0 -107
  43. package/esm2022/src/ml_parser/icu_ast_expander.mjs +0 -125
  44. package/esm2022/src/ml_parser/lexer.mjs +0 -1210
  45. package/esm2022/src/ml_parser/parser.mjs +0 -539
  46. package/esm2022/src/ml_parser/tags.mjs +0 -47
  47. package/esm2022/src/ml_parser/tokens.mjs +0 -9
  48. package/esm2022/src/ml_parser/xml_parser.mjs +0 -19
  49. package/esm2022/src/ml_parser/xml_tags.mjs +0 -32
  50. package/esm2022/src/output/abstract_emitter.mjs +0 -524
  51. package/esm2022/src/output/abstract_js_emitter.mjs +0 -130
  52. package/esm2022/src/output/map_util.mjs +0 -19
  53. package/esm2022/src/output/output_ast.mjs +0 -1301
  54. package/esm2022/src/output/output_jit.mjs +0 -138
  55. package/esm2022/src/output/output_jit_trusted_types.mjs +0 -100
  56. package/esm2022/src/output/source_map.mjs +0 -150
  57. package/esm2022/src/parse_util.mjs +0 -198
  58. package/esm2022/src/render3/partial/api.mjs +0 -9
  59. package/esm2022/src/render3/partial/class_metadata.mjs +0 -52
  60. package/esm2022/src/render3/partial/component.mjs +0 -197
  61. package/esm2022/src/render3/partial/directive.mjs +0 -264
  62. package/esm2022/src/render3/partial/factory.mjs +0 -35
  63. package/esm2022/src/render3/partial/injectable.mjs +0 -67
  64. package/esm2022/src/render3/partial/injector.mjs +0 -41
  65. package/esm2022/src/render3/partial/ng_module.mjs +0 -63
  66. package/esm2022/src/render3/partial/pipe.mjs +0 -50
  67. package/esm2022/src/render3/partial/util.mjs +0 -79
  68. package/esm2022/src/render3/r3_ast.mjs +0 -493
  69. package/esm2022/src/render3/r3_class_debug_info_compiler.mjs +0 -35
  70. package/esm2022/src/render3/r3_class_metadata_compiler.mjs +0 -92
  71. package/esm2022/src/render3/r3_control_flow.mjs +0 -421
  72. package/esm2022/src/render3/r3_deferred_blocks.mjs +0 -170
  73. package/esm2022/src/render3/r3_deferred_triggers.mjs +0 -316
  74. package/esm2022/src/render3/r3_factory.mjs +0 -200
  75. package/esm2022/src/render3/r3_identifiers.mjs +0 -480
  76. package/esm2022/src/render3/r3_injector_compiler.mjs +0 -28
  77. package/esm2022/src/render3/r3_jit.mjs +0 -29
  78. package/esm2022/src/render3/r3_module_compiler.mjs +0 -211
  79. package/esm2022/src/render3/r3_pipe_compiler.mjs +0 -35
  80. package/esm2022/src/render3/r3_template_transform.mjs +0 -560
  81. package/esm2022/src/render3/util.mjs +0 -90
  82. package/esm2022/src/render3/view/api.mjs +0 -14
  83. package/esm2022/src/render3/view/compiler.mjs +0 -546
  84. package/esm2022/src/render3/view/i18n/get_msg_utils.mjs +0 -113
  85. package/esm2022/src/render3/view/i18n/icu_serializer.mjs +0 -43
  86. package/esm2022/src/render3/view/i18n/localize_utils.mjs +0 -118
  87. package/esm2022/src/render3/view/i18n/meta.mjs +0 -259
  88. package/esm2022/src/render3/view/i18n/util.mjs +0 -70
  89. package/esm2022/src/render3/view/query_generation.mjs +0 -182
  90. package/esm2022/src/render3/view/t2_api.mjs +0 -9
  91. package/esm2022/src/render3/view/t2_binder.mjs +0 -823
  92. package/esm2022/src/render3/view/template.mjs +0 -113
  93. package/esm2022/src/render3/view/util.mjs +0 -192
  94. package/esm2022/src/resource_loader.mjs +0 -17
  95. package/esm2022/src/schema/dom_element_schema_registry.mjs +0 -471
  96. package/esm2022/src/schema/dom_security_schema.mjs +0 -96
  97. package/esm2022/src/schema/element_schema_registry.mjs +0 -10
  98. package/esm2022/src/schema/trusted_types_sinks.mjs +0 -41
  99. package/esm2022/src/selector.mjs +0 -400
  100. package/esm2022/src/shadow_css.mjs +0 -1053
  101. package/esm2022/src/style_url_resolver.mjs +0 -17
  102. package/esm2022/src/template/pipeline/ir/index.mjs +0 -18
  103. package/esm2022/src/template/pipeline/ir/src/enums.mjs +0 -503
  104. package/esm2022/src/template/pipeline/ir/src/expression.mjs +0 -997
  105. package/esm2022/src/template/pipeline/ir/src/handle.mjs +0 -13
  106. package/esm2022/src/template/pipeline/ir/src/operations.mjs +0 -261
  107. package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +0 -405
  108. package/esm2022/src/template/pipeline/ir/src/ops/host.mjs +0 -25
  109. package/esm2022/src/template/pipeline/ir/src/ops/shared.mjs +0 -43
  110. package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +0 -277
  111. package/esm2022/src/template/pipeline/ir/src/traits.mjs +0 -64
  112. package/esm2022/src/template/pipeline/ir/src/variable.mjs +0 -13
  113. package/esm2022/src/template/pipeline/src/compilation.mjs +0 -194
  114. package/esm2022/src/template/pipeline/src/conversion.mjs +0 -64
  115. package/esm2022/src/template/pipeline/src/emit.mjs +0 -238
  116. package/esm2022/src/template/pipeline/src/ingest.mjs +0 -1058
  117. package/esm2022/src/template/pipeline/src/instruction.mjs +0 -564
  118. package/esm2022/src/template/pipeline/src/phases/any_cast.mjs +0 -32
  119. package/esm2022/src/template/pipeline/src/phases/apply_i18n_expressions.mjs +0 -63
  120. package/esm2022/src/template/pipeline/src/phases/assign_i18n_slot_dependencies.mjs +0 -63
  121. package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +0 -138
  122. package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +0 -75
  123. package/esm2022/src/template/pipeline/src/phases/chaining.mjs +0 -112
  124. package/esm2022/src/template/pipeline/src/phases/collapse_singleton_interpolations.mjs +0 -32
  125. package/esm2022/src/template/pipeline/src/phases/conditionals.mjs +0 -58
  126. package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +0 -214
  127. package/esm2022/src/template/pipeline/src/phases/convert_i18n_bindings.mjs +0 -52
  128. package/esm2022/src/template/pipeline/src/phases/create_i18n_contexts.mjs +0 -105
  129. package/esm2022/src/template/pipeline/src/phases/deduplicate_text_bindings.mjs +0 -40
  130. package/esm2022/src/template/pipeline/src/phases/defer_configs.mjs +0 -29
  131. package/esm2022/src/template/pipeline/src/phases/defer_resolve_targets.mjs +0 -113
  132. package/esm2022/src/template/pipeline/src/phases/empty_elements.mjs +0 -47
  133. package/esm2022/src/template/pipeline/src/phases/expand_safe_reads.mjs +0 -192
  134. package/esm2022/src/template/pipeline/src/phases/extract_i18n_messages.mjs +0 -218
  135. package/esm2022/src/template/pipeline/src/phases/generate_advance.mjs +0 -66
  136. package/esm2022/src/template/pipeline/src/phases/generate_local_let_references.mjs +0 -29
  137. package/esm2022/src/template/pipeline/src/phases/generate_projection_def.mjs +0 -46
  138. package/esm2022/src/template/pipeline/src/phases/generate_variables.mjs +0 -170
  139. package/esm2022/src/template/pipeline/src/phases/has_const_expression_collection.mjs +0 -28
  140. package/esm2022/src/template/pipeline/src/phases/host_style_property_parsing.mjs +0 -81
  141. package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +0 -309
  142. package/esm2022/src/template/pipeline/src/phases/i18n_text_extraction.mjs +0 -97
  143. package/esm2022/src/template/pipeline/src/phases/local_refs.mjs +0 -43
  144. package/esm2022/src/template/pipeline/src/phases/namespace.mjs +0 -26
  145. package/esm2022/src/template/pipeline/src/phases/naming.mjs +0 -179
  146. package/esm2022/src/template/pipeline/src/phases/next_context_merging.mjs +0 -75
  147. package/esm2022/src/template/pipeline/src/phases/ng_container.mjs +0 -29
  148. package/esm2022/src/template/pipeline/src/phases/nonbindable.mjs +0 -47
  149. package/esm2022/src/template/pipeline/src/phases/nullish_coalescing.mjs +0 -33
  150. package/esm2022/src/template/pipeline/src/phases/ordering.mjs +0 -140
  151. package/esm2022/src/template/pipeline/src/phases/parse_extracted_styles.mjs +0 -137
  152. package/esm2022/src/template/pipeline/src/phases/phase_remove_content_selectors.mjs +0 -42
  153. package/esm2022/src/template/pipeline/src/phases/pipe_creation.mjs +0 -74
  154. package/esm2022/src/template/pipeline/src/phases/pipe_variadic.mjs +0 -30
  155. package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +0 -81
  156. package/esm2022/src/template/pipeline/src/phases/pure_function_extraction.mjs +0 -55
  157. package/esm2022/src/template/pipeline/src/phases/pure_literal_structures.mjs +0 -58
  158. package/esm2022/src/template/pipeline/src/phases/reify.mjs +0 -433
  159. package/esm2022/src/template/pipeline/src/phases/remove_empty_bindings.mjs +0 -31
  160. package/esm2022/src/template/pipeline/src/phases/remove_i18n_contexts.mjs +0 -27
  161. package/esm2022/src/template/pipeline/src/phases/remove_illegal_let_references.mjs +0 -36
  162. package/esm2022/src/template/pipeline/src/phases/remove_unused_i18n_attrs.mjs +0 -33
  163. package/esm2022/src/template/pipeline/src/phases/resolve_contexts.mjs +0 -60
  164. package/esm2022/src/template/pipeline/src/phases/resolve_defer_deps_fns.mjs +0 -31
  165. package/esm2022/src/template/pipeline/src/phases/resolve_dollar_event.mjs +0 -36
  166. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_element_placeholders.mjs +0 -266
  167. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_expression_placeholders.mjs +0 -70
  168. package/esm2022/src/template/pipeline/src/phases/resolve_names.mjs +0 -124
  169. package/esm2022/src/template/pipeline/src/phases/resolve_sanitizers.mjs +0 -123
  170. package/esm2022/src/template/pipeline/src/phases/save_restore_view.mjs +0 -64
  171. package/esm2022/src/template/pipeline/src/phases/slot_allocation.mjs +0 -62
  172. package/esm2022/src/template/pipeline/src/phases/store_let_optimization.mjs +0 -35
  173. package/esm2022/src/template/pipeline/src/phases/style_binding_specialization.mjs +0 -42
  174. package/esm2022/src/template/pipeline/src/phases/temporary_variables.mjs +0 -87
  175. package/esm2022/src/template/pipeline/src/phases/track_fn_generation.mjs +0 -52
  176. package/esm2022/src/template/pipeline/src/phases/track_fn_optimization.mjs +0 -88
  177. package/esm2022/src/template/pipeline/src/phases/track_variables.mjs +0 -36
  178. package/esm2022/src/template/pipeline/src/phases/transform_two_way_binding_set.mjs +0 -43
  179. package/esm2022/src/template/pipeline/src/phases/var_counting.mjs +0 -155
  180. package/esm2022/src/template/pipeline/src/phases/variable_optimization.mjs +0 -423
  181. package/esm2022/src/template/pipeline/src/phases/wrap_icus.mjs +0 -41
  182. package/esm2022/src/template/pipeline/src/util/elements.mjs +0 -29
  183. package/esm2022/src/template_parser/binding_parser.mjs +0 -465
  184. package/esm2022/src/template_parser/template_preparser.mjs +0 -84
  185. package/esm2022/src/util.mjs +0 -124
  186. package/esm2022/src/version.mjs +0 -15
@@ -1,58 +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 o from '../../../../output/output_ast';
9
- import * as ir from '../../ir';
10
- /**
11
- * Collapse the various conditions of conditional ops (if, switch) into a single test expression.
12
- */
13
- export function generateConditionalExpressions(job) {
14
- for (const unit of job.units) {
15
- for (const op of unit.ops()) {
16
- if (op.kind !== ir.OpKind.Conditional) {
17
- continue;
18
- }
19
- let test;
20
- // Any case with a `null` condition is `default`. If one exists, default to it instead.
21
- const defaultCase = op.conditions.findIndex((cond) => cond.expr === null);
22
- if (defaultCase >= 0) {
23
- const slot = op.conditions.splice(defaultCase, 1)[0].targetSlot;
24
- test = new ir.SlotLiteralExpr(slot);
25
- }
26
- else {
27
- // By default, a switch evaluates to `-1`, causing no template to be displayed.
28
- test = o.literal(-1);
29
- }
30
- // Switch expressions assign their main test to a temporary, to avoid re-executing it.
31
- let tmp = op.test == null ? null : new ir.AssignTemporaryExpr(op.test, job.allocateXrefId());
32
- // For each remaining condition, test whether the temporary satifies the check. (If no temp is
33
- // present, just check each expression directly.)
34
- for (let i = op.conditions.length - 1; i >= 0; i--) {
35
- let conditionalCase = op.conditions[i];
36
- if (conditionalCase.expr === null) {
37
- continue;
38
- }
39
- if (tmp !== null) {
40
- const useTmp = i === 0 ? tmp : new ir.ReadTemporaryExpr(tmp.xref);
41
- conditionalCase.expr = new o.BinaryOperatorExpr(o.BinaryOperator.Identical, useTmp, conditionalCase.expr);
42
- }
43
- else if (conditionalCase.alias !== null) {
44
- const caseExpressionTemporaryXref = job.allocateXrefId();
45
- conditionalCase.expr = new ir.AssignTemporaryExpr(conditionalCase.expr, caseExpressionTemporaryXref);
46
- op.contextValue = new ir.ReadTemporaryExpr(caseExpressionTemporaryXref);
47
- }
48
- test = new o.ConditionalExpr(conditionalCase.expr, new ir.SlotLiteralExpr(conditionalCase.targetSlot), test);
49
- }
50
- // Save the resulting aggregate Joost-expression.
51
- op.processed = test;
52
- // Clear the original conditions array, since we no longer need it, and don't want it to
53
- // affect subsequent phases (e.g. pipe creation).
54
- op.conditions = [];
55
- }
56
- }
57
- }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvY29uZGl0aW9uYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7O0dBRUc7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQUMsR0FBNEI7SUFDekUsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUM1QixJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdEMsU0FBUztZQUNYLENBQUM7WUFFRCxJQUFJLElBQWtCLENBQUM7WUFFdkIsdUZBQXVGO1lBQ3ZGLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQzFFLElBQUksV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNyQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUNoRSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTiwrRUFBK0U7Z0JBQy9FLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUVELHNGQUFzRjtZQUN0RixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBRTdGLDhGQUE4RjtZQUM5RixpREFBaUQ7WUFDakQsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ2xDLFNBQVM7Z0JBQ1gsQ0FBQztnQkFDRCxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDakIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xFLGVBQWUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQzdDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUMxQixNQUFNLEVBQ04sZUFBZSxDQUFDLElBQUksQ0FDckIsQ0FBQztnQkFDSixDQUFDO3FCQUFNLElBQUksZUFBZSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDMUMsTUFBTSwyQkFBMkIsR0FBRyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3pELGVBQWUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUMsbUJBQW1CLENBQy9DLGVBQWUsQ0FBQyxJQUFJLEVBQ3BCLDJCQUEyQixDQUM1QixDQUFDO29CQUNGLEVBQUUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztnQkFDMUUsQ0FBQztnQkFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUMxQixlQUFlLENBQUMsSUFBSSxFQUNwQixJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUNsRCxJQUFJLENBQ0wsQ0FBQztZQUNKLENBQUM7WUFFRCxpREFBaUQ7WUFDakQsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFFcEIsd0ZBQXdGO1lBQ3hGLGlEQUFpRDtZQUNqRCxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQge0NvbXBvbmVudENvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogQ29sbGFwc2UgdGhlIHZhcmlvdXMgY29uZGl0aW9ucyBvZiBjb25kaXRpb25hbCBvcHMgKGlmLCBzd2l0Y2gpIGludG8gYSBzaW5nbGUgdGVzdCBleHByZXNzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVDb25kaXRpb25hbEV4cHJlc3Npb25zKGpvYjogQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC5vcHMoKSkge1xuICAgICAgaWYgKG9wLmtpbmQgIT09IGlyLk9wS2luZC5Db25kaXRpb25hbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IHRlc3Q6IG8uRXhwcmVzc2lvbjtcblxuICAgICAgLy8gQW55IGNhc2Ugd2l0aCBhIGBudWxsYCBjb25kaXRpb24gaXMgYGRlZmF1bHRgLiBJZiBvbmUgZXhpc3RzLCBkZWZhdWx0IHRvIGl0IGluc3RlYWQuXG4gICAgICBjb25zdCBkZWZhdWx0Q2FzZSA9IG9wLmNvbmRpdGlvbnMuZmluZEluZGV4KChjb25kKSA9PiBjb25kLmV4cHIgPT09IG51bGwpO1xuICAgICAgaWYgKGRlZmF1bHRDYXNlID49IDApIHtcbiAgICAgICAgY29uc3Qgc2xvdCA9IG9wLmNvbmRpdGlvbnMuc3BsaWNlKGRlZmF1bHRDYXNlLCAxKVswXS50YXJnZXRTbG90O1xuICAgICAgICB0ZXN0ID0gbmV3IGlyLlNsb3RMaXRlcmFsRXhwcihzbG90KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIGEgc3dpdGNoIGV2YWx1YXRlcyB0byBgLTFgLCBjYXVzaW5nIG5vIHRlbXBsYXRlIHRvIGJlIGRpc3BsYXllZC5cbiAgICAgICAgdGVzdCA9IG8ubGl0ZXJhbCgtMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFN3aXRjaCBleHByZXNzaW9ucyBhc3NpZ24gdGhlaXIgbWFpbiB0ZXN0IHRvIGEgdGVtcG9yYXJ5LCB0byBhdm9pZCByZS1leGVjdXRpbmcgaXQuXG4gICAgICBsZXQgdG1wID0gb3AudGVzdCA9PSBudWxsID8gbnVsbCA6IG5ldyBpci5Bc3NpZ25UZW1wb3JhcnlFeHByKG9wLnRlc3QsIGpvYi5hbGxvY2F0ZVhyZWZJZCgpKTtcblxuICAgICAgLy8gRm9yIGVhY2ggcmVtYWluaW5nIGNvbmRpdGlvbiwgdGVzdCB3aGV0aGVyIHRoZSB0ZW1wb3Jhcnkgc2F0aWZpZXMgdGhlIGNoZWNrLiAoSWYgbm8gdGVtcCBpc1xuICAgICAgLy8gcHJlc2VudCwganVzdCBjaGVjayBlYWNoIGV4cHJlc3Npb24gZGlyZWN0bHkuKVxuICAgICAgZm9yIChsZXQgaSA9IG9wLmNvbmRpdGlvbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgbGV0IGNvbmRpdGlvbmFsQ2FzZSA9IG9wLmNvbmRpdGlvbnNbaV07XG4gICAgICAgIGlmIChjb25kaXRpb25hbENhc2UuZXhwciA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0bXAgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB1c2VUbXAgPSBpID09PSAwID8gdG1wIDogbmV3IGlyLlJlYWRUZW1wb3JhcnlFeHByKHRtcC54cmVmKTtcbiAgICAgICAgICBjb25kaXRpb25hbENhc2UuZXhwciA9IG5ldyBvLkJpbmFyeU9wZXJhdG9yRXhwcihcbiAgICAgICAgICAgIG8uQmluYXJ5T3BlcmF0b3IuSWRlbnRpY2FsLFxuICAgICAgICAgICAgdXNlVG1wLFxuICAgICAgICAgICAgY29uZGl0aW9uYWxDYXNlLmV4cHIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb25hbENhc2UuYWxpYXMgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBjYXNlRXhwcmVzc2lvblRlbXBvcmFyeVhyZWYgPSBqb2IuYWxsb2NhdGVYcmVmSWQoKTtcbiAgICAgICAgICBjb25kaXRpb25hbENhc2UuZXhwciA9IG5ldyBpci5Bc3NpZ25UZW1wb3JhcnlFeHByKFxuICAgICAgICAgICAgY29uZGl0aW9uYWxDYXNlLmV4cHIsXG4gICAgICAgICAgICBjYXNlRXhwcmVzc2lvblRlbXBvcmFyeVhyZWYsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBvcC5jb250ZXh0VmFsdWUgPSBuZXcgaXIuUmVhZFRlbXBvcmFyeUV4cHIoY2FzZUV4cHJlc3Npb25UZW1wb3JhcnlYcmVmKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXN0ID0gbmV3IG8uQ29uZGl0aW9uYWxFeHByKFxuICAgICAgICAgIGNvbmRpdGlvbmFsQ2FzZS5leHByLFxuICAgICAgICAgIG5ldyBpci5TbG90TGl0ZXJhbEV4cHIoY29uZGl0aW9uYWxDYXNlLnRhcmdldFNsb3QpLFxuICAgICAgICAgIHRlc3QsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNhdmUgdGhlIHJlc3VsdGluZyBhZ2dyZWdhdGUgSm9vc3QtZXhwcmVzc2lvbi5cbiAgICAgIG9wLnByb2Nlc3NlZCA9IHRlc3Q7XG5cbiAgICAgIC8vIENsZWFyIHRoZSBvcmlnaW5hbCBjb25kaXRpb25zIGFycmF5LCBzaW5jZSB3ZSBubyBsb25nZXIgbmVlZCBpdCwgYW5kIGRvbid0IHdhbnQgaXQgdG9cbiAgICAgIC8vIGFmZmVjdCBzdWJzZXF1ZW50IHBoYXNlcyAoZS5nLiBwaXBlIGNyZWF0aW9uKS5cbiAgICAgIG9wLmNvbmRpdGlvbnMgPSBbXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,214 +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 core from '../../../../core';
9
- import * as o from '../../../../output/output_ast';
10
- import * as ir from '../../ir';
11
- import { ComponentCompilationJob, HostBindingCompilationJob, } from '../compilation';
12
- import { literalOrArrayLiteral } from '../conversion';
13
- /**
14
- * Converts the semantic attributes of element-like operations (elements, templates) into constant
15
- * array expressions, and lifts them into the overall component `consts`.
16
- */
17
- export function collectElementConsts(job) {
18
- // Collect all extracted attributes.
19
- const allElementAttributes = new Map();
20
- for (const unit of job.units) {
21
- for (const op of unit.create) {
22
- if (op.kind === ir.OpKind.ExtractedAttribute) {
23
- const attributes = allElementAttributes.get(op.target) || new ElementAttributes(job.compatibility);
24
- allElementAttributes.set(op.target, attributes);
25
- attributes.add(op.bindingKind, op.name, op.expression, op.namespace, op.trustedValueFn);
26
- ir.OpList.remove(op);
27
- }
28
- }
29
- }
30
- // Serialize the extracted attributes into the const array.
31
- if (job instanceof ComponentCompilationJob) {
32
- for (const unit of job.units) {
33
- for (const op of unit.create) {
34
- // TODO: Simplify and combine these cases.
35
- if (op.kind == ir.OpKind.Projection) {
36
- const attributes = allElementAttributes.get(op.xref);
37
- if (attributes !== undefined) {
38
- const attrArray = serializeAttributes(attributes);
39
- if (attrArray.entries.length > 0) {
40
- op.attributes = attrArray;
41
- }
42
- }
43
- }
44
- else if (ir.isElementOrContainerOp(op)) {
45
- op.attributes = getConstIndex(job, allElementAttributes, op.xref);
46
- // TODO(dylhunn): `@for` loops with `@empty` blocks need to be special-cased here,
47
- // because the slot consumer trait currently only supports one slot per consumer and we
48
- // need two. This should be revisited when making the refactors mentioned in:
49
- // https://github.com/angular/angular/pull/53620#discussion_r1430918822
50
- if (op.kind === ir.OpKind.RepeaterCreate && op.emptyView !== null) {
51
- op.emptyAttributes = getConstIndex(job, allElementAttributes, op.emptyView);
52
- }
53
- }
54
- }
55
- }
56
- }
57
- else if (job instanceof HostBindingCompilationJob) {
58
- // TODO: If the host binding case further diverges, we may want to split it into its own
59
- // phase.
60
- for (const [xref, attributes] of allElementAttributes.entries()) {
61
- if (xref !== job.root.xref) {
62
- throw new Error(`An attribute would be const collected into the host binding's template function, but is not associated with the root xref.`);
63
- }
64
- const attrArray = serializeAttributes(attributes);
65
- if (attrArray.entries.length > 0) {
66
- job.root.attributes = attrArray;
67
- }
68
- }
69
- }
70
- }
71
- function getConstIndex(job, allElementAttributes, xref) {
72
- const attributes = allElementAttributes.get(xref);
73
- if (attributes !== undefined) {
74
- const attrArray = serializeAttributes(attributes);
75
- if (attrArray.entries.length > 0) {
76
- return job.addConst(attrArray);
77
- }
78
- }
79
- return null;
80
- }
81
- /**
82
- * Shared instance of an empty array to avoid unnecessary array allocations.
83
- */
84
- const FLYWEIGHT_ARRAY = Object.freeze([]);
85
- /**
86
- * Container for all of the various kinds of attributes which are applied on an element.
87
- */
88
- class ElementAttributes {
89
- get attributes() {
90
- return this.byKind.get(ir.BindingKind.Attribute) ?? FLYWEIGHT_ARRAY;
91
- }
92
- get classes() {
93
- return this.byKind.get(ir.BindingKind.ClassName) ?? FLYWEIGHT_ARRAY;
94
- }
95
- get styles() {
96
- return this.byKind.get(ir.BindingKind.StyleProperty) ?? FLYWEIGHT_ARRAY;
97
- }
98
- get bindings() {
99
- return this.propertyBindings ?? FLYWEIGHT_ARRAY;
100
- }
101
- get template() {
102
- return this.byKind.get(ir.BindingKind.Template) ?? FLYWEIGHT_ARRAY;
103
- }
104
- get i18n() {
105
- return this.byKind.get(ir.BindingKind.I18n) ?? FLYWEIGHT_ARRAY;
106
- }
107
- constructor(compatibility) {
108
- this.compatibility = compatibility;
109
- this.known = new Map();
110
- this.byKind = new Map();
111
- this.propertyBindings = null;
112
- this.projectAs = null;
113
- }
114
- isKnown(kind, name) {
115
- const nameToValue = this.known.get(kind) ?? new Set();
116
- this.known.set(kind, nameToValue);
117
- if (nameToValue.has(name)) {
118
- return true;
119
- }
120
- nameToValue.add(name);
121
- return false;
122
- }
123
- add(kind, name, value, namespace, trustedValueFn) {
124
- // TemplateDefinitionBuilder puts duplicate attribute, class, and style values into the consts
125
- // array. This seems inefficient, we can probably keep just the first one or the last value
126
- // (whichever actually gets applied when multiple values are listed for the same attribute).
127
- const allowDuplicates = this.compatibility === ir.CompatibilityMode.TemplateDefinitionBuilder &&
128
- (kind === ir.BindingKind.Attribute ||
129
- kind === ir.BindingKind.ClassName ||
130
- kind === ir.BindingKind.StyleProperty);
131
- if (!allowDuplicates && this.isKnown(kind, name)) {
132
- return;
133
- }
134
- // TODO: Can this be its own phase
135
- if (name === 'ngProjectAs') {
136
- if (value === null ||
137
- !(value instanceof o.LiteralExpr) ||
138
- value.value == null ||
139
- typeof value.value?.toString() !== 'string') {
140
- throw Error('ngProjectAs must have a string literal value');
141
- }
142
- this.projectAs = value.value.toString();
143
- // TODO: TemplateDefinitionBuilder allows `ngProjectAs` to also be assigned as a literal
144
- // attribute. Is this sane?
145
- }
146
- const array = this.arrayFor(kind);
147
- array.push(...getAttributeNameLiterals(namespace, name));
148
- if (kind === ir.BindingKind.Attribute || kind === ir.BindingKind.StyleProperty) {
149
- if (value === null) {
150
- throw Error('Attribute, i18n attribute, & style element attributes must have a value');
151
- }
152
- if (trustedValueFn !== null) {
153
- if (!ir.isStringLiteral(value)) {
154
- throw Error('AssertionError: extracted attribute value should be string literal');
155
- }
156
- array.push(o.taggedTemplate(trustedValueFn, new o.TemplateLiteral([new o.TemplateLiteralElement(value.value)], []), undefined, value.sourceSpan));
157
- }
158
- else {
159
- array.push(value);
160
- }
161
- }
162
- }
163
- arrayFor(kind) {
164
- if (kind === ir.BindingKind.Property || kind === ir.BindingKind.TwoWayProperty) {
165
- this.propertyBindings ??= [];
166
- return this.propertyBindings;
167
- }
168
- else {
169
- if (!this.byKind.has(kind)) {
170
- this.byKind.set(kind, []);
171
- }
172
- return this.byKind.get(kind);
173
- }
174
- }
175
- }
176
- /**
177
- * Gets an array of literal expressions representing the attribute's namespaced name.
178
- */
179
- function getAttributeNameLiterals(namespace, name) {
180
- const nameLiteral = o.literal(name);
181
- if (namespace) {
182
- return [o.literal(0 /* core.AttributeMarker.NamespaceURI */), o.literal(namespace), nameLiteral];
183
- }
184
- return [nameLiteral];
185
- }
186
- /**
187
- * Serializes an ElementAttributes object into an array expression.
188
- */
189
- function serializeAttributes({ attributes, bindings, classes, i18n, projectAs, styles, template, }) {
190
- const attrArray = [...attributes];
191
- if (projectAs !== null) {
192
- // Parse the attribute value into a CssSelectorList. Note that we only take the
193
- // first selector, because we don't support multiple selectors in ngProjectAs.
194
- const parsedR3Selector = core.parseSelectorToR3Selector(projectAs)[0];
195
- attrArray.push(o.literal(5 /* core.AttributeMarker.ProjectAs */), literalOrArrayLiteral(parsedR3Selector));
196
- }
197
- if (classes.length > 0) {
198
- attrArray.push(o.literal(1 /* core.AttributeMarker.Classes */), ...classes);
199
- }
200
- if (styles.length > 0) {
201
- attrArray.push(o.literal(2 /* core.AttributeMarker.Styles */), ...styles);
202
- }
203
- if (bindings.length > 0) {
204
- attrArray.push(o.literal(3 /* core.AttributeMarker.Bindings */), ...bindings);
205
- }
206
- if (template.length > 0) {
207
- attrArray.push(o.literal(4 /* core.AttributeMarker.Template */), ...template);
208
- }
209
- if (i18n.length > 0) {
210
- attrArray.push(o.literal(6 /* core.AttributeMarker.I18n */), ...i18n);
211
- }
212
- return o.literalArr(attrArray);
213
- }
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RfY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL2NvbnN0X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLElBQUksTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEtBQUssQ0FBQyxNQUFNLCtCQUErQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9CLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIseUJBQXlCLEdBRTFCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXBEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUFtQjtJQUN0RCxvQ0FBb0M7SUFDcEMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBZ0MsQ0FBQztJQUNyRSxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM3QyxNQUFNLFVBQVUsR0FDZCxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNsRixvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDaEQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxF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LENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sbUNBQTJCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgY29yZSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlJztcbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnRDb21waWxhdGlvbkpvYixcbiAgSG9zdEJpbmRpbmdDb21waWxhdGlvbkpvYixcbiAgdHlwZSBDb21waWxhdGlvbkpvYixcbn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuaW1wb3J0IHtsaXRlcmFsT3JBcnJheUxpdGVyYWx9IGZyb20gJy4uL2NvbnZlcnNpb24nO1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBzZW1hbnRpYyBhdHRyaWJ1dGVzIG9mIGVsZW1lbnQtbGlrZSBvcGVyYXRpb25zIChlbGVtZW50cywgdGVtcGxhdGVzKSBpbnRvIGNvbnN0YW50XG4gKiBhcnJheSBleHByZXNzaW9ucywgYW5kIGxpZnRzIHRoZW0gaW50byB0aGUgb3ZlcmFsbCBjb21wb25lbnQgYGNvbnN0c2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0RWxlbWVudENvbnN0cyhqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIC8vIENvbGxlY3QgYWxsIGV4dHJhY3RlZCBhdHRyaWJ1dGVzLlxuICBjb25zdCBhbGxFbGVtZW50QXR0cmlidXRlcyA9IG5ldyBNYXA8aXIuWHJlZklkLCBFbGVtZW50QXR0cmlidXRlcz4oKTtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC5jcmVhdGUpIHtcbiAgICAgIGlmIChvcC5raW5kID09PSBpci5PcEtpbmQuRXh0cmFjdGVkQXR0cmlidXRlKSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPVxuICAgICAgICAgIGFsbEVsZW1lbnRBdHRyaWJ1dGVzLmdldChvcC50YXJnZXQpIHx8IG5ldyBFbGVtZW50QXR0cmlidXRlcyhqb2IuY29tcGF0aWJpbGl0eSk7XG4gICAgICAgIGFsbEVsZW1lbnRBdHRyaWJ1dGVzLnNldChvcC50YXJnZXQsIGF0dHJpYnV0ZXMpO1xuICAgICAgICBhdHRyaWJ1dGVzLmFkZChvcC5iaW5kaW5nS2luZCwgb3AubmFtZSwgb3AuZXhwcmVzc2lvbiwgb3AubmFtZXNwYWNlLCBvcC50cnVzdGVkVmFsdWVGbik7XG4gICAgICAgIGlyLk9wTGlzdC5yZW1vdmU8aXIuQ3JlYXRlT3A+KG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTZXJpYWxpemUgdGhlIGV4dHJhY3RlZCBhdHRyaWJ1dGVzIGludG8gdGhlIGNvbnN0IGFycmF5LlxuICBpZiAoam9iIGluc3RhbmNlb2YgQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpIHtcbiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQuY3JlYXRlKSB7XG4gICAgICAgIC8vIFRPRE86IFNpbXBsaWZ5IGFuZCBjb21iaW5lIHRoZXNlIGNhc2VzLlxuICAgICAgICBpZiAob3Aua2luZCA9PSBpci5PcEtpbmQuUHJvamVjdGlvbikge1xuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBhbGxFbGVtZW50QXR0cmlidXRlcy5nZXQob3AueHJlZik7XG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgYXR0ckFycmF5ID0gc2VyaWFsaXplQXR0cmlidXRlcyhhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIGlmIChhdHRyQXJyYXkuZW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIG9wLmF0dHJpYnV0ZXMgPSBhdHRyQXJyYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGlyLmlzRWxlbWVudE9yQ29udGFpbmVyT3Aob3ApKSB7XG4gICAgICAgICAgb3AuYXR0cmlidXRlcyA9IGdldENvbnN0SW5kZXgoam9iLCBhbGxFbGVtZW50QXR0cmlidXRlcywgb3AueHJlZik7XG5cbiAgICAgICAgICAvLyBUT0RPKGR5bGh1bm4pOiBgQGZvcmAgbG9vcHMgd2l0aCBgQGVtcHR5YCBibG9ja3MgbmVlZCB0byBiZSBzcGVjaWFsLWNhc2VkIGhlcmUsXG4gICAgICAgICAgLy8gYmVjYXVzZSB0aGUgc2xvdCBjb25zdW1lciB0cmFpdCBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBvbmUgc2xvdCBwZXIgY29uc3VtZXIgYW5kIHdlXG4gICAgICAgICAgLy8gbmVlZCB0d28uIFRoaXMgc2hvdWxkIGJlIHJldmlzaXRlZCB3aGVuIG1ha2luZyB0aGUgcmVmYWN0b3JzIG1lbnRpb25lZCBpbjpcbiAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL3B1bGwvNTM2MjAjZGlzY3Vzc2lvbl9yMTQzMDkxODgyMlxuICAgICAgICAgIGlmIChvcC5raW5kID09PSBpci5PcEtpbmQuUmVwZWF0ZXJDcmVhdGUgJiYgb3AuZW1wdHlWaWV3ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBvcC5lbXB0eUF0dHJpYnV0ZXMgPSBnZXRDb25zdEluZGV4KGpvYiwgYWxsRWxlbWVudEF0dHJpYnV0ZXMsIG9wLmVtcHR5Vmlldyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGpvYiBpbnN0YW5jZW9mIEhvc3RCaW5kaW5nQ29tcGlsYXRpb25Kb2IpIHtcbiAgICAvLyBUT0RPOiBJZiB0aGUgaG9zdCBiaW5kaW5nIGNhc2UgZnVydGhlciBkaXZlcmdlcywgd2UgbWF5IHdhbnQgdG8gc3BsaXQgaXQgaW50byBpdHMgb3duXG4gICAgLy8gcGhhc2UuXG4gICAgZm9yIChjb25zdCBbeHJlZiwgYXR0cmlidXRlc10gb2YgYWxsRWxlbWVudEF0dHJpYnV0ZXMuZW50cmllcygpKSB7XG4gICAgICBpZiAoeHJlZiAhPT0gam9iLnJvb3QueHJlZikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFuIGF0dHJpYnV0ZSB3b3VsZCBiZSBjb25zdCBjb2xsZWN0ZWQgaW50byB0aGUgaG9zdCBiaW5kaW5nJ3MgdGVtcGxhdGUgZnVuY3Rpb24sIGJ1dCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIHRoZSByb290IHhyZWYuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGF0dHJBcnJheSA9IHNlcmlhbGl6ZUF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7XG4gICAgICBpZiAoYXR0ckFycmF5LmVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBqb2Iucm9vdC5hdHRyaWJ1dGVzID0gYXR0ckFycmF5O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRDb25zdEluZGV4KFxuICBqb2I6IENvbXBvbmVudENvbXBpbGF0aW9uSm9iLFxuICBhbGxFbGVtZW50QXR0cmlidXRlczogTWFwPGlyLlhyZWZJZCwgRWxlbWVudEF0dHJpYnV0ZXM+LFxuICB4cmVmOiBpci5YcmVmSWQsXG4pOiBpci5Db25zdEluZGV4IHwgbnVsbCB7XG4gIGNvbnN0IGF0dHJpYnV0ZXMgPSBhbGxFbGVtZW50QXR0cmlidXRlcy5nZXQoeHJlZik7XG4gIGlmIChhdHRyaWJ1dGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBhdHRyQXJyYXkgPSBzZXJpYWxpemVBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpO1xuICAgIGlmIChhdHRyQXJyYXkuZW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gam9iLmFkZENvbnN0KGF0dHJBcnJheSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFNoYXJlZCBpbnN0YW5jZSBvZiBhbiBlbXB0eSBhcnJheSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhcnJheSBhbGxvY2F0aW9ucy5cbiAqL1xuY29uc3QgRkxZV0VJR0hUX0FSUkFZOiBSZWFkb25seUFycmF5PG8uRXhwcmVzc2lvbj4gPSBPYmplY3QuZnJlZXplPG8uRXhwcmVzc2lvbltdPihbXSk7XG5cbi8qKlxuICogQ29udGFpbmVyIGZvciBhbGwgb2YgdGhlIHZhcmlvdXMga2luZHMgb2YgYXR0cmlidXRlcyB3aGljaCBhcmUgYXBwbGllZCBvbiBhbiBlbGVtZW50LlxuICovXG5jbGFzcyBFbGVtZW50QXR0cmlidXRlcyB7XG4gIHByaXZhdGUga25vd24gPSBuZXcgTWFwPGlyLkJpbmRpbmdLaW5kLCBTZXQ8c3RyaW5nPj4oKTtcbiAgcHJpdmF0ZSBieUtpbmQgPSBuZXcgTWFwPFxuICAgIC8vIFByb3BlcnR5IGJpbmRpbmdzIGFyZSBleGNsdWRlZCBoZXJlLCBiZWNhdXNlIHRoZXkgbmVlZCB0byBiZSB0cmFja2VkIGluIHRoZSBzYW1lXG4gICAgLy8gYXJyYXkgdG8gbWFpbnRhaW4gdGhlaXIgb3JkZXIuIFRoZXkncmUgdHJhY2tlZCBpbiB0aGUgYHByb3BlcnR5QmluZGluZ3NgIGFycmF5LlxuICAgIEV4Y2x1ZGU8aXIuQmluZGluZ0tpbmQsIGlyLkJpbmRpbmdLaW5kLlByb3BlcnR5IHwgaXIuQmluZGluZ0tpbmQuVHdvV2F5UHJvcGVydHk+LFxuICAgIG8uRXhwcmVzc2lvbltdXG4gID4oKTtcbiAgcHJpdmF0ZSBwcm9wZXJ0eUJpbmRpbmdzOiBvLkV4cHJlc3Npb25bXSB8IG51bGwgPSBudWxsO1xuXG4gIHByb2plY3RBczogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgZ2V0IGF0dHJpYnV0ZXMoKTogUmVhZG9ubHlBcnJheTxvLkV4cHJlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5ieUtpbmQuZ2V0KGlyLkJpbmRpbmdLaW5kLkF0dHJpYnV0ZSkgPz8gRkxZV0VJR0hUX0FSUkFZO1xuICB9XG5cbiAgZ2V0IGNsYXNzZXMoKTogUmVhZG9ubHlBcnJheTxvLkV4cHJlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5ieUtpbmQuZ2V0KGlyLkJpbmRpbmdLaW5kLkNsYXNzTmFtZSkgPz8gRkxZV0VJR0hUX0FSUkFZO1xuICB9XG5cbiAgZ2V0IHN0eWxlcygpOiBSZWFkb25seUFycmF5PG8uRXhwcmVzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLmJ5S2luZC5nZXQoaXIuQmluZGluZ0tpbmQuU3R5bGVQcm9wZXJ0eSkgPz8gRkxZV0VJR0hUX0FSUkFZO1xuICB9XG5cbiAgZ2V0IGJpbmRpbmdzKCk6IFJlYWRvbmx5QXJyYXk8by5FeHByZXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlCaW5kaW5ncyA/PyBGTFlXRUlHSFRfQVJSQVk7XG4gIH1cblxuICBnZXQgdGVtcGxhdGUoKTogUmVhZG9ubHlBcnJheTxvLkV4cHJlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5ieUtpbmQuZ2V0KGlyLkJpbmRpbmdLaW5kLlRlbXBsYXRlKSA/PyBGTFlXRUlHSFRfQVJSQVk7XG4gIH1cblxuICBnZXQgaTE4bigpOiBSZWFkb25seUFycmF5PG8uRXhwcmVzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLmJ5S2luZC5nZXQoaXIuQmluZGluZ0tpbmQuSTE4bikgPz8gRkxZV0VJR0hUX0FSUkFZO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb21wYXRpYmlsaXR5OiBpci5Db21wYXRpYmlsaXR5TW9kZSkge31cblxuICBwcml2YXRlIGlzS25vd24oa2luZDogaXIuQmluZGluZ0tpbmQsIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5hbWVUb1ZhbHVlID0gdGhpcy5rbm93bi5nZXQoa2luZCkgPz8gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgdGhpcy5rbm93bi5zZXQoa2luZCwgbmFtZVRvVmFsdWUpO1xuICAgIGlmIChuYW1lVG9WYWx1ZS5oYXMobmFtZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBuYW1lVG9WYWx1ZS5hZGQobmFtZSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYWRkKFxuICAgIGtpbmQ6IGlyLkJpbmRpbmdLaW5kLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogby5FeHByZXNzaW9uIHwgbnVsbCxcbiAgICBuYW1lc3BhY2U6IHN0cmluZyB8IG51bGwsXG4gICAgdHJ1c3RlZFZhbHVlRm46IG8uRXhwcmVzc2lvbiB8IG51bGwsXG4gICk6IHZvaWQge1xuICAgIC8vIFRlbXBsYXRlRGVmaW5pdGlvbkJ1aWxkZXIgcHV0cyBkdXBsaWNhdGUgYXR0cmlidXRlLCBjbGFzcywgYW5kIHN0eWxlIHZhbHVlcyBpbnRvIHRoZSBjb25zdHNcbiAgICAvLyBhcnJheS4gVGhpcyBzZWVtcyBpbmVmZmljaWVudCwgd2UgY2FuIHByb2JhYmx5IGtlZXAganVzdCB0aGUgZmlyc3Qgb25lIG9yIHRoZSBsYXN0IHZhbHVlXG4gICAgLy8gKHdoaWNoZXZlciBhY3R1YWxseSBnZXRzIGFwcGxpZWQgd2hlbiBtdWx0aXBsZSB2YWx1ZXMgYXJlIGxpc3RlZCBmb3IgdGhlIHNhbWUgYXR0cmlidXRlKS5cbiAgICBjb25zdCBhbGxvd0R1cGxpY2F0ZXMgPVxuICAgICAgdGhpcy5jb21wYXRpYmlsaXR5ID09PSBpci5Db21wYXRpYmlsaXR5TW9kZS5UZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyICYmXG4gICAgICAoa2luZCA9PT0gaXIuQmluZGluZ0tpbmQuQXR0cmlidXRlIHx8XG4gICAgICAgIGtpbmQgPT09IGlyLkJpbmRpbmdLaW5kLkNsYXNzTmFtZSB8fFxuICAgICAgICBraW5kID09PSBpci5CaW5kaW5nS2luZC5TdHlsZVByb3BlcnR5KTtcbiAgICBpZiAoIWFsbG93RHVwbGljYXRlcyAmJiB0aGlzLmlzS25vd24oa2luZCwgbmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBDYW4gdGhpcyBiZSBpdHMgb3duIHBoYXNlXG4gICAgaWYgKG5hbWUgPT09ICduZ1Byb2plY3RBcycpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9mIG8uTGl0ZXJhbEV4cHIpIHx8XG4gICAgICAgIHZhbHVlLnZhbHVlID09IG51bGwgfHxcbiAgICAgICAgdHlwZW9mIHZhbHVlLnZhbHVlPy50b1N0cmluZygpICE9PSAnc3RyaW5nJ1xuICAgICAgKSB7XG4gICAgICAgIHRocm93IEVycm9yKCduZ1Byb2plY3RBcyBtdXN0IGhhdmUgYSBzdHJpbmcgbGl0ZXJhbCB2YWx1ZScpO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9qZWN0QXMgPSB2YWx1ZS52YWx1ZS50b1N0cmluZygpO1xuICAgICAgLy8gVE9ETzogVGVtcGxhdGVEZWZpbml0aW9uQnVpbGRlciBhbGxvd3MgYG5nUHJvamVjdEFzYCB0byBhbHNvIGJlIGFzc2lnbmVkIGFzIGEgbGl0ZXJhbFxuICAgICAgLy8gYXR0cmlidXRlLiBJcyB0aGlzIHNhbmU/XG4gICAgfVxuXG4gICAgY29uc3QgYXJyYXkgPSB0aGlzLmFycmF5Rm9yKGtpbmQpO1xuICAgIGFycmF5LnB1c2goLi4uZ2V0QXR0cmlidXRlTmFtZUxpdGVyYWxzKG5hbWVzcGFjZSwgbmFtZSkpO1xuICAgIGlmIChraW5kID09PSBpci5CaW5kaW5nS2luZC5BdHRyaWJ1dGUgfHwga2luZCA9PT0gaXIuQmluZGluZ0tpbmQuU3R5bGVQcm9wZXJ0eSkge1xuICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IEVycm9yKCdBdHRyaWJ1dGUsIGkxOG4gYXR0cmlidXRlLCAmIHN0eWxlIGVsZW1lbnQgYXR0cmlidXRlcyBtdXN0IGhhdmUgYSB2YWx1ZScpO1xuICAgICAgfVxuICAgICAgaWYgKHRydXN0ZWRWYWx1ZUZuICE9PSBudWxsKSB7XG4gICAgICAgIGlmICghaXIuaXNTdHJpbmdMaXRlcmFsKHZhbHVlKSkge1xuICAgICAgICAgIHRocm93IEVycm9yKCdBc3NlcnRpb25FcnJvcjogZXh0cmFjdGVkIGF0dHJpYnV0ZSB2YWx1ZSBzaG91bGQgYmUgc3RyaW5nIGxpdGVyYWwnKTtcbiAgICAgICAgfVxuICAgICAgICBhcnJheS5wdXNoKFxuICAgICAgICAgIG8udGFnZ2VkVGVtcGxhdGUoXG4gICAgICAgICAgICB0cnVzdGVkVmFsdWVGbixcbiAgICAgICAgICAgIG5ldyBvLlRlbXBsYXRlTGl0ZXJhbChbbmV3IG8uVGVtcGxhdGVMaXRlcmFsRWxlbWVudCh2YWx1ZS52YWx1ZSldLCBbXSksXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICB2YWx1ZS5zb3VyY2VTcGFuLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheS5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFycmF5Rm9yKGtpbmQ6IGlyLkJpbmRpbmdLaW5kKTogby5FeHByZXNzaW9uW10ge1xuICAgIGlmIChraW5kID09PSBpci5CaW5kaW5nS2luZC5Qcm9wZXJ0eSB8fCBraW5kID09PSBpci5CaW5kaW5nS2luZC5Ud29XYXlQcm9wZXJ0eSkge1xuICAgICAgdGhpcy5wcm9wZXJ0eUJpbmRpbmdzID8/PSBbXTtcbiAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5QmluZGluZ3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5ieUtpbmQuaGFzKGtpbmQpKSB7XG4gICAgICAgIHRoaXMuYnlLaW5kLnNldChraW5kLCBbXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5ieUtpbmQuZ2V0KGtpbmQpITtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIGFuIGFycmF5IG9mIGxpdGVyYWwgZXhwcmVzc2lvbnMgcmVwcmVzZW50aW5nIHRoZSBhdHRyaWJ1dGUncyBuYW1lc3BhY2VkIG5hbWUuXG4gKi9cbmZ1bmN0aW9uIGdldEF0dHJpYnV0ZU5hbWVMaXRlcmFscyhuYW1lc3BhY2U6IHN0cmluZyB8IG51bGwsIG5hbWU6IHN0cmluZyk6IG8uTGl0ZXJhbEV4cHJbXSB7XG4gIGNvbnN0IG5hbWVMaXRlcmFsID0gby5saXRlcmFsKG5hbWUpO1xuXG4gIGlmIChuYW1lc3BhY2UpIHtcbiAgICByZXR1cm4gW28ubGl0ZXJhbChjb3JlLkF0dHJpYnV0ZU1hcmtlci5OYW1lc3BhY2VVUkkpLCBvLmxpdGVyYWwobmFtZXNwYWNlKSwgbmFtZUxpdGVyYWxdO1xuICB9XG5cbiAgcmV0dXJuIFtuYW1lTGl0ZXJhbF07XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhbiBFbGVtZW50QXR0cmlidXRlcyBvYmplY3QgaW50byBhbiBhcnJheSBleHByZXNzaW9uLlxuICovXG5mdW5jdGlvbiBzZXJpYWxpemVBdHRyaWJ1dGVzKHtcbiAgYXR0cmlidXRlcyxcbiAgYmluZGluZ3MsXG4gIGNsYXNzZXMsXG4gIGkxOG4sXG4gIHByb2plY3RBcyxcbiAgc3R5bGVzLFxuICB0ZW1wbGF0ZSxcbn06IEVsZW1lbnRBdHRyaWJ1dGVzKTogby5MaXRlcmFsQXJyYXlFeHByIHtcbiAgY29uc3QgYXR0ckFycmF5ID0gWy4uLmF0dHJpYnV0ZXNdO1xuXG4gIGlmIChwcm9qZWN0QXMgIT09IG51bGwpIHtcbiAgICAvLyBQYXJzZSB0aGUgYXR0cmlidXRlIHZhbHVlIGludG8gYSBDc3NTZWxlY3Rvckxpc3QuIE5vdGUgdGhhdCB3ZSBvbmx5IHRha2UgdGhlXG4gICAgLy8gZmlyc3Qgc2VsZWN0b3IsIGJlY2F1c2Ugd2UgZG9uJ3Qgc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3RvcnMgaW4gbmdQcm9qZWN0QXMuXG4gICAgY29uc3QgcGFyc2VkUjNTZWxlY3RvciA9IGNvcmUucGFyc2VTZWxlY3RvclRvUjNTZWxlY3Rvcihwcm9qZWN0QXMpWzBdO1xuICAgIGF0dHJBcnJheS5wdXNoKFxuICAgICAgby5saXRlcmFsKGNvcmUuQXR0cmlidXRlTWFya2VyLlByb2plY3RBcyksXG4gICAgICBsaXRlcmFsT3JBcnJheUxpdGVyYWwocGFyc2VkUjNTZWxlY3RvciksXG4gICAgKTtcbiAgfVxuICBpZiAoY2xhc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgYXR0ckFycmF5LnB1c2goby5saXRlcmFsKGNvcmUuQXR0cmlidXRlTWFya2VyLkNsYXNzZXMpLCAuLi5jbGFzc2VzKTtcbiAgfVxuICBpZiAoc3R5bGVzLmxlbmd0aCA+IDApIHtcbiAgICBhdHRyQXJyYXkucHVzaChvLmxpdGVyYWwoY29yZS5BdHRyaWJ1dGVNYXJrZXIuU3R5bGVzKSwgLi4uc3R5bGVzKTtcbiAgfVxuICBpZiAoYmluZGluZ3MubGVuZ3RoID4gMCkge1xuICAgIGF0dHJBcnJheS5wdXNoKG8ubGl0ZXJhbChjb3JlLkF0dHJpYnV0ZU1hcmtlci5CaW5kaW5ncyksIC4uLmJpbmRpbmdzKTtcbiAgfVxuICBpZiAodGVtcGxhdGUubGVuZ3RoID4gMCkge1xuICAgIGF0dHJBcnJheS5wdXNoKG8ubGl0ZXJhbChjb3JlLkF0dHJpYnV0ZU1hcmtlci5UZW1wbGF0ZSksIC4uLnRlbXBsYXRlKTtcbiAgfVxuICBpZiAoaTE4bi5sZW5ndGggPiAwKSB7XG4gICAgYXR0ckFycmF5LnB1c2goby5saXRlcmFsKGNvcmUuQXR0cmlidXRlTWFya2VyLkkxOG4pLCAuLi5pMThuKTtcbiAgfVxuICByZXR1cm4gby5saXRlcmFsQXJyKGF0dHJBcnJheSk7XG59XG4iXX0=
@@ -1,52 +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 ir from '../../ir';
9
- /**
10
- * Some binding instructions in the update block may actually correspond to i18n bindings. In that
11
- * case, they should be replaced with i18nExp instructions for the dynamic portions.
12
- */
13
- export function convertI18nBindings(job) {
14
- const i18nAttributesByElem = new Map();
15
- for (const unit of job.units) {
16
- for (const op of unit.create) {
17
- if (op.kind === ir.OpKind.I18nAttributes) {
18
- i18nAttributesByElem.set(op.target, op);
19
- }
20
- }
21
- for (const op of unit.update) {
22
- switch (op.kind) {
23
- case ir.OpKind.Property:
24
- case ir.OpKind.Attribute:
25
- if (op.i18nContext === null) {
26
- continue;
27
- }
28
- if (!(op.expression instanceof ir.Interpolation)) {
29
- continue;
30
- }
31
- const i18nAttributesForElem = i18nAttributesByElem.get(op.target);
32
- if (i18nAttributesForElem === undefined) {
33
- throw new Error('AssertionError: An i18n attribute binding instruction requires the owning element to have an I18nAttributes create instruction');
34
- }
35
- if (i18nAttributesForElem.target !== op.target) {
36
- throw new Error('AssertionError: Expected i18nAttributes target element to match binding target element');
37
- }
38
- const ops = [];
39
- for (let i = 0; i < op.expression.expressions.length; i++) {
40
- const expr = op.expression.expressions[i];
41
- if (op.expression.i18nPlaceholders.length !== op.expression.expressions.length) {
42
- throw new Error(`AssertionError: An i18n attribute binding instruction requires the same number of expressions and placeholders, but found ${op.expression.i18nPlaceholders.length} placeholders and ${op.expression.expressions.length} expressions`);
43
- }
44
- ops.push(ir.createI18nExpressionOp(op.i18nContext, i18nAttributesForElem.target, i18nAttributesForElem.xref, i18nAttributesForElem.handle, expr, null, op.expression.i18nPlaceholders[i], ir.I18nParamResolutionTime.Creation, ir.I18nExpressionFor.I18nAttribute, op.name, op.sourceSpan));
45
- }
46
- ir.OpList.replaceWithMany(op, ops);
47
- break;
48
- }
49
- }
50
- }
51
- }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydF9pMThuX2JpbmRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvY29udmVydF9pMThuX2JpbmRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRy9COzs7R0FHRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFtQjtJQUNyRCxNQUFNLG9CQUFvQixHQUF3QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzVFLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN6QyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztRQUVELEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO2dCQUN4QixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUztvQkFDdEIsSUFBSSxFQUFFLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUM1QixTQUFTO29CQUNYLENBQUM7b0JBRUQsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQzt3QkFDakQsU0FBUztvQkFDWCxDQUFDO29CQUVELE1BQU0scUJBQXFCLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDbEUsSUFBSSxxQkFBcUIsS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDeEMsTUFBTSxJQUFJLEtBQUssQ0FDYixnSUFBZ0ksQ0FDakksQ0FBQztvQkFDSixDQUFDO29CQUVELElBQUkscUJBQXFCLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYix3RkFBd0YsQ0FDekYsQ0FBQztvQkFDSixDQUFDO29CQUVELE1BQU0sR0FBRyxHQUFrQixFQUFFLENBQUM7b0JBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDMUQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBRTFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQy9FLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkhBQTZILEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxxQkFBcUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxjQUFjLENBQ3RPLENBQUM7d0JBQ0osQ0FBQzt3QkFFRCxHQUFHLENBQUMsSUFBSSxDQUNOLEVBQUUsQ0FBQyxzQkFBc0IsQ0FDdkIsRUFBRSxDQUFDLFdBQVcsRUFDZCxxQkFBcUIsQ0FBQyxNQUFNLEVBQzVCLHFCQUFxQixDQUFDLElBQUksRUFDMUIscUJBQXFCLENBQUMsTUFBTSxFQUM1QixJQUFJLEVBQ0osSUFBSSxFQUNKLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQ2pDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQ25DLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQ2xDLEVBQUUsQ0FBQyxJQUFJLEVBQ1AsRUFBRSxDQUFDLFVBQVUsQ0FDZCxDQUNGLENBQUM7b0JBQ0osQ0FBQztvQkFDRCxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNsRCxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQge0NvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogU29tZSBiaW5kaW5nIGluc3RydWN0aW9ucyBpbiB0aGUgdXBkYXRlIGJsb2NrIG1heSBhY3R1YWxseSBjb3JyZXNwb25kIHRvIGkxOG4gYmluZGluZ3MuIEluIHRoYXRcbiAqIGNhc2UsIHRoZXkgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggaTE4bkV4cCBpbnN0cnVjdGlvbnMgZm9yIHRoZSBkeW5hbWljIHBvcnRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEkxOG5CaW5kaW5ncyhqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIGNvbnN0IGkxOG5BdHRyaWJ1dGVzQnlFbGVtOiBNYXA8aXIuWHJlZklkLCBpci5JMThuQXR0cmlidXRlc09wPiA9IG5ldyBNYXAoKTtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC5jcmVhdGUpIHtcbiAgICAgIGlmIChvcC5raW5kID09PSBpci5PcEtpbmQuSTE4bkF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaTE4bkF0dHJpYnV0ZXNCeUVsZW0uc2V0KG9wLnRhcmdldCwgb3ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC51cGRhdGUpIHtcbiAgICAgIHN3aXRjaCAob3Aua2luZCkge1xuICAgICAgICBjYXNlIGlyLk9wS2luZC5Qcm9wZXJ0eTpcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuQXR0cmlidXRlOlxuICAgICAgICAgIGlmIChvcC5pMThuQ29udGV4dCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCEob3AuZXhwcmVzc2lvbiBpbnN0YW5jZW9mIGlyLkludGVycG9sYXRpb24pKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpMThuQXR0cmlidXRlc0ZvckVsZW0gPSBpMThuQXR0cmlidXRlc0J5RWxlbS5nZXQob3AudGFyZ2V0KTtcbiAgICAgICAgICBpZiAoaTE4bkF0dHJpYnV0ZXNGb3JFbGVtID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgJ0Fzc2VydGlvbkVycm9yOiBBbiBpMThuIGF0dHJpYnV0ZSBiaW5kaW5nIGluc3RydWN0aW9uIHJlcXVpcmVzIHRoZSBvd25pbmcgZWxlbWVudCB0byBoYXZlIGFuIEkxOG5BdHRyaWJ1dGVzIGNyZWF0ZSBpbnN0cnVjdGlvbicsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpMThuQXR0cmlidXRlc0ZvckVsZW0udGFyZ2V0ICE9PSBvcC50YXJnZXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgJ0Fzc2VydGlvbkVycm9yOiBFeHBlY3RlZCBpMThuQXR0cmlidXRlcyB0YXJnZXQgZWxlbWVudCB0byBtYXRjaCBiaW5kaW5nIHRhcmdldCBlbGVtZW50JyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgb3BzOiBpci5VcGRhdGVPcFtdID0gW107XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcC5leHByZXNzaW9uLmV4cHJlc3Npb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBleHByID0gb3AuZXhwcmVzc2lvbi5leHByZXNzaW9uc1tpXTtcblxuICAgICAgICAgICAgaWYgKG9wLmV4cHJlc3Npb24uaTE4blBsYWNlaG9sZGVycy5sZW5ndGggIT09IG9wLmV4cHJlc3Npb24uZXhwcmVzc2lvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgQXNzZXJ0aW9uRXJyb3I6IEFuIGkxOG4gYXR0cmlidXRlIGJpbmRpbmcgaW5zdHJ1Y3Rpb24gcmVxdWlyZXMgdGhlIHNhbWUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGFuZCBwbGFjZWhvbGRlcnMsIGJ1dCBmb3VuZCAke29wLmV4cHJlc3Npb24uaTE4blBsYWNlaG9sZGVycy5sZW5ndGh9IHBsYWNlaG9sZGVycyBhbmQgJHtvcC5leHByZXNzaW9uLmV4cHJlc3Npb25zLmxlbmd0aH0gZXhwcmVzc2lvbnNgLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHMucHVzaChcbiAgICAgICAgICAgICAgaXIuY3JlYXRlSTE4bkV4cHJlc3Npb25PcChcbiAgICAgICAgICAgICAgICBvcC5pMThuQ29udGV4dCxcbiAgICAgICAgICAgICAgICBpMThuQXR0cmlidXRlc0ZvckVsZW0udGFyZ2V0LFxuICAgICAgICAgICAgICAgIGkxOG5BdHRyaWJ1dGVzRm9yRWxlbS54cmVmLFxuICAgICAgICAgICAgICAgIGkxOG5BdHRyaWJ1dGVzRm9yRWxlbS5oYW5kbGUsXG4gICAgICAgICAgICAgICAgZXhwcixcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIG9wLmV4cHJlc3Npb24uaTE4blBsYWNlaG9sZGVyc1tpXSxcbiAgICAgICAgICAgICAgICBpci5JMThuUGFyYW1SZXNvbHV0aW9uVGltZS5DcmVhdGlvbixcbiAgICAgICAgICAgICAgICBpci5JMThuRXhwcmVzc2lvbkZvci5JMThuQXR0cmlidXRlLFxuICAgICAgICAgICAgICAgIG9wLm5hbWUsXG4gICAgICAgICAgICAgICAgb3Auc291cmNlU3BhbixcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlyLk9wTGlzdC5yZXBsYWNlV2l0aE1hbnkob3AgYXMgaXIuVXBkYXRlT3AsIG9wcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -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
- import * as ir from '../../ir';
9
- /**
10
- * Create one helper context op per i18n block (including generate descending blocks).
11
- *
12
- * Also, if an ICU exists inside an i18n block that also contains other localizable content (such as
13
- * string), create an additional helper context op for the ICU.
14
- *
15
- * These context ops are later used for generating i18n messages. (Although we generate at least one
16
- * context op per nested view, we will collect them up the tree later, to generate a top-level
17
- * message.)
18
- */
19
- export function createI18nContexts(job) {
20
- // Create i18n context ops for i18n attrs.
21
- const attrContextByMessage = new Map();
22
- for (const unit of job.units) {
23
- for (const op of unit.ops()) {
24
- switch (op.kind) {
25
- case ir.OpKind.Binding:
26
- case ir.OpKind.Property:
27
- case ir.OpKind.Attribute:
28
- case ir.OpKind.ExtractedAttribute:
29
- if (op.i18nMessage === null) {
30
- continue;
31
- }
32
- if (!attrContextByMessage.has(op.i18nMessage)) {
33
- const i18nContext = ir.createI18nContextOp(ir.I18nContextKind.Attr, job.allocateXrefId(), null, op.i18nMessage, null);
34
- unit.create.push(i18nContext);
35
- attrContextByMessage.set(op.i18nMessage, i18nContext.xref);
36
- }
37
- op.i18nContext = attrContextByMessage.get(op.i18nMessage);
38
- break;
39
- }
40
- }
41
- }
42
- // Create i18n context ops for root i18n blocks.
43
- const blockContextByI18nBlock = new Map();
44
- for (const unit of job.units) {
45
- for (const op of unit.create) {
46
- switch (op.kind) {
47
- case ir.OpKind.I18nStart:
48
- if (op.xref === op.root) {
49
- const contextOp = ir.createI18nContextOp(ir.I18nContextKind.RootI18n, job.allocateXrefId(), op.xref, op.message, null);
50
- unit.create.push(contextOp);
51
- op.context = contextOp.xref;
52
- blockContextByI18nBlock.set(op.xref, contextOp);
53
- }
54
- break;
55
- }
56
- }
57
- }
58
- // Assign i18n contexts for child i18n blocks. These don't need their own conext, instead they
59
- // should inherit from their root i18n block.
60
- for (const unit of job.units) {
61
- for (const op of unit.create) {
62
- if (op.kind === ir.OpKind.I18nStart && op.xref !== op.root) {
63
- const rootContext = blockContextByI18nBlock.get(op.root);
64
- if (rootContext === undefined) {
65
- throw Error('AssertionError: Root i18n block i18n context should have been created.');
66
- }
67
- op.context = rootContext.xref;
68
- blockContextByI18nBlock.set(op.xref, rootContext);
69
- }
70
- }
71
- }
72
- // Create or assign i18n contexts for ICUs.
73
- let currentI18nOp = null;
74
- for (const unit of job.units) {
75
- for (const op of unit.create) {
76
- switch (op.kind) {
77
- case ir.OpKind.I18nStart:
78
- currentI18nOp = op;
79
- break;
80
- case ir.OpKind.I18nEnd:
81
- currentI18nOp = null;
82
- break;
83
- case ir.OpKind.IcuStart:
84
- if (currentI18nOp === null) {
85
- throw Error('AssertionError: Unexpected ICU outside of an i18n block.');
86
- }
87
- if (op.message.id !== currentI18nOp.message.id) {
88
- // This ICU is a sub-message inside its parent i18n block message. We need to give it
89
- // its own context.
90
- const contextOp = ir.createI18nContextOp(ir.I18nContextKind.Icu, job.allocateXrefId(), currentI18nOp.root, op.message, null);
91
- unit.create.push(contextOp);
92
- op.context = contextOp.xref;
93
- }
94
- else {
95
- // This ICU is the only translatable content in its parent i18n block. We need to
96
- // convert the parent's context into an ICU context.
97
- op.context = currentI18nOp.context;
98
- blockContextByI18nBlock.get(currentI18nOp.xref).contextKind = ir.I18nContextKind.Icu;
99
- }
100
- break;
101
- }
102
- }
103
- }
104
- }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2kxOG5fY29udGV4dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9jcmVhdGVfaTE4bl9jb250ZXh0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFHSCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUcvQjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBbUI7SUFDcEQsMENBQTBDO0lBQzFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7SUFDaEUsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUM1QixRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDdkIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDeEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDekIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLGtCQUFrQjtvQkFDL0IsSUFBSSxFQUFFLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUM1QixTQUFTO29CQUNYLENBQUM7b0JBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQzt3QkFDOUMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUN4QyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksRUFDdkIsR0FBRyxDQUFDLGNBQWMs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YUFBYSxHQUFHLElBQUksQ0FBQztvQkFDckIsTUFBTTtnQkFDUixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtvQkFDckIsSUFBSSxhQUFhLEtBQUssSUFBSSxFQUFFLENBQUM7d0JBQzNCLE1BQU0sS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7b0JBQzFFLENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUMvQyxxRkFBcUY7d0JBQ3JGLG1CQUFtQjt3QkFDbkIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUN0QyxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFDdEIsR0FBRyxDQUFDLGNBQWMsRUFBRSxFQUNwQixhQUFhLENBQUMsSUFBSSxFQUNsQixFQUFFLENBQUMsT0FBTyxFQUNWLElBQUssQ0FDTixDQUFDO3dCQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUM1QixFQUFFLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQzlCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixpRkFBaUY7d0JBQ2pGLG9EQUFvRDt3QkFDcEQsRUFBRSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDO3dCQUNuQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBRSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztvQkFDeEYsQ0FBQztvQkFDRCxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpMThuIGZyb20gJy4uLy4uLy4uLy4uL2kxOG4vaTE4bl9hc3QnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHtDb21waWxhdGlvbkpvYn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIENyZWF0ZSBvbmUgaGVscGVyIGNvbnRleHQgb3AgcGVyIGkxOG4gYmxvY2sgKGluY2x1ZGluZyBnZW5lcmF0ZSBkZXNjZW5kaW5nIGJsb2NrcykuXG4gKlxuICogQWxzbywgaWYgYW4gSUNVIGV4aXN0cyBpbnNpZGUgYW4gaTE4biBibG9jayB0aGF0IGFsc28gY29udGFpbnMgb3RoZXIgbG9jYWxpemFibGUgY29udGVudCAoc3VjaCBhc1xuICogc3RyaW5nKSwgY3JlYXRlIGFuIGFkZGl0aW9uYWwgaGVscGVyIGNvbnRleHQgb3AgZm9yIHRoZSBJQ1UuXG4gKlxuICogVGhlc2UgY29udGV4dCBvcHMgYXJlIGxhdGVyIHVzZWQgZm9yIGdlbmVyYXRpbmcgaTE4biBtZXNzYWdlcy4gKEFsdGhvdWdoIHdlIGdlbmVyYXRlIGF0IGxlYXN0IG9uZVxuICogY29udGV4dCBvcCBwZXIgbmVzdGVkIHZpZXcsIHdlIHdpbGwgY29sbGVjdCB0aGVtIHVwIHRoZSB0cmVlIGxhdGVyLCB0byBnZW5lcmF0ZSBhIHRvcC1sZXZlbFxuICogbWVzc2FnZS4pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuQ29udGV4dHMoam9iOiBDb21waWxhdGlvbkpvYikge1xuICAvLyBDcmVhdGUgaTE4biBjb250ZXh0IG9wcyBmb3IgaTE4biBhdHRycy5cbiAgY29uc3QgYXR0ckNvbnRleHRCeU1lc3NhZ2UgPSBuZXcgTWFwPGkxOG4uTWVzc2FnZSwgaXIuWHJlZklkPigpO1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0Lm9wcygpKSB7XG4gICAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuQmluZGluZzpcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuUHJvcGVydHk6XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkF0dHJpYnV0ZTpcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuRXh0cmFjdGVkQXR0cmlidXRlOlxuICAgICAgICAgIGlmIChvcC5pMThuTWVzc2FnZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghYXR0ckNvbnRleHRCeU1lc3NhZ2UuaGFzKG9wLmkxOG5NZXNzYWdlKSkge1xuICAgICAgICAgICAgY29uc3QgaTE4bkNvbnRleHQgPSBpci5jcmVhdGVJMThuQ29udGV4dE9wKFxuICAgICAgICAgICAgICBpci5JMThuQ29udGV4dEtpbmQuQXR0cixcbiAgICAgICAgICAgICAgam9iLmFsbG9jYXRlWHJlZklkKCksXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIG9wLmkxOG5NZXNzYWdlLFxuICAgICAgICAgICAgICBudWxsISxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB1bml0LmNyZWF0ZS5wdXNoKGkxOG5Db250ZXh0KTtcbiAgICAgICAgICAgIGF0dHJDb250ZXh0QnlNZXNzYWdlLnNldChvcC5pMThuTWVzc2FnZSwgaTE4bkNvbnRleHQueHJlZik7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wLmkxOG5Db250ZXh0ID0gYXR0ckNvbnRleHRCeU1lc3NhZ2UuZ2V0KG9wLmkxOG5NZXNzYWdlKSE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ3JlYXRlIGkxOG4gY29udGV4dCBvcHMgZm9yIHJvb3QgaTE4biBibG9ja3MuXG4gIGNvbnN0IGJsb2NrQ29udGV4dEJ5STE4bkJsb2NrID0gbmV3IE1hcDxpci5YcmVmSWQsIGlyLkkxOG5Db250ZXh0T3A+KCk7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQuY3JlYXRlKSB7XG4gICAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuSTE4blN0YXJ0OlxuICAgICAgICAgIGlmIChvcC54cmVmID09PSBvcC5yb290KSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0T3AgPSBpci5jcmVhdGVJMThuQ29udGV4dE9wKFxuICAgICAgICAgICAgICBpci5JMThuQ29udGV4dEtpbmQuUm9vdEkxOG4sXG4gICAgICAgICAgICAgIGpvYi5hbGxvY2F0ZVhyZWZJZCgpLFxuICAgICAgICAgICAgICBvcC54cmVmLFxuICAgICAgICAgICAgICBvcC5tZXNzYWdlLFxuICAgICAgICAgICAgICBudWxsISxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB1bml0LmNyZWF0ZS5wdXNoKGNvbnRleHRPcCk7XG4gICAgICAgICAgICBvcC5jb250ZXh0ID0gY29udGV4dE9wLnhyZWY7XG4gICAgICAgICAgICBibG9ja0NvbnRleHRCeUkxOG5CbG9jay5zZXQob3AueHJlZiwgY29udGV4dE9wKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQXNzaWduIGkxOG4gY29udGV4dHMgZm9yIGNoaWxkIGkxOG4gYmxvY2tzLiBUaGVzZSBkb24ndCBuZWVkIHRoZWlyIG93biBjb25leHQsIGluc3RlYWQgdGhleVxuICAvLyBzaG91bGQgaW5oZXJpdCBmcm9tIHRoZWlyIHJvb3QgaTE4biBibG9jay5cbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC5jcmVhdGUpIHtcbiAgICAgIGlmIChvcC5raW5kID09PSBpci5PcEtpbmQuSTE4blN0YXJ0ICYmIG9wLnhyZWYgIT09IG9wLnJvb3QpIHtcbiAgICAgICAgY29uc3Qgcm9vdENvbnRleHQgPSBibG9ja0NvbnRleHRCeUkxOG5CbG9jay5nZXQob3Aucm9vdCk7XG4gICAgICAgIGlmIChyb290Q29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoJ0Fzc2VydGlvbkVycm9yOiBSb290IGkxOG4gYmxvY2sgaTE4biBjb250ZXh0IHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICBvcC5jb250ZXh0ID0gcm9vdENvbnRleHQueHJlZjtcbiAgICAgICAgYmxvY2tDb250ZXh0QnlJMThuQmxvY2suc2V0KG9wLnhyZWYsIHJvb3RDb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDcmVhdGUgb3IgYXNzaWduIGkxOG4gY29udGV4dHMgZm9yIElDVXMuXG4gIGxldCBjdXJyZW50STE4bk9wOiBpci5JMThuU3RhcnRPcCB8IG51bGwgPSBudWxsO1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkkxOG5TdGFydDpcbiAgICAgICAgICBjdXJyZW50STE4bk9wID0gb3A7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkkxOG5FbmQ6XG4gICAgICAgICAgY3VycmVudEkxOG5PcCA9IG51bGw7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkljdVN0YXJ0OlxuICAgICAgICAgIGlmIChjdXJyZW50STE4bk9wID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQXNzZXJ0aW9uRXJyb3I6IFVuZXhwZWN0ZWQgSUNVIG91dHNpZGUgb2YgYW4gaTE4biBibG9jay4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wLm1lc3NhZ2UuaWQgIT09IGN1cnJlbnRJMThuT3AubWVzc2FnZS5pZCkge1xuICAgICAgICAgICAgLy8gVGhpcyBJQ1UgaXMgYSBzdWItbWVzc2FnZSBpbnNpZGUgaXRzIHBhcmVudCBpMThuIGJsb2NrIG1lc3NhZ2UuIFdlIG5lZWQgdG8gZ2l2ZSBpdFxuICAgICAgICAgICAgLy8gaXRzIG93biBjb250ZXh0LlxuICAgICAgICAgICAgY29uc3QgY29udGV4dE9wID0gaXIuY3JlYXRlSTE4bkNvbnRleHRPcChcbiAgICAgICAgICAgICAgaXIuSTE4bkNvbnRleHRLaW5kLkljdSxcbiAgICAgICAgICAgICAgam9iLmFsbG9jYXRlWHJlZklkKCksXG4gICAgICAgICAgICAgIGN1cnJlbnRJMThuT3Aucm9vdCxcbiAgICAgICAgICAgICAgb3AubWVzc2FnZSxcbiAgICAgICAgICAgICAgbnVsbCEsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdW5pdC5jcmVhdGUucHVzaChjb250ZXh0T3ApO1xuICAgICAgICAgICAgb3AuY29udGV4dCA9IGNvbnRleHRPcC54cmVmO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGlzIElDVSBpcyB0aGUgb25seSB0cmFuc2xhdGFibGUgY29udGVudCBpbiBpdHMgcGFyZW50IGkxOG4gYmxvY2suIFdlIG5lZWQgdG9cbiAgICAgICAgICAgIC8vIGNvbnZlcnQgdGhlIHBhcmVudCdzIGNvbnRleHQgaW50byBhbiBJQ1UgY29udGV4dC5cbiAgICAgICAgICAgIG9wLmNvbnRleHQgPSBjdXJyZW50STE4bk9wLmNvbnRleHQ7XG4gICAgICAgICAgICBibG9ja0NvbnRleHRCeUkxOG5CbG9jay5nZXQoY3VycmVudEkxOG5PcC54cmVmKSEuY29udGV4dEtpbmQgPSBpci5JMThuQ29udGV4dEtpbmQuSWN1O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,40 +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 ir from '../../ir';
9
- /**
10
- * Deduplicate text bindings, e.g. <div class="cls1" class="cls2">
11
- */
12
- export function deduplicateTextBindings(job) {
13
- const seen = new Map();
14
- for (const unit of job.units) {
15
- for (const op of unit.update.reversed()) {
16
- if (op.kind === ir.OpKind.Binding && op.isTextAttribute) {
17
- const seenForElement = seen.get(op.target) || new Set();
18
- if (seenForElement.has(op.name)) {
19
- if (job.compatibility === ir.CompatibilityMode.TemplateDefinitionBuilder) {
20
- // For most duplicated attributes, TemplateDefinitionBuilder lists all of the values in
21
- // the consts array. However, for style and class attributes it only keeps the last one.
22
- // We replicate that behavior here since it has actual consequences for apps with
23
- // duplicate class or style attrs.
24
- if (op.name === 'style' || op.name === 'class') {
25
- ir.OpList.remove(op);
26
- }
27
- }
28
- else {
29
- // TODO: Determine the correct behavior. It would probably make sense to merge multiple
30
- // style and class attributes. Alternatively we could just throw an error, as HTML
31
- // doesn't permit duplicate attributes.
32
- }
33
- }
34
- seenForElement.add(op.name);
35
- seen.set(op.target, seenForElement);
36
- }
37
- }
38
- }
39
- }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVkdXBsaWNhdGVfdGV4dF9iaW5kaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL2RlZHVwbGljYXRlX3RleHRfYmluZGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsR0FBbUI7SUFDekQsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7SUFDL0MsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDeEMsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNoQyxJQUFJLEdBQUcsQ0FBQyxhQUFhLEtBQUssRUFBRSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixFQUFFLENBQUM7d0JBQ3pFLHVGQUF1Rjt3QkFDdkYsd0ZBQXdGO3dCQUN4RixpRkFBaUY7d0JBQ2pGLGtDQUFrQzt3QkFDbEMsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDOzRCQUMvQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBYyxFQUFFLENBQUMsQ0FBQzt3QkFDcEMsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sdUZBQXVGO3dCQUN2RixrRkFBa0Y7d0JBQ2xGLHVDQUF1QztvQkFDekMsQ0FBQztnQkFDSCxDQUFDO2dCQUNELGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQgdHlwZSB7Q29tcGlsYXRpb25Kb2J9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcblxuLyoqXG4gKiBEZWR1cGxpY2F0ZSB0ZXh0IGJpbmRpbmdzLCBlLmcuIDxkaXYgY2xhc3M9XCJjbHMxXCIgY2xhc3M9XCJjbHMyXCI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWR1cGxpY2F0ZVRleHRCaW5kaW5ncyhqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIGNvbnN0IHNlZW4gPSBuZXcgTWFwPGlyLlhyZWZJZCwgU2V0PHN0cmluZz4+KCk7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQudXBkYXRlLnJldmVyc2VkKCkpIHtcbiAgICAgIGlmIChvcC5raW5kID09PSBpci5PcEtpbmQuQmluZGluZyAmJiBvcC5pc1RleHRBdHRyaWJ1dGUpIHtcbiAgICAgICAgY29uc3Qgc2VlbkZvckVsZW1lbnQgPSBzZWVuLmdldChvcC50YXJnZXQpIHx8IG5ldyBTZXQoKTtcbiAgICAgICAgaWYgKHNlZW5Gb3JFbGVtZW50LmhhcyhvcC5uYW1lKSkge1xuICAgICAgICAgIGlmIChqb2IuY29tcGF0aWJpbGl0eSA9PT0gaXIuQ29tcGF0aWJpbGl0eU1vZGUuVGVtcGxhdGVEZWZpbml0aW9uQnVpbGRlcikge1xuICAgICAgICAgICAgLy8gRm9yIG1vc3QgZHVwbGljYXRlZCBhdHRyaWJ1dGVzLCBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyIGxpc3RzIGFsbCBvZiB0aGUgdmFsdWVzIGluXG4gICAgICAgICAgICAvLyB0aGUgY29uc3RzIGFycmF5LiBIb3dldmVyLCBmb3Igc3R5bGUgYW5kIGNsYXNzIGF0dHJpYnV0ZXMgaXQgb25seSBrZWVwcyB0aGUgbGFzdCBvbmUuXG4gICAgICAgICAgICAvLyBXZSByZXBsaWNhdGUgdGhhdCBiZWhhdmlvciBoZXJlIHNpbmNlIGl0IGhhcyBhY3R1YWwgY29uc2VxdWVuY2VzIGZvciBhcHBzIHdpdGhcbiAgICAgICAgICAgIC8vIGR1cGxpY2F0ZSBjbGFzcyBvciBzdHlsZSBhdHRycy5cbiAgICAgICAgICAgIGlmIChvcC5uYW1lID09PSAnc3R5bGUnIHx8IG9wLm5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgICAgaXIuT3BMaXN0LnJlbW92ZTxpci5VcGRhdGVPcD4ob3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBEZXRlcm1pbmUgdGhlIGNvcnJlY3QgYmVoYXZpb3IuIEl0IHdvdWxkIHByb2JhYmx5IG1ha2Ugc2Vuc2UgdG8gbWVyZ2UgbXVsdGlwbGVcbiAgICAgICAgICAgIC8vIHN0eWxlIGFuZCBjbGFzcyBhdHRyaWJ1dGVzLiBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxkIGp1c3QgdGhyb3cgYW4gZXJyb3IsIGFzIEhUTUxcbiAgICAgICAgICAgIC8vIGRvZXNuJ3QgcGVybWl0IGR1cGxpY2F0ZSBhdHRyaWJ1dGVzLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZWVuRm9yRWxlbWVudC5hZGQob3AubmFtZSk7XG4gICAgICAgIHNlZW4uc2V0KG9wLnRhcmdldCwgc2VlbkZvckVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -1,29 +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 ir from '../../ir';
9
- import { literalOrArrayLiteral } from '../conversion';
10
- /**
11
- * Defer instructions take a configuration array, which should be collected into the component
12
- * consts. This phase finds the config options, and creates the corresponding const array.
13
- */
14
- export function configureDeferInstructions(job) {
15
- for (const unit of job.units) {
16
- for (const op of unit.create) {
17
- if (op.kind !== ir.OpKind.Defer) {
18
- continue;
19
- }
20
- if (op.placeholderMinimumTime !== null) {
21
- op.placeholderConfig = new ir.ConstCollectedExpr(literalOrArrayLiteral([op.placeholderMinimumTime]));
22
- }
23
- if (op.loadingMinimumTime !== null || op.loadingAfterTime !== null) {
24
- op.loadingConfig = new ir.ConstCollectedExpr(literalOrArrayLiteral([op.loadingMinimumTime, op.loadingAfterTime]));
25
- }
26
- }
27
- }
28
- }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmZXJfY29uZmlncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL2RlZmVyX2NvbmZpZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFL0IsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXBEOzs7R0FHRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxHQUE0QjtJQUNyRSxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDaEMsU0FBUztZQUNYLENBQUM7WUFFRCxJQUFJLEVBQUUsQ0FBQyxzQkFBc0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsRUFBRSxDQUFDLGlCQUFpQixHQUFHLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUM5QyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQ25ELENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxFQUFFLENBQUMsa0JBQWtCLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbkUsRUFBRSxDQUFDLGFBQWEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FDMUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FDcEUsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHR5cGUge0NvbXBvbmVudENvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5pbXBvcnQge2xpdGVyYWxPckFycmF5TGl0ZXJhbH0gZnJvbSAnLi4vY29udmVyc2lvbic7XG5cbi8qKlxuICogRGVmZXIgaW5zdHJ1Y3Rpb25zIHRha2UgYSBjb25maWd1cmF0aW9uIGFycmF5LCB3aGljaCBzaG91bGQgYmUgY29sbGVjdGVkIGludG8gdGhlIGNvbXBvbmVudFxuICogY29uc3RzLiBUaGlzIHBoYXNlIGZpbmRzIHRoZSBjb25maWcgb3B0aW9ucywgYW5kIGNyZWF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgY29uc3QgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVEZWZlckluc3RydWN0aW9ucyhqb2I6IENvbXBvbmVudENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQuY3JlYXRlKSB7XG4gICAgICBpZiAob3Aua2luZCAhPT0gaXIuT3BLaW5kLkRlZmVyKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAob3AucGxhY2Vob2xkZXJNaW5pbXVtVGltZSAhPT0gbnVsbCkge1xuICAgICAgICBvcC5wbGFjZWhvbGRlckNvbmZpZyA9IG5ldyBpci5Db25zdENvbGxlY3RlZEV4cHIoXG4gICAgICAgICAgbGl0ZXJhbE9yQXJyYXlMaXRlcmFsKFtvcC5wbGFjZWhvbGRlck1pbmltdW1UaW1lXSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAob3AubG9hZGluZ01pbmltdW1UaW1lICE9PSBudWxsIHx8IG9wLmxvYWRpbmdBZnRlclRpbWUgIT09IG51bGwpIHtcbiAgICAgICAgb3AubG9hZGluZ0NvbmZpZyA9IG5ldyBpci5Db25zdENvbGxlY3RlZEV4cHIoXG4gICAgICAgICAgbGl0ZXJhbE9yQXJyYXlMaXRlcmFsKFtvcC5sb2FkaW5nTWluaW11bVRpbWUsIG9wLmxvYWRpbmdBZnRlclRpbWVdKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==