@dxos/observability 0.8.3 → 0.8.4-main.1068cf700f

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 (348) hide show
  1. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  2. package/dist/lib/browser/chunk-K4VFBKST.mjs +13 -0
  3. package/dist/lib/browser/chunk-K4VFBKST.mjs.map +7 -0
  4. package/dist/lib/browser/index.mjs +1066 -34
  5. package/dist/lib/browser/index.mjs.map +4 -4
  6. package/dist/lib/browser/log-processor-FDLTDQEM.mjs +45 -0
  7. package/dist/lib/browser/log-processor-FDLTDQEM.mjs.map +7 -0
  8. package/dist/lib/browser/logs-ATTRIUTL.mjs +113 -0
  9. package/dist/lib/browser/logs-ATTRIUTL.mjs.map +7 -0
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/metrics-PKTV6IGF.mjs +130 -0
  12. package/dist/lib/browser/metrics-PKTV6IGF.mjs.map +7 -0
  13. package/dist/lib/browser/traces-browser-XYXBF5ZX.mjs +62 -0
  14. package/dist/lib/browser/traces-browser-XYXBF5ZX.mjs.map +7 -0
  15. package/dist/lib/node-esm/chunk-FEVP3MK4.mjs +15 -0
  16. package/dist/lib/node-esm/chunk-FEVP3MK4.mjs.map +7 -0
  17. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  18. package/dist/lib/node-esm/index.mjs +1070 -34
  19. package/dist/lib/node-esm/index.mjs.map +4 -4
  20. package/dist/lib/node-esm/log-processor-TKJVJJSJ.mjs +46 -0
  21. package/dist/lib/node-esm/log-processor-TKJVJJSJ.mjs.map +7 -0
  22. package/dist/lib/node-esm/logs-7J45KLM7.mjs +114 -0
  23. package/dist/lib/node-esm/logs-7J45KLM7.mjs.map +7 -0
  24. package/dist/lib/node-esm/meta.json +1 -1
  25. package/dist/lib/node-esm/metrics-H7DDLYSG.mjs +131 -0
  26. package/dist/lib/node-esm/metrics-H7DDLYSG.mjs.map +7 -0
  27. package/dist/lib/node-esm/traces-KMTHMYFX.mjs +44 -0
  28. package/dist/lib/node-esm/traces-KMTHMYFX.mjs.map +7 -0
  29. package/dist/types/src/cli-observability-secrets.json +3 -4
  30. package/dist/types/src/extensions/index.d.ts +3 -0
  31. package/dist/types/src/extensions/index.d.ts.map +1 -0
  32. package/dist/types/src/extensions/index.js +6 -0
  33. package/dist/types/src/extensions/index.js.map +1 -0
  34. package/dist/types/src/extensions/otel/extension.d.ts +23 -0
  35. package/dist/types/src/extensions/otel/extension.d.ts.map +1 -0
  36. package/dist/types/src/extensions/otel/extension.js +124 -0
  37. package/dist/types/src/extensions/otel/extension.js.map +1 -0
  38. package/dist/types/src/extensions/otel/index.d.ts +2 -0
  39. package/dist/types/src/extensions/otel/index.d.ts.map +1 -0
  40. package/dist/types/src/extensions/otel/index.js +5 -0
  41. package/dist/types/src/extensions/otel/index.js.map +1 -0
  42. package/dist/types/src/{otel → extensions/otel}/logs.d.ts +4 -3
  43. package/dist/types/src/extensions/otel/logs.d.ts.map +1 -0
  44. package/dist/types/src/extensions/otel/logs.js +104 -0
  45. package/dist/types/src/extensions/otel/logs.js.map +1 -0
  46. package/dist/types/src/{otel → extensions/otel}/metrics.d.ts +0 -1
  47. package/dist/types/src/extensions/otel/metrics.d.ts.map +1 -0
  48. package/dist/types/src/{otel → extensions/otel}/metrics.js +6 -12
  49. package/dist/types/src/extensions/otel/metrics.js.map +1 -0
  50. package/dist/types/src/{otel → extensions/otel}/otel.d.ts +3 -3
  51. package/dist/types/src/extensions/otel/otel.d.ts.map +1 -0
  52. package/dist/types/src/{otel → extensions/otel}/otel.js +1 -1
  53. package/dist/types/src/extensions/otel/otel.js.map +1 -0
  54. package/dist/types/src/extensions/otel/traces-browser.d.ts.map +1 -0
  55. package/dist/types/src/extensions/otel/traces-browser.js +44 -0
  56. package/dist/types/src/extensions/otel/traces-browser.js.map +1 -0
  57. package/dist/types/src/extensions/otel/traces.d.ts.map +1 -0
  58. package/dist/types/src/extensions/otel/traces.js +38 -0
  59. package/dist/types/src/extensions/otel/traces.js.map +1 -0
  60. package/dist/types/src/extensions/posthog/extension.d.ts +15 -0
  61. package/dist/types/src/extensions/posthog/extension.d.ts.map +1 -0
  62. package/dist/types/src/extensions/posthog/extension.js +143 -0
  63. package/dist/types/src/extensions/posthog/extension.js.map +1 -0
  64. package/dist/types/src/extensions/posthog/index.d.ts +2 -0
  65. package/dist/types/src/extensions/posthog/index.d.ts.map +1 -0
  66. package/dist/types/src/extensions/posthog/index.js +5 -0
  67. package/dist/types/src/extensions/posthog/index.js.map +1 -0
  68. package/dist/types/src/extensions/posthog/log-processor.d.ts +3 -0
  69. package/dist/types/src/extensions/posthog/log-processor.d.ts.map +1 -0
  70. package/dist/types/src/extensions/posthog/log-processor.js +45 -0
  71. package/dist/types/src/extensions/posthog/log-processor.js.map +1 -0
  72. package/dist/types/src/extensions/posthog/log-processor.test.d.ts +2 -0
  73. package/dist/types/src/extensions/posthog/log-processor.test.d.ts.map +1 -0
  74. package/dist/types/src/extensions/posthog/log-processor.test.js +146 -0
  75. package/dist/types/src/extensions/posthog/log-processor.test.js.map +1 -0
  76. package/dist/types/src/extensions/stub.d.ts +3 -0
  77. package/dist/types/src/extensions/stub.d.ts.map +1 -0
  78. package/dist/types/src/extensions/stub.js +16 -0
  79. package/dist/types/src/extensions/stub.js.map +1 -0
  80. package/dist/types/src/index.d.ts +4 -2
  81. package/dist/types/src/index.d.ts.map +1 -1
  82. package/dist/types/src/index.js +5 -3
  83. package/dist/types/src/index.js.map +1 -1
  84. package/dist/types/src/log-buffer.d.ts +34 -0
  85. package/dist/types/src/log-buffer.d.ts.map +1 -0
  86. package/dist/types/src/log-buffer.js +70 -0
  87. package/dist/types/src/log-buffer.js.map +1 -0
  88. package/dist/types/src/log-buffer.test.d.ts +2 -0
  89. package/dist/types/src/log-buffer.test.d.ts.map +1 -0
  90. package/dist/types/src/log-buffer.test.js +107 -0
  91. package/dist/types/src/log-buffer.test.js.map +1 -0
  92. package/dist/types/src/observability-extension.d.ts +74 -0
  93. package/dist/types/src/observability-extension.d.ts.map +1 -0
  94. package/dist/types/src/observability-extension.js +5 -0
  95. package/dist/types/src/observability-extension.js.map +1 -0
  96. package/dist/types/src/observability.d.ts +32 -110
  97. package/dist/types/src/observability.d.ts.map +1 -1
  98. package/dist/types/src/observability.js +176 -455
  99. package/dist/types/src/observability.js.map +1 -1
  100. package/dist/types/src/observability.test.d.ts +2 -0
  101. package/dist/types/src/observability.test.d.ts.map +1 -0
  102. package/dist/types/src/observability.test.js +312 -0
  103. package/dist/types/src/observability.test.js.map +1 -0
  104. package/dist/types/src/providers/client-observability.d.ts +11 -0
  105. package/dist/types/src/providers/client-observability.d.ts.map +1 -0
  106. package/dist/types/src/providers/client-observability.js +200 -0
  107. package/dist/types/src/providers/client-observability.js.map +1 -0
  108. package/dist/types/src/providers/index.d.ts +4 -0
  109. package/dist/types/src/providers/index.d.ts.map +1 -0
  110. package/dist/types/src/providers/index.js +7 -0
  111. package/dist/types/src/providers/index.js.map +1 -0
  112. package/dist/types/src/providers/ip-data.d.ts +5 -0
  113. package/dist/types/src/providers/ip-data.d.ts.map +1 -0
  114. package/dist/types/src/providers/ip-data.js +55 -0
  115. package/dist/types/src/providers/ip-data.js.map +1 -0
  116. package/dist/types/src/providers/storage.d.ts +3 -0
  117. package/dist/types/src/providers/storage.d.ts.map +1 -0
  118. package/dist/types/src/providers/storage.js +19 -0
  119. package/dist/types/src/providers/storage.js.map +1 -0
  120. package/dist/types/src/storage/browser.d.ts +19 -0
  121. package/dist/types/src/storage/browser.d.ts.map +1 -0
  122. package/dist/types/src/storage/browser.js +58 -0
  123. package/dist/types/src/storage/browser.js.map +1 -0
  124. package/dist/types/src/storage/index.d.ts +2 -0
  125. package/dist/types/src/storage/index.d.ts.map +1 -0
  126. package/{src/segment/index.ts → dist/types/src/storage/index.js} +1 -2
  127. package/dist/types/src/storage/index.js.map +1 -0
  128. package/dist/types/src/storage/node.d.ts +26 -0
  129. package/dist/types/src/storage/node.d.ts.map +1 -0
  130. package/dist/types/src/storage/node.js +92 -0
  131. package/dist/types/src/storage/node.js.map +1 -0
  132. package/dist/types/src/storage/node.test.d.ts +2 -0
  133. package/dist/types/src/storage/node.test.d.ts.map +1 -0
  134. package/dist/types/src/storage/node.test.js +103 -0
  135. package/dist/types/src/storage/node.test.js.map +1 -0
  136. package/dist/types/tsconfig.tsbuildinfo +1 -1
  137. package/package.json +42 -63
  138. package/src/cli-observability-secrets.json +3 -4
  139. package/src/extensions/index.ts +6 -0
  140. package/src/extensions/otel/extension.ts +178 -0
  141. package/src/extensions/otel/index.ts +5 -0
  142. package/src/extensions/otel/logs.ts +134 -0
  143. package/src/{otel → extensions/otel}/metrics.ts +4 -21
  144. package/src/{otel → extensions/otel}/otel.ts +4 -4
  145. package/src/extensions/otel/traces-browser.ts +57 -0
  146. package/src/extensions/otel/traces.ts +49 -0
  147. package/src/extensions/posthog/extension.ts +172 -0
  148. package/src/extensions/posthog/index.ts +5 -0
  149. package/src/extensions/posthog/log-processor.test.ts +185 -0
  150. package/src/extensions/posthog/log-processor.ts +54 -0
  151. package/src/extensions/stub.ts +19 -0
  152. package/src/index.ts +5 -3
  153. package/src/log-buffer.test.ts +134 -0
  154. package/src/log-buffer.ts +101 -0
  155. package/src/observability-extension.ts +94 -0
  156. package/src/observability.test.ts +531 -0
  157. package/src/observability.ts +236 -577
  158. package/src/providers/client-observability.ts +253 -0
  159. package/src/providers/index.ts +7 -0
  160. package/src/providers/ip-data.ts +88 -0
  161. package/src/providers/storage.ts +23 -0
  162. package/src/storage/browser.ts +61 -0
  163. package/src/{sentry → storage}/index.ts +0 -1
  164. package/src/storage/node.test.ts +130 -0
  165. package/src/{helpers/node-observability.ts → storage/node.ts} +42 -70
  166. package/dist/lib/browser/chunk-G6EE7HFV.mjs +0 -147
  167. package/dist/lib/browser/chunk-G6EE7HFV.mjs.map +0 -7
  168. package/dist/lib/browser/chunk-JA5VJRKF.mjs +0 -164
  169. package/dist/lib/browser/chunk-JA5VJRKF.mjs.map +0 -7
  170. package/dist/lib/browser/chunk-KDP3SESE.mjs +0 -1
  171. package/dist/lib/browser/chunk-YQJELTRP.mjs +0 -996
  172. package/dist/lib/browser/chunk-YQJELTRP.mjs.map +0 -7
  173. package/dist/lib/browser/observability-HDE3I7TA.mjs +0 -10
  174. package/dist/lib/browser/otel-LHAFLNBQ.mjs +0 -277
  175. package/dist/lib/browser/otel-LHAFLNBQ.mjs.map +0 -7
  176. package/dist/lib/browser/segment/index.mjs +0 -11
  177. package/dist/lib/browser/segment/index.mjs.map +0 -7
  178. package/dist/lib/browser/sentry/index.mjs +0 -24
  179. package/dist/lib/browser/sentry/index.mjs.map +0 -7
  180. package/dist/lib/browser/sentry-log-processor-625AISXI.mjs +0 -146
  181. package/dist/lib/browser/sentry-log-processor-625AISXI.mjs.map +0 -7
  182. package/dist/lib/node/chunk-325GAGFA.cjs +0 -213
  183. package/dist/lib/node/chunk-325GAGFA.cjs.map +0 -7
  184. package/dist/lib/node/chunk-BZHVFSLF.cjs +0 -1025
  185. package/dist/lib/node/chunk-BZHVFSLF.cjs.map +0 -7
  186. package/dist/lib/node/chunk-GIYJMZEQ.cjs +0 -2
  187. package/dist/lib/node/chunk-GIYJMZEQ.cjs.map +0 -7
  188. package/dist/lib/node/chunk-MZ3PMDTP.cjs +0 -163
  189. package/dist/lib/node/chunk-MZ3PMDTP.cjs.map +0 -7
  190. package/dist/lib/node/index.cjs +0 -60
  191. package/dist/lib/node/index.cjs.map +0 -7
  192. package/dist/lib/node/meta.json +0 -1
  193. package/dist/lib/node/observability-E2NGRIEN.cjs +0 -32
  194. package/dist/lib/node/observability-E2NGRIEN.cjs.map +0 -7
  195. package/dist/lib/node/otel-VF5YNCR3.cjs +0 -278
  196. package/dist/lib/node/otel-VF5YNCR3.cjs.map +0 -7
  197. package/dist/lib/node/segment/index.cjs +0 -33
  198. package/dist/lib/node/segment/index.cjs.map +0 -7
  199. package/dist/lib/node/sentry/index.cjs +0 -46
  200. package/dist/lib/node/sentry/index.cjs.map +0 -7
  201. package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs +0 -164
  202. package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs.map +0 -7
  203. package/dist/lib/node-esm/chunk-AZMSBUWR.mjs +0 -202
  204. package/dist/lib/node-esm/chunk-AZMSBUWR.mjs.map +0 -7
  205. package/dist/lib/node-esm/chunk-H7Y2DDUN.mjs +0 -135
  206. package/dist/lib/node-esm/chunk-H7Y2DDUN.mjs.map +0 -7
  207. package/dist/lib/node-esm/chunk-M7QJLFGR.mjs +0 -997
  208. package/dist/lib/node-esm/chunk-M7QJLFGR.mjs.map +0 -7
  209. package/dist/lib/node-esm/chunk-YJ4KVBWC.mjs +0 -2
  210. package/dist/lib/node-esm/chunk-YJ4KVBWC.mjs.map +0 -7
  211. package/dist/lib/node-esm/observability-7BTI46NM.mjs +0 -11
  212. package/dist/lib/node-esm/observability-7BTI46NM.mjs.map +0 -7
  213. package/dist/lib/node-esm/otel-AF5TSABC.mjs +0 -260
  214. package/dist/lib/node-esm/otel-AF5TSABC.mjs.map +0 -7
  215. package/dist/lib/node-esm/segment/index.mjs +0 -12
  216. package/dist/lib/node-esm/segment/index.mjs.map +0 -7
  217. package/dist/lib/node-esm/sentry/index.mjs +0 -25
  218. package/dist/lib/node-esm/sentry/index.mjs.map +0 -7
  219. package/dist/lib/node-esm/sentry-log-processor-HPUPCMRG.mjs +0 -147
  220. package/dist/lib/node-esm/sentry-log-processor-HPUPCMRG.mjs.map +0 -7
  221. package/dist/types/src/helpers/browser-observability.d.ts +0 -17
  222. package/dist/types/src/helpers/browser-observability.d.ts.map +0 -1
  223. package/dist/types/src/helpers/browser-observability.js +0 -140
  224. package/dist/types/src/helpers/browser-observability.js.map +0 -1
  225. package/dist/types/src/helpers/common.d.ts +0 -12
  226. package/dist/types/src/helpers/common.d.ts.map +0 -1
  227. package/dist/types/src/helpers/common.js +0 -23
  228. package/dist/types/src/helpers/common.js.map +0 -1
  229. package/dist/types/src/helpers/index.d.ts +0 -6
  230. package/dist/types/src/helpers/index.d.ts.map +0 -1
  231. package/dist/types/src/helpers/index.js +0 -9
  232. package/dist/types/src/helpers/index.js.map +0 -1
  233. package/dist/types/src/helpers/map-spaces.d.ts +0 -18
  234. package/dist/types/src/helpers/map-spaces.d.ts.map +0 -1
  235. package/dist/types/src/helpers/map-spaces.js +0 -37
  236. package/dist/types/src/helpers/map-spaces.js.map +0 -1
  237. package/dist/types/src/helpers/node-observability.d.ts +0 -24
  238. package/dist/types/src/helpers/node-observability.d.ts.map +0 -1
  239. package/dist/types/src/helpers/node-observability.js +0 -101
  240. package/dist/types/src/helpers/node-observability.js.map +0 -1
  241. package/dist/types/src/helpers/setup-telemetry-listeners.d.ts +0 -4
  242. package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +0 -1
  243. package/dist/types/src/helpers/setup-telemetry-listeners.js +0 -97
  244. package/dist/types/src/helpers/setup-telemetry-listeners.js.map +0 -1
  245. package/dist/types/src/otel/index.d.ts +0 -5
  246. package/dist/types/src/otel/index.d.ts.map +0 -1
  247. package/dist/types/src/otel/index.js +0 -8
  248. package/dist/types/src/otel/index.js.map +0 -1
  249. package/dist/types/src/otel/logs.d.ts.map +0 -1
  250. package/dist/types/src/otel/logs.js +0 -71
  251. package/dist/types/src/otel/logs.js.map +0 -1
  252. package/dist/types/src/otel/metrics.d.ts.map +0 -1
  253. package/dist/types/src/otel/metrics.js.map +0 -1
  254. package/dist/types/src/otel/otel.d.ts.map +0 -1
  255. package/dist/types/src/otel/otel.js.map +0 -1
  256. package/dist/types/src/otel/traces-browser.d.ts.map +0 -1
  257. package/dist/types/src/otel/traces-browser.js +0 -47
  258. package/dist/types/src/otel/traces-browser.js.map +0 -1
  259. package/dist/types/src/otel/traces.d.ts.map +0 -1
  260. package/dist/types/src/otel/traces.js +0 -40
  261. package/dist/types/src/otel/traces.js.map +0 -1
  262. package/dist/types/src/segment/base.d.ts +0 -15
  263. package/dist/types/src/segment/base.d.ts.map +0 -1
  264. package/dist/types/src/segment/base.js +0 -50
  265. package/dist/types/src/segment/base.js.map +0 -1
  266. package/dist/types/src/segment/browser.d.ts +0 -15
  267. package/dist/types/src/segment/browser.d.ts.map +0 -1
  268. package/dist/types/src/segment/browser.js +0 -67
  269. package/dist/types/src/segment/browser.js.map +0 -1
  270. package/dist/types/src/segment/index.d.ts +0 -3
  271. package/dist/types/src/segment/index.d.ts.map +0 -1
  272. package/dist/types/src/segment/index.js +0 -6
  273. package/dist/types/src/segment/index.js.map +0 -1
  274. package/dist/types/src/segment/node.d.ts +0 -16
  275. package/dist/types/src/segment/node.d.ts.map +0 -1
  276. package/dist/types/src/segment/node.js +0 -83
  277. package/dist/types/src/segment/node.js.map +0 -1
  278. package/dist/types/src/segment/types.d.ts +0 -52
  279. package/dist/types/src/segment/types.d.ts.map +0 -1
  280. package/dist/types/src/segment/types.js +0 -18
  281. package/dist/types/src/segment/types.js.map +0 -1
  282. package/dist/types/src/sentry/browser.d.ts +0 -32
  283. package/dist/types/src/sentry/browser.d.ts.map +0 -1
  284. package/dist/types/src/sentry/browser.js +0 -112
  285. package/dist/types/src/sentry/browser.js.map +0 -1
  286. package/dist/types/src/sentry/index.d.ts +0 -3
  287. package/dist/types/src/sentry/index.d.ts.map +0 -1
  288. package/dist/types/src/sentry/index.js +0 -6
  289. package/dist/types/src/sentry/index.js.map +0 -1
  290. package/dist/types/src/sentry/node.d.ts +0 -32
  291. package/dist/types/src/sentry/node.d.ts.map +0 -1
  292. package/dist/types/src/sentry/node.js +0 -111
  293. package/dist/types/src/sentry/node.js.map +0 -1
  294. package/dist/types/src/sentry/node.node.test.d.ts +0 -2
  295. package/dist/types/src/sentry/node.node.test.d.ts.map +0 -1
  296. package/dist/types/src/sentry/node.node.test.js +0 -34
  297. package/dist/types/src/sentry/node.node.test.js.map +0 -1
  298. package/dist/types/src/sentry/sentry-log-processor.d.ts +0 -9
  299. package/dist/types/src/sentry/sentry-log-processor.d.ts.map +0 -1
  300. package/dist/types/src/sentry/sentry-log-processor.js +0 -149
  301. package/dist/types/src/sentry/sentry-log-processor.js.map +0 -1
  302. package/dist/types/src/sentry/sentry.node.test.d.ts +0 -2
  303. package/dist/types/src/sentry/sentry.node.test.d.ts.map +0 -1
  304. package/dist/types/src/sentry/sentry.node.test.js +0 -28
  305. package/dist/types/src/sentry/sentry.node.test.js.map +0 -1
  306. package/dist/types/src/sentry/types.d.ts +0 -18
  307. package/dist/types/src/sentry/types.d.ts.map +0 -1
  308. package/dist/types/src/sentry/types.js +0 -4
  309. package/dist/types/src/sentry/types.js.map +0 -1
  310. package/dist/types/src/testing/index.d.ts +0 -2
  311. package/dist/types/src/testing/index.d.ts.map +0 -1
  312. package/dist/types/src/testing/index.js +0 -5
  313. package/dist/types/src/testing/index.js.map +0 -1
  314. package/dist/types/src/testing/testkit/browser.d.ts +0 -2
  315. package/dist/types/src/testing/testkit/browser.d.ts.map +0 -1
  316. package/dist/types/src/testing/testkit/browser.js +0 -7
  317. package/dist/types/src/testing/testkit/browser.js.map +0 -1
  318. package/dist/types/src/testing/testkit/index.d.ts +0 -2
  319. package/dist/types/src/testing/testkit/index.d.ts.map +0 -1
  320. package/dist/types/src/testing/testkit/index.js +0 -6
  321. package/dist/types/src/testing/testkit/index.js.map +0 -1
  322. package/src/helpers/browser-observability.ts +0 -177
  323. package/src/helpers/common.ts +0 -38
  324. package/src/helpers/index.ts +0 -9
  325. package/src/helpers/map-spaces.ts +0 -48
  326. package/src/helpers/setup-telemetry-listeners.ts +0 -108
  327. package/src/otel/index.ts +0 -8
  328. package/src/otel/logs.ts +0 -100
  329. package/src/otel/traces-browser.ts +0 -59
  330. package/src/otel/traces.ts +0 -57
  331. package/src/segment/base.ts +0 -69
  332. package/src/segment/browser.ts +0 -68
  333. package/src/segment/node.ts +0 -94
  334. package/src/segment/types.ts +0 -57
  335. package/src/sentry/browser.ts +0 -133
  336. package/src/sentry/node.node.test.ts +0 -39
  337. package/src/sentry/node.ts +0 -126
  338. package/src/sentry/sentry-log-processor.ts +0 -166
  339. package/src/sentry/sentry.node.test.ts +0 -34
  340. package/src/sentry/types.ts +0 -22
  341. package/src/testing/index.ts +0 -5
  342. package/src/testing/testkit/browser.ts +0 -8
  343. package/src/testing/testkit/index.ts +0 -7
  344. package/src/testing/testkit/shims.d.ts +0 -5
  345. /package/dist/lib/browser/{chunk-KDP3SESE.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  346. /package/dist/lib/{browser/observability-HDE3I7TA.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
  347. /package/dist/types/src/{otel → extensions/otel}/traces-browser.d.ts +0 -0
  348. /package/dist/types/src/{otel → extensions/otel}/traces.d.ts +0 -0
@@ -1,997 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- TelemetryEvent
4
- } from "./chunk-AZMSBUWR.mjs";
5
-
6
- // packages/sdk/observability/src/observability.ts
7
- import { Event, scheduleTaskInterval } from "@dxos/async";
8
- import { PublicKey } from "@dxos/client";
9
- import { Context } from "@dxos/context";
10
- import { invariant } from "@dxos/invariant";
11
- import { log as log3, LogLevel } from "@dxos/log";
12
- import { ConnectionState } from "@dxos/network-manager";
13
- import { DeviceKind, Platform } from "@dxos/protocols/proto/dxos/client/services";
14
- import { isNode } from "@dxos/util";
15
-
16
- // packages/sdk/observability/src/cli-observability-secrets.json
17
- var cli_observability_secrets_default = {
18
- SENTRY_DESTINATION: "https://2647916221e643869965e78469479aa4@o4504012000067584.ingest.sentry.io/4504012027265029",
19
- TELEMETRY_API_KEY: "B00QG6PtJJrJ0VVFe0H5a6bcUUShKyZM",
20
- IPDATA_API_KEY: "73dfdecdf979c18f07d50cf841bbdd9e589f237256326ac8cca23786",
21
- OTEL_ENDPOINT: "https://otlp-proxy.dxos.workers.dev",
22
- OTEL_AUTHORIZATION: "Basic OTA3MzIzOmdsY19leUp2SWpvaU1URXdNVEl6TnlJc0ltNGlPaUp6ZEdGamF5MDVNRGN6TWpNdGFXNTBaV2R5WVhScGIyNHRZMnh2ZFdSbWJHRnlaUzF2ZEd4d0xYQnliM2g1SWl3aWF5STZJalZ2Tkd4cFYydE5iRmszTlRNMGJUVXpTemRTVjNBeVNpSXNJbTBpT25zaWNpSTZJbkJ5YjJRdGRYTXRaV0Z6ZEMwd0luMTk="
23
- };
24
-
25
- // packages/sdk/observability/src/helpers/browser-observability.ts
26
- import * as localForage from "localforage";
27
- import { log } from "@dxos/log";
28
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/observability/src/helpers/browser-observability.ts";
29
- var OBSERVABILITY_DISABLED_KEY = "observability-disabled";
30
- var OBSERVABILITY_GROUP_KEY = "observability-group";
31
- var isObservabilityDisabled = async (namespace) => {
32
- try {
33
- return await localForage.getItem(`${namespace}:${OBSERVABILITY_DISABLED_KEY}`) === "true";
34
- } catch (err) {
35
- log.catch("Failed to check if observability is disabled, assuming it is", err, {
36
- F: __dxlog_file,
37
- L: 24,
38
- S: void 0,
39
- C: (f, a) => f(...a)
40
- });
41
- return true;
42
- }
43
- };
44
- var storeObservabilityDisabled = async (namespace, value) => {
45
- try {
46
- await localForage.setItem(`${namespace}:${OBSERVABILITY_DISABLED_KEY}`, String(value));
47
- } catch (err) {
48
- log.catch("Failed to store observability disabled", err, {
49
- F: __dxlog_file,
50
- L: 33,
51
- S: void 0,
52
- C: (f, a) => f(...a)
53
- });
54
- }
55
- };
56
- var getObservabilityGroup = async (namespace) => {
57
- try {
58
- return await localForage.getItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`) ?? void 0;
59
- } catch (err) {
60
- log.catch("Failed to get observability group", err, {
61
- F: __dxlog_file,
62
- L: 41,
63
- S: void 0,
64
- C: (f, a) => f(...a)
65
- });
66
- }
67
- };
68
- var storeObservabilityGroup = async (namespace, value) => {
69
- try {
70
- await localForage.setItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`, value);
71
- } catch (err) {
72
- log.catch("Failed to store observability group", err, {
73
- F: __dxlog_file,
74
- L: 49,
75
- S: void 0,
76
- C: (f, a) => f(...a)
77
- });
78
- }
79
- };
80
- var initializeAppObservability = async ({
81
- namespace,
82
- config,
83
- // TODO(nf): Configure mode.
84
- mode = "basic",
85
- tracingEnable = false,
86
- replayEnable = false
87
- }) => {
88
- log("initializeAppObservability", {
89
- config
90
- }, {
91
- F: __dxlog_file,
92
- L: 73,
93
- S: void 0,
94
- C: (f, a) => f(...a)
95
- });
96
- const group = await getObservabilityGroup(namespace) ?? void 0;
97
- const release = `${namespace}@${config.get("runtime.app.build.version")}`;
98
- const environment = config.get("runtime.app.env.DX_ENVIRONMENT");
99
- const { Observability: Observability2 } = await import("./observability-7BTI46NM.mjs");
100
- const observability = new Observability2({
101
- namespace,
102
- release,
103
- environment,
104
- group,
105
- mode,
106
- config,
107
- errorLog: {
108
- sentryInitOptions: {
109
- environment,
110
- release,
111
- tracing: tracingEnable,
112
- replay: replayEnable,
113
- // TODO(wittjosiah): Configure these.
114
- // Consider using a sampling function to dynamically configure these values.
115
- // https://docs.sentry.io/platforms/javascript/configuration/sampling/#setting-a-sampling-function
116
- sampleRate: 1,
117
- replaySampleRate: 1,
118
- replaySampleRateOnError: 1
119
- }
120
- }
121
- });
122
- const observabilityDisabled = await isObservabilityDisabled(namespace);
123
- if (observabilityDisabled) {
124
- observability.setMode("disabled");
125
- log.info("observability disabled", void 0, {
126
- F: __dxlog_file,
127
- L: 113,
128
- S: void 0,
129
- C: (f, a) => f(...a)
130
- });
131
- return observability;
132
- }
133
- try {
134
- const getIPData = async (config2) => {
135
- const IP_DATA_CACHE_TIMEOUT = 6 * 60 * 60 * 1e3;
136
- const cachedData = await localForage.getItem("dxos:observability:ipdata");
137
- if (cachedData && cachedData.timestamp > Date.now() - IP_DATA_CACHE_TIMEOUT) {
138
- return cachedData.data;
139
- }
140
- const IPDATA_API_KEY = config2.get("runtime.app.env.DX_IPDATA_API_KEY");
141
- if (IPDATA_API_KEY) {
142
- return fetch(`https://api.ipdata.co?api-key=${IPDATA_API_KEY}`).then((res) => res.json()).then((data) => {
143
- localForage.setItem("dxos:observability:ipdata", {
144
- data,
145
- timestamp: Date.now()
146
- }).catch((err) => observability.captureException(err));
147
- return data;
148
- }).catch((err) => observability.captureException(err));
149
- }
150
- };
151
- await observability.initialize();
152
- observability.startErrorLogs();
153
- const ipData = await getIPData(config);
154
- ipData && observability.setIPDataTelemetryTags(ipData);
155
- if (typeof navigator !== "undefined" && navigator.storage?.estimate) {
156
- setInterval(async () => {
157
- try {
158
- const storageEstimate = await navigator.storage.estimate();
159
- storageEstimate.usage && observability.setTag("storageUsage", storageEstimate.usage.toString(), "telemetry");
160
- storageEstimate.quota && observability.setTag("storageQuota", storageEstimate.quota.toString(), "telemetry");
161
- } catch (error) {
162
- log.warn("Failed to run estimate()", error, {
163
- F: __dxlog_file,
164
- L: 168,
165
- S: void 0,
166
- C: (f, a) => f(...a)
167
- });
168
- }
169
- }, 1e4);
170
- }
171
- } catch (err) {
172
- log.error("Failed to initialize app observability", err, {
173
- F: __dxlog_file,
174
- L: 173,
175
- S: void 0,
176
- C: (f, a) => f(...a)
177
- });
178
- }
179
- return observability;
180
- };
181
-
182
- // packages/sdk/observability/src/helpers/common.ts
183
- var getTelemetryIdentifier = (client) => {
184
- if (!client?.initialized) {
185
- return void 0;
186
- }
187
- const identity = client.halo.identity.get();
188
- if (identity) {
189
- return identity.did;
190
- }
191
- return void 0;
192
- };
193
- var getTelemetryIdentity = (client) => {
194
- const did = getTelemetryIdentifier(client);
195
- return {
196
- did
197
- };
198
- };
199
-
200
- // packages/sdk/observability/src/helpers/node-observability.ts
201
- import yaml from "js-yaml";
202
- import { existsSync, statSync } from "node:fs";
203
- import { mkdir, readFile, writeFile } from "node:fs/promises";
204
- import { join } from "node:path";
205
- import { v4 as uuid, validate as validateUuid } from "uuid";
206
- import { log as log2 } from "@dxos/log";
207
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/sdk/observability/src/helpers/node-observability.ts";
208
- var showObservabilityBanner = async (configDir, bannercb) => {
209
- const path = join(configDir, ".observability-banner-printed");
210
- if (existsSync(path)) {
211
- return;
212
- }
213
- bannercb(
214
- // eslint-disable-next-line no-multi-str
215
- "Basic observability data will be sent to the DXOS team in order to improve the product. This includes performance metrics, error logs, and usage data. No personally identifiable information, other than your public key, is included with this data and no private data ever leaves your devices. To disable sending observability data, set the environment variable DX_DISABLE_OBSERVABILITY=true."
216
- );
217
- await writeFile(path, "", "utf-8");
218
- };
219
- var getObservabilityState = async (configDir) => {
220
- if (existsSync(configDir)) {
221
- if (!statSync(configDir).isDirectory()) {
222
- throw new Error(`Config directory ${configDir} exists but is not a directory`);
223
- }
224
- } else {
225
- await mkdir(configDir, {
226
- recursive: true
227
- });
228
- }
229
- const idPath = join(configDir, "observability.yml");
230
- if (existsSync(idPath)) {
231
- const context = await readFile(idPath, "utf-8");
232
- return validate(context) ?? initializeState(idPath);
233
- }
234
- return initializeState(idPath);
235
- };
236
- var initializeState = async (idPath) => {
237
- const observabilityState = {
238
- installationId: uuid(),
239
- group: process.env.DX_OBSERVABILITY_GROUP ?? void 0,
240
- mode: process.env.DX_DISABLE_OBSERVABILITY ? "disabled" : process.env.DX_OBSERVABILITY_MODE ?? "basic"
241
- };
242
- await writeFile(idPath, "# This file is automatically generated by the @dxos/cli.\n" + yaml.dump(observabilityState), "utf-8");
243
- return observabilityState;
244
- };
245
- var validate = (contextString) => {
246
- const context = yaml.load(contextString);
247
- if (Boolean(context.installationId) && validateUuid(context.installationId)) {
248
- return {
249
- ...context,
250
- mode: process.env.DX_DISABLE_OBSERVABILITY ? "disabled" : context.mode ?? "basic"
251
- };
252
- }
253
- };
254
- var initializeNodeObservability = async ({ namespace, version, config, installationId, group, mode = "basic", tracingEnable = true, replayEnable = true }) => {
255
- log2("initializeCliObservability", {
256
- config
257
- }, {
258
- F: __dxlog_file2,
259
- L: 110,
260
- S: void 0,
261
- C: (f, a) => f(...a)
262
- });
263
- const release = `${namespace}@${version}`;
264
- const environment = process.env.DX_ENVIRONMENT ?? "unknown";
265
- const observability = new Observability({
266
- mode,
267
- namespace,
268
- release,
269
- environment,
270
- group,
271
- errorLog: {
272
- sentryInitOptions: {
273
- environment,
274
- release,
275
- // TODO(wittjosiah): Configure this.
276
- sampleRate: 1
277
- }
278
- }
279
- });
280
- observability.setTag("installationId", installationId);
281
- const IPDATA_API_KEY = config.get("runtime.app.env.DX_IPDATA_API_KEY");
282
- try {
283
- const res = await fetch(`https://api.ipdata.co/?api-key=${IPDATA_API_KEY}`);
284
- const ipData = await res.json();
285
- ipData && observability.setIPDataTelemetryTags(ipData);
286
- } catch (err) {
287
- observability?.captureException(err);
288
- }
289
- return observability;
290
- };
291
-
292
- // packages/sdk/observability/src/helpers/map-spaces.ts
293
- var mapSpaces = (spaces, options = {
294
- verbose: false,
295
- truncateKeys: false
296
- }) => {
297
- return spaces.map((space) => {
298
- const { open, ready } = space.internal.data.metrics ?? {};
299
- const startup = open && ready && ready.getTime() - open.getTime();
300
- const pipeline = space.internal.data.pipeline;
301
- const startDataMutations = pipeline?.currentEpoch?.subject.assertion.timeframe.totalMessages() ?? 0;
302
- const epoch = pipeline?.currentEpoch?.subject.assertion.number;
303
- const currentDataMutations = pipeline?.currentDataTimeframe?.totalMessages() ?? 0;
304
- const totalDataMutations = pipeline?.targetDataTimeframe?.totalMessages() ?? 0;
305
- return {
306
- // TODO(nf): truncate keys for DD?
307
- key: space.key.truncate(),
308
- open: space.isOpen,
309
- members: space.members.get().length,
310
- objects: space.db.coreDatabase.getAllObjectIds().length,
311
- startup,
312
- epoch,
313
- // appliedEpoch,
314
- startDataMutations,
315
- currentDataMutations,
316
- totalDataMutations,
317
- // TODO(burdon): Negative?
318
- progress: (Math.min(Math.abs((currentDataMutations - startDataMutations) / (totalDataMutations - startDataMutations)), 1) * 100).toFixed(0)
319
- };
320
- });
321
- };
322
-
323
- // packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts
324
- var lastFocusEvent = /* @__PURE__ */ new Date();
325
- var totalTime = 0;
326
- var setupTelemetryListeners = (namespace, client, observability) => {
327
- const clickCallback = (event) => {
328
- const id = event.target?.id;
329
- if (!id) {
330
- return;
331
- }
332
- setTimeout(() => {
333
- observability.track({
334
- ...getTelemetryIdentity(client),
335
- action: "window.click",
336
- properties: {
337
- id: event.target?.id,
338
- path: event.composedPath().filter((el) => Boolean(el.tagName)).map((el) => `${el.tagName.toLowerCase()}${el.id ? `#${el.id}` : ""}`).reverse().join(">")
339
- }
340
- });
341
- });
342
- };
343
- const focusCallback = () => {
344
- const now = /* @__PURE__ */ new Date();
345
- setTimeout(() => {
346
- observability.track({
347
- ...getTelemetryIdentity(client),
348
- action: "window.focus",
349
- properties: {
350
- timeAway: now.getTime() - lastFocusEvent.getTime()
351
- }
352
- });
353
- });
354
- lastFocusEvent = now;
355
- };
356
- const blurCallback = () => {
357
- const now = /* @__PURE__ */ new Date();
358
- const duration = now.getTime() - lastFocusEvent.getTime();
359
- setTimeout(() => {
360
- observability.track({
361
- ...getTelemetryIdentity(client),
362
- action: "window.blur",
363
- properties: {
364
- duration
365
- }
366
- });
367
- });
368
- lastFocusEvent = now;
369
- totalTime = totalTime + duration;
370
- };
371
- const unloadCallback = () => {
372
- setTimeout(() => {
373
- observability.track({
374
- ...getTelemetryIdentity(client),
375
- action: "page.unload",
376
- properties: {
377
- duration: totalTime
378
- }
379
- });
380
- });
381
- };
382
- const errorCallback = (event) => {
383
- setTimeout(() => {
384
- observability.track({
385
- ...getTelemetryIdentity(client),
386
- action: "window.error",
387
- properties: {
388
- message: event.message,
389
- filename: event.filename,
390
- stack: event.error?.stack,
391
- cause: event.error?.cause
392
- }
393
- });
394
- });
395
- };
396
- window.addEventListener("click", clickCallback, true);
397
- window.addEventListener("focus", focusCallback);
398
- window.addEventListener("blur", blurCallback);
399
- window.addEventListener("beforeunload", unloadCallback);
400
- window.addEventListener("error", errorCallback);
401
- return () => {
402
- window.removeEventListener("click", clickCallback, true);
403
- window.removeEventListener("focus", focusCallback);
404
- window.removeEventListener("blur", blurCallback);
405
- window.removeEventListener("beforeunload", unloadCallback);
406
- window.removeEventListener("error", errorCallback);
407
- };
408
- };
409
-
410
- // packages/sdk/observability/src/observability.ts
411
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/sdk/observability/src/observability.ts";
412
- var SPACE_METRICS_MIN_INTERVAL = 1e3 * 60;
413
- var SPACE_TELEMETRY_MIN_INTERVAL = 1e3 * 60 * 60;
414
- var NETWORK_METRICS_MIN_INTERVAL = 1e3 * 60 * 5;
415
- var Observability = class {
416
- // TODO(nf): make platform a required extension?
417
- constructor({ mode, namespace, environment, release, config, group, secrets, telemetry, errorLog }) {
418
- this._tags = /* @__PURE__ */ new Map();
419
- this._ctx = new Context(void 0, {
420
- F: __dxlog_file3,
421
- L: 115
422
- });
423
- this.setIPDataTelemetryTags = (ipData) => {
424
- this.setTag("city", ipData.city, "telemetry");
425
- this.setTag("region", ipData.region, "telemetry");
426
- this.setTag("country", ipData.country, "telemetry");
427
- ipData.latitude && this.setTag("latitude", ipData.latitude.toString(), "telemetry");
428
- ipData.longitude && this.setTag("longitude", ipData.longitude.toString(), "telemetry");
429
- };
430
- this._mode = mode;
431
- this._namespace = namespace;
432
- this._config = config;
433
- this._group = group;
434
- this._secrets = this._loadSecrets(config, secrets);
435
- this._telemetryBatchSize = telemetry?.batchSize ?? 30;
436
- this._errorReportingOptions = errorLog?.sentryInitOptions;
437
- this.setTag("mode", this._mode);
438
- this.setTag("namespace", this._namespace);
439
- this.setTag("environment", environment);
440
- this.setTag("release", release);
441
- this.setTag("session", PublicKey.random().toHex());
442
- this.setTag("group", this._group);
443
- }
444
- get mode() {
445
- return this._mode;
446
- }
447
- get group() {
448
- return this._group;
449
- }
450
- get enabled() {
451
- return this._mode !== "disabled";
452
- }
453
- _loadSecrets(config, secrets) {
454
- if (isNode()) {
455
- const mergedSecrets = {
456
- ...cli_observability_secrets_default,
457
- ...secrets
458
- };
459
- process.env.DX_ENVIRONMENT && (mergedSecrets.DX_ENVIRONMENT = process.env.DX_ENVIRONMENT);
460
- process.env.DX_RELEASE && (mergedSecrets.DX_RELEASE = process.env.DX_RELEASE);
461
- process.env.SENTRY_DESTINATION && (mergedSecrets.SENTRY_DESTINATION = process.env.SENTRY_DESTINATION);
462
- process.env.TELEMETRY_API_KEY && (mergedSecrets.TELEMETRY_API_KEY = process.env.TELEMETRY_API_KEY);
463
- process.env.IPDATA_API_KEY && (mergedSecrets.IPDATA_API_KEY = process.env.IPDATA_API_KEY);
464
- process.env.DX_OTEL_ENDPOINT && (mergedSecrets.OTEL_ENDPOINT = process.env.DX_OTEL_ENDPOINT);
465
- process.env.DX_OTEL_AUTHORIZATION && (mergedSecrets.OTEL_AUTHORIZATION = process.env.DX_OTEL_AUTHORIZATION);
466
- return mergedSecrets;
467
- } else {
468
- log3("config", {
469
- rtc: this._secrets,
470
- config
471
- }, {
472
- F: __dxlog_file3,
473
- L: 176,
474
- S: this,
475
- C: (f, a) => f(...a)
476
- });
477
- return {
478
- DX_ENVIRONMENT: config?.get("runtime.app.env.DX_ENVIRONMENT"),
479
- DX_RELEASE: config?.get("runtime.app.env.DX_RELEASE"),
480
- SENTRY_DESTINATION: config?.get("runtime.app.env.DX_SENTRY_DESTINATION"),
481
- TELEMETRY_API_KEY: config?.get("runtime.app.env.DX_TELEMETRY_API_KEY"),
482
- IPDATA_API_KEY: config?.get("runtime.app.env.DX_IPDATA_API_KEY"),
483
- OTEL_ENDPOINT: config?.get("runtime.app.env.DX_OTEL_ENDPOINT"),
484
- OTEL_AUTHORIZATION: config?.get("runtime.app.env.DX_OTEL_AUTHORIZATION"),
485
- ...secrets
486
- };
487
- }
488
- }
489
- async initialize() {
490
- log3("initializing...", void 0, {
491
- F: __dxlog_file3,
492
- L: 191,
493
- S: this,
494
- C: (f, a) => f(...a)
495
- });
496
- await this._initLogs();
497
- await this._initMetrics();
498
- await this._initTelemetry();
499
- await this._initErrorLogs();
500
- await this._initTraces();
501
- }
502
- async close() {
503
- log3("closing...", void 0, {
504
- F: __dxlog_file3,
505
- L: 200,
506
- S: this,
507
- C: (f, a) => f(...a)
508
- });
509
- const closes = [];
510
- this._telemetry && closes.push(this._telemetry.close());
511
- this._otelMetrics && closes.push(this._otelMetrics.close());
512
- this._otelLogs && closes.push(this._otelLogs.close());
513
- await Promise.all(closes);
514
- await this._ctx.dispose();
515
- }
516
- setMode(mode) {
517
- this._mode = mode;
518
- }
519
- /**
520
- * camelCase keys are converted to snake_case in Segment.
521
- */
522
- setTag(key, value, scope) {
523
- if (value === void 0) {
524
- return;
525
- }
526
- if (this.enabled && (scope === void 0 || scope === "all" || scope === "errors")) {
527
- this._setTag?.(key, value);
528
- }
529
- if (!scope) {
530
- scope = "all";
531
- }
532
- this._tags.set(key, {
533
- value,
534
- scope
535
- });
536
- }
537
- getTag(key) {
538
- return this._tags.get(key);
539
- }
540
- // TODO(wittjosiah): Improve privacy of telemetry identifiers. See `getTelemetryIdentifier`.
541
- async setIdentityTags(clientServices) {
542
- if (clientServices.IdentityService) {
543
- clientServices.IdentityService.queryIdentity().subscribe((idqr) => {
544
- if (!idqr?.identity?.did) {
545
- log3("empty response from identity service", {
546
- idqr
547
- }, {
548
- F: __dxlog_file3,
549
- L: 247,
550
- S: this,
551
- C: (f, a) => f(...a)
552
- });
553
- return;
554
- }
555
- this.setTag("did", idqr.identity.did);
556
- this._telemetry?.identify({
557
- userId: idqr.identity.did
558
- });
559
- });
560
- }
561
- if (clientServices.DevicesService) {
562
- clientServices.DevicesService.queryDevices().subscribe((dqr) => {
563
- if (!dqr || !dqr.devices || dqr.devices.length === 0) {
564
- log3("empty response from device service", {
565
- device: dqr
566
- }, {
567
- F: __dxlog_file3,
568
- L: 259,
569
- S: this,
570
- C: (f, a) => f(...a)
571
- });
572
- return;
573
- }
574
- invariant(dqr, "empty response from device service", {
575
- F: __dxlog_file3,
576
- L: 263,
577
- S: this,
578
- A: [
579
- "dqr",
580
- "'empty response from device service'"
581
- ]
582
- });
583
- const thisDevice = dqr.devices.find((device) => device.kind === DeviceKind.CURRENT);
584
- if (!thisDevice) {
585
- log3("no current device", {
586
- device: dqr
587
- }, {
588
- F: __dxlog_file3,
589
- L: 266,
590
- S: this,
591
- C: (f, a) => f(...a)
592
- });
593
- return;
594
- }
595
- this.setTag("deviceKey", thisDevice.deviceKey.truncate());
596
- if (thisDevice.profile?.label) {
597
- this.setTag("deviceProfile", thisDevice.profile.label);
598
- }
599
- });
600
- }
601
- }
602
- //
603
- // Logs
604
- //
605
- async _initLogs() {
606
- if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
607
- const { OtelLogs } = await import("./otel-AF5TSABC.mjs");
608
- this._otelLogs = new OtelLogs({
609
- endpoint: this._secrets.OTEL_ENDPOINT,
610
- authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
611
- serviceName: this._namespace,
612
- serviceVersion: this.getTag("release")?.value ?? "0.0.0",
613
- getTags: () => Object.fromEntries(Array.from(this._tags).filter(([key, value]) => {
614
- return value.scope === "all" || value.scope === "errors";
615
- }).map(([key, value]) => [
616
- key,
617
- value.value
618
- ])),
619
- logLevel: LogLevel.VERBOSE,
620
- includeSharedWorkerLogs: false
621
- });
622
- this._otelLogs && log3.runtimeConfig.processors.push(this._otelLogs.logProcessor);
623
- log3("otel logs enabled", {
624
- namespace: this._namespace
625
- }, {
626
- F: __dxlog_file3,
627
- L: 310,
628
- S: this,
629
- C: (f, a) => f(...a)
630
- });
631
- } else {
632
- log3("otel logs disabled", void 0, {
633
- F: __dxlog_file3,
634
- L: 312,
635
- S: this,
636
- C: (f, a) => f(...a)
637
- });
638
- }
639
- }
640
- //
641
- // Metrics
642
- //
643
- async _initMetrics() {
644
- if (this.enabled && this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION) {
645
- const { OtelMetrics } = await import("./otel-AF5TSABC.mjs");
646
- this._otelMetrics = new OtelMetrics({
647
- endpoint: this._secrets.OTEL_ENDPOINT,
648
- authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
649
- serviceName: this._namespace,
650
- serviceVersion: this.getTag("release")?.value ?? "0.0.0",
651
- getTags: () => Object.fromEntries(Array.from(this._tags).filter(([key, value]) => {
652
- return value.scope === "all" || value.scope === "metrics";
653
- }).map(([key, value]) => [
654
- key,
655
- value.value
656
- ]))
657
- });
658
- log3("otel metrics enabled", void 0, {
659
- F: __dxlog_file3,
660
- L: 337,
661
- S: this,
662
- C: (f, a) => f(...a)
663
- });
664
- } else {
665
- log3("otel metrics disabled", void 0, {
666
- F: __dxlog_file3,
667
- L: 339,
668
- S: this,
669
- C: (f, a) => f(...a)
670
- });
671
- }
672
- }
673
- /**
674
- * Gauge metric.
675
- *
676
- * The default implementation uses OpenTelemetry
677
- */
678
- gauge(name, value, extraTags) {
679
- this._otelMetrics?.gauge(name, value, extraTags);
680
- }
681
- // TODO(nf): Refactor into ObservabilityExtensions.
682
- startNetworkMetrics(clientServices) {
683
- if (!clientServices.NetworkService) {
684
- return;
685
- }
686
- const updateSignalMetrics = new Event().debounce(NETWORK_METRICS_MIN_INTERVAL);
687
- updateSignalMetrics.on(this._ctx, async () => {
688
- log3("send signal metrics", void 0, {
689
- F: __dxlog_file3,
690
- L: 361,
691
- S: this,
692
- C: (f, a) => f(...a)
693
- });
694
- this._lastNetworkStatus?.signaling?.forEach(({ server, state }) => {
695
- this.gauge("dxos.client.network.signal.connectionState", state, {
696
- server
697
- });
698
- });
699
- let swarmCount = 0;
700
- const connectionStates = /* @__PURE__ */ new Map();
701
- for (const state in ConnectionState) {
702
- connectionStates.set(state, 0);
703
- }
704
- let totalReadBufferSize = 0;
705
- let totalWriteBufferSize = 0;
706
- let totalChannelBufferSize = 0;
707
- this._lastNetworkStatus?.connectionInfo?.forEach((connectionInfo) => {
708
- swarmCount++;
709
- for (const conn of connectionInfo.connections ?? []) {
710
- connectionStates.set(conn.state, (connectionStates.get(conn.state) ?? 0) + 1);
711
- totalReadBufferSize += conn.readBufferSize ?? 0;
712
- totalWriteBufferSize += conn.writeBufferSize ?? 0;
713
- for (const stream of conn.streams ?? []) {
714
- totalChannelBufferSize += stream.writeBufferSize ?? 0;
715
- }
716
- }
717
- this.gauge("dxos.client.network.swarm.count", swarmCount);
718
- for (const state in ConnectionState) {
719
- this.gauge("dxos.client.network.connection.count", connectionStates.get(state) ?? 0, {
720
- state
721
- });
722
- }
723
- this.gauge("dxos.client.network.totalReadBufferSize", totalReadBufferSize);
724
- this.gauge("dxos.client.network.totalWriteBufferSize", totalWriteBufferSize);
725
- this.gauge("dxos.client.network.totalChannelBufferSize", totalChannelBufferSize);
726
- });
727
- });
728
- clientServices.NetworkService.queryStatus().subscribe((networkStatus) => {
729
- this._lastNetworkStatus = networkStatus;
730
- updateSignalMetrics.emit();
731
- });
732
- scheduleTaskInterval(this._ctx, async () => updateSignalMetrics.emit(), NETWORK_METRICS_MIN_INTERVAL);
733
- }
734
- startSpacesMetrics(client, namespace) {
735
- const spaces = client.spaces.get();
736
- const subscriptions = /* @__PURE__ */ new Map();
737
- this._ctx.onDispose(() => subscriptions.forEach((subscription) => subscription.unsubscribe()));
738
- const updateSpaceMetrics = new Event().debounce(SPACE_METRICS_MIN_INTERVAL);
739
- updateSpaceMetrics.on(this._ctx, async () => {
740
- log3("send space metrics", void 0, {
741
- F: __dxlog_file3,
742
- L: 414,
743
- S: this,
744
- C: (f, a) => f(...a)
745
- });
746
- for (const data of mapSpaces(spaces, {
747
- truncateKeys: true
748
- })) {
749
- this.gauge("dxos.client.space.members", data.members, {
750
- key: data.key
751
- });
752
- this.gauge("dxos.client.space.objects", data.objects, {
753
- key: data.key
754
- });
755
- this.gauge("dxos.client.space.epoch", data.epoch, {
756
- key: data.key
757
- });
758
- this.gauge("dxos.client.space.currentDataMutations", data.currentDataMutations, {
759
- key: data.key
760
- });
761
- }
762
- });
763
- const updateSpaceTelemetry = new Event().debounce(SPACE_TELEMETRY_MIN_INTERVAL);
764
- updateSpaceTelemetry.on(this._ctx, async () => {
765
- log3("send space telemetry", void 0, {
766
- F: __dxlog_file3,
767
- L: 425,
768
- S: this,
769
- C: (f, a) => f(...a)
770
- });
771
- for (const data of mapSpaces(spaces, {
772
- truncateKeys: true
773
- })) {
774
- this.track({
775
- ...getTelemetryIdentity(client),
776
- event: TelemetryEvent.METRICS,
777
- action: "space.update",
778
- properties: data
779
- });
780
- }
781
- });
782
- const subscribeToSpaceUpdate = (space) => space.pipeline.subscribe({
783
- next: () => {
784
- updateSpaceMetrics.emit();
785
- updateSpaceTelemetry.emit();
786
- }
787
- });
788
- spaces.forEach((space) => {
789
- subscriptions.set(space.id, subscribeToSpaceUpdate(space));
790
- });
791
- client.spaces.subscribe({
792
- next: async (spaces2) => {
793
- spaces2.filter((space) => !subscriptions.has(space.id)).forEach((space) => {
794
- subscriptions.set(space.id, subscribeToSpaceUpdate(space));
795
- });
796
- }
797
- });
798
- scheduleTaskInterval(this._ctx, async () => updateSpaceMetrics.emit(), NETWORK_METRICS_MIN_INTERVAL);
799
- }
800
- async startRuntimeMetrics(client, frequency = NETWORK_METRICS_MIN_INTERVAL) {
801
- const platform = await client.services.services.SystemService?.getPlatform();
802
- invariant(platform, "platform is required", {
803
- F: __dxlog_file3,
804
- L: 463,
805
- S: this,
806
- A: [
807
- "platform",
808
- "'platform is required'"
809
- ]
810
- });
811
- this.setTag("platformType", Platform.PLATFORM_TYPE[platform.type].toLowerCase());
812
- if (this._mode === "full") {
813
- if (platform.platform) {
814
- this.setTag("platform", platform.platform);
815
- }
816
- if (platform.arch) {
817
- this.setTag("arch", platform.arch);
818
- }
819
- if (platform.runtime) {
820
- this.setTag("runtime", platform.runtime);
821
- }
822
- }
823
- scheduleTaskInterval(this._ctx, async () => {
824
- if (client.services.constructor.name === "WorkerClientServices") {
825
- const memory = window.performance.memory;
826
- if (memory) {
827
- this.gauge("dxos.client.runtime.heapTotal", memory.totalJSHeapSize);
828
- this.gauge("dxos.client.runtime.heapUsed", memory.usedJSHeapSize);
829
- this.gauge("dxos.client.runtime.heapSizeLimit", memory.jsHeapSizeLimit);
830
- }
831
- }
832
- client.services.services.SystemService?.getPlatform().then((platform2) => {
833
- if (platform2.memory) {
834
- this.gauge("dxos.client.services.runtime.rss", platform2.memory.rss);
835
- this.gauge("dxos.client.services.runtime.heapTotal", platform2.memory.heapTotal);
836
- this.gauge("dxos.client.services.runtime.heapUsed", platform2.memory.heapUsed);
837
- }
838
- }).catch((error) => log3("platform error", {
839
- error
840
- }, {
841
- F: __dxlog_file3,
842
- L: 497,
843
- S: this,
844
- C: (f, a) => f(...a)
845
- }));
846
- }, frequency);
847
- }
848
- //
849
- // Telemetry
850
- //
851
- async _initTelemetry() {
852
- if (this._secrets.TELEMETRY_API_KEY && this._mode !== "disabled" && typeof document !== "undefined") {
853
- const { SegmentTelemetry } = await import("./segment/index.mjs");
854
- this._telemetry = new SegmentTelemetry({
855
- apiKey: this._secrets.TELEMETRY_API_KEY,
856
- batchSize: this._telemetryBatchSize,
857
- getTags: () => Object.fromEntries(Array.from(this._tags).filter(([key, value]) => {
858
- return value.scope === "all" || value.scope === "telemetry";
859
- }).map(([key, value]) => [
860
- key,
861
- value.value
862
- ]))
863
- });
864
- } else {
865
- log3("segment disabled", void 0, {
866
- F: __dxlog_file3,
867
- L: 523,
868
- S: this,
869
- C: (f, a) => f(...a)
870
- });
871
- }
872
- }
873
- /**
874
- * Submit telemetry page view.
875
- * The default implementation uses Segment.
876
- */
877
- page(options) {
878
- this._telemetry?.page(options);
879
- }
880
- /**
881
- * Submit telemetry user action.
882
- * The default implementation uses Segment.
883
- */
884
- track(options) {
885
- this._telemetry?.track(options);
886
- }
887
- //
888
- // Error Logs
889
- //
890
- async _initErrorLogs() {
891
- if (this._secrets.SENTRY_DESTINATION && this._mode !== "disabled") {
892
- const { captureException, captureUserFeedback, init, setTag } = await import("./sentry/index.mjs");
893
- const { SentryLogProcessor } = await import("./sentry-log-processor-HPUPCMRG.mjs");
894
- this._captureException = captureException;
895
- this._captureUserFeedback = captureUserFeedback;
896
- this._setTag = setTag;
897
- log3.info("Initializing Sentry", {
898
- dest: this._secrets.SENTRY_DESTINATION,
899
- options: this._errorReportingOptions
900
- }, {
901
- F: __dxlog_file3,
902
- L: 556,
903
- S: this,
904
- C: (f, a) => f(...a)
905
- });
906
- this._sentryLogProcessor = new SentryLogProcessor();
907
- init({
908
- ...this._errorReportingOptions,
909
- destination: this._secrets.SENTRY_DESTINATION,
910
- scrubFilenames: this._mode !== "full",
911
- onError: (event) => this._sentryLogProcessor.addLogBreadcrumbsTo(event)
912
- });
913
- this._tags.forEach((v, k) => {
914
- if (v.scope === "all" || v.scope === "errors") {
915
- setTag(k, v.value);
916
- }
917
- });
918
- } else {
919
- log3("sentry disabled", void 0, {
920
- F: __dxlog_file3,
921
- L: 576,
922
- S: this,
923
- C: (f, a) => f(...a)
924
- });
925
- }
926
- }
927
- startErrorLogs() {
928
- this._sentryLogProcessor && log3.runtimeConfig.processors.push(this._sentryLogProcessor.logProcessor);
929
- }
930
- startTraces() {
931
- this._otelTraces && this._otelTraces.start();
932
- }
933
- // TODO(nf): Refactor init based on providers and their capabilities.
934
- async _initTraces() {
935
- if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
936
- const { OtelTraces } = await import("./otel-AF5TSABC.mjs");
937
- this._otelTraces = new OtelTraces({
938
- endpoint: this._secrets.OTEL_ENDPOINT,
939
- authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
940
- serviceName: this._namespace,
941
- serviceVersion: this.getTag("release")?.value ?? "0.0.0",
942
- getTags: () => Object.fromEntries(Array.from(this._tags).filter(([key, value]) => {
943
- return value.scope === "all" || value.scope === "metrics";
944
- }).map(([key, value]) => [
945
- key,
946
- value.value
947
- ]))
948
- });
949
- }
950
- }
951
- /**
952
- * Manually capture an exception.
953
- * The default implementation uses Sentry.
954
- */
955
- captureException(err) {
956
- if (this.enabled) {
957
- this._captureException?.(err);
958
- }
959
- }
960
- /**
961
- * Manually capture user feedback.
962
- * The default implementation uses Sentry.
963
- */
964
- captureUserFeedback(message) {
965
- if (!this._secrets.SENTRY_DESTINATION) {
966
- log3.info("Feedback submitted without Sentry destination", {
967
- message
968
- }, {
969
- F: __dxlog_file3,
970
- L: 625,
971
- S: this,
972
- C: (f, a) => f(...a)
973
- });
974
- return;
975
- }
976
- void this._captureUserFeedback?.(message);
977
- }
978
- };
979
-
980
- export {
981
- Observability,
982
- OBSERVABILITY_DISABLED_KEY,
983
- OBSERVABILITY_GROUP_KEY,
984
- isObservabilityDisabled,
985
- storeObservabilityDisabled,
986
- getObservabilityGroup,
987
- storeObservabilityGroup,
988
- initializeAppObservability,
989
- getTelemetryIdentifier,
990
- getTelemetryIdentity,
991
- showObservabilityBanner,
992
- getObservabilityState,
993
- initializeNodeObservability,
994
- mapSpaces,
995
- setupTelemetryListeners
996
- };
997
- //# sourceMappingURL=chunk-M7QJLFGR.mjs.map