@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.
Files changed (166) hide show
  1. package/lib/generated/prisma/browser.d.ts +30 -0
  2. package/lib/generated/prisma/browser.d.ts.map +1 -1
  3. package/lib/generated/prisma/client.d.ts +30 -0
  4. package/lib/generated/prisma/client.d.ts.map +1 -1
  5. package/lib/generated/prisma/commonInputTypes.d.ts +81 -0
  6. package/lib/generated/prisma/commonInputTypes.d.ts.map +1 -1
  7. package/lib/generated/prisma/enums.d.ts +9 -1
  8. package/lib/generated/prisma/enums.d.ts.map +1 -1
  9. package/lib/generated/prisma/enums.js +8 -1
  10. package/lib/generated/prisma/enums.js.map +1 -1
  11. package/lib/generated/prisma/internal/class.d.ts +66 -0
  12. package/lib/generated/prisma/internal/class.d.ts.map +1 -1
  13. package/lib/generated/prisma/internal/class.js +4 -4
  14. package/lib/generated/prisma/internal/class.js.map +1 -1
  15. package/lib/generated/prisma/internal/prismaNamespace.d.ts +533 -1
  16. package/lib/generated/prisma/internal/prismaNamespace.d.ts.map +1 -1
  17. package/lib/generated/prisma/internal/prismaNamespace.js +73 -1
  18. package/lib/generated/prisma/internal/prismaNamespace.js.map +1 -1
  19. package/lib/generated/prisma/internal/prismaNamespaceBrowser.d.ts +78 -0
  20. package/lib/generated/prisma/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  21. package/lib/generated/prisma/internal/prismaNamespaceBrowser.js +73 -1
  22. package/lib/generated/prisma/internal/prismaNamespaceBrowser.js.map +1 -1
  23. package/lib/generated/prisma/models/Controller.d.ts +108 -0
  24. package/lib/generated/prisma/models/Controller.d.ts.map +1 -1
  25. package/lib/generated/prisma/models/Guard.d.ts +112 -0
  26. package/lib/generated/prisma/models/Guard.d.ts.map +1 -1
  27. package/lib/generated/prisma/models/Interceptor.d.ts +108 -0
  28. package/lib/generated/prisma/models/Interceptor.d.ts.map +1 -1
  29. package/lib/generated/prisma/models/Middleware.d.ts +112 -0
  30. package/lib/generated/prisma/models/Middleware.d.ts.map +1 -1
  31. package/lib/generated/prisma/models/Pipe.d.ts +116 -0
  32. package/lib/generated/prisma/models/Pipe.d.ts.map +1 -1
  33. package/lib/generated/prisma/models/Plan.d.ts +1948 -0
  34. package/lib/generated/prisma/models/Plan.d.ts.map +1 -0
  35. package/lib/generated/prisma/models/Plan.js +2 -0
  36. package/lib/generated/prisma/models/Plan.js.map +1 -0
  37. package/lib/generated/prisma/models/PlanBinding.d.ts +1843 -0
  38. package/lib/generated/prisma/models/PlanBinding.d.ts.map +1 -0
  39. package/lib/generated/prisma/models/PlanBinding.js +2 -0
  40. package/lib/generated/prisma/models/PlanBinding.js.map +1 -0
  41. package/lib/generated/prisma/models/PlanBindingDependency.d.ts +1503 -0
  42. package/lib/generated/prisma/models/PlanBindingDependency.d.ts.map +1 -0
  43. package/lib/generated/prisma/models/PlanBindingDependency.js +2 -0
  44. package/lib/generated/prisma/models/PlanBindingDependency.js.map +1 -0
  45. package/lib/generated/prisma/models/PlanService.d.ts +1851 -0
  46. package/lib/generated/prisma/models/PlanService.d.ts.map +1 -0
  47. package/lib/generated/prisma/models/PlanService.js +2 -0
  48. package/lib/generated/prisma/models/PlanService.js.map +1 -0
  49. package/lib/generated/prisma/models/PlanServiceBinding.d.ts +1238 -0
  50. package/lib/generated/prisma/models/PlanServiceBinding.d.ts.map +1 -0
  51. package/lib/generated/prisma/models/PlanServiceBinding.js +2 -0
  52. package/lib/generated/prisma/models/PlanServiceBinding.js.map +1 -0
  53. package/lib/generated/prisma/models/PlanServiceTag.d.ts +1315 -0
  54. package/lib/generated/prisma/models/PlanServiceTag.d.ts.map +1 -0
  55. package/lib/generated/prisma/models/PlanServiceTag.js +2 -0
  56. package/lib/generated/prisma/models/PlanServiceTag.js.map +1 -0
  57. package/lib/generated/prisma/models.d.ts +6 -0
  58. package/lib/generated/prisma/models.d.ts.map +1 -1
  59. package/lib/generated/prisma-migrate/index.d.ts.map +1 -1
  60. package/lib/generated/prisma-migrate/index.js +1 -1
  61. package/lib/generated/prisma-migrate/index.js.map +1 -1
  62. package/lib/insights/adapter/inversify/modules/InsightsContainerModule.d.ts.map +1 -1
  63. package/lib/insights/adapter/inversify/modules/InsightsContainerModule.js +2 -0
  64. package/lib/insights/adapter/inversify/modules/InsightsContainerModule.js.map +1 -1
  65. package/lib/insights/adapter/inversify/services/HttpInsightsProvider.js +1 -1
  66. package/lib/insights/adapter/inversify/services/HttpInsightsProvider.js.map +1 -1
  67. package/lib/insights/adapter/prisma/adapters/PrismaInsightsPersistenceAdapter.d.ts.map +1 -1
  68. package/lib/insights/adapter/prisma/adapters/PrismaInsightsPersistenceAdapter.js +94 -0
  69. package/lib/insights/adapter/prisma/adapters/PrismaInsightsPersistenceAdapter.js.map +1 -1
  70. package/lib/insights/adapter/prisma/builders/CallFromPrismaCallBuilder.d.ts +167 -1
  71. package/lib/insights/adapter/prisma/builders/CallFromPrismaCallBuilder.d.ts.map +1 -1
  72. package/lib/insights/adapter/prisma/builders/CallFromPrismaCallBuilder.js +9 -5
  73. package/lib/insights/adapter/prisma/builders/CallFromPrismaCallBuilder.js.map +1 -1
  74. package/lib/insights/adapter/prisma/builders/ControllerFromPrismaControllerBuilder.d.ts +5 -4
  75. package/lib/insights/adapter/prisma/builders/ControllerFromPrismaControllerBuilder.d.ts.map +1 -1
  76. package/lib/insights/adapter/prisma/builders/ControllerFromPrismaControllerBuilder.js +14 -2
  77. package/lib/insights/adapter/prisma/builders/ControllerFromPrismaControllerBuilder.js.map +1 -1
  78. package/lib/insights/adapter/prisma/builders/GuardFromPrismaGuardBuilder.d.ts +5 -4
  79. package/lib/insights/adapter/prisma/builders/GuardFromPrismaGuardBuilder.d.ts.map +1 -1
  80. package/lib/insights/adapter/prisma/builders/GuardFromPrismaGuardBuilder.js +14 -2
  81. package/lib/insights/adapter/prisma/builders/GuardFromPrismaGuardBuilder.js.map +1 -1
  82. package/lib/insights/adapter/prisma/builders/InterceptorFromPrismaInterceptorBuilder.d.ts +5 -4
  83. package/lib/insights/adapter/prisma/builders/InterceptorFromPrismaInterceptorBuilder.d.ts.map +1 -1
  84. package/lib/insights/adapter/prisma/builders/InterceptorFromPrismaInterceptorBuilder.js +14 -2
  85. package/lib/insights/adapter/prisma/builders/InterceptorFromPrismaInterceptorBuilder.js.map +1 -1
  86. package/lib/insights/adapter/prisma/builders/MiddlewareFromPrismaMiddlewareBuilder.d.ts +5 -4
  87. package/lib/insights/adapter/prisma/builders/MiddlewareFromPrismaMiddlewareBuilder.d.ts.map +1 -1
  88. package/lib/insights/adapter/prisma/builders/MiddlewareFromPrismaMiddlewareBuilder.js +14 -2
  89. package/lib/insights/adapter/prisma/builders/MiddlewareFromPrismaMiddlewareBuilder.js.map +1 -1
  90. package/lib/insights/adapter/prisma/builders/PipeFromPrismaPipeBuilder.d.ts +5 -4
  91. package/lib/insights/adapter/prisma/builders/PipeFromPrismaPipeBuilder.d.ts.map +1 -1
  92. package/lib/insights/adapter/prisma/builders/PipeFromPrismaPipeBuilder.js +14 -2
  93. package/lib/insights/adapter/prisma/builders/PipeFromPrismaPipeBuilder.js.map +1 -1
  94. package/lib/insights/adapter/prisma/builders/PlanFromPrismaPlanBuilder.d.ts +7 -0
  95. package/lib/insights/adapter/prisma/builders/PlanFromPrismaPlanBuilder.d.ts.map +1 -0
  96. package/lib/insights/adapter/prisma/builders/PlanFromPrismaPlanBuilder.js +359 -0
  97. package/lib/insights/adapter/prisma/builders/PlanFromPrismaPlanBuilder.js.map +1 -0
  98. package/lib/insights/adapter/prisma/builders/prismaPlanInclude.d.ts +83 -0
  99. package/lib/insights/adapter/prisma/builders/prismaPlanInclude.d.ts.map +1 -0
  100. package/lib/insights/adapter/prisma/builders/prismaPlanInclude.js +25 -0
  101. package/lib/insights/adapter/prisma/builders/prismaPlanInclude.js.map +1 -0
  102. package/lib/insights/adapter/prisma/calculations/readPlanRows.d.ts +19 -0
  103. package/lib/insights/adapter/prisma/calculations/readPlanRows.d.ts.map +1 -0
  104. package/lib/insights/adapter/prisma/calculations/readPlanRows.js +160 -0
  105. package/lib/insights/adapter/prisma/calculations/readPlanRows.js.map +1 -0
  106. package/lib/insights/domain/calculations/definePlanJson.d.ts +3 -0
  107. package/lib/insights/domain/calculations/definePlanJson.d.ts.map +1 -0
  108. package/lib/insights/domain/calculations/definePlanJson.js +88 -0
  109. package/lib/insights/domain/calculations/definePlanJson.js.map +1 -0
  110. package/lib/insights/domain/models/Controller.d.ts +2 -0
  111. package/lib/insights/domain/models/Controller.d.ts.map +1 -1
  112. package/lib/insights/domain/models/Guard.d.ts +2 -0
  113. package/lib/insights/domain/models/Guard.d.ts.map +1 -1
  114. package/lib/insights/domain/models/Interceptor.d.ts +2 -0
  115. package/lib/insights/domain/models/Interceptor.d.ts.map +1 -1
  116. package/lib/insights/domain/models/Middleware.d.ts +2 -0
  117. package/lib/insights/domain/models/Middleware.d.ts.map +1 -1
  118. package/lib/insights/domain/models/Pipe.d.ts +2 -0
  119. package/lib/insights/domain/models/Pipe.d.ts.map +1 -1
  120. package/lib/insights/domain/models/Plan.d.ts +6 -0
  121. package/lib/insights/domain/models/Plan.d.ts.map +1 -0
  122. package/lib/insights/domain/models/Plan.js +2 -0
  123. package/lib/insights/domain/models/Plan.js.map +1 -0
  124. package/lib/insights/domain/models/PlanBinding.d.ts +39 -0
  125. package/lib/insights/domain/models/PlanBinding.d.ts.map +1 -0
  126. package/lib/insights/domain/models/PlanBinding.js +15 -0
  127. package/lib/insights/domain/models/PlanBinding.js.map +1 -0
  128. package/lib/insights/domain/models/PlanJsonValue.d.ts +6 -0
  129. package/lib/insights/domain/models/PlanJsonValue.d.ts.map +1 -0
  130. package/lib/insights/domain/models/PlanJsonValue.js +2 -0
  131. package/lib/insights/domain/models/PlanJsonValue.js.map +1 -0
  132. package/lib/insights/domain/models/PlanMetadataKey.d.ts +5 -0
  133. package/lib/insights/domain/models/PlanMetadataKey.d.ts.map +1 -0
  134. package/lib/insights/domain/models/PlanMetadataKey.js +2 -0
  135. package/lib/insights/domain/models/PlanMetadataKey.js.map +1 -0
  136. package/lib/insights/domain/models/PlanProperty.d.ts +7 -0
  137. package/lib/insights/domain/models/PlanProperty.d.ts.map +1 -0
  138. package/lib/insights/domain/models/PlanProperty.js +2 -0
  139. package/lib/insights/domain/models/PlanProperty.js.map +1 -0
  140. package/lib/insights/domain/models/PlanService.d.ts +15 -0
  141. package/lib/insights/domain/models/PlanService.d.ts.map +1 -0
  142. package/lib/insights/domain/models/PlanService.js +2 -0
  143. package/lib/insights/domain/models/PlanService.js.map +1 -0
  144. package/lib/insights/domain/models/PlanServiceIdentifier.d.ts +5 -0
  145. package/lib/insights/domain/models/PlanServiceIdentifier.d.ts.map +1 -0
  146. package/lib/insights/domain/models/PlanServiceIdentifier.js +2 -0
  147. package/lib/insights/domain/models/PlanServiceIdentifier.js.map +1 -0
  148. package/lib/insights/domain/models/PlanTag.d.ts +7 -0
  149. package/lib/insights/domain/models/PlanTag.d.ts.map +1 -0
  150. package/lib/insights/domain/models/PlanTag.js +2 -0
  151. package/lib/insights/domain/models/PlanTag.js.map +1 -0
  152. package/lib/instrumentation/adapter/inversify/calculations/buildHttpInsightsPlan.d.ts +4 -0
  153. package/lib/instrumentation/adapter/inversify/calculations/buildHttpInsightsPlan.d.ts.map +1 -0
  154. package/lib/instrumentation/adapter/inversify/calculations/buildHttpInsightsPlan.js +269 -0
  155. package/lib/instrumentation/adapter/inversify/calculations/buildHttpInsightsPlan.js.map +1 -0
  156. package/lib/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.d.ts +2 -2
  157. package/lib/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.d.ts.map +1 -1
  158. package/lib/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.js +3 -3
  159. package/lib/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.js.map +1 -1
  160. package/lib/instrumentation/adapter/inversify/services/HttpInsightsEventSink.d.ts +2 -1
  161. package/lib/instrumentation/adapter/inversify/services/HttpInsightsEventSink.d.ts.map +1 -1
  162. package/lib/instrumentation/adapter/inversify/services/HttpInsightsEventSink.js +69 -55
  163. package/lib/instrumentation/adapter/inversify/services/HttpInsightsEventSink.js.map +1 -1
  164. package/package.json +7 -7
  165. package/prisma/migrations/20261108202000_add_plan/migration.sql +124 -0
  166. 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
@@ -1 +1 @@
1
- {"version":3,"file":"InstrumentationContainerModule.d.ts","sourceRoot":"","sources":["../../../../../src/instrumentation/adapter/inversify/modules/InstrumentationContainerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAmC,MAAM,WAAW,CAAC;AAE7E,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,8EAA8E,CAAC;AAKhI,qBAAa,8BAA+B,SAAQ,eAAe;IACjE,YAAY,eAAe,CAAC,EAAE,2BAA2B,EAkBxD;CACF"}
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,EAAE,eAAe,EAAmC,MAAM,WAAW,CAAC;AAG7E,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,YAAY,eAA6C;QACvD,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,kBAAkB,EAClB,eAAe,CAChB,EACH,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAC9C;iBACA,gBAAgB,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
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;AAEhD,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;AAY1G,eAAO,MAAM,iBAAiB,EAAE,MAAe,CAAC;AAChD,eAAO,MAAM,mBAAmB,EAAE,MAAe,CAAC;AAClD,eAAO,MAAM,2BAA2B,EAAE,MAAc,CAAC;AAmBzD,qBAAa,qBAAsB,YAAW,SAAS,CAAC,wBAAwB,CAAC;;IAU/E,YACE,uBAAuB,EAAE,uBAAuB,EAChD,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,CAAC,EAAE,2BAA2B,EAMtC;IAEY,IAAI,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ChE;CA0fF"}
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
- if (event.type === 'http.response.sent') {
41
- pending.response = event;
42
- }
43
- else if (this.#isStageStarted(event)) {
44
- pending.openStages += 1;
45
- return;
46
- }
47
- else if (this.#isStageExecuted(event)) {
48
- pending.events.push(event);
49
- pending.openStages -= 1;
50
- }
51
- else if (event.type === 'http.request.started') {
52
- pending.events.push(event);
53
- }
54
- else {
55
- return;
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);