@angular/core 22.0.0-next.8 → 22.0.0-rc.0

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 (75) hide show
  1. package/fesm2022/_attribute-chunk.mjs +1 -1
  2. package/fesm2022/_debug_node-chunk.mjs +1051 -985
  3. package/fesm2022/_debug_node-chunk.mjs.map +1 -1
  4. package/fesm2022/_effect-chunk.mjs +1 -1
  5. package/fesm2022/_not_found-chunk.mjs +1 -1
  6. package/fesm2022/_pending_tasks-chunk.mjs +150 -36
  7. package/fesm2022/_pending_tasks-chunk.mjs.map +1 -1
  8. package/fesm2022/_resource-chunk.mjs +56 -18
  9. package/fesm2022/_resource-chunk.mjs.map +1 -1
  10. package/fesm2022/_untracked-chunk.mjs +1 -1
  11. package/fesm2022/_weak_ref-chunk.mjs +1 -1
  12. package/fesm2022/core.mjs +139 -79
  13. package/fesm2022/core.mjs.map +1 -1
  14. package/fesm2022/primitives-di.mjs +1 -1
  15. package/fesm2022/primitives-event-dispatch.mjs +1 -1
  16. package/fesm2022/primitives-signals.mjs +1 -1
  17. package/fesm2022/rxjs-interop.mjs +1 -1
  18. package/fesm2022/rxjs-interop.mjs.map +1 -1
  19. package/fesm2022/testing.mjs +47 -3
  20. package/fesm2022/testing.mjs.map +1 -1
  21. package/package.json +7 -3
  22. package/schematics/bundles/apply_import_manager-CxA_YYgB.cjs +1 -1
  23. package/schematics/bundles/can-match-snapshot-required.cjs +1 -1
  24. package/schematics/bundles/change-detection-eager.cjs +1 -1
  25. package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
  26. package/schematics/bundles/common-to-standalone-migration.cjs +1 -1
  27. package/schematics/bundles/compiler_host-CY14HvaP.cjs +1 -1
  28. package/schematics/bundles/control-flow-migration.cjs +1 -1
  29. package/schematics/bundles/http-xhr-backend.cjs +1 -1
  30. package/schematics/bundles/imports-CKV-ITqD.cjs +1 -1
  31. package/schematics/bundles/incremental-hydration.cjs +10 -7
  32. package/schematics/bundles/{index-DADA7AvC.cjs → index-DxFMpcXS.cjs} +7 -2
  33. package/schematics/bundles/inject-migration.cjs +1 -1
  34. package/schematics/bundles/json-file-Drblb4E1.cjs +1 -1
  35. package/schematics/bundles/leading_space-BTPRV0wu.cjs +1 -1
  36. package/schematics/bundles/{migrate_ts_type_references-B9LlDDUg.cjs → migrate_ts_type_references-DMv-GSuu.cjs} +28 -10
  37. package/schematics/bundles/model-output.cjs +200 -0
  38. package/schematics/bundles/ng_component_template-DPAF1aEA.cjs +1 -1
  39. package/schematics/bundles/ng_decorators-IVztR9rk.cjs +1 -1
  40. package/schematics/bundles/ngclass-to-class-migration.cjs +14 -6
  41. package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
  42. package/schematics/bundles/nodes-ZSQ7WZRB.cjs +1 -1
  43. package/schematics/bundles/output-migration.cjs +2 -2
  44. package/schematics/bundles/parse_html-C8eKA9px.cjs +1 -1
  45. package/schematics/bundles/project_paths-D2V-Uh2L.cjs +1 -1
  46. package/schematics/bundles/project_tsconfig_paths-DkkMibv-.cjs +1 -1
  47. package/schematics/bundles/property_name-BCpALNpZ.cjs +1 -1
  48. package/schematics/bundles/route-lazy-loading.cjs +1 -1
  49. package/schematics/bundles/router-testing-module-migration.cjs +1 -1
  50. package/schematics/bundles/safe-optional-chaining.cjs +570 -0
  51. package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
  52. package/schematics/bundles/signal-input-migration.cjs +3 -3
  53. package/schematics/bundles/signal-queries-migration.cjs +3 -3
  54. package/schematics/bundles/signals.cjs +3 -3
  55. package/schematics/bundles/standalone-migration.cjs +1 -1
  56. package/schematics/bundles/strict-safe-navigation-narrow.cjs +1 -1
  57. package/schematics/bundles/strict-templates-default.cjs +1 -1
  58. package/schematics/migrations.json +10 -0
  59. package/third_party/@mcp-b/webmcp-types/LICENSE +21 -0
  60. package/third_party/@mcp-b/webmcp-types/dist/common.d.ts +297 -0
  61. package/third_party/@mcp-b/webmcp-types/dist/json-schema.d.ts +196 -0
  62. package/third_party/@mcp-b/webmcp-types/index.d.ts +9 -0
  63. package/types/_api-chunk.d.ts +23 -14
  64. package/types/_chrome_dev_tools_performance-chunk.d.ts +1 -1
  65. package/types/_debug_node-chunk.d.ts +1 -1
  66. package/types/_effect-chunk.d.ts +1 -1
  67. package/types/_event_dispatcher-chunk.d.ts +1 -1
  68. package/types/_formatter-chunk.d.ts +1 -1
  69. package/types/_weak_ref-chunk.d.ts +1 -1
  70. package/types/core.d.ts +3379 -3064
  71. package/types/primitives-di.d.ts +1 -1
  72. package/types/primitives-event-dispatch.d.ts +1 -1
  73. package/types/primitives-signals.d.ts +1 -1
  74. package/types/rxjs-interop.d.ts +4 -4
  75. package/types/testing.d.ts +1 -1
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Angular v22.0.0-next.8
2
+ * @license Angular v22.0.0-rc.0
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
7
- import { attachInjectFlag, _global, resolveForwardRef, ɵɵinvalidFactoryDep as __invalidFactoryDep, ɵɵinject as __inject, ɵɵdefineInjector as __defineInjector, ɵɵdefineInjectable as __defineInjectable, newArray, assertString, EMPTY_OBJ, assertFirstCreatePass, assertDefined, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, convertToBitFlags, isRootView, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, setInjectImplementation, injectRootLimpMode, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, assertDirectiveDef, EMBEDDED_VIEW_INJECTOR, T_HOST, NG_ELEMENT_ID, assertIndexInRange, INJECTOR, TVIEW, isComponentDef, isComponentHost, DECLARATION_COMPONENT_VIEW, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, flatten, arrayEquals, ID, isLView, assertDomNode, EMPTY_ARRAY, getComponentLViewByIndex, CONTEXT, unwrapRNode, assertLView, HOST, getLViewParent, isLContainer, CONTAINER_HEADER_OFFSET, CHILD_HEAD, NEXT, Injector, CLEANUP, getComponentDef, getDirectiveDef, InjectionToken, inject, ENVIRONMENT_INITIALIZER, DOCUMENT as DOCUMENT$1, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, makeEnvironmentProviders, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, stringify, ANIMATIONS, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, NgZone, ChangeDetectionScheduler, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector, INJECTOR$1, isDestroyed, assertLContainer, MOVED_VIEWS, assertProjectionSlots, NATIVE, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertParentView, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, INTERNAL_APPLICATION_ERROR_HANDLER, assertNotSame, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, setCurrentDirectiveIndex, getCurrentDirectiveIndex, unwrapLView, enterView, leaveView, isCreationMode, markViewForRefresh, setIsInCheckNoChangesMode, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setBindingIndex, EFFECTS_TO_SCHEDULE, setBindingRootForHostBindings, viewAttachedToChangeDetector, CheckNoChangesMode, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getCurrentTNodePlaceholderOk, assertTNode, assertTIcu, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, getTNode, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, debugStringifyTypeForError, assertNotDefined, nextBindingIndex, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, getDirectiveDefOrThrow, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, runInInjectionContext, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, setInjectorProfiler, EffectRefImpl, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, VERSION, isSignal, isInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, arrayInsert2, arraySplice, PendingTasks, decreaseElementDepthCount, assertTNodeCreationIndex, getNamespace, enterSkipHydrationBlock, isSkipHydrationRootTNode, leaveSkipHydrationBlock, getCurrentDirectiveDef, assertIndexInExpandoRange, getBindingIndex, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, incrementBindingIndex, keyValueArrayGet, keyValueArraySet, isWritableSignal, store, getBindingRoot, providerToFactory, emitProviderConfiguredEvent, isClassProvider, NG_COMP_DEF, forwardRef, ɵɵrestoreView as __restoreView, ɵɵdisableBindings as __disableBindings, ɵɵenableBindings as __enableBindings, ɵɵnamespaceSVG as __namespaceSVG, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceHTML as __namespaceHTML, ɵɵresetView as __resetView, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, PROVIDED_ZONELESS, NoopNgZone, angularZoneInstanceIdProperty, scheduleCallbackWithMicrotask, scheduleCallbackWithRafRace, SCHEDULE_IN_ROOT_ZONE, getNativeByTNodeOrNull } from './_pending_tasks-chunk.mjs';
7
+ import { assertString, EMPTY_OBJ, assertFirstCreatePass, assertDefined, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, resolveForwardRef, getFactoryDef, convertToBitFlags, isRootView, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, setInjectImplementation, injectRootLimpMode, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, assertDirectiveDef, EMBEDDED_VIEW_INJECTOR, T_HOST, NG_ELEMENT_ID, assertIndexInRange, INJECTOR, TVIEW, isComponentDef, isComponentHost, DECLARATION_COMPONENT_VIEW, makeEnvironmentProviders, InjectionToken, _global, ɵɵinvalidFactoryDep as __invalidFactoryDep, ɵɵinject as __inject, ɵɵdefineInjector as __defineInjector, ɵɵdefineInjectable as __defineInjectable, newArray, attachInjectFlag, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, registerSpecialProvider, flatten, arrayEquals, ID, isLView, assertDomNode, EMPTY_ARRAY, getComponentLViewByIndex, CONTEXT, unwrapRNode, assertLView, HOST, getLViewParent, isLContainer, CONTAINER_HEADER_OFFSET, CHILD_HEAD, NEXT, Injector, CLEANUP, getComponentDef, getDirectiveDef, APP_ID, inject, makeStateKey, formatRuntimeError, TransferState, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, stringify, ANIMATIONS, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, NgZone, ChangeDetectionScheduler, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector, INJECTOR$1, isDestroyed, assertLContainer, MOVED_VIEWS, assertProjectionSlots, NATIVE, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, assertParentView, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, INTERNAL_APPLICATION_ERROR_HANDLER, assertNotSame, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, setCurrentDirectiveIndex, getCurrentDirectiveIndex, unwrapLView, enterView, leaveView, isCreationMode, markViewForRefresh, setIsInCheckNoChangesMode, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setBindingIndex, EFFECTS_TO_SCHEDULE, setBindingRootForHostBindings, viewAttachedToChangeDetector, CheckNoChangesMode, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, DOC_PAGE_BASE_URL, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getCurrentTNodePlaceholderOk, assertTIcu, assertTNode, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, getTNode, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, debugStringifyTypeForError, assertNotDefined, nextBindingIndex, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, getDirectiveDefOrThrow, DOCUMENT as DOCUMENT$1, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, runInInjectionContext, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, setInjectorProfiler, EffectRefImpl, NullInjector, getAllSpecialProviders, ENVIRONMENT_INITIALIZER, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, VERSION, retrieveTransferredState, isSignal, isInInjectionContext, PendingTasksInternal, ZONELESS_ENABLED, EffectScheduler, arrayInsert2, arraySplice, PendingTasks, decreaseElementDepthCount, assertTNodeCreationIndex, getNamespace, enterSkipHydrationBlock, isSkipHydrationRootTNode, leaveSkipHydrationBlock, getCurrentDirectiveDef, getBindingIndex, assertIndexInExpandoRange, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, incrementBindingIndex, keyValueArrayGet, keyValueArraySet, isWritableSignal, store, getBindingRoot, providerToFactory, emitProviderConfiguredEvent, isClassProvider, NG_COMP_DEF, forwardRef, ɵɵrestoreView as __restoreView, ɵɵdisableBindings as __disableBindings, ɵɵenableBindings as __enableBindings, ɵɵnamespaceSVG as __namespaceSVG, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceHTML as __namespaceHTML, ɵɵresetView as __resetView, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, PROVIDED_ZONELESS, NoopNgZone, angularZoneInstanceIdProperty, scheduleCallbackWithMicrotask, scheduleCallbackWithRafRace, SCHEDULE_IN_ROOT_ZONE, getNativeByTNodeOrNull } from './_pending_tasks-chunk.mjs';
8
8
  import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
9
9
  import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './_effect-chunk.mjs';
10
10
  import { Subject, Subscription } from 'rxjs';
@@ -17,315 +17,6 @@ function noSideEffects(fn) {
17
17
  }.toString();
18
18
  }
19
19
 
20
- const ANNOTATIONS = '__annotations__';
21
- const PARAMETERS = '__parameters__';
22
- const PROP_METADATA = '__prop__metadata__';
23
- function makeDecorator(name, props, parentClass, additionalProcessing, typeFn) {
24
- return noSideEffects(() => {
25
- const metaCtor = makeMetadataCtor(props);
26
- function DecoratorFactory(...args) {
27
- if (this instanceof DecoratorFactory) {
28
- metaCtor.call(this, ...args);
29
- return this;
30
- }
31
- const annotationInstance = new DecoratorFactory(...args);
32
- return function TypeDecorator(cls) {
33
- if (typeFn) typeFn(cls, ...args);
34
- const annotations = cls.hasOwnProperty(ANNOTATIONS) ? cls[ANNOTATIONS] : Object.defineProperty(cls, ANNOTATIONS, {
35
- value: []
36
- })[ANNOTATIONS];
37
- annotations.push(annotationInstance);
38
- return cls;
39
- };
40
- }
41
- if (parentClass) {
42
- DecoratorFactory.prototype = Object.create(parentClass.prototype);
43
- }
44
- DecoratorFactory.prototype.ngMetadataName = name;
45
- DecoratorFactory.annotationCls = DecoratorFactory;
46
- return DecoratorFactory;
47
- });
48
- }
49
- function makeMetadataCtor(props) {
50
- return function ctor(...args) {
51
- if (props) {
52
- const values = props(...args);
53
- for (const propName in values) {
54
- this[propName] = values[propName];
55
- }
56
- }
57
- };
58
- }
59
- function makeParamDecorator(name, props, parentClass) {
60
- return noSideEffects(() => {
61
- const metaCtor = makeMetadataCtor(props);
62
- function ParamDecoratorFactory(...args) {
63
- if (this instanceof ParamDecoratorFactory) {
64
- metaCtor.apply(this, args);
65
- return this;
66
- }
67
- const annotationInstance = new ParamDecoratorFactory(...args);
68
- ParamDecorator.annotation = annotationInstance;
69
- return ParamDecorator;
70
- function ParamDecorator(cls, unusedKey, index) {
71
- const parameters = cls.hasOwnProperty(PARAMETERS) ? cls[PARAMETERS] : Object.defineProperty(cls, PARAMETERS, {
72
- value: []
73
- })[PARAMETERS];
74
- while (parameters.length <= index) {
75
- parameters.push(null);
76
- }
77
- (parameters[index] = parameters[index] || []).push(annotationInstance);
78
- return cls;
79
- }
80
- }
81
- ParamDecoratorFactory.prototype.ngMetadataName = name;
82
- ParamDecoratorFactory.annotationCls = ParamDecoratorFactory;
83
- return ParamDecoratorFactory;
84
- });
85
- }
86
- function makePropDecorator(name, props, parentClass, additionalProcessing) {
87
- return noSideEffects(() => {
88
- const metaCtor = makeMetadataCtor(props);
89
- function PropDecoratorFactory(...args) {
90
- if (this instanceof PropDecoratorFactory) {
91
- metaCtor.apply(this, args);
92
- return this;
93
- }
94
- const decoratorInstance = new PropDecoratorFactory(...args);
95
- function PropDecorator(target, name) {
96
- if (target === undefined) {
97
- throw new Error('Standard Angular field decorators are not supported in JIT mode.');
98
- }
99
- const constructor = target.constructor;
100
- const meta = constructor.hasOwnProperty(PROP_METADATA) ? constructor[PROP_METADATA] : Object.defineProperty(constructor, PROP_METADATA, {
101
- value: {}
102
- })[PROP_METADATA];
103
- meta[name] = meta.hasOwnProperty(name) && meta[name] || [];
104
- meta[name].unshift(decoratorInstance);
105
- }
106
- return PropDecorator;
107
- }
108
- if (parentClass) {
109
- PropDecoratorFactory.prototype = Object.create(parentClass.prototype);
110
- }
111
- PropDecoratorFactory.prototype.ngMetadataName = name;
112
- PropDecoratorFactory.annotationCls = PropDecoratorFactory;
113
- return PropDecoratorFactory;
114
- });
115
- }
116
-
117
- const Inject = attachInjectFlag(makeParamDecorator('Inject', token => ({
118
- token
119
- })), -1);
120
- const Optional = attachInjectFlag(makeParamDecorator('Optional'), 8);
121
- const Self = attachInjectFlag(makeParamDecorator('Self'), 2);
122
- const SkipSelf = attachInjectFlag(makeParamDecorator('SkipSelf'), 4);
123
- const Host = attachInjectFlag(makeParamDecorator('Host'), 1);
124
-
125
- function getCompilerFacade(request) {
126
- const globalNg = _global['ng'];
127
- if (globalNg && globalNg.ɵcompilerFacade) {
128
- return globalNg.ɵcompilerFacade;
129
- }
130
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
131
- console.error(`JIT compilation failed for ${request.kind}`, request.type);
132
- let message = `The ${request.kind} '${request.type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available.\n\n`;
133
- if (request.usage === 1) {
134
- message += `The ${request.kind} is part of a library that has been partially compiled.\n`;
135
- message += `However, the Angular Linker has not processed the library such that JIT compilation is used as fallback.\n`;
136
- message += '\n';
137
- message += `Ideally, the library is processed using the Angular Linker to become fully AOT compiled.\n`;
138
- } else {
139
- message += `JIT compilation is discouraged for production use-cases! Consider using AOT mode instead.\n`;
140
- }
141
- message += `Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server',\n`;
142
- message += `or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.`;
143
- throw new Error(message);
144
- } else {
145
- throw new Error('JIT compiler unavailable');
146
- }
147
- }
148
-
149
- const angularCoreDiEnv = {
150
- 'ɵɵdefineInjectable': __defineInjectable,
151
- 'ɵɵdefineInjector': __defineInjector,
152
- 'ɵɵinject': __inject,
153
- 'ɵɵinvalidFactoryDep': __invalidFactoryDep,
154
- 'resolveForwardRef': resolveForwardRef
155
- };
156
-
157
- const Type = Function;
158
- function isType(v) {
159
- return typeof v === 'function';
160
- }
161
-
162
- const ES5_DELEGATE_CTOR = /^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*(arguments|(?:[^()]+\(\[\],)?[^()]+\(arguments\).*)\)/;
163
- const ES2015_INHERITED_CLASS = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/;
164
- const ES2015_INHERITED_CLASS_WITH_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/;
165
- const ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{[^}]*super\(\.\.\.arguments\)/;
166
- function isDelegateCtor(typeStr) {
167
- return ES5_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS.test(typeStr) && !ES2015_INHERITED_CLASS_WITH_CTOR.test(typeStr);
168
- }
169
- class ReflectionCapabilities {
170
- _reflect;
171
- constructor(reflect) {
172
- this._reflect = reflect || _global['Reflect'];
173
- }
174
- factory(t) {
175
- return (...args) => new t(...args);
176
- }
177
- _zipTypesAndAnnotations(paramTypes, paramAnnotations) {
178
- let result;
179
- if (typeof paramTypes === 'undefined') {
180
- result = newArray(paramAnnotations.length);
181
- } else {
182
- result = newArray(paramTypes.length);
183
- }
184
- for (let i = 0; i < result.length; i++) {
185
- if (typeof paramTypes === 'undefined') {
186
- result[i] = [];
187
- } else if (paramTypes[i] && paramTypes[i] != Object) {
188
- result[i] = [paramTypes[i]];
189
- } else {
190
- result[i] = [];
191
- }
192
- if (paramAnnotations && paramAnnotations[i] != null) {
193
- result[i] = result[i].concat(paramAnnotations[i]);
194
- }
195
- }
196
- return result;
197
- }
198
- _ownParameters(type, parentCtor) {
199
- const typeStr = type.toString();
200
- if (isDelegateCtor(typeStr)) {
201
- return null;
202
- }
203
- if (type.parameters && type.parameters !== parentCtor.parameters) {
204
- return type.parameters;
205
- }
206
- const tsickleCtorParams = type.ctorParameters;
207
- if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {
208
- const ctorParameters = typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;
209
- const paramTypes = ctorParameters.map(ctorParam => ctorParam && ctorParam.type);
210
- const paramAnnotations = ctorParameters.map(ctorParam => ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators));
211
- return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);
212
- }
213
- const paramAnnotations = type.hasOwnProperty(PARAMETERS) && type[PARAMETERS];
214
- const paramTypes = this._reflect && this._reflect.getOwnMetadata && this._reflect.getOwnMetadata('design:paramtypes', type);
215
- if (paramTypes || paramAnnotations) {
216
- return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);
217
- }
218
- return newArray(type.length);
219
- }
220
- parameters(type) {
221
- if (!isType(type)) {
222
- return [];
223
- }
224
- const parentCtor = getParentCtor(type);
225
- let parameters = this._ownParameters(type, parentCtor);
226
- if (!parameters && parentCtor !== Object) {
227
- parameters = this.parameters(parentCtor);
228
- }
229
- return parameters || [];
230
- }
231
- _ownAnnotations(typeOrFunc, parentCtor) {
232
- if (typeOrFunc.annotations && typeOrFunc.annotations !== parentCtor.annotations) {
233
- let annotations = typeOrFunc.annotations;
234
- if (typeof annotations === 'function' && annotations.annotations) {
235
- annotations = annotations.annotations;
236
- }
237
- return annotations;
238
- }
239
- if (typeOrFunc.decorators && typeOrFunc.decorators !== parentCtor.decorators) {
240
- return convertTsickleDecoratorIntoMetadata(typeOrFunc.decorators);
241
- }
242
- if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {
243
- return typeOrFunc[ANNOTATIONS];
244
- }
245
- return null;
246
- }
247
- annotations(typeOrFunc) {
248
- if (!isType(typeOrFunc)) {
249
- return [];
250
- }
251
- const parentCtor = getParentCtor(typeOrFunc);
252
- const ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];
253
- const parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];
254
- return parentAnnotations.concat(ownAnnotations);
255
- }
256
- _ownPropMetadata(typeOrFunc, parentCtor) {
257
- if (typeOrFunc.propMetadata && typeOrFunc.propMetadata !== parentCtor.propMetadata) {
258
- let propMetadata = typeOrFunc.propMetadata;
259
- if (typeof propMetadata === 'function' && propMetadata.propMetadata) {
260
- propMetadata = propMetadata.propMetadata;
261
- }
262
- return propMetadata;
263
- }
264
- if (typeOrFunc.propDecorators && typeOrFunc.propDecorators !== parentCtor.propDecorators) {
265
- const propDecorators = typeOrFunc.propDecorators;
266
- const propMetadata = {};
267
- Object.keys(propDecorators).forEach(prop => {
268
- propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]);
269
- });
270
- return propMetadata;
271
- }
272
- if (typeOrFunc.hasOwnProperty(PROP_METADATA)) {
273
- return typeOrFunc[PROP_METADATA];
274
- }
275
- return null;
276
- }
277
- propMetadata(typeOrFunc) {
278
- if (!isType(typeOrFunc)) {
279
- return {};
280
- }
281
- const parentCtor = getParentCtor(typeOrFunc);
282
- const propMetadata = {};
283
- if (parentCtor !== Object) {
284
- const parentPropMetadata = this.propMetadata(parentCtor);
285
- Object.keys(parentPropMetadata).forEach(propName => {
286
- propMetadata[propName] = parentPropMetadata[propName];
287
- });
288
- }
289
- const ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);
290
- if (ownPropMetadata) {
291
- Object.keys(ownPropMetadata).forEach(propName => {
292
- const decorators = [];
293
- if (propMetadata.hasOwnProperty(propName)) {
294
- decorators.push(...propMetadata[propName]);
295
- }
296
- decorators.push(...ownPropMetadata[propName]);
297
- propMetadata[propName] = decorators;
298
- });
299
- }
300
- return propMetadata;
301
- }
302
- ownPropMetadata(typeOrFunc) {
303
- if (!isType(typeOrFunc)) {
304
- return {};
305
- }
306
- return this._ownPropMetadata(typeOrFunc, getParentCtor(typeOrFunc)) || {};
307
- }
308
- hasLifecycleHook(type, lcProperty) {
309
- return type instanceof Type && lcProperty in type.prototype;
310
- }
311
- }
312
- function convertTsickleDecoratorIntoMetadata(decoratorInvocations) {
313
- if (!decoratorInvocations) {
314
- return [];
315
- }
316
- return decoratorInvocations.map(decoratorInvocation => {
317
- const decoratorType = decoratorInvocation.type;
318
- const annotationCls = decoratorType.annotationCls;
319
- const annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];
320
- return new annotationCls(...annotationArgs);
321
- });
322
- }
323
- function getParentCtor(ctor) {
324
- const parentProto = ctor.prototype ? Object.getPrototypeOf(ctor.prototype) : null;
325
- const parentCtor = parentProto ? parentProto.constructor : null;
326
- return parentCtor || Object;
327
- }
328
-
329
20
  function applyValueToInputField(instance, inputSignalNode, privateName, value) {
330
21
  if (inputSignalNode !== null) {
331
22
  inputSignalNode.applyValueToInputSignal(inputSignalNode, value);
@@ -610,565 +301,920 @@ function toTNodeTypeAsString(tNodeType) {
610
301
  function isTNodeShape(value) {
611
302
  return value != null && typeof value === 'object' && (value.insertBeforeIndex === null || typeof value.insertBeforeIndex === 'number' || Array.isArray(value.insertBeforeIndex));
612
303
  }
613
- function isLetDeclaration(tNode) {
614
- return !!(tNode.type & 128);
304
+ function isLetDeclaration(tNode) {
305
+ return !!(tNode.type & 128);
306
+ }
307
+ function hasClassInput(tNode) {
308
+ return (tNode.flags & 8) !== 0;
309
+ }
310
+ function hasStyleInput(tNode) {
311
+ return (tNode.flags & 16) !== 0;
312
+ }
313
+
314
+ function assertTNodeType(tNode, expectedTypes, message) {
315
+ assertDefined(tNode, 'should be called with a TNode');
316
+ if ((tNode.type & expectedTypes) === 0) {
317
+ throwError(message || `Expected [${toTNodeTypeAsString(expectedTypes)}] but got ${toTNodeTypeAsString(tNode.type)}.`);
318
+ }
319
+ }
320
+ function assertPureTNodeType(type) {
321
+ if (!(type === 2 || type === 1 || type === 4 || type === 8 || type === 32 || type === 16 || type === 64 || type === 128)) {
322
+ throwError(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`);
323
+ }
324
+ }
325
+
326
+ function setUpAttributes(renderer, native, attrs) {
327
+ let i = 0;
328
+ while (i < attrs.length) {
329
+ const value = attrs[i];
330
+ if (typeof value === 'number') {
331
+ if (value !== 0) {
332
+ break;
333
+ }
334
+ i++;
335
+ const namespaceURI = attrs[i++];
336
+ const attrName = attrs[i++];
337
+ const attrVal = attrs[i++];
338
+ renderer.setAttribute(native, attrName, attrVal, namespaceURI);
339
+ } else {
340
+ const attrName = value;
341
+ const attrVal = attrs[++i];
342
+ if (isAnimationProp(attrName)) {
343
+ renderer.setProperty(native, attrName, attrVal);
344
+ } else {
345
+ renderer.setAttribute(native, attrName, attrVal);
346
+ }
347
+ i++;
348
+ }
349
+ }
350
+ return i;
351
+ }
352
+ function isNameOnlyAttributeMarker(marker) {
353
+ return marker === 3 || marker === 4 || marker === 6;
354
+ }
355
+ function isAnimationProp(name) {
356
+ return name.charCodeAt(0) === 64;
357
+ }
358
+ function mergeHostAttrs(dst, src) {
359
+ if (src === null || src.length === 0) ; else if (dst === null || dst.length === 0) {
360
+ dst = src.slice();
361
+ } else {
362
+ let srcMarker = -1;
363
+ for (let i = 0; i < src.length; i++) {
364
+ const item = src[i];
365
+ if (typeof item === 'number') {
366
+ srcMarker = item;
367
+ } else {
368
+ if (srcMarker === 0) ; else if (srcMarker === -1 || srcMarker === 2) {
369
+ mergeHostAttribute(dst, srcMarker, item, null, src[++i]);
370
+ } else {
371
+ mergeHostAttribute(dst, srcMarker, item, null, null);
372
+ }
373
+ }
374
+ }
375
+ }
376
+ return dst;
377
+ }
378
+ function mergeHostAttribute(dst, marker, key1, key2, value) {
379
+ let i = 0;
380
+ let markerInsertPosition = dst.length;
381
+ if (marker === -1) {
382
+ markerInsertPosition = -1;
383
+ } else {
384
+ while (i < dst.length) {
385
+ const dstValue = dst[i++];
386
+ if (typeof dstValue === 'number') {
387
+ if (dstValue === marker) {
388
+ markerInsertPosition = -1;
389
+ break;
390
+ } else if (dstValue > marker) {
391
+ markerInsertPosition = i - 1;
392
+ break;
393
+ }
394
+ }
395
+ }
396
+ }
397
+ while (i < dst.length) {
398
+ const item = dst[i];
399
+ if (typeof item === 'number') {
400
+ break;
401
+ } else if (item === key1) {
402
+ {
403
+ if (value !== null) {
404
+ dst[i + 1] = value;
405
+ }
406
+ return;
407
+ }
408
+ }
409
+ i++;
410
+ if (value !== null) i++;
411
+ }
412
+ if (markerInsertPosition !== -1) {
413
+ dst.splice(markerInsertPosition, 0, marker);
414
+ i = markerInsertPosition + 1;
415
+ }
416
+ dst.splice(i++, 0, key1);
417
+ if (value !== null) {
418
+ dst.splice(i++, 0, value);
419
+ }
420
+ }
421
+
422
+ function hasParentInjector(parentLocation) {
423
+ return parentLocation !== NO_PARENT_INJECTOR;
424
+ }
425
+ function getParentInjectorIndex(parentLocation) {
426
+ if (ngDevMode) {
427
+ assertNumber(parentLocation, 'Number expected');
428
+ assertNotEqual(parentLocation, -1, 'Not a valid state.');
429
+ const parentInjectorIndex = parentLocation & 32767;
430
+ assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, 'Parent injector must be pointing past HEADER_OFFSET.');
431
+ }
432
+ return parentLocation & 32767;
433
+ }
434
+ function getParentInjectorViewOffset(parentLocation) {
435
+ return parentLocation >> 16;
436
+ }
437
+ function getParentInjectorView(location, startView) {
438
+ let viewOffset = getParentInjectorViewOffset(location);
439
+ let parentView = startView;
440
+ while (viewOffset > 0) {
441
+ parentView = parentView[DECLARATION_VIEW];
442
+ viewOffset--;
443
+ }
444
+ return parentView;
445
+ }
446
+
447
+ let includeViewProviders = true;
448
+ function setIncludeViewProviders(v) {
449
+ const oldValue = includeViewProviders;
450
+ includeViewProviders = v;
451
+ return oldValue;
452
+ }
453
+ const BLOOM_SIZE = 256;
454
+ const BLOOM_MASK = BLOOM_SIZE - 1;
455
+ const BLOOM_BUCKET_BITS = 5;
456
+ let nextNgElementId = 0;
457
+ const NOT_FOUND = {};
458
+ function bloomAdd(injectorIndex, tView, type) {
459
+ ngDevMode && assertEqual(tView.firstCreatePass, true, 'expected firstCreatePass to be true');
460
+ let id;
461
+ if (typeof type === 'string') {
462
+ id = type.charCodeAt(0) || 0;
463
+ } else if (type.hasOwnProperty(NG_ELEMENT_ID)) {
464
+ id = type[NG_ELEMENT_ID];
465
+ }
466
+ if (id == null) {
467
+ id = type[NG_ELEMENT_ID] = nextNgElementId++;
468
+ }
469
+ const bloomHash = id & BLOOM_MASK;
470
+ const mask = 1 << bloomHash;
471
+ tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;
472
+ }
473
+ function getOrCreateNodeInjectorForNode(tNode, lView) {
474
+ const existingInjectorIndex = getInjectorIndex(tNode, lView);
475
+ if (existingInjectorIndex !== -1) {
476
+ return existingInjectorIndex;
477
+ }
478
+ const tView = lView[TVIEW];
479
+ if (tView.firstCreatePass) {
480
+ tNode.injectorIndex = lView.length;
481
+ insertBloom(tView.data, tNode);
482
+ insertBloom(lView, null);
483
+ insertBloom(tView.blueprint, null);
484
+ }
485
+ const parentLoc = getParentInjectorLocation(tNode, lView);
486
+ const injectorIndex = tNode.injectorIndex;
487
+ if (hasParentInjector(parentLoc)) {
488
+ const parentIndex = getParentInjectorIndex(parentLoc);
489
+ const parentLView = getParentInjectorView(parentLoc, lView);
490
+ const parentData = parentLView[TVIEW].data;
491
+ for (let i = 0; i < 8; i++) {
492
+ lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];
493
+ }
494
+ }
495
+ lView[injectorIndex + 8] = parentLoc;
496
+ return injectorIndex;
497
+ }
498
+ function insertBloom(arr, footer) {
499
+ arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer);
500
+ }
501
+ function getInjectorIndex(tNode, lView) {
502
+ if (tNode.injectorIndex === -1 || tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex || lView[tNode.injectorIndex + 8] === null) {
503
+ return -1;
504
+ } else {
505
+ ngDevMode && assertIndexInRange(lView, tNode.injectorIndex);
506
+ return tNode.injectorIndex;
507
+ }
615
508
  }
616
- function hasClassInput(tNode) {
617
- return (tNode.flags & 8) !== 0;
509
+ function getParentInjectorLocation(tNode, lView) {
510
+ if (tNode.parent && tNode.parent.injectorIndex !== -1) {
511
+ return tNode.parent.injectorIndex;
512
+ }
513
+ let declarationViewOffset = 0;
514
+ let parentTNode = null;
515
+ let lViewCursor = lView;
516
+ while (lViewCursor !== null) {
517
+ parentTNode = getTNodeFromLView(lViewCursor);
518
+ if (parentTNode === null) {
519
+ return NO_PARENT_INJECTOR;
520
+ }
521
+ ngDevMode && parentTNode && assertTNodeForLView(parentTNode, lViewCursor[DECLARATION_VIEW]);
522
+ declarationViewOffset++;
523
+ lViewCursor = lViewCursor[DECLARATION_VIEW];
524
+ if (parentTNode.injectorIndex !== -1) {
525
+ return parentTNode.injectorIndex | declarationViewOffset << 16;
526
+ }
527
+ }
528
+ return NO_PARENT_INJECTOR;
618
529
  }
619
- function hasStyleInput(tNode) {
620
- return (tNode.flags & 16) !== 0;
530
+ function diPublicInInjector(injectorIndex, tView, token) {
531
+ bloomAdd(injectorIndex, tView, token);
621
532
  }
622
-
623
- function assertTNodeType(tNode, expectedTypes, message) {
624
- assertDefined(tNode, 'should be called with a TNode');
625
- if ((tNode.type & expectedTypes) === 0) {
626
- throwError(message || `Expected [${toTNodeTypeAsString(expectedTypes)}] but got ${toTNodeTypeAsString(tNode.type)}.`);
533
+ function injectAttributeImpl(tNode, attrNameToInject) {
534
+ ngDevMode && assertTNodeType(tNode, 12 | 3);
535
+ ngDevMode && assertDefined(tNode, 'expecting tNode');
536
+ if (attrNameToInject === 'class') {
537
+ return tNode.classes;
538
+ }
539
+ if (attrNameToInject === 'style') {
540
+ return tNode.styles;
541
+ }
542
+ const attrs = tNode.attrs;
543
+ if (attrs) {
544
+ const attrsLength = attrs.length;
545
+ let i = 0;
546
+ while (i < attrsLength) {
547
+ const value = attrs[i];
548
+ if (isNameOnlyAttributeMarker(value)) break;
549
+ if (value === 0) {
550
+ i = i + 2;
551
+ } else if (typeof value === 'number') {
552
+ i++;
553
+ while (i < attrsLength && typeof attrs[i] === 'string') {
554
+ i++;
555
+ }
556
+ } else if (value === attrNameToInject) {
557
+ return attrs[i + 1];
558
+ } else {
559
+ i = i + 2;
560
+ }
561
+ }
627
562
  }
563
+ return null;
628
564
  }
629
- function assertPureTNodeType(type) {
630
- if (!(type === 2 || type === 1 || type === 4 || type === 8 || type === 32 || type === 16 || type === 64 || type === 128)) {
631
- throwError(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`);
565
+ function notFoundValueOrThrow(notFoundValue, token, flags) {
566
+ if (flags & 8 || notFoundValue !== undefined) {
567
+ return notFoundValue;
568
+ } else {
569
+ throwProviderNotFoundError(token, 'NodeInjector');
632
570
  }
633
571
  }
634
-
635
- function setUpAttributes(renderer, native, attrs) {
636
- let i = 0;
637
- while (i < attrs.length) {
638
- const value = attrs[i];
639
- if (typeof value === 'number') {
640
- if (value !== 0) {
641
- break;
642
- }
643
- i++;
644
- const namespaceURI = attrs[i++];
645
- const attrName = attrs[i++];
646
- const attrVal = attrs[i++];
647
- renderer.setAttribute(native, attrName, attrVal, namespaceURI);
648
- } else {
649
- const attrName = value;
650
- const attrVal = attrs[++i];
651
- if (isAnimationProp(attrName)) {
652
- renderer.setProperty(native, attrName, attrVal);
572
+ function lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) {
573
+ if (flags & 8 && notFoundValue === undefined) {
574
+ notFoundValue = null;
575
+ }
576
+ if ((flags & (2 | 1)) === 0) {
577
+ const moduleInjector = lView[INJECTOR];
578
+ const previousInjectImplementation = setInjectImplementation(undefined);
579
+ try {
580
+ if (moduleInjector) {
581
+ return moduleInjector.get(token, notFoundValue, flags & 8);
653
582
  } else {
654
- renderer.setAttribute(native, attrName, attrVal);
583
+ return injectRootLimpMode(token, notFoundValue, flags & 8);
655
584
  }
656
- i++;
585
+ } finally {
586
+ setInjectImplementation(previousInjectImplementation);
657
587
  }
658
588
  }
659
- return i;
660
- }
661
- function isNameOnlyAttributeMarker(marker) {
662
- return marker === 3 || marker === 4 || marker === 6;
589
+ return notFoundValueOrThrow(notFoundValue, token, flags);
663
590
  }
664
- function isAnimationProp(name) {
665
- return name.charCodeAt(0) === 64;
591
+ function getOrCreateInjectable(tNode, lView, token, flags = 0, notFoundValue) {
592
+ if (tNode !== null) {
593
+ if (lView[FLAGS] & 2048 && !(flags & 2)) {
594
+ const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND);
595
+ if (embeddedInjectorValue !== NOT_FOUND) {
596
+ return embeddedInjectorValue;
597
+ }
598
+ }
599
+ const value = lookupTokenUsingNodeInjector(tNode, lView, token, flags, NOT_FOUND);
600
+ if (value !== NOT_FOUND) {
601
+ return value;
602
+ }
603
+ }
604
+ return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);
666
605
  }
667
- function mergeHostAttrs(dst, src) {
668
- if (src === null || src.length === 0) ; else if (dst === null || dst.length === 0) {
669
- dst = src.slice();
670
- } else {
671
- let srcMarker = -1;
672
- for (let i = 0; i < src.length; i++) {
673
- const item = src[i];
674
- if (typeof item === 'number') {
675
- srcMarker = item;
606
+ function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue) {
607
+ const bloomHash = bloomHashBitOrFactory(token);
608
+ if (typeof bloomHash === 'function') {
609
+ if (!enterDI(lView, tNode, flags)) {
610
+ return flags & 1 ? notFoundValueOrThrow(notFoundValue, token, flags) : lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);
611
+ }
612
+ try {
613
+ let value;
614
+ if (ngDevMode) {
615
+ runInInjectorProfilerContext(new NodeInjector(getCurrentTNode(), getLView()), token, () => {
616
+ emitInjectorToCreateInstanceEvent(token);
617
+ value = bloomHash(flags);
618
+ emitInstanceCreatedByInjectorEvent(value);
619
+ });
676
620
  } else {
677
- if (srcMarker === 0) ; else if (srcMarker === -1 || srcMarker === 2) {
678
- mergeHostAttribute(dst, srcMarker, item, null, src[++i]);
679
- } else {
680
- mergeHostAttribute(dst, srcMarker, item, null, null);
621
+ value = bloomHash(flags);
622
+ }
623
+ if (value == null && !(flags & 8)) {
624
+ throwProviderNotFoundError(token);
625
+ } else {
626
+ return value;
627
+ }
628
+ } finally {
629
+ leaveDI();
630
+ }
631
+ } else if (typeof bloomHash === 'number') {
632
+ let previousTView = null;
633
+ let injectorIndex = getInjectorIndex(tNode, lView);
634
+ let parentLocation = NO_PARENT_INJECTOR;
635
+ let hostTElementNode = flags & 1 ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null;
636
+ if (injectorIndex === -1 || flags & 4) {
637
+ parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) : lView[injectorIndex + 8];
638
+ if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {
639
+ injectorIndex = -1;
640
+ } else {
641
+ previousTView = lView[TVIEW];
642
+ injectorIndex = getParentInjectorIndex(parentLocation);
643
+ lView = getParentInjectorView(parentLocation, lView);
644
+ }
645
+ }
646
+ while (injectorIndex !== -1) {
647
+ ngDevMode && assertNodeInjector(lView, injectorIndex);
648
+ const tView = lView[TVIEW];
649
+ ngDevMode && assertTNodeForLView(tView.data[injectorIndex + 8], lView);
650
+ if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {
651
+ const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode);
652
+ if (instance !== NOT_FOUND) {
653
+ return instance;
681
654
  }
682
655
  }
656
+ parentLocation = lView[injectorIndex + 8];
657
+ if (parentLocation !== NO_PARENT_INJECTOR && shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8] === hostTElementNode) && bloomHasToken(bloomHash, injectorIndex, lView)) {
658
+ previousTView = tView;
659
+ injectorIndex = getParentInjectorIndex(parentLocation);
660
+ lView = getParentInjectorView(parentLocation, lView);
661
+ } else {
662
+ injectorIndex = -1;
663
+ }
683
664
  }
684
665
  }
685
- return dst;
666
+ return notFoundValue;
686
667
  }
687
- function mergeHostAttribute(dst, marker, key1, key2, value) {
688
- let i = 0;
689
- let markerInsertPosition = dst.length;
690
- if (marker === -1) {
691
- markerInsertPosition = -1;
668
+ function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) {
669
+ const currentTView = lView[TVIEW];
670
+ const tNode = currentTView.data[injectorIndex + 8];
671
+ const canAccessViewProviders = previousTView == null ? isComponentHost(tNode) && includeViewProviders : previousTView != currentTView && (tNode.type & 3) !== 0;
672
+ const isHostSpecialCase = flags & 1 && hostTElementNode === tNode;
673
+ const injectableIdx = locateDirectiveOrProvider(tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase);
674
+ if (injectableIdx !== null) {
675
+ return getNodeInjectable(lView, currentTView, injectableIdx, tNode, flags);
692
676
  } else {
693
- while (i < dst.length) {
694
- const dstValue = dst[i++];
695
- if (typeof dstValue === 'number') {
696
- if (dstValue === marker) {
697
- markerInsertPosition = -1;
698
- break;
699
- } else if (dstValue > marker) {
700
- markerInsertPosition = i - 1;
701
- break;
702
- }
677
+ return NOT_FOUND;
678
+ }
679
+ }
680
+ function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) {
681
+ const nodeProviderIndexes = tNode.providerIndexes;
682
+ const tInjectables = tView.data;
683
+ const injectablesStart = nodeProviderIndexes & 1048575;
684
+ const directivesStart = tNode.directiveStart;
685
+ const directiveEnd = tNode.directiveEnd;
686
+ const cptViewProvidersCount = nodeProviderIndexes >> 20;
687
+ const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount;
688
+ const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;
689
+ for (let i = startingIndex; i < endIndex; i++) {
690
+ const providerTokenOrDef = tInjectables[i];
691
+ if (i < directivesStart && token === providerTokenOrDef || i >= directivesStart && providerTokenOrDef.type === token) {
692
+ return i;
693
+ }
694
+ }
695
+ if (isHostSpecialCase) {
696
+ const dirDef = tInjectables[directivesStart];
697
+ if (dirDef && isComponentDef(dirDef) && dirDef.type === token) {
698
+ return directivesStart;
699
+ }
700
+ }
701
+ return null;
702
+ }
703
+ let injectionPath = [];
704
+ function getNodeInjectable(lView, tView, index, tNode, flags) {
705
+ let value = lView[index];
706
+ const tData = tView.data;
707
+ if (value instanceof NodeInjectorFactory) {
708
+ const factory = value;
709
+ ngDevMode && injectionPath.push(factory.name ?? 'unknown');
710
+ if (factory.resolving) {
711
+ let token = '';
712
+ if (ngDevMode) {
713
+ token = stringifyForError(tData[index]);
714
+ throw cyclicDependencyErrorWithDetails(token, injectionPath);
715
+ } else {
716
+ throw cyclicDependencyError(token);
703
717
  }
704
718
  }
705
- }
706
- while (i < dst.length) {
707
- const item = dst[i];
708
- if (typeof item === 'number') {
709
- break;
710
- } else if (item === key1) {
711
- {
712
- if (value !== null) {
713
- dst[i + 1] = value;
714
- }
715
- return;
719
+ const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);
720
+ factory.resolving = true;
721
+ const token = tData[index].type || tData[index];
722
+ let prevInjectContext;
723
+ if (ngDevMode) {
724
+ const injector = new NodeInjector(tNode, lView);
725
+ prevInjectContext = setInjectorProfilerContext({
726
+ injector,
727
+ token
728
+ });
729
+ }
730
+ const previousInjectImplementation = factory.injectImpl ? setInjectImplementation(factory.injectImpl) : null;
731
+ const success = enterDI(lView, tNode, 0);
732
+ ngDevMode && assertEqual(success, true, "Because flags do not contain `SkipSelf' we expect this to always succeed.");
733
+ try {
734
+ ngDevMode && emitInjectorToCreateInstanceEvent(token);
735
+ value = lView[index] = factory.factory(undefined, flags, tData, lView, tNode);
736
+ ngDevMode && emitInstanceCreatedByInjectorEvent(value);
737
+ if (tView.firstCreatePass && index >= tNode.directiveStart) {
738
+ ngDevMode && assertDirectiveDef(tData[index]);
739
+ registerPreOrderHooks(index, tData[index], tView);
716
740
  }
741
+ } finally {
742
+ ngDevMode && setInjectorProfilerContext(prevInjectContext);
743
+ previousInjectImplementation !== null && setInjectImplementation(previousInjectImplementation);
744
+ setIncludeViewProviders(previousIncludeViewProviders);
745
+ factory.resolving = false;
746
+ leaveDI();
747
+ ngDevMode && (injectionPath = []);
717
748
  }
718
- i++;
719
- if (value !== null) i++;
720
749
  }
721
- if (markerInsertPosition !== -1) {
722
- dst.splice(markerInsertPosition, 0, marker);
723
- i = markerInsertPosition + 1;
750
+ return value;
751
+ }
752
+ function bloomHashBitOrFactory(token) {
753
+ ngDevMode && assertDefined(token, 'token must be defined');
754
+ if (typeof token === 'string') {
755
+ return token.charCodeAt(0) || 0;
724
756
  }
725
- dst.splice(i++, 0, key1);
726
- if (value !== null) {
727
- dst.splice(i++, 0, value);
757
+ const tokenId = token.hasOwnProperty(NG_ELEMENT_ID) ? token[NG_ELEMENT_ID] : undefined;
758
+ if (typeof tokenId === 'number') {
759
+ if (tokenId >= 0) {
760
+ return tokenId & BLOOM_MASK;
761
+ } else {
762
+ ngDevMode && assertEqual(tokenId, -1, 'Expecting to get Special Injector Id');
763
+ return createNodeInjector;
764
+ }
765
+ } else {
766
+ return tokenId;
728
767
  }
729
768
  }
730
-
731
- function hasParentInjector(parentLocation) {
732
- return parentLocation !== NO_PARENT_INJECTOR;
733
- }
734
- function getParentInjectorIndex(parentLocation) {
735
- if (ngDevMode) {
736
- assertNumber(parentLocation, 'Number expected');
737
- assertNotEqual(parentLocation, -1, 'Not a valid state.');
738
- const parentInjectorIndex = parentLocation & 32767;
739
- assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, 'Parent injector must be pointing past HEADER_OFFSET.');
740
- }
741
- return parentLocation & 32767;
769
+ function bloomHasToken(bloomHash, injectorIndex, injectorView) {
770
+ const mask = 1 << bloomHash;
771
+ const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];
772
+ return !!(value & mask);
742
773
  }
743
- function getParentInjectorViewOffset(parentLocation) {
744
- return parentLocation >> 16;
774
+ function shouldSearchParent(flags, isFirstHostTNode) {
775
+ return !(flags & 2) && !(flags & 1 && isFirstHostTNode);
745
776
  }
746
- function getParentInjectorView(location, startView) {
747
- let viewOffset = getParentInjectorViewOffset(location);
748
- let parentView = startView;
749
- while (viewOffset > 0) {
750
- parentView = parentView[DECLARATION_VIEW];
751
- viewOffset--;
752
- }
753
- return parentView;
777
+ function getNodeInjectorLView(nodeInjector) {
778
+ return nodeInjector._lView;
754
779
  }
755
-
756
- let includeViewProviders = true;
757
- function setIncludeViewProviders(v) {
758
- const oldValue = includeViewProviders;
759
- includeViewProviders = v;
760
- return oldValue;
780
+ function getNodeInjectorTNode(nodeInjector) {
781
+ return nodeInjector._tNode;
761
782
  }
762
- const BLOOM_SIZE = 256;
763
- const BLOOM_MASK = BLOOM_SIZE - 1;
764
- const BLOOM_BUCKET_BITS = 5;
765
- let nextNgElementId = 0;
766
- const NOT_FOUND = {};
767
- function bloomAdd(injectorIndex, tView, type) {
768
- ngDevMode && assertEqual(tView.firstCreatePass, true, 'expected firstCreatePass to be true');
769
- let id;
770
- if (typeof type === 'string') {
771
- id = type.charCodeAt(0) || 0;
772
- } else if (type.hasOwnProperty(NG_ELEMENT_ID)) {
773
- id = type[NG_ELEMENT_ID];
783
+ class NodeInjector {
784
+ _tNode;
785
+ _lView;
786
+ constructor(_tNode, _lView) {
787
+ this._tNode = _tNode;
788
+ this._lView = _lView;
774
789
  }
775
- if (id == null) {
776
- id = type[NG_ELEMENT_ID] = nextNgElementId++;
790
+ get(token, notFoundValue, flags) {
791
+ return getOrCreateInjectable(this._tNode, this._lView, token, convertToBitFlags(flags), notFoundValue);
777
792
  }
778
- const bloomHash = id & BLOOM_MASK;
779
- const mask = 1 << bloomHash;
780
- tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;
781
793
  }
782
- function getOrCreateNodeInjectorForNode(tNode, lView) {
783
- const existingInjectorIndex = getInjectorIndex(tNode, lView);
784
- if (existingInjectorIndex !== -1) {
785
- return existingInjectorIndex;
786
- }
787
- const tView = lView[TVIEW];
788
- if (tView.firstCreatePass) {
789
- tNode.injectorIndex = lView.length;
790
- insertBloom(tView.data, tNode);
791
- insertBloom(lView, null);
792
- insertBloom(tView.blueprint, null);
793
- }
794
- const parentLoc = getParentInjectorLocation(tNode, lView);
795
- const injectorIndex = tNode.injectorIndex;
796
- if (hasParentInjector(parentLoc)) {
797
- const parentIndex = getParentInjectorIndex(parentLoc);
798
- const parentLView = getParentInjectorView(parentLoc, lView);
799
- const parentData = parentLView[TVIEW].data;
800
- for (let i = 0; i < 8; i++) {
801
- lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];
802
- }
803
- }
804
- lView[injectorIndex + 8] = parentLoc;
805
- return injectorIndex;
794
+ function createNodeInjector() {
795
+ return new NodeInjector(getCurrentTNode(), getLView());
806
796
  }
807
- function insertBloom(arr, footer) {
808
- arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer);
797
+ function ɵɵgetInheritedFactory(type) {
798
+ return noSideEffects(() => {
799
+ const ownConstructor = type.prototype.constructor;
800
+ const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor);
801
+ const objectPrototype = Object.prototype;
802
+ let parent = Object.getPrototypeOf(type.prototype).constructor;
803
+ while (parent && parent !== objectPrototype) {
804
+ const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent);
805
+ if (factory && factory !== ownFactory) {
806
+ return factory;
807
+ }
808
+ parent = Object.getPrototypeOf(parent);
809
+ }
810
+ return t => new t();
811
+ });
809
812
  }
810
- function getInjectorIndex(tNode, lView) {
811
- if (tNode.injectorIndex === -1 || tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex || lView[tNode.injectorIndex + 8] === null) {
812
- return -1;
813
- } else {
814
- ngDevMode && assertIndexInRange(lView, tNode.injectorIndex);
815
- return tNode.injectorIndex;
813
+ function getFactoryOf(type) {
814
+ if (isForwardRef(type)) {
815
+ return () => {
816
+ const factory = getFactoryOf(resolveForwardRef(type));
817
+ return factory && factory();
818
+ };
816
819
  }
820
+ return getFactoryDef(type);
817
821
  }
818
- function getParentInjectorLocation(tNode, lView) {
819
- if (tNode.parent && tNode.parent.injectorIndex !== -1) {
820
- return tNode.parent.injectorIndex;
821
- }
822
- let declarationViewOffset = 0;
823
- let parentTNode = null;
824
- let lViewCursor = lView;
825
- while (lViewCursor !== null) {
826
- parentTNode = getTNodeFromLView(lViewCursor);
827
- if (parentTNode === null) {
828
- return NO_PARENT_INJECTOR;
829
- }
830
- ngDevMode && parentTNode && assertTNodeForLView(parentTNode, lViewCursor[DECLARATION_VIEW]);
831
- declarationViewOffset++;
832
- lViewCursor = lViewCursor[DECLARATION_VIEW];
833
- if (parentTNode.injectorIndex !== -1) {
834
- return parentTNode.injectorIndex | declarationViewOffset << 16;
822
+ function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundValue) {
823
+ let currentTNode = tNode;
824
+ let currentLView = lView;
825
+ while (currentTNode !== null && currentLView !== null && currentLView[FLAGS] & 2048 && !isRootView(currentLView)) {
826
+ ngDevMode && assertTNodeForLView(currentTNode, currentLView);
827
+ const nodeInjectorValue = lookupTokenUsingNodeInjector(currentTNode, currentLView, token, flags | 2, NOT_FOUND);
828
+ if (nodeInjectorValue !== NOT_FOUND) {
829
+ return nodeInjectorValue;
835
830
  }
836
- }
837
- return NO_PARENT_INJECTOR;
838
- }
839
- function diPublicInInjector(injectorIndex, tView, token) {
840
- bloomAdd(injectorIndex, tView, token);
841
- }
842
- function injectAttributeImpl(tNode, attrNameToInject) {
843
- ngDevMode && assertTNodeType(tNode, 12 | 3);
844
- ngDevMode && assertDefined(tNode, 'expecting tNode');
845
- if (attrNameToInject === 'class') {
846
- return tNode.classes;
847
- }
848
- if (attrNameToInject === 'style') {
849
- return tNode.styles;
850
- }
851
- const attrs = tNode.attrs;
852
- if (attrs) {
853
- const attrsLength = attrs.length;
854
- let i = 0;
855
- while (i < attrsLength) {
856
- const value = attrs[i];
857
- if (isNameOnlyAttributeMarker(value)) break;
858
- if (value === 0) {
859
- i = i + 2;
860
- } else if (typeof value === 'number') {
861
- i++;
862
- while (i < attrsLength && typeof attrs[i] === 'string') {
863
- i++;
831
+ let parentTNode = currentTNode.parent;
832
+ if (!parentTNode) {
833
+ const embeddedViewInjector = currentLView[EMBEDDED_VIEW_INJECTOR];
834
+ if (embeddedViewInjector) {
835
+ const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND, flags & -5);
836
+ if (embeddedViewInjectorValue !== NOT_FOUND) {
837
+ return embeddedViewInjectorValue;
864
838
  }
865
- } else if (value === attrNameToInject) {
866
- return attrs[i + 1];
867
- } else {
868
- i = i + 2;
869
839
  }
840
+ parentTNode = getTNodeFromLView(currentLView);
841
+ currentLView = currentLView[DECLARATION_VIEW];
870
842
  }
843
+ currentTNode = parentTNode;
871
844
  }
872
- return null;
845
+ return notFoundValue;
873
846
  }
874
- function notFoundValueOrThrow(notFoundValue, token, flags) {
875
- if (flags & 8 || notFoundValue !== undefined) {
876
- return notFoundValue;
877
- } else {
878
- throwProviderNotFoundError(token, 'NodeInjector');
847
+ function getTNodeFromLView(lView) {
848
+ const tView = lView[TVIEW];
849
+ const tViewType = tView.type;
850
+ if (tViewType === 2) {
851
+ ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');
852
+ return tView.declTNode;
853
+ } else if (tViewType === 1) {
854
+ return lView[T_HOST];
879
855
  }
856
+ return null;
880
857
  }
881
- function lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) {
882
- if (flags & 8 && notFoundValue === undefined) {
883
- notFoundValue = null;
858
+
859
+ function ɵɵinjectAttribute(attrNameToInject) {
860
+ return injectAttributeImpl(getCurrentTNode(), attrNameToInject);
861
+ }
862
+
863
+ const _requestIdleCallback = () => (typeof requestIdleCallback !== 'undefined' ? requestIdleCallback : cb => setTimeout(cb)).bind(globalThis);
864
+ const _cancelIdleCallback = () => (typeof requestIdleCallback !== 'undefined' ? cancelIdleCallback : clearTimeout).bind(globalThis);
865
+ const IDLE_SERVICE = new InjectionToken(ngDevMode ? 'IDLE_SERVICE' : '', {
866
+ factory: () => new RequestIdleCallbackService()
867
+ });
868
+ function provideIdleServiceWith(useExisting) {
869
+ return makeEnvironmentProviders([{
870
+ provide: IDLE_SERVICE,
871
+ useExisting
872
+ }]);
873
+ }
874
+ class RequestIdleCallbackService {
875
+ requestIdleCallback = _requestIdleCallback();
876
+ cancelIdleCallback = _cancelIdleCallback();
877
+ requestOnIdle(callback, options) {
878
+ return this.requestIdleCallback(callback, options);
884
879
  }
885
- if ((flags & (2 | 1)) === 0) {
886
- const moduleInjector = lView[INJECTOR];
887
- const previousInjectImplementation = setInjectImplementation(undefined);
888
- try {
889
- if (moduleInjector) {
890
- return moduleInjector.get(token, notFoundValue, flags & 8);
891
- } else {
892
- return injectRootLimpMode(token, notFoundValue, flags & 8);
893
- }
894
- } finally {
895
- setInjectImplementation(previousInjectImplementation);
896
- }
880
+ cancelOnIdle(id) {
881
+ return this.cancelIdleCallback(id);
897
882
  }
898
- return notFoundValueOrThrow(notFoundValue, token, flags);
899
883
  }
900
- function getOrCreateInjectable(tNode, lView, token, flags = 0, notFoundValue) {
901
- if (tNode !== null) {
902
- if (lView[FLAGS] & 2048 && !(flags & 2)) {
903
- const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND);
904
- if (embeddedInjectorValue !== NOT_FOUND) {
905
- return embeddedInjectorValue;
884
+
885
+ function promiseWithResolvers() {
886
+ let resolve;
887
+ let reject;
888
+ const promise = new Promise((res, rej) => {
889
+ resolve = res;
890
+ reject = rej;
891
+ });
892
+ return {
893
+ promise,
894
+ resolve,
895
+ reject
896
+ };
897
+ }
898
+
899
+ const ANNOTATIONS = '__annotations__';
900
+ const PARAMETERS = '__parameters__';
901
+ const PROP_METADATA = '__prop__metadata__';
902
+ function makeDecorator(name, props, parentClass, additionalProcessing, typeFn) {
903
+ return noSideEffects(() => {
904
+ const metaCtor = makeMetadataCtor(props);
905
+ function DecoratorFactory(...args) {
906
+ if (this instanceof DecoratorFactory) {
907
+ metaCtor.call(this, ...args);
908
+ return this;
906
909
  }
910
+ const annotationInstance = new DecoratorFactory(...args);
911
+ return function TypeDecorator(cls) {
912
+ if (typeFn) typeFn(cls, ...args);
913
+ const annotations = cls.hasOwnProperty(ANNOTATIONS) ? cls[ANNOTATIONS] : Object.defineProperty(cls, ANNOTATIONS, {
914
+ value: []
915
+ })[ANNOTATIONS];
916
+ annotations.push(annotationInstance);
917
+ return cls;
918
+ };
907
919
  }
908
- const value = lookupTokenUsingNodeInjector(tNode, lView, token, flags, NOT_FOUND);
909
- if (value !== NOT_FOUND) {
910
- return value;
920
+ if (parentClass) {
921
+ DecoratorFactory.prototype = Object.create(parentClass.prototype);
911
922
  }
912
- }
913
- return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);
923
+ DecoratorFactory.prototype.ngMetadataName = name;
924
+ DecoratorFactory.annotationCls = DecoratorFactory;
925
+ return DecoratorFactory;
926
+ });
914
927
  }
915
- function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue) {
916
- const bloomHash = bloomHashBitOrFactory(token);
917
- if (typeof bloomHash === 'function') {
918
- if (!enterDI(lView, tNode, flags)) {
919
- return flags & 1 ? notFoundValueOrThrow(notFoundValue, token, flags) : lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);
928
+ function makeMetadataCtor(props) {
929
+ return function ctor(...args) {
930
+ if (props) {
931
+ const values = props(...args);
932
+ for (const propName in values) {
933
+ this[propName] = values[propName];
934
+ }
920
935
  }
921
- try {
922
- let value;
923
- if (ngDevMode) {
924
- runInInjectorProfilerContext(new NodeInjector(getCurrentTNode(), getLView()), token, () => {
925
- emitInjectorToCreateInstanceEvent(token);
926
- value = bloomHash(flags);
927
- emitInstanceCreatedByInjectorEvent(value);
928
- });
929
- } else {
930
- value = bloomHash(flags);
936
+ };
937
+ }
938
+ function makeParamDecorator(name, props, parentClass) {
939
+ return noSideEffects(() => {
940
+ const metaCtor = makeMetadataCtor(props);
941
+ function ParamDecoratorFactory(...args) {
942
+ if (this instanceof ParamDecoratorFactory) {
943
+ metaCtor.apply(this, args);
944
+ return this;
931
945
  }
932
- if (value == null && !(flags & 8)) {
933
- throwProviderNotFoundError(token);
934
- } else {
935
- return value;
946
+ const annotationInstance = new ParamDecoratorFactory(...args);
947
+ ParamDecorator.annotation = annotationInstance;
948
+ return ParamDecorator;
949
+ function ParamDecorator(cls, unusedKey, index) {
950
+ const parameters = cls.hasOwnProperty(PARAMETERS) ? cls[PARAMETERS] : Object.defineProperty(cls, PARAMETERS, {
951
+ value: []
952
+ })[PARAMETERS];
953
+ while (parameters.length <= index) {
954
+ parameters.push(null);
955
+ }
956
+ (parameters[index] = parameters[index] || []).push(annotationInstance);
957
+ return cls;
936
958
  }
937
- } finally {
938
- leaveDI();
939
959
  }
940
- } else if (typeof bloomHash === 'number') {
941
- let previousTView = null;
942
- let injectorIndex = getInjectorIndex(tNode, lView);
943
- let parentLocation = NO_PARENT_INJECTOR;
944
- let hostTElementNode = flags & 1 ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null;
945
- if (injectorIndex === -1 || flags & 4) {
946
- parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) : lView[injectorIndex + 8];
947
- if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {
948
- injectorIndex = -1;
960
+ ParamDecoratorFactory.prototype.ngMetadataName = name;
961
+ ParamDecoratorFactory.annotationCls = ParamDecoratorFactory;
962
+ return ParamDecoratorFactory;
963
+ });
964
+ }
965
+ function makePropDecorator(name, props, parentClass, additionalProcessing) {
966
+ return noSideEffects(() => {
967
+ const metaCtor = makeMetadataCtor(props);
968
+ function PropDecoratorFactory(...args) {
969
+ if (this instanceof PropDecoratorFactory) {
970
+ metaCtor.apply(this, args);
971
+ return this;
972
+ }
973
+ const decoratorInstance = new PropDecoratorFactory(...args);
974
+ function PropDecorator(target, name) {
975
+ if (target === undefined) {
976
+ throw new Error('Standard Angular field decorators are not supported in JIT mode.');
977
+ }
978
+ const constructor = target.constructor;
979
+ const meta = constructor.hasOwnProperty(PROP_METADATA) ? constructor[PROP_METADATA] : Object.defineProperty(constructor, PROP_METADATA, {
980
+ value: {}
981
+ })[PROP_METADATA];
982
+ meta[name] = meta.hasOwnProperty(name) && meta[name] || [];
983
+ meta[name].unshift(decoratorInstance);
984
+ }
985
+ return PropDecorator;
986
+ }
987
+ if (parentClass) {
988
+ PropDecoratorFactory.prototype = Object.create(parentClass.prototype);
989
+ }
990
+ PropDecoratorFactory.prototype.ngMetadataName = name;
991
+ PropDecoratorFactory.annotationCls = PropDecoratorFactory;
992
+ return PropDecoratorFactory;
993
+ });
994
+ }
995
+
996
+ function getCompilerFacade(request) {
997
+ const globalNg = _global['ng'];
998
+ if (globalNg && globalNg.ɵcompilerFacade) {
999
+ return globalNg.ɵcompilerFacade;
1000
+ }
1001
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
1002
+ console.error(`JIT compilation failed for ${request.kind}`, request.type);
1003
+ let message = `The ${request.kind} '${request.type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available.\n\n`;
1004
+ if (request.usage === 1) {
1005
+ message += `The ${request.kind} is part of a library that has been partially compiled.\n`;
1006
+ message += `However, the Angular Linker has not processed the library such that JIT compilation is used as fallback.\n`;
1007
+ message += '\n';
1008
+ message += `Ideally, the library is processed using the Angular Linker to become fully AOT compiled.\n`;
1009
+ } else {
1010
+ message += `JIT compilation is discouraged for production use-cases! Consider using AOT mode instead.\n`;
1011
+ }
1012
+ message += `Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server',\n`;
1013
+ message += `or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.`;
1014
+ throw new Error(message);
1015
+ } else {
1016
+ throw new Error('JIT compiler unavailable');
1017
+ }
1018
+ }
1019
+
1020
+ function ɵɵdefineService(opts) {
1021
+ return {
1022
+ token: opts.token,
1023
+ providedIn: opts.autoProvided === false ? null : 'root',
1024
+ factory: opts.factory,
1025
+ value: undefined
1026
+ };
1027
+ }
1028
+
1029
+ const angularCoreDiEnv = {
1030
+ 'ɵɵdefineInjectable': __defineInjectable,
1031
+ 'ɵɵdefineInjector': __defineInjector,
1032
+ 'ɵɵdefineService': ɵɵdefineService,
1033
+ 'ɵɵinject': __inject,
1034
+ 'ɵɵinvalidFactoryDep': __invalidFactoryDep,
1035
+ 'resolveForwardRef': resolveForwardRef
1036
+ };
1037
+
1038
+ const Type = Function;
1039
+ function isType(v) {
1040
+ return typeof v === 'function';
1041
+ }
1042
+
1043
+ const ES5_DELEGATE_CTOR = /^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*(arguments|(?:[^()]+\(\[\],)?[^()]+\(arguments\).*)\)/;
1044
+ const ES2015_INHERITED_CLASS = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/;
1045
+ const ES2015_INHERITED_CLASS_WITH_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/;
1046
+ const ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{[^}]*super\(\.\.\.arguments\)/;
1047
+ function isDelegateCtor(typeStr) {
1048
+ return ES5_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS.test(typeStr) && !ES2015_INHERITED_CLASS_WITH_CTOR.test(typeStr);
1049
+ }
1050
+ class ReflectionCapabilities {
1051
+ _reflect;
1052
+ constructor(reflect) {
1053
+ this._reflect = reflect || _global['Reflect'];
1054
+ }
1055
+ factory(t) {
1056
+ return (...args) => new t(...args);
1057
+ }
1058
+ _zipTypesAndAnnotations(paramTypes, paramAnnotations) {
1059
+ let result;
1060
+ if (typeof paramTypes === 'undefined') {
1061
+ result = newArray(paramAnnotations.length);
1062
+ } else {
1063
+ result = newArray(paramTypes.length);
1064
+ }
1065
+ for (let i = 0; i < result.length; i++) {
1066
+ if (typeof paramTypes === 'undefined') {
1067
+ result[i] = [];
1068
+ } else if (paramTypes[i] && paramTypes[i] != Object) {
1069
+ result[i] = [paramTypes[i]];
949
1070
  } else {
950
- previousTView = lView[TVIEW];
951
- injectorIndex = getParentInjectorIndex(parentLocation);
952
- lView = getParentInjectorView(parentLocation, lView);
953
- }
954
- }
955
- while (injectorIndex !== -1) {
956
- ngDevMode && assertNodeInjector(lView, injectorIndex);
957
- const tView = lView[TVIEW];
958
- ngDevMode && assertTNodeForLView(tView.data[injectorIndex + 8], lView);
959
- if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {
960
- const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode);
961
- if (instance !== NOT_FOUND) {
962
- return instance;
963
- }
1071
+ result[i] = [];
964
1072
  }
965
- parentLocation = lView[injectorIndex + 8];
966
- if (parentLocation !== NO_PARENT_INJECTOR && shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8] === hostTElementNode) && bloomHasToken(bloomHash, injectorIndex, lView)) {
967
- previousTView = tView;
968
- injectorIndex = getParentInjectorIndex(parentLocation);
969
- lView = getParentInjectorView(parentLocation, lView);
970
- } else {
971
- injectorIndex = -1;
1073
+ if (paramAnnotations && paramAnnotations[i] != null) {
1074
+ result[i] = result[i].concat(paramAnnotations[i]);
972
1075
  }
973
1076
  }
1077
+ return result;
974
1078
  }
975
- return notFoundValue;
976
- }
977
- function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) {
978
- const currentTView = lView[TVIEW];
979
- const tNode = currentTView.data[injectorIndex + 8];
980
- const canAccessViewProviders = previousTView == null ? isComponentHost(tNode) && includeViewProviders : previousTView != currentTView && (tNode.type & 3) !== 0;
981
- const isHostSpecialCase = flags & 1 && hostTElementNode === tNode;
982
- const injectableIdx = locateDirectiveOrProvider(tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase);
983
- if (injectableIdx !== null) {
984
- return getNodeInjectable(lView, currentTView, injectableIdx, tNode, flags);
985
- } else {
986
- return NOT_FOUND;
987
- }
988
- }
989
- function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) {
990
- const nodeProviderIndexes = tNode.providerIndexes;
991
- const tInjectables = tView.data;
992
- const injectablesStart = nodeProviderIndexes & 1048575;
993
- const directivesStart = tNode.directiveStart;
994
- const directiveEnd = tNode.directiveEnd;
995
- const cptViewProvidersCount = nodeProviderIndexes >> 20;
996
- const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount;
997
- const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;
998
- for (let i = startingIndex; i < endIndex; i++) {
999
- const providerTokenOrDef = tInjectables[i];
1000
- if (i < directivesStart && token === providerTokenOrDef || i >= directivesStart && providerTokenOrDef.type === token) {
1001
- return i;
1079
+ _ownParameters(type, parentCtor) {
1080
+ const typeStr = type.toString();
1081
+ if (isDelegateCtor(typeStr)) {
1082
+ return null;
1083
+ }
1084
+ if (type.parameters && type.parameters !== parentCtor.parameters) {
1085
+ return type.parameters;
1086
+ }
1087
+ const tsickleCtorParams = type.ctorParameters;
1088
+ if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {
1089
+ const ctorParameters = typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;
1090
+ const paramTypes = ctorParameters.map(ctorParam => ctorParam && ctorParam.type);
1091
+ const paramAnnotations = ctorParameters.map(ctorParam => ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators));
1092
+ return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);
1093
+ }
1094
+ const paramAnnotations = type.hasOwnProperty(PARAMETERS) && type[PARAMETERS];
1095
+ const paramTypes = this._reflect && this._reflect.getOwnMetadata && this._reflect.getOwnMetadata('design:paramtypes', type);
1096
+ if (paramTypes || paramAnnotations) {
1097
+ return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);
1002
1098
  }
1099
+ return newArray(type.length);
1003
1100
  }
1004
- if (isHostSpecialCase) {
1005
- const dirDef = tInjectables[directivesStart];
1006
- if (dirDef && isComponentDef(dirDef) && dirDef.type === token) {
1007
- return directivesStart;
1101
+ parameters(type) {
1102
+ if (!isType(type)) {
1103
+ return [];
1104
+ }
1105
+ const parentCtor = getParentCtor(type);
1106
+ let parameters = this._ownParameters(type, parentCtor);
1107
+ if (!parameters && parentCtor !== Object) {
1108
+ parameters = this.parameters(parentCtor);
1008
1109
  }
1110
+ return parameters || [];
1009
1111
  }
1010
- return null;
1011
- }
1012
- let injectionPath = [];
1013
- function getNodeInjectable(lView, tView, index, tNode, flags) {
1014
- let value = lView[index];
1015
- const tData = tView.data;
1016
- if (value instanceof NodeInjectorFactory) {
1017
- const factory = value;
1018
- ngDevMode && injectionPath.push(factory.name ?? 'unknown');
1019
- if (factory.resolving) {
1020
- let token = '';
1021
- if (ngDevMode) {
1022
- token = stringifyForError(tData[index]);
1023
- throw cyclicDependencyErrorWithDetails(token, injectionPath);
1024
- } else {
1025
- throw cyclicDependencyError(token);
1112
+ _ownAnnotations(typeOrFunc, parentCtor) {
1113
+ if (typeOrFunc.annotations && typeOrFunc.annotations !== parentCtor.annotations) {
1114
+ let annotations = typeOrFunc.annotations;
1115
+ if (typeof annotations === 'function' && annotations.annotations) {
1116
+ annotations = annotations.annotations;
1026
1117
  }
1118
+ return annotations;
1027
1119
  }
1028
- const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);
1029
- factory.resolving = true;
1030
- const token = tData[index].type || tData[index];
1031
- let prevInjectContext;
1032
- if (ngDevMode) {
1033
- const injector = new NodeInjector(tNode, lView);
1034
- prevInjectContext = setInjectorProfilerContext({
1035
- injector,
1036
- token
1037
- });
1120
+ if (typeOrFunc.decorators && typeOrFunc.decorators !== parentCtor.decorators) {
1121
+ return convertTsickleDecoratorIntoMetadata(typeOrFunc.decorators);
1038
1122
  }
1039
- const previousInjectImplementation = factory.injectImpl ? setInjectImplementation(factory.injectImpl) : null;
1040
- const success = enterDI(lView, tNode, 0);
1041
- ngDevMode && assertEqual(success, true, "Because flags do not contain `SkipSelf' we expect this to always succeed.");
1042
- try {
1043
- ngDevMode && emitInjectorToCreateInstanceEvent(token);
1044
- value = lView[index] = factory.factory(undefined, flags, tData, lView, tNode);
1045
- ngDevMode && emitInstanceCreatedByInjectorEvent(value);
1046
- if (tView.firstCreatePass && index >= tNode.directiveStart) {
1047
- ngDevMode && assertDirectiveDef(tData[index]);
1048
- registerPreOrderHooks(index, tData[index], tView);
1049
- }
1050
- } finally {
1051
- ngDevMode && setInjectorProfilerContext(prevInjectContext);
1052
- previousInjectImplementation !== null && setInjectImplementation(previousInjectImplementation);
1053
- setIncludeViewProviders(previousIncludeViewProviders);
1054
- factory.resolving = false;
1055
- leaveDI();
1056
- ngDevMode && (injectionPath = []);
1123
+ if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {
1124
+ return typeOrFunc[ANNOTATIONS];
1057
1125
  }
1126
+ return null;
1058
1127
  }
1059
- return value;
1060
- }
1061
- function bloomHashBitOrFactory(token) {
1062
- ngDevMode && assertDefined(token, 'token must be defined');
1063
- if (typeof token === 'string') {
1064
- return token.charCodeAt(0) || 0;
1065
- }
1066
- const tokenId = token.hasOwnProperty(NG_ELEMENT_ID) ? token[NG_ELEMENT_ID] : undefined;
1067
- if (typeof tokenId === 'number') {
1068
- if (tokenId >= 0) {
1069
- return tokenId & BLOOM_MASK;
1070
- } else {
1071
- ngDevMode && assertEqual(tokenId, -1, 'Expecting to get Special Injector Id');
1072
- return createNodeInjector;
1128
+ annotations(typeOrFunc) {
1129
+ if (!isType(typeOrFunc)) {
1130
+ return [];
1073
1131
  }
1074
- } else {
1075
- return tokenId;
1076
- }
1077
- }
1078
- function bloomHasToken(bloomHash, injectorIndex, injectorView) {
1079
- const mask = 1 << bloomHash;
1080
- const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];
1081
- return !!(value & mask);
1082
- }
1083
- function shouldSearchParent(flags, isFirstHostTNode) {
1084
- return !(flags & 2) && !(flags & 1 && isFirstHostTNode);
1085
- }
1086
- function getNodeInjectorLView(nodeInjector) {
1087
- return nodeInjector._lView;
1088
- }
1089
- function getNodeInjectorTNode(nodeInjector) {
1090
- return nodeInjector._tNode;
1091
- }
1092
- class NodeInjector {
1093
- _tNode;
1094
- _lView;
1095
- constructor(_tNode, _lView) {
1096
- this._tNode = _tNode;
1097
- this._lView = _lView;
1098
- }
1099
- get(token, notFoundValue, flags) {
1100
- return getOrCreateInjectable(this._tNode, this._lView, token, convertToBitFlags(flags), notFoundValue);
1132
+ const parentCtor = getParentCtor(typeOrFunc);
1133
+ const ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];
1134
+ const parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];
1135
+ return parentAnnotations.concat(ownAnnotations);
1101
1136
  }
1102
- }
1103
- function createNodeInjector() {
1104
- return new NodeInjector(getCurrentTNode(), getLView());
1105
- }
1106
- function ɵɵgetInheritedFactory(type) {
1107
- return noSideEffects(() => {
1108
- const ownConstructor = type.prototype.constructor;
1109
- const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor);
1110
- const objectPrototype = Object.prototype;
1111
- let parent = Object.getPrototypeOf(type.prototype).constructor;
1112
- while (parent && parent !== objectPrototype) {
1113
- const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent);
1114
- if (factory && factory !== ownFactory) {
1115
- return factory;
1137
+ _ownPropMetadata(typeOrFunc, parentCtor) {
1138
+ if (typeOrFunc.propMetadata && typeOrFunc.propMetadata !== parentCtor.propMetadata) {
1139
+ let propMetadata = typeOrFunc.propMetadata;
1140
+ if (typeof propMetadata === 'function' && propMetadata.propMetadata) {
1141
+ propMetadata = propMetadata.propMetadata;
1116
1142
  }
1117
- parent = Object.getPrototypeOf(parent);
1143
+ return propMetadata;
1118
1144
  }
1119
- return t => new t();
1120
- });
1121
- }
1122
- function getFactoryOf(type) {
1123
- if (isForwardRef(type)) {
1124
- return () => {
1125
- const factory = getFactoryOf(resolveForwardRef(type));
1126
- return factory && factory();
1127
- };
1128
- }
1129
- return getFactoryDef(type);
1130
- }
1131
- function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundValue) {
1132
- let currentTNode = tNode;
1133
- let currentLView = lView;
1134
- while (currentTNode !== null && currentLView !== null && currentLView[FLAGS] & 2048 && !isRootView(currentLView)) {
1135
- ngDevMode && assertTNodeForLView(currentTNode, currentLView);
1136
- const nodeInjectorValue = lookupTokenUsingNodeInjector(currentTNode, currentLView, token, flags | 2, NOT_FOUND);
1137
- if (nodeInjectorValue !== NOT_FOUND) {
1138
- return nodeInjectorValue;
1145
+ if (typeOrFunc.propDecorators && typeOrFunc.propDecorators !== parentCtor.propDecorators) {
1146
+ const propDecorators = typeOrFunc.propDecorators;
1147
+ const propMetadata = {};
1148
+ Object.keys(propDecorators).forEach(prop => {
1149
+ propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]);
1150
+ });
1151
+ return propMetadata;
1152
+ }
1153
+ if (typeOrFunc.hasOwnProperty(PROP_METADATA)) {
1154
+ return typeOrFunc[PROP_METADATA];
1155
+ }
1156
+ return null;
1157
+ }
1158
+ propMetadata(typeOrFunc) {
1159
+ if (!isType(typeOrFunc)) {
1160
+ return {};
1139
1161
  }
1140
- let parentTNode = currentTNode.parent;
1141
- if (!parentTNode) {
1142
- const embeddedViewInjector = currentLView[EMBEDDED_VIEW_INJECTOR];
1143
- if (embeddedViewInjector) {
1144
- const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND, flags & -5);
1145
- if (embeddedViewInjectorValue !== NOT_FOUND) {
1146
- return embeddedViewInjectorValue;
1162
+ const parentCtor = getParentCtor(typeOrFunc);
1163
+ const propMetadata = {};
1164
+ if (parentCtor !== Object) {
1165
+ const parentPropMetadata = this.propMetadata(parentCtor);
1166
+ Object.keys(parentPropMetadata).forEach(propName => {
1167
+ propMetadata[propName] = parentPropMetadata[propName];
1168
+ });
1169
+ }
1170
+ const ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);
1171
+ if (ownPropMetadata) {
1172
+ Object.keys(ownPropMetadata).forEach(propName => {
1173
+ const decorators = [];
1174
+ if (propMetadata.hasOwnProperty(propName)) {
1175
+ decorators.push(...propMetadata[propName]);
1147
1176
  }
1148
- }
1149
- parentTNode = getTNodeFromLView(currentLView);
1150
- currentLView = currentLView[DECLARATION_VIEW];
1177
+ decorators.push(...ownPropMetadata[propName]);
1178
+ propMetadata[propName] = decorators;
1179
+ });
1151
1180
  }
1152
- currentTNode = parentTNode;
1181
+ return propMetadata;
1182
+ }
1183
+ ownPropMetadata(typeOrFunc) {
1184
+ if (!isType(typeOrFunc)) {
1185
+ return {};
1186
+ }
1187
+ return this._ownPropMetadata(typeOrFunc, getParentCtor(typeOrFunc)) || {};
1188
+ }
1189
+ hasLifecycleHook(type, lcProperty) {
1190
+ return type instanceof Type && lcProperty in type.prototype;
1153
1191
  }
1154
- return notFoundValue;
1155
1192
  }
1156
- function getTNodeFromLView(lView) {
1157
- const tView = lView[TVIEW];
1158
- const tViewType = tView.type;
1159
- if (tViewType === 2) {
1160
- ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');
1161
- return tView.declTNode;
1162
- } else if (tViewType === 1) {
1163
- return lView[T_HOST];
1193
+ function convertTsickleDecoratorIntoMetadata(decoratorInvocations) {
1194
+ if (!decoratorInvocations) {
1195
+ return [];
1164
1196
  }
1165
- return null;
1197
+ return decoratorInvocations.map(decoratorInvocation => {
1198
+ const decoratorType = decoratorInvocation.type;
1199
+ const annotationCls = decoratorType.annotationCls;
1200
+ const annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];
1201
+ return new annotationCls(...annotationArgs);
1202
+ });
1166
1203
  }
1167
-
1168
- function ɵɵinjectAttribute(attrNameToInject) {
1169
- return injectAttributeImpl(getCurrentTNode(), attrNameToInject);
1204
+ function getParentCtor(ctor) {
1205
+ const parentProto = ctor.prototype ? Object.getPrototypeOf(ctor.prototype) : null;
1206
+ const parentCtor = parentProto ? parentProto.constructor : null;
1207
+ return parentCtor || Object;
1170
1208
  }
1171
1209
 
1210
+ const Inject = attachInjectFlag(makeParamDecorator('Inject', token => ({
1211
+ token
1212
+ })), -1);
1213
+ const Optional = attachInjectFlag(makeParamDecorator('Optional'), 8);
1214
+ const Self = attachInjectFlag(makeParamDecorator('Self'), 2);
1215
+ const SkipSelf = attachInjectFlag(makeParamDecorator('SkipSelf'), 4);
1216
+ const Host = attachInjectFlag(makeParamDecorator('Host'), 1);
1217
+
1172
1218
  const Attribute = makeParamDecorator('Attribute', attributeName => ({
1173
1219
  attributeName,
1174
1220
  __NG_ELEMENT_ID__: () => ɵɵinjectAttribute(attributeName)
@@ -1311,6 +1357,60 @@ function getInjectableMetadata(type, srcMeta) {
1311
1357
 
1312
1358
  const Injectable = makeDecorator('Injectable', undefined, undefined, undefined, (type, meta) => compileInjectable(type, meta));
1313
1359
 
1360
+ function compileService(type, meta) {
1361
+ let def = null;
1362
+ let factoryDef = null;
1363
+ if (!type.hasOwnProperty(NG_PROV_DEF)) {
1364
+ Object.defineProperty(type, NG_PROV_DEF, {
1365
+ get: () => {
1366
+ if (def === null) {
1367
+ const compiler = getCompilerFacade({
1368
+ usage: 0,
1369
+ kind: 'service',
1370
+ type
1371
+ });
1372
+ def = compiler.compileService(angularCoreDiEnv, `ng:///${type.name}/ɵprov.js`, getServiceMetadata(type, meta));
1373
+ }
1374
+ return def;
1375
+ }
1376
+ });
1377
+ }
1378
+ if (!type.hasOwnProperty(NG_FACTORY_DEF)) {
1379
+ Object.defineProperty(type, NG_FACTORY_DEF, {
1380
+ get: () => {
1381
+ if (factoryDef === null) {
1382
+ const compiler = getCompilerFacade({
1383
+ usage: 0,
1384
+ kind: 'service',
1385
+ type
1386
+ });
1387
+ factoryDef = compiler.compileFactory(angularCoreDiEnv, `ng:///${type.name}/ɵfac.js`, {
1388
+ name: type.name,
1389
+ type,
1390
+ typeArgumentCount: 0,
1391
+ deps: reflectDependencies(type),
1392
+ target: compiler.FactoryTarget.Service
1393
+ });
1394
+ }
1395
+ return factoryDef;
1396
+ },
1397
+ configurable: true
1398
+ });
1399
+ }
1400
+ }
1401
+ function getServiceMetadata(type, srcMeta) {
1402
+ const compilerMeta = {
1403
+ name: type.name,
1404
+ type: type,
1405
+ typeArgumentCount: 0,
1406
+ autoProvided: srcMeta?.autoProvided,
1407
+ factory: srcMeta?.factory
1408
+ };
1409
+ return compilerMeta;
1410
+ }
1411
+
1412
+ const Service = makeDecorator('Service', undefined, undefined, undefined, (type, meta) => compileService(type, meta));
1413
+
1314
1414
  function injectElementRef() {
1315
1415
  return createElementRef(getCurrentTNode(), getLView());
1316
1416
  }
@@ -1324,6 +1424,9 @@ class ElementRef {
1324
1424
  }
1325
1425
  static __NG_ELEMENT_ID__ = injectElementRef;
1326
1426
  }
1427
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
1428
+ registerSpecialProvider(ElementRef);
1429
+ }
1327
1430
  function unwrapElementRef(value) {
1328
1431
  return value instanceof ElementRef ? value.nativeElement : value;
1329
1432
  }
@@ -1965,104 +2068,6 @@ function getDocument() {
1965
2068
  throw new RuntimeError(210, (typeof ngDevMode === 'undefined' || ngDevMode) && `The document object is not available in this context. Make sure the DOCUMENT injection token is provided.`);
1966
2069
  }
1967
2070
 
1968
- const APP_ID = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AppId' : '', {
1969
- factory: () => DEFAULT_APP_ID
1970
- });
1971
- const DEFAULT_APP_ID = 'ng';
1972
- const validAppIdInitializer = {
1973
- provide: ENVIRONMENT_INITIALIZER,
1974
- multi: true,
1975
- useValue: () => {
1976
- const appId = inject(APP_ID);
1977
- const isAlphanumeric = /^[a-zA-Z0-9\-_]+$/.test(appId);
1978
- if (!isAlphanumeric) {
1979
- throw new RuntimeError(211, `APP_ID value "${appId}" is not alphanumeric. ` + `The APP_ID must be a string of alphanumeric characters. (a-zA-Z0-9), hyphens (-) and underscores (_) are allowed.`);
1980
- }
1981
- }
1982
- };
1983
- const PLATFORM_INITIALIZER = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'Platform Initializer' : '');
1984
- const PLATFORM_ID = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'Platform ID' : '', {
1985
- providedIn: 'platform',
1986
- factory: () => 'unknown'
1987
- });
1988
- const ANIMATION_MODULE_TYPE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'AnimationModuleType' : '');
1989
- const CSP_NONCE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'CSP nonce' : '', {
1990
- factory: () => {
1991
- return inject(DOCUMENT$1).body?.querySelector('[ngCspNonce]')?.getAttribute('ngCspNonce') || null;
1992
- }
1993
- });
1994
- const IMAGE_CONFIG_DEFAULTS = {
1995
- breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],
1996
- placeholderResolution: 30,
1997
- disableImageSizeWarning: false,
1998
- disableImageLazyLoadWarning: false
1999
- };
2000
- const IMAGE_CONFIG = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'ImageConfig' : '', {
2001
- factory: () => IMAGE_CONFIG_DEFAULTS
2002
- });
2003
-
2004
- function makeStateKey(key) {
2005
- return key;
2006
- }
2007
- class TransferState {
2008
- static ɵprov =
2009
- /* @__PURE__ */
2010
- __defineInjectable({
2011
- token: TransferState,
2012
- providedIn: 'root',
2013
- factory: () => {
2014
- const transferState = new TransferState();
2015
- if (typeof ngServerMode === 'undefined' || !ngServerMode) {
2016
- transferState.store = retrieveTransferredState(inject(DOCUMENT$1), inject(APP_ID));
2017
- }
2018
- return transferState;
2019
- }
2020
- });
2021
- store = {};
2022
- onSerializeCallbacks = {};
2023
- get(key, defaultValue) {
2024
- return this.store[key] !== undefined ? this.store[key] : defaultValue;
2025
- }
2026
- set(key, value) {
2027
- this.store[key] = value;
2028
- }
2029
- remove(key) {
2030
- delete this.store[key];
2031
- }
2032
- hasKey(key) {
2033
- return this.store.hasOwnProperty(key);
2034
- }
2035
- get isEmpty() {
2036
- return Object.keys(this.store).length === 0;
2037
- }
2038
- onSerialize(key, callback) {
2039
- this.onSerializeCallbacks[key] = callback;
2040
- }
2041
- toJson() {
2042
- for (const key in this.onSerializeCallbacks) {
2043
- if (this.onSerializeCallbacks.hasOwnProperty(key)) {
2044
- try {
2045
- this.store[key] = this.onSerializeCallbacks[key]();
2046
- } catch (e) {
2047
- console.warn('Exception in onSerialize callback: ', e);
2048
- }
2049
- }
2050
- }
2051
- return JSON.stringify(this.store).replace(/</g, '\\u003C').replace(/\//g, '\\u002F');
2052
- }
2053
- }
2054
- function retrieveTransferredState(doc, appId) {
2055
- const script = doc.getElementById(appId + '-state');
2056
- if (script?.textContent) {
2057
- try {
2058
- return JSON.parse(script.textContent);
2059
- } catch (e) {
2060
- console.warn('Exception while restoring TransferState for app ' + appId, e);
2061
- }
2062
- }
2063
- return {};
2064
- }
2065
-
2066
2071
  const REFERENCE_NODE_HOST = 'h';
2067
2072
  const REFERENCE_NODE_BODY = 'b';
2068
2073
  const NODE_NAVIGATION_STEP_FIRST_CHILD = 'f';
@@ -2279,11 +2284,24 @@ const removeListeners = el => {
2279
2284
  const JSACTION_EVENT_CONTRACT = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'EVENT_CONTRACT_DETAILS' : '', {
2280
2285
  factory: () => ({})
2281
2286
  });
2287
+ const handledEventElements = new WeakMap();
2288
+ function markEventHandledForElement(event, element) {
2289
+ if (event == null || typeof event !== 'object') return;
2290
+ let elements = handledEventElements.get(event);
2291
+ if (!elements) {
2292
+ elements = new WeakSet();
2293
+ handledEventElements.set(event, elements);
2294
+ }
2295
+ elements.add(element);
2296
+ }
2282
2297
  function invokeListeners(event, currentTarget) {
2283
2298
  const handlerFns = currentTarget?.__jsaction_fns?.get(event.type);
2284
2299
  if (!handlerFns || !currentTarget?.isConnected) {
2285
2300
  return;
2286
2301
  }
2302
+ if (currentTarget && handledEventElements.get(event)?.has(currentTarget)) {
2303
+ return;
2304
+ }
2287
2305
  for (const handler of handlerFns) {
2288
2306
  handler(event);
2289
2307
  }
@@ -3447,12 +3465,6 @@ function validateAgainstEventProperties(name) {
3447
3465
  throw new RuntimeError(306, errorMessage);
3448
3466
  }
3449
3467
  }
3450
- function validateAgainstEventAttributes(name) {
3451
- if (name.toLowerCase().startsWith('on')) {
3452
- const errorMessage = `Binding to event attribute '${name}' is disallowed for security reasons, ` + `please use (${name.slice(2)})=...`;
3453
- throw new RuntimeError(306, errorMessage);
3454
- }
3455
- }
3456
3468
  function getSanitizer() {
3457
3469
  const lView = getLView();
3458
3470
  return lView && lView[ENVIRONMENT].sanitizer;
@@ -5306,7 +5318,9 @@ function setDomProperty(tNode, lView, propName, value, renderer, sanitizer) {
5306
5318
  if (tNode.type & 3) {
5307
5319
  const element = getNativeByTNode(tNode, lView);
5308
5320
  if (ngDevMode) {
5309
- validateAgainstEventProperties(propName);
5321
+ if (lView[TVIEW].firstUpdatePass) {
5322
+ validateAgainstEventProperties(propName);
5323
+ }
5310
5324
  if (!isPropertyValid(element, propName, tNode.value, lView[TVIEW].schemas)) {
5311
5325
  handleUnknownPropertyError(propName, tNode.value, tNode.type, lView);
5312
5326
  }
@@ -5448,7 +5462,6 @@ function findDirectiveDefMatches(tView, tNode) {
5448
5462
  function elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace) {
5449
5463
  if (ngDevMode) {
5450
5464
  assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
5451
- validateAgainstEventAttributes(name);
5452
5465
  assertTNodeType(tNode, 2, `Attempted to set attribute \`${name}\` on a container node. ` + `Host bindings are not valid on ng-container or ng-template.`);
5453
5466
  }
5454
5467
  const element = getNativeByTNode(tNode, lView);
@@ -6366,6 +6379,7 @@ function createTemplateRef(hostTNode, hostLView) {
6366
6379
  }
6367
6380
 
6368
6381
  const AT_THIS_LOCATION = '<-- AT THIS LOCATION';
6382
+ const THIRD_PARTY_SCRIPTS_URL = `/guide/hydration#third-party-scripts-with-dom-manipulation`;
6369
6383
  function getFriendlyStringFromTNodeType(tNodeType) {
6370
6384
  switch (tNodeType) {
6371
6385
  case 4:
@@ -6409,7 +6423,10 @@ function validateMatchingNode(node, nodeType, tagName, lView, tNode, isViewConta
6409
6423
  markRNodeAsHavingHydrationMismatch(componentHostElement, expectedDom, actualDom);
6410
6424
  }
6411
6425
  const footer = getHydrationErrorFooter(componentClassName);
6412
- const message = header + expected + actual + getHydrationAttributeNote() + footer;
6426
+ let message = header + expected + actual + getHydrationAttributeNote() + footer;
6427
+ if (!node || node && isLikelyExternalSourceNode(node)) {
6428
+ message += `Note: It looks like this mismatch may have been caused by a third-party script or ` + `browser extension that modified the DOM outside of Angular's control. ` + `Angular hydration does not support nodes injected or removed outside of the Angular-managed DOM. ` + `Note: If you know which element in the DOM this will be inserted, consider adding ngSkipHydration to prevent this error. \n\n`;
6429
+ }
6413
6430
  throw new RuntimeError(-500, message);
6414
6431
  }
6415
6432
  }
@@ -6574,7 +6591,17 @@ function shortRNodeDescription(nodeType, tagName, textContent) {
6574
6591
  }
6575
6592
  function getHydrationErrorFooter(componentClassName) {
6576
6593
  const componentInfo = componentClassName ? `the "${componentClassName}"` : 'corresponding';
6577
- return `To fix this problem:\n` + ` * check ${componentInfo} component for hydration-related issues\n` + ` * check to see if your template has valid HTML structure\n` + ` * or skip hydration by adding the \`ngSkipHydration\` attribute ` + `to its host node in a template\n\n`;
6594
+ return `To fix this problem:\n` + ` * check ${componentInfo} component for hydration-related issues\n` + ` * check to see if your template has valid HTML structure\n` + ` * check if there are any third-party scripts that manipulate the DOM. More info: ${DOC_PAGE_BASE_URL}${THIRD_PARTY_SCRIPTS_URL}\n` + ` * or skip hydration by adding the \`ngSkipHydration\` attribute ` + `to its host node in a template\n\n`;
6595
+ }
6596
+ function isLikelyExternalSourceNode(rNode) {
6597
+ const node = rNode;
6598
+ if (node.nodeType !== Node.ELEMENT_NODE) {
6599
+ return false;
6600
+ }
6601
+ if (readPatchedData(node)) {
6602
+ return false;
6603
+ }
6604
+ return true;
6578
6605
  }
6579
6606
  function getHydrationAttributeNote() {
6580
6607
  return 'Note: attributes are only displayed to better represent the DOM' + ' but have no effect on hydration mismatches.\n\n';
@@ -7617,6 +7644,9 @@ class Renderer2 {
7617
7644
  destroyNode = null;
7618
7645
  static __NG_ELEMENT_ID__ = () => injectRenderer2();
7619
7646
  }
7647
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
7648
+ registerSpecialProvider(Renderer2);
7649
+ }
7620
7650
  function injectRenderer2() {
7621
7651
  const lView = getLView();
7622
7652
  const tNode = getCurrentTNode();
@@ -8010,6 +8040,10 @@ function bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) {
8010
8040
 
8011
8041
  function wrapListener(tNode, lView, listenerFn) {
8012
8042
  return function wrapListenerIn_markDirtyAndPreventDefault(event) {
8043
+ const nativeEl = wrapListenerIn_markDirtyAndPreventDefault.__ngNativeEl__;
8044
+ if (nativeEl !== undefined) {
8045
+ markEventHandledForElement(event, nativeEl);
8046
+ }
8013
8047
  const startView = isComponentHost(tNode) ? getComponentLViewByIndex(tNode.index, lView) : lView;
8014
8048
  markViewDirty(startView, 5);
8015
8049
  const context = lView[CONTEXT];
@@ -8052,6 +8086,9 @@ function listenToDomEvent(tNode, tView, lView, eventTargetResolver, renderer, ev
8052
8086
  const native = getNativeByTNode(tNode, lView);
8053
8087
  const target = eventTargetResolver ? eventTargetResolver(native) : native;
8054
8088
  stashEventListenerImpl(lView, target, eventName, wrappedListener);
8089
+ if (!eventTargetResolver) {
8090
+ wrappedListener.__ngNativeEl__ = native;
8091
+ }
8055
8092
  const cleanupFn = renderer.listen(target, eventName, wrappedListener);
8056
8093
  if (!isAnimationEventType(eventName)) {
8057
8094
  const idxOrTargetGetter = eventTargetResolver ? _lView => eventTargetResolver(unwrapRNode(_lView[tNode.index])) : tNode.index;
@@ -8986,7 +9023,7 @@ class ComponentFactory {
8986
9023
  }
8987
9024
  }
8988
9025
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
8989
- const tAttributes = rootSelectorOrNode ? ['ng-version', '22.0.0-next.8'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
9026
+ const tAttributes = rootSelectorOrNode ? ['ng-version', '22.0.0-rc.0'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8990
9027
  let creationBindings = null;
8991
9028
  let updateBindings = null;
8992
9029
  let varsToAllocate = 0;
@@ -9131,6 +9168,9 @@ function projectNodes(tNode, ngContentSelectors, projectableNodes) {
9131
9168
  class ViewContainerRef {
9132
9169
  static __NG_ELEMENT_ID__ = injectViewContainerRef;
9133
9170
  }
9171
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
9172
+ registerSpecialProvider(ViewContainerRef);
9173
+ }
9134
9174
  function injectViewContainerRef() {
9135
9175
  const previousTNode = getCurrentTNode();
9136
9176
  return createContainerRef(previousTNode, getLView());
@@ -10086,15 +10126,19 @@ function getComponentId(componentDef) {
10086
10126
  }
10087
10127
 
10088
10128
  const ASYNC_COMPONENT_METADATA_FN = '__ngAsyncComponentMetadataFn__';
10129
+ const ASYNC_METADATA_LOADED = '__ngAsyncMetadataLoaded__';
10089
10130
  function getAsyncClassMetadataFn(type) {
10090
10131
  const componentClass = type;
10132
+ if (componentClass[ASYNC_COMPONENT_METADATA_FN] === ASYNC_METADATA_LOADED) {
10133
+ return null;
10134
+ }
10091
10135
  return componentClass[ASYNC_COMPONENT_METADATA_FN] ?? null;
10092
10136
  }
10093
10137
  function setClassMetadataAsync(type, dependencyLoaderFn, metadataSetterFn) {
10094
10138
  const componentClass = type;
10095
10139
  componentClass[ASYNC_COMPONENT_METADATA_FN] = () => Promise.all(dependencyLoaderFn()).then(dependencies => {
10096
10140
  metadataSetterFn(...dependencies);
10097
- componentClass[ASYNC_COMPONENT_METADATA_FN] = null;
10141
+ componentClass[ASYNC_COMPONENT_METADATA_FN] = ASYNC_METADATA_LOADED;
10098
10142
  return dependencies;
10099
10143
  });
10100
10144
  return componentClass[ASYNC_COMPONENT_METADATA_FN];
@@ -10187,18 +10231,14 @@ class ApplicationInitStatus {
10187
10231
  static ɵfac = function ApplicationInitStatus_Factory(__ngFactoryType__) {
10188
10232
  return new (__ngFactoryType__ || ApplicationInitStatus)();
10189
10233
  };
10190
- static ɵprov = /*@__PURE__*/__defineInjectable({
10234
+ static ɵprov = /*@__PURE__*/ɵɵdefineService({
10191
10235
  token: ApplicationInitStatus,
10192
- factory: ApplicationInitStatus.ɵfac,
10193
- providedIn: 'root'
10236
+ factory: ApplicationInitStatus.ɵfac
10194
10237
  });
10195
10238
  }
10196
10239
  (() => {
10197
10240
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationInitStatus, [{
10198
- type: Injectable,
10199
- args: [{
10200
- providedIn: 'root'
10201
- }]
10241
+ type: Service
10202
10242
  }], () => [], null);
10203
10243
  })();
10204
10244
 
@@ -10928,28 +10968,6 @@ function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, regi
10928
10968
  });
10929
10969
  }
10930
10970
 
10931
- const _requestIdleCallback = () => (typeof requestIdleCallback !== 'undefined' ? requestIdleCallback : cb => setTimeout(cb)).bind(globalThis);
10932
- const _cancelIdleCallback = () => (typeof requestIdleCallback !== 'undefined' ? cancelIdleCallback : clearTimeout).bind(globalThis);
10933
- const IDLE_SERVICE = new InjectionToken(ngDevMode ? 'IDLE_SERVICE' : '', {
10934
- factory: () => new RequestIdleCallbackService()
10935
- });
10936
- function provideIdleServiceWith(useExisting) {
10937
- return makeEnvironmentProviders([{
10938
- provide: IDLE_SERVICE,
10939
- useExisting
10940
- }]);
10941
- }
10942
- class RequestIdleCallbackService {
10943
- requestIdleCallback = _requestIdleCallback();
10944
- cancelIdleCallback = _cancelIdleCallback();
10945
- requestOnIdle(callback, options) {
10946
- return this.requestIdleCallback(callback, options);
10947
- }
10948
- cancelOnIdle(id) {
10949
- return this.cancelIdleCallback(id);
10950
- }
10951
- }
10952
-
10953
10971
  class Console {
10954
10972
  log(message) {
10955
10973
  console.log(message);
@@ -11466,7 +11484,13 @@ function getNodeInjectorProviders(injector) {
11466
11484
  const {
11467
11485
  resolverToProviders
11468
11486
  } = getFrameworkDIDebugData();
11469
- return resolverToProviders.get(diResolver) ?? [];
11487
+ const existingProviders = resolverToProviders.get(diResolver) ?? [];
11488
+ const specialProviders = Array.from(getAllSpecialProviders()).map(token => ({
11489
+ token: token,
11490
+ isViewProvider: false,
11491
+ provider: token
11492
+ }));
11493
+ return [...existingProviders, ...specialProviders];
11470
11494
  }
11471
11495
  function getProviderImportPaths(providerImportsContainer) {
11472
11496
  const providerToPath = new Map();
@@ -11775,7 +11799,7 @@ let counter = 0;
11775
11799
  const eventsStack = [];
11776
11800
  function getBaseDocUrl() {
11777
11801
  const full = VERSION.full;
11778
- const isPreRelease = full.includes('-next') || full.includes('-rc') || full === '22.0.0-next.8';
11802
+ const isPreRelease = full.includes('-next') || full.includes('-rc') || full === '22.0.0-rc.0';
11779
11803
  const prefix = isPreRelease ? 'next' : `v${VERSION.major}`;
11780
11804
  return `https://${prefix}.angular.dev`;
11781
11805
  }
@@ -12013,6 +12037,10 @@ function publishUtil(name, fn) {
12013
12037
 
12014
12038
  const TESTABILITY = new InjectionToken('');
12015
12039
  const TESTABILITY_GETTER = new InjectionToken('');
12040
+ const USE_PENDING_TASKS = new InjectionToken('USE_PENDING_TASKS', {
12041
+ providedIn: 'root',
12042
+ factory: () => typeof Zone === 'undefined'
12043
+ });
12016
12044
  class Testability {
12017
12045
  _ngZone;
12018
12046
  registry;
@@ -12020,6 +12048,8 @@ class Testability {
12020
12048
  _callbacks = [];
12021
12049
  _taskTrackingZone = null;
12022
12050
  _destroyRef;
12051
+ pendingTasksInternal = inject(PendingTasksInternal);
12052
+ _usePendingTasks = inject(USE_PENDING_TASKS);
12023
12053
  constructor(_ngZone, registry, testabilityGetter) {
12024
12054
  this._ngZone = _ngZone;
12025
12055
  this.registry = registry;
@@ -12043,22 +12073,36 @@ class Testability {
12043
12073
  this._isZoneStable = false;
12044
12074
  }
12045
12075
  });
12046
- const onStableSubscription = this._ngZone.runOutsideAngular(() => this._ngZone.onStable.subscribe({
12047
- next: () => {
12048
- NgZone.assertNotInAngularZone();
12049
- queueMicrotask(() => {
12050
- this._isZoneStable = true;
12051
- this._runCallbacksIfReady();
12076
+ let pendingTasksSubscription;
12077
+ let onStableSubscription;
12078
+ this._ngZone.runOutsideAngular(() => {
12079
+ if (this._usePendingTasks) {
12080
+ pendingTasksSubscription = this.pendingTasksInternal.hasPendingTasksObservable.subscribe(() => {
12081
+ if (this.isStable()) {
12082
+ this._ngZone.runOutsideAngular(() => {
12083
+ this._runCallbacksIfReady();
12084
+ });
12085
+ }
12052
12086
  });
12053
12087
  }
12054
- }));
12088
+ onStableSubscription = this._ngZone.onStable.subscribe({
12089
+ next: () => {
12090
+ NgZone.assertNotInAngularZone();
12091
+ queueMicrotask(() => {
12092
+ this._isZoneStable = true;
12093
+ this._runCallbacksIfReady();
12094
+ });
12095
+ }
12096
+ });
12097
+ });
12055
12098
  this._destroyRef?.onDestroy(() => {
12056
12099
  onUnstableSubscription.unsubscribe();
12100
+ pendingTasksSubscription?.unsubscribe();
12057
12101
  onStableSubscription.unsubscribe();
12058
12102
  });
12059
12103
  }
12060
12104
  isStable() {
12061
- return this._isZoneStable && !this._ngZone.hasPendingMacrotasks;
12105
+ return this._isZoneStable && !this._ngZone.hasPendingMacrotasks && (!this._usePendingTasks || !this.pendingTasksInternal.hasPendingTasks);
12062
12106
  }
12063
12107
  _runCallbacksIfReady() {
12064
12108
  if (this.isStable()) {
@@ -12470,18 +12514,14 @@ class ApplicationRef {
12470
12514
  static ɵfac = function ApplicationRef_Factory(__ngFactoryType__) {
12471
12515
  return new (__ngFactoryType__ || ApplicationRef)();
12472
12516
  };
12473
- static ɵprov = /*@__PURE__*/__defineInjectable({
12517
+ static ɵprov = /*@__PURE__*/ɵɵdefineService({
12474
12518
  token: ApplicationRef,
12475
- factory: ApplicationRef.ɵfac,
12476
- providedIn: 'root'
12519
+ factory: ApplicationRef.ɵfac
12477
12520
  });
12478
12521
  }
12479
12522
  (() => {
12480
12523
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
12481
- type: Injectable,
12482
- args: [{
12483
- providedIn: 'root'
12484
- }]
12524
+ type: Service
12485
12525
  }], () => [], null);
12486
12526
  })();
12487
12527
  function normalizeBootstrapOptions(hostElementOrOptions) {
@@ -12923,20 +12963,6 @@ function ɵɵdeferEnableTimerScheduling(tView, tDetails, placeholderConfigIndex,
12923
12963
  }
12924
12964
  }
12925
12965
 
12926
- function promiseWithResolvers() {
12927
- let resolve;
12928
- let reject;
12929
- const promise = new Promise((res, rej) => {
12930
- resolve = res;
12931
- reject = rej;
12932
- });
12933
- return {
12934
- promise,
12935
- resolve,
12936
- reject
12937
- };
12938
- }
12939
-
12940
12966
  function scheduleDelayedTrigger(scheduleFn) {
12941
12967
  const lView = getLView();
12942
12968
  const tNode = getCurrentTNode();
@@ -14899,15 +14925,18 @@ function setMaskBit(hasChange) {
14899
14925
  changeMaskCounter++;
14900
14926
  }
14901
14927
  function applyI18n(tView, lView, index) {
14902
- if (changeMaskCounter > 0) {
14903
- ngDevMode && assertDefined(tView, `tView should be defined`);
14904
- const tI18n = tView.data[index];
14905
- const updateOpCodes = Array.isArray(tI18n) ? tI18n : tI18n.update;
14906
- const bindingsStartIndex = getBindingIndex() - changeMaskCounter - 1;
14907
- applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, changeMask);
14928
+ try {
14929
+ if (changeMaskCounter > 0) {
14930
+ ngDevMode && assertDefined(tView, `tView should be defined`);
14931
+ const tI18n = tView.data[index];
14932
+ const updateOpCodes = Array.isArray(tI18n) ? tI18n : tI18n.update;
14933
+ const bindingsStartIndex = getBindingIndex() - changeMaskCounter - 1;
14934
+ applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, changeMask);
14935
+ }
14936
+ } finally {
14937
+ changeMask = 0b0;
14938
+ changeMaskCounter = 0;
14908
14939
  }
14909
- changeMask = 0b0;
14910
- changeMaskCounter = 0;
14911
14940
  }
14912
14941
  function createNodeWithoutHydration(lView, textOrName, nodeType) {
14913
14942
  const renderer = lView[RENDERER];
@@ -15459,7 +15488,7 @@ function i18nAttributesFirstPass(tView, index, values) {
15459
15488
  if (ICU_REGEXP.test(message)) {
15460
15489
  throw new Error(`ICU expressions are not supported in attributes. Message: "${message}".`);
15461
15490
  }
15462
- generateBindingUpdateOpCodes(updateOpCodes, message, previousElementIndex, attrName, countBindings(updateOpCodes), SENSITIVE_ATTRS[attrName.toLowerCase()] ? _sanitizeUrl : null);
15491
+ generateBindingUpdateOpCodes(updateOpCodes, message, previousElementIndex, attrName, countBindings(updateOpCodes), i18nSanitizeAttribute(attrName));
15463
15492
  }
15464
15493
  }
15465
15494
  tView.data[index] = updateOpCodes;
@@ -15691,7 +15720,7 @@ function walkIcuTree(ast, tView, tIcu, lView, sharedUpdateOpCodes, create, remov
15691
15720
  const hasBinding = !!attr.value.match(BINDING_REGEXP);
15692
15721
  if (hasBinding) {
15693
15722
  if (VALID_ATTRS.hasOwnProperty(lowerAttrName)) {
15694
- generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, SENSITIVE_ATTRS[lowerAttrName] ? _sanitizeUrl : null);
15723
+ generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, i18nSanitizeAttribute(lowerAttrName));
15695
15724
  } else {
15696
15725
  ngDevMode && console.warn(`WARNING: ignoring unsafe attribute value ` + `${lowerAttrName} on element ${tagName} ` + `(see ${XSS_SECURITY_URL})`);
15697
15726
  }
@@ -15774,6 +15803,17 @@ function addCreateNodeAndAppend(create, marker, text, appendToParentIdx, createA
15774
15803
  function addCreateAttribute(create, newIndex, attrName, attrValue) {
15775
15804
  create.push(newIndex << 1 | 1, attrName, attrValue);
15776
15805
  }
15806
+ const SECURITY_SENSITIVE_ATTRS = /* @__PURE__ */(() => new Set(Object.values(SECURITY_SENSITIVE_ELEMENTS).flatMap(attrs => attrs ? Object.keys(attrs) : [])))();
15807
+ function i18nSanitizeAttribute(attrName) {
15808
+ const lowerAttrName = attrName.toLowerCase();
15809
+ if (SENSITIVE_ATTRS[lowerAttrName]) {
15810
+ return _sanitizeUrl;
15811
+ }
15812
+ if (SECURITY_SENSITIVE_ATTRS.has(lowerAttrName)) {
15813
+ return ɵɵvalidateAttribute;
15814
+ }
15815
+ return null;
15816
+ }
15777
15817
 
15778
15818
  const ROOT_TEMPLATE_ID = 0;
15779
15819
  const PP_MULTI_VALUE_PLACEHOLDERS_REGEXP = /\[(�.+?�?)\]/;
@@ -17145,6 +17185,31 @@ function maybeUnwrapModuleWithProviders(value) {
17145
17185
  return isModuleWithProviders(value) ? value.ngModule : value;
17146
17186
  }
17147
17187
 
17188
+ let _dehydratedBlockRegistryFactory = () => null;
17189
+ let _runIncrementalHydrationBootstrap = () => {};
17190
+ let isIncrementalHydrationRuntimeActive = false;
17191
+ function createDehydratedBlockRegistry() {
17192
+ return _dehydratedBlockRegistryFactory();
17193
+ }
17194
+ function runIncrementalHydrationBootstrap(injector, doc) {
17195
+ _runIncrementalHydrationBootstrap(injector, doc);
17196
+ }
17197
+ function ɵɵenableIncrementalHydrationRuntime() {
17198
+ if (isIncrementalHydrationRuntimeActive) {
17199
+ return;
17200
+ }
17201
+ isIncrementalHydrationRuntimeActive = true;
17202
+ enableRetrieveDeferBlockDataImpl();
17203
+ performanceMarkFeature('NgIncrementalHydration');
17204
+ _dehydratedBlockRegistryFactory = () => new DehydratedBlockRegistry();
17205
+ _runIncrementalHydrationBootstrap = (injector, doc) => {
17206
+ const deferBlockData = processBlockData(injector);
17207
+ const commentsByBlockId = gatherDeferBlocksCommentNodes(doc, doc.body);
17208
+ processAndInitTriggers(injector, deferBlockData, commentsByBlockId);
17209
+ appendDeferBlocksToJSActionMap(doc, injector);
17210
+ };
17211
+ }
17212
+
17148
17213
  function ɵɵpureFunction0(slotOffset, pureFn) {
17149
17214
  const bindingIndex = getBindingRoot() + slotOffset;
17150
17215
  const lView = getLView();
@@ -17502,6 +17567,7 @@ const angularCoreEnv = (() => ({
17502
17567
  'ɵɵdefineInjectable': __defineInjectable,
17503
17568
  'ɵɵdefineInjector': __defineInjector,
17504
17569
  'ɵɵdefineNgModule': ɵɵdefineNgModule,
17570
+ 'ɵɵdefineService': ɵɵdefineService,
17505
17571
  'ɵɵdefinePipe': ɵɵdefinePipe,
17506
17572
  'ɵɵdirectiveInject': ɵɵdirectiveInject,
17507
17573
  'ɵɵgetInheritedFactory': ɵɵgetInheritedFactory,
@@ -17606,6 +17672,7 @@ const angularCoreEnv = (() => ({
17606
17672
  'ɵɵdeferHydrateOnInteraction': ɵɵdeferHydrateOnInteraction,
17607
17673
  'ɵɵdeferHydrateOnViewport': ɵɵdeferHydrateOnViewport,
17608
17674
  'ɵɵdeferEnableTimerScheduling': ɵɵdeferEnableTimerScheduling,
17675
+ 'ɵɵenableIncrementalHydrationRuntime': ɵɵenableIncrementalHydrationRuntime,
17609
17676
  'ɵɵrepeater': ɵɵrepeater,
17610
17677
  'ɵɵrepeaterCreate': ɵɵrepeaterCreate,
17611
17678
  'ɵɵrepeaterTrackByIndex': ɵɵrepeaterTrackByIndex,
@@ -17834,12 +17901,12 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
17834
17901
  verifySemanticsOfNgModuleImport(modOrStandaloneCmpt, moduleType);
17835
17902
  verifySemanticsOfNgModuleDef(modOrStandaloneCmpt, false, moduleType);
17836
17903
  });
17837
- const exports$1 = maybeUnwrapFn(ngModuleDef.exports);
17904
+ const exports = maybeUnwrapFn(ngModuleDef.exports);
17838
17905
  declarations.forEach(verifyDeclarationsHaveDefinitions);
17839
17906
  declarations.forEach(verifyDirectivesHaveSelector);
17840
17907
  declarations.forEach(declarationType => verifyNotStandalone(declarationType, moduleType));
17841
17908
  const combinedDeclarations = [...declarations.map(resolveForwardRef), ...flatten(imports.map(computeCombinedExports)).map(resolveForwardRef)];
17842
- exports$1.forEach(verifyExportsAreDeclaredOrReExported);
17909
+ exports.forEach(verifyExportsAreDeclaredOrReExported);
17843
17910
  declarations.forEach(decl => verifyDeclarationIsUnique(decl, allowDuplicateDeclarationsInRoot));
17844
17911
  const ngModule = getAnnotation(moduleType, 'NgModule');
17845
17912
  if (ngModule) {
@@ -18249,6 +18316,7 @@ function directiveMetadata(type, metadata) {
18249
18316
  const propMetadata = reflect.ownPropMetadata(type);
18250
18317
  return {
18251
18318
  name: type.name,
18319
+ legacyOptionalChaining: false,
18252
18320
  type: type,
18253
18321
  selector: metadata.selector !== undefined ? metadata.selector : null,
18254
18322
  host: metadata.host || EMPTY_OBJ,
@@ -18300,7 +18368,8 @@ function convertToR3QueryMetadata(propertyName, ann) {
18300
18368
  };
18301
18369
  }
18302
18370
  function extractQueriesMetadata(type, propMetadata, isQueryAnn) {
18303
- const queriesMeta = [];
18371
+ const signalQueriesMeta = [];
18372
+ const decoratorQueriesMeta = [];
18304
18373
  for (const field in propMetadata) {
18305
18374
  if (propMetadata.hasOwnProperty(field)) {
18306
18375
  const annotations = propMetadata[field];
@@ -18312,12 +18381,17 @@ function extractQueriesMetadata(type, propMetadata, isQueryAnn) {
18312
18381
  if (annotations.some(isInputAnnotation)) {
18313
18382
  throw new Error(`Cannot combine @Input decorators with query decorators`);
18314
18383
  }
18315
- queriesMeta.push(convertToR3QueryMetadata(field, ann));
18384
+ const queryMeta = convertToR3QueryMetadata(field, ann);
18385
+ if (queryMeta.isSignal) {
18386
+ signalQueriesMeta.push(queryMeta);
18387
+ } else {
18388
+ decoratorQueriesMeta.push(queryMeta);
18389
+ }
18316
18390
  }
18317
18391
  });
18318
18392
  }
18319
18393
  }
18320
- return queriesMeta;
18394
+ return [...signalQueriesMeta, ...decoratorQueriesMeta];
18321
18395
  }
18322
18396
  function extractExportAs(exportAs) {
18323
18397
  return exportAs === undefined ? null : splitByComma(exportAs);
@@ -18624,18 +18698,14 @@ class ChangeDetectionSchedulerImpl {
18624
18698
  static ɵfac = function ChangeDetectionSchedulerImpl_Factory(__ngFactoryType__) {
18625
18699
  return new (__ngFactoryType__ || ChangeDetectionSchedulerImpl)();
18626
18700
  };
18627
- static ɵprov = /*@__PURE__*/__defineInjectable({
18701
+ static ɵprov = /*@__PURE__*/ɵɵdefineService({
18628
18702
  token: ChangeDetectionSchedulerImpl,
18629
- factory: ChangeDetectionSchedulerImpl.ɵfac,
18630
- providedIn: 'root'
18703
+ factory: ChangeDetectionSchedulerImpl.ɵfac
18631
18704
  });
18632
18705
  }
18633
18706
  (() => {
18634
18707
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ChangeDetectionSchedulerImpl, [{
18635
- type: Injectable,
18636
- args: [{
18637
- providedIn: 'root'
18638
- }]
18708
+ type: Service
18639
18709
  }], () => [], null);
18640
18710
  })();
18641
18711
  function provideZonelessChangeDetection() {
@@ -18677,18 +18747,14 @@ class Compiler {
18677
18747
  static ɵfac = function Compiler_Factory(__ngFactoryType__) {
18678
18748
  return new (__ngFactoryType__ || Compiler)();
18679
18749
  };
18680
- static ɵprov = /*@__PURE__*/__defineInjectable({
18750
+ static ɵprov = /*@__PURE__*/ɵɵdefineService({
18681
18751
  token: Compiler,
18682
- factory: Compiler.ɵfac,
18683
- providedIn: 'root'
18752
+ factory: Compiler.ɵfac
18684
18753
  });
18685
18754
  }
18686
18755
  (() => {
18687
18756
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Compiler, [{
18688
- type: Injectable,
18689
- args: [{
18690
- providedIn: 'root'
18691
- }]
18757
+ type: Service
18692
18758
  }], null, null);
18693
18759
  })();
18694
18760
  const COMPILER_OPTIONS = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'compilerOptions' : '');
@@ -19066,5 +19132,5 @@ function getDebugNode(nativeNode) {
19066
19132
  return null;
19067
19133
  }
19068
19134
 
19069
- export { AFTER_RENDER_PHASES, ANIMATIONS_DISABLED, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AcxChangeDetectionStrategy, AcxViewEncapsulation, AfterRenderImpl, AfterRenderManager, AfterRenderSequence, ApplicationInitStatus, ApplicationRef, Attribute, COMPILER_OPTIONS, CONTAINERS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChainedInjector, ChangeDetectionSchedulerImpl, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory, ComponentRef$1 as ComponentRef, ComponentRef as ComponentRef$1, Console, ControlFlowBlockType, DEFAULT_CURRENCY_CODE, DEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DEFER_BLOCK_ID, DEFER_BLOCK_SSR_ID_ATTRIBUTE, DEFER_BLOCK_STATE$1 as DEFER_BLOCK_STATE, DEFER_BLOCK_STATE as DEFER_BLOCK_STATE$1, DEFER_HYDRATE_TRIGGERS, DEFER_PARENT_BLOCK_ID, DEHYDRATED_BLOCK_REGISTRY, DISCONNECTED_NODES, DebugElement, DebugEventListener, DebugNode, DeferBlockBehavior, DeferBlockState, DehydratedBlockRegistry, Directive, ELEMENT_CONTAINERS, EVENT_REPLAY_ENABLED_DEFAULT, EVENT_REPLAY_QUEUE, ElementRef, EnvironmentNgModuleRefAdapter, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS, IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, IS_EVENT_REPLAY_ENABLED, IS_HYDRATION_DOM_REUSE_ENABLED, IS_I18N_HYDRATION_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED, Inject, Injectable, Input, JSACTION_BLOCK_ELEMENT_MAP, JSACTION_EVENT_CONTRACT, LContext, LOCALE_ID, LocaleDataIndex, MAX_ANIMATION_TIMEOUT, MULTIPLIER, MissingTranslationStrategy, NGH_ATTR_NAME, NGH_DATA_KEY, NGH_DEFER_BLOCKS_KEY, NODES, NOOP_AFTER_RENDER_REF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE, NO_ERRORS_SCHEMA, NUM_ROOT_NODES, NgModule, NgModuleFactory, NgModuleFactory$1, NgModuleRef, NgModuleRef$1, NodeInjector, Optional, Output, PLATFORM_ID, PLATFORM_INITIALIZER, PRESERVE_HOST_CONTENT, Pipe, ProfilerEvent, QueryList, ReflectionCapabilities, Renderer2, RendererFactory2, RendererStyleFlags2, SHARED_STYLES_HOST, SKIP_HYDRATION_ATTR_NAME, SSR_CONTENT_INTEGRITY_MARKER, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TEMPLATES, TEMPLATE_ID, TESTABILITY, TESTABILITY_GETTER, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TimerScheduler, TracingAction, TracingService, TransferState, Type, UseExhaustiveCheckNoChanges, ViewContainerRef, ViewEncapsulation, ViewRef, _sanitizeHtml, _sanitizeUrl, afterEveryRender, afterNextRender, allLeavingAnimations, allowSanitizationBypassAndThrow, angularCoreEnv, appendDeferBlocksToJSActionMap, asNativeElements, assertComponentDef, assertStandaloneComponentType, bypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript, bypassSanitizationTrustStyle, bypassSanitizationTrustUrl, calcPathForNode, checkNoChangesInternal, cleanupDehydratedViews, clearResolutionOfComponentResourcesQueue, collectNativeNodes, collectNativeNodesInLContainer, compileComponent, compileDirective, compileNgModule, compileNgModuleDefs, compilePipe, convertHydrateTriggersToJsAction, countBlocksSkippedByHydration, createEnvironmentInjector, createMultiResultQuerySignalFn, createNgModule, createNgModuleRefWithProviders, createSingleResultOptionalQuerySignalFn, createSingleResultRequiredQuerySignalFn, depsTracker, devModeEqual, enableApplyRootElementTransformImpl, enableClaimDehydratedIcuCaseImpl, enableFindMatchingDehydratedViewImpl, enableLocateOrCreateContainerAnchorImpl, enableLocateOrCreateContainerRefImpl, enableLocateOrCreateElementContainerNodeImpl, enableLocateOrCreateElementNodeImpl, enableLocateOrCreateI18nNodeImpl, enableLocateOrCreateTextNodeImpl, enablePrepareI18nBlockForHydrationImpl, enableProfiling, enableRetrieveDeferBlockDataImpl, enableRetrieveHydrationInfoImpl, enableStashEventListenerImpl, findLocaleData, flushModuleScopingQueueAsMuchAsPossible, gatherDeferBlocksCommentNodes, generateStandaloneInDeclarationsError, getAsyncClassMetadataFn, getClosestComponentName, getCompilerFacade, getDebugNode, getDeferBlocks, getDirectives, getDocument, getHostElement, getInjector, getInjectorMetadata, getInjectorProviders, getLContext, getLDeferBlockDetails, getLNodeForHydration, getLocaleCurrencyCode, getLocalePluralCase, getNodeInjectorTNode, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getSignalGraph, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, invokeListeners, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSubscribable, isTNodeShape, isViewDirty, iterateListLike, makePropDecorator, makeStateKey, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processAndInitTriggers, processBlockData, processTextNodeBeforeSerialization, profiler, promiseWithResolvers, provideAppInitializer, provideIdleServiceWith, provideNgReflectAttributes, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, publishDefaultGlobalUtils, publishExternalGlobalUtil, publishSignalConfiguration, readHydrationInfo, registerLocaleData, registerNgModuleType, remove, removeListeners, renderDeferBlockState, resetCompiledComponents, resetIncrementalHydrationEnabledWarnedForTests, resetJitOptions, resolveComponentResources, restoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest, setClassMetadata, setClassMetadataAsync, setDocument, setIsI18nHydrationSupportEnabled, setJSActionAttributes, setJitOptions, setLocaleId, setStashFn, setTestabilityGetter, sharedMapFunction, sharedStashFunction, transitiveScopesFor, triggerHydrationFromBlockName, triggerResourceLoading, trySerializeI18nBlock, twoWayBinding, unregisterAllLocaleData, unsupportedProjectionOfDomNodes, unwrapSafeValue, validAppIdInitializer, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, walkLViewDirectives, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵControlFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵarrowFunction, ɵɵ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, ɵɵdefineNgModule, ɵɵ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, ɵɵinjectAttribute, ɵɵ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, ɵɵ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 };
19135
+ export { AFTER_RENDER_PHASES, ANIMATIONS_DISABLED, APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, AcxChangeDetectionStrategy, AcxViewEncapsulation, AfterRenderImpl, AfterRenderManager, AfterRenderSequence, ApplicationInitStatus, ApplicationRef, Attribute, COMPILER_OPTIONS, CONTAINERS, CUSTOM_ELEMENTS_SCHEMA, ChainedInjector, ChangeDetectionSchedulerImpl, ChangeDetectionStrategy, Compiler, CompilerFactory, Component, ComponentFactory, ComponentRef$1 as ComponentRef, ComponentRef as ComponentRef$1, Console, ControlFlowBlockType, DEFAULT_CURRENCY_CODE, DEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DEFER_BLOCK_ID, DEFER_BLOCK_SSR_ID_ATTRIBUTE, DEFER_BLOCK_STATE$1 as DEFER_BLOCK_STATE, DEFER_BLOCK_STATE as DEFER_BLOCK_STATE$1, DEFER_HYDRATE_TRIGGERS, DEFER_PARENT_BLOCK_ID, DEHYDRATED_BLOCK_REGISTRY, DISCONNECTED_NODES, DebugElement, DebugEventListener, DebugNode, DeferBlockBehavior, DeferBlockState, Directive, ELEMENT_CONTAINERS, EVENT_REPLAY_ENABLED_DEFAULT, EVENT_REPLAY_QUEUE, ElementRef, EnvironmentNgModuleRefAdapter, Host, HostBinding, HostListener, HydrationStatus, I18N_DATA, IDLE_SERVICE, IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, IS_EVENT_REPLAY_ENABLED, IS_HYDRATION_DOM_REUSE_ENABLED, IS_I18N_HYDRATION_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED, Inject, Injectable, Input, JSACTION_BLOCK_ELEMENT_MAP, JSACTION_EVENT_CONTRACT, LContext, LOCALE_ID, LocaleDataIndex, MAX_ANIMATION_TIMEOUT, MULTIPLIER, MissingTranslationStrategy, NGH_ATTR_NAME, NGH_DATA_KEY, NGH_DEFER_BLOCKS_KEY, NODES, NOOP_AFTER_RENDER_REF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE, NO_ERRORS_SCHEMA, NUM_ROOT_NODES, NgModule, NgModuleFactory, NgModuleFactory$1, NgModuleRef, NgModuleRef$1, NodeInjector, Optional, Output, PRESERVE_HOST_CONTENT, Pipe, ProfilerEvent, QueryList, ReflectionCapabilities, Renderer2, RendererFactory2, RendererStyleFlags2, SHARED_STYLES_HOST, SKIP_HYDRATION_ATTR_NAME, SSR_CONTENT_INTEGRITY_MARKER, Sanitizer, SecurityContext, Self, Service, SimpleChange, SkipSelf, TEMPLATES, TEMPLATE_ID, TESTABILITY, TESTABILITY_GETTER, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TimerScheduler, TracingAction, TracingService, Type, USE_PENDING_TASKS, UseExhaustiveCheckNoChanges, ViewContainerRef, ViewEncapsulation, ViewRef, _sanitizeHtml, _sanitizeUrl, afterEveryRender, afterNextRender, allLeavingAnimations, allowSanitizationBypassAndThrow, angularCoreEnv, asNativeElements, assertComponentDef, assertStandaloneComponentType, bypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript, bypassSanitizationTrustStyle, bypassSanitizationTrustUrl, calcPathForNode, checkNoChangesInternal, cleanupDehydratedViews, clearResolutionOfComponentResourcesQueue, collectNativeNodes, collectNativeNodesInLContainer, compileComponent, compileDirective, compileNgModule, compileNgModuleDefs, compilePipe, convertHydrateTriggersToJsAction, countBlocksSkippedByHydration, createDehydratedBlockRegistry, createEnvironmentInjector, createMultiResultQuerySignalFn, createNgModule, createNgModuleRefWithProviders, createSingleResultOptionalQuerySignalFn, createSingleResultRequiredQuerySignalFn, depsTracker, devModeEqual, enableApplyRootElementTransformImpl, enableClaimDehydratedIcuCaseImpl, enableFindMatchingDehydratedViewImpl, enableLocateOrCreateContainerAnchorImpl, enableLocateOrCreateContainerRefImpl, enableLocateOrCreateElementContainerNodeImpl, enableLocateOrCreateElementNodeImpl, enableLocateOrCreateI18nNodeImpl, enableLocateOrCreateTextNodeImpl, enablePrepareI18nBlockForHydrationImpl, enableProfiling, enableRetrieveHydrationInfoImpl, enableStashEventListenerImpl, findLocaleData, flushModuleScopingQueueAsMuchAsPossible, generateStandaloneInDeclarationsError, getAsyncClassMetadataFn, getClosestComponentName, getCompilerFacade, getDebugNode, getDeferBlocks, getDirectives, getDocument, getHostElement, getInjector, getInjectorMetadata, getInjectorProviders, getLContext, getLDeferBlockDetails, getLNodeForHydration, getLocaleCurrencyCode, getLocalePluralCase, getNodeInjectorTNode, getOrComputeI18nChildren, getRegisteredNgModuleType, getSanitizationBypassType, getSignalGraph, getTDeferBlockDetails, getTransferState, inferTagNameFromDefinition, inputBinding, invokeListeners, isComponentDefPendingResolution, isComponentResourceResolutionQueueEmpty, isDeferBlock, isDetachedByI18n, isDisconnectedNode, isI18nHydrationEnabled, isI18nHydrationSupportEnabled, isInSkipHydrationBlock, isIncrementalHydrationEnabled, isJsObject, isLetDeclaration, isListLikeIterable, isNgModule, isPromise, isSubscribable, isTNodeShape, isViewDirty, iterateListLike, makePropDecorator, markForRefresh, noSideEffects, optionsReducer, outputBinding, patchComponentDefWithScope, performanceMarkFeature, processTextNodeBeforeSerialization, profiler, promiseWithResolvers, provideAppInitializer, provideIdleServiceWith, provideNgReflectAttributes, provideZonelessChangeDetection, provideZonelessChangeDetectionInternal, publishDefaultGlobalUtils, publishExternalGlobalUtil, publishSignalConfiguration, readHydrationInfo, registerLocaleData, registerNgModuleType, remove, removeListeners, renderDeferBlockState, resetCompiledComponents, resetIncrementalHydrationEnabledWarnedForTests, resetJitOptions, resolveComponentResources, restoreComponentResolutionQueue, runIncrementalHydrationBootstrap, setAllowDuplicateNgModuleIdsForTest, setClassMetadata, setClassMetadataAsync, setDocument, setIsI18nHydrationSupportEnabled, setJSActionAttributes, setJitOptions, setLocaleId, setStashFn, setTestabilityGetter, sharedMapFunction, sharedStashFunction, transitiveScopesFor, triggerHydrationFromBlockName, triggerResourceLoading, trySerializeI18nBlock, twoWayBinding, unregisterAllLocaleData, unsupportedProjectionOfDomNodes, unwrapSafeValue, validateMatchingNode, validateNodeExists, verifySsrContentsIntegrity, walkLViewDirectives, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, ɵsetClassDebugInfo, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, ɵɵControlFeature, ɵɵExternalStylesFeature, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵanimateEnter, ɵɵanimateEnterListener, ɵɵanimateLeave, ɵɵanimateLeaveListener, ɵɵariaProperty, ɵɵarrowFunction, ɵɵ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, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdefineService, ɵɵdirectiveInject, ɵɵdomElement, ɵɵdomElementContainer, ɵɵdomElementContainerEnd, ɵɵdomElementContainerStart, ɵɵdomElementEnd, ɵɵdomElementStart, ɵɵdomListener, ɵɵdomProperty, ɵɵdomTemplate, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableIncrementalHydrationRuntime, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵgetReplaceMetadataURL, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinjectAttribute, ɵɵ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, ɵɵ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 };
19070
19136
  //# sourceMappingURL=_debug_node-chunk.mjs.map