@angular/core 21.0.1 → 21.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/fesm2022/_attribute-chunk.mjs +1 -1
  2. package/fesm2022/_debug_node-chunk.mjs +219 -201
  3. package/fesm2022/_debug_node-chunk.mjs.map +1 -1
  4. package/fesm2022/_effect-chunk.mjs +1 -1
  5. package/fesm2022/_linked_signal-chunk.mjs +1 -1
  6. package/fesm2022/_not_found-chunk.mjs +1 -1
  7. package/fesm2022/_resource-chunk.mjs +1 -1
  8. package/fesm2022/_untracked-chunk.mjs +2 -2
  9. package/fesm2022/_untracked-chunk.mjs.map +1 -1
  10. package/fesm2022/_weak_ref-chunk.mjs +1 -1
  11. package/fesm2022/core.mjs +2 -2
  12. package/fesm2022/primitives-di.mjs +1 -1
  13. package/fesm2022/primitives-event-dispatch.mjs +1 -1
  14. package/fesm2022/primitives-signals.mjs +3 -3
  15. package/fesm2022/primitives-signals.mjs.map +1 -1
  16. package/fesm2022/rxjs-interop.mjs +1 -1
  17. package/fesm2022/testing.mjs +1 -1
  18. package/package.json +2 -2
  19. package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +1 -1
  20. package/schematics/bundles/application-config-core.cjs +1 -1
  21. package/schematics/bundles/apply_import_manager-1Zs_gpB6.cjs +1 -1
  22. package/schematics/bundles/bootstrap-options-migration.cjs +52 -7
  23. package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
  24. package/schematics/bundles/common-to-standalone-migration.cjs +1 -1
  25. package/schematics/bundles/compiler_host-DBwYMlTo.cjs +1 -1
  26. package/schematics/bundles/control-flow-migration.cjs +1 -1
  27. package/schematics/bundles/imports-DP72APSx.cjs +1 -1
  28. package/schematics/bundles/index-B7I9sIUx.cjs +1 -1
  29. package/schematics/bundles/inject-migration.cjs +1 -1
  30. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  31. package/schematics/bundles/migrate_ts_type_references-UGIUl7En.cjs +1 -1
  32. package/schematics/bundles/ng_component_template-Dsuq1Lw7.cjs +1 -1
  33. package/schematics/bundles/ng_decorators-DSFlWYQY.cjs +1 -1
  34. package/schematics/bundles/ngclass-to-class-migration.cjs +1 -1
  35. package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
  36. package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
  37. package/schematics/bundles/output-migration.cjs +1 -1
  38. package/schematics/bundles/parse_html-8VLCL37B.cjs +1 -1
  39. package/schematics/bundles/project_paths-DvD50ouC.cjs +1 -1
  40. package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +1 -1
  41. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  42. package/schematics/bundles/route-lazy-loading.cjs +1 -1
  43. package/schematics/bundles/router-current-navigation.cjs +1 -1
  44. package/schematics/bundles/router-last-successful-navigation.cjs +1 -1
  45. package/schematics/bundles/router-testing-module-migration.cjs +1 -1
  46. package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
  47. package/schematics/bundles/signal-input-migration.cjs +1 -1
  48. package/schematics/bundles/signal-queries-migration.cjs +1 -1
  49. package/schematics/bundles/signals.cjs +1 -1
  50. package/schematics/bundles/standalone-migration.cjs +1 -1
  51. package/schematics/bundles/symbol-BObKoqes.cjs +1 -1
  52. package/types/_api-chunk.d.ts +1 -1
  53. package/types/_chrome_dev_tools_performance-chunk.d.ts +1 -1
  54. package/types/_discovery-chunk.d.ts +1 -1
  55. package/types/_effect-chunk.d.ts +1 -1
  56. package/types/_event_dispatcher-chunk.d.ts +1 -1
  57. package/types/_formatter-chunk.d.ts +1 -1
  58. package/types/_weak_ref-chunk.d.ts +1 -1
  59. package/types/core.d.ts +11 -10
  60. package/types/primitives-di.d.ts +1 -1
  61. package/types/primitives-event-dispatch.d.ts +1 -1
  62. package/types/primitives-signals.d.ts +1 -1
  63. package/types/rxjs-interop.d.ts +1 -1
  64. package/types/testing.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.1
2
+ * @license Angular v21.0.2
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.1
2
+ * @license Angular v21.0.2
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -8,7 +8,7 @@ import { RuntimeError, InjectionToken, getCurrentTNode, assertInInjectionContext
8
8
  export { EnvironmentInjector, EventEmitter, INJECTOR, PendingTasks, VERSION, Version, effect, forwardRef, importProvidersFrom, isStandalone, provideBrowserGlobalErrorListeners, resolveForwardRef, signal, untracked, EffectScheduler as ɵEffectScheduler, 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, NoopNgZone as ɵNoopNgZone, R3Injector as ɵR3Injector, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, getInjectableDef as ɵgetInjectableDef, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, store as ɵstore, truncateMiddle as ɵtruncateMiddle, ɵunwrapWritableSignal, ɵɵdisableBindings, ɵɵenableBindings, ɵɵinvalidFactoryDep, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵresetView, ɵɵrestoreView } from './_untracked-chunk.mjs';
9
9
  import { SIGNAL_NODE, signalSetFn, SIGNAL, producerAccessed, consumerDestroy, consumerPollProducersForChange, consumerBeforeComputation, consumerAfterComputation } from './_effect-chunk.mjs';
10
10
  import { ɵɵinjectAttribute as __injectAttribute, createMultiResultQuerySignalFn, createSingleResultOptionalQuerySignalFn, createSingleResultRequiredQuerySignalFn, makePropDecorator, NgModuleFactory, COMPILER_OPTIONS, setJitOptions, isComponentResourceResolutionQueueEmpty, getCompilerFacade, resolveComponentResources, ApplicationRef, setClassMetadata, Injectable, performanceMarkFeature, IMAGE_CONFIG, getDocument, remove, isPromise, ApplicationInitStatus, LOCALE_ID, DEFAULT_LOCALE_ID, setLocaleId, createNgModuleRefWithProviders, optionsReducer, provideZonelessChangeDetectionInternal, validAppIdInitializer, publishDefaultGlobalUtils, PLATFORM_INITIALIZER, publishSignalConfiguration, ChangeDetectionSchedulerImpl, checkNoChangesInternal, UseExhaustiveCheckNoChanges, getRegisteredNgModuleType, ViewRef as ViewRef$1, isListLikeIterable, iterateListLike, isJsObject, ɵɵdefineNgModule as __defineNgModule, NgModule, profiler, assertStandaloneComponentType, EnvironmentNgModuleRefAdapter, ProfilerEvent, JSACTION_BLOCK_ELEMENT_MAP, APP_ID, setStashFn, APP_BOOTSTRAP_LISTENER, JSACTION_EVENT_CONTRACT, removeListeners, isIncrementalHydrationEnabled, DEFER_BLOCK_SSR_ID_ATTRIBUTE, invokeListeners, triggerHydrationFromBlockName, IS_EVENT_REPLAY_ENABLED, EVENT_REPLAY_ENABLED_DEFAULT, sharedStashFunction, sharedMapFunction, enableStashEventListenerImpl, isI18nHydrationEnabled, TransferState, NGH_DATA_KEY, NGH_DEFER_BLOCKS_KEY, SKIP_HYDRATION_ATTR_NAME, NGH_ATTR_NAME, getLNodeForHydration, isI18nHydrationSupportEnabled, getOrComputeI18nChildren, trySerializeI18nBlock, I18N_DATA, isTNodeShape, isDetachedByI18n, TEMPLATES, isDisconnectedNode, isInSkipHydrationBlock, unsupportedProjectionOfDomNodes, CONTAINERS, isLetDeclaration, ELEMENT_CONTAINERS, processTextNodeBeforeSerialization, setJSActionAttributes, ViewEncapsulation as ViewEncapsulation$1, collectNativeNodes, TEMPLATE_ID, NUM_ROOT_NODES, isDeferBlock, getLDeferBlockDetails, getTDeferBlockDetails, collectNativeNodesInLContainer, validateNodeExists, validateMatchingNode, DEFER_BLOCK_ID, DEFER_BLOCK_STATE, DEFER_BLOCK_STATE$1, MULTIPLIER, NODES, calcPathForNode, DISCONNECTED_NODES, convertHydrateTriggersToJsAction, DEFER_HYDRATE_TRIGGERS, DEFER_PARENT_BLOCK_ID, IS_I18N_HYDRATION_ENABLED, IS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED, DEHYDRATED_BLOCK_REGISTRY, DehydratedBlockRegistry, processBlockData, gatherDeferBlocksCommentNodes, processAndInitTriggers, appendDeferBlocksToJSActionMap, verifySsrContentsIntegrity, Console, PRESERVE_HOST_CONTENT, cleanupDehydratedViews, countBlocksSkippedByHydration, enableRetrieveHydrationInfoImpl, enableLocateOrCreateElementNodeImpl, enableLocateOrCreateTextNodeImpl, enableLocateOrCreateElementContainerNodeImpl, enableLocateOrCreateContainerAnchorImpl, enableLocateOrCreateContainerRefImpl, enableFindMatchingDehydratedViewImpl, enableApplyRootElementTransformImpl, enableLocateOrCreateI18nNodeImpl, enablePrepareI18nBlockForHydrationImpl, setIsI18nHydrationSupportEnabled, enableClaimDehydratedIcuCaseImpl, enableRetrieveDeferBlockDataImpl, readPatchedLView, angularCoreEnv, setClassMetadataAsync, NOOP_AFTER_RENDER_REF, AfterRenderManager, TracingService, AfterRenderImpl, AfterRenderSequence, AFTER_RENDER_PHASES, assertComponentDef, ComponentFactory } from './_debug_node-chunk.mjs';
11
- export { ANIMATION_MODULE_TYPE, APP_INITIALIZER, Attribute, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver, ComponentRef, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, Directive, ElementRef, Host, HostBinding, HostListener, Inject, Input, MAX_ANIMATION_TIMEOUT, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, Optional, Output, PLATFORM_ID, Pipe, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, ViewContainerRef, afterEveryRender, afterNextRender, asNativeElements, createEnvironmentInjector, createNgModule, createNgModuleRef, enableProfiling, getDebugNode, inputBinding, isSignal, isWritableSignal, makeStateKey, outputBinding, provideAppInitializer, provideNgReflectAttributes, provideZonelessChangeDetection, setTestabilityGetter, twoWayBinding, ANIMATIONS_DISABLED as ɵANIMATIONS_DISABLED, AcxChangeDetectionStrategy as ɵAcxChangeDetectionStrategy, AcxViewEncapsulation as ɵAcxViewEncapsulation, ɵCONTROL, ComponentFactory$1 as ɵComponentFactory, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, HydrationStatus as ɵHydrationStatus, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, IS_ENABLED_BLOCKING_INITIAL_NAVIGATION as ɵIS_ENABLED_BLOCKING_INITIAL_NAVIGATION, LContext as ɵLContext, LocaleDataIndex as ɵLocaleDataIndex, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, ReflectionCapabilities as ɵReflectionCapabilities, ComponentRef$1 as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TimerScheduler as ɵTimerScheduler, TracingAction as ɵTracingAction, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allLeavingAnimations as ɵallLeavingAnimations, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compilePipe as ɵcompilePipe, depsTracker as ɵdepsTracker, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getDebugNode as ɵgetDebugNode, getDeferBlocks as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, getTransferState as ɵgetTransferState, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, inferTagNameFromDefinition as ɵinferTagNameFromDefinition, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isNgModule as ɵisNgModule, isSubscribable as ɵisSubscribable, isViewDirty as ɵisViewDirty, markForRefresh as ɵmarkForRefresh, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetIncrementalHydrationEnabledWarnedForTests as ɵresetIncrementalHydrationEnabledWarnedForTests, resetJitOptions as ɵresetJitOptions, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, ɵsetClassDebugInfo, setDocument as ɵsetDocument, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵattachSourceLocations, ɵɵattribute, ɵɵclassMap, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵconditionalBranchCreate, ɵɵconditionalCreate, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵcontrol, ɵɵcontrolCreate, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdomElement, ɵɵdomElementContainer, ɵɵdomElementContainerEnd, ɵɵdomElementContainerStart, ɵɵdomElementEnd, ɵɵdomElementStart, ɵɵdomListener, ɵɵdomProperty, ɵɵdomTemplate, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵgetReplaceMetadataURL, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinterpolate, ɵɵinterpolate1, ɵɵinterpolate2, ɵɵinterpolate3, ɵɵinterpolate4, ɵɵinterpolate5, ɵɵinterpolate6, ɵɵinterpolate7, ɵɵinterpolate8, ɵɵinterpolateV, ɵɵinvalidFactory, ɵɵlistener, ɵɵloadQuery, ɵɵnextContext, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleProp, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal } from './_debug_node-chunk.mjs';
11
+ export { ANIMATION_MODULE_TYPE, APP_INITIALIZER, Attribute, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver, ComponentRef, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, Directive, ElementRef, Host, HostBinding, HostListener, Inject, Input, MAX_ANIMATION_TIMEOUT, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, Optional, Output, PLATFORM_ID, Pipe, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, ViewContainerRef, afterEveryRender, afterNextRender, asNativeElements, createEnvironmentInjector, createNgModule, createNgModuleRef, enableProfiling, getDebugNode, inputBinding, isSignal, isWritableSignal, makeStateKey, outputBinding, provideAppInitializer, provideNgReflectAttributes, provideZonelessChangeDetection, setTestabilityGetter, twoWayBinding, ANIMATIONS_DISABLED as ɵANIMATIONS_DISABLED, AcxChangeDetectionStrategy as ɵAcxChangeDetectionStrategy, AcxViewEncapsulation as ɵAcxViewEncapsulation, ɵCONTROL, ComponentFactory$1 as ɵComponentFactory, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, HydrationStatus as ɵHydrationStatus, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, IS_ENABLED_BLOCKING_INITIAL_NAVIGATION as ɵIS_ENABLED_BLOCKING_INITIAL_NAVIGATION, LContext as ɵLContext, LocaleDataIndex as ɵLocaleDataIndex, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, ReflectionCapabilities as ɵReflectionCapabilities, ComponentRef$1 as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TimerScheduler as ɵTimerScheduler, TracingAction as ɵTracingAction, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allLeavingAnimations as ɵallLeavingAnimations, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compilePipe as ɵcompilePipe, depsTracker as ɵdepsTracker, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getDebugNode as ɵgetDebugNode, getDeferBlocks as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, getTransferState as ɵgetTransferState, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, inferTagNameFromDefinition as ɵinferTagNameFromDefinition, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isNgModule as ɵisNgModule, isSubscribable as ɵisSubscribable, isViewDirty as ɵisViewDirty, markForRefresh as ɵmarkForRefresh, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetIncrementalHydrationEnabledWarnedForTests as ɵresetIncrementalHydrationEnabledWarnedForTests, resetJitOptions as ɵresetJitOptions, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, ɵsetClassDebugInfo, setDocument as ɵsetDocument, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵattachSourceLocations, ɵɵattribute, ɵɵclassMap, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵconditionalBranchCreate, ɵɵconditionalCreate, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵcontrol, ɵɵcontrolCreate, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdomElement, ɵɵdomElementContainer, ɵɵdomElementContainerEnd, ɵɵdomElementContainerStart, ɵɵdomElementEnd, ɵɵdomElementStart, ɵɵdomListener, ɵɵdomProperty, ɵɵdomTemplate, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵgetReplaceMetadataURL, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinterpolate, ɵɵinterpolate1, ɵɵinterpolate2, ɵɵinterpolate3, ɵɵinterpolate4, ɵɵinterpolate5, ɵɵinterpolate6, ɵɵinterpolate7, ɵɵinterpolate8, ɵɵinterpolateV, ɵɵinvalidFactory, ɵɵlistener, ɵɵloadQuery, ɵɵnextContext, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleProp, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateAttribute, ɵɵviewQuery, ɵɵviewQuerySignal } from './_debug_node-chunk.mjs';
12
12
  import { OutputEmitterRef } from './_resource-chunk.mjs';
13
13
  export { computed, linkedSignal, resource, ResourceImpl as ɵResourceImpl, encapsulateResourceError as ɵencapsulateResourceError, getOutputDestroyRef as ɵgetOutputDestroyRef } from './_resource-chunk.mjs';
14
14
  import { Subscription } from 'rxjs';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.1
2
+ * @license Angular v21.0.2
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.1
2
+ * @license Angular v21.0.2
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.1
2
+ * @license Angular v21.0.2
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -15,8 +15,8 @@ const formatter = {
15
15
  let value;
16
16
  try {
17
17
  value = sig();
18
- } catch {
19
- return ['span', 'Signal(⚠️ Error)'];
18
+ } catch (e) {
19
+ return ['span', `Signal(⚠️ Error)${e.message ? `: ${e.message}` : ''}`];
20
20
  }
21
21
  const kind = 'computation' in sig[SIGNAL] ? 'Computed' : 'Signal';
22
22
  const isPrimitive = value === null || !Array.isArray(value) && typeof value !== 'object';
@@ -1 +1 @@
1
- {"version":3,"file":"primitives-signals.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/core/primitives/signals/src/formatter.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/core/primitives/signals/src/watch.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/core/primitives/signals/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {SIGNAL} from './graph';\n\n// Only a subset of HTML tags are allowed in the custom formatter JsonML format.\n// See https://firefox-source-docs.mozilla.org/devtools-user/custom_formatters/index.html#html-template-format\ntype AllowedTags = 'span' | 'div' | 'ol' | 'ul' | 'li' | 'table' | 'tr' | 'td';\n\ntype JsonMLText = string;\ntype JsonMLAttrs = Record<string, string>;\ntype JsonMLElement =\n | [tagName: AllowedTags, ...children: (JsonMLNode | JsonMLChild)[]]\n | [tagName: AllowedTags, attrs: JsonMLAttrs, ...children: (JsonMLNode | JsonMLChild)[]];\ntype JsonMLNode = JsonMLText | JsonMLElement;\ntype JsonMLChild = ['object', {object: unknown; config?: unknown}];\ntype JsonML = JsonMLNode;\n\ntype FormatterConfig = unknown & {ngSkipFormatting?: boolean};\n\ndeclare global {\n // We need to use `var` here to be able to declare a global variable.\n // `let` and `const` will be locally scoped to the file.\n // tslint:disable-next-line:no-unused-variable\n var devtoolsFormatters: any[];\n}\n\n/**\n * A custom formatter which renders signals in an easy-to-read format.\n *\n * @see https://firefox-source-docs.mozilla.org/devtools-user/custom_formatters/index.html\n */\n\nconst formatter = {\n /**\n * If the function returns `null`, the formatter is not used for this reference\n */\n header: (sig: any, config: FormatterConfig): JsonML | null => {\n if (!isSignal(sig) || config?.ngSkipFormatting) return null;\n\n let value: unknown;\n try {\n value = sig();\n } catch {\n // In case the signal throws, we don't want to break the formatting.\n return ['span', 'Signal(⚠️ Error)'];\n }\n\n const kind = 'computation' in (sig[SIGNAL] as any) ? 'Computed' : 'Signal';\n\n const isPrimitive = value === null || (!Array.isArray(value) && typeof value !== 'object');\n\n return [\n 'span',\n {},\n ['span', {}, `${kind}(`],\n (() => {\n if (isSignal(value)) {\n // Recursively call formatter. Could return an `object` to call the formatter through DevTools,\n // but then recursive signals will render multiple expando arrows which is an awkward UX.\n return formatter.header(value, config)!;\n } else if (isPrimitive && value !== undefined && typeof value !== 'function') {\n // Use built-in rendering for primitives which applies standard syntax highlighting / theming.\n // Can't do this for `undefined` however, as the browser thinks we forgot to provide an object.\n // Also don't want to do this for functions which render nested expando arrows.\n return ['object', {object: value}];\n } else {\n return prettifyPreview(value as Record<string | number | symbol, unknown>);\n }\n })(),\n ['span', {}, `)`],\n ];\n },\n\n hasBody: (sig: any, config: FormatterConfig) => {\n if (!isSignal(sig)) return false;\n\n try {\n sig();\n } catch {\n return false;\n }\n return !config?.ngSkipFormatting;\n },\n\n body: (sig: any, config: any): JsonML => {\n // We can use sys colors to fit the current DevTools theme.\n // Those are unfortunately only available on Chromium-based browsers.\n // On Firefow we fall back to the default color\n const color = 'var(--sys-color-primary)';\n\n return [\n 'div',\n {style: `background: #FFFFFF10; padding-left: 4px; padding-top: 2px; padding-bottom: 2px;`},\n ['div', {style: `color: ${color}`}, 'Signal value: '],\n ['div', {style: `padding-left: .5rem;`}, ['object', {object: sig(), config}]],\n ['div', {style: `color: ${color}`}, 'Signal function: '],\n [\n 'div',\n {style: `padding-left: .5rem;`},\n ['object', {object: sig, config: {...config, ngSkipFormatting: true}}],\n ],\n ];\n },\n};\n\nfunction prettifyPreview(\n value: Record<string | number | symbol, unknown> | Array<unknown> | undefined,\n): string | JsonMLChild {\n if (value === null) return 'null';\n if (Array.isArray(value)) return `Array(${value.length})`;\n if (value instanceof Element) return `<${value.tagName.toLowerCase()}>`;\n if (value instanceof URL) return `URL`;\n\n switch (typeof value) {\n case 'undefined': {\n return 'undefined';\n }\n case 'function': {\n if ('prototype' in value) {\n // This is what Chrome renders, can't use `object` though because it creates a nested expando arrow.\n return 'class';\n } else {\n return '() => {…}';\n }\n }\n case 'object': {\n if (value.constructor.name === 'Object') {\n return '{…}';\n } else {\n return `${value.constructor.name} {}`;\n }\n }\n default: {\n return ['object', {object: value, config: {ngSkipFormatting: true}}];\n }\n }\n}\n\nfunction isSignal(value: any): boolean {\n return value[SIGNAL] !== undefined;\n}\n\n/**\n * Installs the custom formatter into custom formatting on Signals in the devtools.\n *\n * Supported by both Chrome and Firefox.\n *\n * @see https://firefox-source-docs.mozilla.org/devtools-user/custom_formatters/index.html\n */\nexport function installDevToolsSignalFormatter() {\n globalThis.devtoolsFormatters ??= [];\n if (!globalThis.devtoolsFormatters.some((f: any) => f === formatter)) {\n globalThis.devtoolsFormatters.push(formatter);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n consumerAfterComputation,\n consumerBeforeComputation,\n consumerDestroy,\n consumerMarkDirty,\n consumerPollProducersForChange,\n isInNotificationPhase,\n REACTIVE_NODE,\n ReactiveNode,\n SIGNAL,\n} from './graph';\n\n// Required as the signals library is in a separate package, so we need to explicitly ensure the\n// global `ngDevMode` type is defined.\ndeclare const ngDevMode: boolean | undefined;\n\n/**\n * A cleanup function that can be optionally registered from the watch logic. If registered, the\n * cleanup logic runs before the next watch execution.\n */\nexport type WatchCleanupFn = () => void;\n\n/**\n * A callback passed to the watch function that makes it possible to register cleanup logic.\n */\nexport type WatchCleanupRegisterFn = (cleanupFn: WatchCleanupFn) => void;\n\nexport interface Watch {\n notify(): void;\n\n /**\n * Execute the reactive expression in the context of this `Watch` consumer.\n *\n * Should be called by the user scheduling algorithm when the provided\n * `schedule` hook is called by `Watch`.\n */\n run(): void;\n\n cleanup(): void;\n\n /**\n * Destroy the watcher:\n * - disconnect it from the reactive graph;\n * - mark it as destroyed so subsequent run and notify operations are noop.\n */\n destroy(): void;\n\n [SIGNAL]: WatchNode;\n}\nexport interface WatchNode extends ReactiveNode {\n fn: ((onCleanup: WatchCleanupRegisterFn) => void) | null;\n schedule: ((watch: Watch) => void) | null;\n cleanupFn: WatchCleanupFn;\n ref: Watch;\n}\n\nexport function createWatch(\n fn: (onCleanup: WatchCleanupRegisterFn) => void,\n schedule: (watch: Watch) => void,\n allowSignalWrites: boolean,\n): Watch {\n const node: WatchNode = Object.create(WATCH_NODE);\n if (allowSignalWrites) {\n node.consumerAllowSignalWrites = true;\n }\n\n node.fn = fn;\n node.schedule = schedule;\n\n const registerOnCleanup = (cleanupFn: WatchCleanupFn) => {\n node.cleanupFn = cleanupFn;\n };\n\n function isWatchNodeDestroyed(node: WatchNode) {\n return node.fn === null && node.schedule === null;\n }\n\n function destroyWatchNode(node: WatchNode) {\n if (!isWatchNodeDestroyed(node)) {\n consumerDestroy(node); // disconnect watcher from the reactive graph\n node.cleanupFn();\n\n // nullify references to the integration functions to mark node as destroyed\n node.fn = null;\n node.schedule = null;\n node.cleanupFn = NOOP_CLEANUP_FN;\n }\n }\n\n const run = () => {\n if (node.fn === null) {\n // trying to run a destroyed watch is noop\n return;\n }\n\n if (isInNotificationPhase()) {\n throw new Error(\n typeof ngDevMode !== 'undefined' && ngDevMode\n ? 'Schedulers cannot synchronously execute watches while scheduling.'\n : '',\n );\n }\n\n node.dirty = false;\n if (node.version > 0 && !consumerPollProducersForChange(node)) {\n return;\n }\n node.version++;\n\n const prevConsumer = consumerBeforeComputation(node);\n try {\n node.cleanupFn();\n node.cleanupFn = NOOP_CLEANUP_FN;\n node.fn(registerOnCleanup);\n } finally {\n consumerAfterComputation(node, prevConsumer);\n }\n };\n\n node.ref = {\n notify: () => consumerMarkDirty(node),\n run,\n cleanup: () => node.cleanupFn(),\n destroy: () => destroyWatchNode(node),\n [SIGNAL]: node,\n };\n\n return node.ref;\n}\n\nconst NOOP_CLEANUP_FN: WatchCleanupFn = () => {};\n\n// Note: Using an IIFE here to ensure that the spread assignment is not considered\n// a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.\n// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.\nconst WATCH_NODE: Partial<WatchNode> = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n consumerIsAlwaysLive: true,\n consumerAllowSignalWrites: false,\n consumerMarkedDirty: (node: WatchNode) => {\n if (node.schedule !== null) {\n node.schedule(node.ref);\n }\n },\n cleanupFn: NOOP_CLEANUP_FN,\n };\n})();\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {installDevToolsSignalFormatter} from './src/formatter';\n\nexport {ComputedNode, createComputed} from './src/computed';\nexport {\n ComputationFn,\n LinkedSignalNode,\n LinkedSignalGetter,\n PreviousValue,\n createLinkedSignal,\n linkedSignalSetFn,\n linkedSignalUpdateFn,\n} from './src/linked_signal';\nexport {ValueEqualityFn, defaultEquals} from './src/equality';\nexport {setThrowInvalidWriteToSignalError} from './src/errors';\nexport {\n REACTIVE_NODE,\n Reactive,\n ReactiveHookFn,\n ReactiveNode,\n ReactiveNodeKind,\n SIGNAL,\n consumerAfterComputation,\n consumerBeforeComputation,\n consumerDestroy,\n consumerMarkDirty,\n consumerPollProducersForChange,\n finalizeConsumerAfterComputation,\n getActiveConsumer,\n isInNotificationPhase,\n isReactive,\n producerAccessed,\n producerIncrementEpoch,\n producerMarkClean,\n producerNotifyConsumers,\n producerUpdateValueVersion,\n producerUpdatesAllowed,\n resetConsumerBeforeComputation,\n runPostProducerCreatedFn,\n setActiveConsumer,\n setPostProducerCreatedFn,\n Version,\n} from './src/graph';\nexport {\n SIGNAL_NODE,\n SignalGetter,\n SignalNode,\n createSignal,\n runPostSignalSetFn,\n setPostSignalSetFn,\n signalGetFn,\n signalSetFn,\n signalUpdateFn,\n} from './src/signal';\nexport {Watch, WatchCleanupFn, WatchCleanupRegisterFn, createWatch} from './src/watch';\nexport {setAlternateWeakRefImpl} from './src/weak_ref';\nexport {untracked} from './src/untracked';\nexport {runEffect, BASE_EFFECT_NODE, BaseEffectNode} from './src/effect';\nexport {installDevToolsSignalFormatter} from './src/formatter';\n\n// Required as the signals library is in a separate package, so we need to explicitly ensure the\n// global `ngDevMode` type is defined.\ndeclare const ngDevMode: boolean | undefined;\n\n// We're using a top-level access to enable signal formatting whenever the signals package is loaded.\n// ngDevMode might not have been init correctly yet, checking for `undefined` ensures that in case\n// it is not defined yet, we still install the formatter.\nif (typeof ngDevMode === 'undefined' || ngDevMode) {\n // tslint:disable-next-line: no-toplevel-property-access\n installDevToolsSignalFormatter();\n}\n"],"names":["formatter","header","sig","config","isSignal","ngSkipFormatting","value","kind","SIGNAL","isPrimitive","Array","isArray","undefined","object","prettifyPreview","hasBody","body","color","style","length","Element","tagName","toLowerCase","URL","constructor","name","installDevToolsSignalFormatter","globalThis","devtoolsFormatters","some","f","push","createWatch","fn","schedule","allowSignalWrites","node","Object","create","WATCH_NODE","consumerAllowSignalWrites","registerOnCleanup","cleanupFn","isWatchNodeDestroyed","destroyWatchNode","consumerDestroy","NOOP_CLEANUP_FN","run","isInNotificationPhase","Error","ngDevMode","dirty","version","consumerPollProducersForChange","prevConsumer","consumerBeforeComputation","consumerAfterComputation","ref","notify","consumerMarkDirty","cleanup","destroy","REACTIVE_NODE","consumerIsAlwaysLive","consumerMarkedDirty"],"mappings":"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"}
1
+ {"version":3,"file":"primitives-signals.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/core/primitives/signals/src/formatter.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/core/primitives/signals/src/watch.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/core/primitives/signals/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {SIGNAL} from './graph';\n\n// Only a subset of HTML tags are allowed in the custom formatter JsonML format.\n// See https://firefox-source-docs.mozilla.org/devtools-user/custom_formatters/index.html#html-template-format\ntype AllowedTags = 'span' | 'div' | 'ol' | 'ul' | 'li' | 'table' | 'tr' | 'td';\n\ntype JsonMLText = string;\ntype JsonMLAttrs = Record<string, string>;\ntype JsonMLElement =\n | [tagName: AllowedTags, ...children: (JsonMLNode | JsonMLChild)[]]\n | [tagName: AllowedTags, attrs: JsonMLAttrs, ...children: (JsonMLNode | JsonMLChild)[]];\ntype JsonMLNode = JsonMLText | JsonMLElement;\ntype JsonMLChild = ['object', {object: unknown; config?: unknown}];\ntype JsonML = JsonMLNode;\n\ntype FormatterConfig = unknown & {ngSkipFormatting?: boolean};\n\ndeclare global {\n // We need to use `var` here to be able to declare a global variable.\n // `let` and `const` will be locally scoped to the file.\n // tslint:disable-next-line:no-unused-variable\n var devtoolsFormatters: any[];\n}\n\n/**\n * A custom formatter which renders signals in an easy-to-read format.\n *\n * @see https://firefox-source-docs.mozilla.org/devtools-user/custom_formatters/index.html\n */\n\nconst formatter = {\n /**\n * If the function returns `null`, the formatter is not used for this reference\n */\n header: (sig: any, config: FormatterConfig): JsonML | null => {\n if (!isSignal(sig) || config?.ngSkipFormatting) return null;\n\n let value: unknown;\n try {\n value = sig();\n } catch (e: any) {\n // In case the signal throws, we don't want to break the formatting.\n return ['span', `Signal(⚠️ Error)${e.message ? `: ${e.message}` : ''}`];\n }\n\n const kind = 'computation' in (sig[SIGNAL] as any) ? 'Computed' : 'Signal';\n\n const isPrimitive = value === null || (!Array.isArray(value) && typeof value !== 'object');\n\n return [\n 'span',\n {},\n ['span', {}, `${kind}(`],\n (() => {\n if (isSignal(value)) {\n // Recursively call formatter. Could return an `object` to call the formatter through DevTools,\n // but then recursive signals will render multiple expando arrows which is an awkward UX.\n return formatter.header(value, config)!;\n } else if (isPrimitive && value !== undefined && typeof value !== 'function') {\n // Use built-in rendering for primitives which applies standard syntax highlighting / theming.\n // Can't do this for `undefined` however, as the browser thinks we forgot to provide an object.\n // Also don't want to do this for functions which render nested expando arrows.\n return ['object', {object: value}];\n } else {\n return prettifyPreview(value as Record<string | number | symbol, unknown>);\n }\n })(),\n ['span', {}, `)`],\n ];\n },\n\n hasBody: (sig: any, config: FormatterConfig) => {\n if (!isSignal(sig)) return false;\n\n try {\n sig();\n } catch {\n return false;\n }\n return !config?.ngSkipFormatting;\n },\n\n body: (sig: any, config: any): JsonML => {\n // We can use sys colors to fit the current DevTools theme.\n // Those are unfortunately only available on Chromium-based browsers.\n // On Firefow we fall back to the default color\n const color = 'var(--sys-color-primary)';\n\n return [\n 'div',\n {style: `background: #FFFFFF10; padding-left: 4px; padding-top: 2px; padding-bottom: 2px;`},\n ['div', {style: `color: ${color}`}, 'Signal value: '],\n ['div', {style: `padding-left: .5rem;`}, ['object', {object: sig(), config}]],\n ['div', {style: `color: ${color}`}, 'Signal function: '],\n [\n 'div',\n {style: `padding-left: .5rem;`},\n ['object', {object: sig, config: {...config, ngSkipFormatting: true}}],\n ],\n ];\n },\n};\n\nfunction prettifyPreview(\n value: Record<string | number | symbol, unknown> | Array<unknown> | undefined,\n): string | JsonMLChild {\n if (value === null) return 'null';\n if (Array.isArray(value)) return `Array(${value.length})`;\n if (value instanceof Element) return `<${value.tagName.toLowerCase()}>`;\n if (value instanceof URL) return `URL`;\n\n switch (typeof value) {\n case 'undefined': {\n return 'undefined';\n }\n case 'function': {\n if ('prototype' in value) {\n // This is what Chrome renders, can't use `object` though because it creates a nested expando arrow.\n return 'class';\n } else {\n return '() => {…}';\n }\n }\n case 'object': {\n if (value.constructor.name === 'Object') {\n return '{…}';\n } else {\n return `${value.constructor.name} {}`;\n }\n }\n default: {\n return ['object', {object: value, config: {ngSkipFormatting: true}}];\n }\n }\n}\n\nfunction isSignal(value: any): boolean {\n return value[SIGNAL] !== undefined;\n}\n\n/**\n * Installs the custom formatter into custom formatting on Signals in the devtools.\n *\n * Supported by both Chrome and Firefox.\n *\n * @see https://firefox-source-docs.mozilla.org/devtools-user/custom_formatters/index.html\n */\nexport function installDevToolsSignalFormatter() {\n globalThis.devtoolsFormatters ??= [];\n if (!globalThis.devtoolsFormatters.some((f: any) => f === formatter)) {\n globalThis.devtoolsFormatters.push(formatter);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n consumerAfterComputation,\n consumerBeforeComputation,\n consumerDestroy,\n consumerMarkDirty,\n consumerPollProducersForChange,\n isInNotificationPhase,\n REACTIVE_NODE,\n ReactiveNode,\n SIGNAL,\n} from './graph';\n\n// Required as the signals library is in a separate package, so we need to explicitly ensure the\n// global `ngDevMode` type is defined.\ndeclare const ngDevMode: boolean | undefined;\n\n/**\n * A cleanup function that can be optionally registered from the watch logic. If registered, the\n * cleanup logic runs before the next watch execution.\n */\nexport type WatchCleanupFn = () => void;\n\n/**\n * A callback passed to the watch function that makes it possible to register cleanup logic.\n */\nexport type WatchCleanupRegisterFn = (cleanupFn: WatchCleanupFn) => void;\n\nexport interface Watch {\n notify(): void;\n\n /**\n * Execute the reactive expression in the context of this `Watch` consumer.\n *\n * Should be called by the user scheduling algorithm when the provided\n * `schedule` hook is called by `Watch`.\n */\n run(): void;\n\n cleanup(): void;\n\n /**\n * Destroy the watcher:\n * - disconnect it from the reactive graph;\n * - mark it as destroyed so subsequent run and notify operations are noop.\n */\n destroy(): void;\n\n [SIGNAL]: WatchNode;\n}\nexport interface WatchNode extends ReactiveNode {\n fn: ((onCleanup: WatchCleanupRegisterFn) => void) | null;\n schedule: ((watch: Watch) => void) | null;\n cleanupFn: WatchCleanupFn;\n ref: Watch;\n}\n\nexport function createWatch(\n fn: (onCleanup: WatchCleanupRegisterFn) => void,\n schedule: (watch: Watch) => void,\n allowSignalWrites: boolean,\n): Watch {\n const node: WatchNode = Object.create(WATCH_NODE);\n if (allowSignalWrites) {\n node.consumerAllowSignalWrites = true;\n }\n\n node.fn = fn;\n node.schedule = schedule;\n\n const registerOnCleanup = (cleanupFn: WatchCleanupFn) => {\n node.cleanupFn = cleanupFn;\n };\n\n function isWatchNodeDestroyed(node: WatchNode) {\n return node.fn === null && node.schedule === null;\n }\n\n function destroyWatchNode(node: WatchNode) {\n if (!isWatchNodeDestroyed(node)) {\n consumerDestroy(node); // disconnect watcher from the reactive graph\n node.cleanupFn();\n\n // nullify references to the integration functions to mark node as destroyed\n node.fn = null;\n node.schedule = null;\n node.cleanupFn = NOOP_CLEANUP_FN;\n }\n }\n\n const run = () => {\n if (node.fn === null) {\n // trying to run a destroyed watch is noop\n return;\n }\n\n if (isInNotificationPhase()) {\n throw new Error(\n typeof ngDevMode !== 'undefined' && ngDevMode\n ? 'Schedulers cannot synchronously execute watches while scheduling.'\n : '',\n );\n }\n\n node.dirty = false;\n if (node.version > 0 && !consumerPollProducersForChange(node)) {\n return;\n }\n node.version++;\n\n const prevConsumer = consumerBeforeComputation(node);\n try {\n node.cleanupFn();\n node.cleanupFn = NOOP_CLEANUP_FN;\n node.fn(registerOnCleanup);\n } finally {\n consumerAfterComputation(node, prevConsumer);\n }\n };\n\n node.ref = {\n notify: () => consumerMarkDirty(node),\n run,\n cleanup: () => node.cleanupFn(),\n destroy: () => destroyWatchNode(node),\n [SIGNAL]: node,\n };\n\n return node.ref;\n}\n\nconst NOOP_CLEANUP_FN: WatchCleanupFn = () => {};\n\n// Note: Using an IIFE here to ensure that the spread assignment is not considered\n// a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.\n// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.\nconst WATCH_NODE: Partial<WatchNode> = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n consumerIsAlwaysLive: true,\n consumerAllowSignalWrites: false,\n consumerMarkedDirty: (node: WatchNode) => {\n if (node.schedule !== null) {\n node.schedule(node.ref);\n }\n },\n cleanupFn: NOOP_CLEANUP_FN,\n };\n})();\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {installDevToolsSignalFormatter} from './src/formatter';\n\nexport {ComputedNode, createComputed} from './src/computed';\nexport {\n ComputationFn,\n LinkedSignalNode,\n LinkedSignalGetter,\n PreviousValue,\n createLinkedSignal,\n linkedSignalSetFn,\n linkedSignalUpdateFn,\n} from './src/linked_signal';\nexport {ValueEqualityFn, defaultEquals} from './src/equality';\nexport {setThrowInvalidWriteToSignalError} from './src/errors';\nexport {\n REACTIVE_NODE,\n Reactive,\n ReactiveHookFn,\n ReactiveNode,\n ReactiveNodeKind,\n SIGNAL,\n consumerAfterComputation,\n consumerBeforeComputation,\n consumerDestroy,\n consumerMarkDirty,\n consumerPollProducersForChange,\n finalizeConsumerAfterComputation,\n getActiveConsumer,\n isInNotificationPhase,\n isReactive,\n producerAccessed,\n producerIncrementEpoch,\n producerMarkClean,\n producerNotifyConsumers,\n producerUpdateValueVersion,\n producerUpdatesAllowed,\n resetConsumerBeforeComputation,\n runPostProducerCreatedFn,\n setActiveConsumer,\n setPostProducerCreatedFn,\n Version,\n} from './src/graph';\nexport {\n SIGNAL_NODE,\n SignalGetter,\n SignalNode,\n createSignal,\n runPostSignalSetFn,\n setPostSignalSetFn,\n signalGetFn,\n signalSetFn,\n signalUpdateFn,\n} from './src/signal';\nexport {Watch, WatchCleanupFn, WatchCleanupRegisterFn, createWatch} from './src/watch';\nexport {setAlternateWeakRefImpl} from './src/weak_ref';\nexport {untracked} from './src/untracked';\nexport {runEffect, BASE_EFFECT_NODE, BaseEffectNode} from './src/effect';\nexport {installDevToolsSignalFormatter} from './src/formatter';\n\n// Required as the signals library is in a separate package, so we need to explicitly ensure the\n// global `ngDevMode` type is defined.\ndeclare const ngDevMode: boolean | undefined;\n\n// We're using a top-level access to enable signal formatting whenever the signals package is loaded.\n// ngDevMode might not have been init correctly yet, checking for `undefined` ensures that in case\n// it is not defined yet, we still install the formatter.\nif (typeof ngDevMode === 'undefined' || ngDevMode) {\n // tslint:disable-next-line: no-toplevel-property-access\n installDevToolsSignalFormatter();\n}\n"],"names":["formatter","header","sig","config","isSignal","ngSkipFormatting","value","e","message","kind","SIGNAL","isPrimitive","Array","isArray","undefined","object","prettifyPreview","hasBody","body","color","style","length","Element","tagName","toLowerCase","URL","constructor","name","installDevToolsSignalFormatter","globalThis","devtoolsFormatters","some","f","push","createWatch","fn","schedule","allowSignalWrites","node","Object","create","WATCH_NODE","consumerAllowSignalWrites","registerOnCleanup","cleanupFn","isWatchNodeDestroyed","destroyWatchNode","consumerDestroy","NOOP_CLEANUP_FN","run","isInNotificationPhase","Error","ngDevMode","dirty","version","consumerPollProducersForChange","prevConsumer","consumerBeforeComputation","consumerAfterComputation","ref","notify","consumerMarkDirty","cleanup","destroy","REACTIVE_NODE","consumerIsAlwaysLive","consumerMarkedDirty"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.1
2
+ * @license Angular v21.0.2
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.1
2
+ * @license Angular v21.0.2
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "21.0.1",
3
+ "version": "21.0.2",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -46,7 +46,7 @@
46
46
  "tslib": "^2.3.0"
47
47
  },
48
48
  "peerDependencies": {
49
- "@angular/compiler": "21.0.1",
49
+ "@angular/compiler": "21.0.2",
50
50
  "rxjs": "^6.5.3 || ^7.4.0",
51
51
  "zone.js": "~0.15.0 || ~0.16.0"
52
52
  },
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -118,13 +118,11 @@ class BootstrapOptionsMigration extends project_paths.TsurgeFunnelMigration {
118
118
  optionLiteral = optionsNode;
119
119
  addProvidersToBootstrapOption(optionProjectFile, optionLiteral, providerFn, replacements);
120
120
  }
121
+ else if (this.isServerConfigZoneless(optionsNode, typeChecker)) {
122
+ // Nothing to migrate for the SSR bootstrap
123
+ return;
124
+ }
121
125
  else if (ts.isIdentifier(optionsNode)) {
122
- // This case handled both `bootstrapApplication(App, appConfig)` and the server () => bootstrapApplication(App, appConfig)
123
- // where appConfig is the result of a `mergeApplicationConfig` call.
124
- // This is tricky case to handle, in G3 we're might not be able to resolve the identifier's value
125
- // Our best alternative is to assume there is not CD providers set and add the ZoneChangeDetection provider
126
- // In the cases where it is, we'll just override the zone provider we just set by re-used inthe appConfig providers
127
- // TODO: Should we insert a TODO to clean this up ?
128
126
  const text = `{...${optionsNode.getText()}, providers: [${providerFn}, ...${optionsNode.getText()}.providers]}`;
129
127
  replacements.push(new project_paths.Replacement(currentProjectFile, new project_paths.TextUpdate({
130
128
  position: optionsNode.getStart(),
@@ -148,6 +146,53 @@ class BootstrapOptionsMigration extends project_paths.TsurgeFunnelMigration {
148
146
  requestedFile: sourceFile,
149
147
  });
150
148
  }
149
+ /**
150
+ * The optionsNode can be a appConfig built with mergeApplicationConfig
151
+ * In this case we need to analyze if the base config uses provideZonelessChangeDetection
152
+ */
153
+ isServerConfigZoneless(optionsNode, typeChecker) {
154
+ // Check if optionsNode is a result of mergeApplicationConfig
155
+ let symbol = typeChecker.getSymbolAtLocation(optionsNode);
156
+ if (symbol && (symbol.flags & ts.SymbolFlags.Alias) !== 0) {
157
+ symbol = typeChecker.getAliasedSymbol(symbol);
158
+ }
159
+ const optionDeclaration = symbol?.getDeclarations()?.[0];
160
+ if (!optionDeclaration) {
161
+ return false;
162
+ }
163
+ if (!ts.isVariableDeclaration(optionDeclaration) ||
164
+ !optionDeclaration.initializer ||
165
+ !ts.isCallExpression(optionDeclaration.initializer) ||
166
+ !ts.isIdentifier(optionDeclaration.initializer.expression) ||
167
+ optionDeclaration.initializer.expression.text !== 'mergeApplicationConfig') {
168
+ // We didn't find a mergeApplicationConfig call, this isn't a server config
169
+ return false;
170
+ }
171
+ let maybeAppConfig = optionDeclaration.initializer.arguments[0];
172
+ if (ts.isIdentifier(maybeAppConfig)) {
173
+ const resolved = getObjectLiteralFromIdentifier(maybeAppConfig, typeChecker);
174
+ if (resolved) {
175
+ maybeAppConfig = resolved;
176
+ }
177
+ }
178
+ if (maybeAppConfig && ts.isObjectLiteralExpression(maybeAppConfig)) {
179
+ for (const prop of maybeAppConfig.properties) {
180
+ if (ts.isPropertyAssignment(prop) &&
181
+ ts.isIdentifier(prop.name) &&
182
+ prop.name.text === 'providers' &&
183
+ ts.isArrayLiteralExpression(prop.initializer)) {
184
+ for (const el of prop.initializer.elements) {
185
+ if (ts.isCallExpression(el) &&
186
+ ts.isIdentifier(el.expression) &&
187
+ el.expression.text === 'provideZonelessChangeDetection') {
188
+ return true;
189
+ }
190
+ }
191
+ }
192
+ }
193
+ }
194
+ return false;
195
+ }
151
196
  analyzeCreateApplication(node, sourceFile, info, typeChecker, importManager, replacements) {
152
197
  const hasExistingChangeDetectionProvider = hasChangeDetectionProvider(node, typeChecker);
153
198
  if (hasExistingChangeDetectionProvider)
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  /**
3
- * @license Angular v21.0.1
3
+ * @license Angular v21.0.2
4
4
  * (c) 2010-2025 Google LLC. https://angular.io/
5
5
  * License: MIT
6
6
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.1
2
+ * @license Angular v21.0.2
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.1
2
+ * @license Angular v21.0.2
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */