@angular/core 10.0.6 → 10.0.10

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 (58) hide show
  1. package/bundles/core-testing.umd.js +1 -1
  2. package/bundles/core-testing.umd.min.js +1 -1
  3. package/bundles/core-testing.umd.min.js.map +1 -1
  4. package/bundles/core.umd.js +1678 -1387
  5. package/bundles/core.umd.js.map +1 -1
  6. package/bundles/core.umd.min.js +152 -124
  7. package/bundles/core.umd.min.js.map +1 -1
  8. package/core.d.ts +258 -58
  9. package/core.metadata.json +1 -1
  10. package/esm2015/core.js +3 -3
  11. package/esm2015/src/application_module.js +2 -2
  12. package/esm2015/src/application_ref.js +2 -2
  13. package/esm2015/src/core_render3_private_export.js +2 -1
  14. package/esm2015/src/metadata/di.js +1 -1
  15. package/esm2015/src/r3_symbols.js +2 -1
  16. package/esm2015/src/reflection/reflection_capabilities.js +38 -8
  17. package/esm2015/src/render3/bindings.js +3 -3
  18. package/esm2015/src/render3/component.js +3 -3
  19. package/esm2015/src/render3/di.js +1 -1
  20. package/esm2015/src/render3/i18n/i18n_apply.js +445 -0
  21. package/esm2015/src/render3/i18n/i18n_debug.js +170 -0
  22. package/esm2015/src/render3/i18n/i18n_locale_id.js +37 -0
  23. package/esm2015/src/render3/i18n/i18n_parse.js +635 -0
  24. package/esm2015/src/render3/i18n/i18n_postprocess.js +121 -0
  25. package/esm2015/src/render3/index.js +3 -2
  26. package/esm2015/src/render3/instructions/advance.js +3 -3
  27. package/esm2015/src/render3/instructions/element.js +3 -3
  28. package/esm2015/src/render3/instructions/element_container.js +3 -3
  29. package/esm2015/src/render3/instructions/i18n.js +164 -0
  30. package/esm2015/src/render3/instructions/listener.js +3 -3
  31. package/esm2015/src/render3/instructions/lview_debug.js +54 -213
  32. package/esm2015/src/render3/instructions/shared.js +54 -38
  33. package/esm2015/src/render3/instructions/text.js +3 -3
  34. package/esm2015/src/render3/interfaces/i18n.js +12 -3
  35. package/esm2015/src/render3/interfaces/node.js +13 -1
  36. package/esm2015/src/render3/interfaces/view.js +1 -1
  37. package/esm2015/src/render3/jit/directive.js +33 -10
  38. package/esm2015/src/render3/ng_module_ref.js +2 -2
  39. package/esm2015/src/render3/node_manipulation.js +1 -11
  40. package/esm2015/src/render3/pure_function.js +3 -3
  41. package/esm2015/src/render3/query.js +14 -12
  42. package/esm2015/src/render3/styling/style_binding_list.js +3 -3
  43. package/esm2015/src/render3/styling/styling_parser.js +3 -2
  44. package/esm2015/src/render3/util/debug_utils.js +31 -2
  45. package/esm2015/src/render3/util/discovery_utils.js +1 -1
  46. package/esm2015/src/render3/util/view_utils.js +5 -5
  47. package/esm2015/src/render3/view_engine_compatibility.js +13 -4
  48. package/esm2015/src/util/assert.js +2 -2
  49. package/esm2015/src/util/char_code.js +1 -1
  50. package/esm2015/src/version.js +1 -1
  51. package/fesm2015/core.js +1652 -1364
  52. package/fesm2015/core.js.map +1 -1
  53. package/fesm2015/testing.js +1 -1
  54. package/package.json +1 -1
  55. package/src/r3_symbols.d.ts +13 -1
  56. package/testing/testing.d.ts +1 -1
  57. package/testing.d.ts +1 -1
  58. package/esm2015/src/render3/i18n.js +0 -1225
package/core.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v10.0.6
2
+ * @license Angular v10.0.10
3
3
  * (c) 2010-2020 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -693,7 +693,7 @@ export declare interface CollectionChangeRecord<V> extends IterableChangeRecord<
693
693
  }
694
694
 
695
695
  /**
696
- * Marks that the next string is for comment.
696
+ * Marks that the next string is comment text.
697
697
  *
698
698
  * See `I18nMutateOpCodes` documentation.
699
699
  */
@@ -1595,6 +1595,29 @@ export declare const DebugNode: {
1595
1595
  new (...args: any[]): DebugNode;
1596
1596
  };
1597
1597
 
1598
+ /**
1599
+ * A logical node which comprise into `LView`s.
1600
+ *
1601
+ */
1602
+ declare interface DebugNode_2 {
1603
+ /**
1604
+ * HTML representation of the node.
1605
+ */
1606
+ html: string | null;
1607
+ /**
1608
+ * Human readable node type.
1609
+ */
1610
+ type: typeof TNodeTypeAsString[number];
1611
+ /**
1612
+ * DOM native node.
1613
+ */
1614
+ native: Node;
1615
+ /**
1616
+ * Child nodes
1617
+ */
1618
+ children: DebugNode_2[];
1619
+ }
1620
+
1598
1621
  declare class DebugNode__POST_R3__ implements DebugNode {
1599
1622
  readonly nativeNode: Node;
1600
1623
  constructor(nativeNode: Node);
@@ -2116,7 +2139,7 @@ export declare interface DoCheck {
2116
2139
  }
2117
2140
 
2118
2141
  /**
2119
- * Marks that the next string is for element.
2142
+ * Marks that the next string is an element name.
2120
2143
  *
2121
2144
  * See `I18nMutateOpCodes` documentation.
2122
2145
  */
@@ -2794,6 +2817,17 @@ export declare interface HostListenerDecorator {
2794
2817
  new (eventName: string, args?: string[]): any;
2795
2818
  }
2796
2819
 
2820
+ declare interface I18nDebug {
2821
+ /**
2822
+ * Human readable representation of the OpCode arrays.
2823
+ *
2824
+ * NOTE: This property only exists if `ngDevMode` is set to `true` and it is not present in
2825
+ * production. Its presence is purely to help debug issue in development, and should not be relied
2826
+ * on in production application.
2827
+ */
2828
+ debug?: string[];
2829
+ }
2830
+
2797
2831
  /**
2798
2832
  * Array storing OpCode for dynamically creating `i18n` blocks.
2799
2833
  *
@@ -2803,50 +2837,27 @@ export declare interface HostListenerDecorator {
2803
2837
  * // For adding text nodes
2804
2838
  * // ---------------------
2805
2839
  * // Equivalent to:
2806
- * // const node = lView[index++] = document.createTextNode('abc');
2807
- * // lView[1].insertBefore(node, lView[2]);
2808
- * 'abc', 1 << SHIFT_PARENT | 2 << SHIFT_REF | InsertBefore,
2809
- *
2810
- * // Equivalent to:
2811
- * // const node = lView[index++] = document.createTextNode('xyz');
2812
- * // lView[1].appendChild(node);
2813
- * 'xyz', 1 << SHIFT_PARENT | AppendChild,
2840
+ * // lView[1].appendChild(lView[0] = document.createTextNode('xyz'));
2841
+ * 'xyz', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
2814
2842
  *
2815
2843
  * // For adding element nodes
2816
2844
  * // ---------------------
2817
2845
  * // Equivalent to:
2818
- * // const node = lView[index++] = document.createElement('div');
2819
- * // lView[1].insertBefore(node, lView[2]);
2820
- * ELEMENT_MARKER, 'div', 1 << SHIFT_PARENT | 2 << SHIFT_REF | InsertBefore,
2821
- *
2822
- * // Equivalent to:
2823
- * // const node = lView[index++] = document.createElement('div');
2824
- * // lView[1].appendChild(node);
2825
- * ELEMENT_MARKER, 'div', 1 << SHIFT_PARENT | AppendChild,
2846
+ * // lView[1].appendChild(lView[0] = document.createElement('div'));
2847
+ * ELEMENT_MARKER, 'div', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
2826
2848
  *
2827
2849
  * // For adding comment nodes
2828
2850
  * // ---------------------
2829
2851
  * // Equivalent to:
2830
- * // const node = lView[index++] = document.createComment('');
2831
- * // lView[1].insertBefore(node, lView[2]);
2832
- * COMMENT_MARKER, '', 1 << SHIFT_PARENT | 2 << SHIFT_REF | InsertBefore,
2833
- *
2834
- * // Equivalent to:
2835
- * // const node = lView[index++] = document.createComment('');
2836
- * // lView[1].appendChild(node);
2837
- * COMMENT_MARKER, '', 1 << SHIFT_PARENT | AppendChild,
2852
+ * // lView[1].appendChild(lView[0] = document.createComment(''));
2853
+ * COMMENT_MARKER, '', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
2838
2854
  *
2839
2855
  * // For moving existing nodes to a different location
2840
2856
  * // --------------------------------------------------
2841
2857
  * // Equivalent to:
2842
2858
  * // const node = lView[1];
2843
- * // lView[2].insertBefore(node, lView[3]);
2844
- * 1 << SHIFT_REF | Select, 2 << SHIFT_PARENT | 3 << SHIFT_REF | InsertBefore,
2845
- *
2846
- * // Equivalent to:
2847
- * // const node = lView[1];
2848
2859
  * // lView[2].appendChild(node);
2849
- * 1 << SHIFT_REF | Select, 2 << SHIFT_PARENT | AppendChild,
2860
+ * 1 << SHIFT_REF | Select, 2 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
2850
2861
  *
2851
2862
  * // For removing existing nodes
2852
2863
  * // --------------------------------------------------
@@ -2858,17 +2869,13 @@ export declare interface HostListenerDecorator {
2858
2869
  * // --------------------------------------------------
2859
2870
  * // const node = lView[1];
2860
2871
  * // node.setAttribute('attr', 'value');
2861
- * 1 << SHIFT_REF | Select, 'attr', 'value'
2862
- * // NOTE: Select followed by two string (vs select followed by OpCode)
2872
+ * 1 << SHIFT_REF | Attr, 'attr', 'value'
2863
2873
  * ];
2864
2874
  * ```
2865
- * NOTE:
2866
- * - `index` is initial location where the extra nodes should be stored in the EXPANDO section of
2867
- * `LVIewData`.
2868
2875
  *
2869
2876
  * See: `applyI18nCreateOpCodes`;
2870
2877
  */
2871
- declare interface I18nMutateOpCodes extends Array<number | string | ELEMENT_MARKER | COMMENT_MARKER | null> {
2878
+ declare interface I18nMutateOpCodes extends Array<number | string | ELEMENT_MARKER | COMMENT_MARKER | null>, I18nDebug {
2872
2879
  }
2873
2880
 
2874
2881
  /**
@@ -2880,6 +2887,10 @@ declare interface I18nMutateOpCodes extends Array<number | string | ELEMENT_MARK
2880
2887
  * higher.) The OpCodes then compare its own change mask against the expression change mask to
2881
2888
  * determine if the OpCodes should execute.
2882
2889
  *
2890
+ * NOTE: 32nd bit is special as it says 32nd or higher. This way if we have more than 32 bindings
2891
+ * the code still works, but with lower efficiency. (it is unlikely that a translation would have
2892
+ * more than 32 bindings.)
2893
+ *
2883
2894
  * These OpCodes can be used by both the i18n block as well as ICU sub-block.
2884
2895
  *
2885
2896
  * ## Example
@@ -2903,8 +2914,8 @@ declare interface I18nMutateOpCodes extends Array<number | string | ELEMENT_MARK
2903
2914
  * // The following OpCodes represent: `<div i18n-title="pre{{exp1}}in{{exp2}}post">`
2904
2915
  * // If `changeMask & 0b11`
2905
2916
  * // has changed then execute update OpCodes.
2906
- * // has NOT changed then skip `7` values and start processing next OpCodes.
2907
- * 0b11, 7,
2917
+ * // has NOT changed then skip `8` values and start processing next OpCodes.
2918
+ * 0b11, 8,
2908
2919
  * // Concatenate `newValue = 'pre'+lView[bindIndex-4]+'in'+lView[bindIndex-3]+'post';`.
2909
2920
  * 'pre', -4, 'in', -3, 'post',
2910
2921
  * // Update attribute: `elementAttribute(1, 'title', sanitizerFn(newValue));`
@@ -2923,8 +2934,8 @@ declare interface I18nMutateOpCodes extends Array<number | string | ELEMENT_MARK
2923
2934
  * // The following OpCodes represent: `<div i18n>{exp4, plural, ... }">`
2924
2935
  * // If `changeMask & 0b1000`
2925
2936
  * // has changed then execute update OpCodes.
2926
- * // has NOT changed then skip `4` values and start processing next OpCodes.
2927
- * 0b1000, 4,
2937
+ * // has NOT changed then skip `2` values and start processing next OpCodes.
2938
+ * 0b1000, 2,
2928
2939
  * // Concatenate `newValue = lView[bindIndex -1];`.
2929
2940
  * -1,
2930
2941
  * // Switch ICU: `icuSwitchCase(lView[1], 0, newValue);`
@@ -2939,7 +2950,7 @@ declare interface I18nMutateOpCodes extends Array<number | string | ELEMENT_MARK
2939
2950
  * ```
2940
2951
  *
2941
2952
  */
2942
- declare interface I18nUpdateOpCodes extends Array<string | number | SanitizerFn | null> {
2953
+ declare interface I18nUpdateOpCodes extends Array<string | number | SanitizerFn | null>, I18nDebug {
2943
2954
  }
2944
2955
 
2945
2956
  /**
@@ -3825,6 +3836,28 @@ declare interface LContainer extends Array<any> {
3825
3836
  [VIEW_REFS]: ViewRef[] | null;
3826
3837
  }
3827
3838
 
3839
+ /**
3840
+ * Human readable version of the `LContainer`
3841
+ *
3842
+ * `LContainer` is a data structure used internally to keep track of child views. The `LContainer`
3843
+ * is designed for efficiency and so at times it is difficult to read or write tests which assert on
3844
+ * its values. For this reason when `ngDevMode` is true we patch a `LContainer.debug` property which
3845
+ * points to `LContainerDebug` for easier debugging and test writing. It is the intent of
3846
+ * `LContainerDebug` to be used in tests.
3847
+ */
3848
+ declare interface LContainerDebug {
3849
+ readonly native: RComment;
3850
+ /**
3851
+ * Child `LView`s.
3852
+ */
3853
+ readonly views: LViewDebug[];
3854
+ readonly parent: LViewDebug | null;
3855
+ readonly movedViews: ɵangular_packages_core_core_bp[] | null;
3856
+ readonly host: RElement | RComment | ɵangular_packages_core_core_bp;
3857
+ readonly next: LViewDebug | LContainerDebug | null;
3858
+ readonly hasTransplantedViews: boolean;
3859
+ }
3860
+
3828
3861
  /**
3829
3862
  *
3830
3863
  */
@@ -4001,6 +4034,126 @@ declare interface LQuery<T> {
4001
4034
  setDirty(): void;
4002
4035
  }
4003
4036
 
4037
+ /**
4038
+ * Human readable version of the `LView`.
4039
+ *
4040
+ * `LView` is a data structure used internally to keep track of views. The `LView` is designed for
4041
+ * efficiency and so at times it is difficult to read or write tests which assert on its values. For
4042
+ * this reason when `ngDevMode` is true we patch a `LView.debug` property which points to
4043
+ * `LViewDebug` for easier debugging and test writing. It is the intent of `LViewDebug` to be used
4044
+ * in tests.
4045
+ */
4046
+ declare interface LViewDebug {
4047
+ /**
4048
+ * Flags associated with the `LView` unpacked into a more readable state.
4049
+ *
4050
+ * See `LViewFlags` for the flag meanings.
4051
+ */
4052
+ readonly flags: {
4053
+ initPhaseState: number;
4054
+ creationMode: boolean;
4055
+ firstViewPass: boolean;
4056
+ checkAlways: boolean;
4057
+ dirty: boolean;
4058
+ attached: boolean;
4059
+ destroyed: boolean;
4060
+ isRoot: boolean;
4061
+ indexWithinInitPhase: number;
4062
+ };
4063
+ /**
4064
+ * Parent view (or container)
4065
+ */
4066
+ readonly parent: LViewDebug | LContainerDebug | null;
4067
+ /**
4068
+ * Next sibling to the `LView`.
4069
+ */
4070
+ readonly next: LViewDebug | LContainerDebug | null;
4071
+ /**
4072
+ * The context used for evaluation of the `LView`
4073
+ *
4074
+ * (Usually the component)
4075
+ */
4076
+ readonly context: {} | null;
4077
+ /**
4078
+ * Hierarchical tree of nodes.
4079
+ */
4080
+ readonly nodes: DebugNode_2[];
4081
+ /**
4082
+ * HTML representation of the `LView`.
4083
+ *
4084
+ * This is only approximate to actual HTML as child `LView`s are removed.
4085
+ */
4086
+ readonly html: string;
4087
+ /**
4088
+ * The host element to which this `LView` is attached.
4089
+ */
4090
+ readonly hostHTML: string | null;
4091
+ /**
4092
+ * Child `LView`s
4093
+ */
4094
+ readonly childViews: Array<LViewDebug | LContainerDebug>;
4095
+ /**
4096
+ * Sub range of `LView` containing decls (DOM elements).
4097
+ */
4098
+ readonly decls: LViewDebugRange;
4099
+ /**
4100
+ * Sub range of `LView` containing vars (bindings).
4101
+ */
4102
+ readonly vars: LViewDebugRange;
4103
+ /**
4104
+ * Sub range of `LView` containing i18n (translated DOM elements).
4105
+ */
4106
+ readonly i18n: LViewDebugRange;
4107
+ /**
4108
+ * Sub range of `LView` containing expando (used by DI).
4109
+ */
4110
+ readonly expando: LViewDebugRange;
4111
+ }
4112
+
4113
+ /**
4114
+ * `LView` is subdivided to ranges where the actual data is stored. Some of these ranges such as
4115
+ * `decls` and `vars` are known at compile time. Other such as `i18n` and `expando` are runtime only
4116
+ * concepts.
4117
+ */
4118
+ declare interface LViewDebugRange {
4119
+ /**
4120
+ * The starting index in `LView` where the range begins. (Inclusive)
4121
+ */
4122
+ start: number;
4123
+ /**
4124
+ * The ending index in `LView` where the range ends. (Exclusive)
4125
+ */
4126
+ end: number;
4127
+ /**
4128
+ * The length of the range
4129
+ */
4130
+ length: number;
4131
+ /**
4132
+ * The merged content of the range. `t` contains data from `TView.data` and `l` contains `LView`
4133
+ * data at an index.
4134
+ */
4135
+ content: LViewDebugRangeContent[];
4136
+ }
4137
+
4138
+ /**
4139
+ * For convenience the static and instance portions of `TView` and `LView` are merged into a single
4140
+ * object in `LViewRange`.
4141
+ */
4142
+ declare interface LViewDebugRangeContent {
4143
+ /**
4144
+ * Index into original `LView` or `TView.data`.
4145
+ */
4146
+ index: number;
4147
+ /**
4148
+ * Value from the `TView.data[index]` location.
4149
+ */
4150
+ t: any;
4151
+ /**
4152
+ * Value from the `LView[index]` location.
4153
+ */
4154
+ l: any;
4155
+ }
4156
+
4004
4157
  /** Flags associated with an LView (saved in LView[FLAGS]) */
4005
4158
  declare const enum LViewFlags {
4006
4159
  /** The state of the init phase on the first 2 bits */
@@ -6729,6 +6882,13 @@ declare interface TIcu {
6729
6882
  * write into them.
6730
6883
  */
6731
6884
  vars: number[];
6885
+ /**
6886
+ * Currently selected ICU case pointer.
6887
+ *
6888
+ * `lView[currentCaseLViewIndex]` stores the currently selected case. This is needed to know how
6889
+ * to clean up the current case when transitioning no the new case.
6890
+ */
6891
+ currentCaseLViewIndex: number;
6732
6892
  /**
6733
6893
  * An optional array of child/sub ICUs.
6734
6894
  *
@@ -7198,6 +7358,12 @@ declare const enum TNodeType {
7198
7358
  IcuContainer = 5
7199
7359
  }
7200
7360
 
7361
+ /**
7362
+ * Converts `TNodeType` into human readable text.
7363
+ * Make sure this matches with `TNodeType`
7364
+ */
7365
+ declare const TNodeTypeAsString: readonly ["Container", "Projection", "View", "Element", "ElementContainer", "IcuContainer"];
7366
+
7201
7367
  /**
7202
7368
  * Type representing a set of TNodes that can have local refs (`#foo`) placed on them.
7203
7369
  */
@@ -7986,7 +8152,7 @@ export declare interface ViewChildDecorator {
7986
8152
  * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
7987
8153
  * with `@ViewChild('cmp')`)
7988
8154
  * * Any provider defined in the child component tree of the current component (e.g.
7989
- * `@ViewChild(SomeComponent) someComponent: SomeComponent`)
8155
+ * `@ViewChild(SomeService) someService: SomeService`)
7990
8156
  * * Any provider defined through a string token (e.g. `@ViewChild('someToken') someTokenVal:
7991
8157
  * any`)
7992
8158
  * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ViewChild(TemplateRef)
@@ -8738,6 +8904,14 @@ export declare function ɵangular_packages_core_core_bo<T>(objWithPropertyToExtr
8738
8904
  * don't have to edit the data array based on which views are present.
8739
8905
  */
8740
8906
  export declare interface ɵangular_packages_core_core_bp extends Array<any> {
8907
+ /**
8908
+ * Human readable representation of the `LView`.
8909
+ *
8910
+ * NOTE: This property only exists if `ngDevMode` is set to `true` and it is not present in
8911
+ * production. Its presence is purely to help debug issue in development, and should not be relied
8912
+ * on in production application.
8913
+ */
8914
+ debug?: LViewDebug;
8741
8915
  /**
8742
8916
  * The host node for this LView instance, if this is a component view.
8743
8917
  * If this is an embedded view, HOST will be null.
@@ -8941,18 +9115,6 @@ export declare interface ɵangular_packages_core_core_bp extends Array<any> {
8941
9115
  [TRANSPLANTED_VIEWS_TO_REFRESH]: number;
8942
9116
  }
8943
9117
 
8944
-
8945
- /**
8946
- * Convince closure compiler that the wrapped function has no side-effects.
8947
- *
8948
- * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to
8949
- * allow us to execute a function but have closure compiler mark the call as no-side-effects.
8950
- * It is important that the return value for the `noSideEffects` function be assigned
8951
- * to something which is retained otherwise the call to `noSideEffects` will be removed by closure
8952
- * compiler.
8953
- */
8954
- export declare function ɵangular_packages_core_core_bq<T>(fn: () => T): T;
8955
-
8956
9118
  /**
8957
9119
  * Returns the `RootContext` instance that is associated with
8958
9120
  * the application where the target is situated. It does this by walking the parent views until it
@@ -8960,7 +9122,32 @@ export declare function ɵangular_packages_core_core_bq<T>(fn: () => T): T;
8960
9122
  *
8961
9123
  * @param viewOrComponent the `LView` or component to get the root context for.
8962
9124
  */
8963
- export declare function ɵangular_packages_core_core_br(viewOrComponent: ɵangular_packages_core_core_bp | {}): RootContext;
9125
+ export declare function ɵangular_packages_core_core_bq(viewOrComponent: ɵangular_packages_core_core_bp | {}): RootContext;
9126
+
9127
+
9128
+ /**
9129
+ * Handles message string post-processing for internationalization.
9130
+ *
9131
+ * Handles message string post-processing by transforming it from intermediate
9132
+ * format (that might contain some markers that we need to replace) to the final
9133
+ * form, consumable by i18nStart instruction. Post processing steps include:
9134
+ *
9135
+ * 1. Resolve all multi-value cases (like [�*1:1��#2:1�|�#4:1�|�5�])
9136
+ * 2. Replace all ICU vars (like "VAR_PLURAL")
9137
+ * 3. Replace all placeholders used inside ICUs in a form of {PLACEHOLDER}
9138
+ * 4. Replace all ICU references with corresponding values (like �ICU_EXP_ICU_1�)
9139
+ * in case multiple ICUs have the same placeholder name
9140
+ *
9141
+ * @param message Raw translation string for post processing
9142
+ * @param replacements Set of replacements that should be applied
9143
+ *
9144
+ * @returns Transformed string that can be consumed by i18nStart instruction
9145
+ *
9146
+ * @codeGenApi
9147
+ */
9148
+ export declare function ɵangular_packages_core_core_br(message: string, replacements?: {
9149
+ [key: string]: (string | string[]);
9150
+ }): string;
8964
9151
 
8965
9152
  export declare class ɵangular_packages_core_core_c implements Injector {
8966
9153
  get(token: any, notFoundValue?: any): any;
@@ -10259,6 +10446,18 @@ export declare class ɵNoopNgZone implements NgZone {
10259
10446
  runTask<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any, name?: string): T;
10260
10447
  }
10261
10448
 
10449
+
10450
+ /**
10451
+ * Convince closure compiler that the wrapped function has no side-effects.
10452
+ *
10453
+ * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to
10454
+ * allow us to execute a function but have closure compiler mark the call as no-side-effects.
10455
+ * It is important that the return value for the `noSideEffects` function be assigned
10456
+ * to something which is retained otherwise the call to `noSideEffects` will be removed by closure
10457
+ * compiler.
10458
+ */
10459
+ export declare function ɵnoSideEffects<T>(fn: () => T): T;
10460
+
10262
10461
  export declare const ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR: {};
10263
10462
 
10264
10463
  export declare function ɵnov(view: ViewData, index: number): any;
@@ -10664,6 +10863,7 @@ export declare function ɵsetCurrentInjector(injector: Injector | null | undefin
10664
10863
  */
10665
10864
  export declare function ɵsetDocument(document: Document | undefined): void;
10666
10865
 
10866
+
10667
10867
  /**
10668
10868
  * Sets the locale id that will be used for translations and ICU expressions.
10669
10869
  * This is the ivy version of `LOCALE_ID` that was defined as an injection token for the view engine