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

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 (41) hide show
  1. package/esm2020/src/application_ref.mjs +98 -22
  2. package/esm2020/src/core_private_export.mjs +2 -2
  3. package/esm2020/src/core_render3_private_export.mjs +3 -2
  4. package/esm2020/src/di/create_injector.mjs +36 -0
  5. package/esm2020/src/di/index.mjs +4 -2
  6. package/esm2020/src/di/initializer_token.mjs +16 -0
  7. package/esm2020/src/di/injector.mjs +2 -2
  8. package/esm2020/src/di/injector_compatibility.mjs +1 -3
  9. package/esm2020/src/di/interface/defs.mjs +1 -1
  10. package/esm2020/src/di/interface/provider.mjs +1 -1
  11. package/esm2020/src/di/internal_tokens.mjs +10 -0
  12. package/esm2020/src/di/provider_collection.mjs +209 -0
  13. package/esm2020/src/di/r3_injector.mjs +7 -185
  14. package/esm2020/src/errors.mjs +1 -1
  15. package/esm2020/src/metadata/directives.mjs +1 -1
  16. package/esm2020/src/metadata/ng_module.mjs +1 -1
  17. package/esm2020/src/metadata.mjs +1 -1
  18. package/esm2020/src/render3/component_ref.mjs +5 -1
  19. package/esm2020/src/render3/definition.mjs +3 -1
  20. package/esm2020/src/render3/di_setup.mjs +3 -2
  21. package/esm2020/src/render3/errors.mjs +16 -1
  22. package/esm2020/src/render3/features/standalone_feature.mjs +65 -3
  23. package/esm2020/src/render3/interfaces/definition.mjs +1 -1
  24. package/esm2020/src/render3/jit/directive.mjs +92 -6
  25. package/esm2020/src/render3/jit/module.mjs +64 -17
  26. package/esm2020/src/render3/jit/pipe.mjs +2 -4
  27. package/esm2020/src/render3/ng_module_ref.mjs +3 -2
  28. package/esm2020/src/util/global.mjs +8 -8
  29. package/esm2020/src/version.mjs +1 -1
  30. package/esm2020/testing/src/logger.mjs +3 -3
  31. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  32. package/fesm2015/core.mjs +735 -376
  33. package/fesm2015/core.mjs.map +1 -1
  34. package/fesm2015/testing.mjs +1 -1
  35. package/fesm2020/core.mjs +734 -375
  36. package/fesm2020/core.mjs.map +1 -1
  37. package/fesm2020/testing.mjs +1 -1
  38. package/{core.d.ts → index.d.ts} +14716 -14668
  39. package/package.json +4 -4
  40. package/testing/{testing.d.ts → index.d.ts} +537 -536
  41. package/testing/package.json +0 -9
package/fesm2015/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.0.0-next.14
2
+ * @license Angular v14.0.0-next.15
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -725,15 +725,15 @@ var ViewEncapsulation$1;
725
725
  * Use of this source code is governed by an MIT-style license that can be
726
726
  * found in the LICENSE file at https://angular.io/license
727
727
  */
728
- const __globalThis = typeof globalThis !== 'undefined' && globalThis;
729
- const __window = typeof window !== 'undefined' && window;
730
- const __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&
731
- self instanceof WorkerGlobalScope && self;
732
- const __global = typeof global !== 'undefined' && global;
733
728
  // Always use __globalThis if available, which is the spec-defined global variable across all
734
729
  // environments, then fallback to __global first, because in Node tests both __global and
735
- // __window may be defined and _global should be __global in that case.
736
- const _global = __globalThis || __global || __window || __self;
730
+ // __window may be defined and _global should be __global in that case. Note: Typeof/Instanceof
731
+ // checks are considered side-effects in Terser. We explicitly mark this as side-effect free:
732
+ // https://github.com/terser/terser/issues/250.
733
+ const _global = ( /* @__PURE__ */(() => (typeof globalThis !== 'undefined' && globalThis) ||
734
+ (typeof global !== 'undefined' && global) || (typeof window !== 'undefined' && window) ||
735
+ (typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&
736
+ self instanceof WorkerGlobalScope && self))());
737
737
 
738
738
  /**
739
739
  * @license
@@ -906,6 +906,8 @@ function ɵɵdefineComponent(componentDefinition) {
906
906
  directiveDefs: null,
907
907
  pipeDefs: null,
908
908
  standalone: componentDefinition.standalone === true,
909
+ dependencies: componentDefinition.standalone === true && componentDefinition.dependencies || null,
910
+ getStandaloneInjector: null,
909
911
  selectors: componentDefinition.selectors || EMPTY_ARRAY,
910
912
  viewQuery: componentDefinition.viewQuery || null,
911
913
  features: componentDefinition.features || null,
@@ -4807,7 +4809,6 @@ const NG_TOKEN_PATH = 'ngTokenPath';
4807
4809
  const NEW_LINE = /\n/gm;
4808
4810
  const NO_NEW_LINE = 'ɵ';
4809
4811
  const SOURCE = '__source';
4810
- const USE_VALUE$1 = getClosureSafeProperty({ provide: String, useValue: getClosureSafeProperty });
4811
4812
  /**
4812
4813
  * Current injector value used by `inject`.
4813
4814
  * - `undefined`: it is an error to call `inject`
@@ -6912,6 +6913,20 @@ function maybeUnwrapFn(value) {
6912
6913
  * Use of this source code is governed by an MIT-style license that can be
6913
6914
  * found in the LICENSE file at https://angular.io/license
6914
6915
  */
6916
+ /** Verifies that a given type is a Standalone Component. */
6917
+ function assertStandaloneComponentType(type) {
6918
+ const componentDef = getComponentDef(type);
6919
+ if (!componentDef) {
6920
+ throw new RuntimeError(906 /* MISSING_GENERATED_DEF */, `The ${stringifyForError(type)} is not an Angular component, ` +
6921
+ `make sure it has the \`@Component\` decorator.`);
6922
+ }
6923
+ if (!componentDef.standalone) {
6924
+ throw new RuntimeError(907 /* TYPE_IS_NOT_STANDALONE */, `The ${stringifyForError(type)} component is not marked as standalone, ` +
6925
+ `but Angular expects to have a standalone component here. ` +
6926
+ `Please make sure the ${stringifyForError(type)} component has ` +
6927
+ `the \`standalone: true\` flag in the decorator.`);
6928
+ }
6929
+ }
6915
6930
  /** Called when there are multiple component selectors that match a given node */
6916
6931
  function throwMultipleComponentError(tNode, first, second) {
6917
6932
  throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}: ` +
@@ -11326,6 +11341,235 @@ function tick(component) {
11326
11341
  tickRootContext(rootContext);
11327
11342
  }
11328
11343
 
11344
+ /**
11345
+ * @license
11346
+ * Copyright Google LLC All Rights Reserved.
11347
+ *
11348
+ * Use of this source code is governed by an MIT-style license that can be
11349
+ * found in the LICENSE file at https://angular.io/license
11350
+ */
11351
+
11352
+ /**
11353
+ * @license
11354
+ * Copyright Google LLC All Rights Reserved.
11355
+ *
11356
+ * Use of this source code is governed by an MIT-style license that can be
11357
+ * found in the LICENSE file at https://angular.io/license
11358
+ */
11359
+ /**
11360
+ * A multi-provider token for initialization functions that will run upon construction of a
11361
+ * non-view injector.
11362
+ *
11363
+ * @publicApi
11364
+ */
11365
+ const INJECTOR_INITIALIZER = new InjectionToken('INJECTOR_INITIALIZER');
11366
+
11367
+ /**
11368
+ * @license
11369
+ * Copyright Google LLC All Rights Reserved.
11370
+ *
11371
+ * Use of this source code is governed by an MIT-style license that can be
11372
+ * found in the LICENSE file at https://angular.io/license
11373
+ */
11374
+ const INJECTOR_DEF_TYPES = new InjectionToken('INJECTOR_DEF_TYPES');
11375
+
11376
+ /**
11377
+ * @license
11378
+ * Copyright Google LLC All Rights Reserved.
11379
+ *
11380
+ * Use of this source code is governed by an MIT-style license that can be
11381
+ * found in the LICENSE file at https://angular.io/license
11382
+ */
11383
+ /**
11384
+ * Collects providers from all NgModules and standalone components, including transitively imported
11385
+ * ones.
11386
+ *
11387
+ * @returns The list of collected providers from the specified list of types.
11388
+ * @publicApi
11389
+ */
11390
+ function importProvidersFrom(...sources) {
11391
+ const providersOut = [];
11392
+ const dedup = new Set(); // already seen types
11393
+ let injectorTypesWithProviders;
11394
+ deepForEach(sources, source => {
11395
+ // Narrow `source` to access the internal type analogue for `ModuleWithProviders`.
11396
+ const internalSource = source;
11397
+ if (walkProviderTree(internalSource, providersOut, [], dedup)) {
11398
+ injectorTypesWithProviders || (injectorTypesWithProviders = []);
11399
+ injectorTypesWithProviders.push(internalSource);
11400
+ }
11401
+ });
11402
+ // Collect all providers from `ModuleWithProviders` types.
11403
+ if (injectorTypesWithProviders !== undefined) {
11404
+ processInjectorTypesWithProviders(injectorTypesWithProviders, providersOut);
11405
+ }
11406
+ return providersOut;
11407
+ }
11408
+ /**
11409
+ * Collects all providers from the list of `ModuleWithProviders` and appends them to the provided
11410
+ * array.
11411
+ */
11412
+ function processInjectorTypesWithProviders(typesWithProviders, providersOut) {
11413
+ for (let i = 0; i < typesWithProviders.length; i++) {
11414
+ const { ngModule, providers } = typesWithProviders[i];
11415
+ deepForEach(providers, provider => {
11416
+ ngDevMode && validateProvider(provider, providers || EMPTY_ARRAY, ngModule);
11417
+ providersOut.push(provider);
11418
+ });
11419
+ }
11420
+ }
11421
+ /**
11422
+ * The logic visits an `InjectorType`, an `InjectorTypeWithProviders`, or a standalone
11423
+ * `ComponentType`, and all of its transitive providers and collects providers.
11424
+ *
11425
+ * If an `InjectorTypeWithProviders` that declares providers besides the type is specified,
11426
+ * the function will return "true" to indicate that the providers of the type definition need
11427
+ * to be processed. This allows us to process providers of injector types after all imports of
11428
+ * an injector definition are processed. (following View Engine semantics: see FW-1349)
11429
+ */
11430
+ function walkProviderTree(container, providersOut, parents, dedup) {
11431
+ container = resolveForwardRef(container);
11432
+ if (!container)
11433
+ return false;
11434
+ // The actual type which had the definition. Usually `container`, but may be an unwrapped type
11435
+ // from `InjectorTypeWithProviders`.
11436
+ let defType = null;
11437
+ let injDef = getInjectorDef(container);
11438
+ const cmpDef = !injDef && getComponentDef(container);
11439
+ if (!injDef && !cmpDef) {
11440
+ // `container` is not an injector type or a component type. It might be:
11441
+ // * An `InjectorTypeWithProviders` that wraps an injector type.
11442
+ // * A standalone directive or pipe that got pulled in from a standalone component's
11443
+ // dependencies.
11444
+ // Try to unwrap it as an `InjectorTypeWithProviders` first.
11445
+ const ngModule = container.ngModule;
11446
+ injDef = getInjectorDef(ngModule);
11447
+ if (injDef) {
11448
+ defType = ngModule;
11449
+ }
11450
+ else {
11451
+ // Not a component or injector type, so ignore it.
11452
+ return false;
11453
+ }
11454
+ }
11455
+ else if (cmpDef && !cmpDef.standalone) {
11456
+ return false;
11457
+ }
11458
+ else {
11459
+ defType = container;
11460
+ }
11461
+ // Check for circular dependencies.
11462
+ if (ngDevMode && parents.indexOf(defType) !== -1) {
11463
+ const defName = stringify(defType);
11464
+ const path = parents.map(stringify);
11465
+ throwCyclicDependencyError(defName, path);
11466
+ }
11467
+ // Check for multiple imports of the same module
11468
+ const isDuplicate = dedup.has(defType);
11469
+ if (cmpDef) {
11470
+ if (isDuplicate) {
11471
+ // This component definition has already been processed.
11472
+ return false;
11473
+ }
11474
+ dedup.add(defType);
11475
+ if (cmpDef.dependencies) {
11476
+ const deps = typeof cmpDef.dependencies === 'function' ? cmpDef.dependencies() : cmpDef.dependencies;
11477
+ for (const dep of deps) {
11478
+ walkProviderTree(dep, providersOut, parents, dedup);
11479
+ }
11480
+ }
11481
+ }
11482
+ else if (injDef) {
11483
+ // First, include providers from any imports.
11484
+ if (injDef.imports != null && !isDuplicate) {
11485
+ // Before processing defType's imports, add it to the set of parents. This way, if it ends
11486
+ // up deeply importing itself, this can be detected.
11487
+ ngDevMode && parents.push(defType);
11488
+ // Add it to the set of dedups. This way we can detect multiple imports of the same module
11489
+ dedup.add(defType);
11490
+ let importTypesWithProviders;
11491
+ try {
11492
+ deepForEach(injDef.imports, imported => {
11493
+ if (walkProviderTree(imported, providersOut, parents, dedup)) {
11494
+ importTypesWithProviders || (importTypesWithProviders = []);
11495
+ // If the processed import is an injector type with providers, we store it in the
11496
+ // list of import types with providers, so that we can process those afterwards.
11497
+ importTypesWithProviders.push(imported);
11498
+ }
11499
+ });
11500
+ }
11501
+ finally {
11502
+ // Remove it from the parents set when finished.
11503
+ ngDevMode && parents.pop();
11504
+ }
11505
+ // Imports which are declared with providers (TypeWithProviders) need to be processed
11506
+ // after all imported modules are processed. This is similar to how View Engine
11507
+ // processes/merges module imports in the metadata resolver. See: FW-1349.
11508
+ if (importTypesWithProviders !== undefined) {
11509
+ processInjectorTypesWithProviders(importTypesWithProviders, providersOut);
11510
+ }
11511
+ }
11512
+ if (!isDuplicate) {
11513
+ // Track the InjectorType and add a provider for it.
11514
+ // It's important that this is done after the def's imports.
11515
+ const factory = getFactoryDef(defType) || (() => new defType());
11516
+ // Append extra providers to make more info available for consumers (to retrieve an injector
11517
+ // type), as well as internally (to calculate an injection scope correctly and eagerly
11518
+ // instantiate a `defType` when an injector is created).
11519
+ providersOut.push(
11520
+ // Provider to create `defType` using its factory.
11521
+ { provide: defType, useFactory: factory, deps: EMPTY_ARRAY },
11522
+ // Make this `defType` available to an internal logic that calculates injector scope.
11523
+ { provide: INJECTOR_DEF_TYPES, useValue: defType, multi: true },
11524
+ // Provider to eagerly instantiate `defType` via `INJECTOR_INITIALIZER`.
11525
+ { provide: INJECTOR_INITIALIZER, useValue: () => ɵɵinject(defType), multi: true } //
11526
+ );
11527
+ }
11528
+ // Next, include providers listed on the definition itself.
11529
+ const defProviders = injDef.providers;
11530
+ if (defProviders != null && !isDuplicate) {
11531
+ const injectorType = container;
11532
+ deepForEach(defProviders, provider => {
11533
+ ngDevMode && validateProvider(provider, defProviders, injectorType);
11534
+ providersOut.push(provider);
11535
+ });
11536
+ }
11537
+ }
11538
+ else {
11539
+ // Should not happen, but just in case.
11540
+ return false;
11541
+ }
11542
+ return (defType !== container &&
11543
+ container.providers !== undefined);
11544
+ }
11545
+ function validateProvider(provider, providers, containerType) {
11546
+ if (isTypeProvider(provider) || isValueProvider(provider) || isFactoryProvider(provider) ||
11547
+ isExistingProvider(provider)) {
11548
+ return;
11549
+ }
11550
+ // Here we expect the provider to be a `useClass` provider (by elimination).
11551
+ const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide));
11552
+ if (!classRef) {
11553
+ throwInvalidProviderError(containerType, providers, provider);
11554
+ }
11555
+ }
11556
+ const USE_VALUE$1 = getClosureSafeProperty({ provide: String, useValue: getClosureSafeProperty });
11557
+ function isValueProvider(value) {
11558
+ return value !== null && typeof value == 'object' && USE_VALUE$1 in value;
11559
+ }
11560
+ function isExistingProvider(value) {
11561
+ return !!(value && value.useExisting);
11562
+ }
11563
+ function isFactoryProvider(value) {
11564
+ return !!(value && value.useFactory);
11565
+ }
11566
+ function isTypeProvider(value) {
11567
+ return typeof value === 'function';
11568
+ }
11569
+ function isClassProvider(value) {
11570
+ return !!value.useClass;
11571
+ }
11572
+
11329
11573
  /**
11330
11574
  * @license
11331
11575
  * Copyright Google LLC All Rights Reserved.
@@ -11397,14 +11641,6 @@ const NOT_YET = {};
11397
11641
  * a circular dependency among the providers.
11398
11642
  */
11399
11643
  const CIRCULAR = {};
11400
- /**
11401
- * A multi-provider token for initialization functions that will run upon construction of a
11402
- * non-view injector.
11403
- *
11404
- * @publicApi
11405
- */
11406
- const INJECTOR_INITIALIZER = new InjectionToken('INJECTOR_INITIALIZER');
11407
- const INJECTOR_DEF_TYPES = new InjectionToken('INJECTOR_DEF_TYPES');
11408
11644
  /**
11409
11645
  * A lazily initialized NullInjector.
11410
11646
  */
@@ -11415,159 +11651,12 @@ function getNullInjector() {
11415
11651
  }
11416
11652
  return NULL_INJECTOR$1;
11417
11653
  }
11418
- /**
11419
- * Create a new `Injector` which is configured using a `defType` of `InjectorType<any>`s.
11420
- *
11421
- * @publicApi
11422
- */
11423
- function createInjector(defType, parent = null, additionalProviders = null, name) {
11424
- const injector = createInjectorWithoutInjectorInstances(defType, parent, additionalProviders, name);
11425
- injector.resolveInjectorInitializers();
11426
- return injector;
11427
- }
11428
- /**
11429
- * Creates a new injector without eagerly resolving its injector types. Can be used in places
11430
- * where resolving the injector types immediately can lead to an infinite loop. The injector types
11431
- * should be resolved at a later point by calling `_resolveInjectorDefTypes`.
11432
- */
11433
- function createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name, scopes = new Set()) {
11434
- const providers = [
11435
- ...flatten(additionalProviders || EMPTY_ARRAY),
11436
- ...importProvidersFrom(defType),
11437
- ];
11438
- name = name || (typeof defType === 'object' ? undefined : stringify(defType));
11439
- return new R3Injector(providers, parent || getNullInjector(), name || null, scopes);
11440
- }
11441
- /**
11442
- * The logic visits an `InjectorType` or `InjectorTypeWithProviders` and all of its transitive
11443
- * providers and invokes specified callbacks when:
11444
- * - an injector type is visited (typically an NgModule)
11445
- * - a provider is visited
11446
- *
11447
- * If an `InjectorTypeWithProviders` that declares providers besides the type is specified,
11448
- * the function will return "true" to indicate that the providers of the type definition need
11449
- * to be processed. This allows us to process providers of injector types after all imports of
11450
- * an injector definition are processed. (following View Engine semantics: see FW-1349)
11451
- */
11452
- function walkProviderTree(container, providersOut, parents, dedup) {
11453
- container = resolveForwardRef(container);
11454
- if (!container)
11455
- return false;
11456
- // Either the defOrWrappedDef is an InjectorType (with injector def) or an
11457
- // InjectorDefTypeWithProviders (aka ModuleWithProviders). Detecting either is a megamorphic
11458
- // read, so care is taken to only do the read once.
11459
- // First attempt to read the injector def (`ɵinj`).
11460
- let def = getInjectorDef(container);
11461
- // If that's not present, then attempt to read ngModule from the InjectorDefTypeWithProviders.
11462
- const ngModule = (def == null) && container.ngModule || undefined;
11463
- // Determine the InjectorType. In the case where `defOrWrappedDef` is an `InjectorType`,
11464
- // then this is easy. In the case of an InjectorDefTypeWithProviders, then the definition type
11465
- // is the `ngModule`.
11466
- const defType = (ngModule === undefined) ? container : ngModule;
11467
- // Check for circular dependencies.
11468
- if (ngDevMode && parents.indexOf(defType) !== -1) {
11469
- const defName = stringify(defType);
11470
- const path = parents.map(stringify);
11471
- throwCyclicDependencyError(defName, path);
11472
- }
11473
- // Check for multiple imports of the same module
11474
- const isDuplicate = dedup.has(defType);
11475
- // Finally, if defOrWrappedType was an `InjectorDefTypeWithProviders`, then the actual
11476
- // `InjectorDef` is on its `ngModule`.
11477
- if (ngModule !== undefined) {
11478
- def = getInjectorDef(ngModule);
11479
- }
11480
- // If no definition was found, it might be from exports. Remove it.
11481
- if (def == null) {
11482
- return false;
11483
- }
11484
- // Add providers in the same way that @NgModule resolution did:
11485
- // First, include providers from any imports.
11486
- if (def.imports != null && !isDuplicate) {
11487
- // Before processing defType's imports, add it to the set of parents. This way, if it ends
11488
- // up deeply importing itself, this can be detected.
11489
- ngDevMode && parents.push(defType);
11490
- // Add it to the set of dedups. This way we can detect multiple imports of the same module
11491
- dedup.add(defType);
11492
- let importTypesWithProviders;
11493
- try {
11494
- deepForEach(def.imports, imported => {
11495
- if (walkProviderTree(imported, providersOut, parents, dedup)) {
11496
- if (importTypesWithProviders === undefined)
11497
- importTypesWithProviders = [];
11498
- // If the processed import is an injector type with providers, we store it in the
11499
- // list of import types with providers, so that we can process those afterwards.
11500
- importTypesWithProviders.push(imported);
11501
- }
11502
- });
11503
- }
11504
- finally {
11505
- // Remove it from the parents set when finished.
11506
- ngDevMode && parents.pop();
11507
- }
11508
- // Imports which are declared with providers (TypeWithProviders) need to be processed
11509
- // after all imported modules are processed. This is similar to how View Engine
11510
- // processes/merges module imports in the metadata resolver. See: FW-1349.
11511
- if (importTypesWithProviders !== undefined) {
11512
- for (let i = 0; i < importTypesWithProviders.length; i++) {
11513
- const { ngModule, providers } = importTypesWithProviders[i];
11514
- deepForEach(providers, provider => {
11515
- validateProvider(provider, providers || EMPTY_ARRAY, ngModule);
11516
- providersOut.push(provider);
11517
- });
11518
- }
11519
- }
11520
- }
11521
- // Track the InjectorType and add a provider for it.
11522
- // It's important that this is done after the def's imports.
11523
- const factory = getFactoryDef(defType) || (() => new defType());
11524
- // Provider to create `defType` using its factory.
11525
- providersOut.push({
11526
- provide: defType,
11527
- useFactory: factory,
11528
- deps: EMPTY_ARRAY,
11529
- });
11530
- providersOut.push({
11531
- provide: INJECTOR_DEF_TYPES,
11532
- useValue: defType,
11533
- multi: true,
11534
- });
11535
- // Provider to eagerly instantiate `defType` via `INJECTOR_INITIALIZER`.
11536
- providersOut.push({
11537
- provide: INJECTOR_INITIALIZER,
11538
- useValue: () => inject(defType),
11539
- multi: true,
11540
- });
11541
- // Next, include providers listed on the definition itself.
11542
- const defProviders = def.providers;
11543
- if (defProviders != null && !isDuplicate) {
11544
- const injectorType = container;
11545
- deepForEach(defProviders, provider => {
11546
- // TODO: fix cast
11547
- validateProvider(provider, defProviders, injectorType);
11548
- providersOut.push(provider);
11549
- });
11550
- }
11551
- return (ngModule !== undefined &&
11552
- container.providers !== undefined);
11553
- }
11554
11654
  /**
11555
11655
  * An `Injector` that's part of the environment injector hierarchy, which exists outside of the
11556
11656
  * component tree.
11557
11657
  */
11558
11658
  class EnvironmentInjector {
11559
11659
  }
11560
- /**
11561
- * Collects providers from all NgModules, including transitively imported ones.
11562
- *
11563
- * @returns The list of collected providers from the specified list of NgModules.
11564
- * @publicApi
11565
- */
11566
- function importProvidersFrom(...injectorTypes) {
11567
- const providers = [];
11568
- deepForEach(injectorTypes, injectorDef => walkProviderTree(injectorDef, providers, [], new Set()));
11569
- return providers;
11570
- }
11571
11660
  class R3Injector extends EnvironmentInjector {
11572
11661
  constructor(providers, parent, source, scopes) {
11573
11662
  super();
@@ -11885,21 +11974,6 @@ function makeRecord(factory, value, multi = false) {
11885
11974
  multi: multi ? [] : undefined,
11886
11975
  };
11887
11976
  }
11888
- function isValueProvider(value) {
11889
- return value !== null && typeof value == 'object' && USE_VALUE$1 in value;
11890
- }
11891
- function isExistingProvider(value) {
11892
- return !!(value && value.useExisting);
11893
- }
11894
- function isFactoryProvider(value) {
11895
- return !!(value && value.useFactory);
11896
- }
11897
- function isTypeProvider(value) {
11898
- return typeof value === 'function';
11899
- }
11900
- function isClassProvider(value) {
11901
- return !!value.useClass;
11902
- }
11903
11977
  function hasDeps(value) {
11904
11978
  return !!value.deps;
11905
11979
  }
@@ -11911,17 +11985,6 @@ function couldBeInjectableType(value) {
11911
11985
  return (typeof value === 'function') ||
11912
11986
  (typeof value === 'object' && value instanceof InjectionToken);
11913
11987
  }
11914
- function validateProvider(provider, providers, containerType) {
11915
- if (isTypeProvider(provider) || isValueProvider(provider) || isFactoryProvider(provider) ||
11916
- isExistingProvider(provider)) {
11917
- return;
11918
- }
11919
- // Here we expect the provider to be a `useClass` provider (by elimination).
11920
- const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide));
11921
- if (ngDevMode && !classRef) {
11922
- throwInvalidProviderError(containerType, providers, provider);
11923
- }
11924
- }
11925
11988
 
11926
11989
  /**
11927
11990
  * @license
@@ -11931,34 +11994,65 @@ function validateProvider(provider, providers, containerType) {
11931
11994
  * found in the LICENSE file at https://angular.io/license
11932
11995
  */
11933
11996
  /**
11934
- * Concrete injectors implement this interface. Injectors are configured
11935
- * with [providers](guide/glossary#provider) that associate
11936
- * dependencies of various types with [injection tokens](guide/glossary#di-token).
11937
- *
11938
- * @see ["DI Providers"](guide/dependency-injection-providers).
11939
- * @see `StaticProvider`
11940
- *
11941
- * @usageNotes
11942
- *
11943
- * The following example creates a service injector instance.
11944
- *
11945
- * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
11946
- *
11947
- * ### Usage example
11948
- *
11949
- * {@example core/di/ts/injector_spec.ts region='Injector'}
11950
- *
11951
- * `Injector` returns itself when given `Injector` as a token:
11952
- *
11953
- * {@example core/di/ts/injector_spec.ts region='injectInjector'}
11997
+ * Create a new `Injector` which is configured using a `defType` of `InjectorType<any>`s.
11954
11998
  *
11955
11999
  * @publicApi
11956
12000
  */
11957
- class Injector {
11958
- static create(options, parent) {
11959
- var _a;
11960
- if (Array.isArray(options)) {
11961
- return createInjector({ name: '' }, parent, options, '');
12001
+ function createInjector(defType, parent = null, additionalProviders = null, name) {
12002
+ const injector = createInjectorWithoutInjectorInstances(defType, parent, additionalProviders, name);
12003
+ injector.resolveInjectorInitializers();
12004
+ return injector;
12005
+ }
12006
+ /**
12007
+ * Creates a new injector without eagerly resolving its injector types. Can be used in places
12008
+ * where resolving the injector types immediately can lead to an infinite loop. The injector types
12009
+ * should be resolved at a later point by calling `_resolveInjectorDefTypes`.
12010
+ */
12011
+ function createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name, scopes = new Set()) {
12012
+ const providers = [
12013
+ ...flatten(additionalProviders || EMPTY_ARRAY),
12014
+ ...importProvidersFrom(defType),
12015
+ ];
12016
+ name = name || (typeof defType === 'object' ? undefined : stringify(defType));
12017
+ return new R3Injector(providers, parent || getNullInjector(), name || null, scopes);
12018
+ }
12019
+
12020
+ /**
12021
+ * @license
12022
+ * Copyright Google LLC All Rights Reserved.
12023
+ *
12024
+ * Use of this source code is governed by an MIT-style license that can be
12025
+ * found in the LICENSE file at https://angular.io/license
12026
+ */
12027
+ /**
12028
+ * Concrete injectors implement this interface. Injectors are configured
12029
+ * with [providers](guide/glossary#provider) that associate
12030
+ * dependencies of various types with [injection tokens](guide/glossary#di-token).
12031
+ *
12032
+ * @see ["DI Providers"](guide/dependency-injection-providers).
12033
+ * @see `StaticProvider`
12034
+ *
12035
+ * @usageNotes
12036
+ *
12037
+ * The following example creates a service injector instance.
12038
+ *
12039
+ * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
12040
+ *
12041
+ * ### Usage example
12042
+ *
12043
+ * {@example core/di/ts/injector_spec.ts region='Injector'}
12044
+ *
12045
+ * `Injector` returns itself when given `Injector` as a token:
12046
+ *
12047
+ * {@example core/di/ts/injector_spec.ts region='injectInjector'}
12048
+ *
12049
+ * @publicApi
12050
+ */
12051
+ class Injector {
12052
+ static create(options, parent) {
12053
+ var _a;
12054
+ if (Array.isArray(options)) {
12055
+ return createInjector({ name: '' }, parent, options, '');
11962
12056
  }
11963
12057
  else {
11964
12058
  const name = (_a = options.name) !== null && _a !== void 0 ? _a : '';
@@ -21156,44 +21250,6 @@ function ɵɵProvidersFeature(providers, viewProviders = []) {
21156
21250
  };
21157
21251
  }
21158
21252
 
21159
- /**
21160
- * TODO: Implements standalone stuff!
21161
- *
21162
- * @codeGenApi
21163
- */
21164
- function ɵɵStandaloneFeature(definition) { }
21165
-
21166
- /**
21167
- * @license
21168
- * Copyright Google LLC All Rights Reserved.
21169
- *
21170
- * Use of this source code is governed by an MIT-style license that can be
21171
- * found in the LICENSE file at https://angular.io/license
21172
- */
21173
- /**
21174
- * Represents a component created by a `ComponentFactory`.
21175
- * Provides access to the component instance and related objects,
21176
- * and provides the means of destroying the instance.
21177
- *
21178
- * @publicApi
21179
- */
21180
- class ComponentRef$1 {
21181
- }
21182
- /**
21183
- * Base class for a factory that can create a component dynamically.
21184
- * Instantiate a factory for a given type of component with `resolveComponentFactory()`.
21185
- * Use the resulting `ComponentFactory.create()` method to create a component of that type.
21186
- *
21187
- * @see [Dynamic Components](guide/dynamic-component-loader)
21188
- *
21189
- * @publicApi
21190
- *
21191
- * @deprecated Angular no longer requires Component factories. Please use other APIs where
21192
- * Component class can be used directly.
21193
- */
21194
- class ComponentFactory$1 {
21195
- }
21196
-
21197
21253
  /**
21198
21254
  * @license
21199
21255
  * Copyright Google LLC All Rights Reserved.
@@ -21234,6 +21290,66 @@ class ComponentFactoryResolver$1 {
21234
21290
  }
21235
21291
  ComponentFactoryResolver$1.NULL = ( /* @__PURE__ */new _NullComponentFactoryResolver());
21236
21292
 
21293
+ /**
21294
+ * @license
21295
+ * Copyright Google LLC All Rights Reserved.
21296
+ *
21297
+ * Use of this source code is governed by an MIT-style license that can be
21298
+ * found in the LICENSE file at https://angular.io/license
21299
+ */
21300
+ /**
21301
+ * Represents an instance of an `NgModule` created by an `NgModuleFactory`.
21302
+ * Provides access to the `NgModule` instance and related objects.
21303
+ *
21304
+ * @publicApi
21305
+ */
21306
+ class NgModuleRef$1 {
21307
+ }
21308
+ /**
21309
+ * @publicApi
21310
+ *
21311
+ * @deprecated
21312
+ * This class was mostly used as a part of ViewEngine-based JIT API and is no longer needed in Ivy
21313
+ * JIT mode. See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes)
21314
+ * for additional context. Angular provides APIs that accept NgModule classes directly (such as
21315
+ * [PlatformRef.bootstrapModule](api/core/PlatformRef#bootstrapModule) and
21316
+ * [createNgModuleRef](api/core/createNgModuleRef)), consider switching to those APIs instead of
21317
+ * using factory-based ones.
21318
+ */
21319
+ class NgModuleFactory$1 {
21320
+ }
21321
+
21322
+ /**
21323
+ * @license
21324
+ * Copyright Google LLC All Rights Reserved.
21325
+ *
21326
+ * Use of this source code is governed by an MIT-style license that can be
21327
+ * found in the LICENSE file at https://angular.io/license
21328
+ */
21329
+ /**
21330
+ * Represents a component created by a `ComponentFactory`.
21331
+ * Provides access to the component instance and related objects,
21332
+ * and provides the means of destroying the instance.
21333
+ *
21334
+ * @publicApi
21335
+ */
21336
+ class ComponentRef$1 {
21337
+ }
21338
+ /**
21339
+ * Base class for a factory that can create a component dynamically.
21340
+ * Instantiate a factory for a given type of component with `resolveComponentFactory()`.
21341
+ * Use the resulting `ComponentFactory.create()` method to create a component of that type.
21342
+ *
21343
+ * @see [Dynamic Components](guide/dynamic-component-loader)
21344
+ *
21345
+ * @publicApi
21346
+ *
21347
+ * @deprecated Angular no longer requires Component factories. Please use other APIs where
21348
+ * Component class can be used directly.
21349
+ */
21350
+ class ComponentFactory$1 {
21351
+ }
21352
+
21237
21353
  /**
21238
21354
  * @license
21239
21355
  * Copyright Google LLC All Rights Reserved.
@@ -21393,7 +21509,7 @@ class Version {
21393
21509
  /**
21394
21510
  * @publicApi
21395
21511
  */
21396
- const VERSION = new Version('14.0.0-next.14');
21512
+ const VERSION = new Version('14.0.0-next.15');
21397
21513
 
21398
21514
  /**
21399
21515
  * @license
@@ -21850,6 +21966,10 @@ class ComponentFactory extends ComponentFactory$1 {
21850
21966
  let realEnvironmentInjector = environmentInjector instanceof EnvironmentInjector ?
21851
21967
  environmentInjector :
21852
21968
  environmentInjector === null || environmentInjector === void 0 ? void 0 : environmentInjector.injector;
21969
+ if (realEnvironmentInjector && this.componentDef.getStandaloneInjector !== null) {
21970
+ realEnvironmentInjector = this.componentDef.getStandaloneInjector(realEnvironmentInjector) ||
21971
+ realEnvironmentInjector;
21972
+ }
21853
21973
  const rootViewInjector = realEnvironmentInjector ? new ChainedInjector(injector, realEnvironmentInjector) : injector;
21854
21974
  const rendererFactory = rootViewInjector.get(RendererFactory2, domRendererFactory3);
21855
21975
  const sanitizer = rootViewInjector.get(Sanitizer, null);
@@ -21958,83 +22078,6 @@ class ComponentRef extends ComponentRef$1 {
21958
22078
  }
21959
22079
  }
21960
22080
 
21961
- /**
21962
- * @license
21963
- * Copyright Google LLC All Rights Reserved.
21964
- *
21965
- * Use of this source code is governed by an MIT-style license that can be
21966
- * found in the LICENSE file at https://angular.io/license
21967
- */
21968
- /**
21969
- * Adds decorator, constructor, and property metadata to a given type via static metadata fields
21970
- * on the type.
21971
- *
21972
- * These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
21973
- *
21974
- * Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
21975
- * being tree-shaken away during production builds.
21976
- */
21977
- function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
21978
- return noSideEffects(() => {
21979
- const clazz = type;
21980
- if (decorators !== null) {
21981
- if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {
21982
- clazz.decorators.push(...decorators);
21983
- }
21984
- else {
21985
- clazz.decorators = decorators;
21986
- }
21987
- }
21988
- if (ctorParameters !== null) {
21989
- // Rather than merging, clobber the existing parameters. If other projects exist which
21990
- // use tsickle-style annotations and reflect over them in the same way, this could
21991
- // cause issues, but that is vanishingly unlikely.
21992
- clazz.ctorParameters = ctorParameters;
21993
- }
21994
- if (propDecorators !== null) {
21995
- // The property decorator objects are merged as it is possible different fields have
21996
- // different decorator types. Decorators on individual fields are not merged, as it's
21997
- // also incredibly unlikely that a field will be decorated both with an Angular
21998
- // decorator and a non-Angular decorator that's also been downleveled.
21999
- if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {
22000
- clazz.propDecorators = Object.assign(Object.assign({}, clazz.propDecorators), propDecorators);
22001
- }
22002
- else {
22003
- clazz.propDecorators = propDecorators;
22004
- }
22005
- }
22006
- });
22007
- }
22008
-
22009
- /**
22010
- * @license
22011
- * Copyright Google LLC All Rights Reserved.
22012
- *
22013
- * Use of this source code is governed by an MIT-style license that can be
22014
- * found in the LICENSE file at https://angular.io/license
22015
- */
22016
- /**
22017
- * Represents an instance of an `NgModule` created by an `NgModuleFactory`.
22018
- * Provides access to the `NgModule` instance and related objects.
22019
- *
22020
- * @publicApi
22021
- */
22022
- class NgModuleRef$1 {
22023
- }
22024
- /**
22025
- * @publicApi
22026
- *
22027
- * @deprecated
22028
- * This class was mostly used as a part of ViewEngine-based JIT API and is no longer needed in Ivy
22029
- * JIT mode. See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes)
22030
- * for additional context. Angular provides APIs that accept NgModule classes directly (such as
22031
- * [PlatformRef.bootstrapModule](api/core/PlatformRef#bootstrapModule) and
22032
- * [createNgModuleRef](api/core/createNgModuleRef)), consider switching to those APIs instead of
22033
- * using factory-based ones.
22034
- */
22035
- class NgModuleFactory$1 {
22036
- }
22037
-
22038
22081
  /**
22039
22082
  * @license
22040
22083
  * Copyright Google LLC All Rights Reserved.
@@ -22140,6 +22183,118 @@ function createEnvironmentInjector(providers, parent = null, debugName = null) {
22140
22183
  return adapter.injector;
22141
22184
  }
22142
22185
 
22186
+ /**
22187
+ * @license
22188
+ * Copyright Google LLC All Rights Reserved.
22189
+ *
22190
+ * Use of this source code is governed by an MIT-style license that can be
22191
+ * found in the LICENSE file at https://angular.io/license
22192
+ */
22193
+ /**
22194
+ * A service used by the framework to create instances of standalone injectors. Those injectors are
22195
+ * created on demand in case of dynamic component instantiation and contain ambient providers
22196
+ * collected from the imports graph rooted at a given standalone component.
22197
+ */
22198
+ class StandaloneService {
22199
+ constructor(_injector) {
22200
+ this._injector = _injector;
22201
+ this.cachedInjectors = new Map();
22202
+ }
22203
+ getOrCreateStandaloneInjector(componentDef) {
22204
+ if (!componentDef.standalone) {
22205
+ return null;
22206
+ }
22207
+ if (!this.cachedInjectors.has(componentDef)) {
22208
+ const providers = importProvidersFrom(componentDef.type);
22209
+ const standaloneInjector = providers.length > 0 ?
22210
+ createEnvironmentInjector(providers, this._injector, `Standalone[${componentDef.type.name}]`) :
22211
+ null;
22212
+ this.cachedInjectors.set(componentDef, standaloneInjector);
22213
+ }
22214
+ return this.cachedInjectors.get(componentDef);
22215
+ }
22216
+ ngOnDestroy() {
22217
+ try {
22218
+ for (const injector of this.cachedInjectors.values()) {
22219
+ if (injector !== null) {
22220
+ injector.destroy();
22221
+ }
22222
+ }
22223
+ }
22224
+ finally {
22225
+ this.cachedInjectors.clear();
22226
+ }
22227
+ }
22228
+ }
22229
+ StandaloneService.ɵprov = ɵɵdefineInjectable({
22230
+ token: StandaloneService,
22231
+ providedIn: 'environment',
22232
+ factory: () => new StandaloneService(ɵɵinject(EnvironmentInjector)),
22233
+ });
22234
+ /**
22235
+ * A feature that acts as a setup code for the {@see StandaloneService}.
22236
+ *
22237
+ * The most important responsaibility of this feature is to expose the "getStandaloneInjector"
22238
+ * function (an entry points to a standalone injector creation) on a component definition object. We
22239
+ * go through the features infrastructure to make sure that the standalone injector creation logic
22240
+ * is tree-shakable and not included in applications that don't use standalone components.
22241
+ *
22242
+ * @codeGenApi
22243
+ */
22244
+ function ɵɵStandaloneFeature(definition) {
22245
+ definition.getStandaloneInjector = (parentInjector) => {
22246
+ return parentInjector.get(StandaloneService).getOrCreateStandaloneInjector(definition);
22247
+ };
22248
+ }
22249
+
22250
+ /**
22251
+ * @license
22252
+ * Copyright Google LLC All Rights Reserved.
22253
+ *
22254
+ * Use of this source code is governed by an MIT-style license that can be
22255
+ * found in the LICENSE file at https://angular.io/license
22256
+ */
22257
+ /**
22258
+ * Adds decorator, constructor, and property metadata to a given type via static metadata fields
22259
+ * on the type.
22260
+ *
22261
+ * These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
22262
+ *
22263
+ * Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
22264
+ * being tree-shaken away during production builds.
22265
+ */
22266
+ function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
22267
+ return noSideEffects(() => {
22268
+ const clazz = type;
22269
+ if (decorators !== null) {
22270
+ if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {
22271
+ clazz.decorators.push(...decorators);
22272
+ }
22273
+ else {
22274
+ clazz.decorators = decorators;
22275
+ }
22276
+ }
22277
+ if (ctorParameters !== null) {
22278
+ // Rather than merging, clobber the existing parameters. If other projects exist which
22279
+ // use tsickle-style annotations and reflect over them in the same way, this could
22280
+ // cause issues, but that is vanishingly unlikely.
22281
+ clazz.ctorParameters = ctorParameters;
22282
+ }
22283
+ if (propDecorators !== null) {
22284
+ // The property decorator objects are merged as it is possible different fields have
22285
+ // different decorator types. Decorators on individual fields are not merged, as it's
22286
+ // also incredibly unlikely that a field will be decorated both with an Angular
22287
+ // decorator and a non-Angular decorator that's also been downleveled.
22288
+ if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {
22289
+ clazz.propDecorators = Object.assign(Object.assign({}, clazz.propDecorators), propDecorators);
22290
+ }
22291
+ else {
22292
+ clazz.propDecorators = propDecorators;
22293
+ }
22294
+ }
22295
+ });
22296
+ }
22297
+
22143
22298
  /**
22144
22299
  * @license
22145
22300
  * Copyright Google LLC All Rights Reserved.
@@ -24132,9 +24287,16 @@ function compileNgModuleDefs(moduleType, ngModule, allowDuplicateDeclarationsInR
24132
24287
  configurable: !!ngDevMode,
24133
24288
  });
24134
24289
  }
24290
+ function isStandalone(type) {
24291
+ const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type);
24292
+ return def !== null ? def.standalone : false;
24293
+ }
24135
24294
  function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot, importingModule) {
24136
24295
  if (verifiedNgModule.get(moduleType))
24137
24296
  return;
24297
+ // skip verifications of standalone components, direcrtives and pipes
24298
+ if (isStandalone(moduleType))
24299
+ return;
24138
24300
  verifiedNgModule.set(moduleType, true);
24139
24301
  moduleType = resolveForwardRef(moduleType);
24140
24302
  let ngModuleDef;
@@ -24150,9 +24312,9 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
24150
24312
  const errors = [];
24151
24313
  const declarations = maybeUnwrapFn(ngModuleDef.declarations);
24152
24314
  const imports = maybeUnwrapFn(ngModuleDef.imports);
24153
- flatten(imports).map(unwrapModuleWithProvidersImports).forEach(mod => {
24154
- verifySemanticsOfNgModuleImport(mod, moduleType);
24155
- verifySemanticsOfNgModuleDef(mod, false, moduleType);
24315
+ flatten(imports).map(unwrapModuleWithProvidersImports).forEach(modOrStandaloneCmpt => {
24316
+ verifySemanticsOfNgModuleImport(modOrStandaloneCmpt, moduleType);
24317
+ verifySemanticsOfNgModuleDef(modOrStandaloneCmpt, false, moduleType);
24156
24318
  });
24157
24319
  const exports = maybeUnwrapFn(ngModuleDef.exports);
24158
24320
  declarations.forEach(verifyDeclarationsHaveDefinitions);
@@ -24249,10 +24411,12 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
24249
24411
  }
24250
24412
  function verifySemanticsOfNgModuleImport(type, importingModule) {
24251
24413
  type = resolveForwardRef(type);
24252
- if (getComponentDef(type) || getDirectiveDef(type)) {
24414
+ const directiveDef = getComponentDef(type) || getDirectiveDef(type);
24415
+ if (directiveDef !== null && !directiveDef.standalone) {
24253
24416
  throw new Error(`Unexpected directive '${type.name}' imported by the module '${importingModule.name}'. Please add an @NgModule annotation.`);
24254
24417
  }
24255
- if (getPipeDef$1(type)) {
24418
+ const pipeDef = getPipeDef$1(type);
24419
+ if (pipeDef !== null && !pipeDef.standalone) {
24256
24420
  throw new Error(`Unexpected pipe '${type.name}' imported by the module '${importingModule.name}'. Please add an @NgModule annotation.`);
24257
24421
  }
24258
24422
  }
@@ -24306,7 +24470,11 @@ function resetCompiledComponents() {
24306
24470
  */
24307
24471
  function computeCombinedExports(type) {
24308
24472
  type = resolveForwardRef(type);
24309
- const ngModuleDef = getNgModuleDef(type, true);
24473
+ const ngModuleDef = getNgModuleDef(type);
24474
+ // a standalone component, directive or pipe
24475
+ if (ngModuleDef === null) {
24476
+ return [type];
24477
+ }
24310
24478
  return [...flatten(maybeUnwrapFn(ngModuleDef.exports).map((type) => {
24311
24479
  const ngModuleDef = getNgModuleDef(type);
24312
24480
  if (ngModuleDef) {
@@ -24355,6 +24523,47 @@ function patchComponentDefWithScope(componentDef, transitiveScopes) {
24355
24523
  // order to avoid this problem, we force fresh TView to be created.
24356
24524
  componentDef.tView = null;
24357
24525
  }
24526
+ /**
24527
+ * Compute the pair of transitive scopes (compilation scope and exported scope) for a given type
24528
+ * (eaither a NgModule or a standalone component / directive / pipe).
24529
+ */
24530
+ function transitiveScopesFor(type) {
24531
+ if (isNgModule(type)) {
24532
+ return transitiveScopesForNgModule(type);
24533
+ }
24534
+ else if (isStandalone(type)) {
24535
+ const directiveDef = getComponentDef(type) || getDirectiveDef(type);
24536
+ if (directiveDef !== null) {
24537
+ return {
24538
+ schemas: null,
24539
+ compilation: {
24540
+ directives: new Set(),
24541
+ pipes: new Set(),
24542
+ },
24543
+ exported: {
24544
+ directives: new Set([type]),
24545
+ pipes: new Set(),
24546
+ },
24547
+ };
24548
+ }
24549
+ const pipeDef = getPipeDef$1(type);
24550
+ if (pipeDef !== null) {
24551
+ return {
24552
+ schemas: null,
24553
+ compilation: {
24554
+ directives: new Set(),
24555
+ pipes: new Set(),
24556
+ },
24557
+ exported: {
24558
+ directives: new Set(),
24559
+ pipes: new Set([type]),
24560
+ },
24561
+ };
24562
+ }
24563
+ }
24564
+ // TODO: change the error message to be more user-facing and take standalone into account
24565
+ throw new Error(`${type.name} does not have a module def (ɵmod property)`);
24566
+ }
24358
24567
  /**
24359
24568
  * Compute the pair of transitive scopes (compilation scope and exported scope) for a given module.
24360
24569
  *
@@ -24364,11 +24573,8 @@ function patchComponentDefWithScope(componentDef, transitiveScopes) {
24364
24573
  *
24365
24574
  * @param moduleType module that transitive scope should be calculated for.
24366
24575
  */
24367
- function transitiveScopesFor(moduleType) {
24368
- if (!isNgModule(moduleType)) {
24369
- throw new Error(`${moduleType.name} does not have a module def (ɵmod property)`);
24370
- }
24371
- const def = getNgModuleDef(moduleType);
24576
+ function transitiveScopesForNgModule(moduleType) {
24577
+ const def = getNgModuleDef(moduleType, true);
24372
24578
  if (def.transitiveCompileScopes !== null) {
24373
24579
  return def.transitiveCompileScopes;
24374
24580
  }
@@ -24384,13 +24590,9 @@ function transitiveScopesFor(moduleType) {
24384
24590
  },
24385
24591
  };
24386
24592
  maybeUnwrapFn(def.imports).forEach((imported) => {
24387
- const importedType = imported;
24388
- if (!isNgModule(importedType)) {
24389
- throw new Error(`Importing ${importedType.name} which does not have a ɵmod property`);
24390
- }
24391
24593
  // When this module imports another, the imported module's exported directives and pipes are
24392
24594
  // added to the compilation scope of this module.
24393
- const importedScope = transitiveScopesFor(importedType);
24595
+ const importedScope = transitiveScopesFor(imported);
24394
24596
  importedScope.exported.directives.forEach(entry => scopes.compilation.directives.add(entry));
24395
24597
  importedScope.exported.pipes.forEach(entry => scopes.compilation.pipes.add(entry));
24396
24598
  });
@@ -24526,13 +24728,30 @@ function compileComponent(type, metadata) {
24526
24728
  }
24527
24729
  }
24528
24730
  const templateUrl = metadata.templateUrl || `ng:///${type.name}/template.html`;
24529
- const meta = Object.assign(Object.assign({}, directiveMetadata(type, metadata)), { typeSourceSpan: compiler.createParseSourceSpan('Component', type.name, templateUrl), template: metadata.template || '', preserveWhitespaces, styles: metadata.styles || EMPTY_ARRAY, animations: metadata.animations, declarations: [], changeDetection: metadata.changeDetection, encapsulation, interpolation: metadata.interpolation, viewProviders: metadata.viewProviders || null });
24731
+ const meta = Object.assign(Object.assign({}, directiveMetadata(type, metadata)), { typeSourceSpan: compiler.createParseSourceSpan('Component', type.name, templateUrl), template: metadata.template || '', preserveWhitespaces, styles: metadata.styles || EMPTY_ARRAY, animations: metadata.animations,
24732
+ // JIT components are always compiled against an empty set of `declarations`. Instead, the
24733
+ // `directiveDefs` and `pipeDefs` are updated at a later point:
24734
+ // * for NgModule-based components, they're set when the NgModule which declares the
24735
+ // component resolves in the module scoping queue
24736
+ // * for standalone components, they're set just below, after `compileComponent`.
24737
+ declarations: [], changeDetection: metadata.changeDetection, encapsulation, interpolation: metadata.interpolation, viewProviders: metadata.viewProviders || null, isStandalone: !!metadata.standalone });
24530
24738
  compilationDepth++;
24531
24739
  try {
24532
24740
  if (meta.usesInheritance) {
24533
24741
  addDirectiveDefToUndecoratedParents(type);
24534
24742
  }
24535
- ngComponentDef = compiler.compileComponent(angularCoreEnv, templateUrl, meta);
24743
+ ngComponentDef =
24744
+ compiler.compileComponent(angularCoreEnv, templateUrl, meta);
24745
+ if (metadata.standalone) {
24746
+ // Patch the component definition for standalone components with `directiveDefs` and
24747
+ // `pipeDefs` functions which lazily compute the directives/pipes available in the
24748
+ // standalone component. Also set `dependencies` to the lazily resolved list of imports.
24749
+ const imports = flatten(metadata.imports || EMPTY_ARRAY);
24750
+ const { directiveDefs, pipeDefs } = getStandaloneDefFunctions(type, imports);
24751
+ ngComponentDef.directiveDefs = directiveDefs;
24752
+ ngComponentDef.pipeDefs = pipeDefs;
24753
+ ngComponentDef.dependencies = () => imports.map(resolveForwardRef);
24754
+ }
24536
24755
  }
24537
24756
  finally {
24538
24757
  // Ensure that the compilation depth is decremented even when the compilation failed.
@@ -24554,6 +24773,17 @@ function compileComponent(type, metadata) {
24554
24773
  const scopes = transitiveScopesFor(type.ngSelectorScope);
24555
24774
  patchComponentDefWithScope(ngComponentDef, scopes);
24556
24775
  }
24776
+ if (metadata.schemas) {
24777
+ if (metadata.standalone) {
24778
+ ngComponentDef.schemas = metadata.schemas;
24779
+ }
24780
+ else {
24781
+ throw new Error(`The 'schemas' was specified for the ${stringifyForError(type)} but is only valid on a component that is standalone.`);
24782
+ }
24783
+ }
24784
+ else if (metadata.standalone) {
24785
+ ngComponentDef.schemas = [];
24786
+ }
24557
24787
  }
24558
24788
  return ngComponentDef;
24559
24789
  },
@@ -24561,6 +24791,65 @@ function compileComponent(type, metadata) {
24561
24791
  configurable: !!ngDevMode,
24562
24792
  });
24563
24793
  }
24794
+ /**
24795
+ * Build memoized `directiveDefs` and `pipeDefs` functions for the component definition of a
24796
+ * standalone component, which process `imports` and filter out directives and pipes. The use of
24797
+ * memoized functions here allows for the delayed resolution of any `forwardRef`s present in the
24798
+ * component's `imports`.
24799
+ */
24800
+ function getStandaloneDefFunctions(type, imports) {
24801
+ let cachedDirectiveDefs = null;
24802
+ let cachedPipeDefs = null;
24803
+ const directiveDefs = () => {
24804
+ if (cachedDirectiveDefs === null) {
24805
+ // Standalone components are always able to self-reference, so include the component's own
24806
+ // definition in its `directiveDefs`.
24807
+ cachedDirectiveDefs = [getComponentDef(type)];
24808
+ for (const rawDep of imports) {
24809
+ const dep = resolveForwardRef(rawDep);
24810
+ if (!!getNgModuleDef(dep)) {
24811
+ const scope = transitiveScopesFor(dep);
24812
+ for (const dir of scope.exported.directives) {
24813
+ const def = getComponentDef(dir) || getDirectiveDef(dir);
24814
+ if (def) {
24815
+ cachedDirectiveDefs.push(def);
24816
+ }
24817
+ }
24818
+ }
24819
+ else {
24820
+ const def = getComponentDef(dep) || getDirectiveDef(dep);
24821
+ if (def) {
24822
+ cachedDirectiveDefs.push(def);
24823
+ }
24824
+ }
24825
+ }
24826
+ }
24827
+ return cachedDirectiveDefs;
24828
+ };
24829
+ const pipeDefs = () => {
24830
+ if (cachedPipeDefs === null) {
24831
+ cachedPipeDefs = [];
24832
+ for (const rawDep of imports) {
24833
+ const dep = resolveForwardRef(rawDep);
24834
+ if (!!getNgModuleDef(dep)) {
24835
+ const scope = transitiveScopesFor(dep);
24836
+ cachedPipeDefs.push(...Array.from(scope.exported.pipes).map(pipe => getPipeDef$1(pipe)));
24837
+ }
24838
+ else {
24839
+ const def = getPipeDef$1(dep);
24840
+ if (def) {
24841
+ cachedPipeDefs.push(def);
24842
+ }
24843
+ }
24844
+ }
24845
+ }
24846
+ return cachedPipeDefs;
24847
+ };
24848
+ return {
24849
+ directiveDefs,
24850
+ pipeDefs,
24851
+ };
24852
+ }
24564
24853
  function hasSelectorScope(component) {
24565
24854
  return component.ngSelectorScope !== undefined;
24566
24855
  }
@@ -24649,9 +24938,7 @@ function directiveMetadata(type, metadata) {
24649
24938
  exportAs: extractExportAs(metadata.exportAs),
24650
24939
  providers: metadata.providers || null,
24651
24940
  viewQueries: extractQueriesMetadata(type, propMetadata, isViewQuery),
24652
- // TODO(alxhub): pass through the standalone flag from the directive metadata once standalone
24653
- // functionality is fully rolled out.
24654
- isStandalone: false,
24941
+ isStandalone: !!metadata.standalone,
24655
24942
  };
24656
24943
  }
24657
24944
  /**
@@ -24796,9 +25083,7 @@ function getPipeMetadata(type, meta) {
24796
25083
  name: type.name,
24797
25084
  pipeName: meta.name,
24798
25085
  pure: meta.pure !== undefined ? meta.pure : true,
24799
- // TODO(alxhub): pass through the standalone flag from the pipe metadata once standalone
24800
- // functionality is fully rolled out.
24801
- isStandalone: false,
25086
+ isStandalone: !!meta.standalone,
24802
25087
  };
24803
25088
  }
24804
25089
 
@@ -26284,11 +26569,81 @@ function createPlatform(injector) {
26284
26569
  publishDefaultGlobalUtils();
26285
26570
  _platformInjector = injector;
26286
26571
  const platform = injector.get(PlatformRef);
26287
- const inits = injector.get(PLATFORM_INITIALIZER, null);
26288
- if (inits)
26289
- inits.forEach(initFn => initFn());
26572
+ runPlatformInitializers(injector);
26290
26573
  return platform;
26291
26574
  }
26575
+ /**
26576
+ * The goal of this function is to bootstrap a platform injector,
26577
+ * but avoid referencing `PlatformRef` class.
26578
+ * This function is needed for bootstrapping a Standalone Component.
26579
+ */
26580
+ function createOrReusePlatformInjector(providers = []) {
26581
+ // If a platform injector already exists, it means that the platform
26582
+ // is already bootstrapped and no additional actions are required.
26583
+ if (_platformInjector)
26584
+ return _platformInjector;
26585
+ // Otherwise, setup a new platform injector and run platform initializers.
26586
+ const injector = createPlatformInjector(providers);
26587
+ _platformInjector = injector;
26588
+ publishDefaultGlobalUtils();
26589
+ runPlatformInitializers(injector);
26590
+ return injector;
26591
+ }
26592
+ function runPlatformInitializers(injector) {
26593
+ const inits = injector.get(PLATFORM_INITIALIZER, null);
26594
+ if (inits) {
26595
+ inits.forEach((init) => init());
26596
+ }
26597
+ }
26598
+ /**
26599
+ * Internal bootstrap application API that implements the core bootstrap logic.
26600
+ *
26601
+ * Platforms (such as `platform-browser`) may require different set of application and platform
26602
+ * providers for an application to function correctly. As a result, platforms may use this function
26603
+ * internally and supply the necessary providers during the bootstrap, while exposing
26604
+ * platform-specific APIs as a part of their public API.
26605
+ *
26606
+ * @returns A promise that returns an `ApplicationRef` instance once resolved.
26607
+ */
26608
+ function bootstrapApplication(config) {
26609
+ const { rootComponent, appProviders, platformProviders } = config;
26610
+ NG_DEV_MODE && assertStandaloneComponentType(rootComponent);
26611
+ const platformInjector = createOrReusePlatformInjector(platformProviders);
26612
+ const ngZone = new NgZone(getNgZoneOptions());
26613
+ return ngZone.run(() => {
26614
+ // Create root application injector based on a set of providers configured at the platform
26615
+ // bootstrap level as well as providers passed to the bootstrap call by a user.
26616
+ const allAppProviders = [
26617
+ { provide: NgZone, useValue: ngZone },
26618
+ ...(appProviders || []), //
26619
+ ];
26620
+ const appInjector = createEnvironmentInjector(allAppProviders, platformInjector, 'Environment Injector');
26621
+ const exceptionHandler = appInjector.get(ErrorHandler, null);
26622
+ if (NG_DEV_MODE && !exceptionHandler) {
26623
+ throw new RuntimeError(402 /* ERROR_HANDLER_NOT_FOUND */, 'No `ErrorHandler` found in the Dependency Injection tree.');
26624
+ }
26625
+ let onErrorSubscription;
26626
+ ngZone.runOutsideAngular(() => {
26627
+ onErrorSubscription = ngZone.onError.subscribe({
26628
+ next: (error) => {
26629
+ exceptionHandler.handleError(error);
26630
+ }
26631
+ });
26632
+ });
26633
+ return _callAndReportToErrorHandler(exceptionHandler, ngZone, () => {
26634
+ const initStatus = appInjector.get(ApplicationInitStatus);
26635
+ initStatus.runInitializers();
26636
+ return initStatus.donePromise.then(() => {
26637
+ const localeId = appInjector.get(LOCALE_ID, DEFAULT_LOCALE_ID);
26638
+ setLocaleId(localeId || DEFAULT_LOCALE_ID);
26639
+ const appRef = appInjector.get(ApplicationRef);
26640
+ appRef.onDestroy(() => onErrorSubscription.unsubscribe());
26641
+ appRef.bootstrap(rootComponent);
26642
+ return appRef;
26643
+ });
26644
+ });
26645
+ });
26646
+ }
26292
26647
  /**
26293
26648
  * Creates a factory for a platform. Can be used to provide or override `Providers` specific to
26294
26649
  * your application's runtime needs, such as `PLATFORM_INITIALIZER` and `PLATFORM_ID`.
@@ -26399,10 +26754,7 @@ class PlatformRef {
26399
26754
  // as instantiating the module creates some providers eagerly.
26400
26755
  // So we create a mini parent injector that just contains the new NgZone and
26401
26756
  // pass that as parent to the NgModuleFactory.
26402
- const ngZoneOption = options ? options.ngZone : undefined;
26403
- const ngZoneEventCoalescing = (options && options.ngZoneEventCoalescing) || false;
26404
- const ngZoneRunCoalescing = (options && options.ngZoneRunCoalescing) || false;
26405
- const ngZone = getNgZone(ngZoneOption, { ngZoneEventCoalescing, ngZoneRunCoalescing });
26757
+ const ngZone = getNgZone(options === null || options === void 0 ? void 0 : options.ngZone, getNgZoneOptions(options));
26406
26758
  const providers = [{ provide: NgZone, useValue: ngZone }];
26407
26759
  // Note: Create ngZoneInjector within ngZone.run so that all of the instantiated services are
26408
26760
  // created within the Angular zone
@@ -26526,17 +26878,23 @@ PlatformRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, fa
26526
26878
  args: [{ providedIn: 'platform' }]
26527
26879
  }], function () { return [{ type: Injector }]; }, null);
26528
26880
  })();
26529
- function getNgZone(ngZoneOption, extra) {
26881
+ // Transforms a set of `BootstrapOptions` (supported by the NgModule-based bootstrap APIs) ->
26882
+ // `NgZoneOptions` that are recognized by the NgZone constructor. Passing no options will result in
26883
+ // a set of default options returned.
26884
+ function getNgZoneOptions(options) {
26885
+ return {
26886
+ enableLongStackTrace: typeof ngDevMode === 'undefined' ? false : !!ngDevMode,
26887
+ shouldCoalesceEventChangeDetection: !!(options && options.ngZoneEventCoalescing) || false,
26888
+ shouldCoalesceRunChangeDetection: !!(options && options.ngZoneRunCoalescing) || false,
26889
+ };
26890
+ }
26891
+ function getNgZone(ngZoneToUse, options) {
26530
26892
  let ngZone;
26531
- if (ngZoneOption === 'noop') {
26893
+ if (ngZoneToUse === 'noop') {
26532
26894
  ngZone = new NoopNgZone();
26533
26895
  }
26534
26896
  else {
26535
- ngZone = (ngZoneOption === 'zone.js' ? undefined : ngZoneOption) || new NgZone({
26536
- enableLongStackTrace: typeof ngDevMode === 'undefined' ? false : !!ngDevMode,
26537
- shouldCoalesceEventChangeDetection: !!(extra === null || extra === void 0 ? void 0 : extra.ngZoneEventCoalescing),
26538
- shouldCoalesceRunChangeDetection: !!(extra === null || extra === void 0 ? void 0 : extra.ngZoneRunCoalescing)
26539
- });
26897
+ ngZone = (ngZoneToUse === 'zone.js' ? undefined : ngZoneToUse) || new NgZone(options);
26540
26898
  }
26541
26899
  return ngZone;
26542
26900
  }
@@ -26778,15 +27136,16 @@ class ApplicationRef {
26778
27136
  */
26779
27137
  bootstrap(componentOrFactory, rootSelectorOrNode) {
26780
27138
  NG_DEV_MODE && this.warnIfDestroyed();
27139
+ const isComponentFactory = componentOrFactory instanceof ComponentFactory$1;
26781
27140
  if (!this._initStatus.done) {
26782
- const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
26783
- 'Cannot bootstrap as there are still asynchronous initializers running. ' +
26784
- 'Bootstrap components in the `ngDoBootstrap` method of the root module.' :
26785
- '';
26786
- throw new RuntimeError(405 /* ASYNC_INITIALIZERS_STILL_RUNNING */, errorMessage);
27141
+ const standalone = !isComponentFactory && isStandalone(componentOrFactory);
27142
+ const errorMessage = 'Cannot bootstrap as there are still asynchronous initializers running.' +
27143
+ (standalone ? '' :
27144
+ ' Bootstrap components in the `ngDoBootstrap` method of the root module.');
27145
+ throw new RuntimeError(405 /* ASYNC_INITIALIZERS_STILL_RUNNING */, NG_DEV_MODE && errorMessage);
26787
27146
  }
26788
27147
  let componentFactory;
26789
- if (componentOrFactory instanceof ComponentFactory$1) {
27148
+ if (isComponentFactory) {
26790
27149
  componentFactory = componentOrFactory;
26791
27150
  }
26792
27151
  else {
@@ -29127,5 +29486,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
29127
29486
  * Generated bundle index. Do not edit.
29128
29487
  */
29129
29488
 
29130
- 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, 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, 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, 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 };
29489
+ 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 };
29131
29490
  //# sourceMappingURL=core.mjs.map