@angular/core 8.0.0-rc.3 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/bundles/core-testing.umd.js +1 -24
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core-testing.umd.min.js +13 -13
  4. package/bundles/core-testing.umd.min.js.map +1 -1
  5. package/bundles/core.umd.js +123 -93
  6. package/bundles/core.umd.js.map +1 -1
  7. package/bundles/core.umd.min.js +116 -131
  8. package/bundles/core.umd.min.js.map +1 -1
  9. package/core.d.ts +32 -15
  10. package/core.metadata.json +1 -1
  11. package/esm2015/src/core_private_export.js +1 -1
  12. package/esm2015/src/di/injectable.js +1 -1
  13. package/esm2015/src/di/injector.js +3 -5
  14. package/esm2015/src/di/interface/defs.js +2 -2
  15. package/esm2015/src/di/jit/injectable.js +2 -2
  16. package/esm2015/src/metadata/di.js +1 -1
  17. package/esm2015/src/profile/profile.js +5 -1
  18. package/esm2015/src/profile/wtf_impl.js +2 -1
  19. package/esm2015/src/render3/component_ref.js +2 -4
  20. package/esm2015/src/render3/empty.js +5 -1
  21. package/esm2015/src/render3/index.js +1 -1
  22. package/esm2015/src/render3/instructions/all.js +2 -2
  23. package/esm2015/src/render3/instructions/projection.js +52 -13
  24. package/esm2015/src/render3/instructions/shared.js +7 -2
  25. package/esm2015/src/render3/interfaces/injector.js +3 -4
  26. package/esm2015/src/render3/interfaces/projection.js +1 -1
  27. package/esm2015/src/render3/jit/directive.js +2 -2
  28. package/esm2015/src/render3/jit/environment.js +13 -8
  29. package/esm2015/src/render3/jit/module.js +12 -9
  30. package/esm2015/src/render3/jit/pipe.js +2 -2
  31. package/esm2015/src/render3/node_selector_matcher.js +2 -27
  32. package/esm2015/src/render3/styling/class_and_style_bindings.js +2 -2
  33. package/esm2015/src/render3/util/misc_utils.js +8 -3
  34. package/esm2015/src/util/array_utils.js +16 -17
  35. package/esm2015/src/util/empty.js +5 -1
  36. package/esm2015/src/util/microtask.js +2 -2
  37. package/esm2015/src/util/ng_i18n_closure_mode.js +5 -1
  38. package/esm2015/src/version.js +1 -1
  39. package/esm2015/testing/src/r3_test_bed.js +1 -27
  40. package/esm2015/testing/src/test_bed.js +1 -18
  41. package/esm2015/testing/src/test_bed_common.js +1 -22
  42. package/esm5/src/core_private_export.js +1 -1
  43. package/esm5/src/di/injectable.js +1 -1
  44. package/esm5/src/di/injector.js +3 -4
  45. package/esm5/src/di/interface/defs.js +2 -2
  46. package/esm5/src/di/jit/injectable.js +2 -2
  47. package/esm5/src/metadata/di.js +1 -1
  48. package/esm5/src/profile/profile.js +5 -1
  49. package/esm5/src/profile/wtf_impl.js +1 -1
  50. package/esm5/src/render3/component_ref.js +2 -4
  51. package/esm5/src/render3/empty.js +5 -1
  52. package/esm5/src/render3/index.js +1 -1
  53. package/esm5/src/render3/instructions/projection.js +49 -14
  54. package/esm5/src/render3/instructions/shared.js +4 -2
  55. package/esm5/src/render3/interfaces/injector.js +3 -3
  56. package/esm5/src/render3/interfaces/projection.js +1 -1
  57. package/esm5/src/render3/jit/directive.js +2 -2
  58. package/esm5/src/render3/jit/environment.js +10 -8
  59. package/esm5/src/render3/jit/module.js +12 -9
  60. package/esm5/src/render3/jit/pipe.js +2 -2
  61. package/esm5/src/render3/node_selector_matcher.js +2 -23
  62. package/esm5/src/render3/styling/class_and_style_bindings.js +2 -2
  63. package/esm5/src/render3/util/misc_utils.js +8 -4
  64. package/esm5/src/util/array_utils.js +15 -16
  65. package/esm5/src/util/empty.js +5 -1
  66. package/esm5/src/util/microtask.js +2 -2
  67. package/esm5/src/util/ng_i18n_closure_mode.js +5 -1
  68. package/esm5/src/version.js +1 -1
  69. package/esm5/testing/src/r3_test_bed.js +1 -17
  70. package/esm5/testing/src/test_bed.js +1 -8
  71. package/esm5/testing/src/test_bed_common.js +1 -1
  72. package/fesm2015/core.js +133 -98
  73. package/fesm2015/core.js.map +1 -1
  74. package/fesm2015/testing.js +1 -44
  75. package/fesm2015/testing.js.map +1 -1
  76. package/fesm5/core.js +123 -93
  77. package/fesm5/core.js.map +1 -1
  78. package/fesm5/testing.js +1 -24
  79. package/fesm5/testing.js.map +1 -1
  80. package/package.json +2 -2
  81. package/schematics/migrations/injectable-pipe/index.js +7 -4
  82. package/schematics/migrations/move-document/index.js +7 -4
  83. package/schematics/migrations/static-queries/angular/directive_inputs.js +3 -2
  84. package/schematics/migrations/static-queries/angular/ng_query_visitor.d.ts +2 -0
  85. package/schematics/migrations/static-queries/angular/ng_query_visitor.js +21 -7
  86. package/schematics/migrations/static-queries/angular/query-definition.d.ts +9 -2
  87. package/schematics/migrations/static-queries/angular/query-definition.js +1 -1
  88. package/schematics/migrations/static-queries/index.d.ts +0 -5
  89. package/schematics/migrations/static-queries/index.js +105 -77
  90. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.d.ts +2 -2
  91. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.js +10 -19
  92. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.d.ts +1 -1
  93. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.js +2 -2
  94. package/schematics/migrations/static-queries/strategies/timing-strategy.d.ts +2 -2
  95. package/schematics/migrations/static-queries/strategies/timing-strategy.js +1 -1
  96. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.d.ts +28 -5
  97. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.js +107 -11
  98. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.d.ts +6 -1
  99. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.js +86 -66
  100. package/schematics/migrations/static-queries/transform.js +13 -10
  101. package/schematics/migrations/template-var-assignment/index.js +9 -7
  102. package/schematics/utils/ng_component_template.js +2 -1
  103. package/schematics/utils/project_tsconfig_paths.js +5 -3
  104. package/src/r3_symbols.d.ts +2 -2
  105. package/testing/testing.d.ts +5 -84
  106. package/testing/testing.metadata.json +1 -1
  107. package/testing.d.ts +1 -1
  108. package/schematics/utils/typescript/visit_nodes.d.ts +0 -13
  109. package/schematics/utils/typescript/visit_nodes.js +0 -26
package/fesm2015/core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v8.0.0-rc.3
2
+ * @license Angular v8.0.1
3
3
  * (c) 2010-2019 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -270,7 +270,7 @@ function fillProperties(target, source) {
270
270
  * * `factory` gives the zero argument function which will create an instance of the injectable.
271
271
  * The factory can call `inject` to access the `Injector` and request injection of dependencies.
272
272
  *
273
- * @publicApi
273
+ * @codeGenApi
274
274
  */
275
275
  function ɵɵdefineInjectable(opts) {
276
276
  return {
@@ -1084,7 +1084,7 @@ function compileInjectable(type, srcMeta) {
1084
1084
  // Can't happen - either hasAProvider will be false, or one of the providers will be set.
1085
1085
  throw new Error(`Unreachable state.`);
1086
1086
  }
1087
- def = getCompilerFacade().compileInjectable(angularCoreDiEnv, `ng://${type.name}/ngInjectableDef.js`, compilerMeta);
1087
+ def = getCompilerFacade().compileInjectable(angularCoreDiEnv, `ng:///${type.name}/ngInjectableDef.js`, compilerMeta);
1088
1088
  }
1089
1089
  return def;
1090
1090
  }),
@@ -1439,8 +1439,6 @@ const NG_TOKEN_PATH = 'ngTokenPath';
1439
1439
  /** @type {?} */
1440
1440
  const NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';
1441
1441
  /** @type {?} */
1442
- const NULL_INJECTOR = Injector.NULL;
1443
- /** @type {?} */
1444
1442
  const NEW_LINE = /\n/gm;
1445
1443
  /** @type {?} */
1446
1444
  const NO_NEW_LINE = 'ɵ';
@@ -1450,7 +1448,7 @@ class StaticInjector {
1450
1448
  * @param {?=} parent
1451
1449
  * @param {?=} source
1452
1450
  */
1453
- constructor(providers, parent = NULL_INJECTOR, source = null) {
1451
+ constructor(providers, parent = Injector.NULL, source = null) {
1454
1452
  this.parent = parent;
1455
1453
  this.source = source;
1456
1454
  /** @type {?} */
@@ -1673,7 +1671,7 @@ function resolveToken(token, record, records, parent, notFoundValue, flags) {
1673
1671
  records,
1674
1672
  // If we don't know how to resolve dependency and we should not check parent for it,
1675
1673
  // than pass in Null injector.
1676
- !childRecord && !(options & 4 /* CheckParent */) ? NULL_INJECTOR : parent, options & 1 /* Optional */ ? null : Injector.THROW_IF_NOT_FOUND, InjectFlags.Default));
1674
+ !childRecord && !(options & 4 /* CheckParent */) ? Injector.NULL : parent, options & 1 /* Optional */ ? null : Injector.THROW_IF_NOT_FOUND, InjectFlags.Default));
1677
1675
  }
1678
1676
  }
1679
1677
  record.value = value = useNew ? new ((/** @type {?} */ (fn)))(...deps) : fn.apply(obj, deps);
@@ -3437,7 +3435,11 @@ const EMPTY_OBJ = {};
3437
3435
  const EMPTY_ARRAY$1 = [];
3438
3436
  // freezing the values prevents any code from accidentally inserting new values in
3439
3437
  if (typeof ngDevMode !== 'undefined' && ngDevMode) {
3438
+ // These property accesses can be ignored because ngDevMode will be set to false
3439
+ // when optimizing code and the whole if statement will be dropped.
3440
+ // tslint:disable-next-line:no-toplevel-property-access
3440
3441
  Object.freeze(EMPTY_OBJ);
3442
+ // tslint:disable-next-line:no-toplevel-property-access
3441
3443
  Object.freeze(EMPTY_ARRAY$1);
3442
3444
  }
3443
3445
 
@@ -3918,10 +3920,14 @@ function stringifyForError(value) {
3918
3920
  }
3919
3921
  return renderStringify(value);
3920
3922
  }
3921
- /** @type {?} */
3922
- const defaultScheduler = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame || // browser only
3923
+ const ɵ0$5 = /**
3924
+ * @return {?}
3925
+ */
3926
+ () => (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame || // browser only
3923
3927
  setTimeout // everything else
3924
3928
  ).bind(_global);
3929
+ /** @type {?} */
3930
+ const defaultScheduler = ((ɵ0$5))();
3925
3931
  /**
3926
3932
  *
3927
3933
  * \@codeGenApi
@@ -4540,15 +4546,14 @@ class NodeInjectorFactory {
4540
4546
  this.injectImpl = injectImplementation;
4541
4547
  }
4542
4548
  }
4543
- /** @type {?} */
4544
- const FactoryPrototype = NodeInjectorFactory.prototype;
4545
4549
  /**
4546
4550
  * @param {?} obj
4547
4551
  * @return {?}
4548
4552
  */
4549
4553
  function isFactory(obj) {
4550
4554
  // See: https://jsperf.com/instanceof-vs-getprototypeof
4551
- return obj !== null && typeof obj == 'object' && Object.getPrototypeOf(obj) == FactoryPrototype;
4555
+ return obj !== null && typeof obj == 'object' &&
4556
+ Object.getPrototypeOf(obj) == NodeInjectorFactory.prototype;
4552
4557
  }
4553
4558
 
4554
4559
  /**
@@ -5472,7 +5477,7 @@ RendererStyleFlags3[RendererStyleFlags3.DashCase] = 'DashCase';
5472
5477
  function isProceduralRenderer(renderer) {
5473
5478
  return !!(((/** @type {?} */ (renderer))).listen);
5474
5479
  }
5475
- const ɵ0$5 = /**
5480
+ const ɵ0$6 = /**
5476
5481
  * @param {?} hostElement
5477
5482
  * @param {?} rendererType
5478
5483
  * @return {?}
@@ -5480,7 +5485,7 @@ const ɵ0$5 = /**
5480
5485
  (hostElement, rendererType) => { return document; };
5481
5486
  /** @type {?} */
5482
5487
  const domRendererFactory3 = {
5483
- createRenderer: (ɵ0$5)
5488
+ createRenderer: (ɵ0$6)
5484
5489
  };
5485
5490
 
5486
5491
  /**
@@ -10994,7 +10999,7 @@ function getInitialStyleStringValue(context) {
10994
10999
  return styleString;
10995
11000
  }
10996
11001
  /**
10997
- * Returns the current cached mutli-value for a given directiveIndex within the provided context.
11002
+ * Returns the current cached multi-value for a given directiveIndex within the provided context.
10998
11003
  * @param {?} context
10999
11004
  * @param {?} entryIsClassBased
11000
11005
  * @param {?} directiveIndex
@@ -11478,31 +11483,6 @@ function getProjectAsAttrValue(tNode) {
11478
11483
  }
11479
11484
  return null;
11480
11485
  }
11481
- /**
11482
- * Checks a given node against matching projection selectors and returns
11483
- * selector index (or 0 if none matched).
11484
- *
11485
- * This function takes into account the parsed ngProjectAs selector from the node's attributes.
11486
- * If present, it will check whether the ngProjectAs selector matches any of the projection
11487
- * selectors.
11488
- * @param {?} tNode
11489
- * @param {?} selectors
11490
- * @return {?}
11491
- */
11492
- function matchingProjectionSelectorIndex(tNode, selectors) {
11493
- /** @type {?} */
11494
- const ngProjectAsAttrVal = getProjectAsAttrValue(tNode);
11495
- for (let i = 0; i < selectors.length; i++) {
11496
- // If we ran into an `ngProjectAs` attribute, we should match its parsed selector
11497
- // to the list of selectors, otherwise we fall back to matching against the node.
11498
- if (ngProjectAsAttrVal === null ?
11499
- isNodeMatchingSelectorList(tNode, selectors[i], /* isProjectionMode */ true) :
11500
- isSelectorInSelectorList(ngProjectAsAttrVal, selectors[i])) {
11501
- return i + 1; // first matching selector "captures" a given node
11502
- }
11503
- }
11504
- return 0;
11505
- }
11506
11486
  /**
11507
11487
  * @param {?} nodeAttrs
11508
11488
  * @return {?}
@@ -11562,12 +11542,16 @@ function isSelectorInSelectorList(selector, list) {
11562
11542
  * @fileoverview added by tsickle
11563
11543
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
11564
11544
  */
11545
+ const ɵ0$7 = /**
11546
+ * @return {?}
11547
+ */
11548
+ () => Promise.resolve(null);
11565
11549
  /**
11566
11550
  * A permanent marker promise which signifies that the current CD tree is
11567
11551
  * clean.
11568
11552
  * @type {?}
11569
11553
  */
11570
- const _CLEAN_PROMISE = Promise.resolve(null);
11554
+ const _CLEAN_PROMISE = ((ɵ0$7))();
11571
11555
  /**
11572
11556
  * Refreshes the view, executing the following steps in that order:
11573
11557
  * triggers init hooks, refreshes dynamic embedded views, triggers content hooks, sets host
@@ -16125,6 +16109,41 @@ function ɵɵnextContext(level = 1) {
16125
16109
  * @fileoverview added by tsickle
16126
16110
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
16127
16111
  */
16112
+ /**
16113
+ * Checks a given node against matching projection slots and returns the
16114
+ * determined slot index. Returns "null" if no slot matched the given node.
16115
+ *
16116
+ * This function takes into account the parsed ngProjectAs selector from the
16117
+ * node's attributes. If present, it will check whether the ngProjectAs selector
16118
+ * matches any of the projection slot selectors.
16119
+ * @param {?} tNode
16120
+ * @param {?} projectionSlots
16121
+ * @return {?}
16122
+ */
16123
+ function matchingProjectionSlotIndex(tNode, projectionSlots) {
16124
+ /** @type {?} */
16125
+ let wildcardNgContentIndex = null;
16126
+ /** @type {?} */
16127
+ const ngProjectAsAttrVal = getProjectAsAttrValue(tNode);
16128
+ for (let i = 0; i < projectionSlots.length; i++) {
16129
+ /** @type {?} */
16130
+ const slotValue = projectionSlots[i];
16131
+ // The last wildcard projection slot should match all nodes which aren't matching
16132
+ // any selector. This is necessary to be backwards compatible with view engine.
16133
+ if (slotValue === '*') {
16134
+ wildcardNgContentIndex = i;
16135
+ continue;
16136
+ }
16137
+ // If we ran into an `ngProjectAs` attribute, we should match its parsed selector
16138
+ // to the list of selectors, otherwise we fall back to matching against the node.
16139
+ if (ngProjectAsAttrVal === null ?
16140
+ isNodeMatchingSelectorList(tNode, slotValue, /* isProjectionMode */ true) :
16141
+ isSelectorInSelectorList(ngProjectAsAttrVal, slotValue)) {
16142
+ return i; // first matching selector "captures" a given node
16143
+ }
16144
+ }
16145
+ return wildcardNgContentIndex;
16146
+ }
16128
16147
  /**
16129
16148
  * Instruction to distribute projectable nodes among <ng-content> occurrences in a given template.
16130
16149
  * It takes all the selectors from the entire component's template and decides where
@@ -16144,32 +16163,36 @@ function ɵɵnextContext(level = 1) {
16144
16163
  * template author).
16145
16164
  *
16146
16165
  * \@codeGenApi
16147
- * @param {?=} selectors A collection of parsed CSS selectors
16166
+ * @param {?=} projectionSlots
16148
16167
  * @return {?}
16149
16168
  */
16150
- function ɵɵprojectionDef(selectors) {
16169
+ function ɵɵprojectionDef(projectionSlots) {
16151
16170
  /** @type {?} */
16152
16171
  const componentNode = (/** @type {?} */ (findComponentView(getLView())[T_HOST]));
16153
16172
  if (!componentNode.projection) {
16173
+ // If no explicit projection slots are defined, fall back to a single
16174
+ // projection slot with the wildcard selector.
16154
16175
  /** @type {?} */
16155
- const noOfNodeBuckets = selectors ? selectors.length + 1 : 1;
16176
+ const numProjectionSlots = projectionSlots ? projectionSlots.length : 1;
16156
16177
  /** @type {?} */
16157
16178
  const projectionHeads = componentNode.projection =
16158
- new Array(noOfNodeBuckets).fill(null);
16179
+ new Array(numProjectionSlots).fill(null);
16159
16180
  /** @type {?} */
16160
16181
  const tails = projectionHeads.slice();
16161
16182
  /** @type {?} */
16162
16183
  let componentChild = componentNode.child;
16163
16184
  while (componentChild !== null) {
16164
16185
  /** @type {?} */
16165
- const bucketIndex = selectors ? matchingProjectionSelectorIndex(componentChild, selectors) : 0;
16166
- if (tails[bucketIndex]) {
16167
- (/** @type {?} */ (tails[bucketIndex])).projectionNext = componentChild;
16168
- }
16169
- else {
16170
- projectionHeads[bucketIndex] = componentChild;
16186
+ const slotIndex = projectionSlots ? matchingProjectionSlotIndex(componentChild, projectionSlots) : 0;
16187
+ if (slotIndex !== null) {
16188
+ if (tails[slotIndex]) {
16189
+ (/** @type {?} */ (tails[slotIndex])).projectionNext = componentChild;
16190
+ }
16191
+ else {
16192
+ projectionHeads[slotIndex] = componentChild;
16193
+ }
16194
+ tails[slotIndex] = componentChild;
16171
16195
  }
16172
- tails[bucketIndex] = componentChild;
16173
16196
  componentChild = componentChild.next;
16174
16197
  }
16175
16198
  }
@@ -18510,15 +18533,15 @@ const EMPTY_ARRAY$2 = (/** @type {?} */ ([]));
18510
18533
  * A lazily initialized NullInjector.
18511
18534
  * @type {?}
18512
18535
  */
18513
- let NULL_INJECTOR$1 = undefined;
18536
+ let NULL_INJECTOR = undefined;
18514
18537
  /**
18515
18538
  * @return {?}
18516
18539
  */
18517
18540
  function getNullInjector() {
18518
- if (NULL_INJECTOR$1 === undefined) {
18519
- NULL_INJECTOR$1 = new NullInjector();
18541
+ if (NULL_INJECTOR === undefined) {
18542
+ NULL_INJECTOR = new NullInjector();
18520
18543
  }
18521
- return NULL_INJECTOR$1;
18544
+ return NULL_INJECTOR;
18522
18545
  }
18523
18546
  /**
18524
18547
  * Create a new `Injector` which is configured using a `defType` of `InjectorType<any>`s.
@@ -20501,7 +20524,7 @@ class Version {
20501
20524
  * \@publicApi
20502
20525
  * @type {?}
20503
20526
  */
20504
- const VERSION = new Version('8.0.0-rc.3');
20527
+ const VERSION = new Version('8.0.1');
20505
20528
 
20506
20529
  /**
20507
20530
  * @fileoverview added by tsickle
@@ -25010,10 +25033,8 @@ class ComponentFactory$1 extends ComponentFactory {
25010
25033
  this.ngModule = ngModule;
25011
25034
  this.componentType = componentDef.type;
25012
25035
  this.selector = (/** @type {?} */ (componentDef.selectors[0][0]));
25013
- // The component definition does not include the wildcard ('*') selector in its list.
25014
- // It is implicitly expected as the first item in the projectable nodes array.
25015
25036
  this.ngContentSelectors =
25016
- componentDef.ngContentSelectors ? ['*', ...componentDef.ngContentSelectors] : [];
25037
+ componentDef.ngContentSelectors ? componentDef.ngContentSelectors : [];
25017
25038
  this.isBoundToModule = !!ngModule;
25018
25039
  }
25019
25040
  /**
@@ -25183,9 +25204,13 @@ class ComponentRef$1 extends ComponentRef {
25183
25204
  * NOTE: changes to the `ngI18nClosureMode` name must be synced with `compiler-cli/src/tooling.ts`.
25184
25205
  */
25185
25206
  if (typeof ngI18nClosureMode === 'undefined') {
25207
+ // These property accesses can be ignored because ngI18nClosureMode will be set to false
25208
+ // when optimizing code and the whole if statement will be dropped.
25186
25209
  // Make sure to refer to ngI18nClosureMode as ['ngI18nClosureMode'] for closure.
25210
+ // tslint:disable-next-line:no-toplevel-property-access
25187
25211
  _global['ngI18nClosureMode'] =
25188
25212
  // TODO(FW-1250): validate that this actually, you know, works.
25213
+ // tslint:disable-next-line:no-toplevel-property-access
25189
25214
  typeof goog !== 'undefined' && typeof goog.getMsg === 'function';
25190
25215
  }
25191
25216
 
@@ -25208,28 +25233,27 @@ function addAllToArray(items, arr) {
25208
25233
  }
25209
25234
  }
25210
25235
  /**
25211
- * Flattens an array in non-recursive way. Input arrays are not modified.
25236
+ * Flattens an array.
25212
25237
  */
25213
- function flatten(list, mapFn) {
25214
- const result = [];
25215
- let i = 0;
25216
- while (i < list.length) {
25217
- const item = list[i];
25238
+ function flatten(list, dst) {
25239
+ if (dst === undefined)
25240
+ dst = list;
25241
+ for (let i = 0; i < list.length; i++) {
25242
+ let item = list[i];
25218
25243
  if (Array.isArray(item)) {
25219
- if (item.length > 0) {
25220
- list = item.concat(list.slice(i + 1));
25221
- i = 0;
25222
- }
25223
- else {
25224
- i++;
25244
+ // we need to inline it.
25245
+ if (dst === list) {
25246
+ // Our assumption that the list was already flat was wrong and
25247
+ // we need to clone flat since we need to write to it.
25248
+ dst = list.slice(0, i);
25225
25249
  }
25250
+ flatten(item, dst);
25226
25251
  }
25227
- else {
25228
- result.push(mapFn ? mapFn(item) : item);
25229
- i++;
25252
+ else if (dst !== list) {
25253
+ dst.push(item);
25230
25254
  }
25231
25255
  }
25232
- return result;
25256
+ return dst;
25233
25257
  }
25234
25258
 
25235
25259
  /**
@@ -28724,13 +28748,10 @@ function noModuleError(id) {
28724
28748
  * @fileoverview added by tsickle
28725
28749
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
28726
28750
  */
28727
- /**
28728
- * A mapping of the \@angular/core API surface used in generated expressions to the actual symbols.
28729
- *
28730
- * This should be kept up to date with the public exports of \@angular/core.
28731
- * @type {?}
28751
+ const ɵ0$8 = /**
28752
+ * @return {?}
28732
28753
  */
28733
- const angularCoreEnv = {
28754
+ () => ({
28734
28755
  'ɵɵdefineBase': ɵɵdefineBase,
28735
28756
  'ɵɵdefineComponent': ɵɵdefineComponent,
28736
28757
  'ɵɵdefineDirective': ɵɵdefineDirective,
@@ -28855,7 +28876,14 @@ const angularCoreEnv = {
28855
28876
  'ɵɵsanitizeUrl': ɵɵsanitizeUrl,
28856
28877
  'ɵɵsanitizeUrlOrResourceUrl': ɵɵsanitizeUrlOrResourceUrl,
28857
28878
  'ɵregisterNgModuleType': registerNgModuleType,
28858
- };
28879
+ });
28880
+ /**
28881
+ * A mapping of the \@angular/core API surface used in generated expressions to the actual symbols.
28882
+ *
28883
+ * This should be kept up to date with the public exports of \@angular/core.
28884
+ * @type {?}
28885
+ */
28886
+ const angularCoreEnv = ((ɵ0$8))();
28859
28887
 
28860
28888
  /**
28861
28889
  * @fileoverview added by tsickle
@@ -28950,13 +28978,15 @@ function compileNgModuleDefs(moduleType, ngModule) {
28950
28978
  */
28951
28979
  () => {
28952
28980
  if (ngModuleDef === null) {
28953
- ngModuleDef = getCompilerFacade().compileNgModule(angularCoreEnv, `ng://${moduleType.name}/ngModuleDef.js`, {
28981
+ ngModuleDef = getCompilerFacade().compileNgModule(angularCoreEnv, `ng:///${moduleType.name}/ngModuleDef.js`, {
28954
28982
  type: moduleType,
28955
- bootstrap: flatten(ngModule.bootstrap || EMPTY_ARRAY$4, resolveForwardRef),
28983
+ bootstrap: flatten(ngModule.bootstrap || EMPTY_ARRAY$4).map(resolveForwardRef),
28956
28984
  declarations: declarations.map(resolveForwardRef),
28957
- imports: flatten(ngModule.imports || EMPTY_ARRAY$4, resolveForwardRef)
28985
+ imports: flatten(ngModule.imports || EMPTY_ARRAY$4)
28986
+ .map(resolveForwardRef)
28958
28987
  .map(expandModuleWithProviders),
28959
- exports: flatten(ngModule.exports || EMPTY_ARRAY$4, resolveForwardRef)
28988
+ exports: flatten(ngModule.exports || EMPTY_ARRAY$4)
28989
+ .map(resolveForwardRef)
28960
28990
  .map(expandModuleWithProviders),
28961
28991
  emitInline: true,
28962
28992
  schemas: ngModule.schemas ? flatten(ngModule.schemas) : null,
@@ -28988,7 +29018,7 @@ function compileNgModuleDefs(moduleType, ngModule) {
28988
29018
  (ngModule.exports || EMPTY_ARRAY$4).map(resolveForwardRef),
28989
29019
  ],
28990
29020
  };
28991
- ngInjectorDef = getCompilerFacade().compileInjector(angularCoreEnv, `ng://${moduleType.name}/ngInjectorDef.js`, meta);
29021
+ ngInjectorDef = getCompilerFacade().compileInjector(angularCoreEnv, `ng:///${moduleType.name}/ngInjectorDef.js`, meta);
28992
29022
  }
28993
29023
  return ngInjectorDef;
28994
29024
  }),
@@ -29013,14 +29043,14 @@ function verifySemanticsOfNgModuleDef(moduleType) {
29013
29043
  const declarations = maybeUnwrapFn(ngModuleDef.declarations);
29014
29044
  /** @type {?} */
29015
29045
  const imports = maybeUnwrapFn(ngModuleDef.imports);
29016
- flatten(imports, unwrapModuleWithProvidersImports).forEach(verifySemanticsOfNgModuleDef);
29046
+ flatten(imports).map(unwrapModuleWithProvidersImports).forEach(verifySemanticsOfNgModuleDef);
29017
29047
  /** @type {?} */
29018
29048
  const exports = maybeUnwrapFn(ngModuleDef.exports);
29019
29049
  declarations.forEach(verifyDeclarationsHaveDefinitions);
29020
29050
  /** @type {?} */
29021
29051
  const combinedDeclarations = [
29022
29052
  ...declarations.map(resolveForwardRef),
29023
- ...flatten(imports.map(computeCombinedExports), resolveForwardRef),
29053
+ ...flatten(imports.map(computeCombinedExports)).map(resolveForwardRef),
29024
29054
  ];
29025
29055
  exports.forEach(verifyExportsAreDeclaredOrReExported);
29026
29056
  declarations.forEach(verifyDeclarationIsUnique);
@@ -29029,7 +29059,8 @@ function verifySemanticsOfNgModuleDef(moduleType) {
29029
29059
  const ngModule = getAnnotation(moduleType, 'NgModule');
29030
29060
  if (ngModule) {
29031
29061
  ngModule.imports &&
29032
- flatten(ngModule.imports, unwrapModuleWithProvidersImports)
29062
+ flatten(ngModule.imports)
29063
+ .map(unwrapModuleWithProvidersImports)
29033
29064
  .forEach(verifySemanticsOfNgModuleDef);
29034
29065
  ngModule.bootstrap && ngModule.bootstrap.forEach(verifyCorrectBootstrapType);
29035
29066
  ngModule.bootstrap && ngModule.bootstrap.forEach(verifyComponentIsPartOfNgModule);
@@ -29544,7 +29575,7 @@ function compileDirective(type, directive) {
29544
29575
  /** @type {?} */
29545
29576
  const name = type && type.name;
29546
29577
  /** @type {?} */
29547
- const sourceMapUrl = `ng://${name}/ngDirectiveDef.js`;
29578
+ const sourceMapUrl = `ng:///${name}/ngDirectiveDef.js`;
29548
29579
  /** @type {?} */
29549
29580
  const compiler = getCompilerFacade();
29550
29581
  /** @type {?} */
@@ -29818,7 +29849,7 @@ function compilePipe(type, meta) {
29818
29849
  /** @type {?} */
29819
29850
  const typeName = type.name;
29820
29851
  ngPipeDef =
29821
- getCompilerFacade().compilePipe(angularCoreEnv, `ng://${typeName}/ngPipeDef.js`, {
29852
+ getCompilerFacade().compilePipe(angularCoreEnv, `ng:///${typeName}/ngPipeDef.js`, {
29822
29853
  type: type,
29823
29854
  typeArgumentCount: 0,
29824
29855
  name: typeName,
@@ -29839,7 +29870,7 @@ function compilePipe(type, meta) {
29839
29870
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
29840
29871
  */
29841
29872
  // WARNING: interface has both a type and a value, skipping emit
29842
- const ɵ0$6 = /**
29873
+ const ɵ0$9 = /**
29843
29874
  * @param {?=} dir
29844
29875
  * @return {?}
29845
29876
  */
@@ -29855,7 +29886,7 @@ const ɵ0$6 = /**
29855
29886
  * \@publicApi
29856
29887
  * @type {?}
29857
29888
  */
29858
- const Directive = makeDecorator('Directive', (ɵ0$6), undefined, undefined, (ɵ1$2));
29889
+ const Directive = makeDecorator('Directive', (ɵ0$9), undefined, undefined, (ɵ1$2));
29859
29890
  // WARNING: interface has both a type and a value, skipping emit
29860
29891
  const ɵ2$2 = /**
29861
29892
  * @param {?=} c
@@ -29993,7 +30024,7 @@ const SWITCH_COMPILE_PIPE = SWITCH_COMPILE_PIPE__PRE_R3__;
29993
30024
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
29994
30025
  */
29995
30026
  // WARNING: interface has both a type and a value, skipping emit
29996
- const ɵ0$7 = /**
30027
+ const ɵ0$a = /**
29997
30028
  * @param {?} ngModule
29998
30029
  * @return {?}
29999
30030
  */
@@ -30017,7 +30048,7 @@ const ɵ0$7 = /**
30017
30048
  * \@publicApi
30018
30049
  * @type {?}
30019
30050
  */
30020
- const NgModule = makeDecorator('NgModule', (ɵ0$7), undefined, undefined, (ɵ1$3));
30051
+ const NgModule = makeDecorator('NgModule', (ɵ0$a), undefined, undefined, (ɵ1$3));
30021
30052
  /**
30022
30053
  * @param {?} moduleType
30023
30054
  * @param {?} metadata
@@ -30490,6 +30521,7 @@ function noopScope(arg0, arg1) {
30490
30521
  * an exception is expected during normal execution while profiling.
30491
30522
  *
30492
30523
  * \@publicApi
30524
+ * @deprecated the Web Tracing Framework is no longer supported in Angular
30493
30525
  * @type {?}
30494
30526
  */
30495
30527
  const wtfCreateScope = wtfEnabled ? createScope : (/**
@@ -30506,6 +30538,7 @@ const wtfCreateScope = wtfEnabled ? createScope : (/**
30506
30538
  *
30507
30539
  * Returns the `returnValue for easy chaining.
30508
30540
  * \@publicApi
30541
+ * @deprecated the Web Tracing Framework is no longer supported in Angular
30509
30542
  * @type {?}
30510
30543
  */
30511
30544
  const wtfLeave = wtfEnabled ? leave : (/**
@@ -30526,6 +30559,7 @@ const wtfLeave = wtfEnabled ? leave : (/**
30526
30559
  * });
30527
30560
  * }
30528
30561
  * \@publicApi
30562
+ * @deprecated the Web Tracing Framework is no longer supported in Angular
30529
30563
  * @type {?}
30530
30564
  */
30531
30565
  const wtfStartTimeRange = wtfEnabled ? startTimeRange : (/**
@@ -30539,6 +30573,7 @@ const wtfStartTimeRange = wtfEnabled ? startTimeRange : (/**
30539
30573
  * [range] is the return value from [wtfStartTimeRange] Async ranges only work if WTF has been
30540
30574
  * enabled.
30541
30575
  * \@publicApi
30576
+ * @deprecated the Web Tracing Framework is no longer supported in Angular
30542
30577
  * @type {?}
30543
30578
  */
30544
30579
  const wtfEndTimeRange = wtfEnabled ? endTimeRange : (/**
@@ -30554,7 +30589,7 @@ const wtfEndTimeRange = wtfEnabled ? endTimeRange : (/**
30554
30589
  * Use of this source code is governed by an MIT-style license that can be
30555
30590
  * found in the LICENSE file at https://angular.io/license
30556
30591
  */
30557
- const promise = Promise.resolve(0);
30592
+ const promise = (() => Promise.resolve(0))();
30558
30593
  function scheduleMicroTask(fn) {
30559
30594
  if (typeof Zone === 'undefined') {
30560
30595
  // use promise to schedule microTask instead of use Zone