@angular/core 14.0.0-next.15 → 14.0.0-next.16

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 (102) hide show
  1. package/esm2020/src/application_ref.mjs +22 -13
  2. package/esm2020/src/change_detection/change_detector_ref.mjs +3 -3
  3. package/esm2020/src/change_detection/differs/default_iterable_differ.mjs +2 -2
  4. package/esm2020/src/change_detection/differs/default_keyvalue_differ.mjs +2 -2
  5. package/esm2020/src/change_detection/differs/iterable_differs.mjs +2 -2
  6. package/esm2020/src/change_detection/differs/keyvalue_differs.mjs +2 -2
  7. package/esm2020/src/compiler/compiler_facade.mjs +2 -2
  8. package/esm2020/src/core_render3_private_export.mjs +2 -2
  9. package/esm2020/src/debug/debug_node.mjs +5 -5
  10. package/esm2020/src/di/create_injector.mjs +3 -4
  11. package/esm2020/src/di/index.mjs +2 -2
  12. package/esm2020/src/di/initializer_token.mjs +4 -4
  13. package/esm2020/src/di/injector.mjs +2 -2
  14. package/esm2020/src/di/injector_compatibility.mjs +4 -4
  15. package/esm2020/src/di/injector_token.mjs +2 -2
  16. package/esm2020/src/di/interface/provider.mjs +1 -1
  17. package/esm2020/src/di/jit/injectable.mjs +3 -3
  18. package/esm2020/src/di/metadata.mjs +6 -6
  19. package/esm2020/src/di/provider_collection.mjs +20 -5
  20. package/esm2020/src/di/r3_injector.mjs +27 -10
  21. package/esm2020/src/errors.mjs +1 -1
  22. package/esm2020/src/linker/template_ref.mjs +3 -3
  23. package/esm2020/src/linker/view_container_ref.mjs +4 -4
  24. package/esm2020/src/metadata/directives.mjs +1 -1
  25. package/esm2020/src/render3/assert.mjs +3 -3
  26. package/esm2020/src/render3/collect_native_nodes.mjs +5 -5
  27. package/esm2020/src/render3/component.mjs +8 -8
  28. package/esm2020/src/render3/component_ref.mjs +4 -4
  29. package/esm2020/src/render3/context_discovery.mjs +4 -4
  30. package/esm2020/src/render3/di.mjs +21 -21
  31. package/esm2020/src/render3/di_setup.mjs +5 -5
  32. package/esm2020/src/render3/errors.mjs +5 -5
  33. package/esm2020/src/render3/errors_di.mjs +10 -7
  34. package/esm2020/src/render3/features/inherit_definition_feature.mjs +2 -2
  35. package/esm2020/src/render3/features/standalone_feature.mjs +5 -4
  36. package/esm2020/src/render3/hooks.mjs +19 -19
  37. package/esm2020/src/render3/i18n/i18n_apply.mjs +16 -16
  38. package/esm2020/src/render3/i18n/i18n_debug.mjs +9 -9
  39. package/esm2020/src/render3/i18n/i18n_insert_before_index.mjs +2 -2
  40. package/esm2020/src/render3/i18n/i18n_parse.mjs +14 -14
  41. package/esm2020/src/render3/i18n/i18n_util.mjs +7 -7
  42. package/esm2020/src/render3/index.mjs +2 -2
  43. package/esm2020/src/render3/instructions/advance.mjs +3 -3
  44. package/esm2020/src/render3/instructions/all.mjs +2 -1
  45. package/esm2020/src/render3/instructions/change_detection.mjs +2 -2
  46. package/esm2020/src/render3/instructions/element.mjs +26 -6
  47. package/esm2020/src/render3/instructions/element_container.mjs +3 -3
  48. package/esm2020/src/render3/instructions/i18n.mjs +2 -2
  49. package/esm2020/src/render3/instructions/listener.mjs +7 -7
  50. package/esm2020/src/render3/instructions/lview_debug.mjs +26 -26
  51. package/esm2020/src/render3/instructions/projection.mjs +3 -3
  52. package/esm2020/src/render3/instructions/shared.mjs +90 -70
  53. package/esm2020/src/render3/instructions/styling.mjs +5 -5
  54. package/esm2020/src/render3/instructions/template.mjs +3 -3
  55. package/esm2020/src/render3/instructions/text.mjs +2 -2
  56. package/esm2020/src/render3/interfaces/node.mjs +10 -10
  57. package/esm2020/src/render3/interfaces/styling.mjs +18 -18
  58. package/esm2020/src/render3/interfaces/type_checks.mjs +5 -5
  59. package/esm2020/src/render3/interfaces/view.mjs +1 -1
  60. package/esm2020/src/render3/jit/directive.mjs +43 -6
  61. package/esm2020/src/render3/jit/module.mjs +22 -12
  62. package/esm2020/src/render3/jit/partial.mjs +8 -8
  63. package/esm2020/src/render3/jit/pipe.mjs +3 -3
  64. package/esm2020/src/render3/jit/util.mjs +15 -0
  65. package/esm2020/src/render3/ng_module_ref.mjs +1 -1
  66. package/esm2020/src/render3/node_assert.mjs +8 -8
  67. package/esm2020/src/render3/node_manipulation.mjs +40 -40
  68. package/esm2020/src/render3/node_manipulation_i18n.mjs +3 -3
  69. package/esm2020/src/render3/node_selector_matcher.mjs +28 -28
  70. package/esm2020/src/render3/pipe.mjs +2 -2
  71. package/esm2020/src/render3/query.mjs +12 -12
  72. package/esm2020/src/render3/state.mjs +5 -5
  73. package/esm2020/src/render3/styling/class_differ.mjs +3 -3
  74. package/esm2020/src/render3/styling/static_styling.mjs +3 -3
  75. package/esm2020/src/render3/styling/styling_parser.mjs +17 -17
  76. package/esm2020/src/render3/util/attrs_utils.mjs +10 -10
  77. package/esm2020/src/render3/util/discovery_utils.mjs +4 -4
  78. package/esm2020/src/render3/util/injector_utils.mjs +4 -4
  79. package/esm2020/src/render3/util/view_traversal_utils.mjs +2 -2
  80. package/esm2020/src/render3/util/view_utils.mjs +3 -3
  81. package/esm2020/src/render3/view_ref.mjs +6 -6
  82. package/esm2020/src/sanitization/bypass.mjs +7 -7
  83. package/esm2020/src/sanitization/sanitization.mjs +10 -10
  84. package/esm2020/src/util/raf.mjs +1 -1
  85. package/esm2020/src/version.mjs +1 -1
  86. package/esm2020/testing/src/logger.mjs +3 -3
  87. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  88. package/esm2020/testing/src/r3_test_bed.mjs +34 -6
  89. package/esm2020/testing/src/r3_test_bed_compiler.mjs +45 -4
  90. package/esm2020/testing/src/resolvers.mjs +1 -1
  91. package/esm2020/testing/src/test_bed_common.mjs +5 -1
  92. package/fesm2015/core.mjs +640 -498
  93. package/fesm2015/core.mjs.map +1 -1
  94. package/fesm2015/testing.mjs +84 -8
  95. package/fesm2015/testing.mjs.map +1 -1
  96. package/fesm2020/core.mjs +640 -498
  97. package/fesm2020/core.mjs.map +1 -1
  98. package/fesm2020/testing.mjs +81 -8
  99. package/fesm2020/testing.mjs.map +1 -1
  100. package/index.d.ts +101 -57
  101. package/package.json +1 -1
  102. package/testing/index.d.ts +29 -1
package/fesm2020/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.0.0-next.15
2
+ * @license Angular v14.0.0-next.16
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -234,24 +234,27 @@ function stringifyForError(value) {
234
234
  /** Called when directives inject each other (creating a circular dependency) */
235
235
  function throwCyclicDependencyError(token, path) {
236
236
  const depPath = path ? `. Dependency path: ${path.join(' > ')} > ${token}` : '';
237
- throw new RuntimeError(-200 /* CYCLIC_DI_DEPENDENCY */, `Circular dependency in DI detected for ${token}${depPath}`);
237
+ throw new RuntimeError(-200 /* RuntimeErrorCode.CYCLIC_DI_DEPENDENCY */, `Circular dependency in DI detected for ${token}${depPath}`);
238
238
  }
239
239
  function throwMixedMultiProviderError() {
240
240
  throw new Error(`Cannot mix multi providers and regular providers`);
241
241
  }
242
242
  function throwInvalidProviderError(ngModuleType, providers, provider) {
243
- let ngModuleDetail = '';
244
243
  if (ngModuleType && providers) {
245
244
  const providerDetail = providers.map(v => v == provider ? '?' + provider + '?' : '...');
246
- ngModuleDetail =
247
- ` - only instances of Provider and Type are allowed, got: [${providerDetail.join(', ')}]`;
245
+ throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}' - only instances of Provider and Type are allowed, got: [${providerDetail.join(', ')}]`);
246
+ }
247
+ else if (provider.ɵproviders) {
248
+ 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.`);
249
+ }
250
+ else {
251
+ throw new Error('Invalid provider');
248
252
  }
249
- throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}'` + ngModuleDetail);
250
253
  }
251
254
  /** Throws an error when a token is not found in DI. */
252
255
  function throwProviderNotFoundError(token, injectorName) {
253
256
  const injectorDetails = injectorName ? ` in ${injectorName}` : '';
254
- throw new RuntimeError(-201 /* PROVIDER_NOT_FOUND */, `No provider for ${stringifyForError(token)} found${injectorDetails}`);
257
+ throw new RuntimeError(-201 /* RuntimeErrorCode.PROVIDER_NOT_FOUND */, `No provider for ${stringifyForError(token)} found${injectorDetails}`);
255
258
  }
256
259
 
257
260
  /**
@@ -1260,19 +1263,19 @@ function isLContainer(value) {
1260
1263
  return Array.isArray(value) && value[TYPE] === true;
1261
1264
  }
1262
1265
  function isContentQueryHost(tNode) {
1263
- return (tNode.flags & 8 /* hasContentQuery */) !== 0;
1266
+ return (tNode.flags & 8 /* TNodeFlags.hasContentQuery */) !== 0;
1264
1267
  }
1265
1268
  function isComponentHost(tNode) {
1266
- return (tNode.flags & 2 /* isComponentHost */) === 2 /* isComponentHost */;
1269
+ return (tNode.flags & 2 /* TNodeFlags.isComponentHost */) === 2 /* TNodeFlags.isComponentHost */;
1267
1270
  }
1268
1271
  function isDirectiveHost(tNode) {
1269
- return (tNode.flags & 1 /* isDirectiveHost */) === 1 /* isDirectiveHost */;
1272
+ return (tNode.flags & 1 /* TNodeFlags.isDirectiveHost */) === 1 /* TNodeFlags.isDirectiveHost */;
1270
1273
  }
1271
1274
  function isComponentDef(def) {
1272
1275
  return def.template !== null;
1273
1276
  }
1274
1277
  function isRootView(target) {
1275
- return (target[FLAGS] & 512 /* IsRoot */) !== 0;
1278
+ return (target[FLAGS] & 512 /* LViewFlags.IsRoot */) !== 0;
1276
1279
  }
1277
1280
 
1278
1281
  /**
@@ -1386,7 +1389,7 @@ function assertParentView(lView, errMessage) {
1386
1389
  */
1387
1390
  function assertNodeInjector(lView, injectorIndex) {
1388
1391
  assertIndexInExpandoRange(lView, injectorIndex);
1389
- assertIndexInExpandoRange(lView, injectorIndex + 8 /* PARENT */);
1392
+ assertIndexInExpandoRange(lView, injectorIndex + 8 /* NodeInjectorOffset.PARENT */);
1390
1393
  assertNumber(lView[injectorIndex + 0], 'injectorIndex should point to a bloom filter');
1391
1394
  assertNumber(lView[injectorIndex + 1], 'injectorIndex should point to a bloom filter');
1392
1395
  assertNumber(lView[injectorIndex + 2], 'injectorIndex should point to a bloom filter');
@@ -1395,7 +1398,7 @@ function assertNodeInjector(lView, injectorIndex) {
1395
1398
  assertNumber(lView[injectorIndex + 5], 'injectorIndex should point to a bloom filter');
1396
1399
  assertNumber(lView[injectorIndex + 6], 'injectorIndex should point to a bloom filter');
1397
1400
  assertNumber(lView[injectorIndex + 7], 'injectorIndex should point to a bloom filter');
1398
- assertNumber(lView[injectorIndex + 8 /* PARENT */], 'injectorIndex should point to parent injector');
1401
+ assertNumber(lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */], 'injectorIndex should point to parent injector');
1399
1402
  }
1400
1403
 
1401
1404
  /**
@@ -1792,7 +1795,7 @@ function getComponentLViewByIndex(nodeIndex, hostView) {
1792
1795
  }
1793
1796
  /** Checks whether a given view is in creation mode */
1794
1797
  function isCreationMode(view) {
1795
- return (view[FLAGS] & 4 /* CreationMode */) === 4 /* CreationMode */;
1798
+ return (view[FLAGS] & 4 /* LViewFlags.CreationMode */) === 4 /* LViewFlags.CreationMode */;
1796
1799
  }
1797
1800
  /**
1798
1801
  * Returns a boolean for whether the view is attached to the change detection tree.
@@ -1801,7 +1804,7 @@ function isCreationMode(view) {
1801
1804
  * into a container. For that, you'll want `viewAttachedToContainer` below.
1802
1805
  */
1803
1806
  function viewAttachedToChangeDetector(view) {
1804
- return (view[FLAGS] & 128 /* Attached */) === 128 /* Attached */;
1807
+ return (view[FLAGS] & 128 /* LViewFlags.Attached */) === 128 /* LViewFlags.Attached */;
1805
1808
  }
1806
1809
  /** Returns a boolean for whether the view is attached to a container. */
1807
1810
  function viewAttachedToContainer(view) {
@@ -1958,7 +1961,7 @@ function ɵɵresetView(value) {
1958
1961
  }
1959
1962
  function getCurrentTNode() {
1960
1963
  let currentTNode = getCurrentTNodePlaceholderOk();
1961
- while (currentTNode !== null && currentTNode.type === 64 /* Placeholder */) {
1964
+ while (currentTNode !== null && currentTNode.type === 64 /* TNodeType.Placeholder */) {
1962
1965
  currentTNode = currentTNode.parent;
1963
1966
  }
1964
1967
  return currentTNode;
@@ -2084,14 +2087,14 @@ function setCurrentQueryIndex(value) {
2084
2087
  function getDeclarationTNode(lView) {
2085
2088
  const tView = lView[TVIEW];
2086
2089
  // Return the declaration parent for embedded views
2087
- if (tView.type === 2 /* Embedded */) {
2090
+ if (tView.type === 2 /* TViewType.Embedded */) {
2088
2091
  ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');
2089
2092
  return tView.declTNode;
2090
2093
  }
2091
2094
  // Components don't have `TView.declTNode` because each instance of component could be
2092
2095
  // inserted in different location, hence `TView.declTNode` is meaningless.
2093
2096
  // Falling back to `T_HOST` in case we cross component boundary.
2094
- if (tView.type === 1 /* Component */) {
2097
+ if (tView.type === 1 /* TViewType.Component */) {
2095
2098
  return lView[T_HOST];
2096
2099
  }
2097
2100
  // Remaining TNode type is `TViewType.Root` which doesn't have a parent TNode.
@@ -2130,7 +2133,7 @@ function enterDI(lView, tNode, flags) {
2130
2133
  // In Ivy there are Comment nodes that correspond to ngIf and NgFor embedded directives
2131
2134
  // We want to skip those and look only at Elements and ElementContainers to ensure
2132
2135
  // we're looking at true parent nodes, and not content or other types.
2133
- if (parentTNode.type & (2 /* Element */ | 8 /* ElementContainer */)) {
2136
+ if (parentTNode.type & (2 /* TNodeType.Element */ | 8 /* TNodeType.ElementContainer */)) {
2134
2137
  break;
2135
2138
  }
2136
2139
  }
@@ -2461,7 +2464,7 @@ function registerPostOrderHooks(tView, tNode) {
2461
2464
  * case, when executing select(number))
2462
2465
  */
2463
2466
  function executeCheckHooks(lView, hooks, nodeIndex) {
2464
- callHooks(lView, hooks, 3 /* InitPhaseCompleted */, nodeIndex);
2467
+ callHooks(lView, hooks, 3 /* InitPhaseState.InitPhaseCompleted */, nodeIndex);
2465
2468
  }
2466
2469
  /**
2467
2470
  * Executes post-order init and check hooks (one of AfterContentInit, AfterContentChecked,
@@ -2478,18 +2481,18 @@ function executeCheckHooks(lView, hooks, nodeIndex) {
2478
2481
  */
2479
2482
  function executeInitAndCheckHooks(lView, hooks, initPhase, nodeIndex) {
2480
2483
  ngDevMode &&
2481
- assertNotEqual(initPhase, 3 /* InitPhaseCompleted */, 'Init pre-order hooks should not be called more than once');
2482
- if ((lView[FLAGS] & 3 /* InitPhaseStateMask */) === initPhase) {
2484
+ assertNotEqual(initPhase, 3 /* InitPhaseState.InitPhaseCompleted */, 'Init pre-order hooks should not be called more than once');
2485
+ if ((lView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {
2483
2486
  callHooks(lView, hooks, initPhase, nodeIndex);
2484
2487
  }
2485
2488
  }
2486
2489
  function incrementInitPhaseFlags(lView, initPhase) {
2487
2490
  ngDevMode &&
2488
- assertNotEqual(initPhase, 3 /* InitPhaseCompleted */, 'Init hooks phase should not be incremented after all init hooks have been run.');
2491
+ assertNotEqual(initPhase, 3 /* InitPhaseState.InitPhaseCompleted */, 'Init hooks phase should not be incremented after all init hooks have been run.');
2489
2492
  let flags = lView[FLAGS];
2490
- if ((flags & 3 /* InitPhaseStateMask */) === initPhase) {
2491
- flags &= 4095 /* IndexWithinInitPhaseReset */;
2492
- flags += 1 /* InitPhaseStateIncrementer */;
2493
+ if ((flags & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {
2494
+ flags &= 4095 /* LViewFlags.IndexWithinInitPhaseReset */;
2495
+ flags += 1 /* LViewFlags.InitPhaseStateIncrementer */;
2493
2496
  lView[FLAGS] = flags;
2494
2497
  }
2495
2498
  }
@@ -2511,7 +2514,7 @@ function callHooks(currentView, arr, initPhase, currentNodeIndex) {
2511
2514
  ngDevMode &&
2512
2515
  assertEqual(isInCheckNoChangesMode(), false, 'Hooks should never be run when in check no changes mode.');
2513
2516
  const startIndex = currentNodeIndex !== undefined ?
2514
- (currentView[PREORDER_HOOK_FLAGS] & 65535 /* IndexOfTheNextPreOrderHookMaskMask */) :
2517
+ (currentView[PREORDER_HOOK_FLAGS] & 65535 /* PreOrderHookFlags.IndexOfTheNextPreOrderHookMaskMask */) :
2515
2518
  0;
2516
2519
  const nodeIndexLimit = currentNodeIndex != null ? currentNodeIndex : -1;
2517
2520
  const max = arr.length - 1; // Stop the loop at length - 1, because we look for the hook at i + 1
@@ -2527,11 +2530,11 @@ function callHooks(currentView, arr, initPhase, currentNodeIndex) {
2527
2530
  else {
2528
2531
  const isInitHook = arr[i] < 0;
2529
2532
  if (isInitHook)
2530
- currentView[PREORDER_HOOK_FLAGS] += 65536 /* NumberOfInitHooksCalledIncrementer */;
2533
+ currentView[PREORDER_HOOK_FLAGS] += 65536 /* PreOrderHookFlags.NumberOfInitHooksCalledIncrementer */;
2531
2534
  if (lastNodeIndexFound < nodeIndexLimit || nodeIndexLimit == -1) {
2532
2535
  callHook(currentView, initPhase, arr, i);
2533
2536
  currentView[PREORDER_HOOK_FLAGS] =
2534
- (currentView[PREORDER_HOOK_FLAGS] & 4294901760 /* NumberOfInitHooksCalledMask */) + i +
2537
+ (currentView[PREORDER_HOOK_FLAGS] & 4294901760 /* PreOrderHookFlags.NumberOfInitHooksCalledMask */) + i +
2535
2538
  2;
2536
2539
  }
2537
2540
  i++;
@@ -2552,28 +2555,28 @@ function callHook(currentView, initPhase, arr, i) {
2552
2555
  const directiveIndex = isInitHook ? -arr[i] : arr[i];
2553
2556
  const directive = currentView[directiveIndex];
2554
2557
  if (isInitHook) {
2555
- const indexWithintInitPhase = currentView[FLAGS] >> 12 /* IndexWithinInitPhaseShift */;
2558
+ const indexWithintInitPhase = currentView[FLAGS] >> 12 /* LViewFlags.IndexWithinInitPhaseShift */;
2556
2559
  // The init phase state must be always checked here as it may have been recursively updated.
2557
2560
  if (indexWithintInitPhase <
2558
- (currentView[PREORDER_HOOK_FLAGS] >> 16 /* NumberOfInitHooksCalledShift */) &&
2559
- (currentView[FLAGS] & 3 /* InitPhaseStateMask */) === initPhase) {
2560
- currentView[FLAGS] += 4096 /* IndexWithinInitPhaseIncrementer */;
2561
- profiler(4 /* LifecycleHookStart */, directive, hook);
2561
+ (currentView[PREORDER_HOOK_FLAGS] >> 16 /* PreOrderHookFlags.NumberOfInitHooksCalledShift */) &&
2562
+ (currentView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {
2563
+ currentView[FLAGS] += 4096 /* LViewFlags.IndexWithinInitPhaseIncrementer */;
2564
+ profiler(4 /* ProfilerEvent.LifecycleHookStart */, directive, hook);
2562
2565
  try {
2563
2566
  hook.call(directive);
2564
2567
  }
2565
2568
  finally {
2566
- profiler(5 /* LifecycleHookEnd */, directive, hook);
2569
+ profiler(5 /* ProfilerEvent.LifecycleHookEnd */, directive, hook);
2567
2570
  }
2568
2571
  }
2569
2572
  }
2570
2573
  else {
2571
- profiler(4 /* LifecycleHookStart */, directive, hook);
2574
+ profiler(4 /* ProfilerEvent.LifecycleHookStart */, directive, hook);
2572
2575
  try {
2573
2576
  hook.call(directive);
2574
2577
  }
2575
2578
  finally {
2576
- profiler(5 /* LifecycleHookEnd */, directive, hook);
2579
+ profiler(5 /* ProfilerEvent.LifecycleHookEnd */, directive, hook);
2577
2580
  }
2578
2581
  }
2579
2582
  }
@@ -2715,13 +2718,13 @@ const unusedValueExportToPlacateAjd$5 = 1;
2715
2718
  */
2716
2719
  function toTNodeTypeAsString(tNodeType) {
2717
2720
  let text = '';
2718
- (tNodeType & 1 /* Text */) && (text += '|Text');
2719
- (tNodeType & 2 /* Element */) && (text += '|Element');
2720
- (tNodeType & 4 /* Container */) && (text += '|Container');
2721
- (tNodeType & 8 /* ElementContainer */) && (text += '|ElementContainer');
2722
- (tNodeType & 16 /* Projection */) && (text += '|Projection');
2723
- (tNodeType & 32 /* Icu */) && (text += '|IcuContainer');
2724
- (tNodeType & 64 /* Placeholder */) && (text += '|Placeholder');
2721
+ (tNodeType & 1 /* TNodeType.Text */) && (text += '|Text');
2722
+ (tNodeType & 2 /* TNodeType.Element */) && (text += '|Element');
2723
+ (tNodeType & 4 /* TNodeType.Container */) && (text += '|Container');
2724
+ (tNodeType & 8 /* TNodeType.ElementContainer */) && (text += '|ElementContainer');
2725
+ (tNodeType & 16 /* TNodeType.Projection */) && (text += '|Projection');
2726
+ (tNodeType & 32 /* TNodeType.Icu */) && (text += '|IcuContainer');
2727
+ (tNodeType & 64 /* TNodeType.Placeholder */) && (text += '|Placeholder');
2725
2728
  return text.length > 0 ? text.substring(1) : text;
2726
2729
  }
2727
2730
  // Note: This hack is necessary so we don't erroneously get a circular dependency
@@ -2749,7 +2752,7 @@ const unusedValueExportToPlacateAjd$4 = 1;
2749
2752
  * @param tNode
2750
2753
  */
2751
2754
  function hasClassInput(tNode) {
2752
- return (tNode.flags & 16 /* hasClassInput */) !== 0;
2755
+ return (tNode.flags & 16 /* TNodeFlags.hasClassInput */) !== 0;
2753
2756
  }
2754
2757
  /**
2755
2758
  * Returns `true` if the `TNode` has a directive which has `@Input()` for `style` binding.
@@ -2773,7 +2776,7 @@ function hasClassInput(tNode) {
2773
2776
  * @param tNode
2774
2777
  */
2775
2778
  function hasStyleInput(tNode) {
2776
- return (tNode.flags & 32 /* hasStyleInput */) !== 0;
2779
+ return (tNode.flags & 32 /* TNodeFlags.hasStyleInput */) !== 0;
2777
2780
  }
2778
2781
 
2779
2782
  /**
@@ -2791,13 +2794,13 @@ function assertTNodeType(tNode, expectedTypes, message) {
2791
2794
  }
2792
2795
  }
2793
2796
  function assertPureTNodeType(type) {
2794
- if (!(type === 2 /* Element */ || //
2795
- type === 1 /* Text */ || //
2796
- type === 4 /* Container */ || //
2797
- type === 8 /* ElementContainer */ || //
2798
- type === 32 /* Icu */ || //
2799
- type === 16 /* Projection */ || //
2800
- type === 64 /* Placeholder */)) {
2797
+ if (!(type === 2 /* TNodeType.Element */ || //
2798
+ type === 1 /* TNodeType.Text */ || //
2799
+ type === 4 /* TNodeType.Container */ || //
2800
+ type === 8 /* TNodeType.ElementContainer */ || //
2801
+ type === 32 /* TNodeType.Icu */ || //
2802
+ type === 16 /* TNodeType.Projection */ || //
2803
+ type === 64 /* TNodeType.Placeholder */)) {
2801
2804
  throwError(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`);
2802
2805
  }
2803
2806
  }
@@ -2837,7 +2840,7 @@ function setUpAttributes(renderer, native, attrs) {
2837
2840
  if (typeof value === 'number') {
2838
2841
  // only namespaces are supported. Other value types (such as style/class
2839
2842
  // entries) are not supported in this function.
2840
- if (value !== 0 /* NamespaceURI */) {
2843
+ if (value !== 0 /* AttributeMarker.NamespaceURI */) {
2841
2844
  break;
2842
2845
  }
2843
2846
  // we just landed on the marker value ... therefore
@@ -2884,14 +2887,14 @@ function setUpAttributes(renderer, native, attrs) {
2884
2887
  * @returns true if the marker is a "name-only" marker (e.g. `Bindings`, `Template` or `I18n`).
2885
2888
  */
2886
2889
  function isNameOnlyAttributeMarker(marker) {
2887
- return marker === 3 /* Bindings */ || marker === 4 /* Template */ ||
2888
- marker === 6 /* I18n */;
2890
+ return marker === 3 /* AttributeMarker.Bindings */ || marker === 4 /* AttributeMarker.Template */ ||
2891
+ marker === 6 /* AttributeMarker.I18n */;
2889
2892
  }
2890
2893
  function isAnimationProp(name) {
2891
2894
  // Perf note: accessing charCodeAt to check for the first character of a string is faster as
2892
2895
  // compared to accessing a character at index 0 (ex. name[0]). The main reason for this is that
2893
2896
  // charCodeAt doesn't allocate memory to return a substring.
2894
- return name.charCodeAt(0) === 64 /* AT_SIGN */;
2897
+ return name.charCodeAt(0) === 64 /* CharCode.AT_SIGN */;
2895
2898
  }
2896
2899
  /**
2897
2900
  * Merges `src` `TAttributes` into `dst` `TAttributes` removing any duplicates in the process.
@@ -2910,18 +2913,18 @@ function mergeHostAttrs(dst, src) {
2910
2913
  dst = src.slice();
2911
2914
  }
2912
2915
  else {
2913
- let srcMarker = -1 /* ImplicitAttributes */;
2916
+ let srcMarker = -1 /* AttributeMarker.ImplicitAttributes */;
2914
2917
  for (let i = 0; i < src.length; i++) {
2915
2918
  const item = src[i];
2916
2919
  if (typeof item === 'number') {
2917
2920
  srcMarker = item;
2918
2921
  }
2919
2922
  else {
2920
- if (srcMarker === 0 /* NamespaceURI */) {
2923
+ if (srcMarker === 0 /* AttributeMarker.NamespaceURI */) {
2921
2924
  // Case where we need to consume `key1`, `key2`, `value` items.
2922
2925
  }
2923
- else if (srcMarker === -1 /* ImplicitAttributes */ ||
2924
- srcMarker === 2 /* Styles */) {
2926
+ else if (srcMarker === -1 /* AttributeMarker.ImplicitAttributes */ ||
2927
+ srcMarker === 2 /* AttributeMarker.Styles */) {
2925
2928
  // Case where we have to consume `key1` and `value` only.
2926
2929
  mergeHostAttribute(dst, srcMarker, item, null, src[++i]);
2927
2930
  }
@@ -2948,7 +2951,7 @@ function mergeHostAttribute(dst, marker, key1, key2, value) {
2948
2951
  // Assume that new markers will be inserted at the end.
2949
2952
  let markerInsertPosition = dst.length;
2950
2953
  // scan until correct type.
2951
- if (marker === -1 /* ImplicitAttributes */) {
2954
+ if (marker === -1 /* AttributeMarker.ImplicitAttributes */) {
2952
2955
  markerInsertPosition = -1;
2953
2956
  }
2954
2957
  else {
@@ -3023,13 +3026,13 @@ function hasParentInjector(parentLocation) {
3023
3026
  function getParentInjectorIndex(parentLocation) {
3024
3027
  ngDevMode && assertNumber(parentLocation, 'Number expected');
3025
3028
  ngDevMode && assertNotEqual(parentLocation, -1, 'Not a valid state.');
3026
- const parentInjectorIndex = parentLocation & 32767 /* InjectorIndexMask */;
3029
+ const parentInjectorIndex = parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;
3027
3030
  ngDevMode &&
3028
3031
  assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, 'Parent injector must be pointing past HEADER_OFFSET.');
3029
- return parentLocation & 32767 /* InjectorIndexMask */;
3032
+ return parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;
3030
3033
  }
3031
3034
  function getParentInjectorViewOffset(parentLocation) {
3032
- return parentLocation >> 16 /* ViewOffsetShift */;
3035
+ return parentLocation >> 16 /* RelativeInjectorLocationFlags.ViewOffsetShift */;
3033
3036
  }
3034
3037
  /**
3035
3038
  * Unwraps a parent injector location number to find the view offset from the current injector,
@@ -3183,11 +3186,11 @@ function getOrCreateNodeInjectorForNode(tNode, lView) {
3183
3186
  const parentData = parentLView[TVIEW].data;
3184
3187
  // Creates a cumulative bloom filter that merges the parent's bloom filter
3185
3188
  // and its own cumulative bloom (which contains tokens for all ancestors)
3186
- for (let i = 0; i < 8 /* BLOOM_SIZE */; i++) {
3189
+ for (let i = 0; i < 8 /* NodeInjectorOffset.BLOOM_SIZE */; i++) {
3187
3190
  lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];
3188
3191
  }
3189
3192
  }
3190
- lView[injectorIndex + 8 /* PARENT */] = parentLoc;
3193
+ lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */] = parentLoc;
3191
3194
  return injectorIndex;
3192
3195
  }
3193
3196
  function insertBloom(arr, footer) {
@@ -3200,7 +3203,7 @@ function getInjectorIndex(tNode, lView) {
3200
3203
  (tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex) ||
3201
3204
  // After the first template pass, the injector index might exist but the parent values
3202
3205
  // might not have been calculated yet for this instance
3203
- lView[tNode.injectorIndex + 8 /* PARENT */] === null) {
3206
+ lView[tNode.injectorIndex + 8 /* NodeInjectorOffset.PARENT */] === null) {
3204
3207
  return -1;
3205
3208
  }
3206
3209
  else {
@@ -3243,7 +3246,7 @@ function getParentInjectorLocation(tNode, lView) {
3243
3246
  if (parentTNode.injectorIndex !== -1) {
3244
3247
  // We found a NodeInjector which points to something.
3245
3248
  return (parentTNode.injectorIndex |
3246
- (declarationViewOffset << 16 /* ViewOffsetShift */));
3249
+ (declarationViewOffset << 16 /* RelativeInjectorLocationFlags.ViewOffsetShift */));
3247
3250
  }
3248
3251
  }
3249
3252
  return NO_PARENT_INJECTOR;
@@ -3290,7 +3293,7 @@ function diPublicInInjector(injectorIndex, tView, token) {
3290
3293
  * @publicApi
3291
3294
  */
3292
3295
  function injectAttributeImpl(tNode, attrNameToInject) {
3293
- ngDevMode && assertTNodeType(tNode, 12 /* AnyContainer */ | 3 /* AnyRNode */);
3296
+ ngDevMode && assertTNodeType(tNode, 12 /* TNodeType.AnyContainer */ | 3 /* TNodeType.AnyRNode */);
3294
3297
  ngDevMode && assertDefined(tNode, 'expecting tNode');
3295
3298
  if (attrNameToInject === 'class') {
3296
3299
  return tNode.classes;
@@ -3308,7 +3311,7 @@ function injectAttributeImpl(tNode, attrNameToInject) {
3308
3311
  if (isNameOnlyAttributeMarker(value))
3309
3312
  break;
3310
3313
  // Skip namespaced attributes
3311
- if (value === 0 /* NamespaceURI */) {
3314
+ if (value === 0 /* AttributeMarker.NamespaceURI */) {
3312
3315
  // we skip the next two values
3313
3316
  // as namespaced attributes looks like
3314
3317
  // [..., AttributeMarker.NamespaceURI, 'http://someuri.com/test', 'test:exist',
@@ -3394,7 +3397,7 @@ function getOrCreateInjectable(tNode, lView, token, flags = InjectFlags.Default,
3394
3397
  if (tNode !== null) {
3395
3398
  // If the view or any of its ancestors have an embedded
3396
3399
  // view injector, we have to look it up there first.
3397
- if (lView[FLAGS] & 2048 /* HasEmbeddedViewInjector */) {
3400
+ if (lView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */) {
3398
3401
  const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND);
3399
3402
  if (embeddedInjectorValue !== NOT_FOUND) {
3400
3403
  return embeddedInjectorValue;
@@ -3456,7 +3459,7 @@ function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue)
3456
3459
  // searching the parent injector.
3457
3460
  if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) {
3458
3461
  parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) :
3459
- lView[injectorIndex + 8 /* PARENT */];
3462
+ lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];
3460
3463
  if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {
3461
3464
  injectorIndex = -1;
3462
3465
  }
@@ -3473,7 +3476,7 @@ function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue)
3473
3476
  // Check the current injector. If it matches, see if it contains token.
3474
3477
  const tView = lView[TVIEW];
3475
3478
  ngDevMode &&
3476
- assertTNodeForLView(tView.data[injectorIndex + 8 /* TNODE */], lView);
3479
+ assertTNodeForLView(tView.data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */], lView);
3477
3480
  if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {
3478
3481
  // At this point, we have an injector which *may* contain the token, so we step through
3479
3482
  // the providers and directives associated with the injector's corresponding node to get
@@ -3483,9 +3486,9 @@ function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue)
3483
3486
  return instance;
3484
3487
  }
3485
3488
  }
3486
- parentLocation = lView[injectorIndex + 8 /* PARENT */];
3489
+ parentLocation = lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];
3487
3490
  if (parentLocation !== NO_PARENT_INJECTOR &&
3488
- shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8 /* TNODE */] === hostTElementNode) &&
3491
+ shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */] === hostTElementNode) &&
3489
3492
  bloomHasToken(bloomHash, injectorIndex, lView)) {
3490
3493
  // The def wasn't found anywhere on this node, so it was a false positive.
3491
3494
  // Traverse up the tree and continue searching.
@@ -3505,7 +3508,7 @@ function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue)
3505
3508
  }
3506
3509
  function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) {
3507
3510
  const currentTView = lView[TVIEW];
3508
- const tNode = currentTView.data[injectorIndex + 8 /* TNODE */];
3511
+ const tNode = currentTView.data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */];
3509
3512
  // First, we need to determine if view providers can be accessed by the starting element.
3510
3513
  // There are two possibilities
3511
3514
  const canAccessViewProviders = previousTView == null ?
@@ -3523,7 +3526,7 @@ function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flag
3523
3526
  // - AND the parent TNode is an Element.
3524
3527
  // This means that we just came from the Component's View and therefore are allowed to see
3525
3528
  // into the ViewProviders.
3526
- (previousTView != currentTView && ((tNode.type & 3 /* AnyRNode */) !== 0));
3529
+ (previousTView != currentTView && ((tNode.type & 3 /* TNodeType.AnyRNode */) !== 0));
3527
3530
  // This special case happens when there is a @host on the inject and when we are searching
3528
3531
  // on the host element node.
3529
3532
  const isHostSpecialCase = (flags & InjectFlags.Host) && hostTElementNode === tNode;
@@ -3548,10 +3551,10 @@ function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flag
3548
3551
  function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) {
3549
3552
  const nodeProviderIndexes = tNode.providerIndexes;
3550
3553
  const tInjectables = tView.data;
3551
- const injectablesStart = nodeProviderIndexes & 1048575 /* ProvidersStartIndexMask */;
3554
+ const injectablesStart = nodeProviderIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
3552
3555
  const directivesStart = tNode.directiveStart;
3553
3556
  const directiveEnd = tNode.directiveEnd;
3554
- const cptViewProvidersCount = nodeProviderIndexes >> 20 /* CptViewProvidersCountShift */;
3557
+ const cptViewProvidersCount = nodeProviderIndexes >> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */;
3555
3558
  const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount;
3556
3559
  // When the host special case applies, only the viewProviders and the component are visible
3557
3560
  const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;
@@ -3641,7 +3644,7 @@ function bloomHashBitOrFactory(token) {
3641
3644
  }
3642
3645
  else {
3643
3646
  ngDevMode &&
3644
- assertEqual(tokenId, -1 /* Injector */, 'Expecting to get Special Injector Id');
3647
+ assertEqual(tokenId, -1 /* InjectorMarkers.Injector */, 'Expecting to get Special Injector Id');
3645
3648
  return createNodeInjector;
3646
3649
  }
3647
3650
  }
@@ -3737,8 +3740,8 @@ function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundVa
3737
3740
  // hierarchy when resolving the value is to walk it node-by-node while attempting to resolve
3738
3741
  // the token at each level.
3739
3742
  while (currentTNode !== null && currentLView !== null &&
3740
- (currentLView[FLAGS] & 2048 /* HasEmbeddedViewInjector */) &&
3741
- !(currentLView[FLAGS] & 512 /* IsRoot */)) {
3743
+ (currentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */) &&
3744
+ !(currentLView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {
3742
3745
  ngDevMode && assertTNodeForLView(currentTNode, currentLView);
3743
3746
  // Note that this lookup on the node injector is using the `Self` flag, because
3744
3747
  // we don't want the node injector to look at any parent injectors since we
@@ -3773,11 +3776,11 @@ function getTNodeFromLView(lView) {
3773
3776
  const tView = lView[TVIEW];
3774
3777
  const tViewType = tView.type;
3775
3778
  // The parent pointer differs based on `TView.type`.
3776
- if (tViewType === 2 /* Embedded */) {
3779
+ if (tViewType === 2 /* TViewType.Embedded */) {
3777
3780
  ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');
3778
3781
  return tView.declTNode;
3779
3782
  }
3780
- else if (tViewType === 1 /* Component */) {
3783
+ else if (tViewType === 1 /* TViewType.Component */) {
3781
3784
  // Components don't have `TView.declTNode` because each instance of component could be
3782
3785
  // inserted in different location, hence `TView.declTNode` is meaningless.
3783
3786
  return lView[T_HOST];
@@ -4175,7 +4178,7 @@ function getCompilerFacade(request) {
4175
4178
  console.error(`JIT compilation failed for ${request.kind}`, request.type);
4176
4179
  let message = `The ${request.kind} '${request
4177
4180
  .type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available.\n\n`;
4178
- if (request.usage === 1 /* PartialDeclaration */) {
4181
+ if (request.usage === 1 /* JitCompilerUsage.PartialDeclaration */) {
4179
4182
  message += `The ${request.kind} is part of a library that has been partially compiled.\n`;
4180
4183
  message +=
4181
4184
  `However, the Angular Linker has not processed the library such that JIT compilation is used as fallback.\n`;
@@ -4847,7 +4850,7 @@ function injectInjectorOnly(token, flags = InjectFlags.Default) {
4847
4850
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
4848
4851
  `inject() must be called from an injection context` :
4849
4852
  '';
4850
- throw new RuntimeError(203 /* MISSING_INJECTION_CONTEXT */, errorMessage);
4853
+ throw new RuntimeError(203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, errorMessage);
4851
4854
  }
4852
4855
  else if (_currentInjector === null) {
4853
4856
  return injectRootLimpMode(token, undefined, flags);
@@ -4914,7 +4917,7 @@ function injectArgs(types) {
4914
4917
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
4915
4918
  'Arguments array must have arguments.' :
4916
4919
  '';
4917
- throw new RuntimeError(900 /* INVALID_DIFFER_INPUT */, errorMessage);
4920
+ throw new RuntimeError(900 /* RuntimeErrorCode.INVALID_DIFFER_INPUT */, errorMessage);
4918
4921
  }
4919
4922
  let type = undefined;
4920
4923
  let flags = InjectFlags.Default;
@@ -4923,7 +4926,7 @@ function injectArgs(types) {
4923
4926
  const flag = getInjectFlag(meta);
4924
4927
  if (typeof flag === 'number') {
4925
4928
  // Special case when we handle @Inject decorator.
4926
- if (flag === -1 /* Inject */) {
4929
+ if (flag === -1 /* DecoratorFlags.Inject */) {
4927
4930
  type = meta.token;
4928
4931
  }
4929
4932
  else {
@@ -5010,7 +5013,7 @@ function formatError(text, obj, injectorErrorName, source = null) {
5010
5013
  const Inject = attachInjectFlag(
5011
5014
  // Disable tslint because `DecoratorFlags` is a const enum which gets inlined.
5012
5015
  // tslint:disable-next-line: no-toplevel-property-access
5013
- makeParamDecorator('Inject', (token) => ({ token })), -1 /* Inject */);
5016
+ makeParamDecorator('Inject', (token) => ({ token })), -1 /* DecoratorFlags.Inject */);
5014
5017
  /**
5015
5018
  * Optional decorator and metadata.
5016
5019
  *
@@ -5020,7 +5023,7 @@ makeParamDecorator('Inject', (token) => ({ token })), -1 /* Inject */);
5020
5023
  const Optional =
5021
5024
  // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
5022
5025
  // tslint:disable-next-line: no-toplevel-property-access
5023
- attachInjectFlag(makeParamDecorator('Optional'), 8 /* Optional */);
5026
+ attachInjectFlag(makeParamDecorator('Optional'), 8 /* InternalInjectFlags.Optional */);
5024
5027
  /**
5025
5028
  * Self decorator and metadata.
5026
5029
  *
@@ -5030,7 +5033,7 @@ attachInjectFlag(makeParamDecorator('Optional'), 8 /* Optional */);
5030
5033
  const Self =
5031
5034
  // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
5032
5035
  // tslint:disable-next-line: no-toplevel-property-access
5033
- attachInjectFlag(makeParamDecorator('Self'), 2 /* Self */);
5036
+ attachInjectFlag(makeParamDecorator('Self'), 2 /* InternalInjectFlags.Self */);
5034
5037
  /**
5035
5038
  * `SkipSelf` decorator and metadata.
5036
5039
  *
@@ -5040,7 +5043,7 @@ attachInjectFlag(makeParamDecorator('Self'), 2 /* Self */);
5040
5043
  const SkipSelf =
5041
5044
  // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
5042
5045
  // tslint:disable-next-line: no-toplevel-property-access
5043
- attachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* SkipSelf */);
5046
+ attachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* InternalInjectFlags.SkipSelf */);
5044
5047
  /**
5045
5048
  * Host decorator and metadata.
5046
5049
  *
@@ -5050,7 +5053,7 @@ attachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* SkipSelf */);
5050
5053
  const Host =
5051
5054
  // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
5052
5055
  // tslint:disable-next-line: no-toplevel-property-access
5053
- attachInjectFlag(makeParamDecorator('Host'), 1 /* Host */);
5056
+ attachInjectFlag(makeParamDecorator('Host'), 1 /* InternalInjectFlags.Host */);
5054
5057
 
5055
5058
  /**
5056
5059
  * @license
@@ -5499,27 +5502,27 @@ class SafeValueImpl {
5499
5502
  }
5500
5503
  class SafeHtmlImpl extends SafeValueImpl {
5501
5504
  getTypeName() {
5502
- return "HTML" /* Html */;
5505
+ return "HTML" /* BypassType.Html */;
5503
5506
  }
5504
5507
  }
5505
5508
  class SafeStyleImpl extends SafeValueImpl {
5506
5509
  getTypeName() {
5507
- return "Style" /* Style */;
5510
+ return "Style" /* BypassType.Style */;
5508
5511
  }
5509
5512
  }
5510
5513
  class SafeScriptImpl extends SafeValueImpl {
5511
5514
  getTypeName() {
5512
- return "Script" /* Script */;
5515
+ return "Script" /* BypassType.Script */;
5513
5516
  }
5514
5517
  }
5515
5518
  class SafeUrlImpl extends SafeValueImpl {
5516
5519
  getTypeName() {
5517
- return "URL" /* Url */;
5520
+ return "URL" /* BypassType.Url */;
5518
5521
  }
5519
5522
  }
5520
5523
  class SafeResourceUrlImpl extends SafeValueImpl {
5521
5524
  getTypeName() {
5522
- return "ResourceURL" /* ResourceUrl */;
5525
+ return "ResourceURL" /* BypassType.ResourceUrl */;
5523
5526
  }
5524
5527
  }
5525
5528
  function unwrapSafeValue(value) {
@@ -5530,7 +5533,7 @@ function allowSanitizationBypassAndThrow(value, type) {
5530
5533
  const actualType = getSanitizationBypassType(value);
5531
5534
  if (actualType != null && actualType !== type) {
5532
5535
  // Allow ResourceURLs in URL contexts, they are strictly more trusted.
5533
- if (actualType === "ResourceURL" /* ResourceUrl */ && type === "URL" /* Url */)
5536
+ if (actualType === "ResourceURL" /* BypassType.ResourceUrl */ && type === "URL" /* BypassType.Url */)
5534
5537
  return true;
5535
5538
  throw new Error(`Required a safe ${type}, got a ${actualType} (see https://g.co/ng/security#xss)`);
5536
5539
  }
@@ -6088,7 +6091,7 @@ function ɵɵsanitizeHtml(unsafeHtml) {
6088
6091
  if (sanitizer) {
6089
6092
  return trustedHTMLFromStringBypass(sanitizer.sanitize(SecurityContext.HTML, unsafeHtml) || '');
6090
6093
  }
6091
- if (allowSanitizationBypassAndThrow(unsafeHtml, "HTML" /* Html */)) {
6094
+ if (allowSanitizationBypassAndThrow(unsafeHtml, "HTML" /* BypassType.Html */)) {
6092
6095
  return trustedHTMLFromStringBypass(unwrapSafeValue(unsafeHtml));
6093
6096
  }
6094
6097
  return _sanitizeHtml(getDocument(), renderStringify(unsafeHtml));
@@ -6109,7 +6112,7 @@ function ɵɵsanitizeStyle(unsafeStyle) {
6109
6112
  if (sanitizer) {
6110
6113
  return sanitizer.sanitize(SecurityContext.STYLE, unsafeStyle) || '';
6111
6114
  }
6112
- if (allowSanitizationBypassAndThrow(unsafeStyle, "Style" /* Style */)) {
6115
+ if (allowSanitizationBypassAndThrow(unsafeStyle, "Style" /* BypassType.Style */)) {
6113
6116
  return unwrapSafeValue(unsafeStyle);
6114
6117
  }
6115
6118
  return renderStringify(unsafeStyle);
@@ -6135,7 +6138,7 @@ function ɵɵsanitizeUrl(unsafeUrl) {
6135
6138
  if (sanitizer) {
6136
6139
  return sanitizer.sanitize(SecurityContext.URL, unsafeUrl) || '';
6137
6140
  }
6138
- if (allowSanitizationBypassAndThrow(unsafeUrl, "URL" /* Url */)) {
6141
+ if (allowSanitizationBypassAndThrow(unsafeUrl, "URL" /* BypassType.Url */)) {
6139
6142
  return unwrapSafeValue(unsafeUrl);
6140
6143
  }
6141
6144
  return _sanitizeUrl(renderStringify(unsafeUrl));
@@ -6156,13 +6159,13 @@ function ɵɵsanitizeResourceUrl(unsafeResourceUrl) {
6156
6159
  if (sanitizer) {
6157
6160
  return trustedScriptURLFromStringBypass(sanitizer.sanitize(SecurityContext.RESOURCE_URL, unsafeResourceUrl) || '');
6158
6161
  }
6159
- if (allowSanitizationBypassAndThrow(unsafeResourceUrl, "ResourceURL" /* ResourceUrl */)) {
6162
+ if (allowSanitizationBypassAndThrow(unsafeResourceUrl, "ResourceURL" /* BypassType.ResourceUrl */)) {
6160
6163
  return trustedScriptURLFromStringBypass(unwrapSafeValue(unsafeResourceUrl));
6161
6164
  }
6162
6165
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
6163
6166
  'unsafe value used in a resource URL context (see https://g.co/ng/security#xss)' :
6164
6167
  '';
6165
- throw new RuntimeError(904 /* UNSAFE_VALUE_IN_RESOURCE_URL */, errorMessage);
6168
+ throw new RuntimeError(904 /* RuntimeErrorCode.UNSAFE_VALUE_IN_RESOURCE_URL */, errorMessage);
6166
6169
  }
6167
6170
  /**
6168
6171
  * A `script` sanitizer which only lets trusted javascript through.
@@ -6181,13 +6184,13 @@ function ɵɵsanitizeScript(unsafeScript) {
6181
6184
  if (sanitizer) {
6182
6185
  return trustedScriptFromStringBypass(sanitizer.sanitize(SecurityContext.SCRIPT, unsafeScript) || '');
6183
6186
  }
6184
- if (allowSanitizationBypassAndThrow(unsafeScript, "Script" /* Script */)) {
6187
+ if (allowSanitizationBypassAndThrow(unsafeScript, "Script" /* BypassType.Script */)) {
6185
6188
  return trustedScriptFromStringBypass(unwrapSafeValue(unsafeScript));
6186
6189
  }
6187
6190
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
6188
6191
  'unsafe value used in a script context' :
6189
6192
  '';
6190
- throw new RuntimeError(905 /* UNSAFE_VALUE_IN_SCRIPT */, errorMessage);
6193
+ throw new RuntimeError(905 /* RuntimeErrorCode.UNSAFE_VALUE_IN_SCRIPT */, errorMessage);
6191
6194
  }
6192
6195
  /**
6193
6196
  * A template tag function for promoting the associated constant literal to a
@@ -6279,14 +6282,14 @@ function validateAgainstEventProperties(name) {
6279
6282
  `please use (${name.slice(2)})=...` +
6280
6283
  `\nIf '${name}' is a directive input, make sure the directive is imported by the` +
6281
6284
  ` current module.`;
6282
- throw new RuntimeError(306 /* INVALID_EVENT_BINDING */, errorMessage);
6285
+ throw new RuntimeError(306 /* RuntimeErrorCode.INVALID_EVENT_BINDING */, errorMessage);
6283
6286
  }
6284
6287
  }
6285
6288
  function validateAgainstEventAttributes(name) {
6286
6289
  if (name.toLowerCase().startsWith('on')) {
6287
6290
  const errorMessage = `Binding to event attribute '${name}' is disallowed for security reasons, ` +
6288
6291
  `please use (${name.slice(2)})=...`;
6289
- throw new RuntimeError(306 /* INVALID_EVENT_BINDING */, errorMessage);
6292
+ throw new RuntimeError(306 /* RuntimeErrorCode.INVALID_EVENT_BINDING */, errorMessage);
6290
6293
  }
6291
6294
  }
6292
6295
  function getSanitizer() {
@@ -6541,7 +6544,7 @@ function readPatchedData(target) {
6541
6544
  function readPatchedLView(target) {
6542
6545
  const value = readPatchedData(target);
6543
6546
  if (value) {
6544
- return isLView(value) ? value : value.lView;
6547
+ return (isLView(value) ? value : value.lView);
6545
6548
  }
6546
6549
  return null;
6547
6550
  }
@@ -6644,14 +6647,14 @@ function getDirectivesAtNodeIndex(nodeIndex, lView, includeComponents) {
6644
6647
  if (directiveStartIndex == 0)
6645
6648
  return EMPTY_ARRAY;
6646
6649
  const directiveEndIndex = tNode.directiveEnd;
6647
- if (!includeComponents && tNode.flags & 2 /* isComponentHost */)
6650
+ if (!includeComponents && tNode.flags & 2 /* TNodeFlags.isComponentHost */)
6648
6651
  directiveStartIndex++;
6649
6652
  return lView.slice(directiveStartIndex, directiveEndIndex);
6650
6653
  }
6651
6654
  function getComponentAtNodeIndex(nodeIndex, lView) {
6652
6655
  const tNode = lView[TVIEW].data[nodeIndex];
6653
6656
  let directiveStartIndex = tNode.directiveStart;
6654
- return tNode.flags & 2 /* isComponentHost */ ? lView[directiveStartIndex] : null;
6657
+ return tNode.flags & 2 /* TNodeFlags.isComponentHost */ ? lView[directiveStartIndex] : null;
6655
6658
  }
6656
6659
  /**
6657
6660
  * Returns a map of local references (local reference name => element or directive instance) that
@@ -6932,11 +6935,11 @@ function maybeUnwrapFn(value) {
6932
6935
  function assertStandaloneComponentType(type) {
6933
6936
  const componentDef = getComponentDef(type);
6934
6937
  if (!componentDef) {
6935
- throw new RuntimeError(906 /* MISSING_GENERATED_DEF */, `The ${stringifyForError(type)} is not an Angular component, ` +
6938
+ throw new RuntimeError(906 /* RuntimeErrorCode.MISSING_GENERATED_DEF */, `The ${stringifyForError(type)} is not an Angular component, ` +
6936
6939
  `make sure it has the \`@Component\` decorator.`);
6937
6940
  }
6938
6941
  if (!componentDef.standalone) {
6939
- throw new RuntimeError(907 /* TYPE_IS_NOT_STANDALONE */, `The ${stringifyForError(type)} component is not marked as standalone, ` +
6942
+ throw new RuntimeError(907 /* RuntimeErrorCode.TYPE_IS_NOT_STANDALONE */, `The ${stringifyForError(type)} component is not marked as standalone, ` +
6940
6943
  `but Angular expects to have a standalone component here. ` +
6941
6944
  `Please make sure the ${stringifyForError(type)} component has ` +
6942
6945
  `the \`standalone: true\` flag in the decorator.`);
@@ -6944,7 +6947,7 @@ function assertStandaloneComponentType(type) {
6944
6947
  }
6945
6948
  /** Called when there are multiple component selectors that match a given node */
6946
6949
  function throwMultipleComponentError(tNode, first, second) {
6947
- throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}: ` +
6950
+ throw new RuntimeError(-300 /* RuntimeErrorCode.MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}: ` +
6948
6951
  `${stringifyForError(first)} and ` +
6949
6952
  `${stringifyForError(second)}`);
6950
6953
  }
@@ -6957,7 +6960,7 @@ function throwErrorIfNoChangesMode(creationMode, oldValue, currValue, propName)
6957
6960
  ` It seems like the view has been created after its parent and its children have been dirty checked.` +
6958
6961
  ` Has it been created in a change detection hook?`;
6959
6962
  }
6960
- throw new RuntimeError(-100 /* EXPRESSION_CHANGED_AFTER_CHECKED */, msg);
6963
+ throw new RuntimeError(-100 /* RuntimeErrorCode.EXPRESSION_CHANGED_AFTER_CHECKED */, msg);
6961
6964
  }
6962
6965
  function constructDetailsForInterpolation(lView, rootIndex, expressionIndex, meta, changedValue) {
6963
6966
  const [propName, prefix, ...chunks] = meta.split(INTERPOLATION_DELIMITER);
@@ -7101,7 +7104,7 @@ function getLViewParent(lView) {
7101
7104
  function getRootView(componentOrLView) {
7102
7105
  ngDevMode && assertDefined(componentOrLView, 'component');
7103
7106
  let lView = isLView(componentOrLView) ? componentOrLView : readPatchedLView(componentOrLView);
7104
- while (lView && !(lView[FLAGS] & 512 /* IsRoot */)) {
7107
+ while (lView && !(lView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {
7105
7108
  lView = getLViewParent(lView);
7106
7109
  }
7107
7110
  ngDevMode && assertLView(lView);
@@ -7172,7 +7175,7 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
7172
7175
  }
7173
7176
  const rNode = unwrapRNode(lNodeToHandle);
7174
7177
  ngDevMode && !isProceduralRenderer(renderer) && assertDomNode(rNode);
7175
- if (action === 0 /* Create */ && parent !== null) {
7178
+ if (action === 0 /* WalkTNodeTreeAction.Create */ && parent !== null) {
7176
7179
  if (beforeNode == null) {
7177
7180
  nativeAppendChild(renderer, parent, rNode);
7178
7181
  }
@@ -7180,13 +7183,13 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
7180
7183
  nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);
7181
7184
  }
7182
7185
  }
7183
- else if (action === 1 /* Insert */ && parent !== null) {
7186
+ else if (action === 1 /* WalkTNodeTreeAction.Insert */ && parent !== null) {
7184
7187
  nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);
7185
7188
  }
7186
- else if (action === 2 /* Detach */) {
7189
+ else if (action === 2 /* WalkTNodeTreeAction.Detach */) {
7187
7190
  nativeRemoveNode(renderer, rNode, isComponent);
7188
7191
  }
7189
- else if (action === 3 /* Destroy */) {
7192
+ else if (action === 3 /* WalkTNodeTreeAction.Destroy */) {
7190
7193
  ngDevMode && ngDevMode.rendererDestroyNode++;
7191
7194
  renderer.destroyNode(rNode);
7192
7195
  }
@@ -7241,7 +7244,7 @@ function createElementNode(renderer, name, namespace) {
7241
7244
  */
7242
7245
  function removeViewFromContainer(tView, lView) {
7243
7246
  const renderer = lView[RENDERER];
7244
- applyView(tView, lView, renderer, 2 /* Detach */, null, null);
7247
+ applyView(tView, lView, renderer, 2 /* WalkTNodeTreeAction.Detach */, null, null);
7245
7248
  lView[HOST] = null;
7246
7249
  lView[T_HOST] = null;
7247
7250
  }
@@ -7262,7 +7265,7 @@ function removeViewFromContainer(tView, lView) {
7262
7265
  function addViewToContainer(tView, parentTNode, renderer, lView, parentNativeNode, beforeNode) {
7263
7266
  lView[HOST] = parentNativeNode;
7264
7267
  lView[T_HOST] = parentTNode;
7265
- applyView(tView, lView, renderer, 1 /* Insert */, parentNativeNode, beforeNode);
7268
+ applyView(tView, lView, renderer, 1 /* WalkTNodeTreeAction.Insert */, parentNativeNode, beforeNode);
7266
7269
  }
7267
7270
  /**
7268
7271
  * Detach a `LView` from the DOM by detaching its nodes.
@@ -7271,7 +7274,7 @@ function addViewToContainer(tView, parentTNode, renderer, lView, parentNativeNod
7271
7274
  * @param lView the `LView` to be detached.
7272
7275
  */
7273
7276
  function renderDetachView(tView, lView) {
7274
- applyView(tView, lView, lView[RENDERER], 2 /* Detach */, null, null);
7277
+ applyView(tView, lView, lView[RENDERER], 2 /* WalkTNodeTreeAction.Detach */, null, null);
7275
7278
  }
7276
7279
  /**
7277
7280
  * Traverses down and up the tree of views and containers to remove listeners and
@@ -7366,7 +7369,7 @@ function insertView(tView, lView, lContainer, index) {
7366
7369
  lQueries.insertView(tView);
7367
7370
  }
7368
7371
  // Sets the attached flag
7369
- lView[FLAGS] |= 128 /* Attached */;
7372
+ lView[FLAGS] |= 128 /* LViewFlags.Attached */;
7370
7373
  }
7371
7374
  /**
7372
7375
  * Track views created from the declaration container (TemplateRef) and inserted into a
@@ -7406,8 +7409,8 @@ function detachMovedView(declarationContainer, lView) {
7406
7409
  // If the view was marked for refresh but then detached before it was checked (where the flag
7407
7410
  // would be cleared and the counter decremented), we need to decrement the view counter here
7408
7411
  // instead.
7409
- if (lView[FLAGS] & 1024 /* RefreshTransplantedView */) {
7410
- lView[FLAGS] &= ~1024 /* RefreshTransplantedView */;
7412
+ if (lView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) {
7413
+ lView[FLAGS] &= ~1024 /* LViewFlags.RefreshTransplantedView */;
7411
7414
  updateTransplantedViewCount(insertionLContainer, -1);
7412
7415
  }
7413
7416
  movedViews.splice(declarationViewIndex, 1);
@@ -7445,7 +7448,7 @@ function detachView(lContainer, removeIndex) {
7445
7448
  viewToDetach[PARENT] = null;
7446
7449
  viewToDetach[NEXT] = null;
7447
7450
  // Unsets the attached flag
7448
- viewToDetach[FLAGS] &= ~128 /* Attached */;
7451
+ viewToDetach[FLAGS] &= ~128 /* LViewFlags.Attached */;
7449
7452
  }
7450
7453
  return viewToDetach;
7451
7454
  }
@@ -7457,10 +7460,10 @@ function detachView(lContainer, removeIndex) {
7457
7460
  * @param lView The view to be destroyed.
7458
7461
  */
7459
7462
  function destroyLView(tView, lView) {
7460
- if (!(lView[FLAGS] & 256 /* Destroyed */)) {
7463
+ if (!(lView[FLAGS] & 256 /* LViewFlags.Destroyed */)) {
7461
7464
  const renderer = lView[RENDERER];
7462
7465
  if (isProceduralRenderer(renderer) && renderer.destroyNode) {
7463
- applyView(tView, lView, renderer, 3 /* Destroy */, null, null);
7466
+ applyView(tView, lView, renderer, 3 /* WalkTNodeTreeAction.Destroy */, null, null);
7464
7467
  }
7465
7468
  destroyViewTree(lView);
7466
7469
  }
@@ -7474,20 +7477,20 @@ function destroyLView(tView, lView) {
7474
7477
  * @param lView The LView to clean up
7475
7478
  */
7476
7479
  function cleanUpView(tView, lView) {
7477
- if (!(lView[FLAGS] & 256 /* Destroyed */)) {
7480
+ if (!(lView[FLAGS] & 256 /* LViewFlags.Destroyed */)) {
7478
7481
  // Usually the Attached flag is removed when the view is detached from its parent, however
7479
7482
  // if it's a root view, the flag won't be unset hence why we're also removing on destroy.
7480
- lView[FLAGS] &= ~128 /* Attached */;
7483
+ lView[FLAGS] &= ~128 /* LViewFlags.Attached */;
7481
7484
  // Mark the LView as destroyed *before* executing the onDestroy hooks. An onDestroy hook
7482
7485
  // runs arbitrary user code, which could include its own `viewRef.destroy()` (or similar). If
7483
7486
  // We don't flag the view as destroyed before the hooks, this could lead to an infinite loop.
7484
7487
  // This also aligns with the ViewEngine behavior. It also means that the onDestroy hook is
7485
7488
  // really more of an "afterDestroy" hook if you think about it.
7486
- lView[FLAGS] |= 256 /* Destroyed */;
7489
+ lView[FLAGS] |= 256 /* LViewFlags.Destroyed */;
7487
7490
  executeOnDestroys(tView, lView);
7488
7491
  processCleanups(tView, lView);
7489
7492
  // For component views only, the local renderer is destroyed at clean up time.
7490
- if (lView[TVIEW].type === 1 /* Component */ && isProceduralRenderer(lView[RENDERER])) {
7493
+ if (lView[TVIEW].type === 1 /* TViewType.Component */ && isProceduralRenderer(lView[RENDERER])) {
7491
7494
  ngDevMode && ngDevMode.rendererDestroy++;
7492
7495
  lView[RENDERER].destroy();
7493
7496
  }
@@ -7571,22 +7574,22 @@ function executeOnDestroys(tView, lView) {
7571
7574
  for (let j = 0; j < toCall.length; j += 2) {
7572
7575
  const callContext = context[toCall[j]];
7573
7576
  const hook = toCall[j + 1];
7574
- profiler(4 /* LifecycleHookStart */, callContext, hook);
7577
+ profiler(4 /* ProfilerEvent.LifecycleHookStart */, callContext, hook);
7575
7578
  try {
7576
7579
  hook.call(callContext);
7577
7580
  }
7578
7581
  finally {
7579
- profiler(5 /* LifecycleHookEnd */, callContext, hook);
7582
+ profiler(5 /* ProfilerEvent.LifecycleHookEnd */, callContext, hook);
7580
7583
  }
7581
7584
  }
7582
7585
  }
7583
7586
  else {
7584
- profiler(4 /* LifecycleHookStart */, context, toCall);
7587
+ profiler(4 /* ProfilerEvent.LifecycleHookStart */, context, toCall);
7585
7588
  try {
7586
7589
  toCall.call(context);
7587
7590
  }
7588
7591
  finally {
7589
- profiler(5 /* LifecycleHookEnd */, context, toCall);
7592
+ profiler(5 /* ProfilerEvent.LifecycleHookEnd */, context, toCall);
7590
7593
  }
7591
7594
  }
7592
7595
  }
@@ -7632,7 +7635,7 @@ function getClosestRElement(tView, tNode, lView) {
7632
7635
  // Skip over element and ICU containers as those are represented by a comment node and
7633
7636
  // can't be used as a render parent.
7634
7637
  while (parentTNode !== null &&
7635
- (parentTNode.type & (8 /* ElementContainer */ | 32 /* Icu */))) {
7638
+ (parentTNode.type & (8 /* TNodeType.ElementContainer */ | 32 /* TNodeType.Icu */))) {
7636
7639
  tNode = parentTNode;
7637
7640
  parentTNode = tNode.parent;
7638
7641
  }
@@ -7644,8 +7647,8 @@ function getClosestRElement(tView, tNode, lView) {
7644
7647
  return lView[HOST];
7645
7648
  }
7646
7649
  else {
7647
- ngDevMode && assertTNodeType(parentTNode, 3 /* AnyRNode */ | 4 /* Container */);
7648
- if (parentTNode.flags & 2 /* isComponentHost */) {
7650
+ ngDevMode && assertTNodeType(parentTNode, 3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */);
7651
+ if (parentTNode.flags & 2 /* TNodeFlags.isComponentHost */) {
7649
7652
  ngDevMode && assertTNodeForLView(parentTNode, lView);
7650
7653
  const encapsulation = tView.data[parentTNode.directiveStart].encapsulation;
7651
7654
  // We've got a parent which is an element in the current view. We just need to verify if the
@@ -7746,7 +7749,7 @@ function getInsertInFrontOfRNode(parentTNode, currentTNode, lView) {
7746
7749
  * @param lView current `LView`
7747
7750
  */
7748
7751
  function getInsertInFrontOfRNodeWithNoI18n(parentTNode, currentTNode, lView) {
7749
- if (parentTNode.type & (8 /* ElementContainer */ | 32 /* Icu */)) {
7752
+ if (parentTNode.type & (8 /* TNodeType.ElementContainer */ | 32 /* TNodeType.Icu */)) {
7750
7753
  return getNativeByTNode(parentTNode, lView);
7751
7754
  }
7752
7755
  return null;
@@ -7801,15 +7804,15 @@ function appendChild(tView, lView, childRNode, childTNode) {
7801
7804
  function getFirstNativeNode(lView, tNode) {
7802
7805
  if (tNode !== null) {
7803
7806
  ngDevMode &&
7804
- assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */ | 32 /* Icu */ | 16 /* Projection */);
7807
+ assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 32 /* TNodeType.Icu */ | 16 /* TNodeType.Projection */);
7805
7808
  const tNodeType = tNode.type;
7806
- if (tNodeType & 3 /* AnyRNode */) {
7809
+ if (tNodeType & 3 /* TNodeType.AnyRNode */) {
7807
7810
  return getNativeByTNode(tNode, lView);
7808
7811
  }
7809
- else if (tNodeType & 4 /* Container */) {
7812
+ else if (tNodeType & 4 /* TNodeType.Container */) {
7810
7813
  return getBeforeNodeForView(-1, lView[tNode.index]);
7811
7814
  }
7812
- else if (tNodeType & 8 /* ElementContainer */) {
7815
+ else if (tNodeType & 8 /* TNodeType.ElementContainer */) {
7813
7816
  const elIcuContainerChild = tNode.child;
7814
7817
  if (elIcuContainerChild !== null) {
7815
7818
  return getFirstNativeNode(lView, elIcuContainerChild);
@@ -7824,7 +7827,7 @@ function getFirstNativeNode(lView, tNode) {
7824
7827
  }
7825
7828
  }
7826
7829
  }
7827
- else if (tNodeType & 32 /* Icu */) {
7830
+ else if (tNodeType & 32 /* TNodeType.Icu */) {
7828
7831
  let nextRNode = icuContainerIterate(tNode, lView);
7829
7832
  let rNode = nextRNode();
7830
7833
  // If the ICU container has no nodes, than we use the ICU anchor as the node.
@@ -7892,21 +7895,21 @@ function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode,
7892
7895
  while (tNode != null) {
7893
7896
  ngDevMode && assertTNodeForLView(tNode, lView);
7894
7897
  ngDevMode &&
7895
- assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */ | 16 /* Projection */ | 32 /* Icu */);
7898
+ assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 16 /* TNodeType.Projection */ | 32 /* TNodeType.Icu */);
7896
7899
  const rawSlotValue = lView[tNode.index];
7897
7900
  const tNodeType = tNode.type;
7898
7901
  if (isProjection) {
7899
- if (action === 0 /* Create */) {
7902
+ if (action === 0 /* WalkTNodeTreeAction.Create */) {
7900
7903
  rawSlotValue && attachPatchData(unwrapRNode(rawSlotValue), lView);
7901
- tNode.flags |= 4 /* isProjected */;
7904
+ tNode.flags |= 4 /* TNodeFlags.isProjected */;
7902
7905
  }
7903
7906
  }
7904
- if ((tNode.flags & 64 /* isDetached */) !== 64 /* isDetached */) {
7905
- if (tNodeType & 8 /* ElementContainer */) {
7907
+ if ((tNode.flags & 64 /* TNodeFlags.isDetached */) !== 64 /* TNodeFlags.isDetached */) {
7908
+ if (tNodeType & 8 /* TNodeType.ElementContainer */) {
7906
7909
  applyNodes(renderer, action, tNode.child, lView, parentRElement, beforeNode, false);
7907
7910
  applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode);
7908
7911
  }
7909
- else if (tNodeType & 32 /* Icu */) {
7912
+ else if (tNodeType & 32 /* TNodeType.Icu */) {
7910
7913
  const nextRNode = icuContainerIterate(tNode, lView);
7911
7914
  let rNode;
7912
7915
  while (rNode = nextRNode()) {
@@ -7914,11 +7917,11 @@ function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode,
7914
7917
  }
7915
7918
  applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode);
7916
7919
  }
7917
- else if (tNodeType & 16 /* Projection */) {
7920
+ else if (tNodeType & 16 /* TNodeType.Projection */) {
7918
7921
  applyProjectionRecursive(renderer, action, lView, tNode, parentRElement, beforeNode);
7919
7922
  }
7920
7923
  else {
7921
- ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */ | 4 /* Container */);
7924
+ ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */);
7922
7925
  applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode);
7923
7926
  }
7924
7927
  }
@@ -7943,7 +7946,7 @@ function applyProjection(tView, lView, tProjectionNode) {
7943
7946
  const parentRNode = getParentRElement(tView, tProjectionNode, lView);
7944
7947
  const parentTNode = tProjectionNode.parent || lView[T_HOST];
7945
7948
  let beforeNode = getInsertInFrontOfRNode(parentTNode, tProjectionNode, lView);
7946
- applyProjectionRecursive(renderer, 0 /* Create */, lView, tProjectionNode, parentRNode, beforeNode);
7949
+ applyProjectionRecursive(renderer, 0 /* WalkTNodeTreeAction.Create */, lView, tProjectionNode, parentRNode, beforeNode);
7947
7950
  }
7948
7951
  /**
7949
7952
  * `applyProjectionRecursive` performs operation on the projection specified by `action` (insert,
@@ -8153,11 +8156,11 @@ function classIndexOf(className, classToSearch, startingIndex) {
8153
8156
  const foundIndex = className.indexOf(classToSearch, startingIndex);
8154
8157
  if (foundIndex === -1)
8155
8158
  return foundIndex;
8156
- if (foundIndex === 0 || className.charCodeAt(foundIndex - 1) <= 32 /* SPACE */) {
8159
+ if (foundIndex === 0 || className.charCodeAt(foundIndex - 1) <= 32 /* CharCode.SPACE */) {
8157
8160
  // Ensure that it has leading whitespace
8158
8161
  const length = classToSearch.length;
8159
8162
  if (foundIndex + length === end ||
8160
- className.charCodeAt(foundIndex + length) <= 32 /* SPACE */) {
8163
+ className.charCodeAt(foundIndex + length) <= 32 /* CharCode.SPACE */) {
8161
8164
  // Ensure that it has trailing whitespace
8162
8165
  return foundIndex;
8163
8166
  }
@@ -8200,7 +8203,7 @@ function isCssClassMatching(attrs, cssClassToMatch, isProjectionMode) {
8200
8203
  return true;
8201
8204
  }
8202
8205
  }
8203
- else if (item === 1 /* Classes */) {
8206
+ else if (item === 1 /* AttributeMarker.Classes */) {
8204
8207
  // We found the classes section. Start searching for the class.
8205
8208
  while (i < attrs.length && typeof (item = attrs[i++]) == 'string') {
8206
8209
  // while we have strings
@@ -8218,7 +8221,7 @@ function isCssClassMatching(attrs, cssClassToMatch, isProjectionMode) {
8218
8221
  * @param tNode current TNode
8219
8222
  */
8220
8223
  function isInlineTemplate(tNode) {
8221
- return tNode.type === 4 /* Container */ && tNode.value !== NG_TEMPLATE_SELECTOR;
8224
+ return tNode.type === 4 /* TNodeType.Container */ && tNode.value !== NG_TEMPLATE_SELECTOR;
8222
8225
  }
8223
8226
  /**
8224
8227
  * Function that checks whether a given tNode matches tag-based selector and has a valid type.
@@ -8232,7 +8235,7 @@ function isInlineTemplate(tNode) {
8232
8235
  * (applicable to TNodeType.Container only).
8233
8236
  */
8234
8237
  function hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) {
8235
- const tagNameToCompare = tNode.type === 4 /* Container */ && !isProjectionMode ? NG_TEMPLATE_SELECTOR : tNode.value;
8238
+ const tagNameToCompare = tNode.type === 4 /* TNodeType.Container */ && !isProjectionMode ? NG_TEMPLATE_SELECTOR : tNode.value;
8236
8239
  return currentSelector === tagNameToCompare;
8237
8240
  }
8238
8241
  /**
@@ -8246,7 +8249,7 @@ function hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) {
8246
8249
  */
8247
8250
  function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
8248
8251
  ngDevMode && assertDefined(selector[0], 'Selector should have a tag name');
8249
- let mode = 4 /* ELEMENT */;
8252
+ let mode = 4 /* SelectorFlags.ELEMENT */;
8250
8253
  const nodeAttrs = tNode.attrs || [];
8251
8254
  // Find the index of first attribute that has no value, only a name.
8252
8255
  const nameOnlyMarkerIdx = getNameOnlyMarkerIndex(nodeAttrs);
@@ -8265,13 +8268,13 @@ function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
8265
8268
  if (skipToNextSelector && isPositive(current))
8266
8269
  continue;
8267
8270
  skipToNextSelector = false;
8268
- mode = current | (mode & 1 /* NOT */);
8271
+ mode = current | (mode & 1 /* SelectorFlags.NOT */);
8269
8272
  continue;
8270
8273
  }
8271
8274
  if (skipToNextSelector)
8272
8275
  continue;
8273
- if (mode & 4 /* ELEMENT */) {
8274
- mode = 2 /* ATTRIBUTE */ | mode & 1 /* NOT */;
8276
+ if (mode & 4 /* SelectorFlags.ELEMENT */) {
8277
+ mode = 2 /* SelectorFlags.ATTRIBUTE */ | mode & 1 /* SelectorFlags.NOT */;
8275
8278
  if (current !== '' && !hasTagAndTypeMatch(tNode, current, isProjectionMode) ||
8276
8279
  current === '' && selector.length === 1) {
8277
8280
  if (isPositive(mode))
@@ -8280,10 +8283,10 @@ function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
8280
8283
  }
8281
8284
  }
8282
8285
  else {
8283
- const selectorAttrValue = mode & 8 /* CLASS */ ? current : selector[++i];
8286
+ const selectorAttrValue = mode & 8 /* SelectorFlags.CLASS */ ? current : selector[++i];
8284
8287
  // special case for matching against classes when a tNode has been instantiated with
8285
8288
  // class and style values as separate attribute values (e.g. ['title', CLASS, 'foo'])
8286
- if ((mode & 8 /* CLASS */) && tNode.attrs !== null) {
8289
+ if ((mode & 8 /* SelectorFlags.CLASS */) && tNode.attrs !== null) {
8287
8290
  if (!isCssClassMatching(tNode.attrs, selectorAttrValue, isProjectionMode)) {
8288
8291
  if (isPositive(mode))
8289
8292
  return false;
@@ -8291,7 +8294,7 @@ function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
8291
8294
  }
8292
8295
  continue;
8293
8296
  }
8294
- const attrName = (mode & 8 /* CLASS */) ? 'class' : current;
8297
+ const attrName = (mode & 8 /* SelectorFlags.CLASS */) ? 'class' : current;
8295
8298
  const attrIndexInNode = findAttrIndexInNode(attrName, nodeAttrs, isInlineTemplate(tNode), isProjectionMode);
8296
8299
  if (attrIndexInNode === -1) {
8297
8300
  if (isPositive(mode))
@@ -8306,16 +8309,16 @@ function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
8306
8309
  }
8307
8310
  else {
8308
8311
  ngDevMode &&
8309
- assertNotEqual(nodeAttrs[attrIndexInNode], 0 /* NamespaceURI */, 'We do not match directives on namespaced attributes');
8312
+ assertNotEqual(nodeAttrs[attrIndexInNode], 0 /* AttributeMarker.NamespaceURI */, 'We do not match directives on namespaced attributes');
8310
8313
  // we lowercase the attribute value to be able to match
8311
8314
  // selectors without case-sensitivity
8312
8315
  // (selectors are already in lowercase when generated)
8313
8316
  nodeAttrValue = nodeAttrs[attrIndexInNode + 1].toLowerCase();
8314
8317
  }
8315
- const compareAgainstClassName = mode & 8 /* CLASS */ ? nodeAttrValue : null;
8318
+ const compareAgainstClassName = mode & 8 /* SelectorFlags.CLASS */ ? nodeAttrValue : null;
8316
8319
  if (compareAgainstClassName &&
8317
8320
  classIndexOf(compareAgainstClassName, selectorAttrValue, 0) !== -1 ||
8318
- mode & 2 /* ATTRIBUTE */ && selectorAttrValue !== nodeAttrValue) {
8321
+ mode & 2 /* SelectorFlags.ATTRIBUTE */ && selectorAttrValue !== nodeAttrValue) {
8319
8322
  if (isPositive(mode))
8320
8323
  return false;
8321
8324
  skipToNextSelector = true;
@@ -8326,7 +8329,7 @@ function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
8326
8329
  return isPositive(mode) || skipToNextSelector;
8327
8330
  }
8328
8331
  function isPositive(mode) {
8329
- return (mode & 1 /* NOT */) === 0;
8332
+ return (mode & 1 /* SelectorFlags.NOT */) === 0;
8330
8333
  }
8331
8334
  /**
8332
8335
  * Examines the attribute's definition array for a node to find the index of the
@@ -8368,10 +8371,10 @@ function findAttrIndexInNode(name, attrs, isInlineTemplate, isProjectionMode) {
8368
8371
  if (maybeAttrName === name) {
8369
8372
  return i;
8370
8373
  }
8371
- else if (maybeAttrName === 3 /* Bindings */ || maybeAttrName === 6 /* I18n */) {
8374
+ else if (maybeAttrName === 3 /* AttributeMarker.Bindings */ || maybeAttrName === 6 /* AttributeMarker.I18n */) {
8372
8375
  bindingsMode = true;
8373
8376
  }
8374
- else if (maybeAttrName === 1 /* Classes */ || maybeAttrName === 2 /* Styles */) {
8377
+ else if (maybeAttrName === 1 /* AttributeMarker.Classes */ || maybeAttrName === 2 /* AttributeMarker.Styles */) {
8375
8378
  let value = attrs[++i];
8376
8379
  // We should skip classes here because we have a separate mechanism for
8377
8380
  // matching classes in projection mode.
@@ -8380,11 +8383,11 @@ function findAttrIndexInNode(name, attrs, isInlineTemplate, isProjectionMode) {
8380
8383
  }
8381
8384
  continue;
8382
8385
  }
8383
- else if (maybeAttrName === 4 /* Template */) {
8386
+ else if (maybeAttrName === 4 /* AttributeMarker.Template */) {
8384
8387
  // We do not care about Template attributes in this scenario.
8385
8388
  break;
8386
8389
  }
8387
- else if (maybeAttrName === 0 /* NamespaceURI */) {
8390
+ else if (maybeAttrName === 0 /* AttributeMarker.NamespaceURI */) {
8388
8391
  // Skip the whole namespaced attribute and value. This is by design.
8389
8392
  i += 4;
8390
8393
  continue;
@@ -8410,7 +8413,7 @@ function isNodeMatchingSelectorList(tNode, selector, isProjectionMode = false) {
8410
8413
  function getProjectAsAttrValue(tNode) {
8411
8414
  const nodeAttrs = tNode.attrs;
8412
8415
  if (nodeAttrs != null) {
8413
- const ngProjectAsAttrIdx = nodeAttrs.indexOf(5 /* ProjectAs */);
8416
+ const ngProjectAsAttrIdx = nodeAttrs.indexOf(5 /* AttributeMarker.ProjectAs */);
8414
8417
  // only check for ngProjectAs in attribute names, don't accidentally match attribute's value
8415
8418
  // (attribute names are stored at even indexes)
8416
8419
  if ((ngProjectAsAttrIdx & 1) === 0) {
@@ -8429,7 +8432,7 @@ function getNameOnlyMarkerIndex(nodeAttrs) {
8429
8432
  return nodeAttrs.length;
8430
8433
  }
8431
8434
  function matchTemplateAttribute(attrs, name) {
8432
- let i = attrs.indexOf(4 /* Template */);
8435
+ let i = attrs.indexOf(4 /* AttributeMarker.Template */);
8433
8436
  if (i > -1) {
8434
8437
  i++;
8435
8438
  while (i < attrs.length) {
@@ -8471,21 +8474,21 @@ function maybeWrapInNotSelector(isNegativeMode, chunk) {
8471
8474
  function stringifyCSSSelector(selector) {
8472
8475
  let result = selector[0];
8473
8476
  let i = 1;
8474
- let mode = 2 /* ATTRIBUTE */;
8477
+ let mode = 2 /* SelectorFlags.ATTRIBUTE */;
8475
8478
  let currentChunk = '';
8476
8479
  let isNegativeMode = false;
8477
8480
  while (i < selector.length) {
8478
8481
  let valueOrMarker = selector[i];
8479
8482
  if (typeof valueOrMarker === 'string') {
8480
- if (mode & 2 /* ATTRIBUTE */) {
8483
+ if (mode & 2 /* SelectorFlags.ATTRIBUTE */) {
8481
8484
  const attrValue = selector[++i];
8482
8485
  currentChunk +=
8483
8486
  '[' + valueOrMarker + (attrValue.length > 0 ? '="' + attrValue + '"' : '') + ']';
8484
8487
  }
8485
- else if (mode & 8 /* CLASS */) {
8488
+ else if (mode & 8 /* SelectorFlags.CLASS */) {
8486
8489
  currentChunk += '.' + valueOrMarker;
8487
8490
  }
8488
- else if (mode & 4 /* ELEMENT */) {
8491
+ else if (mode & 4 /* SelectorFlags.ELEMENT */) {
8489
8492
  currentChunk += ' ' + valueOrMarker;
8490
8493
  }
8491
8494
  }
@@ -8552,16 +8555,16 @@ function extractAttrsAndClassesFromSelector(selector) {
8552
8555
  const attrs = [];
8553
8556
  const classes = [];
8554
8557
  let i = 1;
8555
- let mode = 2 /* ATTRIBUTE */;
8558
+ let mode = 2 /* SelectorFlags.ATTRIBUTE */;
8556
8559
  while (i < selector.length) {
8557
8560
  let valueOrMarker = selector[i];
8558
8561
  if (typeof valueOrMarker === 'string') {
8559
- if (mode === 2 /* ATTRIBUTE */) {
8562
+ if (mode === 2 /* SelectorFlags.ATTRIBUTE */) {
8560
8563
  if (valueOrMarker !== '') {
8561
8564
  attrs.push(valueOrMarker, selector[++i]);
8562
8565
  }
8563
8566
  }
8564
- else if (mode === 8 /* CLASS */) {
8567
+ else if (mode === 8 /* SelectorFlags.CLASS */) {
8565
8568
  classes.push(valueOrMarker);
8566
8569
  }
8567
8570
  }
@@ -8627,7 +8630,7 @@ function selectIndexInternal(tView, lView, index, checkNoChangesMode) {
8627
8630
  // Flush the initial hooks for elements in the view that have been added up to this point.
8628
8631
  // PERF WARNING: do NOT extract this to a separate function without running benchmarks
8629
8632
  if (!checkNoChangesMode) {
8630
- const hooksInitPhaseCompleted = (lView[FLAGS] & 3 /* InitPhaseStateMask */) === 3 /* InitPhaseCompleted */;
8633
+ const hooksInitPhaseCompleted = (lView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === 3 /* InitPhaseState.InitPhaseCompleted */;
8631
8634
  if (hooksInitPhaseCompleted) {
8632
8635
  const preOrderCheckHooks = tView.preOrderCheckHooks;
8633
8636
  if (preOrderCheckHooks !== null) {
@@ -8637,7 +8640,7 @@ function selectIndexInternal(tView, lView, index, checkNoChangesMode) {
8637
8640
  else {
8638
8641
  const preOrderHooks = tView.preOrderHooks;
8639
8642
  if (preOrderHooks !== null) {
8640
- executeInitAndCheckHooks(lView, preOrderHooks, 0 /* OnInitHooksToBeRun */, index);
8643
+ executeInitAndCheckHooks(lView, preOrderHooks, 0 /* InitPhaseState.OnInitHooksToBeRun */, index);
8641
8644
  }
8642
8645
  }
8643
8646
  }
@@ -8694,47 +8697,47 @@ function createNamedArrayType(name) {
8694
8697
  * found in the LICENSE file at https://angular.io/license
8695
8698
  */
8696
8699
  function toTStylingRange(prev, next) {
8697
- ngDevMode && assertNumberInRange(prev, 0, 32767 /* UNSIGNED_MASK */);
8698
- ngDevMode && assertNumberInRange(next, 0, 32767 /* UNSIGNED_MASK */);
8699
- return (prev << 17 /* PREV_SHIFT */ | next << 2 /* NEXT_SHIFT */);
8700
+ ngDevMode && assertNumberInRange(prev, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
8701
+ ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
8702
+ return (prev << 17 /* StylingRange.PREV_SHIFT */ | next << 2 /* StylingRange.NEXT_SHIFT */);
8700
8703
  }
8701
8704
  function getTStylingRangePrev(tStylingRange) {
8702
8705
  ngDevMode && assertNumber(tStylingRange, 'expected number');
8703
- return (tStylingRange >> 17 /* PREV_SHIFT */) & 32767 /* UNSIGNED_MASK */;
8706
+ return (tStylingRange >> 17 /* StylingRange.PREV_SHIFT */) & 32767 /* StylingRange.UNSIGNED_MASK */;
8704
8707
  }
8705
8708
  function getTStylingRangePrevDuplicate(tStylingRange) {
8706
8709
  ngDevMode && assertNumber(tStylingRange, 'expected number');
8707
- return (tStylingRange & 2 /* PREV_DUPLICATE */) ==
8708
- 2 /* PREV_DUPLICATE */;
8710
+ return (tStylingRange & 2 /* StylingRange.PREV_DUPLICATE */) ==
8711
+ 2 /* StylingRange.PREV_DUPLICATE */;
8709
8712
  }
8710
8713
  function setTStylingRangePrev(tStylingRange, previous) {
8711
8714
  ngDevMode && assertNumber(tStylingRange, 'expected number');
8712
- ngDevMode && assertNumberInRange(previous, 0, 32767 /* UNSIGNED_MASK */);
8713
- return ((tStylingRange & ~4294836224 /* PREV_MASK */) |
8714
- (previous << 17 /* PREV_SHIFT */));
8715
+ ngDevMode && assertNumberInRange(previous, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
8716
+ return ((tStylingRange & ~4294836224 /* StylingRange.PREV_MASK */) |
8717
+ (previous << 17 /* StylingRange.PREV_SHIFT */));
8715
8718
  }
8716
8719
  function setTStylingRangePrevDuplicate(tStylingRange) {
8717
8720
  ngDevMode && assertNumber(tStylingRange, 'expected number');
8718
- return (tStylingRange | 2 /* PREV_DUPLICATE */);
8721
+ return (tStylingRange | 2 /* StylingRange.PREV_DUPLICATE */);
8719
8722
  }
8720
8723
  function getTStylingRangeNext(tStylingRange) {
8721
8724
  ngDevMode && assertNumber(tStylingRange, 'expected number');
8722
- return (tStylingRange & 131068 /* NEXT_MASK */) >> 2 /* NEXT_SHIFT */;
8725
+ return (tStylingRange & 131068 /* StylingRange.NEXT_MASK */) >> 2 /* StylingRange.NEXT_SHIFT */;
8723
8726
  }
8724
8727
  function setTStylingRangeNext(tStylingRange, next) {
8725
8728
  ngDevMode && assertNumber(tStylingRange, 'expected number');
8726
- ngDevMode && assertNumberInRange(next, 0, 32767 /* UNSIGNED_MASK */);
8727
- return ((tStylingRange & ~131068 /* NEXT_MASK */) | //
8728
- next << 2 /* NEXT_SHIFT */);
8729
+ ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
8730
+ return ((tStylingRange & ~131068 /* StylingRange.NEXT_MASK */) | //
8731
+ next << 2 /* StylingRange.NEXT_SHIFT */);
8729
8732
  }
8730
8733
  function getTStylingRangeNextDuplicate(tStylingRange) {
8731
8734
  ngDevMode && assertNumber(tStylingRange, 'expected number');
8732
- return (tStylingRange & 1 /* NEXT_DUPLICATE */) ===
8733
- 1 /* NEXT_DUPLICATE */;
8735
+ return (tStylingRange & 1 /* StylingRange.NEXT_DUPLICATE */) ===
8736
+ 1 /* StylingRange.NEXT_DUPLICATE */;
8734
8737
  }
8735
8738
  function setTStylingRangeNextDuplicate(tStylingRange) {
8736
8739
  ngDevMode && assertNumber(tStylingRange, 'expected number');
8737
- return (tStylingRange | 1 /* NEXT_DUPLICATE */);
8740
+ return (tStylingRange | 1 /* StylingRange.NEXT_DUPLICATE */);
8738
8741
  }
8739
8742
  function getTStylingRangeTail(tStylingRange) {
8740
8743
  ngDevMode && assertNumber(tStylingRange, 'expected number');
@@ -8840,11 +8843,11 @@ class LEmbeddedView extends Array {
8840
8843
  }
8841
8844
  function getLViewToClone(type, name) {
8842
8845
  switch (type) {
8843
- case 0 /* Root */:
8846
+ case 0 /* TViewType.Root */:
8844
8847
  if (LVIEW_ROOT === undefined)
8845
8848
  LVIEW_ROOT = new LRootView();
8846
8849
  return LVIEW_ROOT;
8847
- case 1 /* Component */:
8850
+ case 1 /* TViewType.Component */:
8848
8851
  if (!ngDevMode || !ngDevMode.namedConstructors) {
8849
8852
  if (LVIEW_COMPONENT === undefined)
8850
8853
  LVIEW_COMPONENT = new LComponentView();
@@ -8858,7 +8861,7 @@ function getLViewToClone(type, name) {
8858
8861
  LVIEW_COMPONENT_CACHE.set(name, componentArray);
8859
8862
  }
8860
8863
  return componentArray;
8861
- case 2 /* Embedded */:
8864
+ case 2 /* TViewType.Embedded */:
8862
8865
  if (!ngDevMode || !ngDevMode.namedConstructors) {
8863
8866
  if (LVIEW_EMBEDDED === undefined)
8864
8867
  LVIEW_EMBEDDED = new LEmbeddedView();
@@ -9026,9 +9029,9 @@ class TNode {
9026
9029
  }
9027
9030
  while (injectorIndex !== -1) {
9028
9031
  ngDevMode && assertNodeInjector(lView, injectorIndex);
9029
- const tNode = lView[TVIEW].data[injectorIndex + 8 /* TNODE */];
9032
+ const tNode = lView[TVIEW].data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */];
9030
9033
  path.push(buildDebugNode(tNode, lView));
9031
- const parentLocation = lView[injectorIndex + 8 /* PARENT */];
9034
+ const parentLocation = lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];
9032
9035
  if (parentLocation === NO_PARENT_INJECTOR) {
9033
9036
  injectorIndex = -1;
9034
9037
  }
@@ -9044,26 +9047,26 @@ class TNode {
9044
9047
  }
9045
9048
  get flags_() {
9046
9049
  const flags = [];
9047
- if (this.flags & 16 /* hasClassInput */)
9050
+ if (this.flags & 16 /* TNodeFlags.hasClassInput */)
9048
9051
  flags.push('TNodeFlags.hasClassInput');
9049
- if (this.flags & 8 /* hasContentQuery */)
9052
+ if (this.flags & 8 /* TNodeFlags.hasContentQuery */)
9050
9053
  flags.push('TNodeFlags.hasContentQuery');
9051
- if (this.flags & 32 /* hasStyleInput */)
9054
+ if (this.flags & 32 /* TNodeFlags.hasStyleInput */)
9052
9055
  flags.push('TNodeFlags.hasStyleInput');
9053
- if (this.flags & 128 /* hasHostBindings */)
9056
+ if (this.flags & 128 /* TNodeFlags.hasHostBindings */)
9054
9057
  flags.push('TNodeFlags.hasHostBindings');
9055
- if (this.flags & 2 /* isComponentHost */)
9058
+ if (this.flags & 2 /* TNodeFlags.isComponentHost */)
9056
9059
  flags.push('TNodeFlags.isComponentHost');
9057
- if (this.flags & 1 /* isDirectiveHost */)
9060
+ if (this.flags & 1 /* TNodeFlags.isDirectiveHost */)
9058
9061
  flags.push('TNodeFlags.isDirectiveHost');
9059
- if (this.flags & 64 /* isDetached */)
9062
+ if (this.flags & 64 /* TNodeFlags.isDetached */)
9060
9063
  flags.push('TNodeFlags.isDetached');
9061
- if (this.flags & 4 /* isProjected */)
9064
+ if (this.flags & 4 /* TNodeFlags.isProjected */)
9062
9065
  flags.push('TNodeFlags.isProjected');
9063
9066
  return flags.join('|');
9064
9067
  }
9065
9068
  get template_() {
9066
- if (this.type & 1 /* Text */)
9069
+ if (this.type & 1 /* TNodeType.Text */)
9067
9070
  return this.value;
9068
9071
  const buf = [];
9069
9072
  const tagName = typeof this.value === 'string' && this.value || this.type_;
@@ -9093,11 +9096,11 @@ class TNode {
9093
9096
  return toDebugStyleBinding(this, true);
9094
9097
  }
9095
9098
  get providerIndexStart_() {
9096
- return this.providerIndexes & 1048575 /* ProvidersStartIndexMask */;
9099
+ return this.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
9097
9100
  }
9098
9101
  get providerIndexEnd_() {
9099
9102
  return this.providerIndexStart_ +
9100
- (this.providerIndexes >>> 20 /* CptViewProvidersCountShift */);
9103
+ (this.providerIndexes >>> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */);
9101
9104
  }
9102
9105
  }
9103
9106
  const TNodeDebug = TNode;
@@ -9221,15 +9224,15 @@ class LViewDebug {
9221
9224
  const flags = this._raw_lView[FLAGS];
9222
9225
  return {
9223
9226
  __raw__flags__: flags,
9224
- initPhaseState: flags & 3 /* InitPhaseStateMask */,
9225
- creationMode: !!(flags & 4 /* CreationMode */),
9226
- firstViewPass: !!(flags & 8 /* FirstLViewPass */),
9227
- checkAlways: !!(flags & 16 /* CheckAlways */),
9228
- dirty: !!(flags & 64 /* Dirty */),
9229
- attached: !!(flags & 128 /* Attached */),
9230
- destroyed: !!(flags & 256 /* Destroyed */),
9231
- isRoot: !!(flags & 512 /* IsRoot */),
9232
- indexWithinInitPhase: flags >> 12 /* IndexWithinInitPhaseShift */,
9227
+ initPhaseState: flags & 3 /* LViewFlags.InitPhaseStateMask */,
9228
+ creationMode: !!(flags & 4 /* LViewFlags.CreationMode */),
9229
+ firstViewPass: !!(flags & 8 /* LViewFlags.FirstLViewPass */),
9230
+ checkAlways: !!(flags & 16 /* LViewFlags.CheckAlways */),
9231
+ dirty: !!(flags & 64 /* LViewFlags.Dirty */),
9232
+ attached: !!(flags & 128 /* LViewFlags.Attached */),
9233
+ destroyed: !!(flags & 256 /* LViewFlags.Destroyed */),
9234
+ isRoot: !!(flags & 512 /* LViewFlags.IsRoot */),
9235
+ indexWithinInitPhase: flags >> 12 /* LViewFlags.IndexWithinInitPhaseShift */,
9233
9236
  };
9234
9237
  }
9235
9238
  get parent() {
@@ -9454,6 +9457,21 @@ class LContainerDebug {
9454
9457
  }
9455
9458
  }
9456
9459
 
9460
+ let shouldThrowErrorOnUnknownProperty = false;
9461
+ /**
9462
+ * Sets a strict mode for JIT-compiled components to throw an error on unknown properties,
9463
+ * instead of just logging the error.
9464
+ * (for AOT-compiled ones this check happens at build time).
9465
+ */
9466
+ function ɵsetUnknownPropertyStrictMode(shouldThrow) {
9467
+ shouldThrowErrorOnUnknownProperty = shouldThrow;
9468
+ }
9469
+ /**
9470
+ * Gets the current value of the strict mode.
9471
+ */
9472
+ function ɵgetUnknownPropertyStrictMode() {
9473
+ return shouldThrowErrorOnUnknownProperty;
9474
+ }
9457
9475
  /**
9458
9476
  * A permanent marker promise which signifies that the current CD tree is
9459
9477
  * clean.
@@ -9486,7 +9504,7 @@ function processHostBindingOpCodes(tView, lView) {
9486
9504
  const hostBindingFn = hostBindingOpCodes[++i];
9487
9505
  setBindingRootForHostBindings(bindingRootIndx, directiveIdx);
9488
9506
  const context = lView[directiveIdx];
9489
- hostBindingFn(2 /* Update */, context);
9507
+ hostBindingFn(2 /* RenderFlags.Update */, context);
9490
9508
  }
9491
9509
  }
9492
9510
  }
@@ -9507,7 +9525,7 @@ function refreshContentQueries(tView, lView) {
9507
9525
  ngDevMode &&
9508
9526
  assertDefined(directiveDef.contentQueries, 'contentQueries function should be defined');
9509
9527
  setCurrentQueryIndex(queryStartIdx);
9510
- directiveDef.contentQueries(2 /* Update */, lView[directiveDefIdx], directiveDefIdx);
9528
+ directiveDef.contentQueries(2 /* RenderFlags.Update */, lView[directiveDefIdx], directiveDefIdx);
9511
9529
  }
9512
9530
  }
9513
9531
  }
@@ -9527,10 +9545,10 @@ function renderChildComponents(hostLView, components) {
9527
9545
  function createLView(parentLView, tView, context, flags, host, tHostNode, rendererFactory, renderer, sanitizer, injector, embeddedViewInjector) {
9528
9546
  const lView = ngDevMode ? cloneToLViewFromTViewBlueprint(tView) : tView.blueprint.slice();
9529
9547
  lView[HOST] = host;
9530
- lView[FLAGS] = flags | 4 /* CreationMode */ | 128 /* Attached */ | 8 /* FirstLViewPass */;
9548
+ lView[FLAGS] = flags | 4 /* LViewFlags.CreationMode */ | 128 /* LViewFlags.Attached */ | 8 /* LViewFlags.FirstLViewPass */;
9531
9549
  if (embeddedViewInjector !== null ||
9532
- (parentLView && (parentLView[FLAGS] & 2048 /* HasEmbeddedViewInjector */))) {
9533
- lView[FLAGS] |= 2048 /* HasEmbeddedViewInjector */;
9550
+ (parentLView && (parentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */))) {
9551
+ lView[FLAGS] |= 2048 /* LViewFlags.HasEmbeddedViewInjector */;
9534
9552
  }
9535
9553
  resetPreOrderHookFlags(lView);
9536
9554
  ngDevMode && tView.declTNode && parentLView && assertTNodeForLView(tView.declTNode, parentLView);
@@ -9546,9 +9564,9 @@ function createLView(parentLView, tView, context, flags, host, tHostNode, render
9546
9564
  lView[ID] = getUniqueLViewId();
9547
9565
  lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector;
9548
9566
  ngDevMode &&
9549
- assertEqual(tView.type == 2 /* Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
9567
+ assertEqual(tView.type == 2 /* TViewType.Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
9550
9568
  lView[DECLARATION_COMPONENT_VIEW] =
9551
- tView.type == 2 /* Embedded */ ? parentLView[DECLARATION_COMPONENT_VIEW] : lView;
9569
+ tView.type == 2 /* TViewType.Embedded */ ? parentLView[DECLARATION_COMPONENT_VIEW] : lView;
9552
9570
  ngDevMode && attachLViewDebug(lView);
9553
9571
  return lView;
9554
9572
  }
@@ -9566,10 +9584,10 @@ function getOrCreateTNode(tView, index, type, name, attrs) {
9566
9584
  // See `TNodeType.Placeholder` and `LFrame.inI18n` for more context.
9567
9585
  // If the `TNode` was not pre-declared than it means it was not mentioned which means it was
9568
9586
  // removed, so we mark it as detached.
9569
- tNode.flags |= 64 /* isDetached */;
9587
+ tNode.flags |= 64 /* TNodeFlags.isDetached */;
9570
9588
  }
9571
9589
  }
9572
- else if (tNode.type & 64 /* Placeholder */) {
9590
+ else if (tNode.type & 64 /* TNodeType.Placeholder */) {
9573
9591
  tNode.type = type;
9574
9592
  tNode.value = name;
9575
9593
  tNode.attrs = attrs;
@@ -9656,13 +9674,13 @@ function renderView(tView, lView, context) {
9656
9674
  try {
9657
9675
  const viewQuery = tView.viewQuery;
9658
9676
  if (viewQuery !== null) {
9659
- executeViewQueryFn(1 /* Create */, viewQuery, context);
9677
+ executeViewQueryFn(1 /* RenderFlags.Create */, viewQuery, context);
9660
9678
  }
9661
9679
  // Execute a template associated with this view, if it exists. A template function might not be
9662
9680
  // defined for the root component views.
9663
9681
  const templateFn = tView.template;
9664
9682
  if (templateFn !== null) {
9665
- executeTemplate(tView, lView, templateFn, 1 /* Create */, context);
9683
+ executeTemplate(tView, lView, templateFn, 1 /* RenderFlags.Create */, context);
9666
9684
  }
9667
9685
  // This needs to be set before children are processed to support recursive components.
9668
9686
  // This must be set to false immediately after the first creation run because in an
@@ -9682,7 +9700,7 @@ function renderView(tView, lView, context) {
9682
9700
  // in case a child component has projected a container. The LContainer needs
9683
9701
  // to exist so the embedded views are properly attached by the container.
9684
9702
  if (tView.staticViewQueries) {
9685
- executeViewQueryFn(2 /* Update */, tView.viewQuery, context);
9703
+ executeViewQueryFn(2 /* RenderFlags.Update */, tView.viewQuery, context);
9686
9704
  }
9687
9705
  // Render child component views.
9688
9706
  const components = tView.components;
@@ -9700,7 +9718,7 @@ function renderView(tView, lView, context) {
9700
9718
  throw error;
9701
9719
  }
9702
9720
  finally {
9703
- lView[FLAGS] &= ~4 /* CreationMode */;
9721
+ lView[FLAGS] &= ~4 /* LViewFlags.CreationMode */;
9704
9722
  leaveView();
9705
9723
  }
9706
9724
  }
@@ -9715,7 +9733,7 @@ function renderView(tView, lView, context) {
9715
9733
  function refreshView(tView, lView, templateFn, context) {
9716
9734
  ngDevMode && assertEqual(isCreationMode(lView), false, 'Should be run in update mode');
9717
9735
  const flags = lView[FLAGS];
9718
- if ((flags & 256 /* Destroyed */) === 256 /* Destroyed */)
9736
+ if ((flags & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */)
9719
9737
  return;
9720
9738
  enterView(lView);
9721
9739
  // Check no changes mode is a dev only mode used to verify that bindings have not changed
@@ -9725,9 +9743,9 @@ function refreshView(tView, lView, templateFn, context) {
9725
9743
  resetPreOrderHookFlags(lView);
9726
9744
  setBindingIndex(tView.bindingStartIndex);
9727
9745
  if (templateFn !== null) {
9728
- executeTemplate(tView, lView, templateFn, 2 /* Update */, context);
9746
+ executeTemplate(tView, lView, templateFn, 2 /* RenderFlags.Update */, context);
9729
9747
  }
9730
- const hooksInitPhaseCompleted = (flags & 3 /* InitPhaseStateMask */) === 3 /* InitPhaseCompleted */;
9748
+ const hooksInitPhaseCompleted = (flags & 3 /* LViewFlags.InitPhaseStateMask */) === 3 /* InitPhaseState.InitPhaseCompleted */;
9731
9749
  // execute pre-order hooks (OnInit, OnChanges, DoCheck)
9732
9750
  // PERF WARNING: do NOT extract this to a separate function without running benchmarks
9733
9751
  if (!isInCheckNoChangesPass) {
@@ -9740,9 +9758,9 @@ function refreshView(tView, lView, templateFn, context) {
9740
9758
  else {
9741
9759
  const preOrderHooks = tView.preOrderHooks;
9742
9760
  if (preOrderHooks !== null) {
9743
- executeInitAndCheckHooks(lView, preOrderHooks, 0 /* OnInitHooksToBeRun */, null);
9761
+ executeInitAndCheckHooks(lView, preOrderHooks, 0 /* InitPhaseState.OnInitHooksToBeRun */, null);
9744
9762
  }
9745
- incrementInitPhaseFlags(lView, 0 /* OnInitHooksToBeRun */);
9763
+ incrementInitPhaseFlags(lView, 0 /* InitPhaseState.OnInitHooksToBeRun */);
9746
9764
  }
9747
9765
  }
9748
9766
  // First mark transplanted views that are declared in this lView as needing a refresh at their
@@ -9766,9 +9784,9 @@ function refreshView(tView, lView, templateFn, context) {
9766
9784
  else {
9767
9785
  const contentHooks = tView.contentHooks;
9768
9786
  if (contentHooks !== null) {
9769
- executeInitAndCheckHooks(lView, contentHooks, 1 /* AfterContentInitHooksToBeRun */);
9787
+ executeInitAndCheckHooks(lView, contentHooks, 1 /* InitPhaseState.AfterContentInitHooksToBeRun */);
9770
9788
  }
9771
- incrementInitPhaseFlags(lView, 1 /* AfterContentInitHooksToBeRun */);
9789
+ incrementInitPhaseFlags(lView, 1 /* InitPhaseState.AfterContentInitHooksToBeRun */);
9772
9790
  }
9773
9791
  }
9774
9792
  processHostBindingOpCodes(tView, lView);
@@ -9782,7 +9800,7 @@ function refreshView(tView, lView, templateFn, context) {
9782
9800
  // refresh, the template might not yet be inserted.
9783
9801
  const viewQuery = tView.viewQuery;
9784
9802
  if (viewQuery !== null) {
9785
- executeViewQueryFn(2 /* Update */, viewQuery, context);
9803
+ executeViewQueryFn(2 /* RenderFlags.Update */, viewQuery, context);
9786
9804
  }
9787
9805
  // execute view hooks (AfterViewInit, AfterViewChecked)
9788
9806
  // PERF WARNING: do NOT extract this to a separate function without running benchmarks
@@ -9796,9 +9814,9 @@ function refreshView(tView, lView, templateFn, context) {
9796
9814
  else {
9797
9815
  const viewHooks = tView.viewHooks;
9798
9816
  if (viewHooks !== null) {
9799
- executeInitAndCheckHooks(lView, viewHooks, 2 /* AfterViewInitHooksToBeRun */);
9817
+ executeInitAndCheckHooks(lView, viewHooks, 2 /* InitPhaseState.AfterViewInitHooksToBeRun */);
9800
9818
  }
9801
- incrementInitPhaseFlags(lView, 2 /* AfterViewInitHooksToBeRun */);
9819
+ incrementInitPhaseFlags(lView, 2 /* InitPhaseState.AfterViewInitHooksToBeRun */);
9802
9820
  }
9803
9821
  }
9804
9822
  if (tView.firstUpdatePass === true) {
@@ -9817,10 +9835,10 @@ function refreshView(tView, lView, templateFn, context) {
9817
9835
  // no changes cycle, the component would be not be dirty for the next update pass. This would
9818
9836
  // be different in production mode where the component dirty state is not reset.
9819
9837
  if (!isInCheckNoChangesPass) {
9820
- lView[FLAGS] &= ~(64 /* Dirty */ | 8 /* FirstLViewPass */);
9838
+ lView[FLAGS] &= ~(64 /* LViewFlags.Dirty */ | 8 /* LViewFlags.FirstLViewPass */);
9821
9839
  }
9822
- if (lView[FLAGS] & 1024 /* RefreshTransplantedView */) {
9823
- lView[FLAGS] &= ~1024 /* RefreshTransplantedView */;
9840
+ if (lView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) {
9841
+ lView[FLAGS] &= ~1024 /* LViewFlags.RefreshTransplantedView */;
9824
9842
  updateTransplantedViewCount(lView[PARENT], -1);
9825
9843
  }
9826
9844
  }
@@ -9849,7 +9867,7 @@ function renderComponentOrTemplate(tView, lView, templateFn, context) {
9849
9867
  }
9850
9868
  function executeTemplate(tView, lView, templateFn, rf, context) {
9851
9869
  const prevSelectedIndex = getSelectedIndex();
9852
- const isUpdatePhase = rf & 2 /* Update */;
9870
+ const isUpdatePhase = rf & 2 /* RenderFlags.Update */;
9853
9871
  try {
9854
9872
  setSelectedIndex(-1);
9855
9873
  if (isUpdatePhase && lView.length > HEADER_OFFSET) {
@@ -9857,13 +9875,13 @@ function executeTemplate(tView, lView, templateFn, rf, context) {
9857
9875
  // have to generate that instruction for most update blocks.
9858
9876
  selectIndexInternal(tView, lView, HEADER_OFFSET, isInCheckNoChangesMode());
9859
9877
  }
9860
- const preHookType = isUpdatePhase ? 2 /* TemplateUpdateStart */ : 0 /* TemplateCreateStart */;
9878
+ const preHookType = isUpdatePhase ? 2 /* ProfilerEvent.TemplateUpdateStart */ : 0 /* ProfilerEvent.TemplateCreateStart */;
9861
9879
  profiler(preHookType, context);
9862
9880
  templateFn(rf, context);
9863
9881
  }
9864
9882
  finally {
9865
9883
  setSelectedIndex(prevSelectedIndex);
9866
- const postHookType = isUpdatePhase ? 3 /* TemplateUpdateEnd */ : 1 /* TemplateCreateEnd */;
9884
+ const postHookType = isUpdatePhase ? 3 /* ProfilerEvent.TemplateUpdateEnd */ : 1 /* ProfilerEvent.TemplateCreateEnd */;
9867
9885
  profiler(postHookType, context);
9868
9886
  }
9869
9887
  }
@@ -9877,7 +9895,7 @@ function executeContentQueries(tView, tNode, lView) {
9877
9895
  for (let directiveIndex = start; directiveIndex < end; directiveIndex++) {
9878
9896
  const def = tView.data[directiveIndex];
9879
9897
  if (def.contentQueries) {
9880
- def.contentQueries(1 /* Create */, lView[directiveIndex], directiveIndex);
9898
+ def.contentQueries(1 /* RenderFlags.Create */, lView[directiveIndex], directiveIndex);
9881
9899
  }
9882
9900
  }
9883
9901
  }
@@ -9889,7 +9907,7 @@ function createDirectivesInstances(tView, lView, tNode) {
9889
9907
  if (!getBindingsEnabled())
9890
9908
  return;
9891
9909
  instantiateAllDirectives(tView, lView, tNode, getNativeByTNode(tNode, lView));
9892
- if ((tNode.flags & 128 /* hasHostBindings */) === 128 /* hasHostBindings */) {
9910
+ if ((tNode.flags & 128 /* TNodeFlags.hasHostBindings */) === 128 /* TNodeFlags.hasHostBindings */) {
9893
9911
  invokeDirectivesHostBindings(tView, lView, tNode);
9894
9912
  }
9895
9913
  }
@@ -9925,7 +9943,7 @@ function getOrCreateTComponentView(def) {
9925
9943
  // Declaration node here is null since this function is called when we dynamically create a
9926
9944
  // component and hence there is no declaration.
9927
9945
  const declTNode = null;
9928
- return def.tView = createTView(1 /* Component */, declTNode, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts);
9946
+ return def.tView = createTView(1 /* TViewType.Component */, declTNode, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts);
9929
9947
  }
9930
9948
  return tView;
9931
9949
  }
@@ -10223,10 +10241,10 @@ function initializeInputAndOutputAliases(tView, tNode) {
10223
10241
  }
10224
10242
  if (inputsStore !== null) {
10225
10243
  if (inputsStore.hasOwnProperty('class')) {
10226
- tNode.flags |= 16 /* hasClassInput */;
10244
+ tNode.flags |= 16 /* TNodeFlags.hasClassInput */;
10227
10245
  }
10228
10246
  if (inputsStore.hasOwnProperty('style')) {
10229
- tNode.flags |= 32 /* hasStyleInput */;
10247
+ tNode.flags |= 32 /* TNodeFlags.hasStyleInput */;
10230
10248
  }
10231
10249
  }
10232
10250
  tNode.initialInputs = inputsFromAttrs;
@@ -10271,13 +10289,13 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
10271
10289
  setNgReflectProperties(lView, element, tNode.type, dataValue, value);
10272
10290
  }
10273
10291
  }
10274
- else if (tNode.type & 3 /* AnyRNode */) {
10292
+ else if (tNode.type & 3 /* TNodeType.AnyRNode */) {
10275
10293
  propName = mapPropName(propName);
10276
10294
  if (ngDevMode) {
10277
10295
  validateAgainstEventProperties(propName);
10278
10296
  if (!validateProperty(element, tNode.value, propName, tView.schemas)) {
10279
10297
  // Return here since we only log warnings for unknown properties.
10280
- logUnknownPropertyError(propName, tNode.value);
10298
+ handleUnknownPropertyError(propName, tNode.value);
10281
10299
  return;
10282
10300
  }
10283
10301
  ngDevMode.rendererSetProperty++;
@@ -10293,11 +10311,11 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
10293
10311
  element[propName] = value;
10294
10312
  }
10295
10313
  }
10296
- else if (tNode.type & 12 /* AnyContainer */) {
10314
+ else if (tNode.type & 12 /* TNodeType.AnyContainer */) {
10297
10315
  // If the node is a container and the property didn't
10298
10316
  // match any of the inputs or schemas we should throw.
10299
10317
  if (ngDevMode && !matchingSchemas(tView.schemas, tNode.value)) {
10300
- logUnknownPropertyError(propName, tNode.value);
10318
+ handleUnknownPropertyError(propName, tNode.value);
10301
10319
  }
10302
10320
  }
10303
10321
  }
@@ -10305,15 +10323,15 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
10305
10323
  function markDirtyIfOnPush(lView, viewIndex) {
10306
10324
  ngDevMode && assertLView(lView);
10307
10325
  const childComponentLView = getComponentLViewByIndex(viewIndex, lView);
10308
- if (!(childComponentLView[FLAGS] & 16 /* CheckAlways */)) {
10309
- childComponentLView[FLAGS] |= 64 /* Dirty */;
10326
+ if (!(childComponentLView[FLAGS] & 16 /* LViewFlags.CheckAlways */)) {
10327
+ childComponentLView[FLAGS] |= 64 /* LViewFlags.Dirty */;
10310
10328
  }
10311
10329
  }
10312
10330
  function setNgReflectProperty(lView, element, type, attrName, value) {
10313
10331
  const renderer = lView[RENDERER];
10314
10332
  attrName = normalizeDebugBindingName(attrName);
10315
10333
  const debugValue = normalizeDebugBindingValue(value);
10316
- if (type & 3 /* AnyRNode */) {
10334
+ if (type & 3 /* TNodeType.AnyRNode */) {
10317
10335
  if (value == null) {
10318
10336
  isProceduralRenderer(renderer) ? renderer.removeAttribute(element, attrName) :
10319
10337
  element.removeAttribute(attrName);
@@ -10335,7 +10353,7 @@ function setNgReflectProperty(lView, element, type, attrName, value) {
10335
10353
  }
10336
10354
  }
10337
10355
  function setNgReflectProperties(lView, element, type, dataValue, value) {
10338
- if (type & (3 /* AnyRNode */ | 4 /* Container */)) {
10356
+ if (type & (3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */)) {
10339
10357
  /**
10340
10358
  * dataValue is an array containing runtime input or output names for the directives:
10341
10359
  * i+0: directive instance index
@@ -10399,13 +10417,18 @@ function matchingSchemas(schemas, tagName) {
10399
10417
  return false;
10400
10418
  }
10401
10419
  /**
10402
- * Logs an error that a property is not supported on an element.
10420
+ * Logs or throws an error that a property is not supported on an element.
10403
10421
  * @param propName Name of the invalid property.
10404
10422
  * @param tagName Name of the node on which we encountered the property.
10405
10423
  */
10406
- function logUnknownPropertyError(propName, tagName) {
10424
+ function handleUnknownPropertyError(propName, tagName) {
10407
10425
  const message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'.`;
10408
- console.error(formatRuntimeError(303 /* UNKNOWN_BINDING */, message));
10426
+ if (shouldThrowErrorOnUnknownProperty) {
10427
+ throw new RuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message);
10428
+ }
10429
+ else {
10430
+ console.error(formatRuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message));
10431
+ }
10409
10432
  }
10410
10433
  /**
10411
10434
  * Instantiate a root component.
@@ -10466,9 +10489,9 @@ function resolveDirectives(tView, lView, tNode, localRefs) {
10466
10489
  configureViewWithDirective(tView, tNode, lView, directiveIdx, def);
10467
10490
  saveNameToExportMap(directiveIdx, def, exportsMap);
10468
10491
  if (def.contentQueries !== null)
10469
- tNode.flags |= 8 /* hasContentQuery */;
10492
+ tNode.flags |= 8 /* TNodeFlags.hasContentQuery */;
10470
10493
  if (def.hostBindings !== null || def.hostAttrs !== null || def.hostVars !== 0)
10471
- tNode.flags |= 128 /* hasHostBindings */;
10494
+ tNode.flags |= 128 /* TNodeFlags.hasHostBindings */;
10472
10495
  const lifeCycleHooks = def.type.prototype;
10473
10496
  // Only push a node index into the preOrderHooks array if this is the first
10474
10497
  // pre-order hook found on this node.
@@ -10556,7 +10579,7 @@ function instantiateAllDirectives(tView, lView, tNode, native) {
10556
10579
  const def = tView.data[i];
10557
10580
  const isComponent = isComponentDef(def);
10558
10581
  if (isComponent) {
10559
- ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */);
10582
+ ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */);
10560
10583
  addComponentLogic(lView, tNode, def);
10561
10584
  }
10562
10585
  const directive = getNodeInjectable(lView, tView, i, tNode);
@@ -10599,7 +10622,7 @@ function invokeDirectivesHostBindings(tView, lView, tNode) {
10599
10622
  */
10600
10623
  function invokeHostBindingsInCreationMode(def, directive) {
10601
10624
  if (def.hostBindings !== null) {
10602
- def.hostBindings(1 /* Create */, directive);
10625
+ def.hostBindings(1 /* RenderFlags.Create */, directive);
10603
10626
  }
10604
10627
  }
10605
10628
  /**
@@ -10608,7 +10631,7 @@ function invokeHostBindingsInCreationMode(def, directive) {
10608
10631
  */
10609
10632
  function findDirectiveDefMatches(tView, viewData, tNode) {
10610
10633
  ngDevMode && assertFirstCreatePass(tView);
10611
- ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */);
10634
+ ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);
10612
10635
  const registry = tView.directiveRegistry;
10613
10636
  let matches = null;
10614
10637
  if (registry) {
@@ -10619,9 +10642,9 @@ function findDirectiveDefMatches(tView, viewData, tNode) {
10619
10642
  diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, viewData), tView, def.type);
10620
10643
  if (isComponentDef(def)) {
10621
10644
  if (ngDevMode) {
10622
- assertTNodeType(tNode, 2 /* Element */, `"${tNode.value}" tags cannot be used as component hosts. ` +
10645
+ assertTNodeType(tNode, 2 /* TNodeType.Element */, `"${tNode.value}" tags cannot be used as component hosts. ` +
10623
10646
  `Please use a different tag to activate the ${stringify(def.type)} component.`);
10624
- if (tNode.flags & 2 /* isComponentHost */) {
10647
+ if (tNode.flags & 2 /* TNodeFlags.isComponentHost */) {
10625
10648
  // If another component has been matched previously, it's the first element in the
10626
10649
  // `matches` array, see how we store components/directives in `matches` below.
10627
10650
  throwMultipleComponentError(tNode, matches[0].type, def.type);
@@ -10646,7 +10669,7 @@ function findDirectiveDefMatches(tView, viewData, tNode) {
10646
10669
  */
10647
10670
  function markAsComponentHost(tView, hostTNode) {
10648
10671
  ngDevMode && assertFirstCreatePass(tView);
10649
- hostTNode.flags |= 2 /* isComponentHost */;
10672
+ hostTNode.flags |= 2 /* TNodeFlags.isComponentHost */;
10650
10673
  (tView.components || (tView.components = ngDevMode ? new TViewComponents() : []))
10651
10674
  .push(hostTNode.index);
10652
10675
  }
@@ -10660,7 +10683,7 @@ function cacheMatchingLocalNames(tNode, localRefs, exportsMap) {
10660
10683
  for (let i = 0; i < localRefs.length; i += 2) {
10661
10684
  const index = exportsMap[localRefs[i + 1]];
10662
10685
  if (index == null)
10663
- throw new RuntimeError(-301 /* EXPORT_NOT_FOUND */, ngDevMode && `Export of name '${localRefs[i + 1]}' not found!`);
10686
+ throw new RuntimeError(-301 /* RuntimeErrorCode.EXPORT_NOT_FOUND */, ngDevMode && `Export of name '${localRefs[i + 1]}' not found!`);
10664
10687
  localNames.push(localRefs[i], index);
10665
10688
  }
10666
10689
  }
@@ -10688,7 +10711,7 @@ function saveNameToExportMap(directiveIdx, def, exportsMap) {
10688
10711
  function initTNodeFlags(tNode, index, numberOfDirectives) {
10689
10712
  ngDevMode &&
10690
10713
  assertNotEqual(numberOfDirectives, tNode.directiveEnd - tNode.directiveStart, 'Reached the max number of directives');
10691
- tNode.flags |= 1 /* isDirectiveHost */;
10714
+ tNode.flags |= 1 /* TNodeFlags.isDirectiveHost */;
10692
10715
  // When the first directive is created on a node, save the index
10693
10716
  tNode.directiveStart = index;
10694
10717
  tNode.directiveEnd = index + numberOfDirectives;
@@ -10722,7 +10745,7 @@ function addComponentLogic(lView, hostTNode, def) {
10722
10745
  // Only component views should be added to the view tree directly. Embedded views are
10723
10746
  // accessed through their containers because they may be removed / re-added later.
10724
10747
  const rendererFactory = lView[RENDERER_FACTORY];
10725
- const componentView = addToViewTree(lView, createLView(lView, tView, null, def.onPush ? 64 /* Dirty */ : 16 /* CheckAlways */, native, hostTNode, rendererFactory, rendererFactory.createRenderer(native, def), null, null, null));
10748
+ const componentView = addToViewTree(lView, createLView(lView, tView, null, def.onPush ? 64 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, native, hostTNode, rendererFactory, rendererFactory.createRenderer(native, def), null, null, null));
10726
10749
  // Component view will always be created before any injected LContainers,
10727
10750
  // so this is a regular element, wrap it with the component view
10728
10751
  lView[hostTNode.index] = componentView;
@@ -10731,7 +10754,7 @@ function elementAttributeInternal(tNode, lView, name, value, sanitizer, namespac
10731
10754
  if (ngDevMode) {
10732
10755
  assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
10733
10756
  validateAgainstEventAttributes(name);
10734
- assertTNodeType(tNode, 2 /* Element */, `Attempted to set attribute \`${name}\` on a container node. ` +
10757
+ assertTNodeType(tNode, 2 /* TNodeType.Element */, `Attempted to set attribute \`${name}\` on a container node. ` +
10735
10758
  `Host bindings are not valid on ng-container or ng-template.`);
10736
10759
  }
10737
10760
  const element = getNativeByTNode(tNode, lView);
@@ -10804,12 +10827,12 @@ function generateInitialInputs(inputs, attrs) {
10804
10827
  let i = 0;
10805
10828
  while (i < attrs.length) {
10806
10829
  const attrName = attrs[i];
10807
- if (attrName === 0 /* NamespaceURI */) {
10830
+ if (attrName === 0 /* AttributeMarker.NamespaceURI */) {
10808
10831
  // We do not allow inputs on namespaced attributes.
10809
10832
  i += 4;
10810
10833
  continue;
10811
10834
  }
10812
- else if (attrName === 5 /* ProjectAs */) {
10835
+ else if (attrName === 5 /* AttributeMarker.ProjectAs */) {
10813
10836
  // Skip over the `ngProjectAs` value.
10814
10837
  i += 2;
10815
10838
  continue;
@@ -10894,14 +10917,14 @@ function markTransplantedViewsForRefresh(lView) {
10894
10917
  ngDevMode && assertLContainer(insertionLContainer);
10895
10918
  // We don't want to increment the counter if the moved LView was already marked for
10896
10919
  // refresh.
10897
- if ((movedLView[FLAGS] & 1024 /* RefreshTransplantedView */) === 0) {
10920
+ if ((movedLView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) === 0) {
10898
10921
  updateTransplantedViewCount(insertionLContainer, 1);
10899
10922
  }
10900
10923
  // Note, it is possible that the `movedViews` is tracking views that are transplanted *and*
10901
10924
  // those that aren't (declaration component === insertion component). In the latter case,
10902
10925
  // it's fine to add the flag, as we will clear it immediately in
10903
10926
  // `refreshEmbeddedViews` for the view currently being refreshed.
10904
- movedLView[FLAGS] |= 1024 /* RefreshTransplantedView */;
10927
+ movedLView[FLAGS] |= 1024 /* LViewFlags.RefreshTransplantedView */;
10905
10928
  }
10906
10929
  }
10907
10930
  }
@@ -10917,7 +10940,7 @@ function refreshComponent(hostLView, componentHostIdx) {
10917
10940
  // Only attached components that are CheckAlways or OnPush and dirty should be refreshed
10918
10941
  if (viewAttachedToChangeDetector(componentView)) {
10919
10942
  const tView = componentView[TVIEW];
10920
- if (componentView[FLAGS] & (16 /* CheckAlways */ | 64 /* Dirty */)) {
10943
+ if (componentView[FLAGS] & (16 /* LViewFlags.CheckAlways */ | 64 /* LViewFlags.Dirty */)) {
10921
10944
  refreshView(tView, componentView, tView.template, componentView[CONTEXT]);
10922
10945
  }
10923
10946
  else if (componentView[TRANSPLANTED_VIEWS_TO_REFRESH] > 0) {
@@ -10936,7 +10959,7 @@ function refreshContainsDirtyView(lView) {
10936
10959
  for (let lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {
10937
10960
  for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
10938
10961
  const embeddedLView = lContainer[i];
10939
- if (embeddedLView[FLAGS] & 1024 /* RefreshTransplantedView */) {
10962
+ if (embeddedLView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) {
10940
10963
  const embeddedTView = embeddedLView[TVIEW];
10941
10964
  ngDevMode && assertDefined(embeddedTView, 'TView must be allocated');
10942
10965
  refreshView(embeddedTView, embeddedLView, embeddedTView.template, embeddedLView[CONTEXT]);
@@ -11040,7 +11063,7 @@ function addToViewTree(lView, lViewOrLContainer) {
11040
11063
  */
11041
11064
  function markViewDirty(lView) {
11042
11065
  while (lView) {
11043
- lView[FLAGS] |= 64 /* Dirty */;
11066
+ lView[FLAGS] |= 64 /* LViewFlags.Dirty */;
11044
11067
  const parent = getLViewParent(lView);
11045
11068
  // Stop traversing up as soon as you find a root view that wasn't attached to any container
11046
11069
  if (isRootView(lView) && !parent) {
@@ -11063,7 +11086,7 @@ function markViewDirty(lView) {
11063
11086
  * `renderComponent`'s `scheduler` option.
11064
11087
  */
11065
11088
  function scheduleTick(rootContext, flags) {
11066
- const nothingScheduled = rootContext.flags === 0 /* Empty */;
11089
+ const nothingScheduled = rootContext.flags === 0 /* RootContextFlags.Empty */;
11067
11090
  if (nothingScheduled && rootContext.clean == _CLEAN_PROMISE) {
11068
11091
  // https://github.com/angular/angular/issues/39296
11069
11092
  // should only attach the flags when really scheduling a tick
@@ -11071,12 +11094,12 @@ function scheduleTick(rootContext, flags) {
11071
11094
  let res;
11072
11095
  rootContext.clean = new Promise((r) => res = r);
11073
11096
  rootContext.scheduler(() => {
11074
- if (rootContext.flags & 1 /* DetectChanges */) {
11075
- rootContext.flags &= ~1 /* DetectChanges */;
11097
+ if (rootContext.flags & 1 /* RootContextFlags.DetectChanges */) {
11098
+ rootContext.flags &= ~1 /* RootContextFlags.DetectChanges */;
11076
11099
  tickRootContext(rootContext);
11077
11100
  }
11078
- if (rootContext.flags & 2 /* FlushPlayers */) {
11079
- rootContext.flags &= ~2 /* FlushPlayers */;
11101
+ if (rootContext.flags & 2 /* RootContextFlags.FlushPlayers */) {
11102
+ rootContext.flags &= ~2 /* RootContextFlags.FlushPlayers */;
11080
11103
  const playerHandler = rootContext.playerHandler;
11081
11104
  if (playerHandler) {
11082
11105
  playerHandler.flushPlayers();
@@ -11291,10 +11314,10 @@ function computeStaticStyling(tNode, attrs, writeToHost) {
11291
11314
  if (typeof value === 'number') {
11292
11315
  mode = value;
11293
11316
  }
11294
- else if (mode == 1 /* Classes */) {
11317
+ else if (mode == 1 /* AttributeMarker.Classes */) {
11295
11318
  classes = concatStringsWithSpace(classes, value);
11296
11319
  }
11297
- else if (mode == 2 /* Styles */) {
11320
+ else if (mode == 2 /* AttributeMarker.Styles */) {
11298
11321
  const style = value;
11299
11322
  const styleValue = attrs[++i];
11300
11323
  styles = concatStringsWithSpace(styles, style + ': ' + styleValue + ';');
@@ -11336,7 +11359,7 @@ function markDirty(component) {
11336
11359
  ngDevMode && assertDefined(component, 'component');
11337
11360
  const rootView = markViewDirty(getComponentViewByInstance(component));
11338
11361
  ngDevMode && assertDefined(rootView[CONTEXT], 'rootContext should be defined');
11339
- scheduleTick(rootView[CONTEXT], 1 /* DetectChanges */);
11362
+ scheduleTick(rootView[CONTEXT], 1 /* RootContextFlags.DetectChanges */);
11340
11363
  }
11341
11364
  /**
11342
11365
  * Used to perform change detection on the whole application.
@@ -11372,12 +11395,12 @@ function tick(component) {
11372
11395
  * found in the LICENSE file at https://angular.io/license
11373
11396
  */
11374
11397
  /**
11375
- * A multi-provider token for initialization functions that will run upon construction of a
11376
- * non-view injector.
11398
+ * A multi-provider token for initialization functions that will run upon construction of an
11399
+ * environment injector.
11377
11400
  *
11378
11401
  * @publicApi
11379
11402
  */
11380
- const INJECTOR_INITIALIZER = new InjectionToken('INJECTOR_INITIALIZER');
11403
+ const ENVIRONMENT_INITIALIZER = new InjectionToken('ENVIRONMENT_INITIALIZER');
11381
11404
 
11382
11405
  /**
11383
11406
  * @license
@@ -11399,14 +11422,27 @@ const INJECTOR_DEF_TYPES = new InjectionToken('INJECTOR_DEF_TYPES');
11399
11422
  * Collects providers from all NgModules and standalone components, including transitively imported
11400
11423
  * ones.
11401
11424
  *
11402
- * @returns The list of collected providers from the specified list of types.
11425
+ * Providers extracted via `importProvidersFrom` are only usable in an application injector or
11426
+ * another environment injector (such as a route injector). They should not be used in component
11427
+ * providers.
11428
+ *
11429
+ * @returns The collected providers from the specified list of types.
11403
11430
  * @publicApi
11404
11431
  */
11405
11432
  function importProvidersFrom(...sources) {
11433
+ return { ɵproviders: internalImportProvidersFrom(true, sources) };
11434
+ }
11435
+ function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) {
11406
11436
  const providersOut = [];
11407
11437
  const dedup = new Set(); // already seen types
11408
11438
  let injectorTypesWithProviders;
11409
11439
  deepForEach(sources, source => {
11440
+ if ((typeof ngDevMode === 'undefined' || ngDevMode) && checkForStandaloneCmp) {
11441
+ const cmpDef = getComponentDef(source);
11442
+ if (cmpDef?.standalone) {
11443
+ throw new RuntimeError(800 /* RuntimeErrorCode.IMPORT_PROVIDERS_FROM_STANDALONE */, `Importing providers supports NgModule or ModuleWithProviders but got a standalone component "${stringifyForError(source)}"`);
11444
+ }
11445
+ }
11410
11446
  // Narrow `source` to access the internal type analogue for `ModuleWithProviders`.
11411
11447
  const internalSource = source;
11412
11448
  if (walkProviderTree(internalSource, providersOut, [], dedup)) {
@@ -11536,8 +11572,8 @@ function walkProviderTree(container, providersOut, parents, dedup) {
11536
11572
  { provide: defType, useFactory: factory, deps: EMPTY_ARRAY },
11537
11573
  // Make this `defType` available to an internal logic that calculates injector scope.
11538
11574
  { provide: INJECTOR_DEF_TYPES, useValue: defType, multi: true },
11539
- // Provider to eagerly instantiate `defType` via `INJECTOR_INITIALIZER`.
11540
- { provide: INJECTOR_INITIALIZER, useValue: () => ɵɵinject(defType), multi: true } //
11575
+ // Provider to eagerly instantiate `defType` via `ENVIRONMENT_INITIALIZER`.
11576
+ { provide: ENVIRONMENT_INITIALIZER, useValue: () => ɵɵinject(defType), multi: true } //
11541
11577
  );
11542
11578
  }
11543
11579
  // Next, include providers listed on the definition itself.
@@ -11603,7 +11639,7 @@ function isClassProvider(value) {
11603
11639
  const INJECTOR = new InjectionToken('INJECTOR',
11604
11640
  // Dissable tslint because this is const enum which gets inlined not top level prop access.
11605
11641
  // tslint:disable-next-line: no-toplevel-property-access
11606
- -1 /* Injector */);
11642
+ -1 /* InjectorMarkers.Injector */);
11607
11643
 
11608
11644
  /**
11609
11645
  * @license
@@ -11691,9 +11727,7 @@ class R3Injector extends EnvironmentInjector {
11691
11727
  this._onDestroyHooks = [];
11692
11728
  this._destroyed = false;
11693
11729
  // Start off by creating Records for every provider.
11694
- for (const provider of providers) {
11695
- this.processProvider(provider);
11696
- }
11730
+ forEachSingleProvider(providers, provider => this.processProvider(provider));
11697
11731
  // Make sure the INJECTOR token provides this injector.
11698
11732
  this.records.set(INJECTOR, makeRecord(undefined, this));
11699
11733
  // And `EnvironmentInjector` if the current injector is supposed to be env-scoped.
@@ -11812,7 +11846,7 @@ class R3Injector extends EnvironmentInjector {
11812
11846
  const previousInjector = setCurrentInjector(this);
11813
11847
  const previousInjectImplementation = setInjectImplementation(undefined);
11814
11848
  try {
11815
- const initializers = this.get(INJECTOR_INITIALIZER.multi, EMPTY_ARRAY, InjectFlags.Self);
11849
+ const initializers = this.get(ENVIRONMENT_INITIALIZER.multi, EMPTY_ARRAY, InjectFlags.Self);
11816
11850
  for (const initializer of initializers) {
11817
11851
  initializer();
11818
11852
  }
@@ -11832,7 +11866,7 @@ class R3Injector extends EnvironmentInjector {
11832
11866
  }
11833
11867
  assertNotDestroyed() {
11834
11868
  if (this._destroyed) {
11835
- throw new RuntimeError(205 /* INJECTOR_ALREADY_DESTROYED */, ngDevMode && 'Injector has already been destroyed.');
11869
+ throw new RuntimeError(205 /* RuntimeErrorCode.INJECTOR_ALREADY_DESTROYED */, ngDevMode && 'Injector has already been destroyed.');
11836
11870
  }
11837
11871
  }
11838
11872
  /**
@@ -11907,21 +11941,21 @@ function injectableDefOrInjectorDefFactory(token) {
11907
11941
  // InjectionTokens should have an injectable def (ɵprov) and thus should be handled above.
11908
11942
  // If it's missing that, it's an error.
11909
11943
  if (token instanceof InjectionToken) {
11910
- throw new RuntimeError(204 /* INVALID_INJECTION_TOKEN */, ngDevMode && `Token ${stringify(token)} is missing a ɵprov definition.`);
11944
+ throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && `Token ${stringify(token)} is missing a ɵprov definition.`);
11911
11945
  }
11912
11946
  // Undecorated types can sometimes be created if they have no constructor arguments.
11913
11947
  if (token instanceof Function) {
11914
11948
  return getUndecoratedInjectableFactory(token);
11915
11949
  }
11916
11950
  // There was no way to resolve a factory for this token.
11917
- throw new RuntimeError(204 /* INVALID_INJECTION_TOKEN */, ngDevMode && 'unreachable');
11951
+ throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && 'unreachable');
11918
11952
  }
11919
11953
  function getUndecoratedInjectableFactory(token) {
11920
11954
  // If the token has parameters then it has dependencies that we cannot resolve implicitly.
11921
11955
  const paramLength = token.length;
11922
11956
  if (paramLength > 0) {
11923
11957
  const args = newArray(paramLength, '?');
11924
- throw new RuntimeError(204 /* INVALID_INJECTION_TOKEN */, ngDevMode && `Can't resolve all parameters for ${stringify(token)}: (${args.join(', ')}).`);
11958
+ throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && `Can't resolve all parameters for ${stringify(token)}: (${args.join(', ')}).`);
11925
11959
  }
11926
11960
  // The constructor function appears to have no parameters.
11927
11961
  // This might be because it inherits from a super-class. In which case, use an injectable
@@ -11952,6 +11986,9 @@ function providerToRecord(provider) {
11952
11986
  */
11953
11987
  function providerToFactory(provider, ngModuleType, providers) {
11954
11988
  let factory = undefined;
11989
+ if (ngDevMode && isImportedNgModuleProviders(provider)) {
11990
+ throwInvalidProviderError(undefined, providers, provider);
11991
+ }
11955
11992
  if (isTypeProvider(provider)) {
11956
11993
  const unwrappedProvider = resolveForwardRef(provider);
11957
11994
  return getFactoryDef(unwrappedProvider) || injectableDefOrInjectorDefFactory(unwrappedProvider);
@@ -12000,6 +12037,22 @@ function couldBeInjectableType(value) {
12000
12037
  return (typeof value === 'function') ||
12001
12038
  (typeof value === 'object' && value instanceof InjectionToken);
12002
12039
  }
12040
+ function isImportedNgModuleProviders(provider) {
12041
+ return !!provider.ɵproviders;
12042
+ }
12043
+ function forEachSingleProvider(providers, fn) {
12044
+ for (const provider of providers) {
12045
+ if (Array.isArray(provider)) {
12046
+ forEachSingleProvider(provider, fn);
12047
+ }
12048
+ else if (isImportedNgModuleProviders(provider)) {
12049
+ forEachSingleProvider(provider.ɵproviders, fn);
12050
+ }
12051
+ else {
12052
+ fn(provider);
12053
+ }
12054
+ }
12055
+ }
12003
12056
 
12004
12057
  /**
12005
12058
  * @license
@@ -12025,8 +12078,8 @@ function createInjector(defType, parent = null, additionalProviders = null, name
12025
12078
  */
12026
12079
  function createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name, scopes = new Set()) {
12027
12080
  const providers = [
12028
- ...flatten(additionalProviders || EMPTY_ARRAY),
12029
- ...importProvidersFrom(defType),
12081
+ additionalProviders || EMPTY_ARRAY,
12082
+ importProvidersFrom(defType),
12030
12083
  ];
12031
12084
  name = name || (typeof defType === 'object' ? undefined : stringify(defType));
12032
12085
  return new R3Injector(providers, parent || getNullInjector(), name || null, scopes);
@@ -12086,7 +12139,7 @@ Injector.ɵprov = ɵɵdefineInjectable({
12086
12139
  * @internal
12087
12140
  * @nocollapse
12088
12141
  */
12089
- Injector.__NG_ELEMENT_ID__ = -1 /* Injector */;
12142
+ Injector.__NG_ELEMENT_ID__ = -1 /* InjectorMarkers.Injector */;
12090
12143
 
12091
12144
  /**
12092
12145
  * @license
@@ -12175,10 +12228,10 @@ function getOwningComponent(elementOrDir) {
12175
12228
  if (lView === null)
12176
12229
  return null;
12177
12230
  let parent;
12178
- while (lView[TVIEW].type === 2 /* Embedded */ && (parent = getLViewParent(lView))) {
12231
+ while (lView[TVIEW].type === 2 /* TViewType.Embedded */ && (parent = getLViewParent(lView))) {
12179
12232
  lView = parent;
12180
12233
  }
12181
- return lView[FLAGS] & 512 /* IsRoot */ ? null : lView[CONTEXT];
12234
+ return lView[FLAGS] & 512 /* LViewFlags.IsRoot */ ? null : lView[CONTEXT];
12182
12235
  }
12183
12236
  /**
12184
12237
  * Retrieves all root components associated with a DOM element, directive or component instance.
@@ -12226,7 +12279,7 @@ function getInjectionTokens(element) {
12226
12279
  const tView = lView[TVIEW];
12227
12280
  const tNode = tView.data[context.nodeIndex];
12228
12281
  const providerTokens = [];
12229
- const startIndex = tNode.providerIndexes & 1048575 /* ProvidersStartIndexMask */;
12282
+ const startIndex = tNode.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
12230
12283
  const endIndex = tNode.directiveEnd;
12231
12284
  for (let i = startIndex; i < endIndex; i++) {
12232
12285
  let value = tView.data[i];
@@ -12629,11 +12682,11 @@ function renderComponent(componentType /* Type as workaround for: Microsoft/Type
12629
12682
  const componentTag = componentDef.selectors[0][0];
12630
12683
  const hostRenderer = rendererFactory.createRenderer(null, null);
12631
12684
  const hostRNode = locateHostElement(hostRenderer, opts.host || componentTag, componentDef.encapsulation);
12632
- const rootFlags = componentDef.onPush ? 64 /* Dirty */ | 512 /* IsRoot */ :
12633
- 16 /* CheckAlways */ | 512 /* IsRoot */;
12685
+ const rootFlags = componentDef.onPush ? 64 /* LViewFlags.Dirty */ | 512 /* LViewFlags.IsRoot */ :
12686
+ 16 /* LViewFlags.CheckAlways */ | 512 /* LViewFlags.IsRoot */;
12634
12687
  const rootContext = createRootContext(opts.scheduler, opts.playerHandler);
12635
12688
  const renderer = rendererFactory.createRenderer(hostRNode, componentDef);
12636
- const rootTView = createTView(0 /* Root */, null, null, 1, 0, null, null, null, null, null);
12689
+ const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null);
12637
12690
  const rootView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, renderer, null, opts.injector || null, null);
12638
12691
  enterView(rootView);
12639
12692
  let component;
@@ -12674,7 +12727,7 @@ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRend
12674
12727
  // '#host' is added here as we don't know the real host DOM name (we don't want to read it) and at
12675
12728
  // the same time we want to communicate the debug `TNode` that this is a special `TNode`
12676
12729
  // representing a host element.
12677
- const tNode = getOrCreateTNode(tView, index, 2 /* Element */, '#host', null);
12730
+ const tNode = getOrCreateTNode(tView, index, 2 /* TNodeType.Element */, '#host', null);
12678
12731
  const mergedAttrs = tNode.mergedAttrs = def.hostAttrs;
12679
12732
  if (mergedAttrs !== null) {
12680
12733
  computeStaticStyling(tNode, mergedAttrs, true);
@@ -12689,7 +12742,7 @@ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRend
12689
12742
  }
12690
12743
  }
12691
12744
  const viewRenderer = rendererFactory.createRenderer(rNode, def);
12692
- const componentView = createLView(rootView, getOrCreateTComponentView(def), null, def.onPush ? 64 /* Dirty */ : 16 /* CheckAlways */, rootView[index], tNode, rendererFactory, viewRenderer, sanitizer || null, null, null);
12745
+ const componentView = createLView(rootView, getOrCreateTComponentView(def), null, def.onPush ? 64 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, rootView[index], tNode, rendererFactory, viewRenderer, sanitizer || null, null, null);
12693
12746
  if (tView.firstCreatePass) {
12694
12747
  diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, rootView), tView, def.type);
12695
12748
  markAsComponentHost(tView, tNode);
@@ -12715,7 +12768,7 @@ function createRootComponent(componentView, componentDef, rootLView, rootContext
12715
12768
  if (componentDef.contentQueries) {
12716
12769
  const tNode = getCurrentTNode();
12717
12770
  ngDevMode && assertDefined(tNode, 'TNode expected');
12718
- componentDef.contentQueries(1 /* Create */, component, tNode.directiveStart);
12771
+ componentDef.contentQueries(1 /* RenderFlags.Create */, component, tNode.directiveStart);
12719
12772
  }
12720
12773
  const rootTNode = getCurrentTNode();
12721
12774
  ngDevMode && assertDefined(rootTNode, 'tNode should have been already created');
@@ -12734,7 +12787,7 @@ function createRootContext(scheduler, playerHandler) {
12734
12787
  scheduler: scheduler || defaultScheduler,
12735
12788
  clean: CLEAN_PROMISE,
12736
12789
  playerHandler: playerHandler || null,
12737
- flags: 0 /* Empty */
12790
+ flags: 0 /* RootContextFlags.Empty */
12738
12791
  };
12739
12792
  }
12740
12793
  /**
@@ -12809,7 +12862,7 @@ function ɵɵInheritDefinitionFeature(definition) {
12809
12862
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
12810
12863
  `Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}` :
12811
12864
  '';
12812
- throw new RuntimeError(903 /* INVALID_INHERITANCE */, errorMessage);
12865
+ throw new RuntimeError(903 /* RuntimeErrorCode.INVALID_INHERITANCE */, errorMessage);
12813
12866
  }
12814
12867
  // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
12815
12868
  superDef = superType.ɵdir;
@@ -13757,10 +13810,10 @@ function templateFirstCreatePass(index, tView, lView, templateFn, decls, vars, t
13757
13810
  ngDevMode && ngDevMode.firstCreatePass++;
13758
13811
  const tViewConsts = tView.consts;
13759
13812
  // TODO(pk): refactor getOrCreateTNode to have the "create" only version
13760
- const tNode = getOrCreateTNode(tView, index, 4 /* Container */, tagName || null, getConstant(tViewConsts, attrsIndex));
13813
+ const tNode = getOrCreateTNode(tView, index, 4 /* TNodeType.Container */, tagName || null, getConstant(tViewConsts, attrsIndex));
13761
13814
  resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
13762
13815
  registerPostOrderHooks(tView, tNode);
13763
- const embeddedTView = tNode.tViews = createTView(2 /* Embedded */, tNode, templateFn, decls, vars, tView.directiveRegistry, tView.pipeRegistry, null, tView.schemas, tViewConsts);
13816
+ const embeddedTView = tNode.tViews = createTView(2 /* TViewType.Embedded */, tNode, templateFn, decls, vars, tView.directiveRegistry, tView.pipeRegistry, null, tView.schemas, tViewConsts);
13764
13817
  if (tView.queries !== null) {
13765
13818
  tView.queries.template(tView, tNode);
13766
13819
  embeddedTView.queries = tView.queries.embeddedTView(tNode);
@@ -13876,7 +13929,7 @@ function compileInjectable(type, meta) {
13876
13929
  Object.defineProperty(type, NG_PROV_DEF, {
13877
13930
  get: () => {
13878
13931
  if (ngInjectableDef === null) {
13879
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'injectable', type });
13932
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'injectable', type });
13880
13933
  ngInjectableDef = compiler.compileInjectable(angularCoreDiEnv, `ng:///${type.name}/ɵprov.js`, getInjectableMetadata(type, meta));
13881
13934
  }
13882
13935
  return ngInjectableDef;
@@ -13888,7 +13941,7 @@ function compileInjectable(type, meta) {
13888
13941
  Object.defineProperty(type, NG_FACTORY_DEF, {
13889
13942
  get: () => {
13890
13943
  if (ngFactoryDef === null) {
13891
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'injectable', type });
13944
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'injectable', type });
13892
13945
  ngFactoryDef = compiler.compileFactory(angularCoreDiEnv, `ng:///${type.name}/ɵfac.js`, {
13893
13946
  name: type.name,
13894
13947
  type,
@@ -14857,12 +14910,27 @@ function setDirectiveInputsWhichShadowsStyling(tView, tNode, lView, value, isCla
14857
14910
  * Use of this source code is governed by an MIT-style license that can be
14858
14911
  * found in the LICENSE file at https://angular.io/license
14859
14912
  */
14913
+ let shouldThrowErrorOnUnknownElement = false;
14914
+ /**
14915
+ * Sets a strict mode for JIT-compiled components to throw an error on unknown elements,
14916
+ * instead of just logging the error.
14917
+ * (for AOT-compiled ones this check happens at build time).
14918
+ */
14919
+ function ɵsetUnknownElementStrictMode(shouldThrow) {
14920
+ shouldThrowErrorOnUnknownElement = shouldThrow;
14921
+ }
14922
+ /**
14923
+ * Gets the current value of the strict mode.
14924
+ */
14925
+ function ɵgetUnknownElementStrictMode() {
14926
+ return shouldThrowErrorOnUnknownElement;
14927
+ }
14860
14928
  function elementStartFirstCreatePass(index, tView, lView, native, name, attrsIndex, localRefsIndex) {
14861
14929
  ngDevMode && assertFirstCreatePass(tView);
14862
14930
  ngDevMode && ngDevMode.firstCreatePass++;
14863
14931
  const tViewConsts = tView.consts;
14864
14932
  const attrs = getConstant(tViewConsts, attrsIndex);
14865
- const tNode = getOrCreateTNode(tView, index, 2 /* Element */, name, attrs);
14933
+ const tNode = getOrCreateTNode(tView, index, 2 /* TNodeType.Element */, name, attrs);
14866
14934
  const hasDirectives = resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
14867
14935
  ngDevMode && validateElementIsKnown(native, tNode.value, tView.schemas, hasDirectives);
14868
14936
  if (tNode.attrs !== null) {
@@ -14916,7 +14984,7 @@ function ɵɵelementStart(index, name, attrsIndex, localRefsIndex) {
14916
14984
  if (styles !== null) {
14917
14985
  writeDirectStyle(renderer, native, styles);
14918
14986
  }
14919
- if ((tNode.flags & 64 /* isDetached */) !== 64 /* isDetached */) {
14987
+ if ((tNode.flags & 64 /* TNodeFlags.isDetached */) !== 64 /* TNodeFlags.isDetached */) {
14920
14988
  // In the i18n case, the translation may have removed this element, so only add it if it is not
14921
14989
  // detached. See `TNodeType.Placeholder` and `LFrame.inI18n` for more context.
14922
14990
  appendChild(tView, lView, native, tNode);
@@ -14955,7 +15023,7 @@ function ɵɵelementEnd() {
14955
15023
  setCurrentTNode(currentTNode, false);
14956
15024
  }
14957
15025
  const tNode = currentTNode;
14958
- ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */);
15026
+ ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */);
14959
15027
  decreaseElementDepthCount();
14960
15028
  const tView = getTView();
14961
15029
  if (tView.firstCreatePass) {
@@ -15034,7 +15102,12 @@ function validateElementIsKnown(element, tagName, schemas, hasDirectives) {
15034
15102
  message +=
15035
15103
  `2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.`;
15036
15104
  }
15037
- console.error(formatRuntimeError(304 /* UNKNOWN_ELEMENT */, message));
15105
+ if (shouldThrowErrorOnUnknownElement) {
15106
+ throw new RuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message);
15107
+ }
15108
+ else {
15109
+ console.error(formatRuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message));
15110
+ }
15038
15111
  }
15039
15112
  }
15040
15113
  }
@@ -15050,7 +15123,7 @@ function elementContainerStartFirstCreatePass(index, tView, lView, attrsIndex, l
15050
15123
  ngDevMode && ngDevMode.firstCreatePass++;
15051
15124
  const tViewConsts = tView.consts;
15052
15125
  const attrs = getConstant(tViewConsts, attrsIndex);
15053
- const tNode = getOrCreateTNode(tView, index, 8 /* ElementContainer */, 'ng-container', attrs);
15126
+ const tNode = getOrCreateTNode(tView, index, 8 /* TNodeType.ElementContainer */, 'ng-container', attrs);
15054
15127
  // While ng-container doesn't necessarily support styling, we use the style context to identify
15055
15128
  // and execute directives on the ng-container.
15056
15129
  if (attrs !== null) {
@@ -15120,7 +15193,7 @@ function ɵɵelementContainerEnd() {
15120
15193
  currentTNode = currentTNode.parent;
15121
15194
  setCurrentTNode(currentTNode, false);
15122
15195
  }
15123
- ngDevMode && assertTNodeType(currentTNode, 8 /* ElementContainer */);
15196
+ ngDevMode && assertTNodeType(currentTNode, 8 /* TNodeType.ElementContainer */);
15124
15197
  if (tView.firstCreatePass) {
15125
15198
  registerPostOrderHooks(tView, currentTNode);
15126
15199
  if (isContentQueryHost(currentTNode)) {
@@ -15288,13 +15361,13 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
15288
15361
  // native listener or a directive output on this element. As such we we know that we will have to
15289
15362
  // register a listener and store its cleanup function on LView.
15290
15363
  const lCleanup = getOrCreateLViewCleanup(lView);
15291
- ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */);
15364
+ ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);
15292
15365
  let processOutputs = true;
15293
15366
  // Adding a native event listener is applicable when:
15294
15367
  // - The corresponding TNode represents a DOM element.
15295
15368
  // - The event target has a resolver (usually resulting in a global object,
15296
15369
  // such as `window` or `document`).
15297
- if ((tNode.type & 3 /* AnyRNode */) || eventTargetResolver) {
15370
+ if ((tNode.type & 3 /* TNodeType.AnyRNode */) || eventTargetResolver) {
15298
15371
  const native = getNativeByTNode(tNode, lView);
15299
15372
  const target = eventTargetResolver ? eventTargetResolver(native) : native;
15300
15373
  const lCleanupIndex = lCleanup.length;
@@ -15380,7 +15453,7 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
15380
15453
  }
15381
15454
  function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
15382
15455
  try {
15383
- profiler(6 /* OutputStart */, context, listenerFn);
15456
+ profiler(6 /* ProfilerEvent.OutputStart */, context, listenerFn);
15384
15457
  // Only explicitly returning false from a listener should preventDefault
15385
15458
  return listenerFn(e) !== false;
15386
15459
  }
@@ -15389,7 +15462,7 @@ function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
15389
15462
  return false;
15390
15463
  }
15391
15464
  finally {
15392
- profiler(7 /* OutputEnd */, context, listenerFn);
15465
+ profiler(7 /* ProfilerEvent.OutputEnd */, context, listenerFn);
15393
15466
  }
15394
15467
  }
15395
15468
  /**
@@ -15413,11 +15486,11 @@ function wrapListener(tNode, lView, context, listenerFn, wrapWithPreventDefault)
15413
15486
  }
15414
15487
  // In order to be backwards compatible with View Engine, events on component host nodes
15415
15488
  // must also mark the component view itself dirty (i.e. the view that it owns).
15416
- const startView = tNode.flags & 2 /* isComponentHost */ ?
15489
+ const startView = tNode.flags & 2 /* TNodeFlags.isComponentHost */ ?
15417
15490
  getComponentLViewByIndex(tNode.index, lView) :
15418
15491
  lView;
15419
15492
  // See interfaces/view.ts for more on LViewFlags.ManualOnPush
15420
- if ((lView[FLAGS] & 32 /* ManualOnPush */) === 0) {
15493
+ if ((lView[FLAGS] & 32 /* LViewFlags.ManualOnPush */) === 0) {
15421
15494
  markViewDirty(startView);
15422
15495
  }
15423
15496
  let result = executeListenerWithErrorHandling(lView, context, listenerFn, e);
@@ -15569,13 +15642,13 @@ function ɵɵprojectionDef(projectionSlots) {
15569
15642
  function ɵɵprojection(nodeIndex, selectorIndex = 0, attrs) {
15570
15643
  const lView = getLView();
15571
15644
  const tView = getTView();
15572
- const tProjectionNode = getOrCreateTNode(tView, HEADER_OFFSET + nodeIndex, 16 /* Projection */, null, attrs || null);
15645
+ const tProjectionNode = getOrCreateTNode(tView, HEADER_OFFSET + nodeIndex, 16 /* TNodeType.Projection */, null, attrs || null);
15573
15646
  // We can't use viewData[HOST_NODE] because projection nodes can be nested in embedded views.
15574
15647
  if (tProjectionNode.projection === null)
15575
15648
  tProjectionNode.projection = selectorIndex;
15576
15649
  // `<ng-content>` has no content
15577
15650
  setCurrentTNodeAsNotParent();
15578
- if ((tProjectionNode.flags & 64 /* isDetached */) !== 64 /* isDetached */) {
15651
+ if ((tProjectionNode.flags & 64 /* TNodeFlags.isDetached */) !== 64 /* TNodeFlags.isDetached */) {
15579
15652
  // re-distribution of projectable nodes is stored on a component's view level
15580
15653
  applyProjection(tView, lView, tProjectionNode);
15581
15654
  }
@@ -16561,10 +16634,10 @@ function parseStyleNext(text, startIndex) {
16561
16634
  return -1;
16562
16635
  }
16563
16636
  index = parserState.keyEnd = consumeStyleKey(text, index, end);
16564
- index = consumeSeparator(text, index, end, 58 /* COLON */);
16637
+ index = consumeSeparator(text, index, end, 58 /* CharCode.COLON */);
16565
16638
  index = parserState.value = consumeWhitespace(text, index, end);
16566
16639
  index = parserState.valueEnd = consumeStyleValue(text, index, end);
16567
- return consumeSeparator(text, index, end, 59 /* SEMI_COLON */);
16640
+ return consumeSeparator(text, index, end, 59 /* CharCode.SEMI_COLON */);
16568
16641
  }
16569
16642
  /**
16570
16643
  * Reset the global state of the styling parser.
@@ -16587,7 +16660,7 @@ function resetParserState(text) {
16587
16660
  * that location.)
16588
16661
  */
16589
16662
  function consumeWhitespace(text, startIndex, endIndex) {
16590
- while (startIndex < endIndex && text.charCodeAt(startIndex) <= 32 /* SPACE */) {
16663
+ while (startIndex < endIndex && text.charCodeAt(startIndex) <= 32 /* CharCode.SPACE */) {
16591
16664
  startIndex++;
16592
16665
  }
16593
16666
  return startIndex;
@@ -16601,7 +16674,7 @@ function consumeWhitespace(text, startIndex, endIndex) {
16601
16674
  * @returns Index after last char in class token.
16602
16675
  */
16603
16676
  function consumeClassToken(text, startIndex, endIndex) {
16604
- while (startIndex < endIndex && text.charCodeAt(startIndex) > 32 /* SPACE */) {
16677
+ while (startIndex < endIndex && text.charCodeAt(startIndex) > 32 /* CharCode.SPACE */) {
16605
16678
  startIndex++;
16606
16679
  }
16607
16680
  return startIndex;
@@ -16617,9 +16690,9 @@ function consumeClassToken(text, startIndex, endIndex) {
16617
16690
  function consumeStyleKey(text, startIndex, endIndex) {
16618
16691
  let ch;
16619
16692
  while (startIndex < endIndex &&
16620
- ((ch = text.charCodeAt(startIndex)) === 45 /* DASH */ || ch === 95 /* UNDERSCORE */ ||
16621
- ((ch & -33 /* UPPER_CASE */) >= 65 /* A */ && (ch & -33 /* UPPER_CASE */) <= 90 /* Z */) ||
16622
- (ch >= 48 /* ZERO */ && ch <= 57 /* NINE */))) {
16693
+ ((ch = text.charCodeAt(startIndex)) === 45 /* CharCode.DASH */ || ch === 95 /* CharCode.UNDERSCORE */ ||
16694
+ ((ch & -33 /* CharCode.UPPER_CASE */) >= 65 /* CharCode.A */ && (ch & -33 /* CharCode.UPPER_CASE */) <= 90 /* CharCode.Z */) ||
16695
+ (ch >= 48 /* CharCode.ZERO */ && ch <= 57 /* CharCode.NINE */))) {
16623
16696
  startIndex++;
16624
16697
  }
16625
16698
  return startIndex;
@@ -16658,25 +16731,25 @@ function consumeStyleValue(text, startIndex, endIndex) {
16658
16731
  let lastChIndex = i;
16659
16732
  while (i < endIndex) {
16660
16733
  const ch = text.charCodeAt(i++);
16661
- if (ch === 59 /* SEMI_COLON */) {
16734
+ if (ch === 59 /* CharCode.SEMI_COLON */) {
16662
16735
  return lastChIndex;
16663
16736
  }
16664
- else if (ch === 34 /* DOUBLE_QUOTE */ || ch === 39 /* SINGLE_QUOTE */) {
16737
+ else if (ch === 34 /* CharCode.DOUBLE_QUOTE */ || ch === 39 /* CharCode.SINGLE_QUOTE */) {
16665
16738
  lastChIndex = i = consumeQuotedText(text, ch, i, endIndex);
16666
16739
  }
16667
16740
  else if (startIndex ===
16668
16741
  i - 4 && // We have seen only 4 characters so far "URL(" (Ignore "foo_URL()")
16669
- ch3 === 85 /* U */ &&
16670
- ch2 === 82 /* R */ && ch1 === 76 /* L */ && ch === 40 /* OPEN_PAREN */) {
16671
- lastChIndex = i = consumeQuotedText(text, 41 /* CLOSE_PAREN */, i, endIndex);
16742
+ ch3 === 85 /* CharCode.U */ &&
16743
+ ch2 === 82 /* CharCode.R */ && ch1 === 76 /* CharCode.L */ && ch === 40 /* CharCode.OPEN_PAREN */) {
16744
+ lastChIndex = i = consumeQuotedText(text, 41 /* CharCode.CLOSE_PAREN */, i, endIndex);
16672
16745
  }
16673
- else if (ch > 32 /* SPACE */) {
16746
+ else if (ch > 32 /* CharCode.SPACE */) {
16674
16747
  // if we have a non-whitespace character then capture its location
16675
16748
  lastChIndex = i;
16676
16749
  }
16677
16750
  ch3 = ch2;
16678
16751
  ch2 = ch1;
16679
- ch1 = ch & -33 /* UPPER_CASE */;
16752
+ ch1 = ch & -33 /* CharCode.UPPER_CASE */;
16680
16753
  }
16681
16754
  return lastChIndex;
16682
16755
  }
@@ -16694,10 +16767,10 @@ function consumeQuotedText(text, quoteCharCode, startIndex, endIndex) {
16694
16767
  let index = startIndex;
16695
16768
  while (index < endIndex) {
16696
16769
  const ch = text.charCodeAt(index++);
16697
- if (ch == quoteCharCode && ch1 !== 92 /* BACK_SLASH */) {
16770
+ if (ch == quoteCharCode && ch1 !== 92 /* CharCode.BACK_SLASH */) {
16698
16771
  return index;
16699
16772
  }
16700
- if (ch == 92 /* BACK_SLASH */ && ch1 === 92 /* BACK_SLASH */) {
16773
+ if (ch == 92 /* CharCode.BACK_SLASH */ && ch1 === 92 /* CharCode.BACK_SLASH */) {
16701
16774
  // two back slashes cancel each other out. For example `"\\"` should properly end the
16702
16775
  // quotation. (It should not assume that the last `"` is escaped.)
16703
16776
  ch1 = 0;
@@ -17176,8 +17249,8 @@ function collectStylingFromDirectives(hostDirectiveDef, tData, tNode, stylingKey
17176
17249
  * @param isClassBased `true` if `class` (`false` if `style`)
17177
17250
  */
17178
17251
  function collectStylingFromTAttrs(stylingKey, attrs, isClassBased) {
17179
- const desiredMarker = isClassBased ? 1 /* Classes */ : 2 /* Styles */;
17180
- let currentMarker = -1 /* ImplicitAttributes */;
17252
+ const desiredMarker = isClassBased ? 1 /* AttributeMarker.Classes */ : 2 /* AttributeMarker.Styles */;
17253
+ let currentMarker = -1 /* AttributeMarker.ImplicitAttributes */;
17181
17254
  if (attrs !== null) {
17182
17255
  for (let i = 0; i < attrs.length; i++) {
17183
17256
  const item = attrs[i];
@@ -17347,7 +17420,7 @@ function updateStylingMap(tView, tNode, lView, renderer, oldKeyValueArray, newKe
17347
17420
  * @param bindingIndex Binding index of the binding.
17348
17421
  */
17349
17422
  function updateStyling(tView, tNode, lView, renderer, prop, value, isClassBased, bindingIndex) {
17350
- if (!(tNode.type & 3 /* AnyRNode */)) {
17423
+ if (!(tNode.type & 3 /* TNodeType.AnyRNode */)) {
17351
17424
  // It is possible to have styling on non-elements (such as ng-container).
17352
17425
  // This is rare, but it does happen. In such a case, just ignore the binding.
17353
17426
  return;
@@ -17489,7 +17562,7 @@ function normalizeSuffix(value, suffix) {
17489
17562
  * @param isClassBased `true` if `class` (`false` if `style`)
17490
17563
  */
17491
17564
  function hasStylingInputShadow(tNode, isClassBased) {
17492
- return (tNode.flags & (isClassBased ? 16 /* hasClassInput */ : 32 /* hasStyleInput */)) !== 0;
17565
+ return (tNode.flags & (isClassBased ? 16 /* TNodeFlags.hasClassInput */ : 32 /* TNodeFlags.hasStyleInput */)) !== 0;
17493
17566
  }
17494
17567
 
17495
17568
  /**
@@ -17515,7 +17588,7 @@ function ɵɵtext(index, value = '') {
17515
17588
  assertEqual(getBindingIndex(), tView.bindingStartIndex, 'text nodes should be created before any bindings');
17516
17589
  ngDevMode && assertIndexInRange(lView, adjustedIndex);
17517
17590
  const tNode = tView.firstCreatePass ?
17518
- getOrCreateTNode(tView, adjustedIndex, 1 /* Text */, value, null) :
17591
+ getOrCreateTNode(tView, adjustedIndex, 1 /* TNodeType.Text */, value, null) :
17519
17592
  tView.data[adjustedIndex];
17520
17593
  const textNative = lView[adjustedIndex] = createTextNode(lView[RENDERER], value);
17521
17594
  appendChild(tView, lView, textNative, tNode);
@@ -19177,11 +19250,11 @@ function processI18nInsertBefore(renderer, childTNode, lView, childRNode, parent
19177
19250
  ngDevMode && assertDomNode(childRNode);
19178
19251
  let i18nParent = childRNode;
19179
19252
  let anchorRNode = null;
19180
- if (!(childTNode.type & 3 /* AnyRNode */)) {
19253
+ if (!(childTNode.type & 3 /* TNodeType.AnyRNode */)) {
19181
19254
  anchorRNode = i18nParent;
19182
19255
  i18nParent = parentRElement;
19183
19256
  }
19184
- if (i18nParent !== null && (childTNode.flags & 2 /* isComponentHost */) === 0) {
19257
+ if (i18nParent !== null && (childTNode.flags & 2 /* TNodeFlags.isComponentHost */) === 0) {
19185
19258
  for (let i = 1; i < tNodeInsertBeforeIndex.length; i++) {
19186
19259
  // No need to `unwrapRNode` because all of the indexes point to i18n text nodes.
19187
19260
  // see `assertDomNode` below.
@@ -19251,7 +19324,7 @@ function addTNodeAndUpdateInsertBeforeIndex(previousTNodes, newTNode) {
19251
19324
  }
19252
19325
  }
19253
19326
  function isI18nText(tNode) {
19254
- return !(tNode.type & 64 /* Placeholder */);
19327
+ return !(tNode.type & 64 /* TNodeType.Placeholder */);
19255
19328
  }
19256
19329
  function isNewTNodeCreatedBefore(existingTNode, newTNode) {
19257
19330
  return isI18nText(newTNode) || existingTNode.index > newTNode.index;
@@ -19331,7 +19404,7 @@ function setTIcu(tView, index, tIcu) {
19331
19404
  tView.data[index] = tIcu;
19332
19405
  }
19333
19406
  else {
19334
- ngDevMode && assertTNodeType(tNode, 32 /* Icu */);
19407
+ ngDevMode && assertTNodeType(tNode, 32 /* TNodeType.Icu */);
19335
19408
  tNode.value = tIcu;
19336
19409
  }
19337
19410
  }
@@ -19359,7 +19432,7 @@ function setTNodeInsertBeforeIndex(tNode, index) {
19359
19432
  * See `TNodeType.Placeholder` for more information.
19360
19433
  */
19361
19434
  function createTNodePlaceholder(tView, previousTNodes, index) {
19362
- const tNode = createTNodeAtIndex(tView, index, 64 /* Placeholder */, null, null);
19435
+ const tNode = createTNodeAtIndex(tView, index, 64 /* TNodeType.Placeholder */, null, null);
19363
19436
  addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tNode);
19364
19437
  return tNode;
19365
19438
  }
@@ -19376,18 +19449,18 @@ function getCurrentICUCaseIndex(tIcu, lView) {
19376
19449
  return currentCase === null ? currentCase : (currentCase < 0 ? ~currentCase : currentCase);
19377
19450
  }
19378
19451
  function getParentFromIcuCreateOpCode(mergedCode) {
19379
- return mergedCode >>> 17 /* SHIFT_PARENT */;
19452
+ return mergedCode >>> 17 /* IcuCreateOpCode.SHIFT_PARENT */;
19380
19453
  }
19381
19454
  function getRefFromIcuCreateOpCode(mergedCode) {
19382
- return (mergedCode & 131070 /* MASK_REF */) >>> 1 /* SHIFT_REF */;
19455
+ return (mergedCode & 131070 /* IcuCreateOpCode.MASK_REF */) >>> 1 /* IcuCreateOpCode.SHIFT_REF */;
19383
19456
  }
19384
19457
  function getInstructionFromIcuCreateOpCode(mergedCode) {
19385
- return mergedCode & 1 /* MASK_INSTRUCTION */;
19458
+ return mergedCode & 1 /* IcuCreateOpCode.MASK_INSTRUCTION */;
19386
19459
  }
19387
19460
  function icuCreateOpCode(opCode, parentIdx, refIdx) {
19388
19461
  ngDevMode && assertGreaterThanOrEqual(parentIdx, 0, 'Missing parent index');
19389
19462
  ngDevMode && assertGreaterThan(refIdx, 0, 'Missing ref index');
19390
- return opCode | parentIdx << 17 /* SHIFT_PARENT */ | refIdx << 1 /* SHIFT_REF */;
19463
+ return opCode | parentIdx << 17 /* IcuCreateOpCode.SHIFT_PARENT */ | refIdx << 1 /* IcuCreateOpCode.SHIFT_REF */;
19391
19464
  }
19392
19465
 
19393
19466
  /**
@@ -19504,8 +19577,8 @@ function applyMutableOpCodes(tView, mutableOpCodes, lView, anchorRNode) {
19504
19577
  }
19505
19578
  }
19506
19579
  else if (typeof opCode == 'number') {
19507
- switch (opCode & 1 /* MASK_INSTRUCTION */) {
19508
- case 0 /* AppendChild */:
19580
+ switch (opCode & 1 /* IcuCreateOpCode.MASK_INSTRUCTION */) {
19581
+ case 0 /* IcuCreateOpCode.AppendChild */:
19509
19582
  const parentIdx = getParentFromIcuCreateOpCode(opCode);
19510
19583
  if (rootIdx === null) {
19511
19584
  // The first operation should save the `rootIdx` because the first operation
@@ -19550,8 +19623,8 @@ function applyMutableOpCodes(tView, mutableOpCodes, lView, anchorRNode) {
19550
19623
  }
19551
19624
  }
19552
19625
  break;
19553
- case 1 /* Attr */:
19554
- const elementNodeIndex = opCode >>> 1 /* SHIFT_REF */;
19626
+ case 1 /* IcuCreateOpCode.Attr */:
19627
+ const elementNodeIndex = opCode >>> 1 /* IcuCreateOpCode.SHIFT_REF */;
19555
19628
  const attrName = mutableOpCodes[++i];
19556
19629
  const attrValue = mutableOpCodes[++i];
19557
19630
  // This code is used for ICU expressions only, since we don't support
@@ -19560,7 +19633,7 @@ function applyMutableOpCodes(tView, mutableOpCodes, lView, anchorRNode) {
19560
19633
  break;
19561
19634
  default:
19562
19635
  if (ngDevMode) {
19563
- throw new RuntimeError(700 /* INVALID_I18N_STRUCTURE */, `Unable to determine the type of mutate operation for "${opCode}"`);
19636
+ throw new RuntimeError(700 /* RuntimeErrorCode.INVALID_I18N_STRUCTURE */, `Unable to determine the type of mutate operation for "${opCode}"`);
19564
19637
  }
19565
19638
  }
19566
19639
  }
@@ -19631,9 +19704,9 @@ function applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, cha
19631
19704
  value += renderStringify(lView[bindingsStartIndex - opCode]);
19632
19705
  }
19633
19706
  else {
19634
- const nodeIndex = (opCode >>> 2 /* SHIFT_REF */);
19635
- switch (opCode & 3 /* MASK_OPCODE */) {
19636
- case 1 /* Attr */:
19707
+ const nodeIndex = (opCode >>> 2 /* I18nUpdateOpCode.SHIFT_REF */);
19708
+ switch (opCode & 3 /* I18nUpdateOpCode.MASK_OPCODE */) {
19709
+ case 1 /* I18nUpdateOpCode.Attr */:
19637
19710
  const propName = updateOpCodes[++j];
19638
19711
  const sanitizeFn = updateOpCodes[++j];
19639
19712
  const tNodeOrTagName = tView.data[nodeIndex];
@@ -19648,14 +19721,14 @@ function applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, cha
19648
19721
  elementPropertyInternal(tView, tNodeOrTagName, lView, propName, value, lView[RENDERER], sanitizeFn, false);
19649
19722
  }
19650
19723
  break;
19651
- case 0 /* Text */:
19724
+ case 0 /* I18nUpdateOpCode.Text */:
19652
19725
  const rText = lView[nodeIndex];
19653
19726
  rText !== null && updateTextNode(lView[RENDERER], rText, value);
19654
19727
  break;
19655
- case 2 /* IcuSwitch */:
19728
+ case 2 /* I18nUpdateOpCode.IcuSwitch */:
19656
19729
  applyIcuSwitchCase(tView, getTIcu(tView, nodeIndex), lView, value);
19657
19730
  break;
19658
- case 3 /* IcuUpdate */:
19731
+ case 3 /* I18nUpdateOpCode.IcuUpdate */:
19659
19732
  applyIcuUpdateCase(tView, getTIcu(tView, nodeIndex), bindingsStartIndex, lView);
19660
19733
  break;
19661
19734
  }
@@ -19665,12 +19738,12 @@ function applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, cha
19665
19738
  }
19666
19739
  else {
19667
19740
  const opCode = updateOpCodes[i + 1];
19668
- if (opCode > 0 && (opCode & 3 /* MASK_OPCODE */) === 3 /* IcuUpdate */) {
19741
+ if (opCode > 0 && (opCode & 3 /* I18nUpdateOpCode.MASK_OPCODE */) === 3 /* I18nUpdateOpCode.IcuUpdate */) {
19669
19742
  // Special case for the `icuUpdateCase`. It could be that the mask did not match, but
19670
19743
  // we still need to execute `icuUpdateCase` because the case has changed recently due to
19671
19744
  // previous `icuSwitchCase` instruction. (`icuSwitchCase` and `icuUpdateCase` always come in
19672
19745
  // pairs.)
19673
- const nodeIndex = (opCode >>> 2 /* SHIFT_REF */);
19746
+ const nodeIndex = (opCode >>> 2 /* I18nUpdateOpCode.SHIFT_REF */);
19674
19747
  const tIcu = getTIcu(tView, nodeIndex);
19675
19748
  const currentIndex = lView[tIcu.currentCaseLViewIndex];
19676
19749
  if (currentIndex < 0) {
@@ -19768,7 +19841,7 @@ function getCaseIndex(icuExpression, bindingValue) {
19768
19841
  let index = icuExpression.cases.indexOf(bindingValue);
19769
19842
  if (index === -1) {
19770
19843
  switch (icuExpression.type) {
19771
- case 1 /* plural */: {
19844
+ case 1 /* IcuType.plural */: {
19772
19845
  const resolvedCase = getPluralCase(bindingValue, getLocaleId());
19773
19846
  index = icuExpression.cases.indexOf(resolvedCase);
19774
19847
  if (index === -1 && resolvedCase !== 'other') {
@@ -19776,7 +19849,7 @@ function getCaseIndex(icuExpression, bindingValue) {
19776
19849
  }
19777
19850
  break;
19778
19851
  }
19779
- case 0 /* select */: {
19852
+ case 0 /* IcuType.select */: {
19780
19853
  index = icuExpression.cases.indexOf('other');
19781
19854
  break;
19782
19855
  }
@@ -19912,19 +19985,19 @@ function i18nUpdateOpCodesToString(opcodes) {
19912
19985
  const parser = new OpCodeParser(opcodes || (Array.isArray(this) ? this : []));
19913
19986
  let lines = [];
19914
19987
  function consumeOpCode(value) {
19915
- const ref = value >>> 2 /* SHIFT_REF */;
19916
- const opCode = value & 3 /* MASK_OPCODE */;
19988
+ const ref = value >>> 2 /* I18nUpdateOpCode.SHIFT_REF */;
19989
+ const opCode = value & 3 /* I18nUpdateOpCode.MASK_OPCODE */;
19917
19990
  switch (opCode) {
19918
- case 0 /* Text */:
19991
+ case 0 /* I18nUpdateOpCode.Text */:
19919
19992
  return `(lView[${ref}] as Text).textContent = $$$`;
19920
- case 1 /* Attr */:
19993
+ case 1 /* I18nUpdateOpCode.Attr */:
19921
19994
  const attrName = parser.consumeString();
19922
19995
  const sanitizationFn = parser.consumeFunction();
19923
19996
  const value = sanitizationFn ? `(${sanitizationFn})($$$)` : '$$$';
19924
19997
  return `(lView[${ref}] as Element).setAttribute('${attrName}', ${value})`;
19925
- case 2 /* IcuSwitch */:
19998
+ case 2 /* I18nUpdateOpCode.IcuSwitch */:
19926
19999
  return `icuSwitchCase(${ref}, $$$)`;
19927
- case 3 /* IcuUpdate */:
20000
+ case 3 /* I18nUpdateOpCode.IcuUpdate */:
19928
20001
  return `icuUpdateCase(${ref})`;
19929
20002
  }
19930
20003
  throw new Error('unexpected OpCode');
@@ -19974,9 +20047,9 @@ function icuCreateOpCodesToString(opcodes) {
19974
20047
  const parent = getParentFromIcuCreateOpCode(opCode);
19975
20048
  const ref = getRefFromIcuCreateOpCode(opCode);
19976
20049
  switch (getInstructionFromIcuCreateOpCode(opCode)) {
19977
- case 0 /* AppendChild */:
20050
+ case 0 /* IcuCreateOpCode.AppendChild */:
19978
20051
  return `(lView[${parent}] as Element).appendChild(lView[${lastRef}])`;
19979
- case 1 /* Attr */:
20052
+ case 1 /* IcuCreateOpCode.Attr */:
19980
20053
  return `(lView[${ref}] as Element).setAttribute("${parser.consumeString()}", "${parser.consumeString()}")`;
19981
20054
  }
19982
20055
  throw new Error('Unexpected OpCode: ' + getInstructionFromIcuCreateOpCode(opCode));
@@ -20166,9 +20239,9 @@ function i18nStartFirstCreatePass(tView, parentTNodeIndex, lView, index, message
20166
20239
  else {
20167
20240
  // Odd indexes are placeholders (elements and sub-templates)
20168
20241
  // At this point value is something like: '/#1:2' (originally coming from '�/#1:2�')
20169
- const isClosing = value.charCodeAt(0) === 47 /* SLASH */;
20242
+ const isClosing = value.charCodeAt(0) === 47 /* CharCode.SLASH */;
20170
20243
  const type = value.charCodeAt(isClosing ? 1 : 0);
20171
- ngDevMode && assertOneOf(type, 42 /* STAR */, 35 /* HASH */);
20244
+ ngDevMode && assertOneOf(type, 42 /* CharCode.STAR */, 35 /* CharCode.HASH */);
20172
20245
  const index = HEADER_OFFSET + Number.parseInt(value.substring((isClosing ? 2 : 1)));
20173
20246
  if (isClosing) {
20174
20247
  existingTNodeStack.shift();
@@ -20222,7 +20295,7 @@ function createTNodeAndAddOpCode(tView, rootTNode, existingTNodes, lView, create
20222
20295
  createOpCodes.push(opCode, text === null ? '' : text);
20223
20296
  // We store `{{?}}` so that when looking at debug `TNodeType.template` we can see where the
20224
20297
  // bindings are.
20225
- const tNode = createTNodeAtIndex(tView, i18nNodeIdx, isICU ? 32 /* Icu */ : 1 /* Text */, text === null ? (ngDevMode ? '{{?}}' : '') : text, null);
20298
+ const tNode = createTNodeAtIndex(tView, i18nNodeIdx, isICU ? 32 /* TNodeType.Icu */ : 1 /* TNodeType.Text */, text === null ? (ngDevMode ? '{{?}}' : '') : text, null);
20226
20299
  addTNodeAndUpdateInsertBeforeIndex(existingTNodes, tNode);
20227
20300
  const tNodeIdx = tNode.index;
20228
20301
  setCurrentTNode(tNode, false /* Text nodes are self closing */);
@@ -20328,8 +20401,8 @@ function generateBindingUpdateOpCodes(updateOpCodes, str, destinationNode, attrN
20328
20401
  updateOpCodes.push(textValue);
20329
20402
  }
20330
20403
  }
20331
- updateOpCodes.push(destinationNode << 2 /* SHIFT_REF */ |
20332
- (attrName ? 1 /* Attr */ : 0 /* Text */));
20404
+ updateOpCodes.push(destinationNode << 2 /* I18nUpdateOpCode.SHIFT_REF */ |
20405
+ (attrName ? 1 /* I18nUpdateOpCode.Attr */ : 0 /* I18nUpdateOpCode.Text */));
20333
20406
  if (attrName) {
20334
20407
  updateOpCodes.push(attrName, sanitizeFn);
20335
20408
  }
@@ -20480,14 +20553,14 @@ function icuStart(tView, lView, updateOpCodes, parentIdx, icuExpression, anchorI
20480
20553
  function parseICUBlock(pattern) {
20481
20554
  const cases = [];
20482
20555
  const values = [];
20483
- let icuType = 1 /* plural */;
20556
+ let icuType = 1 /* IcuType.plural */;
20484
20557
  let mainBinding = 0;
20485
20558
  pattern = pattern.replace(ICU_BLOCK_REGEXP, function (str, binding, type) {
20486
20559
  if (type === 'select') {
20487
- icuType = 0 /* select */;
20560
+ icuType = 0 /* IcuType.select */;
20488
20561
  }
20489
20562
  else {
20490
- icuType = 1 /* plural */;
20563
+ icuType = 1 /* IcuType.plural */;
20491
20564
  }
20492
20565
  mainBinding = parseInt(binding.slice(1), 10);
20493
20566
  return '';
@@ -20496,7 +20569,7 @@ function parseICUBlock(pattern) {
20496
20569
  // Looking for (key block)+ sequence. One of the keys has to be "other".
20497
20570
  for (let pos = 0; pos < parts.length;) {
20498
20571
  let key = parts[pos++].trim();
20499
- if (icuType === 1 /* plural */) {
20572
+ if (icuType === 1 /* IcuType.plural */) {
20500
20573
  // Key can be "=x", we just want "x"
20501
20574
  key = key.replace(/\s*(?:=)?(\w+)\s*/, '$1');
20502
20575
  }
@@ -20675,19 +20748,19 @@ function addRemoveNestedIcu(remove, index, depth) {
20675
20748
  }
20676
20749
  }
20677
20750
  function addUpdateIcuSwitch(update, icuExpression, index) {
20678
- update.push(toMaskBit(icuExpression.mainBinding), 2, -1 - icuExpression.mainBinding, index << 2 /* SHIFT_REF */ | 2 /* IcuSwitch */);
20751
+ update.push(toMaskBit(icuExpression.mainBinding), 2, -1 - icuExpression.mainBinding, index << 2 /* I18nUpdateOpCode.SHIFT_REF */ | 2 /* I18nUpdateOpCode.IcuSwitch */);
20679
20752
  }
20680
20753
  function addUpdateIcuUpdate(update, bindingMask, index) {
20681
- update.push(bindingMask, 1, index << 2 /* SHIFT_REF */ | 3 /* IcuUpdate */);
20754
+ update.push(bindingMask, 1, index << 2 /* I18nUpdateOpCode.SHIFT_REF */ | 3 /* I18nUpdateOpCode.IcuUpdate */);
20682
20755
  }
20683
20756
  function addCreateNodeAndAppend(create, marker, text, appendToParentIdx, createAtIdx) {
20684
20757
  if (marker !== null) {
20685
20758
  create.push(marker);
20686
20759
  }
20687
- create.push(text, createAtIdx, icuCreateOpCode(0 /* AppendChild */, appendToParentIdx, createAtIdx));
20760
+ create.push(text, createAtIdx, icuCreateOpCode(0 /* IcuCreateOpCode.AppendChild */, appendToParentIdx, createAtIdx));
20688
20761
  }
20689
20762
  function addCreateAttribute(create, newIndex, attr) {
20690
- create.push(newIndex << 1 /* SHIFT_REF */ | 1 /* Attr */, attr.name, attr.value);
20763
+ create.push(newIndex << 1 /* IcuCreateOpCode.SHIFT_REF */ | 1 /* IcuCreateOpCode.Attr */, attr.name, attr.value);
20691
20764
  }
20692
20765
 
20693
20766
  /**
@@ -20858,7 +20931,7 @@ function ɵɵi18nStart(index, messageIndex, subTemplateIndex = -1) {
20858
20931
  const parentRNode = getClosestRElement(tView, sameViewParentTNode, lView);
20859
20932
  // If `parentTNode` is an `ElementContainer` than it has `<!--ng-container--->`.
20860
20933
  // When we do inserts we have to make sure to insert in front of `<!--ng-container--->`.
20861
- const insertInFrontOf = parentTNode && (parentTNode.type & 8 /* ElementContainer */) ?
20934
+ const insertInFrontOf = parentTNode && (parentTNode.type & 8 /* TNodeType.ElementContainer */) ?
20862
20935
  lView[parentTNode.index] :
20863
20936
  null;
20864
20937
  applyCreateOpCodes(lView, tI18n.create, parentRNode, insertInFrontOf);
@@ -21029,9 +21102,9 @@ function resolveProvider(provider, tInjectables, lInjectablesBlueprint, isCompon
21029
21102
  let token = isTypeProvider(provider) ? provider : resolveForwardRef(provider.provide);
21030
21103
  let providerFactory = providerToFactory(provider);
21031
21104
  const tNode = getCurrentTNode();
21032
- const beginIndex = tNode.providerIndexes & 1048575 /* ProvidersStartIndexMask */;
21105
+ const beginIndex = tNode.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
21033
21106
  const endIndex = tNode.directiveStart;
21034
- const cptViewProvidersCount = tNode.providerIndexes >> 20 /* CptViewProvidersCountShift */;
21107
+ const cptViewProvidersCount = tNode.providerIndexes >> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */;
21035
21108
  if (isTypeProvider(provider) || !provider.multi) {
21036
21109
  // Single provider case: the factory is created and pushed immediately
21037
21110
  const factory = new NodeInjectorFactory(providerFactory, isViewProvider, ɵɵdirectiveInject);
@@ -21043,7 +21116,7 @@ function resolveProvider(provider, tInjectables, lInjectablesBlueprint, isCompon
21043
21116
  tNode.directiveStart++;
21044
21117
  tNode.directiveEnd++;
21045
21118
  if (isViewProvider) {
21046
- tNode.providerIndexes += 1048576 /* CptViewProvidersCountShifter */;
21119
+ tNode.providerIndexes += 1048576 /* TNodeProviderIndexes.CptViewProvidersCountShifter */;
21047
21120
  }
21048
21121
  lInjectablesBlueprint.push(factory);
21049
21122
  lView.push(factory);
@@ -21093,7 +21166,7 @@ function resolveProvider(provider, tInjectables, lInjectablesBlueprint, isCompon
21093
21166
  tNode.directiveStart++;
21094
21167
  tNode.directiveEnd++;
21095
21168
  if (isViewProvider) {
21096
- tNode.providerIndexes += 1048576 /* CptViewProvidersCountShifter */;
21169
+ tNode.providerIndexes += 1048576 /* TNodeProviderIndexes.CptViewProvidersCountShifter */;
21097
21170
  }
21098
21171
  lInjectablesBlueprint.push(factory);
21099
21172
  lView.push(factory);
@@ -21523,7 +21596,7 @@ class Version {
21523
21596
  /**
21524
21597
  * @publicApi
21525
21598
  */
21526
- const VERSION = new Version('14.0.0-next.15');
21599
+ const VERSION = new Version('14.0.0-next.16');
21527
21600
 
21528
21601
  /**
21529
21602
  * @license
@@ -21561,7 +21634,7 @@ const NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};
21561
21634
  function collectNativeNodes(tView, lView, tNode, result, isProjection = false) {
21562
21635
  while (tNode !== null) {
21563
21636
  ngDevMode &&
21564
- assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */ | 16 /* Projection */ | 32 /* Icu */);
21637
+ assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 16 /* TNodeType.Projection */ | 32 /* TNodeType.Icu */);
21565
21638
  const lNode = lView[tNode.index];
21566
21639
  if (lNode !== null) {
21567
21640
  result.push(unwrapRNode(lNode));
@@ -21579,17 +21652,17 @@ function collectNativeNodes(tView, lView, tNode, result, isProjection = false) {
21579
21652
  }
21580
21653
  }
21581
21654
  const tNodeType = tNode.type;
21582
- if (tNodeType & 8 /* ElementContainer */) {
21655
+ if (tNodeType & 8 /* TNodeType.ElementContainer */) {
21583
21656
  collectNativeNodes(tView, lView, tNode.child, result);
21584
21657
  }
21585
- else if (tNodeType & 32 /* Icu */) {
21658
+ else if (tNodeType & 32 /* TNodeType.Icu */) {
21586
21659
  const nextRNode = icuContainerIterate(tNode, lView);
21587
21660
  let rNode;
21588
21661
  while (rNode = nextRNode()) {
21589
21662
  result.push(rNode);
21590
21663
  }
21591
21664
  }
21592
- else if (tNodeType & 16 /* Projection */) {
21665
+ else if (tNodeType & 16 /* TNodeType.Projection */) {
21593
21666
  const nodesInSlot = getProjectionNodes(lView, tNode);
21594
21667
  if (Array.isArray(nodesInSlot)) {
21595
21668
  result.push(...nodesInSlot);
@@ -21650,7 +21723,7 @@ class ViewRef$1 {
21650
21723
  this._lView[CONTEXT] = value;
21651
21724
  }
21652
21725
  get destroyed() {
21653
- return (this._lView[FLAGS] & 256 /* Destroyed */) === 256 /* Destroyed */;
21726
+ return (this._lView[FLAGS] & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */;
21654
21727
  }
21655
21728
  destroy() {
21656
21729
  if (this._appRef) {
@@ -21763,7 +21836,7 @@ class ViewRef$1 {
21763
21836
  * ```
21764
21837
  */
21765
21838
  detach() {
21766
- this._lView[FLAGS] &= ~128 /* Attached */;
21839
+ this._lView[FLAGS] &= ~128 /* LViewFlags.Attached */;
21767
21840
  }
21768
21841
  /**
21769
21842
  * Re-attaches a view to the change detection tree.
@@ -21822,7 +21895,7 @@ class ViewRef$1 {
21822
21895
  * ```
21823
21896
  */
21824
21897
  reattach() {
21825
- this._lView[FLAGS] |= 128 /* Attached */;
21898
+ this._lView[FLAGS] |= 128 /* LViewFlags.Attached */;
21826
21899
  }
21827
21900
  /**
21828
21901
  * Checks the view and its children.
@@ -21860,7 +21933,7 @@ class ViewRef$1 {
21860
21933
  attachToViewContainerRef() {
21861
21934
  if (this._appRef) {
21862
21935
  const errorMessage = ngDevMode ? 'This view is already attached directly to the ApplicationRef!' : '';
21863
- throw new RuntimeError(902 /* VIEW_ALREADY_ATTACHED */, errorMessage);
21936
+ throw new RuntimeError(902 /* RuntimeErrorCode.VIEW_ALREADY_ATTACHED */, errorMessage);
21864
21937
  }
21865
21938
  this._attachedToViewContainer = true;
21866
21939
  }
@@ -21871,7 +21944,7 @@ class ViewRef$1 {
21871
21944
  attachToAppRef(appRef) {
21872
21945
  if (this._attachedToViewContainer) {
21873
21946
  const errorMessage = ngDevMode ? 'This view is already attached to a ViewContainer!' : '';
21874
- throw new RuntimeError(902 /* VIEW_ALREADY_ATTACHED */, errorMessage);
21947
+ throw new RuntimeError(902 /* RuntimeErrorCode.VIEW_ALREADY_ATTACHED */, errorMessage);
21875
21948
  }
21876
21949
  this._appRef = appRef;
21877
21950
  }
@@ -21994,11 +22067,11 @@ class ComponentFactory extends ComponentFactory$1 {
21994
22067
  const hostRNode = rootSelectorOrNode ?
21995
22068
  locateHostElement(hostRenderer, rootSelectorOrNode, this.componentDef.encapsulation) :
21996
22069
  createElementNode(rendererFactory.createRenderer(null, this.componentDef), elementName, getNamespace(elementName));
21997
- const rootFlags = this.componentDef.onPush ? 64 /* Dirty */ | 512 /* IsRoot */ :
21998
- 16 /* CheckAlways */ | 512 /* IsRoot */;
22070
+ const rootFlags = this.componentDef.onPush ? 64 /* LViewFlags.Dirty */ | 512 /* LViewFlags.IsRoot */ :
22071
+ 16 /* LViewFlags.CheckAlways */ | 512 /* LViewFlags.IsRoot */;
21999
22072
  const rootContext = createRootContext();
22000
22073
  // Create the root view. Uses empty TView and ContentTemplate.
22001
- const rootTView = createTView(0 /* Root */, null, null, 1, 0, null, null, null, null, null);
22074
+ const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null);
22002
22075
  const rootLView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, hostRenderer, sanitizer, rootViewInjector, null);
22003
22076
  // rootView is the parent when bootstrapping
22004
22077
  // TODO(misko): it looks like we are entering view here but we don't really need to as
@@ -22219,9 +22292,9 @@ class StandaloneService {
22219
22292
  return null;
22220
22293
  }
22221
22294
  if (!this.cachedInjectors.has(componentDef)) {
22222
- const providers = importProvidersFrom(componentDef.type);
22295
+ const providers = internalImportProvidersFrom(false, componentDef.type);
22223
22296
  const standaloneInjector = providers.length > 0 ?
22224
- createEnvironmentInjector(providers, this._injector, `Standalone[${componentDef.type.name}]`) :
22297
+ createEnvironmentInjector([providers], this._injector, `Standalone[${componentDef.type.name}]`) :
22225
22298
  null;
22226
22299
  this.cachedInjectors.set(componentDef, standaloneInjector);
22227
22300
  }
@@ -22240,6 +22313,7 @@ class StandaloneService {
22240
22313
  }
22241
22314
  }
22242
22315
  }
22316
+ /** @nocollapse */
22243
22317
  StandaloneService.ɵprov = ɵɵdefineInjectable({
22244
22318
  token: StandaloneService,
22245
22319
  providedIn: 'environment',
@@ -22728,7 +22802,7 @@ function getPipeDef(name, registry) {
22728
22802
  const declarationLView = lView[DECLARATION_COMPONENT_VIEW];
22729
22803
  const context = declarationLView[CONTEXT];
22730
22804
  const component = context ? ` in the '${context.constructor.name}' component` : '';
22731
- throw new RuntimeError(-302 /* PIPE_NOT_FOUND */, `The pipe '${name}' could not be found${component}!`);
22805
+ throw new RuntimeError(-302 /* RuntimeErrorCode.PIPE_NOT_FOUND */, `The pipe '${name}' could not be found${component}!`);
22732
22806
  }
22733
22807
  }
22734
22808
  /**
@@ -23102,7 +23176,7 @@ const R3TemplateRef = class TemplateRef extends ViewEngineTemplateRef {
23102
23176
  }
23103
23177
  createEmbeddedView(context, injector) {
23104
23178
  const embeddedTView = this._declarationTContainer.tViews;
23105
- const embeddedLView = createLView(this._declarationLView, embeddedTView, context, 16 /* CheckAlways */, null, embeddedTView.declTNode, null, null, null, null, injector || null);
23179
+ const embeddedLView = createLView(this._declarationLView, embeddedTView, context, 16 /* LViewFlags.CheckAlways */, null, embeddedTView.declTNode, null, null, null, null, injector || null);
23106
23180
  const declarationLContainer = this._declarationLView[this._declarationTContainer.index];
23107
23181
  ngDevMode && assertLContainer(declarationLContainer);
23108
23182
  embeddedLView[DECLARATION_LCONTAINER] = declarationLContainer;
@@ -23130,7 +23204,7 @@ function injectTemplateRef() {
23130
23204
  * @returns The TemplateRef instance or null if we can't create a TemplateRef on a given node type
23131
23205
  */
23132
23206
  function createTemplateRef(hostTNode, hostLView) {
23133
- if (hostTNode.type & 4 /* Container */) {
23207
+ if (hostTNode.type & 4 /* TNodeType.Container */) {
23134
23208
  ngDevMode && assertDefined(hostTNode.tViews, 'TView must be allocated');
23135
23209
  return new R3TemplateRef(hostLView, hostTNode, createElementRef(hostTNode, hostLView));
23136
23210
  }
@@ -23199,7 +23273,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
23199
23273
  const parentView = getParentInjectorView(parentLocation, this._hostLView);
23200
23274
  const injectorIndex = getParentInjectorIndex(parentLocation);
23201
23275
  ngDevMode && assertNodeInjector(parentView, injectorIndex);
23202
- const parentTNode = parentView[TVIEW].data[injectorIndex + 8 /* TNODE */];
23276
+ const parentTNode = parentView[TVIEW].data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */];
23203
23277
  return new NodeInjector(parentTNode, parentView);
23204
23278
  }
23205
23279
  else {
@@ -23402,7 +23476,7 @@ function getOrCreateViewRefs(lContainer) {
23402
23476
  * @returns The ViewContainerRef instance to use
23403
23477
  */
23404
23478
  function createContainerRef(hostTNode, hostLView) {
23405
- ngDevMode && assertTNodeType(hostTNode, 12 /* AnyContainer */ | 3 /* AnyRNode */);
23479
+ ngDevMode && assertTNodeType(hostTNode, 12 /* TNodeType.AnyContainer */ | 3 /* TNodeType.AnyRNode */);
23406
23480
  let lContainer;
23407
23481
  const slotValue = hostLView[hostTNode.index];
23408
23482
  if (isLContainer(slotValue)) {
@@ -23415,7 +23489,7 @@ function createContainerRef(hostTNode, hostLView) {
23415
23489
  // comment and we can reuse that comment as anchor element for the new LContainer.
23416
23490
  // The comment node in question is already part of the DOM structure so we don't need to append
23417
23491
  // it again.
23418
- if (hostTNode.type & 8 /* ElementContainer */) {
23492
+ if (hostTNode.type & 8 /* TNodeType.ElementContainer */) {
23419
23493
  commentNode = unwrapRNode(slotValue);
23420
23494
  }
23421
23495
  else {
@@ -23611,7 +23685,7 @@ class TQuery_ {
23611
23685
  }
23612
23686
  isApplyingToNode(tNode) {
23613
23687
  if (this._appliesToNextNode &&
23614
- (this.metadata.flags & 1 /* descendants */) !== 1 /* descendants */) {
23688
+ (this.metadata.flags & 1 /* QueryFlags.descendants */) !== 1 /* QueryFlags.descendants */) {
23615
23689
  const declarationNodeIdx = this._declarationNodeIndex;
23616
23690
  let parent = tNode.parent;
23617
23691
  // Determine if a given TNode is a "direct" child of a node on which a content query was
@@ -23624,7 +23698,7 @@ class TQuery_ {
23624
23698
  // - <needs-target><ng-container><i #target></i></ng-container></needs-target>: here we need
23625
23699
  // to go past `<ng-container>` to determine <i #target> parent node (but we shouldn't traverse
23626
23700
  // up past the query's host node!).
23627
- while (parent !== null && (parent.type & 8 /* ElementContainer */) &&
23701
+ while (parent !== null && (parent.type & 8 /* TNodeType.ElementContainer */) &&
23628
23702
  parent.index !== declarationNodeIdx) {
23629
23703
  parent = parent.parent;
23630
23704
  }
@@ -23644,7 +23718,7 @@ class TQuery_ {
23644
23718
  }
23645
23719
  else {
23646
23720
  if (predicate === TemplateRef) {
23647
- if (tNode.type & 4 /* Container */) {
23721
+ if (tNode.type & 4 /* TNodeType.Container */) {
23648
23722
  this.matchTNodeWithReadOption(tView, tNode, -1);
23649
23723
  }
23650
23724
  }
@@ -23658,7 +23732,7 @@ class TQuery_ {
23658
23732
  const read = this.metadata.read;
23659
23733
  if (read !== null) {
23660
23734
  if (read === ElementRef || read === ViewContainerRef ||
23661
- read === TemplateRef && (tNode.type & 4 /* Container */)) {
23735
+ read === TemplateRef && (tNode.type & 4 /* TNodeType.Container */)) {
23662
23736
  this.addMatch(tNode.index, -2);
23663
23737
  }
23664
23738
  else {
@@ -23702,10 +23776,10 @@ function getIdxOfMatchingSelector(tNode, selector) {
23702
23776
  return null;
23703
23777
  }
23704
23778
  function createResultByTNodeType(tNode, currentView) {
23705
- if (tNode.type & (3 /* AnyRNode */ | 8 /* ElementContainer */)) {
23779
+ if (tNode.type & (3 /* TNodeType.AnyRNode */ | 8 /* TNodeType.ElementContainer */)) {
23706
23780
  return createElementRef(tNode, currentView);
23707
23781
  }
23708
- else if (tNode.type & 4 /* Container */) {
23782
+ else if (tNode.type & 4 /* TNodeType.Container */) {
23709
23783
  return createTemplateRef(tNode, currentView);
23710
23784
  }
23711
23785
  return null;
@@ -23732,7 +23806,7 @@ function createSpecialToken(lView, tNode, read) {
23732
23806
  return createTemplateRef(tNode, lView);
23733
23807
  }
23734
23808
  else if (read === ViewContainerRef) {
23735
- ngDevMode && assertTNodeType(tNode, 3 /* AnyRNode */ | 12 /* AnyContainer */);
23809
+ ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);
23736
23810
  return createContainerRef(tNode, lView);
23737
23811
  }
23738
23812
  else {
@@ -23825,7 +23899,7 @@ function ɵɵqueryRefresh(queryList) {
23825
23899
  const tQuery = getTQuery(tView, queryIndex);
23826
23900
  if (queryList.dirty &&
23827
23901
  (isCreationMode(lView) ===
23828
- ((tQuery.metadata.flags & 2 /* isStatic */) === 2 /* isStatic */))) {
23902
+ ((tQuery.metadata.flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */))) {
23829
23903
  if (tQuery.matches === null) {
23830
23904
  queryList.reset([]);
23831
23905
  }
@@ -23854,7 +23928,7 @@ function ɵɵviewQuery(predicate, flags, read) {
23854
23928
  const tView = getTView();
23855
23929
  if (tView.firstCreatePass) {
23856
23930
  createTQuery(tView, new TQueryMetadata_(predicate, flags, read), -1);
23857
- if ((flags & 2 /* isStatic */) === 2 /* isStatic */) {
23931
+ if ((flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */) {
23858
23932
  tView.staticViewQueries = true;
23859
23933
  }
23860
23934
  }
@@ -23879,7 +23953,7 @@ function ɵɵcontentQuery(directiveIndex, predicate, flags, read) {
23879
23953
  const tNode = getCurrentTNode();
23880
23954
  createTQuery(tView, new TQueryMetadata_(predicate, flags, read), tNode.index);
23881
23955
  saveContentQueryAndDirectiveIndex(tView, directiveIndex);
23882
- if ((flags & 2 /* isStatic */) === 2 /* isStatic */) {
23956
+ if ((flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */) {
23883
23957
  tView.staticContentQueries = true;
23884
23958
  }
23885
23959
  }
@@ -23900,7 +23974,7 @@ function loadQueryInternal(lView, queryIndex) {
23900
23974
  return lView[QUERIES].queries[queryIndex].queryList;
23901
23975
  }
23902
23976
  function createLQuery(tView, lView, flags) {
23903
- const queryList = new QueryList((flags & 4 /* emitDistinctChangesOnly */) === 4 /* emitDistinctChangesOnly */);
23977
+ const queryList = new QueryList((flags & 4 /* QueryFlags.emitDistinctChangesOnly */) === 4 /* QueryFlags.emitDistinctChangesOnly */);
23904
23978
  storeCleanupWithContext(tView, lView, queryList, queryList.destroy);
23905
23979
  if (lView[QUERIES] === null)
23906
23980
  lView[QUERIES] = new LQueries_();
@@ -24145,6 +24219,20 @@ function patchModuleCompilation() {
24145
24219
  // Does nothing, but exists as a target for patching.
24146
24220
  }
24147
24221
 
24222
+ /**
24223
+ * @license
24224
+ * Copyright Google LLC All Rights Reserved.
24225
+ *
24226
+ * Use of this source code is governed by an MIT-style license that can be
24227
+ * found in the LICENSE file at https://angular.io/license
24228
+ */
24229
+ function isModuleWithProviders(value) {
24230
+ return value.ngModule !== undefined;
24231
+ }
24232
+ function isNgModule(value) {
24233
+ return !!getNgModuleDef(value);
24234
+ }
24235
+
24148
24236
  /**
24149
24237
  * @license
24150
24238
  * Copyright Google LLC All Rights Reserved.
@@ -24232,7 +24320,7 @@ function compileNgModuleDefs(moduleType, ngModule, allowDuplicateDeclarationsInR
24232
24320
  // go into an infinite loop before we've reached the point where we throw all the errors.
24233
24321
  throw new Error(`'${stringifyForError(moduleType)}' module can't import itself`);
24234
24322
  }
24235
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'NgModule', type: moduleType });
24323
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'NgModule', type: moduleType });
24236
24324
  ngModuleDef = compiler.compileNgModule(angularCoreEnv, `ng:///${moduleType.name}/ɵmod.js`, {
24237
24325
  type: moduleType,
24238
24326
  bootstrap: flatten(ngModule.bootstrap || EMPTY_ARRAY).map(resolveForwardRef),
@@ -24261,7 +24349,7 @@ function compileNgModuleDefs(moduleType, ngModule, allowDuplicateDeclarationsInR
24261
24349
  Object.defineProperty(moduleType, NG_FACTORY_DEF, {
24262
24350
  get: () => {
24263
24351
  if (ngFactoryDef === null) {
24264
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'NgModule', type: moduleType });
24352
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'NgModule', type: moduleType });
24265
24353
  ngFactoryDef = compiler.compileFactory(angularCoreEnv, `ng:///${moduleType.name}/ɵfac.js`, {
24266
24354
  name: moduleType.name,
24267
24355
  type: moduleType,
@@ -24290,7 +24378,7 @@ function compileNgModuleDefs(moduleType, ngModule, allowDuplicateDeclarationsInR
24290
24378
  (ngModule.exports || EMPTY_ARRAY).map(resolveForwardRef),
24291
24379
  ],
24292
24380
  };
24293
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'NgModule', type: moduleType });
24381
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'NgModule', type: moduleType });
24294
24382
  ngInjectorDef =
24295
24383
  compiler.compileInjector(angularCoreEnv, `ng:///${moduleType.name}/ɵinj.js`, meta);
24296
24384
  }
@@ -24307,7 +24395,7 @@ function isStandalone(type) {
24307
24395
  function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot, importingModule) {
24308
24396
  if (verifiedNgModule.get(moduleType))
24309
24397
  return;
24310
- // skip verifications of standalone components, direcrtives and pipes
24398
+ // skip verifications of standalone components, directives and pipes
24311
24399
  if (isStandalone(moduleType))
24312
24400
  return;
24313
24401
  verifiedNgModule.set(moduleType, true);
@@ -24332,6 +24420,7 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
24332
24420
  const exports = maybeUnwrapFn(ngModuleDef.exports);
24333
24421
  declarations.forEach(verifyDeclarationsHaveDefinitions);
24334
24422
  declarations.forEach(verifyDirectivesHaveSelector);
24423
+ declarations.forEach((declarationType) => verifyNotStandalone(declarationType, moduleType));
24335
24424
  const combinedDeclarations = [
24336
24425
  ...declarations.map(resolveForwardRef),
24337
24426
  ...flatten(imports.map(computeCombinedExports)).map(resolveForwardRef),
@@ -24370,6 +24459,13 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
24370
24459
  errors.push(`Directive ${stringifyForError(type)} has no selector, please add it!`);
24371
24460
  }
24372
24461
  }
24462
+ function verifyNotStandalone(type, moduleType) {
24463
+ type = resolveForwardRef(type);
24464
+ const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type);
24465
+ if (def?.standalone) {
24466
+ errors.push(`Unexpected "${stringifyForError(type)}" declaration in "${stringifyForError(moduleType)}" NgModule. "${stringifyForError(type)}" is marked as standalone and can't be declared in any NgModule - did you intend to import it?`);
24467
+ }
24468
+ }
24373
24469
  function verifyExportsAreDeclaredOrReExported(type) {
24374
24470
  type = resolveForwardRef(type);
24375
24471
  const kind = getComponentDef(type) && 'component' || getDirectiveDef(type) && 'directive' ||
@@ -24402,7 +24498,7 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
24402
24498
  function verifyComponentIsPartOfNgModule(type) {
24403
24499
  type = resolveForwardRef(type);
24404
24500
  const existingModule = ownerNgModule.get(type);
24405
- if (!existingModule) {
24501
+ if (!existingModule && !isStandalone(type)) {
24406
24502
  errors.push(`Component ${stringifyForError(type)} is not part of any NgModule or the module has not been imported into your module.`);
24407
24503
  }
24408
24504
  }
@@ -24411,6 +24507,13 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
24411
24507
  if (!getComponentDef(type)) {
24412
24508
  errors.push(`${stringifyForError(type)} cannot be used as an entry component.`);
24413
24509
  }
24510
+ if (isStandalone(type)) {
24511
+ // Note: this error should be the same as the
24512
+ // `NGMODULE_BOOTSTRAP_IS_STANDALONE` one in AOT compiler.
24513
+ errors.push(`The \`${stringifyForError(type)}\` class is a standalone component, which can ` +
24514
+ `not be used in the \`@NgModule.bootstrap\` array. Use the \`bootstrapApplication\` ` +
24515
+ `function for bootstrap instead.`);
24516
+ }
24414
24517
  }
24415
24518
  function verifyComponentEntryComponentsIsPartOfNgModule(type) {
24416
24519
  type = resolveForwardRef(type);
@@ -24654,12 +24757,6 @@ function expandModuleWithProviders(value) {
24654
24757
  }
24655
24758
  return value;
24656
24759
  }
24657
- function isModuleWithProviders(value) {
24658
- return value.ngModule !== undefined;
24659
- }
24660
- function isNgModule(value) {
24661
- return !!getNgModuleDef(value);
24662
- }
24663
24760
 
24664
24761
  /**
24665
24762
  * @license
@@ -24705,7 +24802,7 @@ function compileComponent(type, metadata) {
24705
24802
  Object.defineProperty(type, NG_COMP_DEF, {
24706
24803
  get: () => {
24707
24804
  if (ngComponentDef === null) {
24708
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'component', type: type });
24805
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'component', type: type });
24709
24806
  if (componentNeedsResolution(metadata)) {
24710
24807
  const error = [`Component '${type.name}' is not resolved:`];
24711
24808
  if (metadata.templateUrl) {
@@ -24816,6 +24913,41 @@ function compileComponent(type, metadata) {
24816
24913
  configurable: !!ngDevMode,
24817
24914
  });
24818
24915
  }
24916
+ function getDependencyTypeForError(type) {
24917
+ if (getComponentDef(type))
24918
+ return 'component';
24919
+ if (getDirectiveDef(type))
24920
+ return 'directive';
24921
+ if (getPipeDef$1(type))
24922
+ return 'pipe';
24923
+ return 'type';
24924
+ }
24925
+ function verifyStandaloneImport(depType, importingType) {
24926
+ if (isForwardRef(depType)) {
24927
+ depType = resolveForwardRef(depType);
24928
+ if (!depType) {
24929
+ throw new Error(`Expected forwardRef function, imported from "${stringifyForError(importingType)}", to return a standalone entity or NgModule but got "${stringifyForError(depType) || depType}".`);
24930
+ }
24931
+ }
24932
+ if (getNgModuleDef(depType) == null) {
24933
+ const def = getComponentDef(depType) || getDirectiveDef(depType) || getPipeDef$1(depType);
24934
+ if (def != null) {
24935
+ // if a component, directive or pipe is imported make sure that it is standalone
24936
+ if (!def.standalone) {
24937
+ throw new Error(`The "${stringifyForError(depType)}" ${getDependencyTypeForError(depType)}, imported from "${stringifyForError(importingType)}", is not standalone. Did you forget to add the standalone: true flag?`);
24938
+ }
24939
+ }
24940
+ else {
24941
+ // it can be either a module with provider or an unknown (not annotated) type
24942
+ if (isModuleWithProviders(depType)) {
24943
+ throw new Error(`A module with providers was imported from "${stringifyForError(importingType)}". Modules with providers are not supported in standalone components imports.`);
24944
+ }
24945
+ else {
24946
+ throw new Error(`The "${stringifyForError(depType)}" type, imported from "${stringifyForError(importingType)}", must be a standalone component / directive / pipe or an NgModule. Did you forget to add the required @Component / @Directive / @Pipe or @NgModule annotation?`);
24947
+ }
24948
+ }
24949
+ }
24950
+ }
24819
24951
  /**
24820
24952
  * Build memoized `directiveDefs` and `pipeDefs` functions for the component definition of a
24821
24953
  * standalone component, which process `imports` and filter out directives and pipes. The use of
@@ -24831,6 +24963,7 @@ function getStandaloneDefFunctions(type, imports) {
24831
24963
  // definition in its `directiveDefs`.
24832
24964
  cachedDirectiveDefs = [getComponentDef(type)];
24833
24965
  for (const rawDep of imports) {
24966
+ ngDevMode && verifyStandaloneImport(rawDep, type);
24834
24967
  const dep = resolveForwardRef(rawDep);
24835
24968
  if (!!getNgModuleDef(dep)) {
24836
24969
  const scope = transitiveScopesFor(dep);
@@ -24895,7 +25028,7 @@ function compileDirective(type, directive) {
24895
25028
  // that use `@Directive()` with no selector. In that case, pass empty object to the
24896
25029
  // `directiveMetadata` function instead of null.
24897
25030
  const meta = getDirectiveMetadata(type, directive || {});
24898
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'directive', type });
25031
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'directive', type });
24899
25032
  ngDirectiveDef =
24900
25033
  compiler.compileDirective(angularCoreEnv, meta.sourceMapUrl, meta.metadata);
24901
25034
  }
@@ -24908,7 +25041,7 @@ function compileDirective(type, directive) {
24908
25041
  function getDirectiveMetadata(type, metadata) {
24909
25042
  const name = type && type.name;
24910
25043
  const sourceMapUrl = `ng:///${name}/ɵdir.js`;
24911
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'directive', type });
25044
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'directive', type });
24912
25045
  const facade = directiveMetadata(type, metadata);
24913
25046
  facade.typeSourceSpan = compiler.createParseSourceSpan('Directive', name, sourceMapUrl);
24914
25047
  if (facade.usesInheritance) {
@@ -24922,7 +25055,7 @@ function addDirectiveFactoryDef(type, metadata) {
24922
25055
  get: () => {
24923
25056
  if (ngFactoryDef === null) {
24924
25057
  const meta = getDirectiveMetadata(type, metadata);
24925
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'directive', type });
25058
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'directive', type });
24926
25059
  ngFactoryDef = compiler.compileFactory(angularCoreEnv, `ng:///${type.name}/ɵfac.js`, {
24927
25060
  name: meta.metadata.name,
24928
25061
  type: meta.metadata.type,
@@ -25074,7 +25207,7 @@ function compilePipe(type, meta) {
25074
25207
  get: () => {
25075
25208
  if (ngFactoryDef === null) {
25076
25209
  const metadata = getPipeMetadata(type, meta);
25077
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'pipe', type: metadata.type });
25210
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'pipe', type: metadata.type });
25078
25211
  ngFactoryDef = compiler.compileFactory(angularCoreEnv, `ng:///${metadata.name}/ɵfac.js`, {
25079
25212
  name: metadata.name,
25080
25213
  type: metadata.type,
@@ -25092,7 +25225,7 @@ function compilePipe(type, meta) {
25092
25225
  get: () => {
25093
25226
  if (ngPipeDef === null) {
25094
25227
  const metadata = getPipeMetadata(type, meta);
25095
- const compiler = getCompilerFacade({ usage: 0 /* Decorator */, kind: 'pipe', type: metadata.type });
25228
+ const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'pipe', type: metadata.type });
25096
25229
  ngPipeDef =
25097
25230
  compiler.compilePipe(angularCoreEnv, `ng:///${metadata.name}/ɵpipe.js`, metadata);
25098
25231
  }
@@ -26546,7 +26679,7 @@ function compileNgModuleFactory(injector, options, moduleType) {
26546
26679
  return Promise.resolve(moduleFactory);
26547
26680
  }
26548
26681
  const compiler = getCompilerFacade({
26549
- usage: 0 /* Decorator */,
26682
+ usage: 0 /* JitCompilerUsage.Decorator */,
26550
26683
  kind: 'NgModule',
26551
26684
  type: moduleType,
26552
26685
  });
@@ -26585,7 +26718,7 @@ function createPlatform(injector) {
26585
26718
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
26586
26719
  'There can be only one platform. Destroy the previous one to create a new one.' :
26587
26720
  '';
26588
- throw new RuntimeError(400 /* MULTIPLE_PLATFORMS */, errorMessage);
26721
+ throw new RuntimeError(400 /* RuntimeErrorCode.MULTIPLE_PLATFORMS */, errorMessage);
26589
26722
  }
26590
26723
  publishDefaultGlobalUtils();
26591
26724
  _platformInjector = injector;
@@ -26641,7 +26774,7 @@ function bootstrapApplication(config) {
26641
26774
  const appInjector = createEnvironmentInjector(allAppProviders, platformInjector, 'Environment Injector');
26642
26775
  const exceptionHandler = appInjector.get(ErrorHandler, null);
26643
26776
  if (NG_DEV_MODE && !exceptionHandler) {
26644
- throw new RuntimeError(402 /* ERROR_HANDLER_NOT_FOUND */, 'No `ErrorHandler` found in the Dependency Injection tree.');
26777
+ throw new RuntimeError(402 /* RuntimeErrorCode.ERROR_HANDLER_NOT_FOUND */, 'No `ErrorHandler` found in the Dependency Injection tree.');
26645
26778
  }
26646
26779
  let onErrorSubscription;
26647
26780
  ngZone.runOutsideAngular(() => {
@@ -26706,11 +26839,11 @@ function assertPlatform(requiredToken) {
26706
26839
  const platform = getPlatform();
26707
26840
  if (!platform) {
26708
26841
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ? 'No platform exists!' : '';
26709
- throw new RuntimeError(401 /* PLATFORM_NOT_FOUND */, errorMessage);
26842
+ throw new RuntimeError(401 /* RuntimeErrorCode.PLATFORM_NOT_FOUND */, errorMessage);
26710
26843
  }
26711
26844
  if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
26712
26845
  !platform.injector.get(requiredToken, null)) {
26713
- throw new RuntimeError(400 /* MULTIPLE_PLATFORMS */, 'A platform with a different configuration has been created. Please destroy it first.');
26846
+ throw new RuntimeError(400 /* RuntimeErrorCode.MULTIPLE_PLATFORMS */, 'A platform with a different configuration has been created. Please destroy it first.');
26714
26847
  }
26715
26848
  return platform;
26716
26849
  }
@@ -26787,7 +26920,7 @@ class PlatformRef {
26787
26920
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
26788
26921
  'No ErrorHandler. Is platform module (BrowserModule) included?' :
26789
26922
  '';
26790
- throw new RuntimeError(402 /* ERROR_HANDLER_NOT_FOUND */, errorMessage);
26923
+ throw new RuntimeError(402 /* RuntimeErrorCode.ERROR_HANDLER_NOT_FOUND */, errorMessage);
26791
26924
  }
26792
26925
  ngZone.runOutsideAngular(() => {
26793
26926
  const subscription = ngZone.onError.subscribe({
@@ -26848,7 +26981,7 @@ class PlatformRef {
26848
26981
  `but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. ` +
26849
26982
  `Please define one of these.` :
26850
26983
  '';
26851
- throw new RuntimeError(403 /* BOOTSTRAP_COMPONENTS_NOT_FOUND */, errorMessage);
26984
+ throw new RuntimeError(403 /* RuntimeErrorCode.BOOTSTRAP_COMPONENTS_NOT_FOUND */, errorMessage);
26852
26985
  }
26853
26986
  this._modules.push(moduleRef);
26854
26987
  }
@@ -26874,7 +27007,7 @@ class PlatformRef {
26874
27007
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
26875
27008
  'The platform has already been destroyed!' :
26876
27009
  '';
26877
- throw new RuntimeError(404 /* PLATFORM_ALREADY_DESTROYED */, errorMessage);
27010
+ throw new RuntimeError(404 /* RuntimeErrorCode.PLATFORM_ALREADY_DESTROYED */, errorMessage);
26878
27011
  }
26879
27012
  this._modules.slice().forEach(module => module.destroy());
26880
27013
  this._destroyListeners.forEach(listener => listener());
@@ -27114,6 +27247,10 @@ class ApplicationRef {
27114
27247
  get destroyed() {
27115
27248
  return this._destroyed;
27116
27249
  }
27250
+ /** @internal */
27251
+ get injector() {
27252
+ return this._injector;
27253
+ }
27117
27254
  /**
27118
27255
  * Bootstrap a component onto the element identified by its selector or, optionally, to a
27119
27256
  * specified element.
@@ -27159,7 +27296,7 @@ class ApplicationRef {
27159
27296
  const errorMessage = 'Cannot bootstrap as there are still asynchronous initializers running.' +
27160
27297
  (standalone ? '' :
27161
27298
  ' Bootstrap components in the `ngDoBootstrap` method of the root module.');
27162
- throw new RuntimeError(405 /* ASYNC_INITIALIZERS_STILL_RUNNING */, NG_DEV_MODE && errorMessage);
27299
+ throw new RuntimeError(405 /* RuntimeErrorCode.ASYNC_INITIALIZERS_STILL_RUNNING */, NG_DEV_MODE && errorMessage);
27163
27300
  }
27164
27301
  let componentFactory;
27165
27302
  if (isComponentFactory) {
@@ -27210,7 +27347,7 @@ class ApplicationRef {
27210
27347
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
27211
27348
  'ApplicationRef.tick is called recursively' :
27212
27349
  '';
27213
- throw new RuntimeError(101 /* RECURSIVE_APPLICATION_REF_TICK */, errorMessage);
27350
+ throw new RuntimeError(101 /* RuntimeErrorCode.RECURSIVE_APPLICATION_REF_TICK */, errorMessage);
27214
27351
  }
27215
27352
  try {
27216
27353
  this._runningTick = true;
@@ -27292,9 +27429,14 @@ class ApplicationRef {
27292
27429
  this._destroyListeners.push(callback);
27293
27430
  return () => remove(this._destroyListeners, callback);
27294
27431
  }
27432
+ /**
27433
+ * Destroys an Angular application represented by this `ApplicationRef`. Calling this function
27434
+ * will destroy the associated environnement injectors as well as all the bootstrapped components
27435
+ * with their views.
27436
+ */
27295
27437
  destroy() {
27296
27438
  if (this._destroyed) {
27297
- throw new RuntimeError(406 /* APPLICATION_REF_ALREADY_DESTROYED */, NG_DEV_MODE && 'This instance of the `ApplicationRef` has already been destroyed.');
27439
+ throw new RuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, NG_DEV_MODE && 'This instance of the `ApplicationRef` has already been destroyed.');
27298
27440
  }
27299
27441
  const injector = this._injector;
27300
27442
  // Check that this injector instance supports destroy operation.
@@ -27312,7 +27454,7 @@ class ApplicationRef {
27312
27454
  }
27313
27455
  warnIfDestroyed() {
27314
27456
  if (NG_DEV_MODE && this._destroyed) {
27315
- console.warn(formatRuntimeError(406 /* APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));
27457
+ console.warn(formatRuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));
27316
27458
  }
27317
27459
  }
27318
27460
  }
@@ -27504,7 +27646,7 @@ class ChangeDetectorRef {
27504
27646
  ChangeDetectorRef.__NG_ELEMENT_ID__ = injectChangeDetectorRef;
27505
27647
  /** Returns a ChangeDetectorRef (a.k.a. a ViewRef) */
27506
27648
  function injectChangeDetectorRef(flags) {
27507
- return createViewRef(getCurrentTNode(), getLView(), (flags & 16 /* ForPipe */) === 16 /* ForPipe */);
27649
+ return createViewRef(getCurrentTNode(), getLView(), (flags & 16 /* InternalInjectFlags.ForPipe */) === 16 /* InternalInjectFlags.ForPipe */);
27508
27650
  }
27509
27651
  /**
27510
27652
  * Creates a ViewRef and stores it on the injector as ChangeDetectorRef (public alias).
@@ -27521,7 +27663,7 @@ function createViewRef(tNode, lView, isPipe) {
27521
27663
  const componentView = getComponentLViewByIndex(tNode.index, lView); // look down
27522
27664
  return new ViewRef$1(componentView, componentView);
27523
27665
  }
27524
- else if (tNode.type & (3 /* AnyRNode */ | 12 /* AnyContainer */ | 32 /* Icu */)) {
27666
+ else if (tNode.type & (3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 32 /* TNodeType.Icu */)) {
27525
27667
  // The LView represents the location where the injection is requested from.
27526
27668
  // We need to locate the containing LView (in case where the `lView` is an embedded view)
27527
27669
  const hostComponentView = lView[DECLARATION_COMPONENT_VIEW]; // look up
@@ -27996,7 +28138,7 @@ function _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, root
27996
28138
  ngDevMode && assertTNodeForLView(tNode, lView);
27997
28139
  const nativeNode = getNativeByTNodeOrNull(tNode, lView);
27998
28140
  // For each type of TNode, specific logic is executed.
27999
- if (tNode.type & (3 /* AnyRNode */ | 8 /* ElementContainer */)) {
28141
+ if (tNode.type & (3 /* TNodeType.AnyRNode */ | 8 /* TNodeType.ElementContainer */)) {
28000
28142
  // Case 1: the TNode is an element
28001
28143
  // The native node has to be checked.
28002
28144
  _addQueryMatch(nativeNode, predicate, matches, elementsOnly, rootNativeNode);
@@ -28030,7 +28172,7 @@ function _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, root
28030
28172
  _queryNodeChildrenInContainer(nodeOrContainer, predicate, matches, elementsOnly, rootNativeNode);
28031
28173
  }
28032
28174
  }
28033
- else if (tNode.type & 4 /* Container */) {
28175
+ else if (tNode.type & 4 /* TNodeType.Container */) {
28034
28176
  // Case 2: the TNode is a container
28035
28177
  // The native node has to be checked.
28036
28178
  const lContainer = lView[tNode.index];
@@ -28038,7 +28180,7 @@ function _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, root
28038
28180
  // Each view inside the container has to be processed.
28039
28181
  _queryNodeChildrenInContainer(lContainer, predicate, matches, elementsOnly, rootNativeNode);
28040
28182
  }
28041
- else if (tNode.type & 16 /* Projection */) {
28183
+ else if (tNode.type & 16 /* TNodeType.Projection */) {
28042
28184
  // Case 3: the TNode is a projection insertion point (i.e. a <ng-content>).
28043
28185
  // The nodes projected at this location all need to be processed.
28044
28186
  const componentView = lView[DECLARATION_COMPONENT_VIEW];
@@ -28063,7 +28205,7 @@ function _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, root
28063
28205
  if (rootNativeNode !== nativeNode) {
28064
28206
  // To determine the next node to be processed, we need to use the next or the projectionNext
28065
28207
  // link, depending on whether the current node has been projected.
28066
- const nextTNode = (tNode.flags & 4 /* isProjected */) ? tNode.projectionNext : tNode.next;
28208
+ const nextTNode = (tNode.flags & 4 /* TNodeFlags.isProjected */) ? tNode.projectionNext : tNode.next;
28067
28209
  if (nextTNode) {
28068
28210
  _queryNodeChildren(nextTNode, lView, predicate, matches, elementsOnly, rootNativeNode);
28069
28211
  }
@@ -28334,7 +28476,7 @@ class DefaultIterableDiffer {
28334
28476
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
28335
28477
  `Error trying to diff '${stringify(collection)}'. Only arrays and iterables are allowed` :
28336
28478
  '';
28337
- throw new RuntimeError(900 /* INVALID_DIFFER_INPUT */, errorMessage);
28479
+ throw new RuntimeError(900 /* RuntimeErrorCode.INVALID_DIFFER_INPUT */, errorMessage);
28338
28480
  }
28339
28481
  if (this.check(collection)) {
28340
28482
  return this;
@@ -28938,7 +29080,7 @@ class DefaultKeyValueDiffer {
28938
29080
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
28939
29081
  `Error trying to diff '${stringify(map)}'. Only maps and objects are allowed` :
28940
29082
  '';
28941
- throw new RuntimeError(900 /* INVALID_DIFFER_INPUT */, errorMessage);
29083
+ throw new RuntimeError(900 /* RuntimeErrorCode.INVALID_DIFFER_INPUT */, errorMessage);
28942
29084
  }
28943
29085
  return this.check(map) ? this : null;
28944
29086
  }
@@ -29188,7 +29330,7 @@ class IterableDiffers {
29188
29330
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
29189
29331
  `Cannot find a differ supporting object '${iterable}' of type '${getTypeNameForDebugging(iterable)}'` :
29190
29332
  '';
29191
- throw new RuntimeError(901 /* NO_SUPPORTING_DIFFER_FACTORY */, errorMessage);
29333
+ throw new RuntimeError(901 /* RuntimeErrorCode.NO_SUPPORTING_DIFFER_FACTORY */, errorMessage);
29192
29334
  }
29193
29335
  }
29194
29336
  }
@@ -29265,7 +29407,7 @@ class KeyValueDiffers {
29265
29407
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
29266
29408
  `Cannot find a differ supporting object '${kv}'` :
29267
29409
  '';
29268
- throw new RuntimeError(901 /* NO_SUPPORTING_DIFFER_FACTORY */, errorMessage);
29410
+ throw new RuntimeError(901 /* RuntimeErrorCode.NO_SUPPORTING_DIFFER_FACTORY */, errorMessage);
29269
29411
  }
29270
29412
  }
29271
29413
  /** @nocollapse */
@@ -29371,7 +29513,7 @@ const ɵivyEnabled = true;
29371
29513
  * @codeGenApi
29372
29514
  */
29373
29515
  function ɵɵngDeclareDirective(decl) {
29374
- const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'directive', type: decl.type });
29516
+ const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'directive', type: decl.type });
29375
29517
  return compiler.compileDirectiveDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵfac.js`, decl);
29376
29518
  }
29377
29519
  /**
@@ -29388,7 +29530,7 @@ function ɵɵngDeclareClassMetadata(decl) {
29388
29530
  * @codeGenApi
29389
29531
  */
29390
29532
  function ɵɵngDeclareComponent(decl) {
29391
- const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'component', type: decl.type });
29533
+ const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'component', type: decl.type });
29392
29534
  return compiler.compileComponentDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵcmp.js`, decl);
29393
29535
  }
29394
29536
  /**
@@ -29398,7 +29540,7 @@ function ɵɵngDeclareComponent(decl) {
29398
29540
  */
29399
29541
  function ɵɵngDeclareFactory(decl) {
29400
29542
  const compiler = getCompilerFacade({
29401
- usage: 1 /* PartialDeclaration */,
29543
+ usage: 1 /* JitCompilerUsage.PartialDeclaration */,
29402
29544
  kind: getFactoryKind(decl.target),
29403
29545
  type: decl.type
29404
29546
  });
@@ -29424,7 +29566,7 @@ function getFactoryKind(target) {
29424
29566
  * @codeGenApi
29425
29567
  */
29426
29568
  function ɵɵngDeclareInjectable(decl) {
29427
- const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'injectable', type: decl.type });
29569
+ const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'injectable', type: decl.type });
29428
29570
  return compiler.compileInjectableDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵprov.js`, decl);
29429
29571
  }
29430
29572
  /**
@@ -29433,7 +29575,7 @@ function ɵɵngDeclareInjectable(decl) {
29433
29575
  * @codeGenApi
29434
29576
  */
29435
29577
  function ɵɵngDeclareInjector(decl) {
29436
- const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'NgModule', type: decl.type });
29578
+ const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'NgModule', type: decl.type });
29437
29579
  return compiler.compileInjectorDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵinj.js`, decl);
29438
29580
  }
29439
29581
  /**
@@ -29442,7 +29584,7 @@ function ɵɵngDeclareInjector(decl) {
29442
29584
  * @codeGenApi
29443
29585
  */
29444
29586
  function ɵɵngDeclareNgModule(decl) {
29445
- const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'NgModule', type: decl.type });
29587
+ const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'NgModule', type: decl.type });
29446
29588
  return compiler.compileNgModuleDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵmod.js`, decl);
29447
29589
  }
29448
29590
  /**
@@ -29451,7 +29593,7 @@ function ɵɵngDeclareNgModule(decl) {
29451
29593
  * @codeGenApi
29452
29594
  */
29453
29595
  function ɵɵngDeclarePipe(decl) {
29454
- const compiler = getCompilerFacade({ usage: 1 /* PartialDeclaration */, kind: 'pipe', type: decl.type });
29596
+ const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'pipe', type: decl.type });
29455
29597
  return compiler.compilePipeDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵpipe.js`, decl);
29456
29598
  }
29457
29599
 
@@ -29505,5 +29647,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
29505
29647
  * Generated bundle index. Do not edit.
29506
29648
  */
29507
29649
 
29508
- 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, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, INJECTOR_INITIALIZER, 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, createEnvironmentInjector, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, platformCore, 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, ViewRef$1 as ɵViewRef, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, bootstrapApplication as ɵbootstrapApplication, 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, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, 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, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isStandalone as ɵisStandalone, isSubscribable as ɵisSubscribable, ɵivyEnabled, makeDecorator as ɵmakeDecorator, markDirty as ɵmarkDirty, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, renderComponent as ɵrenderComponent, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, whenRendered as ɵwhenRendered, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵ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 };
29650
+ 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, createEnvironmentInjector, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, platformCore, 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, ViewRef$1 as ɵViewRef, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, bootstrapApplication as ɵbootstrapApplication, 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, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, 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, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isStandalone as ɵisStandalone, isSubscribable as ɵisSubscribable, ɵivyEnabled, makeDecorator as ɵmakeDecorator, markDirty as ɵmarkDirty, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, renderComponent as ɵrenderComponent, 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, whenRendered as ɵwhenRendered, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵ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 };
29509
29651
  //# sourceMappingURL=core.mjs.map