@angular/core 15.0.0-next.4 → 15.0.0-next.6

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 (47) hide show
  1. package/esm2020/src/application_ref.mjs +1 -1
  2. package/esm2020/src/core_private_export.mjs +2 -1
  3. package/esm2020/src/di/index.mjs +2 -2
  4. package/esm2020/src/di/injectable.mjs +1 -1
  5. package/esm2020/src/di/injection_token.mjs +6 -3
  6. package/esm2020/src/di/interface/defs.mjs +1 -1
  7. package/esm2020/src/di/interface/provider.mjs +4 -2
  8. package/esm2020/src/di/provider_collection.mjs +30 -4
  9. package/esm2020/src/di/r3_injector.mjs +4 -6
  10. package/esm2020/src/errors.mjs +1 -1
  11. package/esm2020/src/metadata/directives.mjs +1 -1
  12. package/esm2020/src/metadata/ng_module.mjs +1 -1
  13. package/esm2020/src/render3/component_ref.mjs +20 -10
  14. package/esm2020/src/render3/errors_di.mjs +9 -3
  15. package/esm2020/src/render3/features/host_directives_feature.mjs +101 -9
  16. package/esm2020/src/render3/features/ng_onchanges_feature.mjs +4 -2
  17. package/esm2020/src/render3/instructions/shared.mjs +70 -34
  18. package/esm2020/src/render3/interfaces/definition.mjs +1 -1
  19. package/esm2020/src/render3/jit/directive.mjs +2 -6
  20. package/esm2020/src/render3/jit/module.mjs +2 -2
  21. package/esm2020/src/render3/ng_module_ref.mjs +1 -1
  22. package/esm2020/src/version.mjs +1 -1
  23. package/esm2020/testing/src/logger.mjs +3 -3
  24. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  25. package/esm2020/testing/src/test_bed_compiler.mjs +29 -11
  26. package/fesm2015/core.mjs +243 -69
  27. package/fesm2015/core.mjs.map +1 -1
  28. package/fesm2015/testing.mjs +269 -73
  29. package/fesm2015/testing.mjs.map +1 -1
  30. package/fesm2020/core.mjs +243 -69
  31. package/fesm2020/core.mjs.map +1 -1
  32. package/fesm2020/testing.mjs +269 -73
  33. package/fesm2020/testing.mjs.map +1 -1
  34. package/index.d.ts +103 -32
  35. package/package.json +2 -2
  36. package/schematics/migrations/relative-link-resolution/index.d.ts +10 -0
  37. package/schematics/migrations/relative-link-resolution/index.js +68 -0
  38. package/schematics/migrations/relative-link-resolution/util.d.ts +20 -0
  39. package/schematics/migrations/relative-link-resolution/util.js +82 -0
  40. package/schematics/migrations/router-link-with-href/index.d.ts +10 -0
  41. package/schematics/migrations/router-link-with-href/index.js +70 -0
  42. package/schematics/migrations/router-link-with-href/util.d.ts +19 -0
  43. package/schematics/migrations/router-link-with-href/util.js +111 -0
  44. package/schematics/migrations.json +10 -0
  45. package/schematics/utils/typescript/imports.d.ts +10 -0
  46. package/schematics/utils/typescript/imports.js +17 -2
  47. package/testing/index.d.ts +1 -1
package/fesm2020/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v15.0.0-next.4
2
+ * @license Angular v15.0.0-next.6
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -129,6 +129,17 @@ function isForwardRef(fn) {
129
129
  fn.__forward_ref__ === forwardRef;
130
130
  }
131
131
 
132
+ /**
133
+ * @license
134
+ * Copyright Google LLC All Rights Reserved.
135
+ *
136
+ * Use of this source code is governed by an MIT-style license that can be
137
+ * found in the LICENSE file at https://angular.io/license
138
+ */
139
+ function isEnvironmentProviders(value) {
140
+ return value && !!value.ɵproviders;
141
+ }
142
+
132
143
  /**
133
144
  * @license
134
145
  * Copyright Google LLC All Rights Reserved.
@@ -247,8 +258,13 @@ function throwInvalidProviderError(ngModuleType, providers, provider) {
247
258
  const providerDetail = providers.map(v => v == provider ? '?' + provider + '?' : '...');
248
259
  throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}' - only instances of Provider and Type are allowed, got: [${providerDetail.join(', ')}]`);
249
260
  }
250
- else if (provider.ɵproviders) {
251
- throw new RuntimeError(207 /* RuntimeErrorCode.PROVIDER_IN_WRONG_CONTEXT */, `Invalid providers from 'importProvidersFrom' present in a non-environment injector. 'importProvidersFrom' can't be used for component providers.`);
261
+ else if (isEnvironmentProviders(provider)) {
262
+ if (provider.ɵfromNgModule) {
263
+ throw new RuntimeError(207 /* RuntimeErrorCode.PROVIDER_IN_WRONG_CONTEXT */, `Invalid providers from 'importProvidersFrom' present in a non-environment injector. 'importProvidersFrom' can't be used for component providers.`);
264
+ }
265
+ else {
266
+ throw new RuntimeError(207 /* RuntimeErrorCode.PROVIDER_IN_WRONG_CONTEXT */, `Invalid providers present in a non-environment injector. 'EnvironmentProviders' can't be used for component providers.`);
267
+ }
252
268
  }
253
269
  else {
254
270
  throw new Error('Invalid provider');
@@ -1759,11 +1775,12 @@ function rememberChangeHistoryAndInvokeOnChangesHook() {
1759
1775
  }
1760
1776
  }
1761
1777
  function ngOnChangesSetInput(instance, value, publicName, privateName) {
1778
+ const declaredName = this.declaredInputs[publicName];
1779
+ ngDevMode && assertString(declaredName, 'Name of input in ngOnChanges has to be a string');
1762
1780
  const simpleChangesStore = getSimpleChangesStore(instance) ||
1763
1781
  setSimpleChangesStore(instance, { previous: EMPTY_OBJ, current: null });
1764
1782
  const current = simpleChangesStore.current || (simpleChangesStore.current = {});
1765
1783
  const previous = simpleChangesStore.previous;
1766
- const declaredName = this.declaredInputs[publicName];
1767
1784
  const previousChange = previous[declaredName];
1768
1785
  current[declaredName] = new SimpleChange(previousChange && previousChange.currentValue, value, previous === EMPTY_OBJ);
1769
1786
  instance[privateName] = value;
@@ -4127,8 +4144,11 @@ const Attribute = makeParamDecorator('Attribute', (attributeName) => ({ attribut
4127
4144
  * As you can see in the Tree-shakable InjectionToken example below.
4128
4145
  *
4129
4146
  * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which
4130
- * overrides the above behavior and marks the token as belonging to a particular `@NgModule`. As
4131
- * mentioned above, `'root'` is the default value for `providedIn`.
4147
+ * overrides the above behavior and marks the token as belonging to a particular `@NgModule` (note:
4148
+ * this option is now deprecated). As mentioned above, `'root'` is the default value for
4149
+ * `providedIn`.
4150
+ *
4151
+ * The `providedIn: NgModule` and `providedIn: 'any'` options are deprecated.
4132
4152
  *
4133
4153
  * @usageNotes
4134
4154
  * ### Basic Examples
@@ -6385,6 +6405,15 @@ class NullInjector {
6385
6405
  * Use of this source code is governed by an MIT-style license that can be
6386
6406
  * found in the LICENSE file at https://angular.io/license
6387
6407
  */
6408
+ /**
6409
+ * Wrap an array of `Provider`s into `EnvironmentProviders`, preventing them from being accidentally
6410
+ * referenced in `@Component in a component injector.
6411
+ */
6412
+ function makeEnvironmentProviders(providers) {
6413
+ return {
6414
+ ɵproviders: providers,
6415
+ };
6416
+ }
6388
6417
  /**
6389
6418
  * Collects providers from all NgModules and standalone components, including transitively imported
6390
6419
  * ones.
@@ -6427,7 +6456,10 @@ class NullInjector {
6427
6456
  * @developerPreview
6428
6457
  */
6429
6458
  function importProvidersFrom(...sources) {
6430
- return { ɵproviders: internalImportProvidersFrom(true, sources) };
6459
+ return {
6460
+ ɵproviders: internalImportProvidersFrom(true, sources),
6461
+ ɵfromNgModule: true,
6462
+ };
6431
6463
  }
6432
6464
  function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) {
6433
6465
  const providersOut = [];
@@ -6460,7 +6492,7 @@ function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) {
6460
6492
  function processInjectorTypesWithProviders(typesWithProviders, providersOut) {
6461
6493
  for (let i = 0; i < typesWithProviders.length; i++) {
6462
6494
  const { ngModule, providers } = typesWithProviders[i];
6463
- deepForEach(providers, provider => {
6495
+ deepForEachProvider(providers, provider => {
6464
6496
  ngDevMode && validateProvider(provider, providers || EMPTY_ARRAY, ngModule);
6465
6497
  providersOut.push(provider);
6466
6498
  });
@@ -6577,7 +6609,7 @@ function walkProviderTree(container, providersOut, parents, dedup) {
6577
6609
  const defProviders = injDef.providers;
6578
6610
  if (defProviders != null && !isDuplicate) {
6579
6611
  const injectorType = container;
6580
- deepForEach(defProviders, provider => {
6612
+ deepForEachProvider(defProviders, provider => {
6581
6613
  ngDevMode && validateProvider(provider, defProviders, injectorType);
6582
6614
  providersOut.push(provider);
6583
6615
  });
@@ -6601,6 +6633,19 @@ function validateProvider(provider, providers, containerType) {
6601
6633
  throwInvalidProviderError(containerType, providers, provider);
6602
6634
  }
6603
6635
  }
6636
+ function deepForEachProvider(providers, fn) {
6637
+ for (let provider of providers) {
6638
+ if (isEnvironmentProviders(provider)) {
6639
+ provider = provider.ɵproviders;
6640
+ }
6641
+ if (Array.isArray(provider)) {
6642
+ deepForEachProvider(provider, fn);
6643
+ }
6644
+ else {
6645
+ fn(provider);
6646
+ }
6647
+ }
6648
+ }
6604
6649
  const USE_VALUE$1 = getClosureSafeProperty({ provide: String, useValue: getClosureSafeProperty });
6605
6650
  function isValueProvider(value) {
6606
6651
  return value !== null && typeof value == 'object' && USE_VALUE$1 in value;
@@ -6966,7 +7011,7 @@ function providerToRecord(provider) {
6966
7011
  */
6967
7012
  function providerToFactory(provider, ngModuleType, providers) {
6968
7013
  let factory = undefined;
6969
- if (ngDevMode && isImportedNgModuleProviders(provider)) {
7014
+ if (ngDevMode && isEnvironmentProviders(provider)) {
6970
7015
  throwInvalidProviderError(undefined, providers, provider);
6971
7016
  }
6972
7017
  if (isTypeProvider(provider)) {
@@ -7017,15 +7062,12 @@ function couldBeInjectableType(value) {
7017
7062
  return (typeof value === 'function') ||
7018
7063
  (typeof value === 'object' && value instanceof InjectionToken);
7019
7064
  }
7020
- function isImportedNgModuleProviders(provider) {
7021
- return !!provider.ɵproviders;
7022
- }
7023
7065
  function forEachSingleProvider(providers, fn) {
7024
7066
  for (const provider of providers) {
7025
7067
  if (Array.isArray(provider)) {
7026
7068
  forEachSingleProvider(provider, fn);
7027
7069
  }
7028
- else if (isImportedNgModuleProviders(provider)) {
7070
+ else if (provider && isEnvironmentProviders(provider)) {
7029
7071
  forEachSingleProvider(provider.ɵproviders, fn);
7030
7072
  }
7031
7073
  else {
@@ -7256,7 +7298,7 @@ class Version {
7256
7298
  /**
7257
7299
  * @publicApi
7258
7300
  */
7259
- const VERSION = new Version('15.0.0-next.4');
7301
+ const VERSION = new Version('15.0.0-next.6');
7260
7302
 
7261
7303
  /**
7262
7304
  * @license
@@ -12279,9 +12321,6 @@ function createViewBlueprint(bindingStartIndex, initialViewLength) {
12279
12321
  }
12280
12322
  return blueprint;
12281
12323
  }
12282
- function createError(text, token) {
12283
- return new Error(`Renderer: ${text} [${stringifyForError(token)}]`);
12284
- }
12285
12324
  /**
12286
12325
  * Locates the host native element, used for bootstrapping existing nodes into rendering pipeline.
12287
12326
  *
@@ -12405,26 +12444,49 @@ function createTNode(tView, tParent, type, index, value, attrs) {
12405
12444
  }
12406
12445
  return tNode;
12407
12446
  }
12408
- function generatePropertyAliases(inputAliasMap, directiveDefIdx, propStore) {
12409
- for (let publicName in inputAliasMap) {
12410
- if (inputAliasMap.hasOwnProperty(publicName)) {
12411
- propStore = propStore === null ? {} : propStore;
12412
- const internalName = inputAliasMap[publicName];
12413
- if (propStore.hasOwnProperty(publicName)) {
12414
- propStore[publicName].push(directiveDefIdx, internalName);
12447
+ /**
12448
+ * Generates the `PropertyAliases` data structure from the provided input/output mapping.
12449
+ * @param aliasMap Input/output mapping from the directive definition.
12450
+ * @param directiveIndex Index of the directive.
12451
+ * @param propertyAliases Object in which to store the results.
12452
+ * @param hostDirectiveAliasMap Object used to alias or filter out properties for host directives.
12453
+ * If the mapping is provided, it'll act as an allowlist, as well as a mapping of what public
12454
+ * name inputs/outputs should be exposed under.
12455
+ */
12456
+ function generatePropertyAliases(aliasMap, directiveIndex, propertyAliases, hostDirectiveAliasMap) {
12457
+ for (let publicName in aliasMap) {
12458
+ if (aliasMap.hasOwnProperty(publicName)) {
12459
+ propertyAliases = propertyAliases === null ? {} : propertyAliases;
12460
+ const internalName = aliasMap[publicName];
12461
+ // If there are no host directive mappings, we want to remap using the alias map from the
12462
+ // definition itself. If there is an alias map, it has two functions:
12463
+ // 1. It serves as an allowlist of bindings that are exposed by the host directives. Only the
12464
+ // ones inside the host directive map will be exposed on the host.
12465
+ // 2. The public name of the property is aliased using the host directive alias map, rather
12466
+ // than the alias map from the definition.
12467
+ if (hostDirectiveAliasMap === null) {
12468
+ addPropertyAlias(propertyAliases, directiveIndex, publicName, internalName);
12415
12469
  }
12416
- else {
12417
- (propStore[publicName] = [directiveDefIdx, internalName]);
12470
+ else if (hostDirectiveAliasMap.hasOwnProperty(publicName)) {
12471
+ addPropertyAlias(propertyAliases, directiveIndex, hostDirectiveAliasMap[publicName], internalName);
12418
12472
  }
12419
12473
  }
12420
12474
  }
12421
- return propStore;
12475
+ return propertyAliases;
12476
+ }
12477
+ function addPropertyAlias(propertyAliases, directiveIndex, publicName, internalName) {
12478
+ if (propertyAliases.hasOwnProperty(publicName)) {
12479
+ propertyAliases[publicName].push(directiveIndex, internalName);
12480
+ }
12481
+ else {
12482
+ propertyAliases[publicName] = [directiveIndex, internalName];
12483
+ }
12422
12484
  }
12423
12485
  /**
12424
12486
  * Initializes data structures required to work with directive inputs and outputs.
12425
12487
  * Initialization is done for all directives matched on a given TNode.
12426
12488
  */
12427
- function initializeInputAndOutputAliases(tView, tNode) {
12489
+ function initializeInputAndOutputAliases(tView, tNode, hostDirectiveDefinitionMap) {
12428
12490
  ngDevMode && assertFirstCreatePass(tView);
12429
12491
  const start = tNode.directiveStart;
12430
12492
  const end = tNode.directiveEnd;
@@ -12433,16 +12495,21 @@ function initializeInputAndOutputAliases(tView, tNode) {
12433
12495
  const inputsFromAttrs = ngDevMode ? new TNodeInitialInputs() : [];
12434
12496
  let inputsStore = null;
12435
12497
  let outputsStore = null;
12436
- for (let i = start; i < end; i++) {
12437
- const directiveDef = tViewData[i];
12438
- inputsStore = generatePropertyAliases(directiveDef.inputs, i, inputsStore);
12439
- outputsStore = generatePropertyAliases(directiveDef.outputs, i, outputsStore);
12498
+ for (let directiveIndex = start; directiveIndex < end; directiveIndex++) {
12499
+ const directiveDef = tViewData[directiveIndex];
12500
+ const aliasData = hostDirectiveDefinitionMap ? hostDirectiveDefinitionMap.get(directiveDef) : null;
12501
+ const aliasedInputs = aliasData ? aliasData.inputs : null;
12502
+ const aliasedOutputs = aliasData ? aliasData.outputs : null;
12503
+ inputsStore =
12504
+ generatePropertyAliases(directiveDef.inputs, directiveIndex, inputsStore, aliasedInputs);
12505
+ outputsStore =
12506
+ generatePropertyAliases(directiveDef.outputs, directiveIndex, outputsStore, aliasedOutputs);
12440
12507
  // Do not use unbound attributes as inputs to structural directives, since structural
12441
12508
  // directive inputs can only be set using microsyntax (e.g. `<div *dir="exp">`).
12442
12509
  // TODO(FW-1930): microsyntax expressions may also contain unbound/static attributes, which
12443
12510
  // should be set for inline templates.
12444
12511
  const initialInputs = (inputsStore !== null && tNodeAttrs !== null && !isInlineTemplate(tNode)) ?
12445
- generateInitialInputs(inputsStore, i, tNodeAttrs) :
12512
+ generateInitialInputs(inputsStore, directiveIndex, tNodeAttrs) :
12446
12513
  null;
12447
12514
  inputsFromAttrs.push(initialInputs);
12448
12515
  }
@@ -12567,16 +12634,19 @@ function resolveDirectives(tView, lView, tNode, localRefs) {
12567
12634
  ngDevMode && assertFirstCreatePass(tView);
12568
12635
  let hasDirectives = false;
12569
12636
  if (getBindingsEnabled()) {
12570
- const directiveDefs = findDirectiveDefMatches(tView, lView, tNode);
12571
12637
  const exportsMap = localRefs === null ? null : { '': -1 };
12638
+ const matchResult = findDirectiveDefMatches(tView, tNode);
12639
+ let directiveDefs;
12640
+ let hostDirectiveDefs;
12641
+ if (matchResult === null) {
12642
+ directiveDefs = hostDirectiveDefs = null;
12643
+ }
12644
+ else {
12645
+ [directiveDefs, hostDirectiveDefs] = matchResult;
12646
+ }
12572
12647
  if (directiveDefs !== null) {
12573
- // Publishes the directive types to DI so they can be injected. Needs to
12574
- // happen in a separate pass before the TNode flags have been initialized.
12575
- for (let i = 0; i < directiveDefs.length; i++) {
12576
- diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, directiveDefs[i].type);
12577
- }
12578
12648
  hasDirectives = true;
12579
- initializeDirectives(tView, lView, tNode, directiveDefs, exportsMap);
12649
+ initializeDirectives(tView, lView, tNode, directiveDefs, exportsMap, hostDirectiveDefs);
12580
12650
  }
12581
12651
  if (exportsMap)
12582
12652
  cacheMatchingLocalNames(tNode, localRefs, exportsMap);
@@ -12586,8 +12656,13 @@ function resolveDirectives(tView, lView, tNode, localRefs) {
12586
12656
  return hasDirectives;
12587
12657
  }
12588
12658
  /** Initializes the data structures necessary for a list of directives to be instantiated. */
12589
- function initializeDirectives(tView, lView, tNode, directives, exportsMap) {
12659
+ function initializeDirectives(tView, lView, tNode, directives, exportsMap, hostDirectiveDefs) {
12590
12660
  ngDevMode && assertFirstCreatePass(tView);
12661
+ // Publishes the directive types to DI so they can be injected. Needs to
12662
+ // happen in a separate pass before the TNode flags have been initialized.
12663
+ for (let i = 0; i < directives.length; i++) {
12664
+ diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, directives[i].type);
12665
+ }
12591
12666
  initTNodeFlags(tNode, tView.data.length, directives.length);
12592
12667
  // When the same token is provided by several directives on the same node, some rules apply in
12593
12668
  // the viewEngine:
@@ -12633,7 +12708,7 @@ function initializeDirectives(tView, lView, tNode, directives, exportsMap) {
12633
12708
  }
12634
12709
  directiveIdx++;
12635
12710
  }
12636
- initializeInputAndOutputAliases(tView, tNode);
12711
+ initializeInputAndOutputAliases(tView, tNode, hostDirectiveDefs);
12637
12712
  }
12638
12713
  /**
12639
12714
  * Add `hostBindings` to the `TView.hostBindingOpCodes`.
@@ -12745,11 +12820,12 @@ function invokeHostBindingsInCreationMode(def, directive) {
12745
12820
  * Matches the current node against all available selectors.
12746
12821
  * If a component is matched (at most one), it is returned in first position in the array.
12747
12822
  */
12748
- function findDirectiveDefMatches(tView, lView, tNode) {
12823
+ function findDirectiveDefMatches(tView, tNode) {
12749
12824
  ngDevMode && assertFirstCreatePass(tView);
12750
12825
  ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);
12751
12826
  const registry = tView.directiveRegistry;
12752
12827
  let matches = null;
12828
+ let hostDirectiveDefs = null;
12753
12829
  if (registry) {
12754
12830
  for (let i = 0; i < registry.length; i++) {
12755
12831
  const def = registry[i];
@@ -12775,7 +12851,8 @@ function findDirectiveDefMatches(tView, lView, tNode) {
12775
12851
  // 4. Selector-matched directives.
12776
12852
  if (def.findHostDirectiveDefs !== null) {
12777
12853
  const hostDirectiveMatches = [];
12778
- def.findHostDirectiveDefs(hostDirectiveMatches, def, tView, lView, tNode);
12854
+ hostDirectiveDefs = hostDirectiveDefs || new Map();
12855
+ def.findHostDirectiveDefs(def, hostDirectiveMatches, hostDirectiveDefs);
12779
12856
  // Add all host directives declared on this component, followed by the component itself.
12780
12857
  // Host directives should execute first so the host has a chance to override changes
12781
12858
  // to the DOM made by them.
@@ -12793,13 +12870,14 @@ function findDirectiveDefMatches(tView, lView, tNode) {
12793
12870
  }
12794
12871
  else {
12795
12872
  // Append any host directives to the matches first.
12796
- def.findHostDirectiveDefs?.(matches, def, tView, lView, tNode);
12873
+ hostDirectiveDefs = hostDirectiveDefs || new Map();
12874
+ def.findHostDirectiveDefs?.(def, matches, hostDirectiveDefs);
12797
12875
  matches.push(def);
12798
12876
  }
12799
12877
  }
12800
12878
  }
12801
12879
  }
12802
- return matches;
12880
+ return matches === null ? null : [matches, hostDirectiveDefs];
12803
12881
  }
12804
12882
  /**
12805
12883
  * Marks a given TNode as a component's host. This consists of:
@@ -13880,15 +13958,26 @@ class ComponentFactory extends ComponentFactory$1 {
13880
13958
  let component;
13881
13959
  let tElementNode;
13882
13960
  try {
13883
- const rootDirectives = [this.componentDef];
13961
+ const rootComponentDef = this.componentDef;
13962
+ let rootDirectives;
13963
+ let hostDirectiveDefs = null;
13964
+ if (rootComponentDef.findHostDirectiveDefs) {
13965
+ rootDirectives = [];
13966
+ hostDirectiveDefs = new Map();
13967
+ rootComponentDef.findHostDirectiveDefs(rootComponentDef, rootDirectives, hostDirectiveDefs);
13968
+ rootDirectives.push(rootComponentDef);
13969
+ }
13970
+ else {
13971
+ rootDirectives = [rootComponentDef];
13972
+ }
13884
13973
  const hostTNode = createRootComponentTNode(rootLView, hostRNode);
13885
- const componentView = createRootComponentView(hostTNode, hostRNode, this.componentDef, rootDirectives, rootLView, rendererFactory, hostRenderer);
13974
+ const componentView = createRootComponentView(hostTNode, hostRNode, rootComponentDef, rootDirectives, rootLView, rendererFactory, hostRenderer);
13886
13975
  tElementNode = getTNode(rootTView, HEADER_OFFSET);
13887
13976
  // TODO(crisbeto): in practice `hostRNode` should always be defined, but there are some tests
13888
13977
  // where the renderer is mocked out and `undefined` is returned. We should update the tests so
13889
13978
  // that this check can be removed.
13890
13979
  if (hostRNode) {
13891
- setRootNodeAttributes(hostRenderer, this.componentDef, hostRNode, rootSelectorOrNode);
13980
+ setRootNodeAttributes(hostRenderer, rootComponentDef, hostRNode, rootSelectorOrNode);
13892
13981
  }
13893
13982
  if (projectableNodes !== undefined) {
13894
13983
  projectNodes(tElementNode, this.ngContentSelectors, projectableNodes);
@@ -13896,7 +13985,7 @@ class ComponentFactory extends ComponentFactory$1 {
13896
13985
  // TODO: should LifecycleHooksFeature and other host features be generated by the compiler and
13897
13986
  // executed here?
13898
13987
  // Angular 5 reference: https://stackblitz.com/edit/lifecycle-hooks-vcref
13899
- component = createRootComponent(componentView, this.componentDef, rootDirectives, rootLView, [LifecycleHooksFeature]);
13988
+ component = createRootComponent(componentView, rootComponentDef, rootDirectives, hostDirectiveDefs, rootLView, [LifecycleHooksFeature]);
13900
13989
  renderView(rootTView, rootLView, null);
13901
13990
  }
13902
13991
  finally {
@@ -13996,8 +14085,7 @@ function createRootComponentView(tNode, rNode, rootComponentDef, rootDirectives,
13996
14085
  const viewRenderer = rendererFactory.createRenderer(rNode, rootComponentDef);
13997
14086
  const componentView = createLView(rootView, getOrCreateComponentTView(rootComponentDef), null, rootComponentDef.onPush ? 32 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, rootView[tNode.index], tNode, rendererFactory, viewRenderer, sanitizer || null, null, null);
13998
14087
  if (tView.firstCreatePass) {
13999
- diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, rootView), tView, rootComponentDef.type);
14000
- markAsComponentHost(tView, tNode, 0);
14088
+ markAsComponentHost(tView, tNode, rootDirectives.length - 1);
14001
14089
  }
14002
14090
  addToViewTree(rootView, componentView);
14003
14091
  // Store component view at node index, with node as the HOST
@@ -14019,12 +14107,12 @@ function applyRootComponentStyling(rootDirectives, tNode, rNode, hostRenderer) {
14019
14107
  * Creates a root component and sets it up with features and host bindings.Shared by
14020
14108
  * renderComponent() and ViewContainerRef.createComponent().
14021
14109
  */
14022
- function createRootComponent(componentView, rootComponentDef, rootDirectives, rootLView, hostFeatures) {
14110
+ function createRootComponent(componentView, rootComponentDef, rootDirectives, hostDirectiveDefs, rootLView, hostFeatures) {
14023
14111
  const rootTNode = getCurrentTNode();
14024
14112
  ngDevMode && assertDefined(rootTNode, 'tNode should have been already created');
14025
14113
  const tView = rootLView[TVIEW];
14026
14114
  const native = getNativeByTNode(rootTNode, rootLView);
14027
- initializeDirectives(tView, rootLView, rootTNode, rootDirectives, null);
14115
+ initializeDirectives(tView, rootLView, rootTNode, rootDirectives, null, hostDirectiveDefs);
14028
14116
  for (let i = 0; i < rootDirectives.length; i++) {
14029
14117
  const directiveIndex = rootTNode.directiveStart + i;
14030
14118
  const directiveInstance = getNodeInjectable(rootLView, tView, directiveIndex, rootTNode);
@@ -14345,7 +14433,7 @@ function ɵɵCopyDefinitionFeature(definition) {
14345
14433
  * found in the LICENSE file at https://angular.io/license
14346
14434
  */
14347
14435
  /**
14348
- * This feature add the host directives behavior to a directive definition by patching a
14436
+ * This feature adds the host directives behavior to a directive definition by patching a
14349
14437
  * function onto it. The expectation is that the runtime will invoke the function during
14350
14438
  * directive matching.
14351
14439
  *
@@ -14379,14 +14467,20 @@ function ɵɵHostDirectivesFeature(rawHostDirectives) {
14379
14467
  });
14380
14468
  };
14381
14469
  }
14382
- function findHostDirectiveDefs(matches, def, tView, lView, tNode) {
14383
- if (def.hostDirectives !== null) {
14384
- for (const hostDirectiveConfig of def.hostDirectives) {
14470
+ function findHostDirectiveDefs(currentDef, matchedDefs, hostDirectiveDefs) {
14471
+ if (currentDef.hostDirectives !== null) {
14472
+ for (const hostDirectiveConfig of currentDef.hostDirectives) {
14385
14473
  const hostDirectiveDef = getDirectiveDef(hostDirectiveConfig.directive);
14386
- // TODO(crisbeto): assert that the def exists.
14474
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
14475
+ validateHostDirective(hostDirectiveConfig, hostDirectiveDef, matchedDefs);
14476
+ }
14477
+ // We need to patch the `declaredInputs` so that
14478
+ // `ngOnChanges` can map the properties correctly.
14479
+ patchDeclaredInputs(hostDirectiveDef.declaredInputs, hostDirectiveConfig.inputs);
14387
14480
  // Host directives execute before the host so that its host bindings can be overwritten.
14388
- findHostDirectiveDefs(matches, hostDirectiveDef, tView, lView, tNode);
14389
- matches.push(hostDirectiveDef);
14481
+ findHostDirectiveDefs(hostDirectiveDef, matchedDefs, hostDirectiveDefs);
14482
+ hostDirectiveDefs.set(hostDirectiveDef, hostDirectiveConfig);
14483
+ matchedDefs.push(hostDirectiveDef);
14390
14484
  }
14391
14485
  }
14392
14486
  }
@@ -14404,6 +14498,90 @@ function bindingArrayToMap(bindings) {
14404
14498
  }
14405
14499
  return result;
14406
14500
  }
14501
+ /**
14502
+ * `ngOnChanges` has some leftover legacy ViewEngine behavior where the keys inside the
14503
+ * `SimpleChanges` event refer to the *declared* name of the input, not its public name or its
14504
+ * minified name. E.g. in `@Input('alias') foo: string`, the name in the `SimpleChanges` object
14505
+ * will always be `foo`, and not `alias` or the minified name of `foo` in apps using property
14506
+ * minification.
14507
+ *
14508
+ * This is achieved through the `DirectiveDef.declaredInputs` map that is constructed when the
14509
+ * definition is declared. When a property is written to the directive instance, the
14510
+ * `NgOnChangesFeature` will try to remap the property name being written to using the
14511
+ * `declaredInputs`.
14512
+ *
14513
+ * Since the host directive input remapping happens during directive matching, `declaredInputs`
14514
+ * won't contain the new alias that the input is available under. This function addresses the
14515
+ * issue by patching the host directive aliases to the `declaredInputs`. There is *not* a risk of
14516
+ * this patching accidentally introducing new inputs to the host directive, because `declaredInputs`
14517
+ * is used *only* by the `NgOnChangesFeature` when determining what name is used in the
14518
+ * `SimpleChanges` object which won't be reached if an input doesn't exist.
14519
+ */
14520
+ function patchDeclaredInputs(declaredInputs, exposedInputs) {
14521
+ for (const publicName in exposedInputs) {
14522
+ if (exposedInputs.hasOwnProperty(publicName)) {
14523
+ const remappedPublicName = exposedInputs[publicName];
14524
+ const privateName = declaredInputs[publicName];
14525
+ // We *technically* shouldn't be able to hit this case because we can't have multiple
14526
+ // inputs on the same property and we have validations against conflicting aliases in
14527
+ // `validateMappings`. If we somehow did, it would lead to `ngOnChanges` being invoked
14528
+ // with the wrong name so we have a non-user-friendly assertion here just in case.
14529
+ if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
14530
+ declaredInputs.hasOwnProperty(remappedPublicName)) {
14531
+ assertEqual(declaredInputs[remappedPublicName], declaredInputs[publicName], `Conflicting host directive input alias ${publicName}.`);
14532
+ }
14533
+ declaredInputs[remappedPublicName] = privateName;
14534
+ }
14535
+ }
14536
+ }
14537
+ /**
14538
+ * Verifies that the host directive has been configured correctly.
14539
+ * @param hostDirectiveConfig Host directive configuration object.
14540
+ * @param directiveDef Directive definition of the host directive.
14541
+ * @param matchedDefs Directives that have been matched so far.
14542
+ */
14543
+ function validateHostDirective(hostDirectiveConfig, directiveDef, matchedDefs) {
14544
+ // TODO(crisbeto): implement more of these checks in the compiler.
14545
+ const type = hostDirectiveConfig.directive;
14546
+ if (directiveDef === null) {
14547
+ if (getComponentDef(type) !== null) {
14548
+ throw new RuntimeError(310 /* RuntimeErrorCode.HOST_DIRECTIVE_COMPONENT */, `Host directive ${type.name} cannot be a component.`);
14549
+ }
14550
+ throw new RuntimeError(307 /* RuntimeErrorCode.HOST_DIRECTIVE_UNRESOLVABLE */, `Could not resolve metadata for host directive ${type.name}. ` +
14551
+ `Make sure that the ${type.name} class is annotated with an @Directive decorator.`);
14552
+ }
14553
+ if (!directiveDef.standalone) {
14554
+ throw new RuntimeError(308 /* RuntimeErrorCode.HOST_DIRECTIVE_NOT_STANDALONE */, `Host directive ${directiveDef.type.name} must be standalone.`);
14555
+ }
14556
+ if (matchedDefs.indexOf(directiveDef) > -1) {
14557
+ throw new RuntimeError(309 /* RuntimeErrorCode.DUPLICATE_DIRECTITVE */, `Directive ${directiveDef.type.name} matches multiple times on the same element. ` +
14558
+ `Directives can only match an element once.`);
14559
+ }
14560
+ validateMappings('input', directiveDef, hostDirectiveConfig.inputs);
14561
+ validateMappings('output', directiveDef, hostDirectiveConfig.outputs);
14562
+ }
14563
+ /**
14564
+ * Checks that the host directive inputs/outputs configuration is valid.
14565
+ * @param bindingType Kind of binding that is being validated. Used in the error message.
14566
+ * @param def Definition of the host directive that is being validated against.
14567
+ * @param hostDirectiveDefs Host directive mapping object that shold be validated.
14568
+ */
14569
+ function validateMappings(bindingType, def, hostDirectiveDefs) {
14570
+ const className = def.type.name;
14571
+ const bindings = bindingType === 'input' ? def.inputs : def.outputs;
14572
+ for (const publicName in hostDirectiveDefs) {
14573
+ if (hostDirectiveDefs.hasOwnProperty(publicName)) {
14574
+ if (!bindings.hasOwnProperty(publicName)) {
14575
+ throw new RuntimeError(311 /* RuntimeErrorCode.HOST_DIRECTIVE_UNDEFINED_BINDING */, `Directive ${className} does not have an ${bindingType} with a public name of ${publicName}.`);
14576
+ }
14577
+ const remappedPublicName = hostDirectiveDefs[publicName];
14578
+ if (bindings.hasOwnProperty(remappedPublicName) &&
14579
+ bindings[remappedPublicName] !== publicName) {
14580
+ throw new RuntimeError(312 /* RuntimeErrorCode.HOST_DIRECTIVE_CONFLICTING_ALIAS */, `Cannot alias ${bindingType} ${publicName} of host directive ${className} to ${remappedPublicName}, because it already has a different ${bindingType} with the same public name.`);
14581
+ }
14582
+ }
14583
+ }
14584
+ }
14407
14585
 
14408
14586
  /**
14409
14587
  * @license
@@ -24329,7 +24507,7 @@ function generateStandaloneInDeclarationsError(type, location) {
24329
24507
  function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot, importingModule) {
24330
24508
  if (verifiedNgModule.get(moduleType))
24331
24509
  return;
24332
- // skip verifications of standalone components, directives and pipes
24510
+ // skip verifications of standalone components, directives, and pipes
24333
24511
  if (isStandalone(moduleType))
24334
24512
  return;
24335
24513
  verifiedNgModule.set(moduleType, true);
@@ -25050,11 +25228,7 @@ function directiveMetadata(type, metadata) {
25050
25228
  providers: metadata.providers || null,
25051
25229
  viewQueries: extractQueriesMetadata(type, propMetadata, isViewQuery),
25052
25230
  isStandalone: !!metadata.standalone,
25053
- hostDirectives:
25054
- // TODO(crisbeto): remove the `as any` usage here and down in the `map` call once
25055
- // host directives are exposed in the public API.
25056
- metadata
25057
- .hostDirectives?.map((directive) => typeof directive === 'function' ? { directive } : directive) ||
25231
+ hostDirectives: metadata.hostDirectives?.map(directive => typeof directive === 'function' ? { directive } : directive) ||
25058
25232
  null
25059
25233
  };
25060
25234
  }
@@ -29905,5 +30079,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
29905
30079
  * Generated bundle index. Do not edit.
29906
30080
  */
29907
30081
 
29908
- export { ANALYZE_FOR_ENTRY_COMPONENTS, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, ReflectiveInjector, ReflectiveKey, Renderer2, RendererFactory2, RendererStyleFlags2, ResolvedReflectiveFactory, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, asNativeElements, assertPlatform, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, platformCore, reflectComponentType, resolveForwardRef, setTestabilityGetter, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, ChangeDetectorStatus as ɵChangeDetectorStatus, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, coerceToBoolean as ɵcoerceToBoolean, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDebugNodeR2 as ɵgetDebugNodeR2, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isInjectable as ɵisInjectable, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isStandalone as ɵisStandalone, isSubscribable as ɵisSubscribable, ɵivyEnabled, makeDecorator as ɵmakeDecorator, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵviewQuery };
30082
+ export { ANALYZE_FOR_ENTRY_COMPONENTS, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, ReflectiveInjector, ReflectiveKey, Renderer2, RendererFactory2, RendererStyleFlags2, ResolvedReflectiveFactory, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, asNativeElements, assertPlatform, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, makeEnvironmentProviders, platformCore, reflectComponentType, resolveForwardRef, setTestabilityGetter, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, ChangeDetectorStatus as ɵChangeDetectorStatus, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, coerceToBoolean as ɵcoerceToBoolean, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDebugNodeR2 as ɵgetDebugNodeR2, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isStandalone as ɵisStandalone, isSubscribable as ɵisSubscribable, ɵivyEnabled, makeDecorator as ɵmakeDecorator, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵviewQuery };
29909
30083
  //# sourceMappingURL=core.mjs.map