@angular/core 20.1.0 → 20.1.1
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/api.d.d.ts +1 -1
- package/chrome_dev_tools_performance.d.d.ts +1 -1
- package/discovery.d.d.ts +1 -1
- package/event_dispatcher.d.d.ts +1 -1
- package/fesm2022/attribute.mjs +1 -1
- package/fesm2022/core.mjs +47 -27
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/debug_node.mjs +51 -11
- package/fesm2022/debug_node.mjs.map +1 -1
- package/fesm2022/not_found.mjs +1 -1
- package/fesm2022/primitives/di.mjs +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1 -1
- package/fesm2022/primitives/signals.mjs +1 -1
- package/fesm2022/resource.mjs +1 -1
- package/fesm2022/root_effect_scheduler.mjs +112 -53
- package/fesm2022/root_effect_scheduler.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +2 -2
- package/fesm2022/signal.mjs +1 -1
- package/fesm2022/testing.mjs +1 -1
- package/fesm2022/untracked.mjs +1 -1
- package/fesm2022/weak_ref.mjs +1 -1
- package/graph.d.d.ts +1 -1
- package/index.d.ts +15 -2
- package/package.json +2 -2
- package/primitives/di/index.d.ts +1 -1
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/bundles/{apply_import_manager-B0fYYMpr.cjs → apply_import_manager-DnZuC0qd.cjs} +3 -3
- package/schematics/bundles/{checker-DLInMAS3.cjs → checker-CwUJ2eKt.cjs} +91 -21
- package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
- package/schematics/bundles/{compiler_host-Doj9KVJf.cjs → compiler_host-CH53_d32.cjs} +2 -2
- package/schematics/bundles/control-flow-migration.cjs +3 -3
- package/schematics/bundles/document-core.cjs +5 -5
- package/schematics/bundles/imports-CIX-JgAN.cjs +1 -1
- package/schematics/bundles/{index-Bp8sCiq1.cjs → index-BEVODdVo.cjs} +4 -4
- package/schematics/bundles/{index-BmuUS1AB.cjs → index-C5Zc9zTo.cjs} +12 -12
- package/schematics/bundles/inject-flags.cjs +5 -5
- package/schematics/bundles/inject-migration.cjs +3 -3
- package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
- package/schematics/bundles/{migrate_ts_type_references-CmZ0155c.cjs → migrate_ts_type_references-i9f_TsT7.cjs} +5 -441
- package/schematics/bundles/ng_decorators-B5HCqr20.cjs +1 -1
- package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
- package/schematics/bundles/output-migration.cjs +6 -6
- package/schematics/bundles/{project_paths-D2SJWT7x.cjs → project_paths-BrdiLiLU.cjs} +3 -3
- package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +1 -1
- package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
- package/schematics/bundles/route-lazy-loading.cjs +3 -3
- package/schematics/bundles/self-closing-tags-migration.cjs +4 -4
- package/schematics/bundles/signal-input-migration.cjs +8 -8
- package/schematics/bundles/signal-queries-migration.cjs +7 -7
- package/schematics/bundles/signals.cjs +7 -7
- package/schematics/bundles/standalone-migration.cjs +4 -4
- package/schematics/bundles/symbol-VPWguRxr.cjs +1 -1
- package/schematics/bundles/test-bed-get.cjs +4 -4
- package/signal.d.d.ts +1 -1
- package/testing/index.d.ts +1 -1
- package/weak_ref.d.d.ts +1 -1
package/fesm2022/debug_node.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.1.
|
|
2
|
+
* @license Angular v20.1.1
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { attachInjectFlag, _global, ɵɵdefineInjectable as __defineInjectable, ɵɵdefineInjector as __defineInjector, ɵɵinject as __inject, ɵɵinvalidFactoryDep as __invalidFactoryDep, resolveForwardRef, newArray, EMPTY_OBJ, assertString, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, assertFirstCreatePass, assertDefined, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, assertIndexInRange, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector,
|
|
7
|
+
import { attachInjectFlag, _global, ɵɵdefineInjectable as __defineInjectable, ɵɵdefineInjector as __defineInjector, ɵɵinject as __inject, ɵɵinvalidFactoryDep as __invalidFactoryDep, resolveForwardRef, newArray, EMPTY_OBJ, assertString, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, assertFirstCreatePass, assertDefined, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, assertIndexInRange, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, setInjectImplementation, assertDirectiveDef, NG_ELEMENT_ID, convertToBitFlags, isRootView, T_HOST, TVIEW, injectRootLimpMode, isComponentDef, EMBEDDED_VIEW_INJECTOR, INJECTOR$1 as INJECTOR, DECLARATION_COMPONENT_VIEW, isComponentHost, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, flatten, arrayEquals, ID, isLView, assertDomNode, unwrapRNode, getComponentLViewByIndex, CONTEXT, EMPTY_ARRAY, assertLView, HOST, CHILD_HEAD, NEXT, isLContainer, getLViewParent, Injector, CLEANUP, getComponentDef, getDirectiveDef, InjectionToken, inject, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, XSS_SECURITY_URL, renderStringify, ENVIRONMENT, makeEnvironmentProviders, isDirectiveHost, formatRuntimeError, resetPreOrderHookFlags, PARENT, RENDERER, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, assertLContainer, MOVED_VIEWS, isDestroyed, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, assertProjectionSlots, NATIVE, assertParentView, CONTAINER_HEADER_OFFSET, assertNotSame, setCurrentDirectiveIndex, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, INTERNAL_APPLICATION_ERROR_HANDLER, stringify, getCurrentDirectiveIndex, unwrapLView, isCreationMode, enterView, leaveView, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, markViewForRefresh, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setIsInCheckNoChangesMode, CheckNoChangesMode, setBindingIndex, EFFECTS_TO_SCHEDULE, viewAttachedToChangeDetector, setBindingRootForHostBindings, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getCurrentTNodePlaceholderOk, assertTNode, assertTIcu, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, assertNotDefined, nextBindingIndex, getSelectedTNode, getDirectiveDefOrThrow, getTNode, assertComponentType, debugStringifyTypeForError, ChangeDetectionScheduler, EnvironmentInjector, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, isInInjectionContext, DestroyRef, PendingTasksInternal, noop, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, ViewContext, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, NullInjector, ENVIRONMENT_INITIALIZER, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isSignal, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasks, assertTNodeCreationIndex, isSkipHydrationRootTNode, leaveSkipHydrationBlock, decreaseElementDepthCount, getNamespace, enterSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, getBindingIndex, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, keyValueArraySet, keyValueArrayGet, incrementBindingIndex, isWritableSignal, store, providerToFactory, emitProviderConfiguredEvent, isClassProvider, getBindingRoot, NG_COMP_DEF, ɵɵresetView as __resetView, ɵɵnamespaceHTML as __namespaceHTML, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceSVG as __namespaceSVG, ɵɵenableBindings as __enableBindings, ɵɵdisableBindings as __disableBindings, ɵɵrestoreView as __restoreView, forwardRef, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, ZONELESS_SCHEDULER_DISABLED, SCHEDULE_IN_ROOT_ZONE, PROVIDED_ZONELESS, getNativeByTNodeOrNull } from './root_effect_scheduler.mjs';
|
|
8
8
|
import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './signal.mjs';
|
|
9
9
|
import { Subject, Subscription } from 'rxjs';
|
|
10
10
|
import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
|
|
@@ -989,6 +989,7 @@ const NO_PARENT_INJECTOR = -1;
|
|
|
989
989
|
*/
|
|
990
990
|
class NodeInjectorFactory {
|
|
991
991
|
factory;
|
|
992
|
+
name;
|
|
992
993
|
/**
|
|
993
994
|
* The inject implementation to be activated when using the factory.
|
|
994
995
|
*/
|
|
@@ -1071,8 +1072,11 @@ class NodeInjectorFactory {
|
|
|
1071
1072
|
/**
|
|
1072
1073
|
* Set to `true` if the token is declared in `viewProviders` (or if it is component).
|
|
1073
1074
|
*/
|
|
1074
|
-
isViewProvider, injectImplementation
|
|
1075
|
+
isViewProvider, injectImplementation,
|
|
1076
|
+
// Expect `null` in devmode
|
|
1077
|
+
name) {
|
|
1075
1078
|
this.factory = factory;
|
|
1079
|
+
this.name = name;
|
|
1076
1080
|
ngDevMode && assertDefined(factory, 'Factory not specified');
|
|
1077
1081
|
ngDevMode && assertEqual(typeof factory, 'function', 'Expected factory function.');
|
|
1078
1082
|
this.canSeeViewProviders = isViewProvider;
|
|
@@ -1936,6 +1940,10 @@ function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders,
|
|
|
1936
1940
|
}
|
|
1937
1941
|
return null;
|
|
1938
1942
|
}
|
|
1943
|
+
/**
|
|
1944
|
+
* Used in ngDevMode to keep the injection path in case of cycles in DI.
|
|
1945
|
+
*/
|
|
1946
|
+
let injectionPath = [];
|
|
1939
1947
|
/**
|
|
1940
1948
|
* Retrieve or instantiate the injectable from the `LView` at particular `index`.
|
|
1941
1949
|
*
|
|
@@ -1948,8 +1956,15 @@ function getNodeInjectable(lView, tView, index, tNode, flags) {
|
|
|
1948
1956
|
const tData = tView.data;
|
|
1949
1957
|
if (value instanceof NodeInjectorFactory) {
|
|
1950
1958
|
const factory = value;
|
|
1959
|
+
ngDevMode && injectionPath.push(factory.name ?? 'unknown');
|
|
1951
1960
|
if (factory.resolving) {
|
|
1952
|
-
|
|
1961
|
+
const token = stringifyForError(tData[index]);
|
|
1962
|
+
if (ngDevMode) {
|
|
1963
|
+
throw cyclicDependencyErrorWithDetails(token, injectionPath);
|
|
1964
|
+
}
|
|
1965
|
+
else {
|
|
1966
|
+
throw cyclicDependencyError(token);
|
|
1967
|
+
}
|
|
1953
1968
|
}
|
|
1954
1969
|
const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);
|
|
1955
1970
|
factory.resolving = true;
|
|
@@ -1991,6 +2006,7 @@ function getNodeInjectable(lView, tView, index, tNode, flags) {
|
|
|
1991
2006
|
setIncludeViewProviders(previousIncludeViewProviders);
|
|
1992
2007
|
factory.resolving = false;
|
|
1993
2008
|
leaveDI();
|
|
2009
|
+
ngDevMode && (injectionPath = []);
|
|
1994
2010
|
}
|
|
1995
2011
|
}
|
|
1996
2012
|
return value;
|
|
@@ -12640,7 +12656,7 @@ function configureViewWithDirective(tView, tNode, lView, directiveIndex, def) {
|
|
|
12640
12656
|
// Even though `directiveFactory` will already be using `ɵɵdirectiveInject` in its generated code,
|
|
12641
12657
|
// we also want to support `inject()` directly from the directive constructor context so we set
|
|
12642
12658
|
// `ɵɵdirectiveInject` as the inject implementation here too.
|
|
12643
|
-
const nodeInjectorFactory = new NodeInjectorFactory(directiveFactory, isComponentDef(def), ɵɵdirectiveInject);
|
|
12659
|
+
const nodeInjectorFactory = new NodeInjectorFactory(directiveFactory, isComponentDef(def), ɵɵdirectiveInject, ngDevMode ? def.type.name : null);
|
|
12644
12660
|
tView.blueprint[directiveIndex] = nodeInjectorFactory;
|
|
12645
12661
|
lView[directiveIndex] = nodeInjectorFactory;
|
|
12646
12662
|
registerHostBindingOpCodes(tView, tNode, directiveIndex, allocExpando(tView, lView, def.hostVars, NO_CHANGE), def);
|
|
@@ -13172,6 +13188,8 @@ function inputBindingUpdate(targetDirectiveIdx, publicName, value) {
|
|
|
13172
13188
|
if (bindingUpdated(lView, bindingIndex, value)) {
|
|
13173
13189
|
const tView = lView[TVIEW];
|
|
13174
13190
|
const tNode = getSelectedTNode();
|
|
13191
|
+
const componentLView = getComponentLViewByIndex(tNode.index, lView);
|
|
13192
|
+
markViewDirty(componentLView, 1 /* NotificationSource.SetInput */);
|
|
13175
13193
|
// TODO(pk): don't check on each and every binding, just assert in dev mode
|
|
13176
13194
|
const targetDef = tView.directiveRegistry[targetDirectiveIdx];
|
|
13177
13195
|
if (ngDevMode && !targetDef) {
|
|
@@ -13478,7 +13496,7 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
13478
13496
|
}
|
|
13479
13497
|
function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
|
|
13480
13498
|
const tAttributes = rootSelectorOrNode
|
|
13481
|
-
? ['ng-version', '20.1.
|
|
13499
|
+
? ['ng-version', '20.1.1']
|
|
13482
13500
|
: // Extract attributes and classes from the first selector only to match VE behavior.
|
|
13483
13501
|
extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
|
|
13484
13502
|
let creationBindings = null;
|
|
@@ -27232,8 +27250,7 @@ function resolveProvider(provider, tInjectables, lInjectablesBlueprint, isCompon
|
|
|
27232
27250
|
const endIndex = tNode.directiveStart;
|
|
27233
27251
|
const cptViewProvidersCount = tNode.providerIndexes >> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */;
|
|
27234
27252
|
if (isTypeProvider(provider) || !provider.multi) {
|
|
27235
|
-
|
|
27236
|
-
const factory = new NodeInjectorFactory(providerFactory, isViewProvider, ɵɵdirectiveInject);
|
|
27253
|
+
const factory = new NodeInjectorFactory(providerFactory, isViewProvider, ɵɵdirectiveInject, ngDevMode ? providerName(provider) : null);
|
|
27237
27254
|
const existingFactoryIndex = indexOf(token, tInjectables, isViewProvider ? beginIndex : beginIndex + cptViewProvidersCount, endIndex);
|
|
27238
27255
|
if (existingFactoryIndex === -1) {
|
|
27239
27256
|
diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, token);
|
|
@@ -27282,7 +27299,7 @@ function resolveProvider(provider, tInjectables, lInjectablesBlueprint, isCompon
|
|
|
27282
27299
|
(!isViewProvider && !doesProvidersFactoryExist)) {
|
|
27283
27300
|
// Cases 1.a and 2.a
|
|
27284
27301
|
diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, token);
|
|
27285
|
-
const factory = multiFactory(isViewProvider ? multiViewProvidersFactoryResolver : multiProvidersFactoryResolver, lInjectablesBlueprint.length, isViewProvider, isComponent, providerFactory);
|
|
27302
|
+
const factory = multiFactory(isViewProvider ? multiViewProvidersFactoryResolver : multiProvidersFactoryResolver, lInjectablesBlueprint.length, isViewProvider, isComponent, providerFactory, provider);
|
|
27286
27303
|
if (!isViewProvider && doesViewProvidersFactoryExist) {
|
|
27287
27304
|
lInjectablesBlueprint[existingViewProvidersFactoryIndex].providerFactory = factory;
|
|
27288
27305
|
}
|
|
@@ -27410,14 +27427,37 @@ function multiResolve(factories, result) {
|
|
|
27410
27427
|
/**
|
|
27411
27428
|
* Creates a multi factory.
|
|
27412
27429
|
*/
|
|
27413
|
-
function multiFactory(factoryFn, index, isViewProvider, isComponent, f) {
|
|
27414
|
-
const factory = new NodeInjectorFactory(factoryFn, isViewProvider, ɵɵdirectiveInject);
|
|
27430
|
+
function multiFactory(factoryFn, index, isViewProvider, isComponent, f, provider) {
|
|
27431
|
+
const factory = new NodeInjectorFactory(factoryFn, isViewProvider, ɵɵdirectiveInject, ngDevMode ? providerName(provider) : null);
|
|
27415
27432
|
factory.multi = [];
|
|
27416
27433
|
factory.index = index;
|
|
27417
27434
|
factory.componentProviders = 0;
|
|
27418
27435
|
multiFactoryAdd(factory, f, isComponent && !isViewProvider);
|
|
27419
27436
|
return factory;
|
|
27420
27437
|
}
|
|
27438
|
+
function providerName(provider) {
|
|
27439
|
+
if (Array.isArray(provider)) {
|
|
27440
|
+
return null;
|
|
27441
|
+
}
|
|
27442
|
+
if (isTypeProvider(provider)) {
|
|
27443
|
+
return provider.name;
|
|
27444
|
+
}
|
|
27445
|
+
else if (isClassProvider(provider)) {
|
|
27446
|
+
if (provider.provide instanceof InjectionToken) {
|
|
27447
|
+
return `('${provider.provide.toString()}':${provider.useClass.name})`;
|
|
27448
|
+
}
|
|
27449
|
+
return provider.useClass.name;
|
|
27450
|
+
}
|
|
27451
|
+
else if (provider.provide instanceof InjectionToken) {
|
|
27452
|
+
return provider.provide.toString();
|
|
27453
|
+
}
|
|
27454
|
+
else if (typeof provider.provide === 'string') {
|
|
27455
|
+
return provider.provide;
|
|
27456
|
+
}
|
|
27457
|
+
else {
|
|
27458
|
+
return null;
|
|
27459
|
+
}
|
|
27460
|
+
}
|
|
27421
27461
|
|
|
27422
27462
|
/**
|
|
27423
27463
|
* This feature resolves the providers of a directive (or component),
|