@angular/core 13.3.1 → 13.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/fesm2015/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v13.3.1
2
+ * @license Angular v13.3.4
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -6718,8 +6718,10 @@ function maybeUnwrapFn(value) {
6718
6718
  * found in the LICENSE file at https://angular.io/license
6719
6719
  */
6720
6720
  /** Called when there are multiple component selectors that match a given node */
6721
- function throwMultipleComponentError(tNode) {
6722
- throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}`);
6721
+ function throwMultipleComponentError(tNode, first, second) {
6722
+ throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}: ` +
6723
+ `${stringifyForError(first)} and ` +
6724
+ `${stringifyForError(second)}`);
6723
6725
  }
6724
6726
  /** Throws an ExpressionChangedAfterChecked error if checkNoChanges mode is on. */
6725
6727
  function throwErrorIfNoChangesMode(creationMode, oldValue, currValue, propName) {
@@ -10031,9 +10033,9 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
10031
10033
  propName = mapPropName(propName);
10032
10034
  if (ngDevMode) {
10033
10035
  validateAgainstEventProperties(propName);
10034
- if (!validateProperty(tView, element, propName, tNode)) {
10036
+ if (!validateProperty(element, tNode.value, propName, tView.schemas)) {
10035
10037
  // Return here since we only log warnings for unknown properties.
10036
- logUnknownPropertyError(propName, tNode);
10038
+ logUnknownPropertyError(propName, tNode.value);
10037
10039
  return;
10038
10040
  }
10039
10041
  ngDevMode.rendererSetProperty++;
@@ -10052,8 +10054,8 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
10052
10054
  else if (tNode.type & 12 /* AnyContainer */) {
10053
10055
  // If the node is a container and the property didn't
10054
10056
  // match any of the inputs or schemas we should throw.
10055
- if (ngDevMode && !matchingSchemas(tView, tNode.value)) {
10056
- logUnknownPropertyError(propName, tNode);
10057
+ if (ngDevMode && !matchingSchemas(tView.schemas, tNode.value)) {
10058
+ logUnknownPropertyError(propName, tNode.value);
10057
10059
  }
10058
10060
  }
10059
10061
  }
@@ -10105,24 +10107,44 @@ function setNgReflectProperties(lView, element, type, dataValue, value) {
10105
10107
  }
10106
10108
  }
10107
10109
  }
10108
- function validateProperty(tView, element, propName, tNode) {
10110
+ /**
10111
+ * Validates that the property of the element is known at runtime and returns
10112
+ * false if it's not the case.
10113
+ * This check is relevant for JIT-compiled components (for AOT-compiled
10114
+ * ones this check happens at build time).
10115
+ *
10116
+ * The property is considered known if either:
10117
+ * - it's a known property of the element
10118
+ * - the element is allowed by one of the schemas
10119
+ * - the property is used for animations
10120
+ *
10121
+ * @param element Element to validate
10122
+ * @param tagName Name of the tag to check
10123
+ * @param propName Name of the property to check
10124
+ * @param schemas Array of schemas
10125
+ */
10126
+ function validateProperty(element, tagName, propName, schemas) {
10109
10127
  // If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
10110
10128
  // mode where this check happens at compile time. In JIT mode, `schemas` is always present and
10111
10129
  // defined as an array (as an empty array in case `schemas` field is not defined) and we should
10112
10130
  // execute the check below.
10113
- if (tView.schemas === null)
10131
+ if (schemas === null)
10114
10132
  return true;
10115
- // The property is considered valid if the element matches the schema, it exists on the element
10133
+ // The property is considered valid if the element matches the schema, it exists on the element,
10116
10134
  // or it is synthetic, and we are in a browser context (web worker nodes should be skipped).
10117
- if (matchingSchemas(tView, tNode.value) || propName in element || isAnimationProp(propName)) {
10135
+ if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
10118
10136
  return true;
10119
10137
  }
10120
10138
  // Note: `typeof Node` returns 'function' in most browsers, but on IE it is 'object' so we
10121
- // need to account for both here, while being careful for `typeof null` also returning 'object'.
10139
+ // need to account for both here, while being careful with `typeof null` also returning 'object'.
10122
10140
  return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
10123
10141
  }
10124
- function matchingSchemas(tView, tagName) {
10125
- const schemas = tView.schemas;
10142
+ /**
10143
+ * Returns true if the tag name is allowed by specified schemas.
10144
+ * @param schemas Array of schemas
10145
+ * @param tagName Name of the tag
10146
+ */
10147
+ function matchingSchemas(schemas, tagName) {
10126
10148
  if (schemas !== null) {
10127
10149
  for (let i = 0; i < schemas.length; i++) {
10128
10150
  const schema = schemas[i];
@@ -10137,10 +10159,10 @@ function matchingSchemas(tView, tagName) {
10137
10159
  /**
10138
10160
  * Logs an error that a property is not supported on an element.
10139
10161
  * @param propName Name of the invalid property.
10140
- * @param tNode Node on which we encountered the property.
10162
+ * @param tagName Name of the node on which we encountered the property.
10141
10163
  */
10142
- function logUnknownPropertyError(propName, tNode) {
10143
- let message = `Can't bind to '${propName}' since it isn't a known property of '${tNode.value}'.`;
10164
+ function logUnknownPropertyError(propName, tagName) {
10165
+ const message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'.`;
10144
10166
  console.error(formatRuntimeError(303 /* UNKNOWN_BINDING */, message));
10145
10167
  }
10146
10168
  /**
@@ -10358,8 +10380,11 @@ function findDirectiveDefMatches(tView, viewData, tNode) {
10358
10380
  if (ngDevMode) {
10359
10381
  assertTNodeType(tNode, 2 /* Element */, `"${tNode.value}" tags cannot be used as component hosts. ` +
10360
10382
  `Please use a different tag to activate the ${stringify(def.type)} component.`);
10361
- if (tNode.flags & 2 /* isComponentHost */)
10362
- throwMultipleComponentError(tNode);
10383
+ if (tNode.flags & 2 /* isComponentHost */) {
10384
+ // If another component has been matched previously, it's the first element in the
10385
+ // `matches` array, see how we store components/directives in `matches` below.
10386
+ throwMultipleComponentError(tNode, matches[0].type, def.type);
10387
+ }
10363
10388
  }
10364
10389
  markAsComponentHost(tView, tNode);
10365
10390
  // The component is always stored first with directives after.
@@ -12358,7 +12383,7 @@ function ɵɵInheritDefinitionFeature(definition) {
12358
12383
  else {
12359
12384
  if (superType.ɵcmp) {
12360
12385
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
12361
- 'Directives cannot inherit Components' :
12386
+ `Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}` :
12362
12387
  '';
12363
12388
  throw new RuntimeError(903 /* INVALID_INHERITANCE */, errorMessage);
12364
12389
  }
@@ -14473,7 +14498,7 @@ function elementStartFirstCreatePass(index, tView, lView, native, name, attrsInd
14473
14498
  const attrs = getConstant(tViewConsts, attrsIndex);
14474
14499
  const tNode = getOrCreateTNode(tView, index, 2 /* Element */, name, attrs);
14475
14500
  const hasDirectives = resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
14476
- ngDevMode && logUnknownElementError(tView, native, tNode, hasDirectives);
14501
+ ngDevMode && validateElementIsKnown(native, tNode.value, tView.schemas, hasDirectives);
14477
14502
  if (tNode.attrs !== null) {
14478
14503
  computeStaticStyling(tNode, tNode.attrs, false);
14479
14504
  }
@@ -14597,18 +14622,33 @@ function ɵɵelement(index, name, attrsIndex, localRefsIndex) {
14597
14622
  ɵɵelementEnd();
14598
14623
  return ɵɵelement;
14599
14624
  }
14600
- function logUnknownElementError(tView, element, tNode, hasDirectives) {
14601
- const schemas = tView.schemas;
14625
+ /**
14626
+ * Validates that the element is known at runtime and produces
14627
+ * an error if it's not the case.
14628
+ * This check is relevant for JIT-compiled components (for AOT-compiled
14629
+ * ones this check happens at build time).
14630
+ *
14631
+ * The element is considered known if either:
14632
+ * - it's a known HTML element
14633
+ * - it's a known custom element
14634
+ * - the element matches any directive
14635
+ * - the element is allowed by one of the schemas
14636
+ *
14637
+ * @param element Element to validate
14638
+ * @param tagName Name of the tag to check
14639
+ * @param schemas Array of schemas
14640
+ * @param hasDirectives Boolean indicating that the element matches any directive
14641
+ */
14642
+ function validateElementIsKnown(element, tagName, schemas, hasDirectives) {
14602
14643
  // If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
14603
14644
  // mode where this check happens at compile time. In JIT mode, `schemas` is always present and
14604
14645
  // defined as an array (as an empty array in case `schemas` field is not defined) and we should
14605
14646
  // execute the check below.
14606
14647
  if (schemas === null)
14607
14648
  return;
14608
- const tagName = tNode.value;
14609
14649
  // If the element matches any directive, it's considered as valid.
14610
14650
  if (!hasDirectives && tagName !== null) {
14611
- // The element is unknown if it's an instance of HTMLUnknownElement or it isn't registered
14651
+ // The element is unknown if it's an instance of HTMLUnknownElement, or it isn't registered
14612
14652
  // as a custom element. Note that unknown elements with a dash in their name won't be instances
14613
14653
  // of HTMLUnknownElement in browsers that support web components.
14614
14654
  const isUnknown =
@@ -14618,7 +14658,7 @@ function logUnknownElementError(tView, element, tNode, hasDirectives) {
14618
14658
  element instanceof HTMLUnknownElement) ||
14619
14659
  (typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 &&
14620
14660
  !customElements.get(tagName));
14621
- if (isUnknown && !matchingSchemas(tView, tagName)) {
14661
+ if (isUnknown && !matchingSchemas(schemas, tagName)) {
14622
14662
  let message = `'${tagName}' is not a known element:\n`;
14623
14663
  message += `1. If '${tagName}' is an Angular component, then verify that it is part of this module.\n`;
14624
14664
  if (tagName && tagName.indexOf('-') > -1) {
@@ -21088,7 +21128,7 @@ class Version {
21088
21128
  /**
21089
21129
  * @publicApi
21090
21130
  */
21091
- const VERSION = new Version('13.3.1');
21131
+ const VERSION = new Version('13.3.4');
21092
21132
 
21093
21133
  /**
21094
21134
  * @license
@@ -24857,7 +24897,10 @@ const PLATFORM_INITIALIZER = new InjectionToken('Platform Initializer');
24857
24897
  * A token that indicates an opaque platform ID.
24858
24898
  * @publicApi
24859
24899
  */
24860
- const PLATFORM_ID = new InjectionToken('Platform ID');
24900
+ const PLATFORM_ID = new InjectionToken('Platform ID', {
24901
+ providedIn: 'platform',
24902
+ factory: () => 'unknown', // set a default platform name, when none set explicitly
24903
+ });
24861
24904
  /**
24862
24905
  * A [DI token](guide/glossary#di-token "DI token definition") that provides a set of callbacks to
24863
24906
  * be called for every component that is bootstrapped.
@@ -24895,10 +24938,11 @@ class Console {
24895
24938
  }
24896
24939
  }
24897
24940
  Console.ɵfac = function Console_Factory(t) { return new (t || Console)(); };
24898
- Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac });
24941
+ Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac, providedIn: 'platform' });
24899
24942
  (function () {
24900
24943
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Console, [{
24901
- type: Injectable
24944
+ type: Injectable,
24945
+ args: [{ providedIn: 'platform' }]
24902
24946
  }], null, null);
24903
24947
  })();
24904
24948
 
@@ -25861,10 +25905,11 @@ class TestabilityRegistry {
25861
25905
  }
25862
25906
  }
25863
25907
  TestabilityRegistry.ɵfac = function TestabilityRegistry_Factory(t) { return new (t || TestabilityRegistry)(); };
25864
- TestabilityRegistry.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac });
25908
+ TestabilityRegistry.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac, providedIn: 'platform' });
25865
25909
  (function () {
25866
25910
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TestabilityRegistry, [{
25867
- type: Injectable
25911
+ type: Injectable,
25912
+ args: [{ providedIn: 'platform' }]
25868
25913
  }], function () { return []; }, null);
25869
25914
  })();
25870
25915
  class _NoopGetTestability {
@@ -25889,7 +25934,19 @@ let _testabilityGetter = new _NoopGetTestability();
25889
25934
  * Use of this source code is governed by an MIT-style license that can be
25890
25935
  * found in the LICENSE file at https://angular.io/license
25891
25936
  */
25892
- let _platform;
25937
+ let _platformInjector = null;
25938
+ /**
25939
+ * Internal token to indicate whether having multiple bootstrapped platform should be allowed (only
25940
+ * one bootstrapped platform is allowed by default). This token helps to support SSR scenarios.
25941
+ */
25942
+ const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
25943
+ /**
25944
+ * Internal token that allows to register extra callbacks that should be invoked during the
25945
+ * `PlatformRef.destroy` operation. This token is needed to avoid a direct reference to the
25946
+ * `PlatformRef` class (i.e. register the callback via `PlatformRef.onDestroy`), thus making the
25947
+ * entire class tree-shakeable.
25948
+ */
25949
+ const PLATFORM_ON_DESTROY = new InjectionToken('PlatformOnDestroy');
25893
25950
  function compileNgModuleFactory(injector, options, moduleType) {
25894
25951
  ngDevMode && assertNgModuleType(moduleType);
25895
25952
  const moduleFactory = new NgModuleFactory(moduleType);
@@ -25934,7 +25991,6 @@ function publishDefaultGlobalUtils() {
25934
25991
  function isBoundToModule(cf) {
25935
25992
  return cf.isBoundToModule;
25936
25993
  }
25937
- const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
25938
25994
  /**
25939
25995
  * A token for third-party components that can register themselves with NgProbe.
25940
25996
  *
@@ -25953,19 +26009,19 @@ class NgProbeToken {
25953
26009
  * @publicApi
25954
26010
  */
25955
26011
  function createPlatform(injector) {
25956
- if (_platform && !_platform.destroyed &&
25957
- !_platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
26012
+ if (_platformInjector && !_platformInjector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
25958
26013
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
25959
26014
  'There can be only one platform. Destroy the previous one to create a new one.' :
25960
26015
  '';
25961
26016
  throw new RuntimeError(400 /* MULTIPLE_PLATFORMS */, errorMessage);
25962
26017
  }
25963
26018
  publishDefaultGlobalUtils();
25964
- _platform = injector.get(PlatformRef);
26019
+ _platformInjector = injector;
26020
+ const platform = injector.get(PlatformRef);
25965
26021
  const inits = injector.get(PLATFORM_INITIALIZER, null);
25966
26022
  if (inits)
25967
- inits.forEach((init) => init());
25968
- return _platform;
26023
+ inits.forEach(initFn => initFn());
26024
+ return platform;
25969
26025
  }
25970
26026
  /**
25971
26027
  * Creates a factory for a platform. Can be used to provide or override `Providers` specific to
@@ -25984,15 +26040,16 @@ function createPlatformFactory(parentPlatformFactory, name, providers = []) {
25984
26040
  return (extraProviders = []) => {
25985
26041
  let platform = getPlatform();
25986
26042
  if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
26043
+ const platformProviders = [
26044
+ ...providers,
26045
+ ...extraProviders,
26046
+ { provide: marker, useValue: true }
26047
+ ];
25987
26048
  if (parentPlatformFactory) {
25988
- parentPlatformFactory(providers.concat(extraProviders).concat({ provide: marker, useValue: true }));
26049
+ parentPlatformFactory(platformProviders);
25989
26050
  }
25990
26051
  else {
25991
- const injectedProviders = providers.concat(extraProviders).concat({ provide: marker, useValue: true }, {
25992
- provide: INJECTOR_SCOPE,
25993
- useValue: 'platform'
25994
- });
25995
- createPlatform(Injector.create({ providers: injectedProviders, name: desc }));
26052
+ createPlatform(createPlatformInjector(platformProviders, desc));
25996
26053
  }
25997
26054
  }
25998
26055
  return assertPlatform(marker);
@@ -26015,6 +26072,20 @@ function assertPlatform(requiredToken) {
26015
26072
  }
26016
26073
  return platform;
26017
26074
  }
26075
+ /**
26076
+ * Helper function to create an instance of a platform injector (that maintains the 'platform'
26077
+ * scope).
26078
+ */
26079
+ function createPlatformInjector(providers = [], name) {
26080
+ return Injector.create({
26081
+ name,
26082
+ providers: [
26083
+ { provide: INJECTOR_SCOPE, useValue: 'platform' },
26084
+ { provide: PLATFORM_ON_DESTROY, useValue: () => _platformInjector = null },
26085
+ ...providers
26086
+ ],
26087
+ });
26088
+ }
26018
26089
  /**
26019
26090
  * Destroys the current Angular platform and all Angular applications on the page.
26020
26091
  * Destroys all modules and listeners registered with the platform.
@@ -26022,9 +26093,8 @@ function assertPlatform(requiredToken) {
26022
26093
  * @publicApi
26023
26094
  */
26024
26095
  function destroyPlatform() {
26025
- if (_platform && !_platform.destroyed) {
26026
- _platform.destroy();
26027
- }
26096
+ var _a;
26097
+ (_a = getPlatform()) === null || _a === void 0 ? void 0 : _a.destroy();
26028
26098
  }
26029
26099
  /**
26030
26100
  * Returns the current platform.
@@ -26032,7 +26102,8 @@ function destroyPlatform() {
26032
26102
  * @publicApi
26033
26103
  */
26034
26104
  function getPlatform() {
26035
- return _platform && !_platform.destroyed ? _platform : null;
26105
+ var _a;
26106
+ return (_a = _platformInjector === null || _platformInjector === void 0 ? void 0 : _platformInjector.get(PlatformRef)) !== null && _a !== void 0 ? _a : null;
26036
26107
  }
26037
26108
  /**
26038
26109
  * The Angular platform is the entry point for Angular on a web page.
@@ -26170,6 +26241,8 @@ class PlatformRef {
26170
26241
  }
26171
26242
  this._modules.slice().forEach(module => module.destroy());
26172
26243
  this._destroyListeners.forEach(listener => listener());
26244
+ const destroyListener = this._injector.get(PLATFORM_ON_DESTROY, null);
26245
+ destroyListener === null || destroyListener === void 0 ? void 0 : destroyListener();
26173
26246
  this._destroyed = true;
26174
26247
  }
26175
26248
  get destroyed() {
@@ -26177,10 +26250,11 @@ class PlatformRef {
26177
26250
  }
26178
26251
  }
26179
26252
  PlatformRef.ɵfac = function PlatformRef_Factory(t) { return new (t || PlatformRef)(ɵɵinject(Injector)); };
26180
- PlatformRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac });
26253
+ PlatformRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac, providedIn: 'platform' });
26181
26254
  (function () {
26182
26255
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PlatformRef, [{
26183
- type: Injectable
26256
+ type: Injectable,
26257
+ args: [{ providedIn: 'platform' }]
26184
26258
  }], function () { return [{ type: Injector }]; }, null);
26185
26259
  })();
26186
26260
  function getNgZone(ngZoneOption, extra) {
@@ -26319,11 +26393,10 @@ function optionsReducer(dst, objs) {
26319
26393
  */
26320
26394
  class ApplicationRef {
26321
26395
  /** @internal */
26322
- constructor(_zone, _injector, _exceptionHandler, _componentFactoryResolver, _initStatus) {
26396
+ constructor(_zone, _injector, _exceptionHandler, _initStatus) {
26323
26397
  this._zone = _zone;
26324
26398
  this._injector = _injector;
26325
26399
  this._exceptionHandler = _exceptionHandler;
26326
- this._componentFactoryResolver = _componentFactoryResolver;
26327
26400
  this._initStatus = _initStatus;
26328
26401
  /** @internal */
26329
26402
  this._bootstrapListeners = [];
@@ -26439,8 +26512,8 @@ class ApplicationRef {
26439
26512
  componentFactory = componentOrFactory;
26440
26513
  }
26441
26514
  else {
26442
- componentFactory =
26443
- this._componentFactoryResolver.resolveComponentFactory(componentOrFactory);
26515
+ const resolver = this._injector.get(ComponentFactoryResolver$1);
26516
+ componentFactory = resolver.resolveComponentFactory(componentOrFactory);
26444
26517
  }
26445
26518
  this.componentTypes.push(componentFactory.componentType);
26446
26519
  // Create a factory associated with the current module if it's not bound to some other
@@ -26541,13 +26614,13 @@ class ApplicationRef {
26541
26614
  return this._views.length;
26542
26615
  }
26543
26616
  }
26544
- ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(ɵɵinject(NgZone), ɵɵinject(Injector), ɵɵinject(ErrorHandler), ɵɵinject(ComponentFactoryResolver$1), ɵɵinject(ApplicationInitStatus)); };
26617
+ ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(ɵɵinject(NgZone), ɵɵinject(Injector), ɵɵinject(ErrorHandler), ɵɵinject(ApplicationInitStatus)); };
26545
26618
  ApplicationRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' });
26546
26619
  (function () {
26547
26620
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
26548
26621
  type: Injectable,
26549
26622
  args: [{ providedIn: 'root' }]
26550
- }], function () { return [{ type: NgZone }, { type: Injector }, { type: ErrorHandler }, { type: ComponentFactoryResolver$1 }, { type: ApplicationInitStatus }]; }, null);
26623
+ }], function () { return [{ type: NgZone }, { type: Injector }, { type: ErrorHandler }, { type: ApplicationInitStatus }]; }, null);
26551
26624
  })();
26552
26625
  function remove(list, el) {
26553
26626
  const index = list.indexOf(el);
@@ -28530,19 +28603,12 @@ const defaultKeyValueDiffers = new KeyValueDiffers(keyValDiff);
28530
28603
  * Use of this source code is governed by an MIT-style license that can be
28531
28604
  * found in the LICENSE file at https://angular.io/license
28532
28605
  */
28533
- const _CORE_PLATFORM_PROVIDERS = [
28534
- // Set a default platform name for platforms that don't set it explicitly.
28535
- { provide: PLATFORM_ID, useValue: 'unknown' },
28536
- { provide: PlatformRef, deps: [Injector] },
28537
- { provide: TestabilityRegistry, deps: [] },
28538
- { provide: Console, deps: [] },
28539
- ];
28540
28606
  /**
28541
28607
  * This platform has to be included in any other platform
28542
28608
  *
28543
28609
  * @publicApi
28544
28610
  */
28545
- const platformCore = createPlatformFactory(null, 'core', _CORE_PLATFORM_PROVIDERS);
28611
+ const platformCore = createPlatformFactory(null, 'core', []);
28546
28612
 
28547
28613
  /**
28548
28614
  * Re-exported by `BrowserModule`, which is included automatically in the root