@superblocksteam/telemetry 2.0.171 → 2.0.173-next.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 (304) hide show
  1. package/dist/browser/console-logging.js +2 -7
  2. package/dist/browser/console-logging.js.map +1 -1
  3. package/dist/browser/early-console-buffer.js +12 -14
  4. package/dist/browser/early-console-buffer.js.map +1 -1
  5. package/dist/browser/index.js +12 -41
  6. package/dist/browser/index.js.map +1 -1
  7. package/dist/browser/init.d.ts +1 -1
  8. package/dist/browser/init.d.ts.map +1 -1
  9. package/dist/browser/init.js +42 -52
  10. package/dist/browser/init.js.map +1 -1
  11. package/dist/browser/instrumentations.js +11 -15
  12. package/dist/browser/instrumentations.js.map +1 -1
  13. package/dist/browser/logs.d.ts +1 -1
  14. package/dist/browser/logs.d.ts.map +1 -1
  15. package/dist/browser/logs.js +11 -18
  16. package/dist/browser/logs.js.map +1 -1
  17. package/dist/browser/metrics.js +9 -12
  18. package/dist/browser/metrics.js.map +1 -1
  19. package/dist/browser/resilient-exporter.d.ts +1 -1
  20. package/dist/browser/resilient-exporter.d.ts.map +1 -1
  21. package/dist/browser/resilient-exporter.js +8 -12
  22. package/dist/browser/resilient-exporter.js.map +1 -1
  23. package/dist/browser/sanitizer.js +2 -6
  24. package/dist/browser/sanitizer.js.map +1 -1
  25. package/dist/browser/traced-socket.js +14 -18
  26. package/dist/browser/traced-socket.js.map +1 -1
  27. package/dist/common/contracts/tier2-traces.js +33 -44
  28. package/dist/common/contracts/tier2-traces.js.map +1 -1
  29. package/dist/common/deployment-type.js +5 -8
  30. package/dist/common/deployment-type.js.map +1 -1
  31. package/dist/common/guardrails.js +26 -38
  32. package/dist/common/guardrails.js.map +1 -1
  33. package/dist/common/index.js +8 -24
  34. package/dist/common/index.js.map +1 -1
  35. package/dist/common/log-sanitizer.js +37 -55
  36. package/dist/common/log-sanitizer.js.map +1 -1
  37. package/dist/common/policy-evaluator.d.ts +1 -1
  38. package/dist/common/policy-evaluator.d.ts.map +1 -1
  39. package/dist/common/policy-evaluator.js +5 -9
  40. package/dist/common/policy-evaluator.js.map +1 -1
  41. package/dist/common/resource.js +18 -25
  42. package/dist/common/resource.js.map +1 -1
  43. package/dist/common/tier-hints.js +12 -22
  44. package/dist/common/tier-hints.js.map +1 -1
  45. package/dist/common/trace-sanitizer.js +6 -10
  46. package/dist/common/trace-sanitizer.js.map +1 -1
  47. package/dist/common/traced-socket-types.js +1 -2
  48. package/dist/common/traced-socket-types.js.map +1 -1
  49. package/dist/index.js +6 -38
  50. package/dist/index.js.map +1 -1
  51. package/dist/lint/forbidden-attributes.js +19 -24
  52. package/dist/lint/forbidden-attributes.js.map +1 -1
  53. package/dist/lint/index.js +1 -8
  54. package/dist/lint/index.js.map +1 -1
  55. package/dist/llmobs/index.js +2 -9
  56. package/dist/llmobs/index.js.map +1 -1
  57. package/dist/llmobs/tier1-exporter.js +6 -12
  58. package/dist/llmobs/tier1-exporter.js.map +1 -1
  59. package/dist/llmobs/tier2-summarizer.js +1 -5
  60. package/dist/llmobs/tier2-summarizer.js.map +1 -1
  61. package/dist/node/dynamic-attribute-processor.js +2 -7
  62. package/dist/node/dynamic-attribute-processor.js.map +1 -1
  63. package/dist/node/exporters/resilient-exporter.d.ts +1 -1
  64. package/dist/node/exporters/resilient-exporter.d.ts.map +1 -1
  65. package/dist/node/exporters/resilient-exporter.js +8 -12
  66. package/dist/node/exporters/resilient-exporter.js.map +1 -1
  67. package/dist/node/index.js +7 -26
  68. package/dist/node/index.js.map +1 -1
  69. package/dist/node/init.d.ts +3 -3
  70. package/dist/node/init.d.ts.map +1 -1
  71. package/dist/node/init.js +66 -72
  72. package/dist/node/init.js.map +1 -1
  73. package/dist/node/local-obs-mode.js +1 -4
  74. package/dist/node/local-obs-mode.js.map +1 -1
  75. package/dist/node/log-processor.d.ts +1 -1
  76. package/dist/node/log-processor.d.ts.map +1 -1
  77. package/dist/node/log-processor.js +47 -55
  78. package/dist/node/log-processor.js.map +1 -1
  79. package/dist/node/metrics-client.js +1 -5
  80. package/dist/node/metrics-client.js.map +1 -1
  81. package/dist/node/safe-logger.js +8 -12
  82. package/dist/node/safe-logger.js.map +1 -1
  83. package/dist/node/sanitizing-processor.d.ts +2 -2
  84. package/dist/node/sanitizing-processor.d.ts.map +1 -1
  85. package/dist/node/sanitizing-processor.js +6 -10
  86. package/dist/node/sanitizing-processor.js.map +1 -1
  87. package/dist/node/service-tracers.js +7 -10
  88. package/dist/node/service-tracers.js.map +1 -1
  89. package/dist/node/traced-socket.d.ts +3 -3
  90. package/dist/node/traced-socket.d.ts.map +1 -1
  91. package/dist/node/traced-socket.js +48 -52
  92. package/dist/node/traced-socket.js.map +1 -1
  93. package/dist/npm-registry/emitter.js +34 -47
  94. package/dist/npm-registry/emitter.js.map +1 -1
  95. package/dist/npm-registry/index.js +3 -19
  96. package/dist/npm-registry/index.js.map +1 -1
  97. package/dist/npm-registry/sanitize.js +16 -27
  98. package/dist/npm-registry/sanitize.js.map +1 -1
  99. package/dist/npm-registry/spans.js +7 -12
  100. package/dist/npm-registry/spans.js.map +1 -1
  101. package/dist/testing/in-memory-exporter.d.ts +1 -1
  102. package/dist/testing/in-memory-exporter.d.ts.map +1 -1
  103. package/dist/testing/in-memory-exporter.js +6 -12
  104. package/dist/testing/in-memory-exporter.js.map +1 -1
  105. package/dist/testing/index.js +3 -15
  106. package/dist/testing/index.js.map +1 -1
  107. package/dist/testing/metrics-capture.js +12 -15
  108. package/dist/testing/metrics-capture.js.map +1 -1
  109. package/dist/testing/test-init.js +24 -31
  110. package/dist/testing/test-init.js.map +1 -1
  111. package/dist/types/index.js +1 -17
  112. package/dist/types/index.js.map +1 -1
  113. package/dist/types/policy.js +21 -24
  114. package/dist/types/policy.js.map +1 -1
  115. package/package.json +11 -17
  116. package/dist-esm/browser/console-logging.d.ts +0 -18
  117. package/dist-esm/browser/console-logging.d.ts.map +0 -1
  118. package/dist-esm/browser/console-logging.js +0 -27
  119. package/dist-esm/browser/console-logging.js.map +0 -1
  120. package/dist-esm/browser/early-console-buffer.d.ts +0 -49
  121. package/dist-esm/browser/early-console-buffer.d.ts.map +0 -1
  122. package/dist-esm/browser/early-console-buffer.js +0 -181
  123. package/dist-esm/browser/early-console-buffer.js.map +0 -1
  124. package/dist-esm/browser/index.d.ts +0 -18
  125. package/dist-esm/browser/index.d.ts.map +0 -1
  126. package/dist-esm/browser/index.js +0 -23
  127. package/dist-esm/browser/index.js.map +0 -1
  128. package/dist-esm/browser/init.d.ts +0 -100
  129. package/dist-esm/browser/init.d.ts.map +0 -1
  130. package/dist-esm/browser/init.js +0 -317
  131. package/dist-esm/browser/init.js.map +0 -1
  132. package/dist-esm/browser/instrumentations.d.ts +0 -67
  133. package/dist-esm/browser/instrumentations.d.ts.map +0 -1
  134. package/dist-esm/browser/instrumentations.js +0 -79
  135. package/dist-esm/browser/instrumentations.js.map +0 -1
  136. package/dist-esm/browser/logs.d.ts +0 -57
  137. package/dist-esm/browser/logs.d.ts.map +0 -1
  138. package/dist-esm/browser/logs.js +0 -80
  139. package/dist-esm/browser/logs.js.map +0 -1
  140. package/dist-esm/browser/metrics.d.ts +0 -29
  141. package/dist-esm/browser/metrics.d.ts.map +0 -1
  142. package/dist-esm/browser/metrics.js +0 -46
  143. package/dist-esm/browser/metrics.js.map +0 -1
  144. package/dist-esm/browser/resilient-exporter.d.ts +0 -43
  145. package/dist-esm/browser/resilient-exporter.d.ts.map +0 -1
  146. package/dist-esm/browser/resilient-exporter.js +0 -84
  147. package/dist-esm/browser/resilient-exporter.js.map +0 -1
  148. package/dist-esm/browser/sanitizer.d.ts +0 -35
  149. package/dist-esm/browser/sanitizer.d.ts.map +0 -1
  150. package/dist-esm/browser/sanitizer.js +0 -207
  151. package/dist-esm/browser/sanitizer.js.map +0 -1
  152. package/dist-esm/browser/traced-socket.d.ts +0 -102
  153. package/dist-esm/browser/traced-socket.d.ts.map +0 -1
  154. package/dist-esm/browser/traced-socket.js +0 -199
  155. package/dist-esm/browser/traced-socket.js.map +0 -1
  156. package/dist-esm/common/contracts/tier2-traces.d.ts +0 -116
  157. package/dist-esm/common/contracts/tier2-traces.d.ts.map +0 -1
  158. package/dist-esm/common/contracts/tier2-traces.js +0 -725
  159. package/dist-esm/common/contracts/tier2-traces.js.map +0 -1
  160. package/dist-esm/common/deployment-type.d.ts +0 -18
  161. package/dist-esm/common/deployment-type.d.ts.map +0 -1
  162. package/dist-esm/common/deployment-type.js +0 -27
  163. package/dist-esm/common/deployment-type.js.map +0 -1
  164. package/dist-esm/common/guardrails.d.ts +0 -132
  165. package/dist-esm/common/guardrails.d.ts.map +0 -1
  166. package/dist-esm/common/guardrails.js +0 -230
  167. package/dist-esm/common/guardrails.js.map +0 -1
  168. package/dist-esm/common/index.d.ts +0 -17
  169. package/dist-esm/common/index.d.ts.map +0 -1
  170. package/dist-esm/common/index.js +0 -17
  171. package/dist-esm/common/index.js.map +0 -1
  172. package/dist-esm/common/log-sanitizer.d.ts +0 -163
  173. package/dist-esm/common/log-sanitizer.d.ts.map +0 -1
  174. package/dist-esm/common/log-sanitizer.js +0 -745
  175. package/dist-esm/common/log-sanitizer.js.map +0 -1
  176. package/dist-esm/common/policy-evaluator.d.ts +0 -103
  177. package/dist-esm/common/policy-evaluator.d.ts.map +0 -1
  178. package/dist-esm/common/policy-evaluator.js +0 -196
  179. package/dist-esm/common/policy-evaluator.js.map +0 -1
  180. package/dist-esm/common/resource.d.ts +0 -79
  181. package/dist-esm/common/resource.d.ts.map +0 -1
  182. package/dist-esm/common/resource.js +0 -121
  183. package/dist-esm/common/resource.js.map +0 -1
  184. package/dist-esm/common/tier-hints.d.ts +0 -182
  185. package/dist-esm/common/tier-hints.d.ts.map +0 -1
  186. package/dist-esm/common/tier-hints.js +0 -199
  187. package/dist-esm/common/tier-hints.js.map +0 -1
  188. package/dist-esm/common/trace-sanitizer.d.ts +0 -82
  189. package/dist-esm/common/trace-sanitizer.d.ts.map +0 -1
  190. package/dist-esm/common/trace-sanitizer.js +0 -230
  191. package/dist-esm/common/trace-sanitizer.js.map +0 -1
  192. package/dist-esm/common/traced-socket-types.d.ts +0 -43
  193. package/dist-esm/common/traced-socket-types.d.ts.map +0 -1
  194. package/dist-esm/common/traced-socket-types.js +0 -16
  195. package/dist-esm/common/traced-socket-types.js.map +0 -1
  196. package/dist-esm/index.d.ts +0 -45
  197. package/dist-esm/index.d.ts.map +0 -1
  198. package/dist-esm/index.js +0 -56
  199. package/dist-esm/index.js.map +0 -1
  200. package/dist-esm/lint/forbidden-attributes.d.ts +0 -149
  201. package/dist-esm/lint/forbidden-attributes.d.ts.map +0 -1
  202. package/dist-esm/lint/forbidden-attributes.js +0 -210
  203. package/dist-esm/lint/forbidden-attributes.js.map +0 -1
  204. package/dist-esm/lint/index.d.ts +0 -9
  205. package/dist-esm/lint/index.d.ts.map +0 -1
  206. package/dist-esm/lint/index.js +0 -9
  207. package/dist-esm/lint/index.js.map +0 -1
  208. package/dist-esm/llmobs/index.d.ts +0 -22
  209. package/dist-esm/llmobs/index.d.ts.map +0 -1
  210. package/dist-esm/llmobs/index.js +0 -22
  211. package/dist-esm/llmobs/index.js.map +0 -1
  212. package/dist-esm/llmobs/tier1-exporter.d.ts +0 -146
  213. package/dist-esm/llmobs/tier1-exporter.d.ts.map +0 -1
  214. package/dist-esm/llmobs/tier1-exporter.js +0 -193
  215. package/dist-esm/llmobs/tier1-exporter.js.map +0 -1
  216. package/dist-esm/llmobs/tier2-summarizer.d.ts +0 -268
  217. package/dist-esm/llmobs/tier2-summarizer.d.ts.map +0 -1
  218. package/dist-esm/llmobs/tier2-summarizer.js +0 -652
  219. package/dist-esm/llmobs/tier2-summarizer.js.map +0 -1
  220. package/dist-esm/node/dynamic-attribute-processor.d.ts +0 -43
  221. package/dist-esm/node/dynamic-attribute-processor.d.ts.map +0 -1
  222. package/dist-esm/node/dynamic-attribute-processor.js +0 -74
  223. package/dist-esm/node/dynamic-attribute-processor.js.map +0 -1
  224. package/dist-esm/node/exporters/resilient-exporter.d.ts +0 -91
  225. package/dist-esm/node/exporters/resilient-exporter.d.ts.map +0 -1
  226. package/dist-esm/node/exporters/resilient-exporter.js +0 -132
  227. package/dist-esm/node/exporters/resilient-exporter.js.map +0 -1
  228. package/dist-esm/node/index.d.ts +0 -13
  229. package/dist-esm/node/index.d.ts.map +0 -1
  230. package/dist-esm/node/index.js +0 -13
  231. package/dist-esm/node/index.js.map +0 -1
  232. package/dist-esm/node/init.d.ts +0 -97
  233. package/dist-esm/node/init.d.ts.map +0 -1
  234. package/dist-esm/node/init.js +0 -359
  235. package/dist-esm/node/init.js.map +0 -1
  236. package/dist-esm/node/local-obs-mode.d.ts +0 -17
  237. package/dist-esm/node/local-obs-mode.d.ts.map +0 -1
  238. package/dist-esm/node/local-obs-mode.js +0 -19
  239. package/dist-esm/node/local-obs-mode.js.map +0 -1
  240. package/dist-esm/node/log-processor.d.ts +0 -132
  241. package/dist-esm/node/log-processor.d.ts.map +0 -1
  242. package/dist-esm/node/log-processor.js +0 -389
  243. package/dist-esm/node/log-processor.js.map +0 -1
  244. package/dist-esm/node/metrics-client.d.ts +0 -88
  245. package/dist-esm/node/metrics-client.d.ts.map +0 -1
  246. package/dist-esm/node/metrics-client.js +0 -205
  247. package/dist-esm/node/metrics-client.js.map +0 -1
  248. package/dist-esm/node/safe-logger.d.ts +0 -55
  249. package/dist-esm/node/safe-logger.d.ts.map +0 -1
  250. package/dist-esm/node/safe-logger.js +0 -154
  251. package/dist-esm/node/safe-logger.js.map +0 -1
  252. package/dist-esm/node/sanitizing-processor.d.ts +0 -67
  253. package/dist-esm/node/sanitizing-processor.d.ts.map +0 -1
  254. package/dist-esm/node/sanitizing-processor.js +0 -163
  255. package/dist-esm/node/sanitizing-processor.js.map +0 -1
  256. package/dist-esm/node/service-tracers.d.ts +0 -52
  257. package/dist-esm/node/service-tracers.d.ts.map +0 -1
  258. package/dist-esm/node/service-tracers.js +0 -78
  259. package/dist-esm/node/service-tracers.js.map +0 -1
  260. package/dist-esm/node/traced-socket.d.ts +0 -120
  261. package/dist-esm/node/traced-socket.d.ts.map +0 -1
  262. package/dist-esm/node/traced-socket.js +0 -334
  263. package/dist-esm/node/traced-socket.js.map +0 -1
  264. package/dist-esm/npm-registry/emitter.d.ts +0 -330
  265. package/dist-esm/npm-registry/emitter.d.ts.map +0 -1
  266. package/dist-esm/npm-registry/emitter.js +0 -546
  267. package/dist-esm/npm-registry/emitter.js.map +0 -1
  268. package/dist-esm/npm-registry/index.d.ts +0 -12
  269. package/dist-esm/npm-registry/index.d.ts.map +0 -1
  270. package/dist-esm/npm-registry/index.js +0 -12
  271. package/dist-esm/npm-registry/index.js.map +0 -1
  272. package/dist-esm/npm-registry/sanitize.d.ts +0 -174
  273. package/dist-esm/npm-registry/sanitize.d.ts.map +0 -1
  274. package/dist-esm/npm-registry/sanitize.js +0 -331
  275. package/dist-esm/npm-registry/sanitize.js.map +0 -1
  276. package/dist-esm/npm-registry/spans.d.ts +0 -61
  277. package/dist-esm/npm-registry/spans.d.ts.map +0 -1
  278. package/dist-esm/npm-registry/spans.js +0 -86
  279. package/dist-esm/npm-registry/spans.js.map +0 -1
  280. package/dist-esm/package.json +0 -1
  281. package/dist-esm/testing/in-memory-exporter.d.ts +0 -179
  282. package/dist-esm/testing/in-memory-exporter.d.ts.map +0 -1
  283. package/dist-esm/testing/in-memory-exporter.js +0 -250
  284. package/dist-esm/testing/in-memory-exporter.js.map +0 -1
  285. package/dist-esm/testing/index.d.ts +0 -9
  286. package/dist-esm/testing/index.d.ts.map +0 -1
  287. package/dist-esm/testing/index.js +0 -9
  288. package/dist-esm/testing/index.js.map +0 -1
  289. package/dist-esm/testing/metrics-capture.d.ts +0 -29
  290. package/dist-esm/testing/metrics-capture.d.ts.map +0 -1
  291. package/dist-esm/testing/metrics-capture.js +0 -71
  292. package/dist-esm/testing/metrics-capture.js.map +0 -1
  293. package/dist-esm/testing/test-init.d.ts +0 -80
  294. package/dist-esm/testing/test-init.d.ts.map +0 -1
  295. package/dist-esm/testing/test-init.js +0 -137
  296. package/dist-esm/testing/test-init.js.map +0 -1
  297. package/dist-esm/types/index.d.ts +0 -84
  298. package/dist-esm/types/index.d.ts.map +0 -1
  299. package/dist-esm/types/index.js +0 -7
  300. package/dist-esm/types/index.js.map +0 -1
  301. package/dist-esm/types/policy.d.ts +0 -92
  302. package/dist-esm/types/policy.d.ts.map +0 -1
  303. package/dist-esm/types/policy.js +0 -122
  304. package/dist-esm/types/policy.js.map +0 -1
@@ -1,86 +0,0 @@
1
- /**
2
- * NPM Registry Spans (APPS-4378)
3
- *
4
- * OTel-native `startActiveSpan` helpers for the four named npm-registry spans.
5
- * Using the global tracer (`trace.getTracer`) means LLMObs interop is
6
- * automatic: a span started inside an `@llmobs.decorate`'d context becomes a
7
- * child of that task span (shared global tracer provider); outside any LLMObs
8
- * context (server verify, CLI bootstrap) it is a root span.
9
- *
10
- * `org_id` rides on spans (per-trace context), never on a metric label. Raw
11
- * registry hostnames are bucketed via {@link bucketNpmRegistryHost} before
12
- * they reach a span attribute, matching the metric path — the one exception
13
- * is the structured-log path, which keeps the raw host (see
14
- * {@link auditNpmRegistryHost} in ./sanitize).
15
- */
16
- import { SpanStatusCode, trace, } from "@opentelemetry/api";
17
- /** Instrumentation scope for every npm-registry span. */
18
- const TRACER_NAME = "superblocks.npm-registry";
19
- /** The four named spans (APPS-4378). */
20
- export const NPM_REGISTRY_SPAN = {
21
- VERIFY: "npm_registry.verify",
22
- LOOKUP_PACKAGE: "npm_registry.lookup_package",
23
- PREPARE_FOR_PRIVATE_REGISTRY: "npm_registry.prepare_for_private_registry",
24
- SYNC_HOME_NPMRC: "npm_registry.sync_home_npmrc",
25
- };
26
- /**
27
- * Canonical span-attribute keys, shared across the four spans so the
28
- * dimension names never drift between call sites.
29
- */
30
- export const NPM_REGISTRY_SPAN_ATTR = {
31
- ORG_ID: "org_id",
32
- /** Bucketed (`public_npm | private | unknown`) — never the raw host. */
33
- REGISTRY_HOST: "registry_host",
34
- OUTCOME: "outcome",
35
- DURATION_MS: "duration_ms",
36
- /** Richer `NpmRegistryFetchResult.source` for drill-down. */
37
- SOURCE: "source",
38
- REGISTRY_CONFIGURED: "registry_configured",
39
- /** Tri-valued: `true | false | "unknown"`. */
40
- ALLOW_INSTALL_SCRIPTS: "allow_install_scripts",
41
- PACKAGE_NAME_BUCKET: "package_name_bucket",
42
- /** Span-attribute ONLY — raw byte counts are unbounded, never a metric label. */
43
- PACKAGE_UNPACKED_SIZE_BYTES: "package_unpacked_size_bytes",
44
- };
45
- /**
46
- * Start an active npm-registry span over the global tracer, run `fn`, and
47
- * end the span in `finally`. On throw, the error is recorded
48
- * (`span.recordException`) and the span status set to ERROR before the throw
49
- * propagates. `fn` receives the span so it can attach final attributes
50
- * (outcome / duration) once the operation resolves.
51
- */
52
- export async function withNpmRegistrySpan(spanName, initialAttributes, fn) {
53
- const tracer = trace.getTracer(TRACER_NAME);
54
- return tracer.startActiveSpan(spanName, async (span) => {
55
- if (Object.keys(initialAttributes).length > 0) {
56
- span.setAttributes(initialAttributes);
57
- }
58
- try {
59
- return await fn(span);
60
- }
61
- catch (err) {
62
- // `recordException` accepts Error | string; narrow rather than cast.
63
- span.recordException(err instanceof Error ? err : String(err));
64
- span.setStatus({ code: SpanStatusCode.ERROR });
65
- throw err;
66
- }
67
- finally {
68
- span.end();
69
- }
70
- });
71
- }
72
- /**
73
- * Coerce a registry-reported `dist.unpackedSize` to a span-safe value: a
74
- * finite, non-negative number, else `undefined`. A hostile or buggy registry
75
- * cannot smuggle a non-numeric byte count onto the span through this guard.
76
- *
77
- * Callers MUST omit the attribute when this returns `undefined` rather than
78
- * calling `setAttribute(key, undefined)` (some OTel exporters mishandle
79
- * undefined values). The lookup call site guards with `if (size !== undefined)`.
80
- */
81
- export function npmPackageUnpackedSizeBytes(raw) {
82
- return typeof raw === "number" && Number.isFinite(raw) && raw >= 0
83
- ? raw
84
- : undefined;
85
- }
86
- //# sourceMappingURL=spans.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spans.js","sourceRoot":"","sources":["../../src/npm-registry/spans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,cAAc,EACd,KAAK,GACN,MAAM,oBAAoB,CAAC;AAE5B,yDAAyD;AACzD,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAE/C,wCAAwC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,qBAAqB;IAC7B,cAAc,EAAE,6BAA6B;IAC7C,4BAA4B,EAAE,2CAA2C;IACzE,eAAe,EAAE,8BAA8B;CACvC,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,QAAQ;IAChB,wEAAwE;IACxE,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,6DAA6D;IAC7D,MAAM,EAAE,QAAQ;IAChB,mBAAmB,EAAE,qBAAqB;IAC1C,8CAA8C;IAC9C,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,iFAAiF;IACjF,2BAA2B,EAAE,6BAA6B;CAClD,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,iBAA6B,EAC7B,EAA8B;IAE9B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACrD,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,qEAAqE;YACrE,IAAI,CAAC,eAAe,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/C,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChE,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
@@ -1 +0,0 @@
1
- {"type":"module"}
@@ -1,179 +0,0 @@
1
- /**
2
- * In-Memory Exporters for Testing
3
- *
4
- * These exporters capture telemetry data in memory for assertion in tests.
5
- * No external connections are made.
6
- */
7
- import { ExportResult } from "@opentelemetry/core";
8
- import type { SpanExporter, ReadableSpan } from "@opentelemetry/sdk-trace-base";
9
- /**
10
- * In-memory span exporter for testing.
11
- * Captures all exported spans for assertion.
12
- */
13
- export declare class InMemorySpanExporter implements SpanExporter {
14
- private spans;
15
- private stopped;
16
- /**
17
- * Export spans to in-memory storage.
18
- */
19
- export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
20
- /**
21
- * Shutdown the exporter.
22
- */
23
- shutdown(): Promise<void>;
24
- /**
25
- * Force flush (no-op for in-memory).
26
- */
27
- forceFlush(): Promise<void>;
28
- /**
29
- * Get all captured spans.
30
- */
31
- getSpans(): ReadableSpan[];
32
- /**
33
- * Get the number of captured spans.
34
- */
35
- getSpanCount(): number;
36
- /**
37
- * Clear captured spans.
38
- */
39
- reset(): void;
40
- /**
41
- * Find spans by name.
42
- *
43
- * @param name - Span name to search for
44
- * @returns Matching spans
45
- */
46
- findSpansByName(name: string): ReadableSpan[];
47
- /**
48
- * Find spans by name pattern (regex).
49
- *
50
- * @param pattern - Regex pattern to match span names
51
- * @returns Matching spans
52
- */
53
- findSpansByPattern(pattern: RegExp): ReadableSpan[];
54
- /**
55
- * Find spans with a specific attribute value.
56
- *
57
- * @param key - Attribute key
58
- * @param value - Attribute value (or regex for pattern matching)
59
- * @returns Matching spans
60
- */
61
- findSpansByAttribute(key: string, value: string | RegExp): ReadableSpan[];
62
- /**
63
- * Assert no spans have a specific attribute value.
64
- * Useful for ensuring Tier 1 data doesn't leak.
65
- *
66
- * @param key - Attribute key
67
- * @param value - Forbidden attribute value (or regex pattern)
68
- * @throws Error if forbidden attribute is found
69
- */
70
- assertNoAttribute(key: string, value: string | RegExp): void;
71
- /**
72
- * Assert all spans have a required attribute.
73
- *
74
- * @param key - Attribute key
75
- * @throws Error if any span is missing the attribute
76
- */
77
- assertAllHaveAttribute(key: string): void;
78
- /**
79
- * Get span names for debugging.
80
- */
81
- getSpanNames(): string[];
82
- }
83
- /**
84
- * Metric data point captured by in-memory exporter.
85
- */
86
- export interface CapturedMetric {
87
- name: string;
88
- description?: string;
89
- unit?: string;
90
- type: "counter" | "gauge" | "histogram" | "observable";
91
- dataPoints: Array<{
92
- value: number;
93
- attributes: Record<string, unknown>;
94
- timestamp: number;
95
- }>;
96
- }
97
- /**
98
- * In-memory metric exporter for testing.
99
- */
100
- export declare class InMemoryMetricExporter {
101
- private metrics;
102
- /**
103
- * Export metrics to in-memory storage.
104
- */
105
- export(metrics: CapturedMetric[]): void;
106
- /**
107
- * Get all captured metrics.
108
- */
109
- getMetrics(): CapturedMetric[];
110
- /**
111
- * Find metrics by name.
112
- *
113
- * @param name - Metric name
114
- * @returns Matching metrics
115
- */
116
- findMetricsByName(name: string): CapturedMetric[];
117
- /**
118
- * Clear captured metrics.
119
- */
120
- reset(): void;
121
- /**
122
- * Assert no metrics have a specific label value.
123
- *
124
- * @param labelKey - Label key
125
- * @param value - Forbidden value
126
- * @throws Error if forbidden label is found
127
- */
128
- assertNoLabel(labelKey: string, value: string | RegExp): void;
129
- }
130
- /**
131
- * Log record captured by in-memory exporter.
132
- */
133
- export interface CapturedLogRecord {
134
- timestamp: number;
135
- severityNumber: number;
136
- severityText?: string;
137
- body?: unknown;
138
- attributes: Record<string, unknown>;
139
- }
140
- /**
141
- * In-memory log exporter for testing.
142
- */
143
- export declare class InMemoryLogExporter {
144
- private logs;
145
- /**
146
- * Export logs to in-memory storage.
147
- */
148
- export(logs: CapturedLogRecord[]): void;
149
- /**
150
- * Get all captured logs.
151
- */
152
- getLogs(): CapturedLogRecord[];
153
- /**
154
- * Find logs by severity.
155
- *
156
- * @param severityNumber - Severity level (e.g., 9 for INFO, 13 for WARN, 17 for ERROR)
157
- * @returns Matching logs
158
- */
159
- findLogsBySeverity(severityNumber: number): CapturedLogRecord[];
160
- /**
161
- * Find logs containing text.
162
- *
163
- * @param text - Text to search for in log body
164
- * @returns Matching logs
165
- */
166
- findLogsContaining(text: string | RegExp): CapturedLogRecord[];
167
- /**
168
- * Clear captured logs.
169
- */
170
- reset(): void;
171
- /**
172
- * Assert no logs contain sensitive data.
173
- *
174
- * @param pattern - Pattern to check for (forbidden content)
175
- * @throws Error if forbidden content is found
176
- */
177
- assertNoLogContains(pattern: RegExp): void;
178
- }
179
- //# sourceMappingURL=in-memory-exporter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"in-memory-exporter.d.ts","sourceRoot":"","sources":["../../src/testing/in-memory-exporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAoB,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEhF;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,OAAO,CAAS;IAExB;;OAEG;IACH,MAAM,CACJ,KAAK,EAAE,YAAY,EAAE,EACrB,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAC7C,IAAI;IASP;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACH,QAAQ,IAAI,YAAY,EAAE;IAI1B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE;IAI7C;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE;IAInD;;;;;;OAMG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,EAAE;IAWzE;;;;;;;OAOG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgB5D;;;;;OAKG;IACH,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUzC;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;CAGzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,CAAC;IACvD,UAAU,EAAE,KAAK,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAwB;IAEvC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAIvC;;OAEG;IACH,UAAU,IAAI,cAAc,EAAE;IAI9B;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE;IAIjD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;;OAMG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAiB9D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAA2B;IAEvC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAIvC;;OAEG;IACH,OAAO,IAAI,iBAAiB,EAAE;IAI9B;;;;;OAKG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAI/D;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,iBAAiB,EAAE;IAU9D;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;OAKG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAW3C"}
@@ -1,250 +0,0 @@
1
- /**
2
- * In-Memory Exporters for Testing
3
- *
4
- * These exporters capture telemetry data in memory for assertion in tests.
5
- * No external connections are made.
6
- */
7
- import { ExportResultCode } from "@opentelemetry/core";
8
- /**
9
- * In-memory span exporter for testing.
10
- * Captures all exported spans for assertion.
11
- */
12
- export class InMemorySpanExporter {
13
- spans = [];
14
- stopped = false;
15
- /**
16
- * Export spans to in-memory storage.
17
- */
18
- export(spans, resultCallback) {
19
- if (this.stopped) {
20
- resultCallback({ code: ExportResultCode.FAILED });
21
- return;
22
- }
23
- this.spans.push(...spans);
24
- resultCallback({ code: ExportResultCode.SUCCESS });
25
- }
26
- /**
27
- * Shutdown the exporter.
28
- */
29
- shutdown() {
30
- this.stopped = true;
31
- return Promise.resolve();
32
- }
33
- /**
34
- * Force flush (no-op for in-memory).
35
- */
36
- forceFlush() {
37
- return Promise.resolve();
38
- }
39
- /**
40
- * Get all captured spans.
41
- */
42
- getSpans() {
43
- return [...this.spans];
44
- }
45
- /**
46
- * Get the number of captured spans.
47
- */
48
- getSpanCount() {
49
- return this.spans.length;
50
- }
51
- /**
52
- * Clear captured spans.
53
- */
54
- reset() {
55
- this.spans = [];
56
- }
57
- /**
58
- * Find spans by name.
59
- *
60
- * @param name - Span name to search for
61
- * @returns Matching spans
62
- */
63
- findSpansByName(name) {
64
- return this.spans.filter((s) => s.name === name);
65
- }
66
- /**
67
- * Find spans by name pattern (regex).
68
- *
69
- * @param pattern - Regex pattern to match span names
70
- * @returns Matching spans
71
- */
72
- findSpansByPattern(pattern) {
73
- return this.spans.filter((s) => pattern.test(s.name));
74
- }
75
- /**
76
- * Find spans with a specific attribute value.
77
- *
78
- * @param key - Attribute key
79
- * @param value - Attribute value (or regex for pattern matching)
80
- * @returns Matching spans
81
- */
82
- findSpansByAttribute(key, value) {
83
- return this.spans.filter((s) => {
84
- const attr = s.attributes[key];
85
- if (attr === undefined)
86
- return false;
87
- if (value instanceof RegExp) {
88
- return value.test(String(attr));
89
- }
90
- return attr === value;
91
- });
92
- }
93
- /**
94
- * Assert no spans have a specific attribute value.
95
- * Useful for ensuring Tier 1 data doesn't leak.
96
- *
97
- * @param key - Attribute key
98
- * @param value - Forbidden attribute value (or regex pattern)
99
- * @throws Error if forbidden attribute is found
100
- */
101
- assertNoAttribute(key, value) {
102
- for (const span of this.spans) {
103
- const attr = span.attributes[key];
104
- if (attr === undefined)
105
- continue;
106
- const matches = value instanceof RegExp ? value.test(String(attr)) : attr === value;
107
- if (matches) {
108
- throw new Error(`Found forbidden attribute ${key}=${String(attr)} on span "${span.name}"`);
109
- }
110
- }
111
- }
112
- /**
113
- * Assert all spans have a required attribute.
114
- *
115
- * @param key - Attribute key
116
- * @throws Error if any span is missing the attribute
117
- */
118
- assertAllHaveAttribute(key) {
119
- for (const span of this.spans) {
120
- if (span.attributes[key] === undefined) {
121
- throw new Error(`Span "${span.name}" is missing required attribute "${key}"`);
122
- }
123
- }
124
- }
125
- /**
126
- * Get span names for debugging.
127
- */
128
- getSpanNames() {
129
- return this.spans.map((s) => s.name);
130
- }
131
- }
132
- /**
133
- * In-memory metric exporter for testing.
134
- */
135
- export class InMemoryMetricExporter {
136
- metrics = [];
137
- /**
138
- * Export metrics to in-memory storage.
139
- */
140
- export(metrics) {
141
- this.metrics.push(...metrics);
142
- }
143
- /**
144
- * Get all captured metrics.
145
- */
146
- getMetrics() {
147
- return [...this.metrics];
148
- }
149
- /**
150
- * Find metrics by name.
151
- *
152
- * @param name - Metric name
153
- * @returns Matching metrics
154
- */
155
- findMetricsByName(name) {
156
- return this.metrics.filter((m) => m.name === name);
157
- }
158
- /**
159
- * Clear captured metrics.
160
- */
161
- reset() {
162
- this.metrics = [];
163
- }
164
- /**
165
- * Assert no metrics have a specific label value.
166
- *
167
- * @param labelKey - Label key
168
- * @param value - Forbidden value
169
- * @throws Error if forbidden label is found
170
- */
171
- assertNoLabel(labelKey, value) {
172
- for (const metric of this.metrics) {
173
- for (const dp of metric.dataPoints) {
174
- const label = dp.attributes[labelKey];
175
- if (label === undefined)
176
- continue;
177
- const matches = value instanceof RegExp ? value.test(String(label)) : label === value;
178
- if (matches) {
179
- throw new Error(`Found forbidden label ${labelKey}=${String(label)} on metric "${metric.name}"`);
180
- }
181
- }
182
- }
183
- }
184
- }
185
- /**
186
- * In-memory log exporter for testing.
187
- */
188
- export class InMemoryLogExporter {
189
- logs = [];
190
- /**
191
- * Export logs to in-memory storage.
192
- */
193
- export(logs) {
194
- this.logs.push(...logs);
195
- }
196
- /**
197
- * Get all captured logs.
198
- */
199
- getLogs() {
200
- return [...this.logs];
201
- }
202
- /**
203
- * Find logs by severity.
204
- *
205
- * @param severityNumber - Severity level (e.g., 9 for INFO, 13 for WARN, 17 for ERROR)
206
- * @returns Matching logs
207
- */
208
- findLogsBySeverity(severityNumber) {
209
- return this.logs.filter((l) => l.severityNumber === severityNumber);
210
- }
211
- /**
212
- * Find logs containing text.
213
- *
214
- * @param text - Text to search for in log body
215
- * @returns Matching logs
216
- */
217
- findLogsContaining(text) {
218
- return this.logs.filter((l) => {
219
- if (l.body === undefined)
220
- return false;
221
- const bodyStr = String(l.body);
222
- return text instanceof RegExp
223
- ? text.test(bodyStr)
224
- : bodyStr.includes(text);
225
- });
226
- }
227
- /**
228
- * Clear captured logs.
229
- */
230
- reset() {
231
- this.logs = [];
232
- }
233
- /**
234
- * Assert no logs contain sensitive data.
235
- *
236
- * @param pattern - Pattern to check for (forbidden content)
237
- * @throws Error if forbidden content is found
238
- */
239
- assertNoLogContains(pattern) {
240
- for (const log of this.logs) {
241
- if (log.body === undefined)
242
- continue;
243
- const bodyStr = String(log.body);
244
- if (pattern.test(bodyStr)) {
245
- throw new Error(`Found forbidden content in log: ${bodyStr.slice(0, 100)}...`);
246
- }
247
- }
248
- }
249
- }
250
- //# sourceMappingURL=in-memory-exporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"in-memory-exporter.js","sourceRoot":"","sources":["../../src/testing/in-memory-exporter.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Testing Utilities
3
- *
4
- * In-memory exporters and test helpers for telemetry assertions.
5
- */
6
- export { InMemorySpanExporter, InMemoryMetricExporter, InMemoryLogExporter, type CapturedMetric, type CapturedLogRecord, } from "./in-memory-exporter.js";
7
- export { initTestTelemetry, getTestTelemetryInstance, resetTestTelemetry, getTestTracer, withTestSpan, type TestTelemetryInstance, } from "./test-init.js";
8
- export { captureMetrics, type CapturedPoint, type MetricsCapture, } from "./metrics-capture.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Testing Utilities
3
- *
4
- * In-memory exporters and test helpers for telemetry assertions.
5
- */
6
- export { InMemorySpanExporter, InMemoryMetricExporter, InMemoryLogExporter, } from "./in-memory-exporter.js";
7
- export { initTestTelemetry, getTestTelemetryInstance, resetTestTelemetry, getTestTracer, withTestSpan, } from "./test-init.js";
8
- export { captureMetrics, } from "./metrics-capture.js";
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,GAGpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,YAAY,GAEb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * In-memory metric capture for tests.
3
- *
4
- * `initTestTelemetry` registers only a tracer provider, so instruments have
5
- * nowhere to record and its `metricExporter` always reads back empty. This
6
- * installs a real SDK MeterProvider as the global and flattens what it
7
- * collects into (name, attributes, value) triples.
8
- *
9
- * Installing a provider also re-binds instruments written against the lazy
10
- * pattern, so a module imported before the harness ran still records.
11
- */
12
- export interface CapturedPoint {
13
- attributes: Record<string, unknown>;
14
- /** Histogram data points only. */
15
- count?: number;
16
- /** Histogram data points only. */
17
- sum?: number;
18
- /** Counter and gauge data points only. */
19
- value?: number;
20
- }
21
- export interface MetricsCapture {
22
- /** Every data point recorded since the last read. */
23
- collect: () => Promise<CapturedPoint[]>;
24
- /** Data points for one metric name, recorded since the last read. */
25
- pointsFor: (metricName: string) => Promise<CapturedPoint[]>;
26
- shutdown: () => Promise<void>;
27
- }
28
- export declare function captureMetrics(): MetricsCapture;
29
- //# sourceMappingURL=metrics-capture.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics-capture.d.ts","sourceRoot":"","sources":["../../src/testing/metrics-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,OAAO,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACxC,qEAAqE;IACrE,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5D,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,wBAAgB,cAAc,IAAI,cAAc,CA+D/C"}
@@ -1,71 +0,0 @@
1
- /**
2
- * In-memory metric capture for tests.
3
- *
4
- * `initTestTelemetry` registers only a tracer provider, so instruments have
5
- * nowhere to record and its `metricExporter` always reads back empty. This
6
- * installs a real SDK MeterProvider as the global and flattens what it
7
- * collects into (name, attributes, value) triples.
8
- *
9
- * Installing a provider also re-binds instruments written against the lazy
10
- * pattern, so a module imported before the harness ran still records.
11
- */
12
- import { metrics } from "@opentelemetry/api";
13
- import { AggregationTemporality, DataPointType, InMemoryMetricExporter, MeterProvider, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
14
- export function captureMetrics() {
15
- const exporter = new InMemoryMetricExporter(AggregationTemporality.DELTA);
16
- const reader = new PeriodicExportingMetricReader({
17
- exporter,
18
- exportIntervalMillis: 60_000,
19
- });
20
- const provider = new MeterProvider({ readers: [reader] });
21
- metrics.disable();
22
- metrics.setGlobalMeterProvider(provider);
23
- const collectNamed = async () => {
24
- await provider.forceFlush();
25
- const collected = [];
26
- for (const resourceMetric of exporter.getMetrics()) {
27
- for (const scopeMetric of resourceMetric.scopeMetrics) {
28
- for (const metric of scopeMetric.metrics) {
29
- const name = metric.descriptor.name;
30
- // Narrow on the metric, not the point: `dataPoints` is only typed
31
- // once `dataPointType` has been checked.
32
- if (metric.dataPointType === DataPointType.HISTOGRAM) {
33
- for (const point of metric.dataPoints) {
34
- collected.push({
35
- attributes: point.attributes,
36
- count: point.value.count,
37
- name,
38
- ...(point.value.sum === undefined
39
- ? {}
40
- : { sum: point.value.sum }),
41
- });
42
- }
43
- }
44
- else if (metric.dataPointType === DataPointType.SUM ||
45
- metric.dataPointType === DataPointType.GAUGE) {
46
- for (const point of metric.dataPoints) {
47
- collected.push({
48
- attributes: point.attributes,
49
- name,
50
- value: point.value,
51
- });
52
- }
53
- }
54
- }
55
- }
56
- }
57
- exporter.reset();
58
- return collected;
59
- };
60
- return {
61
- collect: async () => (await collectNamed()).map(({ name: _name, ...point }) => point),
62
- pointsFor: async (metricName) => (await collectNamed())
63
- .filter((point) => point.name === metricName)
64
- .map(({ name: _name, ...point }) => point),
65
- shutdown: async () => {
66
- await provider.shutdown();
67
- metrics.disable();
68
- },
69
- };
70
- }
71
- //# sourceMappingURL=metrics-capture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics-capture.js","sourceRoot":"","sources":["../../src/testing/metrics-capture.ts"],"names":[],"mappings":"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"}