@geekmidas/telescope 10.0.0-alpha.99 → 10.0.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 (480) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +18 -28
  3. package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts +47 -0
  4. package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts.map +1 -0
  5. package/dist/InMemoryMetricsStorage-C4drxT7G.mjs +247 -0
  6. package/dist/InMemoryMetricsStorage-C4drxT7G.mjs.map +1 -0
  7. package/dist/InMemoryMetricsStorage-D0njWUSi.cjs +252 -0
  8. package/dist/InMemoryMetricsStorage-D0njWUSi.cjs.map +1 -0
  9. package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts +47 -0
  10. package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts.map +1 -0
  11. package/dist/{MetricsAggregator-BJdIvfEv.d.mts → MetricsAggregator-4SqelGcG.d.cts} +6 -3
  12. package/dist/MetricsAggregator-4SqelGcG.d.cts.map +1 -0
  13. package/dist/MetricsAggregator-B7lUICdH.cjs +363 -0
  14. package/dist/MetricsAggregator-B7lUICdH.cjs.map +1 -0
  15. package/dist/{MetricsAggregator-CnC3oT5q.d.cts → MetricsAggregator-DZrW8ls6.d.mts} +6 -3
  16. package/dist/MetricsAggregator-DZrW8ls6.d.mts.map +1 -0
  17. package/dist/MetricsAggregator-S3DQWNas.mjs +357 -0
  18. package/dist/MetricsAggregator-S3DQWNas.mjs.map +1 -0
  19. package/dist/MetricsStorage-B86e4131.d.cts +60 -0
  20. package/dist/MetricsStorage-B86e4131.d.cts.map +1 -0
  21. package/dist/MetricsStorage-BWyP2_12.d.mts +60 -0
  22. package/dist/MetricsStorage-BWyP2_12.d.mts.map +1 -0
  23. package/dist/MetricsStorage-BypQXWiv.mjs +0 -0
  24. package/dist/MetricsStorage-Or8pVCe4.cjs +0 -0
  25. package/dist/Telescope-Cs3fv8jt.cjs +395 -0
  26. package/dist/Telescope-Cs3fv8jt.cjs.map +1 -0
  27. package/dist/{Telescope-BVfDvVvY.d.mts → Telescope-D4nmwDRA.d.cts} +7 -4
  28. package/dist/Telescope-D4nmwDRA.d.cts.map +1 -0
  29. package/dist/Telescope-Dh5av3FC.mjs +389 -0
  30. package/dist/Telescope-Dh5av3FC.mjs.map +1 -0
  31. package/dist/{Telescope-DeqSHfuB.d.cts → Telescope-Dl6VSfxd.d.mts} +7 -4
  32. package/dist/Telescope-Dl6VSfxd.d.mts.map +1 -0
  33. package/dist/Telescope.cjs +4 -385
  34. package/dist/Telescope.d.cts +3 -1
  35. package/dist/Telescope.d.mts +3 -1
  36. package/dist/Telescope.mjs +4 -384
  37. package/dist/adapters/index.d.cts +2 -2
  38. package/dist/adapters/index.d.mts +2 -2
  39. package/dist/adapters/index.mjs +0 -1
  40. package/dist/adapters/lambda.cjs +10 -9
  41. package/dist/adapters/lambda.cjs.map +1 -1
  42. package/dist/adapters/lambda.d.cts +13 -9
  43. package/dist/adapters/lambda.d.cts.map +1 -1
  44. package/dist/adapters/lambda.d.mts +13 -9
  45. package/dist/adapters/lambda.d.mts.map +1 -1
  46. package/dist/adapters/lambda.mjs +4 -3
  47. package/dist/adapters/lambda.mjs.map +1 -1
  48. package/dist/adapters/middy.cjs +4 -236
  49. package/dist/adapters/middy.d.cts +5 -60
  50. package/dist/adapters/middy.d.mts +5 -60
  51. package/dist/adapters/middy.mjs +3 -234
  52. package/dist/adapters/types.d.cts +2 -162
  53. package/dist/adapters/types.d.mts +2 -162
  54. package/dist/adapters/types.mjs +0 -1
  55. package/dist/{rolldown-runtime-VH7oDXx4.cjs → chunk-CUT6urMc.cjs} +10 -8
  56. package/dist/core--quSp5Qr.d.mts +78 -0
  57. package/dist/core--quSp5Qr.d.mts.map +1 -0
  58. package/dist/core-B4Jpia5H.d.cts +78 -0
  59. package/dist/core-B4Jpia5H.d.cts.map +1 -0
  60. package/dist/core-CtVHRJGv.cjs +199 -0
  61. package/dist/core-CtVHRJGv.cjs.map +1 -0
  62. package/dist/core-D6hJ6exL.mjs +139 -0
  63. package/dist/core-D6hJ6exL.mjs.map +1 -0
  64. package/dist/core.cjs +22 -22
  65. package/dist/core.d.cts +4 -4
  66. package/dist/core.d.mts +4 -4
  67. package/dist/core.mjs +4 -3
  68. package/dist/hono--uKQ7Jgi.d.mts +71 -0
  69. package/dist/hono--uKQ7Jgi.d.mts.map +1 -0
  70. package/dist/hono-C4EgpbKQ.cjs +160 -0
  71. package/dist/hono-C4EgpbKQ.cjs.map +1 -0
  72. package/dist/hono-CemCKU87.d.cts +71 -0
  73. package/dist/hono-CemCKU87.d.cts.map +1 -0
  74. package/dist/hono-DxhvnVbF.mjs +136 -0
  75. package/dist/hono-DxhvnVbF.mjs.map +1 -0
  76. package/dist/http-BiNtg85L.d.mts +107 -0
  77. package/dist/http-BiNtg85L.d.mts.map +1 -0
  78. package/dist/http-DQzgLczm.mjs +159 -0
  79. package/dist/http-DQzgLczm.mjs.map +1 -0
  80. package/dist/http-D_Z8sYXZ.cjs +219 -0
  81. package/dist/http-D_Z8sYXZ.cjs.map +1 -0
  82. package/dist/http-Dvca6fC3.d.cts +107 -0
  83. package/dist/http-Dvca6fC3.d.cts.map +1 -0
  84. package/dist/index-BL32-cvv.d.cts +1 -0
  85. package/dist/index-CsuikFeJ.d.mts +1 -0
  86. package/dist/index.cjs +9 -8
  87. package/dist/index.d.cts +6 -5
  88. package/dist/index.d.mts +6 -5
  89. package/dist/index.mjs +7 -5
  90. package/dist/instrumentation/core.cjs +11 -147
  91. package/dist/instrumentation/core.d.cts +3 -74
  92. package/dist/instrumentation/core.d.mts +3 -74
  93. package/dist/instrumentation/core.mjs +2 -137
  94. package/dist/instrumentation/hono.cjs +6 -174
  95. package/dist/instrumentation/hono.d.cts +2 -86
  96. package/dist/instrumentation/hono.d.mts +2 -86
  97. package/dist/instrumentation/hono.mjs +3 -170
  98. package/dist/instrumentation/http.cjs +11 -189
  99. package/dist/instrumentation/http.d.cts +2 -119
  100. package/dist/instrumentation/http.d.mts +2 -119
  101. package/dist/instrumentation/http.mjs +2 -178
  102. package/dist/instrumentation/index.cjs +47 -56
  103. package/dist/instrumentation/index.d.cts +9 -11
  104. package/dist/instrumentation/index.d.mts +9 -11
  105. package/dist/instrumentation/index.mjs +9 -10
  106. package/dist/instrumentation/middleware.cjs +6 -164
  107. package/dist/instrumentation/middleware.d.cts +2 -83
  108. package/dist/instrumentation/middleware.d.mts +2 -83
  109. package/dist/instrumentation/middleware.mjs +3 -160
  110. package/dist/instrumentation/otel.cjs +3 -137
  111. package/dist/instrumentation/otel.d.cts +2 -97
  112. package/dist/instrumentation/otel.d.mts +2 -97
  113. package/dist/instrumentation/otel.mjs +3 -136
  114. package/dist/instrumentation/setup.cjs +4 -142
  115. package/dist/instrumentation/setup.d.cts +3 -139
  116. package/dist/instrumentation/setup.d.mts +3 -139
  117. package/dist/instrumentation/setup.mjs +3 -139
  118. package/dist/instrumentation/tracing.cjs +10 -114
  119. package/dist/instrumentation/tracing.d.cts +2 -49
  120. package/dist/instrumentation/tracing.d.mts +2 -49
  121. package/dist/instrumentation/tracing.mjs +2 -105
  122. package/dist/logger/console.cjs +12 -18
  123. package/dist/logger/console.cjs.map +1 -1
  124. package/dist/logger/console.d.cts +10 -7
  125. package/dist/logger/console.d.cts.map +1 -1
  126. package/dist/logger/console.d.mts +10 -7
  127. package/dist/logger/console.d.mts.map +1 -1
  128. package/dist/logger/console.mjs +11 -17
  129. package/dist/logger/console.mjs.map +1 -1
  130. package/dist/logger/pino.cjs +5 -6
  131. package/dist/logger/pino.cjs.map +1 -1
  132. package/dist/logger/pino.d.cts +10 -6
  133. package/dist/logger/pino.d.cts.map +1 -1
  134. package/dist/logger/pino.d.mts +10 -6
  135. package/dist/logger/pino.d.mts.map +1 -1
  136. package/dist/logger/pino.mjs +3 -2
  137. package/dist/logger/pino.mjs.map +1 -1
  138. package/dist/memory--BK4iWiv.d.cts +40 -0
  139. package/dist/memory--BK4iWiv.d.cts.map +1 -0
  140. package/dist/memory-6S9H-IF5.mjs +123 -0
  141. package/dist/memory-6S9H-IF5.mjs.map +1 -0
  142. package/dist/memory-B0d_n1g5.cjs +129 -0
  143. package/dist/memory-B0d_n1g5.cjs.map +1 -0
  144. package/dist/memory-DCirEVFW.d.mts +40 -0
  145. package/dist/memory-DCirEVFW.d.mts.map +1 -0
  146. package/dist/metrics/MetricsAggregator.cjs +2 -354
  147. package/dist/metrics/MetricsAggregator.d.cts +2 -1
  148. package/dist/metrics/MetricsAggregator.d.mts +2 -1
  149. package/dist/metrics/MetricsAggregator.mjs +2 -353
  150. package/dist/metrics/index.cjs +4 -3
  151. package/dist/metrics/index.d.cts +4 -2
  152. package/dist/metrics/index.d.mts +4 -2
  153. package/dist/metrics/index.mjs +4 -2
  154. package/dist/metrics/storage/InMemoryMetricsStorage.cjs +3 -240
  155. package/dist/metrics/storage/InMemoryMetricsStorage.d.cts +4 -43
  156. package/dist/metrics/storage/InMemoryMetricsStorage.d.mts +4 -43
  157. package/dist/metrics/storage/InMemoryMetricsStorage.mjs +3 -239
  158. package/dist/metrics/storage/MetricsStorage.cjs +1 -0
  159. package/dist/metrics/storage/MetricsStorage.d.cts +3 -56
  160. package/dist/metrics/storage/MetricsStorage.d.mts +3 -56
  161. package/dist/metrics/storage/MetricsStorage.mjs +1 -1
  162. package/dist/metrics/storage/index.cjs +6 -6
  163. package/dist/metrics/storage/index.d.cts +3 -3
  164. package/dist/metrics/storage/index.d.mts +3 -3
  165. package/dist/metrics/storage/index.mjs +5 -4
  166. package/dist/metrics/storage/types.cjs +2 -34
  167. package/dist/metrics/storage/types.d.cts +2 -207
  168. package/dist/metrics/storage/types.d.mts +2 -207
  169. package/dist/metrics/storage/types.mjs +2 -33
  170. package/dist/metrics-D5YT-Rnq.mjs +0 -0
  171. package/dist/metrics-fhD3l3C3.cjs +0 -0
  172. package/dist/middleware-B2jFUukM.cjs +184 -0
  173. package/dist/middleware-B2jFUukM.cjs.map +1 -0
  174. package/dist/middleware-BTDncHwm.mjs +160 -0
  175. package/dist/middleware-BTDncHwm.mjs.map +1 -0
  176. package/dist/middleware-CA84nsNN.d.cts +74 -0
  177. package/dist/middleware-CA84nsNN.d.cts.map +1 -0
  178. package/dist/middleware-DAceVpfw.d.mts +74 -0
  179. package/dist/middleware-DAceVpfw.d.mts.map +1 -0
  180. package/dist/middy-B6Btl8XE.d.mts +64 -0
  181. package/dist/middy-B6Btl8XE.d.mts.map +1 -0
  182. package/dist/middy-BTR3cyvk.mjs +236 -0
  183. package/dist/middy-BTR3cyvk.mjs.map +1 -0
  184. package/dist/middy-Bq0defVg.d.cts +64 -0
  185. package/dist/middy-Bq0defVg.d.cts.map +1 -0
  186. package/dist/middy-y5Zp27eG.cjs +247 -0
  187. package/dist/middy-y5Zp27eG.cjs.map +1 -0
  188. package/dist/otel-1bJPb2Z7.d.mts +101 -0
  189. package/dist/otel-1bJPb2Z7.d.mts.map +1 -0
  190. package/dist/otel-C1HqHA2O.cjs +136 -0
  191. package/dist/otel-C1HqHA2O.cjs.map +1 -0
  192. package/dist/otel-SBVoVEHr.d.cts +101 -0
  193. package/dist/otel-SBVoVEHr.d.cts.map +1 -0
  194. package/dist/otel-wulj5B-X.mjs +130 -0
  195. package/dist/otel-wulj5B-X.mjs.map +1 -0
  196. package/dist/otlp/hono.cjs +15 -9
  197. package/dist/otlp/hono.cjs.map +1 -1
  198. package/dist/otlp/hono.d.cts +13 -3
  199. package/dist/otlp/hono.d.cts.map +1 -1
  200. package/dist/otlp/hono.d.mts +13 -3
  201. package/dist/otlp/hono.d.mts.map +1 -1
  202. package/dist/otlp/hono.mjs +11 -5
  203. package/dist/otlp/hono.mjs.map +1 -1
  204. package/dist/otlp/index.cjs +11 -11
  205. package/dist/otlp/index.d.cts +7 -4
  206. package/dist/otlp/index.d.mts +7 -4
  207. package/dist/otlp/index.mjs +5 -4
  208. package/dist/otlp/receiver.cjs +4 -88
  209. package/dist/otlp/receiver.d.cts +7 -59
  210. package/dist/otlp/receiver.d.mts +7 -59
  211. package/dist/otlp/receiver.mjs +4 -87
  212. package/dist/otlp/transformer.cjs +5 -214
  213. package/dist/otlp/transformer.d.cts +3 -1
  214. package/dist/otlp/transformer.d.mts +3 -1
  215. package/dist/otlp/transformer.mjs +3 -211
  216. package/dist/otlp/types.cjs +5 -57
  217. package/dist/otlp/types.d.cts +1 -1
  218. package/dist/otlp/types.d.mts +1 -1
  219. package/dist/otlp/types.mjs +2 -53
  220. package/dist/receiver-Cj1lbAOO.cjs +94 -0
  221. package/dist/receiver-Cj1lbAOO.cjs.map +1 -0
  222. package/dist/receiver-CxVd_9CB.mjs +89 -0
  223. package/dist/receiver-CxVd_9CB.mjs.map +1 -0
  224. package/dist/receiver-DLICx5uU.d.cts +63 -0
  225. package/dist/receiver-DLICx5uU.d.cts.map +1 -0
  226. package/dist/receiver-UeZT-H8u.d.mts +63 -0
  227. package/dist/receiver-UeZT-H8u.d.mts.map +1 -0
  228. package/dist/redact-BzkITCNW.mjs +83 -0
  229. package/dist/redact-BzkITCNW.mjs.map +1 -0
  230. package/dist/redact-DVaSSPZT.cjs +95 -0
  231. package/dist/redact-DVaSSPZT.cjs.map +1 -0
  232. package/dist/redact.cjs +3 -84
  233. package/dist/redact.d.cts +8 -4
  234. package/dist/redact.d.cts.map +1 -1
  235. package/dist/redact.d.mts +8 -4
  236. package/dist/redact.d.mts.map +1 -1
  237. package/dist/redact.mjs +2 -80
  238. package/dist/server/hono.cjs +54 -33
  239. package/dist/server/hono.cjs.map +1 -1
  240. package/dist/server/hono.d.cts +14 -19
  241. package/dist/server/hono.d.cts.map +1 -1
  242. package/dist/server/hono.d.mts +14 -19
  243. package/dist/server/hono.d.mts.map +1 -1
  244. package/dist/server/hono.mjs +52 -31
  245. package/dist/server/hono.mjs.map +1 -1
  246. package/dist/setup-B9jM77Qk.mjs +98 -0
  247. package/dist/setup-B9jM77Qk.mjs.map +1 -0
  248. package/dist/setup-Bkxm4g6b.d.mts +87 -0
  249. package/dist/setup-Bkxm4g6b.d.mts.map +1 -0
  250. package/dist/setup-CYpff5B9.cjs +110 -0
  251. package/dist/setup-CYpff5B9.cjs.map +1 -0
  252. package/dist/setup-D58N1f9O.d.cts +87 -0
  253. package/dist/setup-D58N1f9O.d.cts.map +1 -0
  254. package/dist/storage/kysely.cjs +70 -82
  255. package/dist/storage/kysely.cjs.map +1 -1
  256. package/dist/storage/kysely.d.cts +20 -36
  257. package/dist/storage/kysely.d.cts.map +1 -1
  258. package/dist/storage/kysely.d.mts +20 -36
  259. package/dist/storage/kysely.d.mts.map +1 -1
  260. package/dist/storage/kysely.mjs +69 -81
  261. package/dist/storage/kysely.mjs.map +1 -1
  262. package/dist/storage/memory.cjs +2 -122
  263. package/dist/storage/memory.d.cts +3 -36
  264. package/dist/storage/memory.d.mts +3 -36
  265. package/dist/storage/memory.mjs +2 -121
  266. package/dist/tracing-BX8uY2nR.d.cts +53 -0
  267. package/dist/tracing-BX8uY2nR.d.cts.map +1 -0
  268. package/dist/tracing-Bt1zWRlb.cjs +167 -0
  269. package/dist/tracing-Bt1zWRlb.cjs.map +1 -0
  270. package/dist/tracing-Cijm_5NI.mjs +113 -0
  271. package/dist/tracing-Cijm_5NI.mjs.map +1 -0
  272. package/dist/tracing-PnECEbEu.d.mts +53 -0
  273. package/dist/tracing-PnECEbEu.d.mts.map +1 -0
  274. package/dist/transformer-BXQPhzql.mjs +215 -0
  275. package/dist/transformer-BXQPhzql.mjs.map +1 -0
  276. package/dist/transformer-CLGZ0EQc.cjs +232 -0
  277. package/dist/transformer-CLGZ0EQc.cjs.map +1 -0
  278. package/dist/{transformer-BtqjAs0b.d.cts → transformer-CTGsaVfV.d.mts} +8 -4
  279. package/dist/transformer-CTGsaVfV.d.mts.map +1 -0
  280. package/dist/{transformer-DI6t8-YA.d.mts → transformer-ICEbxpFf.d.cts} +8 -4
  281. package/dist/transformer-ICEbxpFf.d.cts.map +1 -0
  282. package/dist/{types-BVujq4zd.d.mts → types-B1EIa_cQ.d.mts} +4 -3
  283. package/dist/types-B1EIa_cQ.d.mts.map +1 -0
  284. package/dist/types-BRzW1NM8.d.cts +166 -0
  285. package/dist/types-BRzW1NM8.d.cts.map +1 -0
  286. package/dist/types-BS3Rx8Sk.d.cts +209 -0
  287. package/dist/types-BS3Rx8Sk.d.cts.map +1 -0
  288. package/dist/types-Bwm_jNU7.mjs +54 -0
  289. package/dist/types-Bwm_jNU7.mjs.map +1 -0
  290. package/dist/types-BzQ78Efw.d.mts +166 -0
  291. package/dist/types-BzQ78Efw.d.mts.map +1 -0
  292. package/dist/types-CbNGXnJE.d.mts +209 -0
  293. package/dist/types-CbNGXnJE.d.mts.map +1 -0
  294. package/dist/{types-DVETVdpa.d.cts → types-CmOB7CLO.d.cts} +7 -6
  295. package/dist/types-CmOB7CLO.d.cts.map +1 -0
  296. package/dist/{types-DVETVdpa.d.mts → types-DBc0q5KD.d.mts} +7 -6
  297. package/dist/types-DBc0q5KD.d.mts.map +1 -0
  298. package/dist/types-Dsh-DIO_.cjs +78 -0
  299. package/dist/types-Dsh-DIO_.cjs.map +1 -0
  300. package/dist/types-ZW-nfWf6.cjs +40 -0
  301. package/dist/types-ZW-nfWf6.cjs.map +1 -0
  302. package/dist/{types-BVujq4zd.d.cts → types-l7Rlb5Mg.d.cts} +4 -3
  303. package/dist/types-l7Rlb5Mg.d.cts.map +1 -0
  304. package/dist/types-ojhnLdwz.mjs +34 -0
  305. package/dist/types-ojhnLdwz.mjs.map +1 -0
  306. package/dist/types.d.cts +1 -1
  307. package/dist/types.d.mts +1 -1
  308. package/dist/types.mjs +0 -1
  309. package/dist/ui-assets-BEXqOQLe.cjs +48 -0
  310. package/dist/ui-assets-BEXqOQLe.cjs.map +1 -0
  311. package/dist/ui-assets-BhTDUsrM.mjs +30 -0
  312. package/dist/ui-assets-BhTDUsrM.mjs.map +1 -0
  313. package/dist/ui-assets.cjs +5 -0
  314. package/dist/ui-assets.d.cts +13 -0
  315. package/dist/ui-assets.d.cts.map +1 -0
  316. package/dist/ui-assets.d.mts +13 -0
  317. package/dist/ui-assets.d.mts.map +1 -0
  318. package/dist/ui-assets.mjs +3 -0
  319. package/package.json +46 -46
  320. package/src/Telescope.ts +561 -0
  321. package/src/__tests__/Telescope.spec.ts +438 -0
  322. package/src/__tests__/pino-transport.spec.ts +115 -0
  323. package/src/__tests__/redact.spec.ts +336 -0
  324. package/src/adapters/__tests__/lambda.spec.ts +318 -0
  325. package/src/adapters/__tests__/middy.spec.ts +741 -0
  326. package/src/adapters/index.ts +22 -0
  327. package/src/adapters/lambda.ts +432 -0
  328. package/src/adapters/middy.ts +402 -0
  329. package/src/adapters/types.ts +181 -0
  330. package/src/core.ts +51 -0
  331. package/src/index.ts +34 -0
  332. package/src/instrumentation/__tests__/core.spec.ts +248 -0
  333. package/src/instrumentation/__tests__/hono.spec.ts +348 -0
  334. package/src/instrumentation/__tests__/middleware.spec.ts +528 -0
  335. package/src/instrumentation/__tests__/otel.spec.ts +291 -0
  336. package/src/instrumentation/__tests__/tracing.spec.ts +208 -0
  337. package/src/instrumentation/core.ts +228 -0
  338. package/src/instrumentation/hono.ts +270 -0
  339. package/src/instrumentation/http.ts +306 -0
  340. package/src/instrumentation/index.ts +90 -0
  341. package/src/instrumentation/middleware.ts +297 -0
  342. package/src/instrumentation/otel.ts +271 -0
  343. package/src/instrumentation/setup.ts +246 -0
  344. package/src/instrumentation/tracing.ts +145 -0
  345. package/src/logger/__tests__/console.spec.ts +366 -0
  346. package/src/logger/__tests__/pino.spec.ts +217 -0
  347. package/src/logger/console.ts +230 -0
  348. package/src/logger/pino.ts +201 -0
  349. package/src/metrics/MetricsAggregator.ts +555 -0
  350. package/src/metrics/__tests__/MetricsAggregator.spec.ts +298 -0
  351. package/src/metrics/index.ts +2 -0
  352. package/src/metrics/storage/InMemoryMetricsStorage.ts +380 -0
  353. package/src/metrics/storage/MetricsStorage.ts +74 -0
  354. package/src/metrics/storage/index.ts +3 -0
  355. package/src/metrics/storage/types.ts +243 -0
  356. package/src/otlp/__tests__/receiver.spec.ts +367 -0
  357. package/src/otlp/__tests__/transformer.spec.ts +455 -0
  358. package/src/otlp/hono.ts +120 -0
  359. package/src/otlp/index.ts +22 -0
  360. package/src/otlp/receiver.ts +162 -0
  361. package/src/otlp/transformer.ts +367 -0
  362. package/src/otlp/types.ts +364 -0
  363. package/src/redact.ts +116 -0
  364. package/src/server/__tests__/hono.spec.ts +814 -0
  365. package/src/server/hono.ts +442 -0
  366. package/src/storage/__tests__/kysely.spec.ts +715 -0
  367. package/src/storage/__tests__/memory.spec.ts +694 -0
  368. package/src/storage/kysely.ts +599 -0
  369. package/src/storage/memory.ts +204 -0
  370. package/src/types.ts +447 -0
  371. package/src/ui-assets.ts +40 -0
  372. package/tsconfig.json +9 -0
  373. package/ui/CHANGELOG.md +7 -0
  374. package/ui/index.html +12 -0
  375. package/ui/node_modules/.bin/tsc +21 -0
  376. package/ui/node_modules/.bin/tsserver +21 -0
  377. package/ui/node_modules/.bin/vite +21 -0
  378. package/ui/package.json +24 -0
  379. package/ui/src/App.tsx +595 -0
  380. package/ui/src/api.ts +88 -0
  381. package/ui/src/components/ExceptionDetail.tsx +100 -0
  382. package/ui/src/components/FilterBar.tsx +162 -0
  383. package/ui/src/components/LogDetail.tsx +91 -0
  384. package/ui/src/components/RequestDetail.tsx +143 -0
  385. package/ui/src/main.tsx +10 -0
  386. package/ui/src/styles.css +11 -0
  387. package/ui/src/types.ts +63 -0
  388. package/ui/src/vite-env.d.ts +1 -0
  389. package/ui/src/vite-plugin-gkm-config.ts +54 -0
  390. package/ui/tsconfig.json +20 -0
  391. package/ui/tsconfig.tsbuildinfo +1 -0
  392. package/ui/vite.config.ts +13 -0
  393. package/dist/MetricsAggregator-BJdIvfEv.d.mts.map +0 -1
  394. package/dist/MetricsAggregator-CnC3oT5q.d.cts.map +0 -1
  395. package/dist/Telescope-BVfDvVvY.d.mts.map +0 -1
  396. package/dist/Telescope-DeqSHfuB.d.cts.map +0 -1
  397. package/dist/Telescope.cjs.map +0 -1
  398. package/dist/Telescope.mjs.map +0 -1
  399. package/dist/adapters/middy.cjs.map +0 -1
  400. package/dist/adapters/middy.d.cts.map +0 -1
  401. package/dist/adapters/middy.d.mts.map +0 -1
  402. package/dist/adapters/middy.mjs.map +0 -1
  403. package/dist/adapters/types.d.cts.map +0 -1
  404. package/dist/adapters/types.d.mts.map +0 -1
  405. package/dist/instrumentation/core.cjs.map +0 -1
  406. package/dist/instrumentation/core.d.cts.map +0 -1
  407. package/dist/instrumentation/core.d.mts.map +0 -1
  408. package/dist/instrumentation/core.mjs.map +0 -1
  409. package/dist/instrumentation/hono.cjs.map +0 -1
  410. package/dist/instrumentation/hono.d.cts.map +0 -1
  411. package/dist/instrumentation/hono.d.mts.map +0 -1
  412. package/dist/instrumentation/hono.mjs.map +0 -1
  413. package/dist/instrumentation/http.cjs.map +0 -1
  414. package/dist/instrumentation/http.d.cts.map +0 -1
  415. package/dist/instrumentation/http.d.mts.map +0 -1
  416. package/dist/instrumentation/http.mjs.map +0 -1
  417. package/dist/instrumentation/middleware.cjs.map +0 -1
  418. package/dist/instrumentation/middleware.d.cts.map +0 -1
  419. package/dist/instrumentation/middleware.d.mts.map +0 -1
  420. package/dist/instrumentation/middleware.mjs.map +0 -1
  421. package/dist/instrumentation/otel.cjs.map +0 -1
  422. package/dist/instrumentation/otel.d.cts.map +0 -1
  423. package/dist/instrumentation/otel.d.mts.map +0 -1
  424. package/dist/instrumentation/otel.mjs.map +0 -1
  425. package/dist/instrumentation/sampler.cjs +0 -54
  426. package/dist/instrumentation/sampler.cjs.map +0 -1
  427. package/dist/instrumentation/sampler.d.cts +0 -38
  428. package/dist/instrumentation/sampler.d.cts.map +0 -1
  429. package/dist/instrumentation/sampler.d.mts +0 -38
  430. package/dist/instrumentation/sampler.d.mts.map +0 -1
  431. package/dist/instrumentation/sampler.mjs +0 -52
  432. package/dist/instrumentation/sampler.mjs.map +0 -1
  433. package/dist/instrumentation/setup.cjs.map +0 -1
  434. package/dist/instrumentation/setup.d.cts.map +0 -1
  435. package/dist/instrumentation/setup.d.mts.map +0 -1
  436. package/dist/instrumentation/setup.mjs.map +0 -1
  437. package/dist/instrumentation/tracing.cjs.map +0 -1
  438. package/dist/instrumentation/tracing.d.cts.map +0 -1
  439. package/dist/instrumentation/tracing.d.mts.map +0 -1
  440. package/dist/instrumentation/tracing.mjs.map +0 -1
  441. package/dist/instrumentation/trust.cjs +0 -107
  442. package/dist/instrumentation/trust.cjs.map +0 -1
  443. package/dist/instrumentation/trust.d.cts +0 -57
  444. package/dist/instrumentation/trust.d.cts.map +0 -1
  445. package/dist/instrumentation/trust.d.mts +0 -57
  446. package/dist/instrumentation/trust.d.mts.map +0 -1
  447. package/dist/instrumentation/trust.mjs +0 -104
  448. package/dist/instrumentation/trust.mjs.map +0 -1
  449. package/dist/metrics/MetricsAggregator.cjs.map +0 -1
  450. package/dist/metrics/MetricsAggregator.mjs.map +0 -1
  451. package/dist/metrics/storage/InMemoryMetricsStorage.cjs.map +0 -1
  452. package/dist/metrics/storage/InMemoryMetricsStorage.d.cts.map +0 -1
  453. package/dist/metrics/storage/InMemoryMetricsStorage.d.mts.map +0 -1
  454. package/dist/metrics/storage/InMemoryMetricsStorage.mjs.map +0 -1
  455. package/dist/metrics/storage/MetricsStorage.d.cts.map +0 -1
  456. package/dist/metrics/storage/MetricsStorage.d.mts.map +0 -1
  457. package/dist/metrics/storage/types.cjs.map +0 -1
  458. package/dist/metrics/storage/types.d.cts.map +0 -1
  459. package/dist/metrics/storage/types.d.mts.map +0 -1
  460. package/dist/metrics/storage/types.mjs.map +0 -1
  461. package/dist/otlp/receiver.cjs.map +0 -1
  462. package/dist/otlp/receiver.d.cts.map +0 -1
  463. package/dist/otlp/receiver.d.mts.map +0 -1
  464. package/dist/otlp/receiver.mjs.map +0 -1
  465. package/dist/otlp/transformer.cjs.map +0 -1
  466. package/dist/otlp/transformer.mjs.map +0 -1
  467. package/dist/otlp/types.cjs.map +0 -1
  468. package/dist/otlp/types.mjs.map +0 -1
  469. package/dist/redact.cjs.map +0 -1
  470. package/dist/redact.mjs.map +0 -1
  471. package/dist/storage/memory.cjs.map +0 -1
  472. package/dist/storage/memory.d.cts.map +0 -1
  473. package/dist/storage/memory.d.mts.map +0 -1
  474. package/dist/storage/memory.mjs.map +0 -1
  475. package/dist/transformer-BtqjAs0b.d.cts.map +0 -1
  476. package/dist/transformer-DI6t8-YA.d.mts.map +0 -1
  477. package/dist/types-BVujq4zd.d.cts.map +0 -1
  478. package/dist/types-BVujq4zd.d.mts.map +0 -1
  479. package/dist/types-DVETVdpa.d.cts.map +0 -1
  480. package/dist/types-DVETVdpa.d.mts.map +0 -1
@@ -0,0 +1,87 @@
1
+ import { SpanProcessorStrategy } from "./types-BzQ78Efw.mjs";
2
+
3
+ //#region src/instrumentation/setup.d.ts
4
+
5
+ /**
6
+ * Options for configuring telemetry
7
+ */
8
+ interface TelemetryOptions {
9
+ /**
10
+ * Service name for resource identification
11
+ */
12
+ serviceName: string;
13
+ /**
14
+ * Service version
15
+ */
16
+ serviceVersion?: string;
17
+ /**
18
+ * OTLP endpoint URL (e.g., 'http://localhost:3000/__telescope/v1')
19
+ * If not provided, traces will be logged to console
20
+ */
21
+ endpoint?: string;
22
+ /**
23
+ * Whether to instrument Pino for log correlation
24
+ * @default true
25
+ */
26
+ instrumentPino?: boolean;
27
+ /**
28
+ * Whether to enable auto-instrumentation for common libraries
29
+ * (http, fetch, express, etc.)
30
+ * @default true
31
+ */
32
+ autoInstrument?: boolean;
33
+ /**
34
+ * Enable debug logging for OTel SDK
35
+ * @default false
36
+ */
37
+ debug?: boolean;
38
+ /**
39
+ * Additional resource attributes
40
+ */
41
+ resourceAttributes?: Record<string, string>;
42
+ /**
43
+ * Headers to send with OTLP requests
44
+ */
45
+ headers?: Record<string, string>;
46
+ /**
47
+ * Span processor strategy.
48
+ * - 'batch': Efficient batching for long-running servers (default)
49
+ * - 'simple': Immediate export for serverless environments (Lambda, Edge)
50
+ *
51
+ * If not specified, automatically selected based on environment detection.
52
+ */
53
+ spanProcessorStrategy?: SpanProcessorStrategy;
54
+ /**
55
+ * Environment type for automatic configuration
56
+ * @default 'server'
57
+ */
58
+ environment?: 'server' | 'lambda' | 'edge' | 'custom';
59
+ }
60
+ /**
61
+ * Set up OpenTelemetry instrumentation.
62
+ * Call this BEFORE importing your application code.
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * // instrumentation.ts (create this file)
67
+ * import { setupTelemetry } from '@geekmidas/telescope/instrumentation';
68
+ *
69
+ * setupTelemetry({
70
+ * serviceName: 'my-api',
71
+ * endpoint: 'http://localhost:3000/__telescope/v1',
72
+ * });
73
+ *
74
+ * // Then in your entry point:
75
+ * // import './instrumentation';
76
+ * // import { app } from './app';
77
+ * ```
78
+ */
79
+ declare function setupTelemetry(options: TelemetryOptions): void;
80
+ /**
81
+ * Shut down telemetry (for testing or graceful shutdown)
82
+ */
83
+ declare function shutdownTelemetry(): Promise<void>;
84
+ //# sourceMappingURL=setup.d.ts.map
85
+ //#endregion
86
+ export { TelemetryOptions, setupTelemetry, shutdownTelemetry };
87
+ //# sourceMappingURL=setup-Bkxm4g6b.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-Bkxm4g6b.d.mts","names":[],"sources":["../src/instrumentation/setup.ts"],"sourcesContent":[],"mappings":";;;;;;AA8BA;AAAiC,UAAhB,gBAAA,CAAgB;EAAA;;;EAqDa,WAAA,EAAA,MAAA;EA8B9B;AA+HhB;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA3KsB;;;;YAKX;;;;;;;;0BASc;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BT,cAAA,UAAwB;;;;iBA+HlB,iBAAA,CAAA,GAAqB"}
@@ -0,0 +1,110 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const require_core = require('./core-CtVHRJGv.cjs');
3
+ const __opentelemetry_api = require_chunk.__toESM(require("@opentelemetry/api"));
4
+ const __opentelemetry_auto_instrumentations_node = require_chunk.__toESM(require("@opentelemetry/auto-instrumentations-node"));
5
+ const __opentelemetry_exporter_logs_otlp_http = require_chunk.__toESM(require("@opentelemetry/exporter-logs-otlp-http"));
6
+ const __opentelemetry_exporter_trace_otlp_http = require_chunk.__toESM(require("@opentelemetry/exporter-trace-otlp-http"));
7
+ const __opentelemetry_instrumentation_pino = require_chunk.__toESM(require("@opentelemetry/instrumentation-pino"));
8
+ const __opentelemetry_resources = require_chunk.__toESM(require("@opentelemetry/resources"));
9
+ const __opentelemetry_sdk_logs = require_chunk.__toESM(require("@opentelemetry/sdk-logs"));
10
+ const __opentelemetry_sdk_node = require_chunk.__toESM(require("@opentelemetry/sdk-node"));
11
+ const __opentelemetry_sdk_trace_node = require_chunk.__toESM(require("@opentelemetry/sdk-trace-node"));
12
+ const __opentelemetry_semantic_conventions = require_chunk.__toESM(require("@opentelemetry/semantic-conventions"));
13
+
14
+ //#region src/instrumentation/setup.ts
15
+ let sdk = null;
16
+ /**
17
+ * Set up OpenTelemetry instrumentation.
18
+ * Call this BEFORE importing your application code.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * // instrumentation.ts (create this file)
23
+ * import { setupTelemetry } from '@geekmidas/telescope/instrumentation';
24
+ *
25
+ * setupTelemetry({
26
+ * serviceName: 'my-api',
27
+ * endpoint: 'http://localhost:3000/__telescope/v1',
28
+ * });
29
+ *
30
+ * // Then in your entry point:
31
+ * // import './instrumentation';
32
+ * // import { app } from './app';
33
+ * ```
34
+ */
35
+ function setupTelemetry(options) {
36
+ if (sdk) return;
37
+ const { serviceName, serviceVersion = "1.0.0", endpoint, instrumentPino = true, autoInstrument = true, debug = false, resourceAttributes = {}, headers = {}, spanProcessorStrategy, environment = "server" } = options;
38
+ if (debug) __opentelemetry_api.diag.setLogger(new __opentelemetry_api.DiagConsoleLogger(), __opentelemetry_api.DiagLogLevel.DEBUG);
39
+ const resource = new __opentelemetry_resources.Resource({
40
+ [__opentelemetry_semantic_conventions.ATTR_SERVICE_NAME]: serviceName,
41
+ [__opentelemetry_semantic_conventions.ATTR_SERVICE_VERSION]: serviceVersion,
42
+ ...resourceAttributes
43
+ });
44
+ const instrumentations = [];
45
+ if (instrumentPino) instrumentations.push(new __opentelemetry_instrumentation_pino.PinoInstrumentation({ logHook: (span, record) => {
46
+ record.trace_id = span.spanContext().traceId;
47
+ record.span_id = span.spanContext().spanId;
48
+ record.trace_flags = span.spanContext().traceFlags;
49
+ } }));
50
+ if (autoInstrument) instrumentations.push((0, __opentelemetry_auto_instrumentations_node.getNodeAutoInstrumentations)({
51
+ "@opentelemetry/instrumentation-fs": { enabled: false },
52
+ "@opentelemetry/instrumentation-http": { ignoreIncomingRequestHook: (request) => {
53
+ const path = request.url || "";
54
+ return path.includes("/__health") || path.includes("/__telescope") || path.includes("/favicon");
55
+ } }
56
+ }));
57
+ let traceExporter;
58
+ if (endpoint) traceExporter = new __opentelemetry_exporter_trace_otlp_http.OTLPTraceExporter({
59
+ url: `${endpoint}/traces`,
60
+ headers
61
+ });
62
+ else traceExporter = new __opentelemetry_sdk_trace_node.ConsoleSpanExporter();
63
+ const strategy = spanProcessorStrategy ?? require_core.getRecommendedStrategy(environment);
64
+ const spanProcessor = require_core.createSpanProcessor(traceExporter, { strategy });
65
+ require_core.setGlobalSpanProcessor(spanProcessor);
66
+ sdk = new __opentelemetry_sdk_node.NodeSDK({
67
+ resource,
68
+ traceExporter,
69
+ spanProcessors: [spanProcessor],
70
+ instrumentations
71
+ });
72
+ if (endpoint) {
73
+ const logExporter = new __opentelemetry_exporter_logs_otlp_http.OTLPLogExporter({
74
+ url: `${endpoint}/logs`,
75
+ headers
76
+ });
77
+ const loggerProvider = new __opentelemetry_sdk_logs.LoggerProvider({ resource });
78
+ const logProcessor = new __opentelemetry_sdk_logs.BatchLogRecordProcessor(logExporter);
79
+ loggerProvider.addLogRecordProcessor(logProcessor);
80
+ require_core.setGlobalLogProcessor(logProcessor);
81
+ }
82
+ sdk.start();
83
+ process.on("SIGTERM", () => {
84
+ sdk?.shutdown().then(() => {}).catch((_error) => {}).finally(() => process.exit(0));
85
+ });
86
+ }
87
+ /**
88
+ * Shut down telemetry (for testing or graceful shutdown)
89
+ */
90
+ async function shutdownTelemetry() {
91
+ if (sdk) {
92
+ await sdk.shutdown();
93
+ sdk = null;
94
+ }
95
+ }
96
+
97
+ //#endregion
98
+ Object.defineProperty(exports, 'setupTelemetry', {
99
+ enumerable: true,
100
+ get: function () {
101
+ return setupTelemetry;
102
+ }
103
+ });
104
+ Object.defineProperty(exports, 'shutdownTelemetry', {
105
+ enumerable: true,
106
+ get: function () {
107
+ return shutdownTelemetry;
108
+ }
109
+ });
110
+ //# sourceMappingURL=setup-CYpff5B9.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-CYpff5B9.cjs","names":["sdk: NodeSDK | null","options: TelemetryOptions","DiagConsoleLogger","DiagLogLevel","Resource","ATTR_SERVICE_NAME","ATTR_SERVICE_VERSION","PinoInstrumentation","traceExporter: SpanExporter","OTLPTraceExporter","ConsoleSpanExporter","NodeSDK","OTLPLogExporter","LoggerProvider","BatchLogRecordProcessor"],"sources":["../src/instrumentation/setup.ts"],"sourcesContent":["import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { PinoInstrumentation } from '@opentelemetry/instrumentation-pino';\nimport { Resource } from '@opentelemetry/resources';\nimport {\n\tBatchLogRecordProcessor,\n\tLoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport {\n\tConsoleSpanExporter,\n\ttype SpanExporter,\n} from '@opentelemetry/sdk-trace-node';\nimport {\n\tATTR_SERVICE_NAME,\n\tATTR_SERVICE_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport type { SpanProcessorStrategy } from '../adapters/types';\nimport {\n\tcreateSpanProcessor,\n\tgetRecommendedStrategy,\n\tsetGlobalLogProcessor,\n\tsetGlobalSpanProcessor,\n} from './core';\n\n/**\n * Options for configuring telemetry\n */\nexport interface TelemetryOptions {\n\t/**\n\t * Service name for resource identification\n\t */\n\tserviceName: string;\n\n\t/**\n\t * Service version\n\t */\n\tserviceVersion?: string;\n\n\t/**\n\t * OTLP endpoint URL (e.g., 'http://localhost:3000/__telescope/v1')\n\t * If not provided, traces will be logged to console\n\t */\n\tendpoint?: string;\n\n\t/**\n\t * Whether to instrument Pino for log correlation\n\t * @default true\n\t */\n\tinstrumentPino?: boolean;\n\n\t/**\n\t * Whether to enable auto-instrumentation for common libraries\n\t * (http, fetch, express, etc.)\n\t * @default true\n\t */\n\tautoInstrument?: boolean;\n\n\t/**\n\t * Enable debug logging for OTel SDK\n\t * @default false\n\t */\n\tdebug?: boolean;\n\n\t/**\n\t * Additional resource attributes\n\t */\n\tresourceAttributes?: Record<string, string>;\n\n\t/**\n\t * Headers to send with OTLP requests\n\t */\n\theaders?: Record<string, string>;\n\n\t/**\n\t * Span processor strategy.\n\t * - 'batch': Efficient batching for long-running servers (default)\n\t * - 'simple': Immediate export for serverless environments (Lambda, Edge)\n\t *\n\t * If not specified, automatically selected based on environment detection.\n\t */\n\tspanProcessorStrategy?: SpanProcessorStrategy;\n\n\t/**\n\t * Environment type for automatic configuration\n\t * @default 'server'\n\t */\n\tenvironment?: 'server' | 'lambda' | 'edge' | 'custom';\n}\n\nlet sdk: NodeSDK | null = null;\n\n/**\n * Set up OpenTelemetry instrumentation.\n * Call this BEFORE importing your application code.\n *\n * @example\n * ```typescript\n * // instrumentation.ts (create this file)\n * import { setupTelemetry } from '@geekmidas/telescope/instrumentation';\n *\n * setupTelemetry({\n * serviceName: 'my-api',\n * endpoint: 'http://localhost:3000/__telescope/v1',\n * });\n *\n * // Then in your entry point:\n * // import './instrumentation';\n * // import { app } from './app';\n * ```\n */\nexport function setupTelemetry(options: TelemetryOptions): void {\n\tif (sdk) {\n\t\treturn;\n\t}\n\n\tconst {\n\t\tserviceName,\n\t\tserviceVersion = '1.0.0',\n\t\tendpoint,\n\t\tinstrumentPino = true,\n\t\tautoInstrument = true,\n\t\tdebug = false,\n\t\tresourceAttributes = {},\n\t\theaders = {},\n\t\tspanProcessorStrategy,\n\t\tenvironment = 'server',\n\t} = options;\n\n\t// Enable debug logging if requested\n\tif (debug) {\n\t\tdiag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);\n\t}\n\n\t// Create resource\n\tconst resource = new Resource({\n\t\t[ATTR_SERVICE_NAME]: serviceName,\n\t\t[ATTR_SERVICE_VERSION]: serviceVersion,\n\t\t...resourceAttributes,\n\t});\n\n\t// Build instrumentations list\n\tconst instrumentations = [];\n\n\t// Add Pino instrumentation for log correlation\n\tif (instrumentPino) {\n\t\tinstrumentations.push(\n\t\t\tnew PinoInstrumentation({\n\t\t\t\t// Inject trace context into log records\n\t\t\t\tlogHook: (span, record) => {\n\t\t\t\t\trecord.trace_id = span.spanContext().traceId;\n\t\t\t\t\trecord.span_id = span.spanContext().spanId;\n\t\t\t\t\trecord.trace_flags = span.spanContext().traceFlags;\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t}\n\n\t// Add auto-instrumentations for common libraries\n\tif (autoInstrument) {\n\t\tinstrumentations.push(\n\t\t\tgetNodeAutoInstrumentations({\n\t\t\t\t// Disable file system instrumentation (too noisy)\n\t\t\t\t'@opentelemetry/instrumentation-fs': { enabled: false },\n\t\t\t\t// Configure HTTP instrumentation\n\t\t\t\t'@opentelemetry/instrumentation-http': {\n\t\t\t\t\tignoreIncomingRequestHook: (request) => {\n\t\t\t\t\t\t// Ignore health checks and internal routes\n\t\t\t\t\t\tconst path = request.url || '';\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tpath.includes('/__health') ||\n\t\t\t\t\t\t\tpath.includes('/__telescope') ||\n\t\t\t\t\t\t\tpath.includes('/favicon')\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t}\n\n\t// Create exporters\n\tlet traceExporter: SpanExporter;\n\tif (endpoint) {\n\t\ttraceExporter = new OTLPTraceExporter({\n\t\t\turl: `${endpoint}/traces`,\n\t\t\theaders,\n\t\t});\n\t} else {\n\t\t// Fall back to console exporter for debugging\n\t\ttraceExporter = new ConsoleSpanExporter();\n\t}\n\n\t// Determine span processor strategy\n\tconst strategy = spanProcessorStrategy ?? getRecommendedStrategy(environment);\n\tconst spanProcessor = createSpanProcessor(traceExporter, { strategy });\n\n\t// Register globally for flush operations\n\tsetGlobalSpanProcessor(spanProcessor);\n\n\t// Create and configure SDK\n\tsdk = new NodeSDK({\n\t\tresource,\n\t\ttraceExporter,\n\t\tspanProcessors: [spanProcessor],\n\t\tinstrumentations,\n\t});\n\n\t// Set up log exporter if endpoint is provided\n\tif (endpoint) {\n\t\tconst logExporter = new OTLPLogExporter({\n\t\t\turl: `${endpoint}/logs`,\n\t\t\theaders,\n\t\t});\n\n\t\tconst loggerProvider = new LoggerProvider({ resource });\n\t\tconst logProcessor = new BatchLogRecordProcessor(logExporter);\n\t\tloggerProvider.addLogRecordProcessor(logProcessor);\n\n\t\t// Register for flush operations\n\t\tsetGlobalLogProcessor(logProcessor);\n\t}\n\n\t// Start the SDK\n\tsdk.start();\n\n\t// Graceful shutdown\n\tprocess.on('SIGTERM', () => {\n\t\tsdk\n\t\t\t?.shutdown()\n\t\t\t.then(() => {})\n\t\t\t.catch((_error) => {})\n\t\t\t.finally(() => process.exit(0));\n\t});\n}\n\n/**\n * Shut down telemetry (for testing or graceful shutdown)\n */\nexport async function shutdownTelemetry(): Promise<void> {\n\tif (sdk) {\n\t\tawait sdk.shutdown();\n\t\tsdk = null;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AA4FA,IAAIA,MAAsB;;;;;;;;;;;;;;;;;;;;AAqB1B,SAAgB,eAAeC,SAAiC;AAC/D,KAAI,IACH;CAGD,MAAM,EACL,aACA,iBAAiB,SACjB,UACA,iBAAiB,MACjB,iBAAiB,MACjB,QAAQ,OACR,qBAAqB,CAAE,GACvB,UAAU,CAAE,GACZ,uBACA,cAAc,UACd,GAAG;AAGJ,KAAI,MACH,0BAAK,UAAU,IAAIC,yCAAqBC,iCAAa,MAAM;CAI5D,MAAM,WAAW,IAAIC,mCAAS;GAC5BC,yDAAoB;GACpBC,4DAAuB;EACxB,GAAG;CACH;CAGD,MAAM,mBAAmB,CAAE;AAG3B,KAAI,eACH,kBAAiB,KAChB,IAAIC,yDAAoB,EAEvB,SAAS,CAAC,MAAM,WAAW;AAC1B,SAAO,WAAW,KAAK,aAAa,CAAC;AACrC,SAAO,UAAU,KAAK,aAAa,CAAC;AACpC,SAAO,cAAc,KAAK,aAAa,CAAC;CACxC,EACD,GACD;AAIF,KAAI,eACH,kBAAiB,KAChB,4EAA4B;EAE3B,qCAAqC,EAAE,SAAS,MAAO;EAEvD,uCAAuC,EACtC,2BAA2B,CAAC,YAAY;GAEvC,MAAM,OAAO,QAAQ,OAAO;AAC5B,UACC,KAAK,SAAS,YAAY,IAC1B,KAAK,SAAS,eAAe,IAC7B,KAAK,SAAS,WAAW;EAE1B,EACD;CACD,EAAC,CACF;CAIF,IAAIC;AACJ,KAAI,SACH,iBAAgB,IAAIC,2DAAkB;EACrC,MAAM,EAAE,SAAS;EACjB;CACA;KAGD,iBAAgB,IAAIC;CAIrB,MAAM,WAAW,yBAAyB,oCAAuB,YAAY;CAC7E,MAAM,gBAAgB,iCAAoB,eAAe,EAAE,SAAU,EAAC;AAGtE,qCAAuB,cAAc;AAGrC,OAAM,IAAIC,iCAAQ;EACjB;EACA;EACA,gBAAgB,CAAC,aAAc;EAC/B;CACA;AAGD,KAAI,UAAU;EACb,MAAM,cAAc,IAAIC,wDAAgB;GACvC,MAAM,EAAE,SAAS;GACjB;EACA;EAED,MAAM,iBAAiB,IAAIC,wCAAe,EAAE,SAAU;EACtD,MAAM,eAAe,IAAIC,iDAAwB;AACjD,iBAAe,sBAAsB,aAAa;AAGlD,qCAAsB,aAAa;CACnC;AAGD,KAAI,OAAO;AAGX,SAAQ,GAAG,WAAW,MAAM;AAC3B,OACG,UAAU,CACX,KAAK,MAAM,CAAE,EAAC,CACd,MAAM,CAAC,WAAW,CAAE,EAAC,CACrB,QAAQ,MAAM,QAAQ,KAAK,EAAE,CAAC;CAChC,EAAC;AACF;;;;AAKD,eAAsB,oBAAmC;AACxD,KAAI,KAAK;AACR,QAAM,IAAI,UAAU;AACpB,QAAM;CACN;AACD"}
@@ -0,0 +1,87 @@
1
+ import { SpanProcessorStrategy } from "./types-BRzW1NM8.cjs";
2
+
3
+ //#region src/instrumentation/setup.d.ts
4
+
5
+ /**
6
+ * Options for configuring telemetry
7
+ */
8
+ interface TelemetryOptions {
9
+ /**
10
+ * Service name for resource identification
11
+ */
12
+ serviceName: string;
13
+ /**
14
+ * Service version
15
+ */
16
+ serviceVersion?: string;
17
+ /**
18
+ * OTLP endpoint URL (e.g., 'http://localhost:3000/__telescope/v1')
19
+ * If not provided, traces will be logged to console
20
+ */
21
+ endpoint?: string;
22
+ /**
23
+ * Whether to instrument Pino for log correlation
24
+ * @default true
25
+ */
26
+ instrumentPino?: boolean;
27
+ /**
28
+ * Whether to enable auto-instrumentation for common libraries
29
+ * (http, fetch, express, etc.)
30
+ * @default true
31
+ */
32
+ autoInstrument?: boolean;
33
+ /**
34
+ * Enable debug logging for OTel SDK
35
+ * @default false
36
+ */
37
+ debug?: boolean;
38
+ /**
39
+ * Additional resource attributes
40
+ */
41
+ resourceAttributes?: Record<string, string>;
42
+ /**
43
+ * Headers to send with OTLP requests
44
+ */
45
+ headers?: Record<string, string>;
46
+ /**
47
+ * Span processor strategy.
48
+ * - 'batch': Efficient batching for long-running servers (default)
49
+ * - 'simple': Immediate export for serverless environments (Lambda, Edge)
50
+ *
51
+ * If not specified, automatically selected based on environment detection.
52
+ */
53
+ spanProcessorStrategy?: SpanProcessorStrategy;
54
+ /**
55
+ * Environment type for automatic configuration
56
+ * @default 'server'
57
+ */
58
+ environment?: 'server' | 'lambda' | 'edge' | 'custom';
59
+ }
60
+ /**
61
+ * Set up OpenTelemetry instrumentation.
62
+ * Call this BEFORE importing your application code.
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * // instrumentation.ts (create this file)
67
+ * import { setupTelemetry } from '@geekmidas/telescope/instrumentation';
68
+ *
69
+ * setupTelemetry({
70
+ * serviceName: 'my-api',
71
+ * endpoint: 'http://localhost:3000/__telescope/v1',
72
+ * });
73
+ *
74
+ * // Then in your entry point:
75
+ * // import './instrumentation';
76
+ * // import { app } from './app';
77
+ * ```
78
+ */
79
+ declare function setupTelemetry(options: TelemetryOptions): void;
80
+ /**
81
+ * Shut down telemetry (for testing or graceful shutdown)
82
+ */
83
+ declare function shutdownTelemetry(): Promise<void>;
84
+ //# sourceMappingURL=setup.d.ts.map
85
+ //#endregion
86
+ export { TelemetryOptions, setupTelemetry, shutdownTelemetry };
87
+ //# sourceMappingURL=setup-D58N1f9O.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-D58N1f9O.d.cts","names":[],"sources":["../src/instrumentation/setup.ts"],"sourcesContent":[],"mappings":";;;;;;AA8BA;AAAiC,UAAhB,gBAAA,CAAgB;EAAA;;;EAqDa,WAAA,EAAA,MAAA;EA8B9B;AA+HhB;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA3KsB;;;;YAKX;;;;;;;;0BASc;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BT,cAAA,UAAwB;;;;iBA+HlB,iBAAA,CAAA,GAAqB"}
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
1
+
2
2
  //#region src/storage/kysely.ts
3
3
  /**
4
4
  * Kysely-based storage implementation for Telescope.
@@ -23,20 +23,15 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
23
23
  */
24
24
  var KyselyStorage = class {
25
25
  db;
26
- /**
27
- * Unqualified, and deliberately.
28
- *
29
- * These were `telescope_requests`, `telescope_exceptions` and
30
- * `telescope_logs` — a prefix, which is what you reach for when the tables
31
- * have to share a schema with an application's own. They do not: a telescope
32
- * derived from a database is a schema tenant, so the names are just the
33
- * names, and `DROP SCHEMA telescope CASCADE` is the whole cleanup.
34
- */
35
- requestsTable = "requests";
36
- exceptionsTable = "exceptions";
37
- logsTable = "logs";
26
+ requestsTable;
27
+ exceptionsTable;
28
+ logsTable;
38
29
  constructor(config) {
39
- this.db = config.schema ? config.db.withSchema(config.schema) : config.db;
30
+ this.db = config.db;
31
+ const prefix = config.tablePrefix ?? "telescope";
32
+ this.requestsTable = `${prefix}_requests`;
33
+ this.exceptionsTable = `${prefix}_exceptions`;
34
+ this.logsTable = `${prefix}_logs`;
40
35
  }
41
36
  async saveRequest(entry) {
42
37
  const row = this.requestToRow(entry);
@@ -55,14 +50,16 @@ var KyselyStorage = class {
55
50
  if (statusFilter.endsWith("xx")) {
56
51
  const firstChar = statusFilter[0];
57
52
  if (firstChar) {
58
- const minStatus = parseInt(firstChar, 10) * 100;
53
+ const category = parseInt(firstChar, 10);
54
+ const minStatus = category * 100;
59
55
  const maxStatus = minStatus + 99;
60
56
  query = query.where("status", ">=", minStatus).where("status", "<=", maxStatus);
61
57
  }
62
58
  } else query = query.where("status", "=", parseInt(statusFilter, 10));
63
59
  }
64
- query = this.applyQueryOptions(query, options, ["path", "url"]);
65
- return (await query.execute()).map((row) => this.rowToRequest(row));
60
+ query = this.applyQueryOptions(query, options);
61
+ const rows = await query.execute();
62
+ return rows.map((row) => this.rowToRequest(row));
66
63
  }
67
64
  async getRequest(id) {
68
65
  const row = await this.db.selectFrom(this.requestsTable).selectAll().where("id", "=", id).executeTakeFirst();
@@ -79,8 +76,9 @@ var KyselyStorage = class {
79
76
  }
80
77
  async getExceptions(options) {
81
78
  let query = this.db.selectFrom(this.exceptionsTable).selectAll().orderBy("timestamp", "desc");
82
- query = this.applyQueryOptions(query, options, ["name", "message"]);
83
- return (await query.execute()).map((row) => this.rowToException(row));
79
+ query = this.applyQueryOptions(query, options);
80
+ const rows = await query.execute();
81
+ return rows.map((row) => this.rowToException(row));
84
82
  }
85
83
  async getException(id) {
86
84
  const row = await this.db.selectFrom(this.exceptionsTable).selectAll().where("id", "=", id).executeTakeFirst();
@@ -98,15 +96,17 @@ var KyselyStorage = class {
98
96
  async getLogs(options) {
99
97
  let query = this.db.selectFrom(this.logsTable).selectAll().orderBy("timestamp", "desc");
100
98
  if (options?.level) query = query.where("level", "=", options.level);
101
- query = this.applyQueryOptions(query, options, ["message"]);
102
- return (await query.execute()).map((row) => this.rowToLog(row));
99
+ query = this.applyQueryOptions(query, options);
100
+ const rows = await query.execute();
101
+ return rows.map((row) => this.rowToLog(row));
103
102
  }
104
103
  async prune(olderThan) {
105
- return (await Promise.all([
104
+ const results = await Promise.all([
106
105
  this.db.deleteFrom(this.requestsTable).where("timestamp", "<", olderThan).executeTakeFirst(),
107
106
  this.db.deleteFrom(this.exceptionsTable).where("timestamp", "<", olderThan).executeTakeFirst(),
108
107
  this.db.deleteFrom(this.logsTable).where("timestamp", "<", olderThan).executeTakeFirst()
109
- ])).reduce((sum, result) => sum + Number(result.numDeletedRows ?? 0), 0);
108
+ ]);
109
+ return results.reduce((sum, result) => sum + Number(result.numDeletedRows ?? 0), 0);
110
110
  }
111
111
  async getStats() {
112
112
  const [requestsResult, exceptionsResult, logsResult] = await Promise.all([
@@ -143,11 +143,15 @@ var KyselyStorage = class {
143
143
  newestEntry: newestDate ? new Date(newestDate) : void 0
144
144
  };
145
145
  }
146
- applyQueryOptions(query, options, searchColumns) {
146
+ applyQueryOptions(query, options) {
147
147
  if (!options) return query.limit(50);
148
148
  if (options.after) query = query.where("timestamp", ">=", options.after);
149
149
  if (options.before) query = query.where("timestamp", "<=", options.before);
150
- if (options.search) query = query.where((eb) => eb.or(searchColumns.map((column) => eb(column, "ilike", `%${options.search}%`))));
150
+ if (options.search) query = query.where((eb) => eb.or([
151
+ eb("message", "ilike", `%${options.search}%`),
152
+ eb("path", "ilike", `%${options.search}%`),
153
+ eb("url", "ilike", `%${options.search}%`)
154
+ ]));
151
155
  const limit = options.limit ?? 50;
152
156
  const offset = options.offset ?? 0;
153
157
  return query.limit(limit).offset(offset);
@@ -158,17 +162,17 @@ var KyselyStorage = class {
158
162
  method: entry.method,
159
163
  path: entry.path,
160
164
  url: entry.url,
161
- headers: toJson(entry.headers),
162
- body: toJson(entry.body),
163
- query: toJson(entry.query),
165
+ headers: entry.headers,
166
+ body: entry.body ?? null,
167
+ query: entry.query ?? null,
164
168
  status: entry.status,
165
- response_headers: toJson(entry.responseHeaders),
166
- response_body: toJson(entry.responseBody),
169
+ response_headers: entry.responseHeaders,
170
+ response_body: entry.responseBody ?? null,
167
171
  duration: entry.duration,
168
172
  timestamp: entry.timestamp,
169
173
  ip: entry.ip ?? null,
170
174
  user_id: entry.userId ?? null,
171
- tags: toJson(entry.tags)
175
+ tags: entry.tags ?? null
172
176
  };
173
177
  }
174
178
  rowToRequest(row) {
@@ -195,12 +199,12 @@ var KyselyStorage = class {
195
199
  id: entry.id,
196
200
  name: entry.name,
197
201
  message: entry.message,
198
- stack: toJson(entry.stack),
199
- source: toJson(entry.source),
202
+ stack: entry.stack,
203
+ source: entry.source ?? null,
200
204
  request_id: entry.requestId ?? null,
201
205
  timestamp: entry.timestamp,
202
206
  handled: entry.handled,
203
- tags: toJson(entry.tags)
207
+ tags: entry.tags ?? null
204
208
  };
205
209
  }
206
210
  rowToException(row) {
@@ -221,7 +225,7 @@ var KyselyStorage = class {
221
225
  id: entry.id,
222
226
  level: entry.level,
223
227
  message: entry.message,
224
- context: toJson(entry.context),
228
+ context: entry.context ?? null,
225
229
  request_id: entry.requestId ?? null,
226
230
  timestamp: entry.timestamp
227
231
  };
@@ -250,22 +254,8 @@ var KyselyStorage = class {
250
254
  }
251
255
  };
252
256
  /**
253
- * A value for a JSON column, as JSON text.
254
- *
255
- * Handed an object, node-postgres writes JSON; handed an array it writes a
256
- * Postgres array literal (`{1,2}`), which a `jsonb` column rejects — so every
257
- * exception (its stack is an array) failed to save. Serialising here makes
258
- * the column's type the only thing that decides.
259
- */
260
- function toJson(value) {
261
- return value === void 0 || value === null ? null : JSON.stringify(value);
262
- }
263
- /**
264
- * SQL migration to create telescope's tables.
265
- *
266
- * Pass a schema to have them created in one, and to have `down` drop the whole
267
- * schema rather than three tables. Pass nothing where the connection's
268
- * `search_path` already places them.
257
+ * SQL migration to create telescope tables.
258
+ * Use this to set up the required tables in your database.
269
259
  *
270
260
  * @example
271
261
  * ```typescript
@@ -283,13 +273,11 @@ function toJson(value) {
283
273
  * }
284
274
  * ```
285
275
  */
286
- function getTelescopeMigration(schema) {
287
- const q = (name) => schema ? `${schema}.${name}` : name;
288
- const idx = (name) => schema ? `${schema}_${name}` : name;
276
+ function getTelescopeMigration(tablePrefix = "telescope") {
289
277
  return {
290
- up: `${schema ? `CREATE SCHEMA IF NOT EXISTS ${schema};\n` : ""}
291
- -- Telescope requests
292
- CREATE TABLE IF NOT EXISTS ${q("requests")} (
278
+ up: `
279
+ -- Telescope requests table
280
+ CREATE TABLE IF NOT EXISTS ${tablePrefix}_requests (
293
281
  id VARCHAR(21) PRIMARY KEY,
294
282
  method VARCHAR(10) NOT NULL,
295
283
  path TEXT NOT NULL,
@@ -307,15 +295,15 @@ CREATE TABLE IF NOT EXISTS ${q("requests")} (
307
295
  tags JSONB
308
296
  );
309
297
 
310
- CREATE INDEX IF NOT EXISTS idx_${idx("requests")}_timestamp
311
- ON ${q("requests")} (timestamp DESC);
312
- CREATE INDEX IF NOT EXISTS idx_${idx("requests")}_path
313
- ON ${q("requests")} (path);
314
- CREATE INDEX IF NOT EXISTS idx_${idx("requests")}_status
315
- ON ${q("requests")} (status);
298
+ CREATE INDEX IF NOT EXISTS idx_${tablePrefix}_requests_timestamp
299
+ ON ${tablePrefix}_requests (timestamp DESC);
300
+ CREATE INDEX IF NOT EXISTS idx_${tablePrefix}_requests_path
301
+ ON ${tablePrefix}_requests (path);
302
+ CREATE INDEX IF NOT EXISTS idx_${tablePrefix}_requests_status
303
+ ON ${tablePrefix}_requests (status);
316
304
 
317
- -- Telescope exceptions
318
- CREATE TABLE IF NOT EXISTS ${q("exceptions")} (
305
+ -- Telescope exceptions table
306
+ CREATE TABLE IF NOT EXISTS ${tablePrefix}_exceptions (
319
307
  id VARCHAR(21) PRIMARY KEY,
320
308
  name VARCHAR(255) NOT NULL,
321
309
  message TEXT NOT NULL,
@@ -327,13 +315,13 @@ CREATE TABLE IF NOT EXISTS ${q("exceptions")} (
327
315
  tags JSONB
328
316
  );
329
317
 
330
- CREATE INDEX IF NOT EXISTS idx_${idx("exceptions")}_timestamp
331
- ON ${q("exceptions")} (timestamp DESC);
332
- CREATE INDEX IF NOT EXISTS idx_${idx("exceptions")}_request_id
333
- ON ${q("exceptions")} (request_id);
318
+ CREATE INDEX IF NOT EXISTS idx_${tablePrefix}_exceptions_timestamp
319
+ ON ${tablePrefix}_exceptions (timestamp DESC);
320
+ CREATE INDEX IF NOT EXISTS idx_${tablePrefix}_exceptions_request_id
321
+ ON ${tablePrefix}_exceptions (request_id);
334
322
 
335
- -- Telescope logs
336
- CREATE TABLE IF NOT EXISTS ${q("logs")} (
323
+ -- Telescope logs table
324
+ CREATE TABLE IF NOT EXISTS ${tablePrefix}_logs (
337
325
  id VARCHAR(21) PRIMARY KEY,
338
326
  level VARCHAR(10) NOT NULL,
339
327
  message TEXT NOT NULL,
@@ -342,22 +330,22 @@ CREATE TABLE IF NOT EXISTS ${q("logs")} (
342
330
  timestamp TIMESTAMPTZ NOT NULL
343
331
  );
344
332
 
345
- CREATE INDEX IF NOT EXISTS idx_${idx("logs")}_timestamp
346
- ON ${q("logs")} (timestamp DESC);
347
- CREATE INDEX IF NOT EXISTS idx_${idx("logs")}_level
348
- ON ${q("logs")} (level);
349
- CREATE INDEX IF NOT EXISTS idx_${idx("logs")}_request_id
350
- ON ${q("logs")} (request_id);
333
+ CREATE INDEX IF NOT EXISTS idx_${tablePrefix}_logs_timestamp
334
+ ON ${tablePrefix}_logs (timestamp DESC);
335
+ CREATE INDEX IF NOT EXISTS idx_${tablePrefix}_logs_level
336
+ ON ${tablePrefix}_logs (level);
337
+ CREATE INDEX IF NOT EXISTS idx_${tablePrefix}_logs_request_id
338
+ ON ${tablePrefix}_logs (request_id);
351
339
  `,
352
- down: schema ? `DROP SCHEMA IF EXISTS ${schema} CASCADE;\n` : `
353
- DROP TABLE IF EXISTS logs;
354
- DROP TABLE IF EXISTS exceptions;
355
- DROP TABLE IF EXISTS requests;
340
+ down: `
341
+ DROP TABLE IF EXISTS ${tablePrefix}_logs;
342
+ DROP TABLE IF EXISTS ${tablePrefix}_exceptions;
343
+ DROP TABLE IF EXISTS ${tablePrefix}_requests;
356
344
  `
357
345
  };
358
346
  }
347
+
359
348
  //#endregion
360
349
  exports.KyselyStorage = KyselyStorage;
361
350
  exports.getTelescopeMigration = getTelescopeMigration;
362
-
363
351
  //# sourceMappingURL=kysely.cjs.map