@inversifyjs/http-insights 0.5.1 → 0.6.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.
- package/lib/generated/prisma/browser.d.ts +30 -0
- package/lib/generated/prisma/browser.d.ts.map +1 -1
- package/lib/generated/prisma/client.d.ts +30 -0
- package/lib/generated/prisma/client.d.ts.map +1 -1
- package/lib/generated/prisma/commonInputTypes.d.ts +81 -0
- package/lib/generated/prisma/commonInputTypes.d.ts.map +1 -1
- package/lib/generated/prisma/enums.d.ts +9 -1
- package/lib/generated/prisma/enums.d.ts.map +1 -1
- package/lib/generated/prisma/enums.js +8 -1
- package/lib/generated/prisma/enums.js.map +1 -1
- package/lib/generated/prisma/internal/class.d.ts +66 -0
- package/lib/generated/prisma/internal/class.d.ts.map +1 -1
- package/lib/generated/prisma/internal/class.js +4 -4
- package/lib/generated/prisma/internal/class.js.map +1 -1
- package/lib/generated/prisma/internal/prismaNamespace.d.ts +533 -1
- package/lib/generated/prisma/internal/prismaNamespace.d.ts.map +1 -1
- package/lib/generated/prisma/internal/prismaNamespace.js +73 -1
- package/lib/generated/prisma/internal/prismaNamespace.js.map +1 -1
- package/lib/generated/prisma/internal/prismaNamespaceBrowser.d.ts +78 -0
- package/lib/generated/prisma/internal/prismaNamespaceBrowser.d.ts.map +1 -1
- package/lib/generated/prisma/internal/prismaNamespaceBrowser.js +73 -1
- package/lib/generated/prisma/internal/prismaNamespaceBrowser.js.map +1 -1
- package/lib/generated/prisma/models/Controller.d.ts +108 -0
- package/lib/generated/prisma/models/Controller.d.ts.map +1 -1
- package/lib/generated/prisma/models/Guard.d.ts +112 -0
- package/lib/generated/prisma/models/Guard.d.ts.map +1 -1
- package/lib/generated/prisma/models/Interceptor.d.ts +108 -0
- package/lib/generated/prisma/models/Interceptor.d.ts.map +1 -1
- package/lib/generated/prisma/models/Middleware.d.ts +112 -0
- package/lib/generated/prisma/models/Middleware.d.ts.map +1 -1
- package/lib/generated/prisma/models/Pipe.d.ts +116 -0
- package/lib/generated/prisma/models/Pipe.d.ts.map +1 -1
- package/lib/generated/prisma/models/Plan.d.ts +1948 -0
- package/lib/generated/prisma/models/Plan.d.ts.map +1 -0
- package/lib/generated/prisma/models/Plan.js +2 -0
- package/lib/generated/prisma/models/Plan.js.map +1 -0
- package/lib/generated/prisma/models/PlanBinding.d.ts +1843 -0
- package/lib/generated/prisma/models/PlanBinding.d.ts.map +1 -0
- package/lib/generated/prisma/models/PlanBinding.js +2 -0
- package/lib/generated/prisma/models/PlanBinding.js.map +1 -0
- package/lib/generated/prisma/models/PlanBindingDependency.d.ts +1503 -0
- package/lib/generated/prisma/models/PlanBindingDependency.d.ts.map +1 -0
- package/lib/generated/prisma/models/PlanBindingDependency.js +2 -0
- package/lib/generated/prisma/models/PlanBindingDependency.js.map +1 -0
- package/lib/generated/prisma/models/PlanService.d.ts +1851 -0
- package/lib/generated/prisma/models/PlanService.d.ts.map +1 -0
- package/lib/generated/prisma/models/PlanService.js +2 -0
- package/lib/generated/prisma/models/PlanService.js.map +1 -0
- package/lib/generated/prisma/models/PlanServiceBinding.d.ts +1238 -0
- package/lib/generated/prisma/models/PlanServiceBinding.d.ts.map +1 -0
- package/lib/generated/prisma/models/PlanServiceBinding.js +2 -0
- package/lib/generated/prisma/models/PlanServiceBinding.js.map +1 -0
- package/lib/generated/prisma/models/PlanServiceTag.d.ts +1315 -0
- package/lib/generated/prisma/models/PlanServiceTag.d.ts.map +1 -0
- package/lib/generated/prisma/models/PlanServiceTag.js +2 -0
- package/lib/generated/prisma/models/PlanServiceTag.js.map +1 -0
- package/lib/generated/prisma/models.d.ts +6 -0
- package/lib/generated/prisma/models.d.ts.map +1 -1
- package/lib/generated/prisma-migrate/index.d.ts.map +1 -1
- package/lib/generated/prisma-migrate/index.js +1 -1
- package/lib/generated/prisma-migrate/index.js.map +1 -1
- package/lib/insights/adapter/inversify/modules/InsightsContainerModule.d.ts.map +1 -1
- package/lib/insights/adapter/inversify/modules/InsightsContainerModule.js +2 -0
- package/lib/insights/adapter/inversify/modules/InsightsContainerModule.js.map +1 -1
- package/lib/insights/adapter/inversify/services/HttpInsightsProvider.js +1 -1
- package/lib/insights/adapter/inversify/services/HttpInsightsProvider.js.map +1 -1
- package/lib/insights/adapter/prisma/adapters/PrismaInsightsPersistenceAdapter.d.ts.map +1 -1
- package/lib/insights/adapter/prisma/adapters/PrismaInsightsPersistenceAdapter.js +94 -0
- package/lib/insights/adapter/prisma/adapters/PrismaInsightsPersistenceAdapter.js.map +1 -1
- package/lib/insights/adapter/prisma/builders/CallFromPrismaCallBuilder.d.ts +167 -1
- package/lib/insights/adapter/prisma/builders/CallFromPrismaCallBuilder.d.ts.map +1 -1
- package/lib/insights/adapter/prisma/builders/CallFromPrismaCallBuilder.js +9 -5
- package/lib/insights/adapter/prisma/builders/CallFromPrismaCallBuilder.js.map +1 -1
- package/lib/insights/adapter/prisma/builders/ControllerFromPrismaControllerBuilder.d.ts +5 -4
- package/lib/insights/adapter/prisma/builders/ControllerFromPrismaControllerBuilder.d.ts.map +1 -1
- package/lib/insights/adapter/prisma/builders/ControllerFromPrismaControllerBuilder.js +14 -2
- package/lib/insights/adapter/prisma/builders/ControllerFromPrismaControllerBuilder.js.map +1 -1
- package/lib/insights/adapter/prisma/builders/GuardFromPrismaGuardBuilder.d.ts +5 -4
- package/lib/insights/adapter/prisma/builders/GuardFromPrismaGuardBuilder.d.ts.map +1 -1
- package/lib/insights/adapter/prisma/builders/GuardFromPrismaGuardBuilder.js +14 -2
- package/lib/insights/adapter/prisma/builders/GuardFromPrismaGuardBuilder.js.map +1 -1
- package/lib/insights/adapter/prisma/builders/InterceptorFromPrismaInterceptorBuilder.d.ts +5 -4
- package/lib/insights/adapter/prisma/builders/InterceptorFromPrismaInterceptorBuilder.d.ts.map +1 -1
- package/lib/insights/adapter/prisma/builders/InterceptorFromPrismaInterceptorBuilder.js +14 -2
- package/lib/insights/adapter/prisma/builders/InterceptorFromPrismaInterceptorBuilder.js.map +1 -1
- package/lib/insights/adapter/prisma/builders/MiddlewareFromPrismaMiddlewareBuilder.d.ts +5 -4
- package/lib/insights/adapter/prisma/builders/MiddlewareFromPrismaMiddlewareBuilder.d.ts.map +1 -1
- package/lib/insights/adapter/prisma/builders/MiddlewareFromPrismaMiddlewareBuilder.js +14 -2
- package/lib/insights/adapter/prisma/builders/MiddlewareFromPrismaMiddlewareBuilder.js.map +1 -1
- package/lib/insights/adapter/prisma/builders/PipeFromPrismaPipeBuilder.d.ts +5 -4
- package/lib/insights/adapter/prisma/builders/PipeFromPrismaPipeBuilder.d.ts.map +1 -1
- package/lib/insights/adapter/prisma/builders/PipeFromPrismaPipeBuilder.js +14 -2
- package/lib/insights/adapter/prisma/builders/PipeFromPrismaPipeBuilder.js.map +1 -1
- package/lib/insights/adapter/prisma/builders/PlanFromPrismaPlanBuilder.d.ts +7 -0
- package/lib/insights/adapter/prisma/builders/PlanFromPrismaPlanBuilder.d.ts.map +1 -0
- package/lib/insights/adapter/prisma/builders/PlanFromPrismaPlanBuilder.js +359 -0
- package/lib/insights/adapter/prisma/builders/PlanFromPrismaPlanBuilder.js.map +1 -0
- package/lib/insights/adapter/prisma/builders/prismaPlanInclude.d.ts +83 -0
- package/lib/insights/adapter/prisma/builders/prismaPlanInclude.d.ts.map +1 -0
- package/lib/insights/adapter/prisma/builders/prismaPlanInclude.js +25 -0
- package/lib/insights/adapter/prisma/builders/prismaPlanInclude.js.map +1 -0
- package/lib/insights/adapter/prisma/calculations/readPlanRows.d.ts +19 -0
- package/lib/insights/adapter/prisma/calculations/readPlanRows.d.ts.map +1 -0
- package/lib/insights/adapter/prisma/calculations/readPlanRows.js +160 -0
- package/lib/insights/adapter/prisma/calculations/readPlanRows.js.map +1 -0
- package/lib/insights/domain/calculations/definePlanJson.d.ts +3 -0
- package/lib/insights/domain/calculations/definePlanJson.d.ts.map +1 -0
- package/lib/insights/domain/calculations/definePlanJson.js +88 -0
- package/lib/insights/domain/calculations/definePlanJson.js.map +1 -0
- package/lib/insights/domain/models/Controller.d.ts +2 -0
- package/lib/insights/domain/models/Controller.d.ts.map +1 -1
- package/lib/insights/domain/models/Guard.d.ts +2 -0
- package/lib/insights/domain/models/Guard.d.ts.map +1 -1
- package/lib/insights/domain/models/Interceptor.d.ts +2 -0
- package/lib/insights/domain/models/Interceptor.d.ts.map +1 -1
- package/lib/insights/domain/models/Middleware.d.ts +2 -0
- package/lib/insights/domain/models/Middleware.d.ts.map +1 -1
- package/lib/insights/domain/models/Pipe.d.ts +2 -0
- package/lib/insights/domain/models/Pipe.d.ts.map +1 -1
- package/lib/insights/domain/models/Plan.d.ts +6 -0
- package/lib/insights/domain/models/Plan.d.ts.map +1 -0
- package/lib/insights/domain/models/Plan.js +2 -0
- package/lib/insights/domain/models/Plan.js.map +1 -0
- package/lib/insights/domain/models/PlanBinding.d.ts +39 -0
- package/lib/insights/domain/models/PlanBinding.d.ts.map +1 -0
- package/lib/insights/domain/models/PlanBinding.js +15 -0
- package/lib/insights/domain/models/PlanBinding.js.map +1 -0
- package/lib/insights/domain/models/PlanJsonValue.d.ts +6 -0
- package/lib/insights/domain/models/PlanJsonValue.d.ts.map +1 -0
- package/lib/insights/domain/models/PlanJsonValue.js +2 -0
- package/lib/insights/domain/models/PlanJsonValue.js.map +1 -0
- package/lib/insights/domain/models/PlanMetadataKey.d.ts +5 -0
- package/lib/insights/domain/models/PlanMetadataKey.d.ts.map +1 -0
- package/lib/insights/domain/models/PlanMetadataKey.js +2 -0
- package/lib/insights/domain/models/PlanMetadataKey.js.map +1 -0
- package/lib/insights/domain/models/PlanProperty.d.ts +7 -0
- package/lib/insights/domain/models/PlanProperty.d.ts.map +1 -0
- package/lib/insights/domain/models/PlanProperty.js +2 -0
- package/lib/insights/domain/models/PlanProperty.js.map +1 -0
- package/lib/insights/domain/models/PlanService.d.ts +15 -0
- package/lib/insights/domain/models/PlanService.d.ts.map +1 -0
- package/lib/insights/domain/models/PlanService.js +2 -0
- package/lib/insights/domain/models/PlanService.js.map +1 -0
- package/lib/insights/domain/models/PlanServiceIdentifier.d.ts +5 -0
- package/lib/insights/domain/models/PlanServiceIdentifier.d.ts.map +1 -0
- package/lib/insights/domain/models/PlanServiceIdentifier.js +2 -0
- package/lib/insights/domain/models/PlanServiceIdentifier.js.map +1 -0
- package/lib/insights/domain/models/PlanTag.d.ts +7 -0
- package/lib/insights/domain/models/PlanTag.d.ts.map +1 -0
- package/lib/insights/domain/models/PlanTag.js +2 -0
- package/lib/insights/domain/models/PlanTag.js.map +1 -0
- package/lib/instrumentation/adapter/inversify/calculations/buildHttpInsightsPlan.d.ts +4 -0
- package/lib/instrumentation/adapter/inversify/calculations/buildHttpInsightsPlan.d.ts.map +1 -0
- package/lib/instrumentation/adapter/inversify/calculations/buildHttpInsightsPlan.js +269 -0
- package/lib/instrumentation/adapter/inversify/calculations/buildHttpInsightsPlan.js.map +1 -0
- package/lib/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.d.ts +2 -2
- package/lib/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.d.ts.map +1 -1
- package/lib/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.js +3 -3
- package/lib/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.js.map +1 -1
- package/lib/instrumentation/adapter/inversify/services/HttpInsightsEventSink.d.ts +2 -1
- package/lib/instrumentation/adapter/inversify/services/HttpInsightsEventSink.d.ts.map +1 -1
- package/lib/instrumentation/adapter/inversify/services/HttpInsightsEventSink.js +69 -55
- package/lib/instrumentation/adapter/inversify/services/HttpInsightsEventSink.js.map +1 -1
- package/package.json +7 -7
- package/prisma/migrations/20261108202000_add_plan/migration.sql +124 -0
- package/prisma/schema.prisma +117 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { definePlanJson } from '../../../../insights/domain/calculations/definePlanJson.js';
|
|
2
|
+
export function buildHttpInsightsPlan(inspection, readId) {
|
|
3
|
+
const services = new WeakMap();
|
|
4
|
+
const bindings = new WeakMap();
|
|
5
|
+
function readService(node) {
|
|
6
|
+
const existing = services.get(node);
|
|
7
|
+
if (existing !== undefined) {
|
|
8
|
+
return existing;
|
|
9
|
+
}
|
|
10
|
+
const serviceBindings = [];
|
|
11
|
+
const service = {
|
|
12
|
+
bindings: serviceBindings,
|
|
13
|
+
chained: node.isMultiple ? node.chained : null,
|
|
14
|
+
id: readId(),
|
|
15
|
+
isMultiple: node.isMultiple,
|
|
16
|
+
name: readOptionalMetadataKey(node.name),
|
|
17
|
+
optional: node.optional,
|
|
18
|
+
serviceIdentifier: readServiceIdentifier(node.serviceIdentifier),
|
|
19
|
+
tags: readTags(node.tags),
|
|
20
|
+
};
|
|
21
|
+
services.set(node, service);
|
|
22
|
+
definePlanJson(service);
|
|
23
|
+
for (const binding of readBindingInspections(node)) {
|
|
24
|
+
serviceBindings.push(readBinding(binding));
|
|
25
|
+
}
|
|
26
|
+
return service;
|
|
27
|
+
}
|
|
28
|
+
function readBinding(node) {
|
|
29
|
+
const existing = bindings.get(node);
|
|
30
|
+
if (existing !== undefined) {
|
|
31
|
+
return existing;
|
|
32
|
+
}
|
|
33
|
+
switch (node.type) {
|
|
34
|
+
case 'ConstantValue':
|
|
35
|
+
case 'Factory': {
|
|
36
|
+
const binding = {
|
|
37
|
+
bindingId: node.id,
|
|
38
|
+
id: readId(),
|
|
39
|
+
moduleId: node.moduleId ?? null,
|
|
40
|
+
scope: node.scope,
|
|
41
|
+
serviceIdentifier: readServiceIdentifier(node.serviceIdentifier),
|
|
42
|
+
type: node.type,
|
|
43
|
+
};
|
|
44
|
+
bindings.set(node, binding);
|
|
45
|
+
return binding;
|
|
46
|
+
}
|
|
47
|
+
case 'DynamicValue': {
|
|
48
|
+
const binding = {
|
|
49
|
+
bindingId: node.id,
|
|
50
|
+
id: readId(),
|
|
51
|
+
moduleId: node.moduleId ?? null,
|
|
52
|
+
scope: node.scope,
|
|
53
|
+
serviceIdentifier: readServiceIdentifier(node.serviceIdentifier),
|
|
54
|
+
type: 'DynamicValue',
|
|
55
|
+
};
|
|
56
|
+
bindings.set(node, binding);
|
|
57
|
+
return binding;
|
|
58
|
+
}
|
|
59
|
+
case 'Instance': {
|
|
60
|
+
const constructorArguments = [];
|
|
61
|
+
const properties = [];
|
|
62
|
+
const binding = {
|
|
63
|
+
bindingId: node.id,
|
|
64
|
+
constructorArguments,
|
|
65
|
+
id: readId(),
|
|
66
|
+
implementationType: readServiceIdentifier(node.implementationType),
|
|
67
|
+
moduleId: node.moduleId ?? null,
|
|
68
|
+
properties,
|
|
69
|
+
scope: node.scope,
|
|
70
|
+
serviceIdentifier: readServiceIdentifier(node.serviceIdentifier),
|
|
71
|
+
type: 'Instance',
|
|
72
|
+
};
|
|
73
|
+
bindings.set(node, binding);
|
|
74
|
+
for (const argument of node.constructorArguments) {
|
|
75
|
+
constructorArguments.push(argument === undefined ? null : readService(argument));
|
|
76
|
+
}
|
|
77
|
+
for (const [key, service] of node.properties) {
|
|
78
|
+
properties.push({
|
|
79
|
+
key: readPropertyKey(key),
|
|
80
|
+
service: readService(service),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return binding;
|
|
84
|
+
}
|
|
85
|
+
case 'ResolvedValue': {
|
|
86
|
+
const resolvedArguments = [];
|
|
87
|
+
const binding = {
|
|
88
|
+
arguments: resolvedArguments,
|
|
89
|
+
bindingId: node.id,
|
|
90
|
+
id: readId(),
|
|
91
|
+
moduleId: node.moduleId ?? null,
|
|
92
|
+
scope: node.scope,
|
|
93
|
+
serviceIdentifier: readServiceIdentifier(node.serviceIdentifier),
|
|
94
|
+
type: 'ResolvedValue',
|
|
95
|
+
};
|
|
96
|
+
bindings.set(node, binding);
|
|
97
|
+
for (const argument of node.arguments) {
|
|
98
|
+
resolvedArguments.push(readService(argument));
|
|
99
|
+
}
|
|
100
|
+
return binding;
|
|
101
|
+
}
|
|
102
|
+
case 'ServiceRedirection': {
|
|
103
|
+
const binding = {
|
|
104
|
+
bindingId: node.id,
|
|
105
|
+
id: readId(),
|
|
106
|
+
moduleId: node.moduleId ?? null,
|
|
107
|
+
redirection: undefined,
|
|
108
|
+
serviceIdentifier: readServiceIdentifier(node.serviceIdentifier),
|
|
109
|
+
targetServiceIdentifier: readServiceIdentifier(node.targetServiceIdentifier),
|
|
110
|
+
type: 'ServiceRedirection',
|
|
111
|
+
};
|
|
112
|
+
bindings.set(node, binding);
|
|
113
|
+
assignRedirection(binding, readService(node.redirection));
|
|
114
|
+
return binding;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
id: readId(),
|
|
120
|
+
root: readService(inspection.root),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function assignRedirection(binding, redirection) {
|
|
124
|
+
if (binding.type !== 'ServiceRedirection') {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
binding.redirection = redirection;
|
|
128
|
+
}
|
|
129
|
+
function readBindingInspections(service) {
|
|
130
|
+
if (service.isMultiple) {
|
|
131
|
+
return service.bindings;
|
|
132
|
+
}
|
|
133
|
+
if (service.binding === undefined) {
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
return [service.binding];
|
|
137
|
+
}
|
|
138
|
+
function readFunctionName(serviceIdentifier) {
|
|
139
|
+
if (serviceIdentifier.name === '') {
|
|
140
|
+
return '(anonymous)';
|
|
141
|
+
}
|
|
142
|
+
return serviceIdentifier.name;
|
|
143
|
+
}
|
|
144
|
+
function readMetadataKey(key) {
|
|
145
|
+
switch (typeof key) {
|
|
146
|
+
case 'number':
|
|
147
|
+
return {
|
|
148
|
+
kind: 'number',
|
|
149
|
+
value: String(key),
|
|
150
|
+
};
|
|
151
|
+
case 'string':
|
|
152
|
+
return {
|
|
153
|
+
kind: 'string',
|
|
154
|
+
value: key,
|
|
155
|
+
};
|
|
156
|
+
case 'symbol':
|
|
157
|
+
return {
|
|
158
|
+
kind: 'symbol',
|
|
159
|
+
value: key.toString(),
|
|
160
|
+
};
|
|
161
|
+
default:
|
|
162
|
+
throw new Error(`Unexpected ${typeof key} metadata key.`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function readOptionalMetadataKey(key) {
|
|
166
|
+
if (key === undefined) {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
return readMetadataKey(key);
|
|
170
|
+
}
|
|
171
|
+
function readPropertyKey(key) {
|
|
172
|
+
if (typeof key === 'string') {
|
|
173
|
+
return {
|
|
174
|
+
kind: 'string',
|
|
175
|
+
value: key,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
kind: 'symbol',
|
|
180
|
+
value: key.toString(),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
function readServiceIdentifier(serviceIdentifier) {
|
|
184
|
+
switch (typeof serviceIdentifier) {
|
|
185
|
+
case 'function':
|
|
186
|
+
return {
|
|
187
|
+
kind: 'class',
|
|
188
|
+
value: readFunctionName(serviceIdentifier),
|
|
189
|
+
};
|
|
190
|
+
case 'string':
|
|
191
|
+
return {
|
|
192
|
+
kind: 'string',
|
|
193
|
+
value: serviceIdentifier,
|
|
194
|
+
};
|
|
195
|
+
case 'symbol':
|
|
196
|
+
return {
|
|
197
|
+
kind: 'symbol',
|
|
198
|
+
value: serviceIdentifier.toString(),
|
|
199
|
+
};
|
|
200
|
+
default:
|
|
201
|
+
throw new Error(`Unexpected ${typeof serviceIdentifier} service identifier.`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function readTags(tags) {
|
|
205
|
+
const planTags = [];
|
|
206
|
+
for (const [key, value] of tags) {
|
|
207
|
+
planTags.push({
|
|
208
|
+
key: readMetadataKey(key),
|
|
209
|
+
value: toPlanJsonValue(value),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return planTags;
|
|
213
|
+
}
|
|
214
|
+
function readJson(value, seen) {
|
|
215
|
+
if (value === undefined || value === null) {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
switch (typeof value) {
|
|
219
|
+
case 'bigint':
|
|
220
|
+
return value.toString();
|
|
221
|
+
case 'boolean':
|
|
222
|
+
case 'string':
|
|
223
|
+
return value;
|
|
224
|
+
case 'function':
|
|
225
|
+
case 'symbol':
|
|
226
|
+
return null;
|
|
227
|
+
case 'number':
|
|
228
|
+
return Number.isFinite(value) ? value : null;
|
|
229
|
+
case 'object':
|
|
230
|
+
return readJsonObject(value, seen);
|
|
231
|
+
default:
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function readJsonError(error) {
|
|
236
|
+
const json = {
|
|
237
|
+
message: error.message,
|
|
238
|
+
name: error.name,
|
|
239
|
+
};
|
|
240
|
+
if (typeof error.stack === 'string') {
|
|
241
|
+
json['stack'] = error.stack;
|
|
242
|
+
}
|
|
243
|
+
return json;
|
|
244
|
+
}
|
|
245
|
+
function readJsonObject(value, seen) {
|
|
246
|
+
if (seen.has(value)) {
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
seen.add(value);
|
|
250
|
+
if (value instanceof Date) {
|
|
251
|
+
return value.toISOString();
|
|
252
|
+
}
|
|
253
|
+
if (value instanceof Error) {
|
|
254
|
+
return readJsonError(value);
|
|
255
|
+
}
|
|
256
|
+
if (Array.isArray(value)) {
|
|
257
|
+
return value.map((item) => readJson(item, seen));
|
|
258
|
+
}
|
|
259
|
+
const json = {};
|
|
260
|
+
const record = value;
|
|
261
|
+
for (const [key, entry] of Object.entries(record)) {
|
|
262
|
+
json[key] = readJson(entry, seen);
|
|
263
|
+
}
|
|
264
|
+
return json;
|
|
265
|
+
}
|
|
266
|
+
function toPlanJsonValue(value) {
|
|
267
|
+
return readJson(value, new WeakSet());
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=buildHttpInsightsPlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildHttpInsightsPlan.js","sourceRoot":"","sources":["../../../../../src/instrumentation/adapter/inversify/calculations/buildHttpInsightsPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ContainerModule } from 'inversify';
|
|
1
|
+
import { type Container, ContainerModule } from 'inversify';
|
|
2
2
|
import { type HttpInsightsProviderOptions } from '../../../../insights/adapter/inversify/models/HttpInsightsProviderOptions.js';
|
|
3
3
|
export declare class InstrumentationContainerModule extends ContainerModule {
|
|
4
|
-
constructor(insightsOptions?: HttpInsightsProviderOptions);
|
|
4
|
+
constructor(container: Container, insightsOptions?: HttpInsightsProviderOptions);
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=InstrumentationContainerModule.d.ts.map
|
package/lib/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstrumentationContainerModule.d.ts","sourceRoot":"","sources":["../../../../../src/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"InstrumentationContainerModule.d.ts","sourceRoot":"","sources":["../../../../../src/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,eAAe,EAEhB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,8EAA8E,CAAC;AAKhI,qBAAa,8BAA+B,SAAQ,eAAe;IACjE,YACE,SAAS,EAAE,SAAS,EACpB,eAAe,CAAC,EAAE,2BAA2B,EAoB9C;CACF"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { ContainerModule } from 'inversify';
|
|
1
|
+
import { ContainerModule, } from 'inversify';
|
|
2
2
|
import { CallManagementInputPort } from '../../../../insights/application/ports/CallManagementInputPort.js';
|
|
3
3
|
import { ErrorTracesService } from '../../../../insights/application/services/ErrorTracesService.js';
|
|
4
4
|
import { HttpInsightsEventSink } from '../services/HttpInsightsEventSink.js';
|
|
5
5
|
export class InstrumentationContainerModule extends ContainerModule {
|
|
6
|
-
constructor(insightsOptions) {
|
|
6
|
+
constructor(container, insightsOptions) {
|
|
7
7
|
super((options) => {
|
|
8
8
|
options
|
|
9
9
|
.bind(HttpInsightsEventSink)
|
|
10
|
-
.toResolvedValue((callManagementInputPort, errorTracesService) => new HttpInsightsEventSink(callManagementInputPort, errorTracesService, insightsOptions), [CallManagementInputPort, ErrorTracesService])
|
|
10
|
+
.toResolvedValue((callManagementInputPort, errorTracesService) => new HttpInsightsEventSink(callManagementInputPort, container, errorTracesService, insightsOptions), [CallManagementInputPort, ErrorTracesService])
|
|
11
11
|
.inSingletonScope();
|
|
12
12
|
});
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstrumentationContainerModule.js","sourceRoot":"","sources":["../../../../../src/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"InstrumentationContainerModule.js","sourceRoot":"","sources":["../../../../../src/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAEhB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mEAAmE,CAAC;AAC5G,OAAO,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,MAAM,OAAO,8BAA+B,SAAQ,eAAe;IACjE,YACE,SAAoB,EACpB,eAA6C;QAE7C,KAAK,CAAC,CAAC,OAAmC,EAAE,EAAE;YAC5C,OAAO;iBACJ,IAAI,CAAC,qBAAqB,CAAC;iBAC3B,eAAe,CACd,CACE,uBAAgD,EAChD,kBAAsC,EACf,EAAE,CACzB,IAAI,qBAAqB,CACvB,uBAAuB,EACvB,SAAS,EACT,kBAAkB,EAClB,eAAe,CAChB,EACH,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAC9C;iBACA,gBAAgB,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type EventSink, type HttpInstrumentationEvent } from '@inversifyjs/http-instrumentation-core';
|
|
2
|
+
import { type Container } from 'inversify';
|
|
2
3
|
import { type HttpInsightsProviderOptions } from '../../../../insights/adapter/inversify/models/HttpInsightsProviderOptions.js';
|
|
3
4
|
import { type CallManagementInputPort } from '../../../../insights/application/ports/CallManagementInputPort.js';
|
|
4
5
|
import { type ErrorTracesService } from '../../../../insights/application/services/ErrorTracesService.js';
|
|
@@ -7,7 +8,7 @@ export declare const MAX_COMMITTED_CALLS: number;
|
|
|
7
8
|
export declare const RETENTION_SWEEP_INTERVAL_MS: number;
|
|
8
9
|
export declare class HttpInsightsEventSink implements EventSink<HttpInstrumentationEvent> {
|
|
9
10
|
#private;
|
|
10
|
-
constructor(callManagementInputPort: CallManagementInputPort, errorTracesService: ErrorTracesService, options?: HttpInsightsProviderOptions);
|
|
11
|
+
constructor(callManagementInputPort: CallManagementInputPort, container: Container, errorTracesService: ErrorTracesService, options?: HttpInsightsProviderOptions);
|
|
11
12
|
emit(event: HttpInstrumentationEvent): Promise<void>;
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=HttpInsightsEventSink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpInsightsEventSink.d.ts","sourceRoot":"","sources":["../../../../../src/instrumentation/adapter/inversify/services/HttpInsightsEventSink.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,SAAS,EAId,KAAK,wBAAwB,EAO9B,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpInsightsEventSink.d.ts","sourceRoot":"","sources":["../../../../../src/instrumentation/adapter/inversify/services/HttpInsightsEventSink.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,SAAS,EAId,KAAK,wBAAwB,EAO9B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,KAAK,SAAS,EAA0B,MAAM,WAAW,CAAC;AAEnE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,8EAA8E,CAAC;AAEhI,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,mEAAmE,CAAC;AACjH,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAc1G,eAAO,MAAM,iBAAiB,EAAE,MAAe,CAAC;AAChD,eAAO,MAAM,mBAAmB,EAAE,MAAe,CAAC;AAClD,eAAO,MAAM,2BAA2B,EAAE,MAAc,CAAC;AAoBzD,qBAAa,qBAAsB,YAAW,SAAS,CAAC,wBAAwB,CAAC;;IAW/E,YACE,uBAAuB,EAAE,uBAAuB,EAChD,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,CAAC,EAAE,2BAA2B,EAOtC;IAEY,IAAI,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EhE;CAygBF"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { buildHttpInsightsPlan } from '../calculations/buildHttpInsightsPlan.js';
|
|
2
3
|
import { buildHttpInsightsUrlPattern } from '../calculations/buildHttpInsightsUrlPattern.js';
|
|
3
4
|
export const CALL_RETENTION_MS = 60_000;
|
|
4
5
|
export const MAX_COMMITTED_CALLS = 10_000;
|
|
5
6
|
export const RETENTION_SWEEP_INTERVAL_MS = 5_000;
|
|
6
7
|
export class HttpInsightsEventSink {
|
|
7
8
|
#committedByRequestId = new Map();
|
|
9
|
+
#container;
|
|
8
10
|
#callManagementInputPort;
|
|
9
11
|
#errorTracesService;
|
|
10
12
|
#excludedByRequestId = new Map();
|
|
@@ -12,8 +14,9 @@ export class HttpInsightsEventSink {
|
|
|
12
14
|
#pendingByRequestId = new Map();
|
|
13
15
|
#sweepTimer;
|
|
14
16
|
#urlPattern;
|
|
15
|
-
constructor(callManagementInputPort, errorTracesService, options) {
|
|
17
|
+
constructor(callManagementInputPort, container, errorTracesService, options) {
|
|
16
18
|
this.#callManagementInputPort = callManagementInputPort;
|
|
19
|
+
this.#container = container;
|
|
17
20
|
this.#errorTracesService = errorTracesService;
|
|
18
21
|
this.#sweepTimer = undefined;
|
|
19
22
|
this.#urlPattern = buildHttpInsightsUrlPattern(options);
|
|
@@ -37,26 +40,44 @@ export class HttpInsightsEventSink {
|
|
|
37
40
|
return;
|
|
38
41
|
}
|
|
39
42
|
const pending = this.#readPending(event.requestId);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
43
|
+
switch (event.type) {
|
|
44
|
+
case 'http.response.sent':
|
|
45
|
+
pending.response = event;
|
|
46
|
+
break;
|
|
47
|
+
case 'http.controller.started':
|
|
48
|
+
case 'http.guard.started':
|
|
49
|
+
case 'http.interceptor.started':
|
|
50
|
+
case 'http.middleware.started':
|
|
51
|
+
pending.openStages += 1;
|
|
52
|
+
pending.plans.set(event.executionId, this.#inspectPlan(event.service.id));
|
|
53
|
+
return;
|
|
54
|
+
case 'http.pipe.started':
|
|
55
|
+
pending.openStages += 1;
|
|
56
|
+
if (event.service !== undefined) {
|
|
57
|
+
pending.plans.set(event.executionId, this.#inspectPlan(event.service.id));
|
|
58
|
+
}
|
|
59
|
+
return;
|
|
60
|
+
case 'http.nativeMiddleware.started':
|
|
61
|
+
pending.openStages += 1;
|
|
62
|
+
return;
|
|
63
|
+
case 'http.controller.executed':
|
|
64
|
+
case 'http.guard.executed':
|
|
65
|
+
case 'http.interceptor.executed':
|
|
66
|
+
case 'http.middleware.executed':
|
|
67
|
+
case 'http.nativeMiddleware.executed':
|
|
68
|
+
case 'http.pipe.executed':
|
|
69
|
+
pending.events.push(event);
|
|
70
|
+
pending.openStages -= 1;
|
|
71
|
+
break;
|
|
72
|
+
case 'http.request.started':
|
|
73
|
+
pending.events.push(event);
|
|
74
|
+
break;
|
|
75
|
+
default:
|
|
76
|
+
return;
|
|
56
77
|
}
|
|
57
78
|
await this.#persistIfComplete(event.requestId, pending);
|
|
58
79
|
}
|
|
59
|
-
#buildController(event) {
|
|
80
|
+
#buildController(event, plans) {
|
|
60
81
|
return {
|
|
61
82
|
controller: event.controller,
|
|
62
83
|
endedAt: new Date(event.timestamp),
|
|
@@ -64,10 +85,11 @@ export class HttpInsightsEventSink {
|
|
|
64
85
|
errorTraces: null,
|
|
65
86
|
id: randomUUID(),
|
|
66
87
|
method: event.method,
|
|
88
|
+
plan: this.#readPlan(plans, event.executionId),
|
|
67
89
|
startedAt: new Date(event.startedAt),
|
|
68
90
|
};
|
|
69
91
|
}
|
|
70
|
-
#buildCall(events, responseEvent) {
|
|
92
|
+
#buildCall(events, plans, responseEvent) {
|
|
71
93
|
const requestStarted = events.find((event) => event.type === 'http.request.started');
|
|
72
94
|
if (requestStarted === undefined) {
|
|
73
95
|
throw new Error(`Cannot persist call "${responseEvent.executionId}" without an http.request.started event.`);
|
|
@@ -82,25 +104,25 @@ export class HttpInsightsEventSink {
|
|
|
82
104
|
for (const event of events) {
|
|
83
105
|
switch (event.type) {
|
|
84
106
|
case 'http.controller.executed':
|
|
85
|
-
controller = this.#buildController(event);
|
|
107
|
+
controller = this.#buildController(event, plans);
|
|
86
108
|
break;
|
|
87
109
|
case 'http.error':
|
|
88
110
|
httpErrors.push(this.#buildHttpError(event));
|
|
89
111
|
break;
|
|
90
112
|
case 'http.guard.executed':
|
|
91
|
-
guards.push(this.#buildGuard(event));
|
|
113
|
+
guards.push(this.#buildGuard(event, plans));
|
|
92
114
|
break;
|
|
93
115
|
case 'http.interceptor.executed':
|
|
94
|
-
interceptors.push(this.#buildInterceptor(event));
|
|
116
|
+
interceptors.push(this.#buildInterceptor(event, plans));
|
|
95
117
|
break;
|
|
96
118
|
case 'http.middleware.executed':
|
|
97
|
-
middlewares.push(this.#buildMiddleware(event));
|
|
119
|
+
middlewares.push(this.#buildMiddleware(event, plans));
|
|
98
120
|
break;
|
|
99
121
|
case 'http.nativeMiddleware.executed':
|
|
100
122
|
nativeMiddlewares.push(this.#buildNativeMiddleware(event));
|
|
101
123
|
break;
|
|
102
124
|
case 'http.pipe.executed':
|
|
103
|
-
pipes.push(this.#buildPipe(event));
|
|
125
|
+
pipes.push(this.#buildPipe(event, plans));
|
|
104
126
|
break;
|
|
105
127
|
default:
|
|
106
128
|
break;
|
|
@@ -125,7 +147,7 @@ export class HttpInsightsEventSink {
|
|
|
125
147
|
response: this.#buildResponse(responseEvent),
|
|
126
148
|
};
|
|
127
149
|
}
|
|
128
|
-
#buildGuard(event) {
|
|
150
|
+
#buildGuard(event, plans) {
|
|
129
151
|
return {
|
|
130
152
|
allowed: event.allowed ?? null,
|
|
131
153
|
endedAt: new Date(event.timestamp),
|
|
@@ -133,6 +155,7 @@ export class HttpInsightsEventSink {
|
|
|
133
155
|
errorTraces: null,
|
|
134
156
|
guard: event.guard,
|
|
135
157
|
id: randomUUID(),
|
|
158
|
+
plan: this.#readPlan(plans, event.executionId),
|
|
136
159
|
startedAt: new Date(event.startedAt),
|
|
137
160
|
};
|
|
138
161
|
}
|
|
@@ -146,17 +169,18 @@ export class HttpInsightsEventSink {
|
|
|
146
169
|
startedAt: new Date(event.startedAt),
|
|
147
170
|
};
|
|
148
171
|
}
|
|
149
|
-
#buildInterceptor(event) {
|
|
172
|
+
#buildInterceptor(event, plans) {
|
|
150
173
|
return {
|
|
151
174
|
endedAt: new Date(event.timestamp),
|
|
152
175
|
error: this.#readOptionalError(event),
|
|
153
176
|
errorTraces: null,
|
|
154
177
|
id: randomUUID(),
|
|
155
178
|
interceptor: event.interceptor,
|
|
179
|
+
plan: this.#readPlan(plans, event.executionId),
|
|
156
180
|
startedAt: new Date(event.startedAt),
|
|
157
181
|
};
|
|
158
182
|
}
|
|
159
|
-
#buildMiddleware(event) {
|
|
183
|
+
#buildMiddleware(event, plans) {
|
|
160
184
|
return {
|
|
161
185
|
endedAt: new Date(event.timestamp),
|
|
162
186
|
error: this.#readOptionalError(event),
|
|
@@ -164,6 +188,7 @@ export class HttpInsightsEventSink {
|
|
|
164
188
|
id: randomUUID(),
|
|
165
189
|
middleware: event.middleware,
|
|
166
190
|
phase: event.phase,
|
|
191
|
+
plan: this.#readPlan(plans, event.executionId),
|
|
167
192
|
startedAt: new Date(event.startedAt),
|
|
168
193
|
};
|
|
169
194
|
}
|
|
@@ -177,7 +202,7 @@ export class HttpInsightsEventSink {
|
|
|
177
202
|
startedAt: new Date(event.startedAt),
|
|
178
203
|
};
|
|
179
204
|
}
|
|
180
|
-
#buildPipe(event) {
|
|
205
|
+
#buildPipe(event, plans) {
|
|
181
206
|
return {
|
|
182
207
|
endedAt: new Date(event.timestamp),
|
|
183
208
|
error: this.#readOptionalError(event),
|
|
@@ -186,6 +211,7 @@ export class HttpInsightsEventSink {
|
|
|
186
211
|
method: event.method,
|
|
187
212
|
parameterIndex: event.parameterIndex,
|
|
188
213
|
pipe: event.pipe,
|
|
214
|
+
plan: this.#readPlan(plans, event.executionId),
|
|
189
215
|
startedAt: new Date(event.startedAt),
|
|
190
216
|
};
|
|
191
217
|
}
|
|
@@ -198,32 +224,6 @@ export class HttpInsightsEventSink {
|
|
|
198
224
|
statusCode: event.statusCode,
|
|
199
225
|
};
|
|
200
226
|
}
|
|
201
|
-
#isStageExecuted(event) {
|
|
202
|
-
switch (event.type) {
|
|
203
|
-
case 'http.controller.executed':
|
|
204
|
-
case 'http.guard.executed':
|
|
205
|
-
case 'http.interceptor.executed':
|
|
206
|
-
case 'http.middleware.executed':
|
|
207
|
-
case 'http.nativeMiddleware.executed':
|
|
208
|
-
case 'http.pipe.executed':
|
|
209
|
-
return true;
|
|
210
|
-
default:
|
|
211
|
-
return false;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
#isStageStarted(event) {
|
|
215
|
-
switch (event.type) {
|
|
216
|
-
case 'http.controller.started':
|
|
217
|
-
case 'http.guard.started':
|
|
218
|
-
case 'http.interceptor.started':
|
|
219
|
-
case 'http.middleware.started':
|
|
220
|
-
case 'http.nativeMiddleware.started':
|
|
221
|
-
case 'http.pipe.started':
|
|
222
|
-
return true;
|
|
223
|
-
default:
|
|
224
|
-
return false;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
227
|
async #drainErrors(errors, callId) {
|
|
228
228
|
while (errors.length > 0) {
|
|
229
229
|
const batch = errors.splice(0, errors.length);
|
|
@@ -355,7 +355,7 @@ export class HttpInsightsEventSink {
|
|
|
355
355
|
const response = pending.response;
|
|
356
356
|
let call;
|
|
357
357
|
try {
|
|
358
|
-
call = this.#buildCall(pending.events.slice(), response);
|
|
358
|
+
call = this.#buildCall(pending.events.slice(), pending.plans, response);
|
|
359
359
|
}
|
|
360
360
|
catch (error) {
|
|
361
361
|
this.#pendingByRequestId.delete(requestId);
|
|
@@ -423,6 +423,19 @@ export class HttpInsightsEventSink {
|
|
|
423
423
|
this.#excludedByRequestId.set(requestId, Date.now() + CALL_RETENTION_MS);
|
|
424
424
|
this.#armRetentionSweep();
|
|
425
425
|
}
|
|
426
|
+
#inspectPlan(serviceIdentifier) {
|
|
427
|
+
try {
|
|
428
|
+
return buildHttpInsightsPlan(this.#container.inspectCurrentPlan(serviceIdentifier), randomUUID);
|
|
429
|
+
}
|
|
430
|
+
catch (error) {
|
|
431
|
+
// An unbound instance such as `new Pipe()` has no plan.
|
|
432
|
+
void error;
|
|
433
|
+
return null;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
#readPlan(plans, executionId) {
|
|
437
|
+
return plans.get(executionId) ?? null;
|
|
438
|
+
}
|
|
426
439
|
#readOptionalError(event) {
|
|
427
440
|
if ('error' in event) {
|
|
428
441
|
return event.error;
|
|
@@ -438,6 +451,7 @@ export class HttpInsightsEventSink {
|
|
|
438
451
|
events: [],
|
|
439
452
|
expiresAt: Date.now() + CALL_RETENTION_MS,
|
|
440
453
|
openStages: 0,
|
|
454
|
+
plans: new Map(),
|
|
441
455
|
response: undefined,
|
|
442
456
|
};
|
|
443
457
|
this.#pendingByRequestId.set(requestId, created);
|