@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/fesm2015/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');
@@ -1752,11 +1768,12 @@ function rememberChangeHistoryAndInvokeOnChangesHook() {
1752
1768
  }
1753
1769
  }
1754
1770
  function ngOnChangesSetInput(instance, value, publicName, privateName) {
1771
+ const declaredName = this.declaredInputs[publicName];
1772
+ ngDevMode && assertString(declaredName, 'Name of input in ngOnChanges has to be a string');
1755
1773
  const simpleChangesStore = getSimpleChangesStore(instance) ||
1756
1774
  setSimpleChangesStore(instance, { previous: EMPTY_OBJ, current: null });
1757
1775
  const current = simpleChangesStore.current || (simpleChangesStore.current = {});
1758
1776
  const previous = simpleChangesStore.previous;
1759
- const declaredName = this.declaredInputs[publicName];
1760
1777
  const previousChange = previous[declaredName];
1761
1778
  current[declaredName] = new SimpleChange(previousChange && previousChange.currentValue, value, previous === EMPTY_OBJ);
1762
1779
  instance[privateName] = value;
@@ -4120,8 +4137,11 @@ const Attribute = makeParamDecorator('Attribute', (attributeName) => ({ attribut
4120
4137
  * As you can see in the Tree-shakable InjectionToken example below.
4121
4138
  *
4122
4139
  * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which
4123
- * overrides the above behavior and marks the token as belonging to a particular `@NgModule`. As
4124
- * mentioned above, `'root'` is the default value for `providedIn`.
4140
+ * overrides the above behavior and marks the token as belonging to a particular `@NgModule` (note:
4141
+ * this option is now deprecated). As mentioned above, `'root'` is the default value for
4142
+ * `providedIn`.
4143
+ *
4144
+ * The `providedIn: NgModule` and `providedIn: 'any'` options are deprecated.
4125
4145
  *
4126
4146
  * @usageNotes
4127
4147
  * ### Basic Examples
@@ -6370,6 +6390,15 @@ class NullInjector {
6370
6390
  * Use of this source code is governed by an MIT-style license that can be
6371
6391
  * found in the LICENSE file at https://angular.io/license
6372
6392
  */
6393
+ /**
6394
+ * Wrap an array of `Provider`s into `EnvironmentProviders`, preventing them from being accidentally
6395
+ * referenced in `@Component in a component injector.
6396
+ */
6397
+ function makeEnvironmentProviders(providers) {
6398
+ return {
6399
+ ɵproviders: providers,
6400
+ };
6401
+ }
6373
6402
  /**
6374
6403
  * Collects providers from all NgModules and standalone components, including transitively imported
6375
6404
  * ones.
@@ -6412,7 +6441,10 @@ class NullInjector {
6412
6441
  * @developerPreview
6413
6442
  */
6414
6443
  function importProvidersFrom(...sources) {
6415
- return { ɵproviders: internalImportProvidersFrom(true, sources) };
6444
+ return {
6445
+ ɵproviders: internalImportProvidersFrom(true, sources),
6446
+ ɵfromNgModule: true,
6447
+ };
6416
6448
  }
6417
6449
  function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) {
6418
6450
  const providersOut = [];
@@ -6445,7 +6477,7 @@ function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) {
6445
6477
  function processInjectorTypesWithProviders(typesWithProviders, providersOut) {
6446
6478
  for (let i = 0; i < typesWithProviders.length; i++) {
6447
6479
  const { ngModule, providers } = typesWithProviders[i];
6448
- deepForEach(providers, provider => {
6480
+ deepForEachProvider(providers, provider => {
6449
6481
  ngDevMode && validateProvider(provider, providers || EMPTY_ARRAY, ngModule);
6450
6482
  providersOut.push(provider);
6451
6483
  });
@@ -6562,7 +6594,7 @@ function walkProviderTree(container, providersOut, parents, dedup) {
6562
6594
  const defProviders = injDef.providers;
6563
6595
  if (defProviders != null && !isDuplicate) {
6564
6596
  const injectorType = container;
6565
- deepForEach(defProviders, provider => {
6597
+ deepForEachProvider(defProviders, provider => {
6566
6598
  ngDevMode && validateProvider(provider, defProviders, injectorType);
6567
6599
  providersOut.push(provider);
6568
6600
  });
@@ -6586,6 +6618,19 @@ function validateProvider(provider, providers, containerType) {
6586
6618
  throwInvalidProviderError(containerType, providers, provider);
6587
6619
  }
6588
6620
  }
6621
+ function deepForEachProvider(providers, fn) {
6622
+ for (let provider of providers) {
6623
+ if (isEnvironmentProviders(provider)) {
6624
+ provider = provider.ɵproviders;
6625
+ }
6626
+ if (Array.isArray(provider)) {
6627
+ deepForEachProvider(provider, fn);
6628
+ }
6629
+ else {
6630
+ fn(provider);
6631
+ }
6632
+ }
6633
+ }
6589
6634
  const USE_VALUE$1 = getClosureSafeProperty({ provide: String, useValue: getClosureSafeProperty });
6590
6635
  function isValueProvider(value) {
6591
6636
  return value !== null && typeof value == 'object' && USE_VALUE$1 in value;
@@ -6951,7 +6996,7 @@ function providerToRecord(provider) {
6951
6996
  */
6952
6997
  function providerToFactory(provider, ngModuleType, providers) {
6953
6998
  let factory = undefined;
6954
- if (ngDevMode && isImportedNgModuleProviders(provider)) {
6999
+ if (ngDevMode && isEnvironmentProviders(provider)) {
6955
7000
  throwInvalidProviderError(undefined, providers, provider);
6956
7001
  }
6957
7002
  if (isTypeProvider(provider)) {
@@ -7002,15 +7047,12 @@ function couldBeInjectableType(value) {
7002
7047
  return (typeof value === 'function') ||
7003
7048
  (typeof value === 'object' && value instanceof InjectionToken);
7004
7049
  }
7005
- function isImportedNgModuleProviders(provider) {
7006
- return !!provider.ɵproviders;
7007
- }
7008
7050
  function forEachSingleProvider(providers, fn) {
7009
7051
  for (const provider of providers) {
7010
7052
  if (Array.isArray(provider)) {
7011
7053
  forEachSingleProvider(provider, fn);
7012
7054
  }
7013
- else if (isImportedNgModuleProviders(provider)) {
7055
+ else if (provider && isEnvironmentProviders(provider)) {
7014
7056
  forEachSingleProvider(provider.ɵproviders, fn);
7015
7057
  }
7016
7058
  else {
@@ -7241,7 +7283,7 @@ class Version {
7241
7283
  /**
7242
7284
  * @publicApi
7243
7285
  */
7244
- const VERSION = new Version('15.0.0-next.4');
7286
+ const VERSION = new Version('15.0.0-next.6');
7245
7287
 
7246
7288
  /**
7247
7289
  * @license
@@ -12266,9 +12308,6 @@ function createViewBlueprint(bindingStartIndex, initialViewLength) {
12266
12308
  }
12267
12309
  return blueprint;
12268
12310
  }
12269
- function createError(text, token) {
12270
- return new Error(`Renderer: ${text} [${stringifyForError(token)}]`);
12271
- }
12272
12311
  /**
12273
12312
  * Locates the host native element, used for bootstrapping existing nodes into rendering pipeline.
12274
12313
  *
@@ -12392,26 +12431,49 @@ function createTNode(tView, tParent, type, index, value, attrs) {
12392
12431
  }
12393
12432
  return tNode;
12394
12433
  }
12395
- function generatePropertyAliases(inputAliasMap, directiveDefIdx, propStore) {
12396
- for (let publicName in inputAliasMap) {
12397
- if (inputAliasMap.hasOwnProperty(publicName)) {
12398
- propStore = propStore === null ? {} : propStore;
12399
- const internalName = inputAliasMap[publicName];
12400
- if (propStore.hasOwnProperty(publicName)) {
12401
- propStore[publicName].push(directiveDefIdx, internalName);
12434
+ /**
12435
+ * Generates the `PropertyAliases` data structure from the provided input/output mapping.
12436
+ * @param aliasMap Input/output mapping from the directive definition.
12437
+ * @param directiveIndex Index of the directive.
12438
+ * @param propertyAliases Object in which to store the results.
12439
+ * @param hostDirectiveAliasMap Object used to alias or filter out properties for host directives.
12440
+ * If the mapping is provided, it'll act as an allowlist, as well as a mapping of what public
12441
+ * name inputs/outputs should be exposed under.
12442
+ */
12443
+ function generatePropertyAliases(aliasMap, directiveIndex, propertyAliases, hostDirectiveAliasMap) {
12444
+ for (let publicName in aliasMap) {
12445
+ if (aliasMap.hasOwnProperty(publicName)) {
12446
+ propertyAliases = propertyAliases === null ? {} : propertyAliases;
12447
+ const internalName = aliasMap[publicName];
12448
+ // If there are no host directive mappings, we want to remap using the alias map from the
12449
+ // definition itself. If there is an alias map, it has two functions:
12450
+ // 1. It serves as an allowlist of bindings that are exposed by the host directives. Only the
12451
+ // ones inside the host directive map will be exposed on the host.
12452
+ // 2. The public name of the property is aliased using the host directive alias map, rather
12453
+ // than the alias map from the definition.
12454
+ if (hostDirectiveAliasMap === null) {
12455
+ addPropertyAlias(propertyAliases, directiveIndex, publicName, internalName);
12402
12456
  }
12403
- else {
12404
- (propStore[publicName] = [directiveDefIdx, internalName]);
12457
+ else if (hostDirectiveAliasMap.hasOwnProperty(publicName)) {
12458
+ addPropertyAlias(propertyAliases, directiveIndex, hostDirectiveAliasMap[publicName], internalName);
12405
12459
  }
12406
12460
  }
12407
12461
  }
12408
- return propStore;
12462
+ return propertyAliases;
12463
+ }
12464
+ function addPropertyAlias(propertyAliases, directiveIndex, publicName, internalName) {
12465
+ if (propertyAliases.hasOwnProperty(publicName)) {
12466
+ propertyAliases[publicName].push(directiveIndex, internalName);
12467
+ }
12468
+ else {
12469
+ propertyAliases[publicName] = [directiveIndex, internalName];
12470
+ }
12409
12471
  }
12410
12472
  /**
12411
12473
  * Initializes data structures required to work with directive inputs and outputs.
12412
12474
  * Initialization is done for all directives matched on a given TNode.
12413
12475
  */
12414
- function initializeInputAndOutputAliases(tView, tNode) {
12476
+ function initializeInputAndOutputAliases(tView, tNode, hostDirectiveDefinitionMap) {
12415
12477
  ngDevMode && assertFirstCreatePass(tView);
12416
12478
  const start = tNode.directiveStart;
12417
12479
  const end = tNode.directiveEnd;
@@ -12420,16 +12482,21 @@ function initializeInputAndOutputAliases(tView, tNode) {
12420
12482
  const inputsFromAttrs = ngDevMode ? new TNodeInitialInputs() : [];
12421
12483
  let inputsStore = null;
12422
12484
  let outputsStore = null;
12423
- for (let i = start; i < end; i++) {
12424
- const directiveDef = tViewData[i];
12425
- inputsStore = generatePropertyAliases(directiveDef.inputs, i, inputsStore);
12426
- outputsStore = generatePropertyAliases(directiveDef.outputs, i, outputsStore);
12485
+ for (let directiveIndex = start; directiveIndex < end; directiveIndex++) {
12486
+ const directiveDef = tViewData[directiveIndex];
12487
+ const aliasData = hostDirectiveDefinitionMap ? hostDirectiveDefinitionMap.get(directiveDef) : null;
12488
+ const aliasedInputs = aliasData ? aliasData.inputs : null;
12489
+ const aliasedOutputs = aliasData ? aliasData.outputs : null;
12490
+ inputsStore =
12491
+ generatePropertyAliases(directiveDef.inputs, directiveIndex, inputsStore, aliasedInputs);
12492
+ outputsStore =
12493
+ generatePropertyAliases(directiveDef.outputs, directiveIndex, outputsStore, aliasedOutputs);
12427
12494
  // Do not use unbound attributes as inputs to structural directives, since structural
12428
12495
  // directive inputs can only be set using microsyntax (e.g. `<div *dir="exp">`).
12429
12496
  // TODO(FW-1930): microsyntax expressions may also contain unbound/static attributes, which
12430
12497
  // should be set for inline templates.
12431
12498
  const initialInputs = (inputsStore !== null && tNodeAttrs !== null && !isInlineTemplate(tNode)) ?
12432
- generateInitialInputs(inputsStore, i, tNodeAttrs) :
12499
+ generateInitialInputs(inputsStore, directiveIndex, tNodeAttrs) :
12433
12500
  null;
12434
12501
  inputsFromAttrs.push(initialInputs);
12435
12502
  }
@@ -12554,16 +12621,19 @@ function resolveDirectives(tView, lView, tNode, localRefs) {
12554
12621
  ngDevMode && assertFirstCreatePass(tView);
12555
12622
  let hasDirectives = false;
12556
12623
  if (getBindingsEnabled()) {
12557
- const directiveDefs = findDirectiveDefMatches(tView, lView, tNode);
12558
12624
  const exportsMap = localRefs === null ? null : { '': -1 };
12625
+ const matchResult = findDirectiveDefMatches(tView, tNode);
12626
+ let directiveDefs;
12627
+ let hostDirectiveDefs;
12628
+ if (matchResult === null) {
12629
+ directiveDefs = hostDirectiveDefs = null;
12630
+ }
12631
+ else {
12632
+ [directiveDefs, hostDirectiveDefs] = matchResult;
12633
+ }
12559
12634
  if (directiveDefs !== null) {
12560
- // Publishes the directive types to DI so they can be injected. Needs to
12561
- // happen in a separate pass before the TNode flags have been initialized.
12562
- for (let i = 0; i < directiveDefs.length; i++) {
12563
- diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, directiveDefs[i].type);
12564
- }
12565
12635
  hasDirectives = true;
12566
- initializeDirectives(tView, lView, tNode, directiveDefs, exportsMap);
12636
+ initializeDirectives(tView, lView, tNode, directiveDefs, exportsMap, hostDirectiveDefs);
12567
12637
  }
12568
12638
  if (exportsMap)
12569
12639
  cacheMatchingLocalNames(tNode, localRefs, exportsMap);
@@ -12573,8 +12643,13 @@ function resolveDirectives(tView, lView, tNode, localRefs) {
12573
12643
  return hasDirectives;
12574
12644
  }
12575
12645
  /** Initializes the data structures necessary for a list of directives to be instantiated. */
12576
- function initializeDirectives(tView, lView, tNode, directives, exportsMap) {
12646
+ function initializeDirectives(tView, lView, tNode, directives, exportsMap, hostDirectiveDefs) {
12577
12647
  ngDevMode && assertFirstCreatePass(tView);
12648
+ // Publishes the directive types to DI so they can be injected. Needs to
12649
+ // happen in a separate pass before the TNode flags have been initialized.
12650
+ for (let i = 0; i < directives.length; i++) {
12651
+ diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, directives[i].type);
12652
+ }
12578
12653
  initTNodeFlags(tNode, tView.data.length, directives.length);
12579
12654
  // When the same token is provided by several directives on the same node, some rules apply in
12580
12655
  // the viewEngine:
@@ -12620,7 +12695,7 @@ function initializeDirectives(tView, lView, tNode, directives, exportsMap) {
12620
12695
  }
12621
12696
  directiveIdx++;
12622
12697
  }
12623
- initializeInputAndOutputAliases(tView, tNode);
12698
+ initializeInputAndOutputAliases(tView, tNode, hostDirectiveDefs);
12624
12699
  }
12625
12700
  /**
12626
12701
  * Add `hostBindings` to the `TView.hostBindingOpCodes`.
@@ -12732,12 +12807,13 @@ function invokeHostBindingsInCreationMode(def, directive) {
12732
12807
  * Matches the current node against all available selectors.
12733
12808
  * If a component is matched (at most one), it is returned in first position in the array.
12734
12809
  */
12735
- function findDirectiveDefMatches(tView, lView, tNode) {
12810
+ function findDirectiveDefMatches(tView, tNode) {
12736
12811
  var _a;
12737
12812
  ngDevMode && assertFirstCreatePass(tView);
12738
12813
  ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);
12739
12814
  const registry = tView.directiveRegistry;
12740
12815
  let matches = null;
12816
+ let hostDirectiveDefs = null;
12741
12817
  if (registry) {
12742
12818
  for (let i = 0; i < registry.length; i++) {
12743
12819
  const def = registry[i];
@@ -12763,7 +12839,8 @@ function findDirectiveDefMatches(tView, lView, tNode) {
12763
12839
  // 4. Selector-matched directives.
12764
12840
  if (def.findHostDirectiveDefs !== null) {
12765
12841
  const hostDirectiveMatches = [];
12766
- def.findHostDirectiveDefs(hostDirectiveMatches, def, tView, lView, tNode);
12842
+ hostDirectiveDefs = hostDirectiveDefs || new Map();
12843
+ def.findHostDirectiveDefs(def, hostDirectiveMatches, hostDirectiveDefs);
12767
12844
  // Add all host directives declared on this component, followed by the component itself.
12768
12845
  // Host directives should execute first so the host has a chance to override changes
12769
12846
  // to the DOM made by them.
@@ -12781,13 +12858,14 @@ function findDirectiveDefMatches(tView, lView, tNode) {
12781
12858
  }
12782
12859
  else {
12783
12860
  // Append any host directives to the matches first.
12784
- (_a = def.findHostDirectiveDefs) === null || _a === void 0 ? void 0 : _a.call(def, matches, def, tView, lView, tNode);
12861
+ hostDirectiveDefs = hostDirectiveDefs || new Map();
12862
+ (_a = def.findHostDirectiveDefs) === null || _a === void 0 ? void 0 : _a.call(def, def, matches, hostDirectiveDefs);
12785
12863
  matches.push(def);
12786
12864
  }
12787
12865
  }
12788
12866
  }
12789
12867
  }
12790
- return matches;
12868
+ return matches === null ? null : [matches, hostDirectiveDefs];
12791
12869
  }
12792
12870
  /**
12793
12871
  * Marks a given TNode as a component's host. This consists of:
@@ -13868,15 +13946,26 @@ class ComponentFactory extends ComponentFactory$1 {
13868
13946
  let component;
13869
13947
  let tElementNode;
13870
13948
  try {
13871
- const rootDirectives = [this.componentDef];
13949
+ const rootComponentDef = this.componentDef;
13950
+ let rootDirectives;
13951
+ let hostDirectiveDefs = null;
13952
+ if (rootComponentDef.findHostDirectiveDefs) {
13953
+ rootDirectives = [];
13954
+ hostDirectiveDefs = new Map();
13955
+ rootComponentDef.findHostDirectiveDefs(rootComponentDef, rootDirectives, hostDirectiveDefs);
13956
+ rootDirectives.push(rootComponentDef);
13957
+ }
13958
+ else {
13959
+ rootDirectives = [rootComponentDef];
13960
+ }
13872
13961
  const hostTNode = createRootComponentTNode(rootLView, hostRNode);
13873
- const componentView = createRootComponentView(hostTNode, hostRNode, this.componentDef, rootDirectives, rootLView, rendererFactory, hostRenderer);
13962
+ const componentView = createRootComponentView(hostTNode, hostRNode, rootComponentDef, rootDirectives, rootLView, rendererFactory, hostRenderer);
13874
13963
  tElementNode = getTNode(rootTView, HEADER_OFFSET);
13875
13964
  // TODO(crisbeto): in practice `hostRNode` should always be defined, but there are some tests
13876
13965
  // where the renderer is mocked out and `undefined` is returned. We should update the tests so
13877
13966
  // that this check can be removed.
13878
13967
  if (hostRNode) {
13879
- setRootNodeAttributes(hostRenderer, this.componentDef, hostRNode, rootSelectorOrNode);
13968
+ setRootNodeAttributes(hostRenderer, rootComponentDef, hostRNode, rootSelectorOrNode);
13880
13969
  }
13881
13970
  if (projectableNodes !== undefined) {
13882
13971
  projectNodes(tElementNode, this.ngContentSelectors, projectableNodes);
@@ -13884,7 +13973,7 @@ class ComponentFactory extends ComponentFactory$1 {
13884
13973
  // TODO: should LifecycleHooksFeature and other host features be generated by the compiler and
13885
13974
  // executed here?
13886
13975
  // Angular 5 reference: https://stackblitz.com/edit/lifecycle-hooks-vcref
13887
- component = createRootComponent(componentView, this.componentDef, rootDirectives, rootLView, [LifecycleHooksFeature]);
13976
+ component = createRootComponent(componentView, rootComponentDef, rootDirectives, hostDirectiveDefs, rootLView, [LifecycleHooksFeature]);
13888
13977
  renderView(rootTView, rootLView, null);
13889
13978
  }
13890
13979
  finally {
@@ -13984,8 +14073,7 @@ function createRootComponentView(tNode, rNode, rootComponentDef, rootDirectives,
13984
14073
  const viewRenderer = rendererFactory.createRenderer(rNode, rootComponentDef);
13985
14074
  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);
13986
14075
  if (tView.firstCreatePass) {
13987
- diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, rootView), tView, rootComponentDef.type);
13988
- markAsComponentHost(tView, tNode, 0);
14076
+ markAsComponentHost(tView, tNode, rootDirectives.length - 1);
13989
14077
  }
13990
14078
  addToViewTree(rootView, componentView);
13991
14079
  // Store component view at node index, with node as the HOST
@@ -14007,12 +14095,12 @@ function applyRootComponentStyling(rootDirectives, tNode, rNode, hostRenderer) {
14007
14095
  * Creates a root component and sets it up with features and host bindings.Shared by
14008
14096
  * renderComponent() and ViewContainerRef.createComponent().
14009
14097
  */
14010
- function createRootComponent(componentView, rootComponentDef, rootDirectives, rootLView, hostFeatures) {
14098
+ function createRootComponent(componentView, rootComponentDef, rootDirectives, hostDirectiveDefs, rootLView, hostFeatures) {
14011
14099
  const rootTNode = getCurrentTNode();
14012
14100
  ngDevMode && assertDefined(rootTNode, 'tNode should have been already created');
14013
14101
  const tView = rootLView[TVIEW];
14014
14102
  const native = getNativeByTNode(rootTNode, rootLView);
14015
- initializeDirectives(tView, rootLView, rootTNode, rootDirectives, null);
14103
+ initializeDirectives(tView, rootLView, rootTNode, rootDirectives, null, hostDirectiveDefs);
14016
14104
  for (let i = 0; i < rootDirectives.length; i++) {
14017
14105
  const directiveIndex = rootTNode.directiveStart + i;
14018
14106
  const directiveInstance = getNodeInjectable(rootLView, tView, directiveIndex, rootTNode);
@@ -14333,7 +14421,7 @@ function ɵɵCopyDefinitionFeature(definition) {
14333
14421
  * found in the LICENSE file at https://angular.io/license
14334
14422
  */
14335
14423
  /**
14336
- * This feature add the host directives behavior to a directive definition by patching a
14424
+ * This feature adds the host directives behavior to a directive definition by patching a
14337
14425
  * function onto it. The expectation is that the runtime will invoke the function during
14338
14426
  * directive matching.
14339
14427
  *
@@ -14367,14 +14455,20 @@ function ɵɵHostDirectivesFeature(rawHostDirectives) {
14367
14455
  });
14368
14456
  };
14369
14457
  }
14370
- function findHostDirectiveDefs(matches, def, tView, lView, tNode) {
14371
- if (def.hostDirectives !== null) {
14372
- for (const hostDirectiveConfig of def.hostDirectives) {
14458
+ function findHostDirectiveDefs(currentDef, matchedDefs, hostDirectiveDefs) {
14459
+ if (currentDef.hostDirectives !== null) {
14460
+ for (const hostDirectiveConfig of currentDef.hostDirectives) {
14373
14461
  const hostDirectiveDef = getDirectiveDef(hostDirectiveConfig.directive);
14374
- // TODO(crisbeto): assert that the def exists.
14462
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
14463
+ validateHostDirective(hostDirectiveConfig, hostDirectiveDef, matchedDefs);
14464
+ }
14465
+ // We need to patch the `declaredInputs` so that
14466
+ // `ngOnChanges` can map the properties correctly.
14467
+ patchDeclaredInputs(hostDirectiveDef.declaredInputs, hostDirectiveConfig.inputs);
14375
14468
  // Host directives execute before the host so that its host bindings can be overwritten.
14376
- findHostDirectiveDefs(matches, hostDirectiveDef, tView, lView, tNode);
14377
- matches.push(hostDirectiveDef);
14469
+ findHostDirectiveDefs(hostDirectiveDef, matchedDefs, hostDirectiveDefs);
14470
+ hostDirectiveDefs.set(hostDirectiveDef, hostDirectiveConfig);
14471
+ matchedDefs.push(hostDirectiveDef);
14378
14472
  }
14379
14473
  }
14380
14474
  }
@@ -14392,6 +14486,90 @@ function bindingArrayToMap(bindings) {
14392
14486
  }
14393
14487
  return result;
14394
14488
  }
14489
+ /**
14490
+ * `ngOnChanges` has some leftover legacy ViewEngine behavior where the keys inside the
14491
+ * `SimpleChanges` event refer to the *declared* name of the input, not its public name or its
14492
+ * minified name. E.g. in `@Input('alias') foo: string`, the name in the `SimpleChanges` object
14493
+ * will always be `foo`, and not `alias` or the minified name of `foo` in apps using property
14494
+ * minification.
14495
+ *
14496
+ * This is achieved through the `DirectiveDef.declaredInputs` map that is constructed when the
14497
+ * definition is declared. When a property is written to the directive instance, the
14498
+ * `NgOnChangesFeature` will try to remap the property name being written to using the
14499
+ * `declaredInputs`.
14500
+ *
14501
+ * Since the host directive input remapping happens during directive matching, `declaredInputs`
14502
+ * won't contain the new alias that the input is available under. This function addresses the
14503
+ * issue by patching the host directive aliases to the `declaredInputs`. There is *not* a risk of
14504
+ * this patching accidentally introducing new inputs to the host directive, because `declaredInputs`
14505
+ * is used *only* by the `NgOnChangesFeature` when determining what name is used in the
14506
+ * `SimpleChanges` object which won't be reached if an input doesn't exist.
14507
+ */
14508
+ function patchDeclaredInputs(declaredInputs, exposedInputs) {
14509
+ for (const publicName in exposedInputs) {
14510
+ if (exposedInputs.hasOwnProperty(publicName)) {
14511
+ const remappedPublicName = exposedInputs[publicName];
14512
+ const privateName = declaredInputs[publicName];
14513
+ // We *technically* shouldn't be able to hit this case because we can't have multiple
14514
+ // inputs on the same property and we have validations against conflicting aliases in
14515
+ // `validateMappings`. If we somehow did, it would lead to `ngOnChanges` being invoked
14516
+ // with the wrong name so we have a non-user-friendly assertion here just in case.
14517
+ if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
14518
+ declaredInputs.hasOwnProperty(remappedPublicName)) {
14519
+ assertEqual(declaredInputs[remappedPublicName], declaredInputs[publicName], `Conflicting host directive input alias ${publicName}.`);
14520
+ }
14521
+ declaredInputs[remappedPublicName] = privateName;
14522
+ }
14523
+ }
14524
+ }
14525
+ /**
14526
+ * Verifies that the host directive has been configured correctly.
14527
+ * @param hostDirectiveConfig Host directive configuration object.
14528
+ * @param directiveDef Directive definition of the host directive.
14529
+ * @param matchedDefs Directives that have been matched so far.
14530
+ */
14531
+ function validateHostDirective(hostDirectiveConfig, directiveDef, matchedDefs) {
14532
+ // TODO(crisbeto): implement more of these checks in the compiler.
14533
+ const type = hostDirectiveConfig.directive;
14534
+ if (directiveDef === null) {
14535
+ if (getComponentDef(type) !== null) {
14536
+ throw new RuntimeError(310 /* RuntimeErrorCode.HOST_DIRECTIVE_COMPONENT */, `Host directive ${type.name} cannot be a component.`);
14537
+ }
14538
+ throw new RuntimeError(307 /* RuntimeErrorCode.HOST_DIRECTIVE_UNRESOLVABLE */, `Could not resolve metadata for host directive ${type.name}. ` +
14539
+ `Make sure that the ${type.name} class is annotated with an @Directive decorator.`);
14540
+ }
14541
+ if (!directiveDef.standalone) {
14542
+ throw new RuntimeError(308 /* RuntimeErrorCode.HOST_DIRECTIVE_NOT_STANDALONE */, `Host directive ${directiveDef.type.name} must be standalone.`);
14543
+ }
14544
+ if (matchedDefs.indexOf(directiveDef) > -1) {
14545
+ throw new RuntimeError(309 /* RuntimeErrorCode.DUPLICATE_DIRECTITVE */, `Directive ${directiveDef.type.name} matches multiple times on the same element. ` +
14546
+ `Directives can only match an element once.`);
14547
+ }
14548
+ validateMappings('input', directiveDef, hostDirectiveConfig.inputs);
14549
+ validateMappings('output', directiveDef, hostDirectiveConfig.outputs);
14550
+ }
14551
+ /**
14552
+ * Checks that the host directive inputs/outputs configuration is valid.
14553
+ * @param bindingType Kind of binding that is being validated. Used in the error message.
14554
+ * @param def Definition of the host directive that is being validated against.
14555
+ * @param hostDirectiveDefs Host directive mapping object that shold be validated.
14556
+ */
14557
+ function validateMappings(bindingType, def, hostDirectiveDefs) {
14558
+ const className = def.type.name;
14559
+ const bindings = bindingType === 'input' ? def.inputs : def.outputs;
14560
+ for (const publicName in hostDirectiveDefs) {
14561
+ if (hostDirectiveDefs.hasOwnProperty(publicName)) {
14562
+ if (!bindings.hasOwnProperty(publicName)) {
14563
+ throw new RuntimeError(311 /* RuntimeErrorCode.HOST_DIRECTIVE_UNDEFINED_BINDING */, `Directive ${className} does not have an ${bindingType} with a public name of ${publicName}.`);
14564
+ }
14565
+ const remappedPublicName = hostDirectiveDefs[publicName];
14566
+ if (bindings.hasOwnProperty(remappedPublicName) &&
14567
+ bindings[remappedPublicName] !== publicName) {
14568
+ 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.`);
14569
+ }
14570
+ }
14571
+ }
14572
+ }
14395
14573
 
14396
14574
  /**
14397
14575
  * @license
@@ -24318,7 +24496,7 @@ function generateStandaloneInDeclarationsError(type, location) {
24318
24496
  function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot, importingModule) {
24319
24497
  if (verifiedNgModule.get(moduleType))
24320
24498
  return;
24321
- // skip verifications of standalone components, directives and pipes
24499
+ // skip verifications of standalone components, directives, and pipes
24322
24500
  if (isStandalone(moduleType))
24323
24501
  return;
24324
24502
  verifiedNgModule.set(moduleType, true);
@@ -25028,11 +25206,7 @@ function directiveMetadata(type, metadata) {
25028
25206
  providers: metadata.providers || null,
25029
25207
  viewQueries: extractQueriesMetadata(type, propMetadata, isViewQuery),
25030
25208
  isStandalone: !!metadata.standalone,
25031
- hostDirectives:
25032
- // TODO(crisbeto): remove the `as any` usage here and down in the `map` call once
25033
- // host directives are exposed in the public API.
25034
- ((_a = metadata
25035
- .hostDirectives) === null || _a === void 0 ? void 0 : _a.map((directive) => typeof directive === 'function' ? { directive } : directive)) ||
25209
+ hostDirectives: ((_a = metadata.hostDirectives) === null || _a === void 0 ? void 0 : _a.map(directive => typeof directive === 'function' ? { directive } : directive)) ||
25036
25210
  null
25037
25211
  };
25038
25212
  }
@@ -29893,5 +30067,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
29893
30067
  * Generated bundle index. Do not edit.
29894
30068
  */
29895
30069
 
29896
- 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 };
30070
+ 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 };
29897
30071
  //# sourceMappingURL=core.mjs.map