@angular/core 14.0.0-next.11 → 14.0.0-next.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core.d.ts +121 -66
- package/esm2020/src/application_ref.mjs +118 -32
- package/esm2020/src/application_tokens.mjs +5 -2
- package/esm2020/src/change_detection/change_detection.mjs +2 -2
- package/esm2020/src/change_detection/differs/default_iterable_differ.mjs +2 -2
- package/esm2020/src/change_detection/differs/default_keyvalue_differ.mjs +2 -2
- package/esm2020/src/compiler/compiler_facade_interface.mjs +7 -1
- package/esm2020/src/console.mjs +4 -3
- package/esm2020/src/core.mjs +2 -2
- package/esm2020/src/core_private_export.mjs +3 -2
- package/esm2020/src/core_render3_private_export.mjs +2 -2
- package/esm2020/src/di/index.mjs +2 -1
- package/esm2020/src/di/injection_token.mjs +7 -1
- package/esm2020/src/di/interface/defs.mjs +1 -1
- package/esm2020/src/di/r3_injector.mjs +216 -125
- package/esm2020/src/di/scope.mjs +1 -1
- package/esm2020/src/errors.mjs +1 -1
- package/esm2020/src/linker/component_factory.mjs +1 -1
- package/esm2020/src/linker/ng_module_factory.mjs +1 -1
- package/esm2020/src/linker/view_container_ref.mjs +12 -9
- package/esm2020/src/platform_core_providers.mjs +3 -14
- package/esm2020/src/render3/bindings.mjs +2 -2
- package/esm2020/src/render3/component_ref.mjs +8 -4
- package/esm2020/src/render3/definition.mjs +14 -20
- package/esm2020/src/render3/errors.mjs +6 -3
- package/esm2020/src/render3/errors_di.mjs +1 -1
- package/esm2020/src/render3/features/inherit_definition_feature.mjs +3 -2
- package/esm2020/src/render3/features/standalone_feature.mjs +7 -0
- package/esm2020/src/render3/index.mjs +4 -3
- package/esm2020/src/render3/instructions/shared.mjs +33 -15
- package/esm2020/src/render3/interfaces/definition.mjs +1 -1
- package/esm2020/src/render3/interfaces/public_definitions.mjs +1 -1
- package/esm2020/src/render3/jit/directive.mjs +2 -3
- package/esm2020/src/render3/jit/environment.mjs +2 -1
- package/esm2020/src/render3/ng_module_ref.mjs +33 -4
- package/esm2020/src/testability/testability.mjs +4 -3
- package/esm2020/src/version.mjs +1 -1
- package/esm2020/testing/src/logger.mjs +3 -3
- package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
- package/esm2020/testing/src/r3_test_bed.mjs +5 -8
- package/esm2020/testing/src/test_bed.mjs +1 -1
- package/esm2020/testing/src/test_bed_common.mjs +1 -1
- package/fesm2015/core.mjs +487 -229
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/testing.mjs +5 -8
- package/fesm2015/testing.mjs.map +1 -1
- package/fesm2020/core.mjs +485 -230
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/testing.mjs +5 -8
- package/fesm2020/testing.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/migrations.json +2 -2
- package/testing/testing.d.ts +1 -42
- package/esm2020/src/change_detection/change_detection_util.mjs +0 -64
package/fesm2020/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v14.0.0-next.
|
|
2
|
+
* @license Angular v14.0.0-next.14
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -918,19 +918,21 @@ function ɵɵdefineComponent(componentDefinition) {
|
|
|
918
918
|
schemas: componentDefinition.schemas || null,
|
|
919
919
|
tView: null,
|
|
920
920
|
};
|
|
921
|
-
const
|
|
921
|
+
const dependencies = componentDefinition.dependencies;
|
|
922
922
|
const feature = componentDefinition.features;
|
|
923
|
-
const pipeTypes = componentDefinition.pipes;
|
|
924
923
|
def.id += _renderCompCount++;
|
|
925
924
|
def.inputs = invertObject(componentDefinition.inputs, declaredInputs),
|
|
926
925
|
def.outputs = invertObject(componentDefinition.outputs),
|
|
927
926
|
feature && feature.forEach((fn) => fn(def));
|
|
928
|
-
def.directiveDefs =
|
|
929
|
-
() => (typeof
|
|
930
|
-
.map(extractDirectiveDef)
|
|
927
|
+
def.directiveDefs = dependencies ?
|
|
928
|
+
(() => (typeof dependencies === 'function' ? dependencies() : dependencies)
|
|
929
|
+
.map(extractDirectiveDef)
|
|
930
|
+
.filter(nonNull)) :
|
|
931
931
|
null;
|
|
932
|
-
def.pipeDefs =
|
|
933
|
-
() => (typeof
|
|
932
|
+
def.pipeDefs = dependencies ?
|
|
933
|
+
(() => (typeof dependencies === 'function' ? dependencies() : dependencies)
|
|
934
|
+
.map(getPipeDef$1)
|
|
935
|
+
.filter(nonNull)) :
|
|
934
936
|
null;
|
|
935
937
|
return def;
|
|
936
938
|
});
|
|
@@ -947,21 +949,13 @@ function ɵɵdefineComponent(componentDefinition) {
|
|
|
947
949
|
function ɵɵsetComponentScope(type, directives, pipes) {
|
|
948
950
|
const def = type.ɵcmp;
|
|
949
951
|
def.directiveDefs = () => directives.map(extractDirectiveDef);
|
|
950
|
-
def.pipeDefs = () => pipes.map(
|
|
952
|
+
def.pipeDefs = () => pipes.map(getPipeDef$1);
|
|
951
953
|
}
|
|
952
954
|
function extractDirectiveDef(type) {
|
|
953
|
-
|
|
954
|
-
if (ngDevMode && !def) {
|
|
955
|
-
throw new Error(`'${type.name}' is neither 'ComponentType' or 'DirectiveType'.`);
|
|
956
|
-
}
|
|
957
|
-
return def;
|
|
955
|
+
return getComponentDef(type) || getDirectiveDef(type);
|
|
958
956
|
}
|
|
959
|
-
function
|
|
960
|
-
|
|
961
|
-
if (ngDevMode && !def) {
|
|
962
|
-
throw new Error(`'${type.name}' is not a 'PipeType'.`);
|
|
963
|
-
}
|
|
964
|
-
return def;
|
|
957
|
+
function nonNull(value) {
|
|
958
|
+
return value !== null;
|
|
965
959
|
}
|
|
966
960
|
const autoRegisterModuleById = {};
|
|
967
961
|
/**
|
|
@@ -4015,6 +4009,12 @@ class InjectionToken {
|
|
|
4015
4009
|
});
|
|
4016
4010
|
}
|
|
4017
4011
|
}
|
|
4012
|
+
/**
|
|
4013
|
+
* @internal
|
|
4014
|
+
*/
|
|
4015
|
+
get multi() {
|
|
4016
|
+
return this;
|
|
4017
|
+
}
|
|
4018
4018
|
toString() {
|
|
4019
4019
|
return `InjectionToken ${this._desc}`;
|
|
4020
4020
|
}
|
|
@@ -4141,6 +4141,12 @@ var FactoryTarget;
|
|
|
4141
4141
|
FactoryTarget[FactoryTarget["Pipe"] = 3] = "Pipe";
|
|
4142
4142
|
FactoryTarget[FactoryTarget["NgModule"] = 4] = "NgModule";
|
|
4143
4143
|
})(FactoryTarget || (FactoryTarget = {}));
|
|
4144
|
+
var R3TemplateDependencyKind;
|
|
4145
|
+
(function (R3TemplateDependencyKind) {
|
|
4146
|
+
R3TemplateDependencyKind[R3TemplateDependencyKind["Directive"] = 0] = "Directive";
|
|
4147
|
+
R3TemplateDependencyKind[R3TemplateDependencyKind["Pipe"] = 1] = "Pipe";
|
|
4148
|
+
R3TemplateDependencyKind[R3TemplateDependencyKind["NgModule"] = 2] = "NgModule";
|
|
4149
|
+
})(R3TemplateDependencyKind || (R3TemplateDependencyKind = {}));
|
|
4144
4150
|
var ViewEncapsulation;
|
|
4145
4151
|
(function (ViewEncapsulation) {
|
|
4146
4152
|
ViewEncapsulation[ViewEncapsulation["Emulated"] = 0] = "Emulated";
|
|
@@ -6922,8 +6928,10 @@ function maybeUnwrapFn(value) {
|
|
|
6922
6928
|
* found in the LICENSE file at https://angular.io/license
|
|
6923
6929
|
*/
|
|
6924
6930
|
/** Called when there are multiple component selectors that match a given node */
|
|
6925
|
-
function throwMultipleComponentError(tNode) {
|
|
6926
|
-
throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}`
|
|
6931
|
+
function throwMultipleComponentError(tNode, first, second) {
|
|
6932
|
+
throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}: ` +
|
|
6933
|
+
`${stringifyForError(first)} and ` +
|
|
6934
|
+
`${stringifyForError(second)}`);
|
|
6927
6935
|
}
|
|
6928
6936
|
/** Throws an ExpressionChangedAfterChecked error if checkNoChanges mode is on. */
|
|
6929
6937
|
function throwErrorIfNoChangesMode(creationMode, oldValue, currValue, propName) {
|
|
@@ -10252,9 +10260,9 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
10252
10260
|
propName = mapPropName(propName);
|
|
10253
10261
|
if (ngDevMode) {
|
|
10254
10262
|
validateAgainstEventProperties(propName);
|
|
10255
|
-
if (!validateProperty(
|
|
10263
|
+
if (!validateProperty(element, tNode.value, propName, tView.schemas)) {
|
|
10256
10264
|
// Return here since we only log warnings for unknown properties.
|
|
10257
|
-
logUnknownPropertyError(propName, tNode);
|
|
10265
|
+
logUnknownPropertyError(propName, tNode.value);
|
|
10258
10266
|
return;
|
|
10259
10267
|
}
|
|
10260
10268
|
ngDevMode.rendererSetProperty++;
|
|
@@ -10274,7 +10282,7 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
10274
10282
|
// If the node is a container and the property didn't
|
|
10275
10283
|
// match any of the inputs or schemas we should throw.
|
|
10276
10284
|
if (ngDevMode && !matchingSchemas(tView.schemas, tNode.value)) {
|
|
10277
|
-
logUnknownPropertyError(propName, tNode);
|
|
10285
|
+
logUnknownPropertyError(propName, tNode.value);
|
|
10278
10286
|
}
|
|
10279
10287
|
}
|
|
10280
10288
|
}
|
|
@@ -10326,21 +10334,36 @@ function setNgReflectProperties(lView, element, type, dataValue, value) {
|
|
|
10326
10334
|
}
|
|
10327
10335
|
}
|
|
10328
10336
|
}
|
|
10329
|
-
|
|
10337
|
+
/**
|
|
10338
|
+
* Validates that the property of the element is known at runtime and returns
|
|
10339
|
+
* false if it's not the case.
|
|
10340
|
+
* This check is relevant for JIT-compiled components (for AOT-compiled
|
|
10341
|
+
* ones this check happens at build time).
|
|
10342
|
+
*
|
|
10343
|
+
* The property is considered known if either:
|
|
10344
|
+
* - it's a known property of the element
|
|
10345
|
+
* - the element is allowed by one of the schemas
|
|
10346
|
+
* - the property is used for animations
|
|
10347
|
+
*
|
|
10348
|
+
* @param element Element to validate
|
|
10349
|
+
* @param tagName Name of the tag to check
|
|
10350
|
+
* @param propName Name of the property to check
|
|
10351
|
+
* @param schemas Array of schemas
|
|
10352
|
+
*/
|
|
10353
|
+
function validateProperty(element, tagName, propName, schemas) {
|
|
10330
10354
|
// If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
|
|
10331
10355
|
// mode where this check happens at compile time. In JIT mode, `schemas` is always present and
|
|
10332
10356
|
// defined as an array (as an empty array in case `schemas` field is not defined) and we should
|
|
10333
10357
|
// execute the check below.
|
|
10334
|
-
if (
|
|
10358
|
+
if (schemas === null)
|
|
10335
10359
|
return true;
|
|
10336
|
-
// The property is considered valid if the element matches the schema, it exists on the element
|
|
10360
|
+
// The property is considered valid if the element matches the schema, it exists on the element,
|
|
10337
10361
|
// or it is synthetic, and we are in a browser context (web worker nodes should be skipped).
|
|
10338
|
-
if (matchingSchemas(
|
|
10339
|
-
isAnimationProp(propName)) {
|
|
10362
|
+
if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
|
|
10340
10363
|
return true;
|
|
10341
10364
|
}
|
|
10342
10365
|
// Note: `typeof Node` returns 'function' in most browsers, but on IE it is 'object' so we
|
|
10343
|
-
// need to account for both here, while being careful
|
|
10366
|
+
// need to account for both here, while being careful with `typeof null` also returning 'object'.
|
|
10344
10367
|
return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
|
|
10345
10368
|
}
|
|
10346
10369
|
/**
|
|
@@ -10363,10 +10386,10 @@ function matchingSchemas(schemas, tagName) {
|
|
|
10363
10386
|
/**
|
|
10364
10387
|
* Logs an error that a property is not supported on an element.
|
|
10365
10388
|
* @param propName Name of the invalid property.
|
|
10366
|
-
* @param
|
|
10389
|
+
* @param tagName Name of the node on which we encountered the property.
|
|
10367
10390
|
*/
|
|
10368
|
-
function logUnknownPropertyError(propName,
|
|
10369
|
-
|
|
10391
|
+
function logUnknownPropertyError(propName, tagName) {
|
|
10392
|
+
const message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'.`;
|
|
10370
10393
|
console.error(formatRuntimeError(303 /* UNKNOWN_BINDING */, message));
|
|
10371
10394
|
}
|
|
10372
10395
|
/**
|
|
@@ -10583,8 +10606,11 @@ function findDirectiveDefMatches(tView, viewData, tNode) {
|
|
|
10583
10606
|
if (ngDevMode) {
|
|
10584
10607
|
assertTNodeType(tNode, 2 /* Element */, `"${tNode.value}" tags cannot be used as component hosts. ` +
|
|
10585
10608
|
`Please use a different tag to activate the ${stringify(def.type)} component.`);
|
|
10586
|
-
if (tNode.flags & 2 /* isComponentHost */)
|
|
10587
|
-
|
|
10609
|
+
if (tNode.flags & 2 /* isComponentHost */) {
|
|
10610
|
+
// If another component has been matched previously, it's the first element in the
|
|
10611
|
+
// `matches` array, see how we store components/directives in `matches` below.
|
|
10612
|
+
throwMultipleComponentError(tNode, matches[0].type, def.type);
|
|
10613
|
+
}
|
|
10588
10614
|
}
|
|
10589
10615
|
markAsComponentHost(tView, tNode);
|
|
10590
10616
|
// The component is always stored first with directives after.
|
|
@@ -11386,6 +11412,14 @@ const NOT_YET = {};
|
|
|
11386
11412
|
* a circular dependency among the providers.
|
|
11387
11413
|
*/
|
|
11388
11414
|
const CIRCULAR = {};
|
|
11415
|
+
/**
|
|
11416
|
+
* A multi-provider token for initialization functions that will run upon construction of a
|
|
11417
|
+
* non-view injector.
|
|
11418
|
+
*
|
|
11419
|
+
* @publicApi
|
|
11420
|
+
*/
|
|
11421
|
+
const INJECTOR_INITIALIZER = new InjectionToken('INJECTOR_INITIALIZER');
|
|
11422
|
+
const INJECTOR_DEF_TYPES = new InjectionToken('INJECTOR_DEF_TYPES');
|
|
11389
11423
|
/**
|
|
11390
11424
|
* A lazily initialized NullInjector.
|
|
11391
11425
|
*/
|
|
@@ -11403,7 +11437,7 @@ function getNullInjector() {
|
|
|
11403
11437
|
*/
|
|
11404
11438
|
function createInjector(defType, parent = null, additionalProviders = null, name) {
|
|
11405
11439
|
const injector = createInjectorWithoutInjectorInstances(defType, parent, additionalProviders, name);
|
|
11406
|
-
injector.
|
|
11440
|
+
injector.resolveInjectorInitializers();
|
|
11407
11441
|
return injector;
|
|
11408
11442
|
}
|
|
11409
11443
|
/**
|
|
@@ -11411,42 +11445,180 @@ function createInjector(defType, parent = null, additionalProviders = null, name
|
|
|
11411
11445
|
* where resolving the injector types immediately can lead to an infinite loop. The injector types
|
|
11412
11446
|
* should be resolved at a later point by calling `_resolveInjectorDefTypes`.
|
|
11413
11447
|
*/
|
|
11414
|
-
function createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name) {
|
|
11415
|
-
|
|
11448
|
+
function createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name, scopes = new Set()) {
|
|
11449
|
+
const providers = [
|
|
11450
|
+
...flatten(additionalProviders || EMPTY_ARRAY),
|
|
11451
|
+
...importProvidersFrom(defType),
|
|
11452
|
+
];
|
|
11453
|
+
name = name || (typeof defType === 'object' ? undefined : stringify(defType));
|
|
11454
|
+
return new R3Injector(providers, parent || getNullInjector(), name || null, scopes);
|
|
11455
|
+
}
|
|
11456
|
+
/**
|
|
11457
|
+
* The logic visits an `InjectorType` or `InjectorTypeWithProviders` and all of its transitive
|
|
11458
|
+
* providers and invokes specified callbacks when:
|
|
11459
|
+
* - an injector type is visited (typically an NgModule)
|
|
11460
|
+
* - a provider is visited
|
|
11461
|
+
*
|
|
11462
|
+
* If an `InjectorTypeWithProviders` that declares providers besides the type is specified,
|
|
11463
|
+
* the function will return "true" to indicate that the providers of the type definition need
|
|
11464
|
+
* to be processed. This allows us to process providers of injector types after all imports of
|
|
11465
|
+
* an injector definition are processed. (following View Engine semantics: see FW-1349)
|
|
11466
|
+
*/
|
|
11467
|
+
function walkProviderTree(container, providersOut, parents, dedup) {
|
|
11468
|
+
container = resolveForwardRef(container);
|
|
11469
|
+
if (!container)
|
|
11470
|
+
return false;
|
|
11471
|
+
// Either the defOrWrappedDef is an InjectorType (with injector def) or an
|
|
11472
|
+
// InjectorDefTypeWithProviders (aka ModuleWithProviders). Detecting either is a megamorphic
|
|
11473
|
+
// read, so care is taken to only do the read once.
|
|
11474
|
+
// First attempt to read the injector def (`ɵinj`).
|
|
11475
|
+
let def = getInjectorDef(container);
|
|
11476
|
+
// If that's not present, then attempt to read ngModule from the InjectorDefTypeWithProviders.
|
|
11477
|
+
const ngModule = (def == null) && container.ngModule || undefined;
|
|
11478
|
+
// Determine the InjectorType. In the case where `defOrWrappedDef` is an `InjectorType`,
|
|
11479
|
+
// then this is easy. In the case of an InjectorDefTypeWithProviders, then the definition type
|
|
11480
|
+
// is the `ngModule`.
|
|
11481
|
+
const defType = (ngModule === undefined) ? container : ngModule;
|
|
11482
|
+
// Check for circular dependencies.
|
|
11483
|
+
if (ngDevMode && parents.indexOf(defType) !== -1) {
|
|
11484
|
+
const defName = stringify(defType);
|
|
11485
|
+
const path = parents.map(stringify);
|
|
11486
|
+
throwCyclicDependencyError(defName, path);
|
|
11487
|
+
}
|
|
11488
|
+
// Check for multiple imports of the same module
|
|
11489
|
+
const isDuplicate = dedup.has(defType);
|
|
11490
|
+
// Finally, if defOrWrappedType was an `InjectorDefTypeWithProviders`, then the actual
|
|
11491
|
+
// `InjectorDef` is on its `ngModule`.
|
|
11492
|
+
if (ngModule !== undefined) {
|
|
11493
|
+
def = getInjectorDef(ngModule);
|
|
11494
|
+
}
|
|
11495
|
+
// If no definition was found, it might be from exports. Remove it.
|
|
11496
|
+
if (def == null) {
|
|
11497
|
+
return false;
|
|
11498
|
+
}
|
|
11499
|
+
// Add providers in the same way that @NgModule resolution did:
|
|
11500
|
+
// First, include providers from any imports.
|
|
11501
|
+
if (def.imports != null && !isDuplicate) {
|
|
11502
|
+
// Before processing defType's imports, add it to the set of parents. This way, if it ends
|
|
11503
|
+
// up deeply importing itself, this can be detected.
|
|
11504
|
+
ngDevMode && parents.push(defType);
|
|
11505
|
+
// Add it to the set of dedups. This way we can detect multiple imports of the same module
|
|
11506
|
+
dedup.add(defType);
|
|
11507
|
+
let importTypesWithProviders;
|
|
11508
|
+
try {
|
|
11509
|
+
deepForEach(def.imports, imported => {
|
|
11510
|
+
if (walkProviderTree(imported, providersOut, parents, dedup)) {
|
|
11511
|
+
if (importTypesWithProviders === undefined)
|
|
11512
|
+
importTypesWithProviders = [];
|
|
11513
|
+
// If the processed import is an injector type with providers, we store it in the
|
|
11514
|
+
// list of import types with providers, so that we can process those afterwards.
|
|
11515
|
+
importTypesWithProviders.push(imported);
|
|
11516
|
+
}
|
|
11517
|
+
});
|
|
11518
|
+
}
|
|
11519
|
+
finally {
|
|
11520
|
+
// Remove it from the parents set when finished.
|
|
11521
|
+
ngDevMode && parents.pop();
|
|
11522
|
+
}
|
|
11523
|
+
// Imports which are declared with providers (TypeWithProviders) need to be processed
|
|
11524
|
+
// after all imported modules are processed. This is similar to how View Engine
|
|
11525
|
+
// processes/merges module imports in the metadata resolver. See: FW-1349.
|
|
11526
|
+
if (importTypesWithProviders !== undefined) {
|
|
11527
|
+
for (let i = 0; i < importTypesWithProviders.length; i++) {
|
|
11528
|
+
const { ngModule, providers } = importTypesWithProviders[i];
|
|
11529
|
+
deepForEach(providers, provider => {
|
|
11530
|
+
validateProvider(provider, providers || EMPTY_ARRAY, ngModule);
|
|
11531
|
+
providersOut.push(provider);
|
|
11532
|
+
});
|
|
11533
|
+
}
|
|
11534
|
+
}
|
|
11535
|
+
}
|
|
11536
|
+
// Track the InjectorType and add a provider for it.
|
|
11537
|
+
// It's important that this is done after the def's imports.
|
|
11538
|
+
const factory = getFactoryDef(defType) || (() => new defType());
|
|
11539
|
+
// Provider to create `defType` using its factory.
|
|
11540
|
+
providersOut.push({
|
|
11541
|
+
provide: defType,
|
|
11542
|
+
useFactory: factory,
|
|
11543
|
+
deps: EMPTY_ARRAY,
|
|
11544
|
+
});
|
|
11545
|
+
providersOut.push({
|
|
11546
|
+
provide: INJECTOR_DEF_TYPES,
|
|
11547
|
+
useValue: defType,
|
|
11548
|
+
multi: true,
|
|
11549
|
+
});
|
|
11550
|
+
// Provider to eagerly instantiate `defType` via `INJECTOR_INITIALIZER`.
|
|
11551
|
+
providersOut.push({
|
|
11552
|
+
provide: INJECTOR_INITIALIZER,
|
|
11553
|
+
useValue: () => inject(defType),
|
|
11554
|
+
multi: true,
|
|
11555
|
+
});
|
|
11556
|
+
// Next, include providers listed on the definition itself.
|
|
11557
|
+
const defProviders = def.providers;
|
|
11558
|
+
if (defProviders != null && !isDuplicate) {
|
|
11559
|
+
const injectorType = container;
|
|
11560
|
+
deepForEach(defProviders, provider => {
|
|
11561
|
+
// TODO: fix cast
|
|
11562
|
+
validateProvider(provider, defProviders, injectorType);
|
|
11563
|
+
providersOut.push(provider);
|
|
11564
|
+
});
|
|
11565
|
+
}
|
|
11566
|
+
return (ngModule !== undefined &&
|
|
11567
|
+
container.providers !== undefined);
|
|
11568
|
+
}
|
|
11569
|
+
/**
|
|
11570
|
+
* An `Injector` that's part of the environment injector hierarchy, which exists outside of the
|
|
11571
|
+
* component tree.
|
|
11572
|
+
*/
|
|
11573
|
+
class EnvironmentInjector {
|
|
11416
11574
|
}
|
|
11417
|
-
|
|
11418
|
-
|
|
11575
|
+
/**
|
|
11576
|
+
* Collects providers from all NgModules, including transitively imported ones.
|
|
11577
|
+
*
|
|
11578
|
+
* @returns The list of collected providers from the specified list of NgModules.
|
|
11579
|
+
* @publicApi
|
|
11580
|
+
*/
|
|
11581
|
+
function importProvidersFrom(...injectorTypes) {
|
|
11582
|
+
const providers = [];
|
|
11583
|
+
deepForEach(injectorTypes, injectorDef => walkProviderTree(injectorDef, providers, [], new Set()));
|
|
11584
|
+
return providers;
|
|
11585
|
+
}
|
|
11586
|
+
class R3Injector extends EnvironmentInjector {
|
|
11587
|
+
constructor(providers, parent, source, scopes) {
|
|
11588
|
+
super();
|
|
11419
11589
|
this.parent = parent;
|
|
11590
|
+
this.source = source;
|
|
11591
|
+
this.scopes = scopes;
|
|
11420
11592
|
/**
|
|
11421
11593
|
* Map of tokens to records which contain the instances of those tokens.
|
|
11422
11594
|
* - `null` value implies that we don't have the record. Used by tree-shakable injectors
|
|
11423
11595
|
* to prevent further searches.
|
|
11424
11596
|
*/
|
|
11425
11597
|
this.records = new Map();
|
|
11426
|
-
/**
|
|
11427
|
-
* The transitive set of `InjectorType`s which define this injector.
|
|
11428
|
-
*/
|
|
11429
|
-
this.injectorDefTypes = new Set();
|
|
11430
11598
|
/**
|
|
11431
11599
|
* Set of values instantiated by this injector which contain `ngOnDestroy` lifecycle hooks.
|
|
11432
11600
|
*/
|
|
11433
|
-
this.
|
|
11601
|
+
this._ngOnDestroyHooks = new Set();
|
|
11602
|
+
this._onDestroyHooks = [];
|
|
11434
11603
|
this._destroyed = false;
|
|
11435
|
-
|
|
11436
|
-
|
|
11437
|
-
|
|
11438
|
-
|
|
11439
|
-
additionalProviders &&
|
|
11440
|
-
deepForEach(additionalProviders, provider => this.processProvider(provider, def, additionalProviders));
|
|
11441
|
-
deepForEach([def], injectorDef => this.processInjectorType(injectorDef, [], dedupStack));
|
|
11604
|
+
// Start off by creating Records for every provider.
|
|
11605
|
+
for (const provider of providers) {
|
|
11606
|
+
this.processProvider(provider);
|
|
11607
|
+
}
|
|
11442
11608
|
// Make sure the INJECTOR token provides this injector.
|
|
11443
11609
|
this.records.set(INJECTOR, makeRecord(undefined, this));
|
|
11610
|
+
// And `EnvironmentInjector` if the current injector is supposed to be env-scoped.
|
|
11611
|
+
if (scopes.has('environment')) {
|
|
11612
|
+
this.records.set(EnvironmentInjector, makeRecord(undefined, this));
|
|
11613
|
+
}
|
|
11444
11614
|
// Detect whether this injector has the APP_ROOT_SCOPE token and thus should provide
|
|
11445
11615
|
// any injectable scoped to APP_ROOT_SCOPE.
|
|
11446
11616
|
const record = this.records.get(INJECTOR_SCOPE);
|
|
11447
|
-
|
|
11448
|
-
|
|
11449
|
-
|
|
11617
|
+
if (record != null && typeof record.value === 'string') {
|
|
11618
|
+
this.scopes.add(record.value);
|
|
11619
|
+
}
|
|
11620
|
+
this.injectorDefTypes =
|
|
11621
|
+
new Set(this.get(INJECTOR_DEF_TYPES.multi, EMPTY_ARRAY, InjectFlags.Self));
|
|
11450
11622
|
}
|
|
11451
11623
|
/**
|
|
11452
11624
|
* Flag indicating that this injector was previously destroyed.
|
|
@@ -11466,15 +11638,24 @@ class R3Injector {
|
|
|
11466
11638
|
this._destroyed = true;
|
|
11467
11639
|
try {
|
|
11468
11640
|
// Call all the lifecycle hooks.
|
|
11469
|
-
|
|
11641
|
+
for (const service of this._ngOnDestroyHooks) {
|
|
11642
|
+
service.ngOnDestroy();
|
|
11643
|
+
}
|
|
11644
|
+
for (const hook of this._onDestroyHooks) {
|
|
11645
|
+
hook();
|
|
11646
|
+
}
|
|
11470
11647
|
}
|
|
11471
11648
|
finally {
|
|
11472
11649
|
// Release all references.
|
|
11473
11650
|
this.records.clear();
|
|
11474
|
-
this.
|
|
11651
|
+
this._ngOnDestroyHooks.clear();
|
|
11475
11652
|
this.injectorDefTypes.clear();
|
|
11653
|
+
this._onDestroyHooks.length = 0;
|
|
11476
11654
|
}
|
|
11477
11655
|
}
|
|
11656
|
+
onDestroy(callback) {
|
|
11657
|
+
this._onDestroyHooks.push(callback);
|
|
11658
|
+
}
|
|
11478
11659
|
get(token, notFoundValue = THROW_IF_NOT_FOUND, flags = InjectFlags.Default) {
|
|
11479
11660
|
this.assertNotDestroyed();
|
|
11480
11661
|
// Set the injection context.
|
|
@@ -11538,12 +11719,26 @@ class R3Injector {
|
|
|
11538
11719
|
}
|
|
11539
11720
|
}
|
|
11540
11721
|
/** @internal */
|
|
11541
|
-
|
|
11542
|
-
|
|
11722
|
+
resolveInjectorInitializers() {
|
|
11723
|
+
const previousInjector = setCurrentInjector(this);
|
|
11724
|
+
const previousInjectImplementation = setInjectImplementation(undefined);
|
|
11725
|
+
try {
|
|
11726
|
+
const initializers = this.get(INJECTOR_INITIALIZER.multi, EMPTY_ARRAY, InjectFlags.Self);
|
|
11727
|
+
for (const initializer of initializers) {
|
|
11728
|
+
initializer();
|
|
11729
|
+
}
|
|
11730
|
+
}
|
|
11731
|
+
finally {
|
|
11732
|
+
setCurrentInjector(previousInjector);
|
|
11733
|
+
setInjectImplementation(previousInjectImplementation);
|
|
11734
|
+
}
|
|
11543
11735
|
}
|
|
11544
11736
|
toString() {
|
|
11545
|
-
const tokens = []
|
|
11546
|
-
records
|
|
11737
|
+
const tokens = [];
|
|
11738
|
+
const records = this.records;
|
|
11739
|
+
for (const token of records.keys()) {
|
|
11740
|
+
tokens.push(stringify(token));
|
|
11741
|
+
}
|
|
11547
11742
|
return `R3Injector[${tokens.join(', ')}]`;
|
|
11548
11743
|
}
|
|
11549
11744
|
assertNotDestroyed() {
|
|
@@ -11551,105 +11746,16 @@ class R3Injector {
|
|
|
11551
11746
|
throw new RuntimeError(205 /* INJECTOR_ALREADY_DESTROYED */, ngDevMode && 'Injector has already been destroyed.');
|
|
11552
11747
|
}
|
|
11553
11748
|
}
|
|
11554
|
-
/**
|
|
11555
|
-
* Add an `InjectorType` or `InjectorTypeWithProviders` and all of its transitive providers
|
|
11556
|
-
* to this injector.
|
|
11557
|
-
*
|
|
11558
|
-
* If an `InjectorTypeWithProviders` that declares providers besides the type is specified,
|
|
11559
|
-
* the function will return "true" to indicate that the providers of the type definition need
|
|
11560
|
-
* to be processed. This allows us to process providers of injector types after all imports of
|
|
11561
|
-
* an injector definition are processed. (following View Engine semantics: see FW-1349)
|
|
11562
|
-
*/
|
|
11563
|
-
processInjectorType(defOrWrappedDef, parents, dedupStack) {
|
|
11564
|
-
defOrWrappedDef = resolveForwardRef(defOrWrappedDef);
|
|
11565
|
-
if (!defOrWrappedDef)
|
|
11566
|
-
return false;
|
|
11567
|
-
// Either the defOrWrappedDef is an InjectorType (with injector def) or an
|
|
11568
|
-
// InjectorDefTypeWithProviders (aka ModuleWithProviders). Detecting either is a megamorphic
|
|
11569
|
-
// read, so care is taken to only do the read once.
|
|
11570
|
-
// First attempt to read the injector def (`ɵinj`).
|
|
11571
|
-
let def = getInjectorDef(defOrWrappedDef);
|
|
11572
|
-
// If that's not present, then attempt to read ngModule from the InjectorDefTypeWithProviders.
|
|
11573
|
-
const ngModule = (def == null) && defOrWrappedDef.ngModule || undefined;
|
|
11574
|
-
// Determine the InjectorType. In the case where `defOrWrappedDef` is an `InjectorType`,
|
|
11575
|
-
// then this is easy. In the case of an InjectorDefTypeWithProviders, then the definition type
|
|
11576
|
-
// is the `ngModule`.
|
|
11577
|
-
const defType = (ngModule === undefined) ? defOrWrappedDef : ngModule;
|
|
11578
|
-
// Check for circular dependencies.
|
|
11579
|
-
if (ngDevMode && parents.indexOf(defType) !== -1) {
|
|
11580
|
-
const defName = stringify(defType);
|
|
11581
|
-
const path = parents.map(stringify);
|
|
11582
|
-
throwCyclicDependencyError(defName, path);
|
|
11583
|
-
}
|
|
11584
|
-
// Check for multiple imports of the same module
|
|
11585
|
-
const isDuplicate = dedupStack.indexOf(defType) !== -1;
|
|
11586
|
-
// Finally, if defOrWrappedType was an `InjectorDefTypeWithProviders`, then the actual
|
|
11587
|
-
// `InjectorDef` is on its `ngModule`.
|
|
11588
|
-
if (ngModule !== undefined) {
|
|
11589
|
-
def = getInjectorDef(ngModule);
|
|
11590
|
-
}
|
|
11591
|
-
// If no definition was found, it might be from exports. Remove it.
|
|
11592
|
-
if (def == null) {
|
|
11593
|
-
return false;
|
|
11594
|
-
}
|
|
11595
|
-
// Add providers in the same way that @NgModule resolution did:
|
|
11596
|
-
// First, include providers from any imports.
|
|
11597
|
-
if (def.imports != null && !isDuplicate) {
|
|
11598
|
-
// Before processing defType's imports, add it to the set of parents. This way, if it ends
|
|
11599
|
-
// up deeply importing itself, this can be detected.
|
|
11600
|
-
ngDevMode && parents.push(defType);
|
|
11601
|
-
// Add it to the set of dedups. This way we can detect multiple imports of the same module
|
|
11602
|
-
dedupStack.push(defType);
|
|
11603
|
-
let importTypesWithProviders;
|
|
11604
|
-
try {
|
|
11605
|
-
deepForEach(def.imports, imported => {
|
|
11606
|
-
if (this.processInjectorType(imported, parents, dedupStack)) {
|
|
11607
|
-
if (importTypesWithProviders === undefined)
|
|
11608
|
-
importTypesWithProviders = [];
|
|
11609
|
-
// If the processed import is an injector type with providers, we store it in the
|
|
11610
|
-
// list of import types with providers, so that we can process those afterwards.
|
|
11611
|
-
importTypesWithProviders.push(imported);
|
|
11612
|
-
}
|
|
11613
|
-
});
|
|
11614
|
-
}
|
|
11615
|
-
finally {
|
|
11616
|
-
// Remove it from the parents set when finished.
|
|
11617
|
-
ngDevMode && parents.pop();
|
|
11618
|
-
}
|
|
11619
|
-
// Imports which are declared with providers (TypeWithProviders) need to be processed
|
|
11620
|
-
// after all imported modules are processed. This is similar to how View Engine
|
|
11621
|
-
// processes/merges module imports in the metadata resolver. See: FW-1349.
|
|
11622
|
-
if (importTypesWithProviders !== undefined) {
|
|
11623
|
-
for (let i = 0; i < importTypesWithProviders.length; i++) {
|
|
11624
|
-
const { ngModule, providers } = importTypesWithProviders[i];
|
|
11625
|
-
deepForEach(providers, provider => this.processProvider(provider, ngModule, providers || EMPTY_ARRAY));
|
|
11626
|
-
}
|
|
11627
|
-
}
|
|
11628
|
-
}
|
|
11629
|
-
// Track the InjectorType and add a provider for it. It's important that this is done after the
|
|
11630
|
-
// def's imports.
|
|
11631
|
-
this.injectorDefTypes.add(defType);
|
|
11632
|
-
const factory = getFactoryDef(defType) || (() => new defType());
|
|
11633
|
-
this.records.set(defType, makeRecord(factory, NOT_YET));
|
|
11634
|
-
// Next, include providers listed on the definition itself.
|
|
11635
|
-
const defProviders = def.providers;
|
|
11636
|
-
if (defProviders != null && !isDuplicate) {
|
|
11637
|
-
const injectorType = defOrWrappedDef;
|
|
11638
|
-
deepForEach(defProviders, provider => this.processProvider(provider, injectorType, defProviders));
|
|
11639
|
-
}
|
|
11640
|
-
return (ngModule !== undefined &&
|
|
11641
|
-
defOrWrappedDef.providers !== undefined);
|
|
11642
|
-
}
|
|
11643
11749
|
/**
|
|
11644
11750
|
* Process a `SingleProvider` and add it.
|
|
11645
11751
|
*/
|
|
11646
|
-
processProvider(provider
|
|
11752
|
+
processProvider(provider) {
|
|
11647
11753
|
// Determine the token from the provider. Either it's its own token, or has a {provide: ...}
|
|
11648
11754
|
// property.
|
|
11649
11755
|
provider = resolveForwardRef(provider);
|
|
11650
11756
|
let token = isTypeProvider(provider) ? provider : resolveForwardRef(provider && provider.provide);
|
|
11651
11757
|
// Construct a `Record` for the provider.
|
|
11652
|
-
const record = providerToRecord(provider
|
|
11758
|
+
const record = providerToRecord(provider);
|
|
11653
11759
|
if (!isTypeProvider(provider) && provider.multi === true) {
|
|
11654
11760
|
// If the provider indicates that it's a multi-provider, process it specially.
|
|
11655
11761
|
// First check whether it's been defined already.
|
|
@@ -11685,7 +11791,7 @@ class R3Injector {
|
|
|
11685
11791
|
record.value = record.factory();
|
|
11686
11792
|
}
|
|
11687
11793
|
if (typeof record.value === 'object' && record.value && hasOnDestroy(record.value)) {
|
|
11688
|
-
this.
|
|
11794
|
+
this._ngOnDestroyHooks.add(record.value);
|
|
11689
11795
|
}
|
|
11690
11796
|
return record.value;
|
|
11691
11797
|
}
|
|
@@ -11695,7 +11801,7 @@ class R3Injector {
|
|
|
11695
11801
|
}
|
|
11696
11802
|
const providedIn = resolveForwardRef(def.providedIn);
|
|
11697
11803
|
if (typeof providedIn === 'string') {
|
|
11698
|
-
return providedIn === 'any' || (
|
|
11804
|
+
return providedIn === 'any' || (this.scopes.has(providedIn));
|
|
11699
11805
|
}
|
|
11700
11806
|
else {
|
|
11701
11807
|
return this.injectorDefTypes.has(providedIn);
|
|
@@ -11741,12 +11847,12 @@ function getUndecoratedInjectableFactory(token) {
|
|
|
11741
11847
|
return () => new token();
|
|
11742
11848
|
}
|
|
11743
11849
|
}
|
|
11744
|
-
function providerToRecord(provider
|
|
11850
|
+
function providerToRecord(provider) {
|
|
11745
11851
|
if (isValueProvider(provider)) {
|
|
11746
11852
|
return makeRecord(undefined, provider.useValue);
|
|
11747
11853
|
}
|
|
11748
11854
|
else {
|
|
11749
|
-
const factory = providerToFactory(provider
|
|
11855
|
+
const factory = providerToFactory(provider);
|
|
11750
11856
|
return makeRecord(factory, NOT_YET);
|
|
11751
11857
|
}
|
|
11752
11858
|
}
|
|
@@ -11820,6 +11926,17 @@ function couldBeInjectableType(value) {
|
|
|
11820
11926
|
return (typeof value === 'function') ||
|
|
11821
11927
|
(typeof value === 'object' && value instanceof InjectionToken);
|
|
11822
11928
|
}
|
|
11929
|
+
function validateProvider(provider, providers, containerType) {
|
|
11930
|
+
if (isTypeProvider(provider) || isValueProvider(provider) || isFactoryProvider(provider) ||
|
|
11931
|
+
isExistingProvider(provider)) {
|
|
11932
|
+
return;
|
|
11933
|
+
}
|
|
11934
|
+
// Here we expect the provider to be a `useClass` provider (by elimination).
|
|
11935
|
+
const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide));
|
|
11936
|
+
if (ngDevMode && !classRef) {
|
|
11937
|
+
throwInvalidProviderError(containerType, providers, provider);
|
|
11938
|
+
}
|
|
11939
|
+
}
|
|
11823
11940
|
|
|
11824
11941
|
/**
|
|
11825
11942
|
* @license
|
|
@@ -12596,7 +12713,7 @@ function ɵɵInheritDefinitionFeature(definition) {
|
|
|
12596
12713
|
else {
|
|
12597
12714
|
if (superType.ɵcmp) {
|
|
12598
12715
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
12599
|
-
|
|
12716
|
+
`Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}` :
|
|
12600
12717
|
'';
|
|
12601
12718
|
throw new RuntimeError(903 /* INVALID_INHERITANCE */, errorMessage);
|
|
12602
12719
|
}
|
|
@@ -12842,22 +12959,8 @@ function getSymbolIterator() {
|
|
|
12842
12959
|
* Use of this source code is governed by an MIT-style license that can be
|
|
12843
12960
|
* found in the LICENSE file at https://angular.io/license
|
|
12844
12961
|
*/
|
|
12845
|
-
function
|
|
12846
|
-
|
|
12847
|
-
const isListLikeIterableB = isListLikeIterable(b);
|
|
12848
|
-
if (isListLikeIterableA && isListLikeIterableB) {
|
|
12849
|
-
return areIterablesEqual(a, b, devModeEqual);
|
|
12850
|
-
}
|
|
12851
|
-
else {
|
|
12852
|
-
const isAObject = a && (typeof a === 'object' || typeof a === 'function');
|
|
12853
|
-
const isBObject = b && (typeof b === 'object' || typeof b === 'function');
|
|
12854
|
-
if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {
|
|
12855
|
-
return true;
|
|
12856
|
-
}
|
|
12857
|
-
else {
|
|
12858
|
-
return Object.is(a, b);
|
|
12859
|
-
}
|
|
12860
|
-
}
|
|
12962
|
+
function isIterable(obj) {
|
|
12963
|
+
return obj !== null && typeof obj === 'object' && obj[getSymbolIterator()] !== undefined;
|
|
12861
12964
|
}
|
|
12862
12965
|
function isListLikeIterable(obj) {
|
|
12863
12966
|
if (!isJsObject(obj))
|
|
@@ -12898,6 +13001,31 @@ function isJsObject(o) {
|
|
|
12898
13001
|
return o !== null && (typeof o === 'function' || typeof o === 'object');
|
|
12899
13002
|
}
|
|
12900
13003
|
|
|
13004
|
+
/**
|
|
13005
|
+
* @license
|
|
13006
|
+
* Copyright Google LLC All Rights Reserved.
|
|
13007
|
+
*
|
|
13008
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
13009
|
+
* found in the LICENSE file at https://angular.io/license
|
|
13010
|
+
*/
|
|
13011
|
+
function devModeEqual(a, b) {
|
|
13012
|
+
const isListLikeIterableA = isListLikeIterable(a);
|
|
13013
|
+
const isListLikeIterableB = isListLikeIterable(b);
|
|
13014
|
+
if (isListLikeIterableA && isListLikeIterableB) {
|
|
13015
|
+
return areIterablesEqual(a, b, devModeEqual);
|
|
13016
|
+
}
|
|
13017
|
+
else {
|
|
13018
|
+
const isAObject = a && (typeof a === 'object' || typeof a === 'function');
|
|
13019
|
+
const isBObject = b && (typeof b === 'object' || typeof b === 'function');
|
|
13020
|
+
if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {
|
|
13021
|
+
return true;
|
|
13022
|
+
}
|
|
13023
|
+
else {
|
|
13024
|
+
return Object.is(a, b);
|
|
13025
|
+
}
|
|
13026
|
+
}
|
|
13027
|
+
}
|
|
13028
|
+
|
|
12901
13029
|
/**
|
|
12902
13030
|
* @license
|
|
12903
13031
|
* Copyright Google LLC All Rights Reserved.
|
|
@@ -21042,6 +21170,13 @@ function ɵɵProvidersFeature(providers, viewProviders = []) {
|
|
|
21042
21170
|
};
|
|
21043
21171
|
}
|
|
21044
21172
|
|
|
21173
|
+
/**
|
|
21174
|
+
* TODO: Implements standalone stuff!
|
|
21175
|
+
*
|
|
21176
|
+
* @codeGenApi
|
|
21177
|
+
*/
|
|
21178
|
+
function ɵɵStandaloneFeature(definition) { }
|
|
21179
|
+
|
|
21045
21180
|
/**
|
|
21046
21181
|
* @license
|
|
21047
21182
|
* Copyright Google LLC All Rights Reserved.
|
|
@@ -21272,7 +21407,7 @@ class Version {
|
|
|
21272
21407
|
/**
|
|
21273
21408
|
* @publicApi
|
|
21274
21409
|
*/
|
|
21275
|
-
const VERSION = new Version('14.0.0-next.
|
|
21410
|
+
const VERSION = new Version('14.0.0-next.14');
|
|
21276
21411
|
|
|
21277
21412
|
/**
|
|
21278
21413
|
* @license
|
|
@@ -21724,9 +21859,12 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
21724
21859
|
get outputs() {
|
|
21725
21860
|
return toRefArray(this.componentDef.outputs);
|
|
21726
21861
|
}
|
|
21727
|
-
create(injector, projectableNodes, rootSelectorOrNode,
|
|
21728
|
-
|
|
21729
|
-
|
|
21862
|
+
create(injector, projectableNodes, rootSelectorOrNode, environmentInjector) {
|
|
21863
|
+
environmentInjector = environmentInjector || this.ngModule;
|
|
21864
|
+
let realEnvironmentInjector = environmentInjector instanceof EnvironmentInjector ?
|
|
21865
|
+
environmentInjector :
|
|
21866
|
+
environmentInjector?.injector;
|
|
21867
|
+
const rootViewInjector = realEnvironmentInjector ? new ChainedInjector(injector, realEnvironmentInjector) : injector;
|
|
21730
21868
|
const rendererFactory = rootViewInjector.get(RendererFactory2, domRendererFactory3);
|
|
21731
21869
|
const sanitizer = rootViewInjector.get(Sanitizer, null);
|
|
21732
21870
|
const hostRenderer = rendererFactory.createRenderer(null, this.componentDef);
|
|
@@ -21952,11 +22090,11 @@ class NgModuleRef extends NgModuleRef$1 {
|
|
|
21952
22090
|
provide: ComponentFactoryResolver$1,
|
|
21953
22091
|
useValue: this.componentFactoryResolver
|
|
21954
22092
|
}
|
|
21955
|
-
], stringify(ngModuleType));
|
|
22093
|
+
], stringify(ngModuleType), new Set(['environment']));
|
|
21956
22094
|
// We need to resolve the injector types separately from the injector creation, because
|
|
21957
22095
|
// the module might be trying to use this ref in its constructor for DI which will cause a
|
|
21958
22096
|
// circular error that will eventually error out, because the injector isn't created yet.
|
|
21959
|
-
this._r3Injector.
|
|
22097
|
+
this._r3Injector.resolveInjectorInitializers();
|
|
21960
22098
|
this.instance = this.get(ngModuleType);
|
|
21961
22099
|
}
|
|
21962
22100
|
get(token, notFoundValue = Injector.THROW_IF_NOT_FOUND, injectFlags = InjectFlags.Default) {
|
|
@@ -21986,6 +22124,35 @@ class NgModuleFactory extends NgModuleFactory$1 {
|
|
|
21986
22124
|
return new NgModuleRef(this.moduleType, parentInjector);
|
|
21987
22125
|
}
|
|
21988
22126
|
}
|
|
22127
|
+
class EnvironmentNgModuleRefAdapter extends NgModuleRef$1 {
|
|
22128
|
+
constructor(providers, parent, source) {
|
|
22129
|
+
super();
|
|
22130
|
+
this.componentFactoryResolver = new ComponentFactoryResolver(this);
|
|
22131
|
+
this.instance = null;
|
|
22132
|
+
const injector = new R3Injector([
|
|
22133
|
+
...providers,
|
|
22134
|
+
{ provide: NgModuleRef$1, useValue: this },
|
|
22135
|
+
{ provide: ComponentFactoryResolver$1, useValue: this.componentFactoryResolver },
|
|
22136
|
+
], parent || getNullInjector(), source, new Set(['environment']));
|
|
22137
|
+
this.injector = injector;
|
|
22138
|
+
injector.resolveInjectorInitializers();
|
|
22139
|
+
}
|
|
22140
|
+
destroy() {
|
|
22141
|
+
this.injector.destroy();
|
|
22142
|
+
}
|
|
22143
|
+
onDestroy(callback) {
|
|
22144
|
+
this.injector.onDestroy(callback);
|
|
22145
|
+
}
|
|
22146
|
+
}
|
|
22147
|
+
/**
|
|
22148
|
+
* Create a new environment injector.
|
|
22149
|
+
*
|
|
22150
|
+
* @publicApi
|
|
22151
|
+
*/
|
|
22152
|
+
function createEnvironmentInjector(providers, parent = null, debugName = null) {
|
|
22153
|
+
const adapter = new EnvironmentNgModuleRefAdapter(providers, parent, debugName);
|
|
22154
|
+
return adapter.injector;
|
|
22155
|
+
}
|
|
21989
22156
|
|
|
21990
22157
|
/**
|
|
21991
22158
|
* @license
|
|
@@ -22910,7 +23077,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
|
|
|
22910
23077
|
this.insert(viewRef, index);
|
|
22911
23078
|
return viewRef;
|
|
22912
23079
|
}
|
|
22913
|
-
createComponent(componentFactoryOrType, indexOrOptions, injector, projectableNodes,
|
|
23080
|
+
createComponent(componentFactoryOrType, indexOrOptions, injector, projectableNodes, environmentInjector) {
|
|
22914
23081
|
const isComponentFactory = componentFactoryOrType && !isType(componentFactoryOrType);
|
|
22915
23082
|
let index;
|
|
22916
23083
|
// This function supports 2 signatures and we need to handle options correctly for both:
|
|
@@ -22938,17 +23105,20 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
|
|
|
22938
23105
|
'is incompatible. Please use an object as the second argument instead.');
|
|
22939
23106
|
}
|
|
22940
23107
|
const options = (indexOrOptions || {});
|
|
23108
|
+
if (ngDevMode && options.environmentInjector && options.ngModuleRef) {
|
|
23109
|
+
throwError(`Cannot pass both environmentInjector and ngModuleRef options to createComponent().`);
|
|
23110
|
+
}
|
|
22941
23111
|
index = options.index;
|
|
22942
23112
|
injector = options.injector;
|
|
22943
23113
|
projectableNodes = options.projectableNodes;
|
|
22944
|
-
|
|
23114
|
+
environmentInjector = options.environmentInjector || options.ngModuleRef;
|
|
22945
23115
|
}
|
|
22946
23116
|
const componentFactory = isComponentFactory ?
|
|
22947
23117
|
componentFactoryOrType :
|
|
22948
23118
|
new ComponentFactory(getComponentDef(componentFactoryOrType));
|
|
22949
23119
|
const contextInjector = injector || this.parentInjector;
|
|
22950
23120
|
// If an `NgModuleRef` is not provided explicitly, try retrieving it from the DI tree.
|
|
22951
|
-
if (!
|
|
23121
|
+
if (!environmentInjector && componentFactory.ngModule == null) {
|
|
22952
23122
|
// For the `ComponentFactory` case, entering this logic is very unlikely, since we expect that
|
|
22953
23123
|
// an instance of a `ComponentFactory`, resolved via `ComponentFactoryResolver` would have an
|
|
22954
23124
|
// `ngModule` field. This is possible in some test scenarios and potentially in some JIT-based
|
|
@@ -22969,12 +23139,12 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
|
|
|
22969
23139
|
// DO NOT REFACTOR. The code here used to have a `injector.get(NgModuleRef, null) ||
|
|
22970
23140
|
// undefined` expression which seems to cause internal google apps to fail. This is documented
|
|
22971
23141
|
// in the following internal bug issue: go/b/142967802
|
|
22972
|
-
const result = _injector.get(
|
|
23142
|
+
const result = _injector.get(EnvironmentInjector, null);
|
|
22973
23143
|
if (result) {
|
|
22974
|
-
|
|
23144
|
+
environmentInjector = result;
|
|
22975
23145
|
}
|
|
22976
23146
|
}
|
|
22977
|
-
const componentRef = componentFactory.create(contextInjector, projectableNodes, undefined,
|
|
23147
|
+
const componentRef = componentFactory.create(contextInjector, projectableNodes, undefined, environmentInjector);
|
|
22978
23148
|
this.insert(componentRef.hostView, index);
|
|
22979
23149
|
return componentRef;
|
|
22980
23150
|
}
|
|
@@ -23664,6 +23834,7 @@ const angularCoreEnv = (() => ({
|
|
|
23664
23834
|
'ɵɵProvidersFeature': ɵɵProvidersFeature,
|
|
23665
23835
|
'ɵɵCopyDefinitionFeature': ɵɵCopyDefinitionFeature,
|
|
23666
23836
|
'ɵɵInheritDefinitionFeature': ɵɵInheritDefinitionFeature,
|
|
23837
|
+
'ɵɵStandaloneFeature': ɵɵStandaloneFeature,
|
|
23667
23838
|
'ɵɵnextContext': ɵɵnextContext,
|
|
23668
23839
|
'ɵɵnamespaceHTML': ɵɵnamespaceHTML,
|
|
23669
23840
|
'ɵɵnamespaceMathML': ɵɵnamespaceMathML,
|
|
@@ -24375,9 +24546,8 @@ function compileComponent(type, metadata) {
|
|
|
24375
24546
|
preserveWhitespaces,
|
|
24376
24547
|
styles: metadata.styles || EMPTY_ARRAY,
|
|
24377
24548
|
animations: metadata.animations,
|
|
24378
|
-
|
|
24549
|
+
declarations: [],
|
|
24379
24550
|
changeDetection: metadata.changeDetection,
|
|
24380
|
-
pipes: new Map(),
|
|
24381
24551
|
encapsulation,
|
|
24382
24552
|
interpolation: metadata.interpolation,
|
|
24383
24553
|
viewProviders: metadata.viewProviders || null,
|
|
@@ -25012,7 +25182,10 @@ const PLATFORM_INITIALIZER = new InjectionToken('Platform Initializer');
|
|
|
25012
25182
|
* A token that indicates an opaque platform ID.
|
|
25013
25183
|
* @publicApi
|
|
25014
25184
|
*/
|
|
25015
|
-
const PLATFORM_ID = new InjectionToken('Platform ID'
|
|
25185
|
+
const PLATFORM_ID = new InjectionToken('Platform ID', {
|
|
25186
|
+
providedIn: 'platform',
|
|
25187
|
+
factory: () => 'unknown', // set a default platform name, when none set explicitly
|
|
25188
|
+
});
|
|
25016
25189
|
/**
|
|
25017
25190
|
* A [DI token](guide/glossary#di-token "DI token definition") that provides a set of callbacks to
|
|
25018
25191
|
* be called for every component that is bootstrapped.
|
|
@@ -25059,9 +25232,10 @@ class Console {
|
|
|
25059
25232
|
}
|
|
25060
25233
|
}
|
|
25061
25234
|
Console.ɵfac = function Console_Factory(t) { return new (t || Console)(); };
|
|
25062
|
-
Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac });
|
|
25235
|
+
Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac, providedIn: 'platform' });
|
|
25063
25236
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Console, [{
|
|
25064
|
-
type: Injectable
|
|
25237
|
+
type: Injectable,
|
|
25238
|
+
args: [{ providedIn: 'platform' }]
|
|
25065
25239
|
}], null, null); })();
|
|
25066
25240
|
|
|
25067
25241
|
/**
|
|
@@ -26019,9 +26193,10 @@ class TestabilityRegistry {
|
|
|
26019
26193
|
}
|
|
26020
26194
|
}
|
|
26021
26195
|
TestabilityRegistry.ɵfac = function TestabilityRegistry_Factory(t) { return new (t || TestabilityRegistry)(); };
|
|
26022
|
-
TestabilityRegistry.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac });
|
|
26196
|
+
TestabilityRegistry.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac, providedIn: 'platform' });
|
|
26023
26197
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TestabilityRegistry, [{
|
|
26024
|
-
type: Injectable
|
|
26198
|
+
type: Injectable,
|
|
26199
|
+
args: [{ providedIn: 'platform' }]
|
|
26025
26200
|
}], function () { return []; }, null); })();
|
|
26026
26201
|
class _NoopGetTestability {
|
|
26027
26202
|
addToWindow(registry) { }
|
|
@@ -26045,7 +26220,20 @@ let _testabilityGetter = new _NoopGetTestability();
|
|
|
26045
26220
|
* Use of this source code is governed by an MIT-style license that can be
|
|
26046
26221
|
* found in the LICENSE file at https://angular.io/license
|
|
26047
26222
|
*/
|
|
26048
|
-
let
|
|
26223
|
+
let _platformInjector = null;
|
|
26224
|
+
/**
|
|
26225
|
+
* Internal token to indicate whether having multiple bootstrapped platform should be allowed (only
|
|
26226
|
+
* one bootstrapped platform is allowed by default). This token helps to support SSR scenarios.
|
|
26227
|
+
*/
|
|
26228
|
+
const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
|
|
26229
|
+
/**
|
|
26230
|
+
* Internal token that allows to register extra callbacks that should be invoked during the
|
|
26231
|
+
* `PlatformRef.destroy` operation. This token is needed to avoid a direct reference to the
|
|
26232
|
+
* `PlatformRef` class (i.e. register the callback via `PlatformRef.onDestroy`), thus making the
|
|
26233
|
+
* entire class tree-shakeable.
|
|
26234
|
+
*/
|
|
26235
|
+
const PLATFORM_ON_DESTROY = new InjectionToken('PlatformOnDestroy');
|
|
26236
|
+
const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;
|
|
26049
26237
|
function compileNgModuleFactory(injector, options, moduleType) {
|
|
26050
26238
|
ngDevMode && assertNgModuleType(moduleType);
|
|
26051
26239
|
const moduleFactory = new NgModuleFactory(moduleType);
|
|
@@ -26090,7 +26278,6 @@ function publishDefaultGlobalUtils() {
|
|
|
26090
26278
|
function isBoundToModule(cf) {
|
|
26091
26279
|
return cf.isBoundToModule;
|
|
26092
26280
|
}
|
|
26093
|
-
const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
|
|
26094
26281
|
/**
|
|
26095
26282
|
* A token for third-party components that can register themselves with NgProbe.
|
|
26096
26283
|
*
|
|
@@ -26109,19 +26296,19 @@ class NgProbeToken {
|
|
|
26109
26296
|
* @publicApi
|
|
26110
26297
|
*/
|
|
26111
26298
|
function createPlatform(injector) {
|
|
26112
|
-
if (
|
|
26113
|
-
!_platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
|
|
26299
|
+
if (_platformInjector && !_platformInjector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
|
|
26114
26300
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
26115
26301
|
'There can be only one platform. Destroy the previous one to create a new one.' :
|
|
26116
26302
|
'';
|
|
26117
26303
|
throw new RuntimeError(400 /* MULTIPLE_PLATFORMS */, errorMessage);
|
|
26118
26304
|
}
|
|
26119
26305
|
publishDefaultGlobalUtils();
|
|
26120
|
-
|
|
26306
|
+
_platformInjector = injector;
|
|
26307
|
+
const platform = injector.get(PlatformRef);
|
|
26121
26308
|
const inits = injector.get(PLATFORM_INITIALIZER, null);
|
|
26122
26309
|
if (inits)
|
|
26123
|
-
inits.forEach(
|
|
26124
|
-
return
|
|
26310
|
+
inits.forEach(initFn => initFn());
|
|
26311
|
+
return platform;
|
|
26125
26312
|
}
|
|
26126
26313
|
/**
|
|
26127
26314
|
* Creates a factory for a platform. Can be used to provide or override `Providers` specific to
|
|
@@ -26140,15 +26327,16 @@ function createPlatformFactory(parentPlatformFactory, name, providers = []) {
|
|
|
26140
26327
|
return (extraProviders = []) => {
|
|
26141
26328
|
let platform = getPlatform();
|
|
26142
26329
|
if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
|
|
26330
|
+
const platformProviders = [
|
|
26331
|
+
...providers,
|
|
26332
|
+
...extraProviders,
|
|
26333
|
+
{ provide: marker, useValue: true }
|
|
26334
|
+
];
|
|
26143
26335
|
if (parentPlatformFactory) {
|
|
26144
|
-
parentPlatformFactory(
|
|
26336
|
+
parentPlatformFactory(platformProviders);
|
|
26145
26337
|
}
|
|
26146
26338
|
else {
|
|
26147
|
-
|
|
26148
|
-
provide: INJECTOR_SCOPE,
|
|
26149
|
-
useValue: 'platform'
|
|
26150
|
-
});
|
|
26151
|
-
createPlatform(Injector.create({ providers: injectedProviders, name: desc }));
|
|
26339
|
+
createPlatform(createPlatformInjector(platformProviders, desc));
|
|
26152
26340
|
}
|
|
26153
26341
|
}
|
|
26154
26342
|
return assertPlatform(marker);
|
|
@@ -26171,6 +26359,20 @@ function assertPlatform(requiredToken) {
|
|
|
26171
26359
|
}
|
|
26172
26360
|
return platform;
|
|
26173
26361
|
}
|
|
26362
|
+
/**
|
|
26363
|
+
* Helper function to create an instance of a platform injector (that maintains the 'platform'
|
|
26364
|
+
* scope).
|
|
26365
|
+
*/
|
|
26366
|
+
function createPlatformInjector(providers = [], name) {
|
|
26367
|
+
return Injector.create({
|
|
26368
|
+
name,
|
|
26369
|
+
providers: [
|
|
26370
|
+
{ provide: INJECTOR_SCOPE, useValue: 'platform' },
|
|
26371
|
+
{ provide: PLATFORM_ON_DESTROY, useValue: () => _platformInjector = null },
|
|
26372
|
+
...providers
|
|
26373
|
+
],
|
|
26374
|
+
});
|
|
26375
|
+
}
|
|
26174
26376
|
/**
|
|
26175
26377
|
* Destroys the current Angular platform and all Angular applications on the page.
|
|
26176
26378
|
* Destroys all modules and listeners registered with the platform.
|
|
@@ -26178,9 +26380,7 @@ function assertPlatform(requiredToken) {
|
|
|
26178
26380
|
* @publicApi
|
|
26179
26381
|
*/
|
|
26180
26382
|
function destroyPlatform() {
|
|
26181
|
-
|
|
26182
|
-
_platform.destroy();
|
|
26183
|
-
}
|
|
26383
|
+
getPlatform()?.destroy();
|
|
26184
26384
|
}
|
|
26185
26385
|
/**
|
|
26186
26386
|
* Returns the current platform.
|
|
@@ -26188,7 +26388,7 @@ function destroyPlatform() {
|
|
|
26188
26388
|
* @publicApi
|
|
26189
26389
|
*/
|
|
26190
26390
|
function getPlatform() {
|
|
26191
|
-
return
|
|
26391
|
+
return _platformInjector?.get(PlatformRef) ?? null;
|
|
26192
26392
|
}
|
|
26193
26393
|
/**
|
|
26194
26394
|
* The Angular platform is the entry point for Angular on a web page.
|
|
@@ -26322,20 +26522,26 @@ class PlatformRef {
|
|
|
26322
26522
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
26323
26523
|
'The platform has already been destroyed!' :
|
|
26324
26524
|
'';
|
|
26325
|
-
throw new RuntimeError(404 /*
|
|
26525
|
+
throw new RuntimeError(404 /* PLATFORM_ALREADY_DESTROYED */, errorMessage);
|
|
26326
26526
|
}
|
|
26327
26527
|
this._modules.slice().forEach(module => module.destroy());
|
|
26328
26528
|
this._destroyListeners.forEach(listener => listener());
|
|
26529
|
+
const destroyListener = this._injector.get(PLATFORM_ON_DESTROY, null);
|
|
26530
|
+
destroyListener?.();
|
|
26329
26531
|
this._destroyed = true;
|
|
26330
26532
|
}
|
|
26533
|
+
/**
|
|
26534
|
+
* Indicates whether this instance was destroyed.
|
|
26535
|
+
*/
|
|
26331
26536
|
get destroyed() {
|
|
26332
26537
|
return this._destroyed;
|
|
26333
26538
|
}
|
|
26334
26539
|
}
|
|
26335
26540
|
PlatformRef.ɵfac = function PlatformRef_Factory(t) { return new (t || PlatformRef)(ɵɵinject(Injector)); };
|
|
26336
|
-
PlatformRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac });
|
|
26541
|
+
PlatformRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac, providedIn: 'platform' });
|
|
26337
26542
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PlatformRef, [{
|
|
26338
|
-
type: Injectable
|
|
26543
|
+
type: Injectable,
|
|
26544
|
+
args: [{ providedIn: 'platform' }]
|
|
26339
26545
|
}], function () { return [{ type: Injector }]; }, null); })();
|
|
26340
26546
|
function getNgZone(ngZoneOption, extra) {
|
|
26341
26547
|
let ngZone;
|
|
@@ -26473,17 +26679,18 @@ function optionsReducer(dst, objs) {
|
|
|
26473
26679
|
*/
|
|
26474
26680
|
class ApplicationRef {
|
|
26475
26681
|
/** @internal */
|
|
26476
|
-
constructor(_zone, _injector, _exceptionHandler,
|
|
26682
|
+
constructor(_zone, _injector, _exceptionHandler, _initStatus) {
|
|
26477
26683
|
this._zone = _zone;
|
|
26478
26684
|
this._injector = _injector;
|
|
26479
26685
|
this._exceptionHandler = _exceptionHandler;
|
|
26480
|
-
this._componentFactoryResolver = _componentFactoryResolver;
|
|
26481
26686
|
this._initStatus = _initStatus;
|
|
26482
26687
|
/** @internal */
|
|
26483
26688
|
this._bootstrapListeners = [];
|
|
26484
26689
|
this._views = [];
|
|
26485
26690
|
this._runningTick = false;
|
|
26486
26691
|
this._stable = true;
|
|
26692
|
+
this._destroyed = false;
|
|
26693
|
+
this._destroyListeners = [];
|
|
26487
26694
|
/**
|
|
26488
26695
|
* Get a list of component types registered to this application.
|
|
26489
26696
|
* This list is populated even before the component is created.
|
|
@@ -26543,6 +26750,12 @@ class ApplicationRef {
|
|
|
26543
26750
|
this.isStable =
|
|
26544
26751
|
merge$1(isCurrentlyStable, isStable.pipe(share()));
|
|
26545
26752
|
}
|
|
26753
|
+
/**
|
|
26754
|
+
* Indicates whether this instance was destroyed.
|
|
26755
|
+
*/
|
|
26756
|
+
get destroyed() {
|
|
26757
|
+
return this._destroyed;
|
|
26758
|
+
}
|
|
26546
26759
|
/**
|
|
26547
26760
|
* Bootstrap a component onto the element identified by its selector or, optionally, to a
|
|
26548
26761
|
* specified element.
|
|
@@ -26581,6 +26794,7 @@ class ApplicationRef {
|
|
|
26581
26794
|
* {@example core/ts/platform/platform.ts region='domNode'}
|
|
26582
26795
|
*/
|
|
26583
26796
|
bootstrap(componentOrFactory, rootSelectorOrNode) {
|
|
26797
|
+
NG_DEV_MODE && this.warnIfDestroyed();
|
|
26584
26798
|
if (!this._initStatus.done) {
|
|
26585
26799
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
26586
26800
|
'Cannot bootstrap as there are still asynchronous initializers running. ' +
|
|
@@ -26593,8 +26807,8 @@ class ApplicationRef {
|
|
|
26593
26807
|
componentFactory = componentOrFactory;
|
|
26594
26808
|
}
|
|
26595
26809
|
else {
|
|
26596
|
-
|
|
26597
|
-
|
|
26810
|
+
const resolver = this._injector.get(ComponentFactoryResolver$1);
|
|
26811
|
+
componentFactory = resolver.resolveComponentFactory(componentOrFactory);
|
|
26598
26812
|
}
|
|
26599
26813
|
this.componentTypes.push(componentFactory.componentType);
|
|
26600
26814
|
// Create a factory associated with the current module if it's not bound to some other
|
|
@@ -26632,6 +26846,7 @@ class ApplicationRef {
|
|
|
26632
26846
|
* detection pass during which all change detection must complete.
|
|
26633
26847
|
*/
|
|
26634
26848
|
tick() {
|
|
26849
|
+
NG_DEV_MODE && this.warnIfDestroyed();
|
|
26635
26850
|
if (this._runningTick) {
|
|
26636
26851
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
26637
26852
|
'ApplicationRef.tick is called recursively' :
|
|
@@ -26663,6 +26878,7 @@ class ApplicationRef {
|
|
|
26663
26878
|
* This will throw if the view is already attached to a ViewContainer.
|
|
26664
26879
|
*/
|
|
26665
26880
|
attachView(viewRef) {
|
|
26881
|
+
NG_DEV_MODE && this.warnIfDestroyed();
|
|
26666
26882
|
const view = viewRef;
|
|
26667
26883
|
this._views.push(view);
|
|
26668
26884
|
view.attachToAppRef(this);
|
|
@@ -26671,6 +26887,7 @@ class ApplicationRef {
|
|
|
26671
26887
|
* Detaches a view from dirty checking again.
|
|
26672
26888
|
*/
|
|
26673
26889
|
detachView(viewRef) {
|
|
26890
|
+
NG_DEV_MODE && this.warnIfDestroyed();
|
|
26674
26891
|
const view = viewRef;
|
|
26675
26892
|
remove(this._views, view);
|
|
26676
26893
|
view.detachFromAppRef();
|
|
@@ -26685,8 +26902,48 @@ class ApplicationRef {
|
|
|
26685
26902
|
}
|
|
26686
26903
|
/** @internal */
|
|
26687
26904
|
ngOnDestroy() {
|
|
26688
|
-
this.
|
|
26689
|
-
|
|
26905
|
+
if (this._destroyed)
|
|
26906
|
+
return;
|
|
26907
|
+
try {
|
|
26908
|
+
// Call all the lifecycle hooks.
|
|
26909
|
+
this._destroyListeners.forEach(listener => listener());
|
|
26910
|
+
// Destroy all registered views.
|
|
26911
|
+
this._views.slice().forEach((view) => view.destroy());
|
|
26912
|
+
this._onMicrotaskEmptySubscription.unsubscribe();
|
|
26913
|
+
}
|
|
26914
|
+
finally {
|
|
26915
|
+
// Indicate that this instance is destroyed.
|
|
26916
|
+
this._destroyed = true;
|
|
26917
|
+
// Release all references.
|
|
26918
|
+
this._views = [];
|
|
26919
|
+
this._bootstrapListeners = [];
|
|
26920
|
+
this._destroyListeners = [];
|
|
26921
|
+
}
|
|
26922
|
+
}
|
|
26923
|
+
/**
|
|
26924
|
+
* Registers a listener to be called when an instance is destroyed.
|
|
26925
|
+
*
|
|
26926
|
+
* @param callback A callback function to add as a listener.
|
|
26927
|
+
* @returns A function which unregisters a listener.
|
|
26928
|
+
*
|
|
26929
|
+
* @internal
|
|
26930
|
+
*/
|
|
26931
|
+
onDestroy(callback) {
|
|
26932
|
+
NG_DEV_MODE && this.warnIfDestroyed();
|
|
26933
|
+
this._destroyListeners.push(callback);
|
|
26934
|
+
return () => remove(this._destroyListeners, callback);
|
|
26935
|
+
}
|
|
26936
|
+
destroy() {
|
|
26937
|
+
if (this._destroyed) {
|
|
26938
|
+
throw new RuntimeError(406 /* APPLICATION_REF_ALREADY_DESTROYED */, NG_DEV_MODE && 'This instance of the `ApplicationRef` has already been destroyed.');
|
|
26939
|
+
}
|
|
26940
|
+
const injector = this._injector;
|
|
26941
|
+
// Check that this injector instance supports destroy operation.
|
|
26942
|
+
if (injector.destroy && !injector.destroyed) {
|
|
26943
|
+
// Destroying an underlying injector will trigger the `ngOnDestroy` lifecycle
|
|
26944
|
+
// hook, which invokes the remaining cleanup actions.
|
|
26945
|
+
injector.destroy();
|
|
26946
|
+
}
|
|
26690
26947
|
}
|
|
26691
26948
|
/**
|
|
26692
26949
|
* Returns the number of attached views.
|
|
@@ -26694,13 +26951,18 @@ class ApplicationRef {
|
|
|
26694
26951
|
get viewCount() {
|
|
26695
26952
|
return this._views.length;
|
|
26696
26953
|
}
|
|
26954
|
+
warnIfDestroyed() {
|
|
26955
|
+
if (NG_DEV_MODE && this._destroyed) {
|
|
26956
|
+
console.warn(formatRuntimeError(406 /* APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));
|
|
26957
|
+
}
|
|
26958
|
+
}
|
|
26697
26959
|
}
|
|
26698
|
-
ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(ɵɵinject(NgZone), ɵɵinject(Injector), ɵɵinject(ErrorHandler), ɵɵinject(
|
|
26960
|
+
ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(ɵɵinject(NgZone), ɵɵinject(Injector), ɵɵinject(ErrorHandler), ɵɵinject(ApplicationInitStatus)); };
|
|
26699
26961
|
ApplicationRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' });
|
|
26700
26962
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
|
|
26701
26963
|
type: Injectable,
|
|
26702
26964
|
args: [{ providedIn: 'root' }]
|
|
26703
|
-
}], function () { return [{ type: NgZone }, { type: Injector }, { type: ErrorHandler }, { type:
|
|
26965
|
+
}], function () { return [{ type: NgZone }, { type: Injector }, { type: ErrorHandler }, { type: ApplicationInitStatus }]; }, null); })();
|
|
26704
26966
|
function remove(list, el) {
|
|
26705
26967
|
const index = list.indexOf(el);
|
|
26706
26968
|
if (index > -1) {
|
|
@@ -28683,19 +28945,12 @@ const defaultKeyValueDiffers = new KeyValueDiffers(keyValDiff);
|
|
|
28683
28945
|
* Use of this source code is governed by an MIT-style license that can be
|
|
28684
28946
|
* found in the LICENSE file at https://angular.io/license
|
|
28685
28947
|
*/
|
|
28686
|
-
const _CORE_PLATFORM_PROVIDERS = [
|
|
28687
|
-
// Set a default platform name for platforms that don't set it explicitly.
|
|
28688
|
-
{ provide: PLATFORM_ID, useValue: 'unknown' },
|
|
28689
|
-
{ provide: PlatformRef, deps: [Injector] },
|
|
28690
|
-
{ provide: TestabilityRegistry, deps: [] },
|
|
28691
|
-
{ provide: Console, deps: [] },
|
|
28692
|
-
];
|
|
28693
28948
|
/**
|
|
28694
28949
|
* This platform has to be included in any other platform
|
|
28695
28950
|
*
|
|
28696
28951
|
* @publicApi
|
|
28697
28952
|
*/
|
|
28698
|
-
const platformCore = createPlatformFactory(null, 'core',
|
|
28953
|
+
const platformCore = createPlatformFactory(null, 'core', []);
|
|
28699
28954
|
|
|
28700
28955
|
/**
|
|
28701
28956
|
* @license
|
|
@@ -28891,5 +29146,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
28891
29146
|
* Generated bundle index. Do not edit.
|
|
28892
29147
|
*/
|
|
28893
29148
|
|
|
28894
|
-
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, 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, 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, ɵɵ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 };
|
|
29149
|
+
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 };
|
|
28895
29150
|
//# sourceMappingURL=core.mjs.map
|