MCPcopy Index your code
hub / github.com/angular/angular / serializeInjector

Function serializeInjector

packages/core/src/debug/ai/serialized_di_graph.ts:71–119  ·  view source on GitHub ↗
(injector: Injector)

Source from the content-addressed store, hash-verified

69 * Serializes an injector and its children/providers into a tree.
70 */
71export function serializeInjector(injector: Injector): SerializedInjector {
72 const metadata = getInjectorMetadata(injector);
73
74 if (metadata?.type === 'null') {
75 return {
76 name: 'Null Injector',
77 type: 'null',
78 providers: [],
79 children: [],
80 };
81 }
82
83 // Only attempt to get providers for types supported by getInjectorProviders.
84 let allProviders: SerializedProvider[] = [];
85 if (metadata?.type === 'element' || metadata?.type === 'environment') {
86 allProviders = getInjectorProviders(injector).map((record) => {
87 return {
88 token: record.token,
89 value: injector.get(record.token, null, {optional: true, self: true}),
90 };
91 });
92 }
93
94 if (metadata?.type === 'element') {
95 const tNode = getNodeInjectorTNode(injector as NodeInjector);
96 const viewProvidersCount = tNode
97 ? tNode.providerIndexes >> TNodeProviderIndexes.CptViewProvidersCountShift
98 : 0;
99
100 const viewProviders = allProviders.slice(0, viewProvidersCount);
101 const resolvedProviders = allProviders.slice(viewProvidersCount);
102
103 return {
104 name: injector.constructor.name,
105 type: 'element',
106 providers: resolvedProviders,
107 viewProviders,
108 children: [],
109 hostElement: metadata.source as HTMLElement,
110 };
111 }
112
113 return {
114 name: metadata?.source ?? injector.constructor.name ?? 'Unknown Injector',
115 type: 'environment', // Fallback for other injector types
116 providers: allProviders,
117 children: [],
118 };
119}

Callers 2

walkElementInjectorsFunction · 0.90
serializeAncestorsFunction · 0.90

Calls 5

getInjectorMetadataFunction · 0.90
getInjectorProvidersFunction · 0.90
getNodeInjectorTNodeFunction · 0.90
mapMethod · 0.80
getMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…