@superblocksteam/telemetry 2.0.0-SNAPSHOT.329be19cb7ca892b

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 (388) hide show
  1. package/LICENSE.txt +87 -0
  2. package/README.md +298 -0
  3. package/dist/browser/console-logging.d.ts +18 -0
  4. package/dist/browser/console-logging.d.ts.map +1 -0
  5. package/dist/browser/console-logging.js +32 -0
  6. package/dist/browser/console-logging.js.map +1 -0
  7. package/dist/browser/early-console-buffer.d.ts +49 -0
  8. package/dist/browser/early-console-buffer.d.ts.map +1 -0
  9. package/dist/browser/early-console-buffer.js +182 -0
  10. package/dist/browser/early-console-buffer.js.map +1 -0
  11. package/dist/browser/index.d.ts +17 -0
  12. package/dist/browser/index.d.ts.map +1 -0
  13. package/dist/browser/index.js +50 -0
  14. package/dist/browser/index.js.map +1 -0
  15. package/dist/browser/init.d.ts +101 -0
  16. package/dist/browser/init.d.ts.map +1 -0
  17. package/dist/browser/init.js +329 -0
  18. package/dist/browser/init.js.map +1 -0
  19. package/dist/browser/instrumentations.d.ts +67 -0
  20. package/dist/browser/instrumentations.d.ts.map +1 -0
  21. package/dist/browser/instrumentations.js +83 -0
  22. package/dist/browser/instrumentations.js.map +1 -0
  23. package/dist/browser/logs.d.ts +55 -0
  24. package/dist/browser/logs.d.ts.map +1 -0
  25. package/dist/browser/logs.js +86 -0
  26. package/dist/browser/logs.js.map +1 -0
  27. package/dist/browser/metrics.d.ts +29 -0
  28. package/dist/browser/metrics.d.ts.map +1 -0
  29. package/dist/browser/metrics.js +49 -0
  30. package/dist/browser/metrics.js.map +1 -0
  31. package/dist/browser/resilient-exporter.d.ts +43 -0
  32. package/dist/browser/resilient-exporter.d.ts.map +1 -0
  33. package/dist/browser/resilient-exporter.js +88 -0
  34. package/dist/browser/resilient-exporter.js.map +1 -0
  35. package/dist/browser/sanitizer.d.ts +35 -0
  36. package/dist/browser/sanitizer.d.ts.map +1 -0
  37. package/dist/browser/sanitizer.js +211 -0
  38. package/dist/browser/sanitizer.js.map +1 -0
  39. package/dist/browser/traced-socket.d.ts +102 -0
  40. package/dist/browser/traced-socket.d.ts.map +1 -0
  41. package/dist/browser/traced-socket.js +203 -0
  42. package/dist/browser/traced-socket.js.map +1 -0
  43. package/dist/common/contracts/tier2-traces.d.ts +116 -0
  44. package/dist/common/contracts/tier2-traces.d.ts.map +1 -0
  45. package/dist/common/contracts/tier2-traces.js +736 -0
  46. package/dist/common/contracts/tier2-traces.js.map +1 -0
  47. package/dist/common/deployment-type.d.ts +18 -0
  48. package/dist/common/deployment-type.d.ts.map +1 -0
  49. package/dist/common/deployment-type.js +30 -0
  50. package/dist/common/deployment-type.js.map +1 -0
  51. package/dist/common/guardrails.d.ts +116 -0
  52. package/dist/common/guardrails.d.ts.map +1 -0
  53. package/dist/common/guardrails.js +189 -0
  54. package/dist/common/guardrails.js.map +1 -0
  55. package/dist/common/index.d.ts +18 -0
  56. package/dist/common/index.d.ts.map +1 -0
  57. package/dist/common/index.js +34 -0
  58. package/dist/common/index.js.map +1 -0
  59. package/dist/common/log-sanitizer.d.ts +170 -0
  60. package/dist/common/log-sanitizer.d.ts.map +1 -0
  61. package/dist/common/log-sanitizer.js +690 -0
  62. package/dist/common/log-sanitizer.js.map +1 -0
  63. package/dist/common/normalize-metric-path.d.ts +2 -0
  64. package/dist/common/normalize-metric-path.d.ts.map +1 -0
  65. package/dist/common/normalize-metric-path.js +22 -0
  66. package/dist/common/normalize-metric-path.js.map +1 -0
  67. package/dist/common/policy-evaluator.d.ts +103 -0
  68. package/dist/common/policy-evaluator.d.ts.map +1 -0
  69. package/dist/common/policy-evaluator.js +200 -0
  70. package/dist/common/policy-evaluator.js.map +1 -0
  71. package/dist/common/resource.d.ts +79 -0
  72. package/dist/common/resource.d.ts.map +1 -0
  73. package/dist/common/resource.js +128 -0
  74. package/dist/common/resource.js.map +1 -0
  75. package/dist/common/tier-hints.d.ts +182 -0
  76. package/dist/common/tier-hints.d.ts.map +1 -0
  77. package/dist/common/tier-hints.js +209 -0
  78. package/dist/common/tier-hints.js.map +1 -0
  79. package/dist/common/trace-sanitizer.d.ts +82 -0
  80. package/dist/common/trace-sanitizer.d.ts.map +1 -0
  81. package/dist/common/trace-sanitizer.js +234 -0
  82. package/dist/common/trace-sanitizer.js.map +1 -0
  83. package/dist/common/traced-socket-types.d.ts +43 -0
  84. package/dist/common/traced-socket-types.d.ts.map +1 -0
  85. package/dist/common/traced-socket-types.js +17 -0
  86. package/dist/common/traced-socket-types.js.map +1 -0
  87. package/dist/index.d.ts +45 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +88 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/lint/forbidden-attributes.d.ts +149 -0
  92. package/dist/lint/forbidden-attributes.d.ts.map +1 -0
  93. package/dist/lint/forbidden-attributes.js +215 -0
  94. package/dist/lint/forbidden-attributes.js.map +1 -0
  95. package/dist/lint/index.d.ts +9 -0
  96. package/dist/lint/index.d.ts.map +1 -0
  97. package/dist/lint/index.js +16 -0
  98. package/dist/lint/index.js.map +1 -0
  99. package/dist/llmobs/index.d.ts +22 -0
  100. package/dist/llmobs/index.d.ts.map +1 -0
  101. package/dist/llmobs/index.js +29 -0
  102. package/dist/llmobs/index.js.map +1 -0
  103. package/dist/llmobs/tier1-exporter.d.ts +146 -0
  104. package/dist/llmobs/tier1-exporter.d.ts.map +1 -0
  105. package/dist/llmobs/tier1-exporter.js +199 -0
  106. package/dist/llmobs/tier1-exporter.js.map +1 -0
  107. package/dist/llmobs/tier2-summarizer.d.ts +268 -0
  108. package/dist/llmobs/tier2-summarizer.d.ts.map +1 -0
  109. package/dist/llmobs/tier2-summarizer.js +656 -0
  110. package/dist/llmobs/tier2-summarizer.js.map +1 -0
  111. package/dist/node/dynamic-attribute-processor.d.ts +43 -0
  112. package/dist/node/dynamic-attribute-processor.d.ts.map +1 -0
  113. package/dist/node/dynamic-attribute-processor.js +79 -0
  114. package/dist/node/dynamic-attribute-processor.js.map +1 -0
  115. package/dist/node/exporters/resilient-exporter.d.ts +91 -0
  116. package/dist/node/exporters/resilient-exporter.d.ts.map +1 -0
  117. package/dist/node/exporters/resilient-exporter.js +136 -0
  118. package/dist/node/exporters/resilient-exporter.js.map +1 -0
  119. package/dist/node/index.d.ts +13 -0
  120. package/dist/node/index.d.ts.map +1 -0
  121. package/dist/node/index.js +32 -0
  122. package/dist/node/index.js.map +1 -0
  123. package/dist/node/init.d.ts +97 -0
  124. package/dist/node/init.d.ts.map +1 -0
  125. package/dist/node/init.js +365 -0
  126. package/dist/node/init.js.map +1 -0
  127. package/dist/node/local-obs-mode.d.ts +17 -0
  128. package/dist/node/local-obs-mode.d.ts.map +1 -0
  129. package/dist/node/local-obs-mode.js +22 -0
  130. package/dist/node/local-obs-mode.js.map +1 -0
  131. package/dist/node/log-processor.d.ts +132 -0
  132. package/dist/node/log-processor.d.ts.map +1 -0
  133. package/dist/node/log-processor.js +397 -0
  134. package/dist/node/log-processor.js.map +1 -0
  135. package/dist/node/metrics-client.d.ts +88 -0
  136. package/dist/node/metrics-client.d.ts.map +1 -0
  137. package/dist/node/metrics-client.js +209 -0
  138. package/dist/node/metrics-client.js.map +1 -0
  139. package/dist/node/safe-logger.d.ts +55 -0
  140. package/dist/node/safe-logger.d.ts.map +1 -0
  141. package/dist/node/safe-logger.js +158 -0
  142. package/dist/node/safe-logger.js.map +1 -0
  143. package/dist/node/sanitizing-processor.d.ts +67 -0
  144. package/dist/node/sanitizing-processor.d.ts.map +1 -0
  145. package/dist/node/sanitizing-processor.js +167 -0
  146. package/dist/node/sanitizing-processor.js.map +1 -0
  147. package/dist/node/service-tracers.d.ts +52 -0
  148. package/dist/node/service-tracers.d.ts.map +1 -0
  149. package/dist/node/service-tracers.js +81 -0
  150. package/dist/node/service-tracers.js.map +1 -0
  151. package/dist/node/traced-socket.d.ts +120 -0
  152. package/dist/node/traced-socket.d.ts.map +1 -0
  153. package/dist/node/traced-socket.js +338 -0
  154. package/dist/node/traced-socket.js.map +1 -0
  155. package/dist/npm-registry/emitter.d.ts +310 -0
  156. package/dist/npm-registry/emitter.d.ts.map +1 -0
  157. package/dist/npm-registry/emitter.js +537 -0
  158. package/dist/npm-registry/emitter.js.map +1 -0
  159. package/dist/npm-registry/index.d.ts +12 -0
  160. package/dist/npm-registry/index.d.ts.map +1 -0
  161. package/dist/npm-registry/index.js +28 -0
  162. package/dist/npm-registry/index.js.map +1 -0
  163. package/dist/npm-registry/sanitize.d.ts +174 -0
  164. package/dist/npm-registry/sanitize.d.ts.map +1 -0
  165. package/dist/npm-registry/sanitize.js +342 -0
  166. package/dist/npm-registry/sanitize.js.map +1 -0
  167. package/dist/npm-registry/spans.d.ts +61 -0
  168. package/dist/npm-registry/spans.d.ts.map +1 -0
  169. package/dist/npm-registry/spans.js +91 -0
  170. package/dist/npm-registry/spans.js.map +1 -0
  171. package/dist/testing/in-memory-exporter.d.ts +179 -0
  172. package/dist/testing/in-memory-exporter.d.ts.map +1 -0
  173. package/dist/testing/in-memory-exporter.js +256 -0
  174. package/dist/testing/in-memory-exporter.js.map +1 -0
  175. package/dist/testing/index.d.ts +9 -0
  176. package/dist/testing/index.d.ts.map +1 -0
  177. package/dist/testing/index.js +21 -0
  178. package/dist/testing/index.js.map +1 -0
  179. package/dist/testing/metrics-capture.d.ts +29 -0
  180. package/dist/testing/metrics-capture.d.ts.map +1 -0
  181. package/dist/testing/metrics-capture.js +74 -0
  182. package/dist/testing/metrics-capture.js.map +1 -0
  183. package/dist/testing/test-init.d.ts +80 -0
  184. package/dist/testing/test-init.d.ts.map +1 -0
  185. package/dist/testing/test-init.js +144 -0
  186. package/dist/testing/test-init.js.map +1 -0
  187. package/dist/types/index.d.ts +84 -0
  188. package/dist/types/index.d.ts.map +1 -0
  189. package/dist/types/index.js +23 -0
  190. package/dist/types/index.js.map +1 -0
  191. package/dist/types/policy.d.ts +92 -0
  192. package/dist/types/policy.d.ts.map +1 -0
  193. package/dist/types/policy.js +125 -0
  194. package/dist/types/policy.js.map +1 -0
  195. package/dist-esm/browser/console-logging.d.ts +18 -0
  196. package/dist-esm/browser/console-logging.d.ts.map +1 -0
  197. package/dist-esm/browser/console-logging.js +27 -0
  198. package/dist-esm/browser/console-logging.js.map +1 -0
  199. package/dist-esm/browser/early-console-buffer.d.ts +49 -0
  200. package/dist-esm/browser/early-console-buffer.d.ts.map +1 -0
  201. package/dist-esm/browser/early-console-buffer.js +180 -0
  202. package/dist-esm/browser/early-console-buffer.js.map +1 -0
  203. package/dist-esm/browser/index.d.ts +17 -0
  204. package/dist-esm/browser/index.d.ts.map +1 -0
  205. package/dist-esm/browser/index.js +22 -0
  206. package/dist-esm/browser/index.js.map +1 -0
  207. package/dist-esm/browser/init.d.ts +101 -0
  208. package/dist-esm/browser/init.d.ts.map +1 -0
  209. package/dist-esm/browser/init.js +319 -0
  210. package/dist-esm/browser/init.js.map +1 -0
  211. package/dist-esm/browser/instrumentations.d.ts +67 -0
  212. package/dist-esm/browser/instrumentations.d.ts.map +1 -0
  213. package/dist-esm/browser/instrumentations.js +79 -0
  214. package/dist-esm/browser/instrumentations.js.map +1 -0
  215. package/dist-esm/browser/logs.d.ts +55 -0
  216. package/dist-esm/browser/logs.d.ts.map +1 -0
  217. package/dist-esm/browser/logs.js +79 -0
  218. package/dist-esm/browser/logs.js.map +1 -0
  219. package/dist-esm/browser/metrics.d.ts +29 -0
  220. package/dist-esm/browser/metrics.d.ts.map +1 -0
  221. package/dist-esm/browser/metrics.js +46 -0
  222. package/dist-esm/browser/metrics.js.map +1 -0
  223. package/dist-esm/browser/resilient-exporter.d.ts +43 -0
  224. package/dist-esm/browser/resilient-exporter.d.ts.map +1 -0
  225. package/dist-esm/browser/resilient-exporter.js +84 -0
  226. package/dist-esm/browser/resilient-exporter.js.map +1 -0
  227. package/dist-esm/browser/sanitizer.d.ts +35 -0
  228. package/dist-esm/browser/sanitizer.d.ts.map +1 -0
  229. package/dist-esm/browser/sanitizer.js +207 -0
  230. package/dist-esm/browser/sanitizer.js.map +1 -0
  231. package/dist-esm/browser/traced-socket.d.ts +102 -0
  232. package/dist-esm/browser/traced-socket.d.ts.map +1 -0
  233. package/dist-esm/browser/traced-socket.js +199 -0
  234. package/dist-esm/browser/traced-socket.js.map +1 -0
  235. package/dist-esm/common/contracts/tier2-traces.d.ts +116 -0
  236. package/dist-esm/common/contracts/tier2-traces.d.ts.map +1 -0
  237. package/dist-esm/common/contracts/tier2-traces.js +725 -0
  238. package/dist-esm/common/contracts/tier2-traces.js.map +1 -0
  239. package/dist-esm/common/deployment-type.d.ts +18 -0
  240. package/dist-esm/common/deployment-type.d.ts.map +1 -0
  241. package/dist-esm/common/deployment-type.js +27 -0
  242. package/dist-esm/common/deployment-type.js.map +1 -0
  243. package/dist-esm/common/guardrails.d.ts +116 -0
  244. package/dist-esm/common/guardrails.d.ts.map +1 -0
  245. package/dist-esm/common/guardrails.js +179 -0
  246. package/dist-esm/common/guardrails.js.map +1 -0
  247. package/dist-esm/common/index.d.ts +18 -0
  248. package/dist-esm/common/index.d.ts.map +1 -0
  249. package/dist-esm/common/index.js +18 -0
  250. package/dist-esm/common/index.js.map +1 -0
  251. package/dist-esm/common/log-sanitizer.d.ts +170 -0
  252. package/dist-esm/common/log-sanitizer.d.ts.map +1 -0
  253. package/dist-esm/common/log-sanitizer.js +672 -0
  254. package/dist-esm/common/log-sanitizer.js.map +1 -0
  255. package/dist-esm/common/normalize-metric-path.d.ts +2 -0
  256. package/dist-esm/common/normalize-metric-path.d.ts.map +1 -0
  257. package/dist-esm/common/normalize-metric-path.js +19 -0
  258. package/dist-esm/common/normalize-metric-path.js.map +1 -0
  259. package/dist-esm/common/policy-evaluator.d.ts +103 -0
  260. package/dist-esm/common/policy-evaluator.d.ts.map +1 -0
  261. package/dist-esm/common/policy-evaluator.js +196 -0
  262. package/dist-esm/common/policy-evaluator.js.map +1 -0
  263. package/dist-esm/common/resource.d.ts +79 -0
  264. package/dist-esm/common/resource.d.ts.map +1 -0
  265. package/dist-esm/common/resource.js +121 -0
  266. package/dist-esm/common/resource.js.map +1 -0
  267. package/dist-esm/common/tier-hints.d.ts +182 -0
  268. package/dist-esm/common/tier-hints.d.ts.map +1 -0
  269. package/dist-esm/common/tier-hints.js +199 -0
  270. package/dist-esm/common/tier-hints.js.map +1 -0
  271. package/dist-esm/common/trace-sanitizer.d.ts +82 -0
  272. package/dist-esm/common/trace-sanitizer.d.ts.map +1 -0
  273. package/dist-esm/common/trace-sanitizer.js +230 -0
  274. package/dist-esm/common/trace-sanitizer.js.map +1 -0
  275. package/dist-esm/common/traced-socket-types.d.ts +43 -0
  276. package/dist-esm/common/traced-socket-types.d.ts.map +1 -0
  277. package/dist-esm/common/traced-socket-types.js +16 -0
  278. package/dist-esm/common/traced-socket-types.js.map +1 -0
  279. package/dist-esm/index.d.ts +45 -0
  280. package/dist-esm/index.d.ts.map +1 -0
  281. package/dist-esm/index.js +56 -0
  282. package/dist-esm/index.js.map +1 -0
  283. package/dist-esm/lint/forbidden-attributes.d.ts +149 -0
  284. package/dist-esm/lint/forbidden-attributes.d.ts.map +1 -0
  285. package/dist-esm/lint/forbidden-attributes.js +210 -0
  286. package/dist-esm/lint/forbidden-attributes.js.map +1 -0
  287. package/dist-esm/lint/index.d.ts +9 -0
  288. package/dist-esm/lint/index.d.ts.map +1 -0
  289. package/dist-esm/lint/index.js +9 -0
  290. package/dist-esm/lint/index.js.map +1 -0
  291. package/dist-esm/llmobs/index.d.ts +22 -0
  292. package/dist-esm/llmobs/index.d.ts.map +1 -0
  293. package/dist-esm/llmobs/index.js +22 -0
  294. package/dist-esm/llmobs/index.js.map +1 -0
  295. package/dist-esm/llmobs/tier1-exporter.d.ts +146 -0
  296. package/dist-esm/llmobs/tier1-exporter.d.ts.map +1 -0
  297. package/dist-esm/llmobs/tier1-exporter.js +193 -0
  298. package/dist-esm/llmobs/tier1-exporter.js.map +1 -0
  299. package/dist-esm/llmobs/tier2-summarizer.d.ts +268 -0
  300. package/dist-esm/llmobs/tier2-summarizer.d.ts.map +1 -0
  301. package/dist-esm/llmobs/tier2-summarizer.js +652 -0
  302. package/dist-esm/llmobs/tier2-summarizer.js.map +1 -0
  303. package/dist-esm/node/dynamic-attribute-processor.d.ts +43 -0
  304. package/dist-esm/node/dynamic-attribute-processor.d.ts.map +1 -0
  305. package/dist-esm/node/dynamic-attribute-processor.js +74 -0
  306. package/dist-esm/node/dynamic-attribute-processor.js.map +1 -0
  307. package/dist-esm/node/exporters/resilient-exporter.d.ts +91 -0
  308. package/dist-esm/node/exporters/resilient-exporter.d.ts.map +1 -0
  309. package/dist-esm/node/exporters/resilient-exporter.js +132 -0
  310. package/dist-esm/node/exporters/resilient-exporter.js.map +1 -0
  311. package/dist-esm/node/index.d.ts +13 -0
  312. package/dist-esm/node/index.d.ts.map +1 -0
  313. package/dist-esm/node/index.js +13 -0
  314. package/dist-esm/node/index.js.map +1 -0
  315. package/dist-esm/node/init.d.ts +97 -0
  316. package/dist-esm/node/init.d.ts.map +1 -0
  317. package/dist-esm/node/init.js +359 -0
  318. package/dist-esm/node/init.js.map +1 -0
  319. package/dist-esm/node/local-obs-mode.d.ts +17 -0
  320. package/dist-esm/node/local-obs-mode.d.ts.map +1 -0
  321. package/dist-esm/node/local-obs-mode.js +19 -0
  322. package/dist-esm/node/local-obs-mode.js.map +1 -0
  323. package/dist-esm/node/log-processor.d.ts +132 -0
  324. package/dist-esm/node/log-processor.d.ts.map +1 -0
  325. package/dist-esm/node/log-processor.js +389 -0
  326. package/dist-esm/node/log-processor.js.map +1 -0
  327. package/dist-esm/node/metrics-client.d.ts +88 -0
  328. package/dist-esm/node/metrics-client.d.ts.map +1 -0
  329. package/dist-esm/node/metrics-client.js +205 -0
  330. package/dist-esm/node/metrics-client.js.map +1 -0
  331. package/dist-esm/node/safe-logger.d.ts +55 -0
  332. package/dist-esm/node/safe-logger.d.ts.map +1 -0
  333. package/dist-esm/node/safe-logger.js +154 -0
  334. package/dist-esm/node/safe-logger.js.map +1 -0
  335. package/dist-esm/node/sanitizing-processor.d.ts +67 -0
  336. package/dist-esm/node/sanitizing-processor.d.ts.map +1 -0
  337. package/dist-esm/node/sanitizing-processor.js +163 -0
  338. package/dist-esm/node/sanitizing-processor.js.map +1 -0
  339. package/dist-esm/node/service-tracers.d.ts +52 -0
  340. package/dist-esm/node/service-tracers.d.ts.map +1 -0
  341. package/dist-esm/node/service-tracers.js +78 -0
  342. package/dist-esm/node/service-tracers.js.map +1 -0
  343. package/dist-esm/node/traced-socket.d.ts +120 -0
  344. package/dist-esm/node/traced-socket.d.ts.map +1 -0
  345. package/dist-esm/node/traced-socket.js +334 -0
  346. package/dist-esm/node/traced-socket.js.map +1 -0
  347. package/dist-esm/npm-registry/emitter.d.ts +310 -0
  348. package/dist-esm/npm-registry/emitter.d.ts.map +1 -0
  349. package/dist-esm/npm-registry/emitter.js +525 -0
  350. package/dist-esm/npm-registry/emitter.js.map +1 -0
  351. package/dist-esm/npm-registry/index.d.ts +12 -0
  352. package/dist-esm/npm-registry/index.d.ts.map +1 -0
  353. package/dist-esm/npm-registry/index.js +12 -0
  354. package/dist-esm/npm-registry/index.js.map +1 -0
  355. package/dist-esm/npm-registry/sanitize.d.ts +174 -0
  356. package/dist-esm/npm-registry/sanitize.d.ts.map +1 -0
  357. package/dist-esm/npm-registry/sanitize.js +331 -0
  358. package/dist-esm/npm-registry/sanitize.js.map +1 -0
  359. package/dist-esm/npm-registry/spans.d.ts +61 -0
  360. package/dist-esm/npm-registry/spans.d.ts.map +1 -0
  361. package/dist-esm/npm-registry/spans.js +86 -0
  362. package/dist-esm/npm-registry/spans.js.map +1 -0
  363. package/dist-esm/package.json +1 -0
  364. package/dist-esm/testing/in-memory-exporter.d.ts +179 -0
  365. package/dist-esm/testing/in-memory-exporter.d.ts.map +1 -0
  366. package/dist-esm/testing/in-memory-exporter.js +250 -0
  367. package/dist-esm/testing/in-memory-exporter.js.map +1 -0
  368. package/dist-esm/testing/index.d.ts +9 -0
  369. package/dist-esm/testing/index.d.ts.map +1 -0
  370. package/dist-esm/testing/index.js +9 -0
  371. package/dist-esm/testing/index.js.map +1 -0
  372. package/dist-esm/testing/metrics-capture.d.ts +29 -0
  373. package/dist-esm/testing/metrics-capture.d.ts.map +1 -0
  374. package/dist-esm/testing/metrics-capture.js +71 -0
  375. package/dist-esm/testing/metrics-capture.js.map +1 -0
  376. package/dist-esm/testing/test-init.d.ts +80 -0
  377. package/dist-esm/testing/test-init.d.ts.map +1 -0
  378. package/dist-esm/testing/test-init.js +137 -0
  379. package/dist-esm/testing/test-init.js.map +1 -0
  380. package/dist-esm/types/index.d.ts +84 -0
  381. package/dist-esm/types/index.d.ts.map +1 -0
  382. package/dist-esm/types/index.js +7 -0
  383. package/dist-esm/types/index.js.map +1 -0
  384. package/dist-esm/types/policy.d.ts +92 -0
  385. package/dist-esm/types/policy.d.ts.map +1 -0
  386. package/dist-esm/types/policy.js +122 -0
  387. package/dist-esm/types/policy.js.map +1 -0
  388. package/package.json +102 -0
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ /**
3
+ * Tier 2 Trace Sanitizer
4
+ *
5
+ * Sanitizes spans for Tier 2 export per epic-a3-sanitized-traces.
6
+ * - Drops spans for high-volume, low-value routes (health, metrics)
7
+ * - Drops spans not in the contract
8
+ * - Drops forbidden attributes (PII, Tier 1 content)
9
+ * - Drops high-cardinality attributes (e.g. binding_keys) when configured
10
+ * - Hashes configured attributes using keyed HMAC (when hash config provided)
11
+ * - Only includes attributes in the allowlist for each span type
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.TraceSanitizer = void 0;
15
+ const node_crypto_1 = require("node:crypto");
16
+ /** http.route values for which we never export spans (high volume, no operational value). */
17
+ const DROPPED_HTTP_ROUTES = new Set([
18
+ "/health/liveness",
19
+ "/health/readiness",
20
+ "/metrics",
21
+ "/api/v1/metrics",
22
+ ]);
23
+ const tier2_traces_js_1 = require("./contracts/tier2-traces.js");
24
+ /** Normalize span name for pattern matching. Server uses "POST /path" but contract uses "HTTP POST *". */
25
+ function normalizeSpanNameForMatching(name) {
26
+ const candidates = [name];
27
+ const methodPrefix = /^(GET|POST|PUT|PATCH|DELETE)\s+/i;
28
+ const match = name.match(methodPrefix);
29
+ if (match) {
30
+ const method = match[1].toUpperCase();
31
+ candidates.push(`HTTP ${method} ${name.slice(match[0].length)}`);
32
+ }
33
+ return candidates;
34
+ }
35
+ class TraceSanitizer {
36
+ contractMap;
37
+ hashConfig;
38
+ forbiddenAttributes;
39
+ droppedAttributes;
40
+ hashedAttributes;
41
+ attributeAllowlistPassthrough;
42
+ constructor(options) {
43
+ this.hashConfig = options.hashConfig;
44
+ this.forbiddenAttributes = options.forbiddenAttributes;
45
+ this.droppedAttributes = options.droppedAttributes;
46
+ this.hashedAttributes = options.hashedAttributes;
47
+ this.attributeAllowlistPassthrough =
48
+ options.attributeAllowlistPassthrough ?? false;
49
+ const definitions = options.spanDefinitions ?? tier2_traces_js_1.TIER_2_TRACE_CONTRACT;
50
+ this.contractMap = new Map();
51
+ for (const def of definitions) {
52
+ this.contractMap.set(def.name, def);
53
+ }
54
+ }
55
+ /**
56
+ * Check if a span should be exported to Tier 2.
57
+ */
58
+ shouldExport(span) {
59
+ return this.findMatchingDefinition(span.name) !== undefined;
60
+ }
61
+ /**
62
+ * Sanitize span attributes for Tier 2 export.
63
+ * Returns null if span should not be exported.
64
+ *
65
+ * Returns a ReadableSpan-like object that delegates to the original span for
66
+ * spanContext() and other methods (spread does not copy prototype methods,
67
+ * and the OTLP exporter calls span.spanContext()).
68
+ */
69
+ sanitize(span) {
70
+ const httpRoute = span.attributes["http.route"];
71
+ const routeStr = typeof httpRoute === "string"
72
+ ? httpRoute
73
+ : typeof httpRoute === "number"
74
+ ? String(httpRoute)
75
+ : undefined;
76
+ if (routeStr !== undefined && DROPPED_HTTP_ROUTES.has(routeStr)) {
77
+ return null;
78
+ }
79
+ const definition = this.findMatchingDefinition(span.name);
80
+ if (!definition) {
81
+ return null;
82
+ }
83
+ const sanitizedAttributes = this.sanitizeAttributes(span.attributes, definition.allowedAttributes);
84
+ return {
85
+ name: span.name,
86
+ kind: span.kind,
87
+ spanContext: () => span.spanContext(),
88
+ // Preserve parent context exactly as OTLP serializers consume it.
89
+ // In current OTel SDK versions, parent linkage is read from
90
+ // `parentSpanContext` (not `parentSpanId`).
91
+ // https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/otlp-transformer/src/trace/internal.ts#L44
92
+ parentSpanContext: span.parentSpanContext,
93
+ startTime: span.startTime,
94
+ endTime: span.endTime,
95
+ status: span.status,
96
+ attributes: sanitizedAttributes,
97
+ resource: span.resource,
98
+ instrumentationScope: span.instrumentationScope,
99
+ events: this.sanitizeEvents(span.events),
100
+ links: this.sanitizeLinks(span.links),
101
+ duration: span.duration,
102
+ ended: span.ended,
103
+ droppedAttributesCount: span.droppedAttributesCount,
104
+ droppedEventsCount: span.droppedEventsCount,
105
+ droppedLinksCount: span.droppedLinksCount,
106
+ };
107
+ }
108
+ findMatchingDefinition(spanName) {
109
+ const candidates = normalizeSpanNameForMatching(spanName);
110
+ for (const name of candidates) {
111
+ if (this.contractMap.has(name)) {
112
+ return this.contractMap.get(name);
113
+ }
114
+ for (const [pattern, def] of this.contractMap) {
115
+ if (this.matchesPattern(name, pattern)) {
116
+ return def;
117
+ }
118
+ }
119
+ }
120
+ return undefined;
121
+ }
122
+ /**
123
+ * Pattern matching: "*" matches any name; suffix wildcards (e.g. "HTTP POST *", "ws.*").
124
+ * For "HTTP POST *", matches "HTTP POST" (exact) or "HTTP POST /path" (prefix + rest).
125
+ */
126
+ matchesPattern(name, pattern) {
127
+ if (pattern === "*") {
128
+ return true;
129
+ }
130
+ if (pattern.endsWith("*")) {
131
+ const prefix = pattern.slice(0, -1);
132
+ const prefixNoSpace = prefix.trimEnd();
133
+ return (name === prefixNoSpace ||
134
+ name === prefix ||
135
+ (prefix.length > 0 && name.startsWith(prefix)));
136
+ }
137
+ return name === pattern;
138
+ }
139
+ /**
140
+ * Sanitize span links for Tier 2: link attributes are filtered the same way as
141
+ * event attributes (forbidden dropped, high-cardinality dropped, hashed values).
142
+ * Link context (trace/span IDs) is preserved.
143
+ */
144
+ sanitizeLinks(links) {
145
+ if (!links?.length) {
146
+ return links ?? [];
147
+ }
148
+ return links.map((link) => ({
149
+ ...link,
150
+ attributes: this.sanitizeEventOrLinkAttributes(link.attributes ?? {}),
151
+ }));
152
+ }
153
+ /**
154
+ * Sanitize span events for Tier 2: event attributes are filtered the same way as
155
+ * span attributes (forbidden dropped, high-cardinality dropped, hashed values).
156
+ * Event names and timestamps are preserved.
157
+ */
158
+ sanitizeEvents(events) {
159
+ if (!events?.length) {
160
+ return events ?? [];
161
+ }
162
+ return events.map((event) => ({
163
+ name: event.name,
164
+ time: event.time,
165
+ attributes: this.sanitizeEventOrLinkAttributes(event.attributes ?? {}),
166
+ }));
167
+ }
168
+ /**
169
+ * Sanitize attributes that appear on events or links (no allowlist; only
170
+ * drop forbidden/high-cardinality and hash hashed).
171
+ */
172
+ sanitizeEventOrLinkAttributes(attributes) {
173
+ const result = {};
174
+ for (const [key, value] of Object.entries(attributes)) {
175
+ if (this.forbiddenAttributes.has(key)) {
176
+ continue;
177
+ }
178
+ if (this.droppedAttributes.has(key)) {
179
+ continue;
180
+ }
181
+ if (this.hashedAttributes.has(key)) {
182
+ result[key] = this.hashValue(String(value));
183
+ continue;
184
+ }
185
+ result[key] = value;
186
+ }
187
+ return result;
188
+ }
189
+ sanitizeAttributes(attributes, allowedAttrs) {
190
+ const result = {};
191
+ const allowedMap = new Map();
192
+ for (const attr of allowedAttrs) {
193
+ allowedMap.set((0, tier2_traces_js_1.getAttributeName)(attr), attr);
194
+ }
195
+ for (const [key, value] of Object.entries(attributes)) {
196
+ if (this.forbiddenAttributes.has(key)) {
197
+ continue;
198
+ }
199
+ if (this.droppedAttributes.has(key)) {
200
+ continue;
201
+ }
202
+ if (this.hashedAttributes.has(key)) {
203
+ result[key] = this.hashValue(String(value));
204
+ continue;
205
+ }
206
+ if (this.attributeAllowlistPassthrough) {
207
+ result[key] = value;
208
+ continue;
209
+ }
210
+ if (!allowedMap.has(key)) {
211
+ continue;
212
+ }
213
+ const attrDef = allowedMap.get(key);
214
+ if (typeof attrDef === "object" && attrDef.allowedValues != null) {
215
+ if (!attrDef.allowedValues.includes(String(value))) {
216
+ continue;
217
+ }
218
+ }
219
+ result[key] = value;
220
+ }
221
+ return result;
222
+ }
223
+ hashValue(value) {
224
+ if (!this.hashConfig) {
225
+ return "[redacted]";
226
+ }
227
+ const hmac = (0, node_crypto_1.createHmac)(this.hashConfig.algorithm, this.hashConfig.secretKey);
228
+ hmac.update(this.hashConfig.salt);
229
+ hmac.update(value);
230
+ return hmac.digest("hex").slice(0, this.hashConfig.outputLengthBytes * 2);
231
+ }
232
+ }
233
+ exports.TraceSanitizer = TraceSanitizer;
234
+ //# sourceMappingURL=trace-sanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-sanitizer.js","sourceRoot":"","sources":["../../src/common/trace-sanitizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Shared TracedSocket types for WebSocket message envelopes.
3
+ *
4
+ * Both the browser (TracedSocket in telemetry/browser) and the server
5
+ * (TracedSocket in telemetry/node) inject and extract trace context using
6
+ * these field names. Keeping them in one place ensures the two sides speak
7
+ * the same envelope protocol so traces link correctly end-to-end.
8
+ *
9
+ * Envelope structure mirrors @superblocksteam/shared SocketRequest:
10
+ * { request?: { method, payload, id, traceparent?, tracestate?, ... } }
11
+ *
12
+ * The W3C Trace Context propagator writes/reads exactly these two fields.
13
+ * See: https://www.w3.org/TR/trace-context/
14
+ */
15
+ /**
16
+ * W3C Trace Context fields that live inside a socket message's request object.
17
+ * The propagator uses these as the carrier for context injection/extraction.
18
+ */
19
+ export interface SocketTraceContext {
20
+ traceparent?: string;
21
+ tracestate?: string;
22
+ }
23
+ /**
24
+ * Minimal shape of the request portion of a socket message envelope.
25
+ * Both browser and server code passes this object as the propagation carrier.
26
+ */
27
+ export interface SocketRequestEnvelope extends SocketTraceContext {
28
+ method?: string;
29
+ id?: number;
30
+ [key: string]: unknown;
31
+ }
32
+ /**
33
+ * Minimal shape of the full socket message envelope.
34
+ * Request messages carry trace context; response messages do not.
35
+ */
36
+ export interface SocketMessageEnvelope {
37
+ request?: SocketRequestEnvelope;
38
+ response?: {
39
+ id?: number;
40
+ [key: string]: unknown;
41
+ };
42
+ }
43
+ //# sourceMappingURL=traced-socket-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traced-socket-types.d.ts","sourceRoot":"","sources":["../../src/common/traced-socket-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,QAAQ,CAAC,EAAE;QACT,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * Shared TracedSocket types for WebSocket message envelopes.
4
+ *
5
+ * Both the browser (TracedSocket in telemetry/browser) and the server
6
+ * (TracedSocket in telemetry/node) inject and extract trace context using
7
+ * these field names. Keeping them in one place ensures the two sides speak
8
+ * the same envelope protocol so traces link correctly end-to-end.
9
+ *
10
+ * Envelope structure mirrors @superblocksteam/shared SocketRequest:
11
+ * { request?: { method, payload, id, traceparent?, tracestate?, ... } }
12
+ *
13
+ * The W3C Trace Context propagator writes/reads exactly these two fields.
14
+ * See: https://www.w3.org/TR/trace-context/
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ //# sourceMappingURL=traced-socket-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traced-socket-types.js","sourceRoot":"","sources":["../../src/common/traced-socket-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @superblocksteam/telemetry
3
+ *
4
+ * Canonical telemetry bootstrap package for all Superblocks services.
5
+ * Provides policy-aware OpenTelemetry initialization with tier-based routing.
6
+ *
7
+ * This package is the ONLY approved way to initialize telemetry.
8
+ * Direct usage of NodeSDK or WebTracerProvider is prohibited.
9
+ *
10
+ * ## Usage
11
+ *
12
+ * ### Node.js Services
13
+ *
14
+ * ```typescript
15
+ * import { initNodeTelemetry } from '@superblocksteam/telemetry/node';
16
+ * import { getDefaultPolicy, DeploymentType } from '@superblocksteam/shared';
17
+ *
18
+ * const policy = getDefaultPolicy(DeploymentType.CLOUD_PREM);
19
+ * const telemetry = initNodeTelemetry({
20
+ * serviceName: 'my-service',
21
+ * serviceVersion: '1.0.0',
22
+ * environment: 'production',
23
+ * otlpUrl: 'http://localhost:4318',
24
+ * }, policy);
25
+ * ```
26
+ *
27
+ * ### Browser
28
+ *
29
+ * ```typescript
30
+ * import { initBrowserTelemetry } from '@superblocksteam/telemetry/browser';
31
+ * ```
32
+ *
33
+ * ### Testing
34
+ *
35
+ * ```typescript
36
+ * import { initTestTelemetry } from '@superblocksteam/telemetry/testing';
37
+ * ```
38
+ */
39
+ export * from "./types/index.js";
40
+ export * from "./common/index.js";
41
+ export * from "./npm-registry/index.js";
42
+ export * from "./llmobs/index.js";
43
+ export { REDACTED_PLACEHOLDER } from "./common/index.js";
44
+ export { createSafeLogger, getLoggingPolicy, getMinimumPinoLevelForDeployment, getMinimumPinoLevelFromLoggingPolicy, parseLogExportMode, getTelemetryInstance, initNodeTelemetry, isLocalObsMode, isTelemetryInitialized, LogExportMode, redactForbiddenFields, resetTelemetry, type NodeTelemetryInstance, type LoggingPolicyConfig, type SafeLoggerLike, MetricsClient, type Labels, type CounterHandle, type CounterOptions, type GaugeHandle, type HistogramHandle, type HistogramOptions, TracedSocket, type TracedSocketConfig, type TracedSocketOptions, } from "./node/index.js";
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,mBAAmB,CAAC;AAIlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gCAAgC,EAChC,oCAAoC,EACpC,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,aAAa,EACb,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ /**
3
+ * @superblocksteam/telemetry
4
+ *
5
+ * Canonical telemetry bootstrap package for all Superblocks services.
6
+ * Provides policy-aware OpenTelemetry initialization with tier-based routing.
7
+ *
8
+ * This package is the ONLY approved way to initialize telemetry.
9
+ * Direct usage of NodeSDK or WebTracerProvider is prohibited.
10
+ *
11
+ * ## Usage
12
+ *
13
+ * ### Node.js Services
14
+ *
15
+ * ```typescript
16
+ * import { initNodeTelemetry } from '@superblocksteam/telemetry/node';
17
+ * import { getDefaultPolicy, DeploymentType } from '@superblocksteam/shared';
18
+ *
19
+ * const policy = getDefaultPolicy(DeploymentType.CLOUD_PREM);
20
+ * const telemetry = initNodeTelemetry({
21
+ * serviceName: 'my-service',
22
+ * serviceVersion: '1.0.0',
23
+ * environment: 'production',
24
+ * otlpUrl: 'http://localhost:4318',
25
+ * }, policy);
26
+ * ```
27
+ *
28
+ * ### Browser
29
+ *
30
+ * ```typescript
31
+ * import { initBrowserTelemetry } from '@superblocksteam/telemetry/browser';
32
+ * ```
33
+ *
34
+ * ### Testing
35
+ *
36
+ * ```typescript
37
+ * import { initTestTelemetry } from '@superblocksteam/telemetry/testing';
38
+ * ```
39
+ */
40
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
41
+ if (k2 === undefined) k2 = k;
42
+ var desc = Object.getOwnPropertyDescriptor(m, k);
43
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
44
+ desc = { enumerable: true, get: function() { return m[k]; } };
45
+ }
46
+ Object.defineProperty(o, k2, desc);
47
+ }) : (function(o, m, k, k2) {
48
+ if (k2 === undefined) k2 = k;
49
+ o[k2] = m[k];
50
+ }));
51
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
52
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
53
+ };
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.TracedSocket = exports.MetricsClient = exports.resetTelemetry = exports.redactForbiddenFields = exports.LogExportMode = exports.isTelemetryInitialized = exports.isLocalObsMode = exports.initNodeTelemetry = exports.getTelemetryInstance = exports.parseLogExportMode = exports.getMinimumPinoLevelFromLoggingPolicy = exports.getMinimumPinoLevelForDeployment = exports.getLoggingPolicy = exports.createSafeLogger = exports.REDACTED_PLACEHOLDER = void 0;
56
+ // Re-export types
57
+ __exportStar(require("./types/index.js"), exports);
58
+ // Re-export common utilities
59
+ __exportStar(require("./common/index.js"), exports);
60
+ // Re-export npm-registry telemetry (sanitization, metrics emitter, spans)
61
+ __exportStar(require("./npm-registry/index.js"), exports);
62
+ // Re-export LLMObs tiered telemetry
63
+ __exportStar(require("./llmobs/index.js"), exports);
64
+ // Re-export Node.js telemetry functions for convenience
65
+ // This allows imports like: import { initNodeTelemetry } from '@superblocksteam/telemetry'
66
+ var index_js_1 = require("./common/index.js");
67
+ Object.defineProperty(exports, "REDACTED_PLACEHOLDER", { enumerable: true, get: function () { return index_js_1.REDACTED_PLACEHOLDER; } });
68
+ var index_js_2 = require("./node/index.js");
69
+ Object.defineProperty(exports, "createSafeLogger", { enumerable: true, get: function () { return index_js_2.createSafeLogger; } });
70
+ Object.defineProperty(exports, "getLoggingPolicy", { enumerable: true, get: function () { return index_js_2.getLoggingPolicy; } });
71
+ Object.defineProperty(exports, "getMinimumPinoLevelForDeployment", { enumerable: true, get: function () { return index_js_2.getMinimumPinoLevelForDeployment; } });
72
+ Object.defineProperty(exports, "getMinimumPinoLevelFromLoggingPolicy", { enumerable: true, get: function () { return index_js_2.getMinimumPinoLevelFromLoggingPolicy; } });
73
+ Object.defineProperty(exports, "parseLogExportMode", { enumerable: true, get: function () { return index_js_2.parseLogExportMode; } });
74
+ Object.defineProperty(exports, "getTelemetryInstance", { enumerable: true, get: function () { return index_js_2.getTelemetryInstance; } });
75
+ Object.defineProperty(exports, "initNodeTelemetry", { enumerable: true, get: function () { return index_js_2.initNodeTelemetry; } });
76
+ Object.defineProperty(exports, "isLocalObsMode", { enumerable: true, get: function () { return index_js_2.isLocalObsMode; } });
77
+ Object.defineProperty(exports, "isTelemetryInitialized", { enumerable: true, get: function () { return index_js_2.isTelemetryInitialized; } });
78
+ Object.defineProperty(exports, "LogExportMode", { enumerable: true, get: function () { return index_js_2.LogExportMode; } });
79
+ Object.defineProperty(exports, "redactForbiddenFields", { enumerable: true, get: function () { return index_js_2.redactForbiddenFields; } });
80
+ Object.defineProperty(exports, "resetTelemetry", { enumerable: true, get: function () { return index_js_2.resetTelemetry; } });
81
+ Object.defineProperty(exports, "MetricsClient", { enumerable: true, get: function () { return index_js_2.MetricsClient; } });
82
+ Object.defineProperty(exports, "TracedSocket", { enumerable: true, get: function () { return index_js_2.TracedSocket; } });
83
+ // Note: Browser and Testing modules are still exported via package.json subpath exports
84
+ // Import them as:
85
+ // - @superblocksteam/telemetry/browser
86
+ // - @superblocksteam/telemetry/testing
87
+ // - @superblocksteam/telemetry/llmobs
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;;;;;;;;;;;;;;;;;AAEH,kBAAkB;AAClB,mDAAiC;AAEjC,6BAA6B;AAC7B,oDAAkC;AAElC,0EAA0E;AAC1E,0DAAwC;AAExC,oCAAoC;AACpC,oDAAkC;AAElC,wDAAwD;AACxD,2FAA2F;AAC3F,8CAAyD;AAAhD,gHAAA,oBAAoB,OAAA;AAC7B,4CA0ByB;AAzBvB,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAChB,4HAAA,gCAAgC,OAAA;AAChC,gIAAA,oCAAoC,OAAA;AACpC,8GAAA,kBAAkB,OAAA;AAClB,gHAAA,oBAAoB,OAAA;AACpB,6GAAA,iBAAiB,OAAA;AACjB,0GAAA,cAAc,OAAA;AACd,kHAAA,sBAAsB,OAAA;AACtB,yGAAA,aAAa,OAAA;AACb,iHAAA,qBAAqB,OAAA;AACrB,0GAAA,cAAc,OAAA;AAId,yGAAA,aAAa,OAAA;AAOb,wGAAA,YAAY,OAAA;AAKd,wFAAwF;AACxF,kBAAkB;AAClB,yCAAyC;AACzC,yCAAyC;AACzC,wCAAwC"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * ESLint Rule: No Forbidden Telemetry Attributes
3
+ *
4
+ * This rule detects usage of forbidden attributes in span/metric instrumentation.
5
+ * It catches common leak paths before code is merged.
6
+ *
7
+ * Usage in eslint.config.js:
8
+ * ```
9
+ * import { noForbiddenTelemetryAttributes } from '@superblocksteam/telemetry/lint';
10
+ *
11
+ * export default [
12
+ * {
13
+ * plugins: {
14
+ * telemetry: { rules: { 'no-forbidden-attributes': noForbiddenTelemetryAttributes } }
15
+ * },
16
+ * rules: {
17
+ * 'telemetry/no-forbidden-attributes': 'error'
18
+ * }
19
+ * }
20
+ * ];
21
+ * ```
22
+ */
23
+ /**
24
+ * Forbidden attribute patterns for static analysis.
25
+ */
26
+ export declare const FORBIDDEN_ATTRIBUTE_PATTERNS: string[];
27
+ /**
28
+ * ESLint rule metadata.
29
+ */
30
+ export declare const noForbiddenTelemetryAttributesMeta: {
31
+ type: string;
32
+ docs: {
33
+ description: string;
34
+ category: string;
35
+ recommended: boolean;
36
+ };
37
+ messages: {
38
+ forbiddenAttribute: string;
39
+ resourceOnlyAttribute: string;
40
+ };
41
+ schema: never[];
42
+ };
43
+ /**
44
+ * ESLint rule implementation.
45
+ *
46
+ * Detects patterns like:
47
+ * - span.setAttribute('prompt', value)
48
+ * - span.setAttributes({ prompt: value })
49
+ * - { 'prompt': value }
50
+ */
51
+ export declare function noForbiddenTelemetryAttributesCreate(context: any): {
52
+ CallExpression(node: any): void;
53
+ Property(node: any): void;
54
+ };
55
+ /**
56
+ * Complete ESLint rule export.
57
+ */
58
+ export declare const noForbiddenTelemetryAttributes: {
59
+ meta: {
60
+ type: string;
61
+ docs: {
62
+ description: string;
63
+ category: string;
64
+ recommended: boolean;
65
+ };
66
+ messages: {
67
+ forbiddenAttribute: string;
68
+ resourceOnlyAttribute: string;
69
+ };
70
+ schema: never[];
71
+ };
72
+ create: typeof noForbiddenTelemetryAttributesCreate;
73
+ };
74
+ /**
75
+ * ESLint rule: No Direct OTEL SDK Usage
76
+ *
77
+ * Detects direct usage of NodeSDK or WebTracerProvider outside the telemetry package.
78
+ */
79
+ export declare const noDirectOtelSdkMeta: {
80
+ type: string;
81
+ docs: {
82
+ description: string;
83
+ category: string;
84
+ recommended: boolean;
85
+ };
86
+ messages: {
87
+ directSdkUsage: string;
88
+ };
89
+ schema: never[];
90
+ };
91
+ export declare function noDirectOtelSdkCreate(context: any): {
92
+ ImportSpecifier?: undefined;
93
+ CallExpression?: undefined;
94
+ } | {
95
+ ImportSpecifier(node: any): void;
96
+ CallExpression(node: any): void;
97
+ };
98
+ export declare const noDirectOtelSdk: {
99
+ meta: {
100
+ type: string;
101
+ docs: {
102
+ description: string;
103
+ category: string;
104
+ recommended: boolean;
105
+ };
106
+ messages: {
107
+ directSdkUsage: string;
108
+ };
109
+ schema: never[];
110
+ };
111
+ create: typeof noDirectOtelSdkCreate;
112
+ };
113
+ /**
114
+ * All telemetry ESLint rules.
115
+ */
116
+ export declare const telemetryRules: {
117
+ "no-forbidden-attributes": {
118
+ meta: {
119
+ type: string;
120
+ docs: {
121
+ description: string;
122
+ category: string;
123
+ recommended: boolean;
124
+ };
125
+ messages: {
126
+ forbiddenAttribute: string;
127
+ resourceOnlyAttribute: string;
128
+ };
129
+ schema: never[];
130
+ };
131
+ create: typeof noForbiddenTelemetryAttributesCreate;
132
+ };
133
+ "no-direct-otel-sdk": {
134
+ meta: {
135
+ type: string;
136
+ docs: {
137
+ description: string;
138
+ category: string;
139
+ recommended: boolean;
140
+ };
141
+ messages: {
142
+ directSdkUsage: string;
143
+ };
144
+ schema: never[];
145
+ };
146
+ create: typeof noDirectOtelSdkCreate;
147
+ };
148
+ };
149
+ //# sourceMappingURL=forbidden-attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forbidden-attributes.d.ts","sourceRoot":"","sources":["../../src/lint/forbidden-attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH;;GAEG;AACH,eAAO,MAAM,4BAA4B,UAKxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;CAgB9C,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,GAAG;yBAsBxC,GAAG;mBAgCT,GAAG;EAuBrB;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;CAG1C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;CAc/B,CAAC;AAYF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,GAAG;;;;0BASxB,GAAG;yBAYJ,GAAG;EAsB3B;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;CAG3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG1B,CAAC"}