@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,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
3
+ "sources": ["../../../src/log-buffer.ts", "../../../src/observability.ts", "../../../src/storage/browser.ts", "../../../src/observability-extension.ts", "../../../src/extensions/otel/index.ts", "../../../src/extensions/otel/extension.ts", "../../../src/cli-observability-secrets.json", "../../../src/extensions/stub.ts", "../../../src/extensions/posthog/index.ts", "../../../src/extensions/posthog/extension.ts", "../../../src/providers/index.ts", "../../../src/providers/client-observability.ts", "../../../src/providers/ip-data.ts", "../../../src/providers/storage.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shortLevelName } from '@dxos/log';\nimport { CircularBuffer } from '@dxos/util';\n\nconst DEFAULT_BUFFER_SIZE = 2_000;\nconst MAX_CONTEXT_LENGTH = 500;\n\n/**\n * Compact log record with short property names for small serialized size.\n */\nexport type LogRecord = {\n /** ISO timestamp. */\n t: string;\n /** Level letter (D, V, I, W, E). */\n l: string;\n /** Message. */\n m: string;\n /** File path. */\n f?: string;\n /** Line number. */\n n?: number;\n /** Error stack. */\n e?: string;\n /** Context JSON. */\n c?: string;\n};\n\n/**\n * Captures recent log entries in a circular buffer for debug log dump on feedback submission.\n */\nexport class LogBuffer {\n private readonly _buffer: CircularBuffer<LogRecord>;\n\n constructor(size = DEFAULT_BUFFER_SIZE) {\n this._buffer = new CircularBuffer<LogRecord>(size);\n }\n\n /** Log processor that can be registered with `log.runtimeConfig.processors`. */\n readonly logProcessor: LogProcessor = (_config: LogConfig, entry: LogEntry) => {\n if (entry.level <= LogLevel.TRACE) {\n return;\n }\n\n const record: LogRecord = {\n t: new Date().toISOString(),\n l: shortLevelName[entry.level] ?? '?',\n m: entry.message ?? '',\n };\n\n if (entry.meta) {\n record.f = getRelativeFilename(entry.meta.F);\n record.n = entry.meta.L;\n }\n\n if (entry.error) {\n record.e = entry.error.stack ?? entry.error.message;\n }\n\n if (entry.context != null) {\n try {\n const ctx = typeof entry.context === 'function' ? entry.context() : entry.context;\n if (ctx != null && !(ctx instanceof Error)) {\n let json = JSON.stringify(ctx);\n if (json.length > MAX_CONTEXT_LENGTH) {\n json = json.slice(0, MAX_CONTEXT_LENGTH);\n }\n record.c = json;\n }\n } catch {\n // Skip context that throws or is non-serializable.\n }\n }\n\n this._buffer.push(record);\n };\n\n /** Number of entries currently in the buffer. */\n get size(): number {\n return this._buffer.elementCount;\n }\n\n /** Serialize buffer contents as NDJSON (newline-delimited JSON). */\n serialize(): string {\n const lines: string[] = [];\n for (const record of this._buffer) {\n lines.push(JSON.stringify(record));\n }\n return lines.join('\\n');\n }\n}\n\nconst getRelativeFilename = (filename: string): string => {\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n return match[1];\n }\n return filename;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\n\nimport { type CleanupFn, SubscriptionList } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport {\n type Attributes,\n type Errors,\n type Events,\n type Extension,\n type ExtensionApi,\n type Feedback,\n type Kind,\n type Metrics,\n} from './observability-extension';\n\nexport * from './storage';\n\n// TODO(wittjosiah): Figure out how to handle when telemetry is disabled.\n// In theory the setting should be both persisted and synchronized.\n// Initialize probably should still run for the cases where data is emitted manually (e.g., feedback).\n\n/**\n * Provider of observability data.\n */\nexport type DataProvider = (observability: Observability) => Effect.Effect<CleanupFn | void, Error>;\n\n/**\n * Extensible observability provider.\n */\n// TODO(wittjosiah): Add pipe method.\nexport interface Observability {\n initialize(): Effect.Effect<void>;\n close(): Effect.Effect<void>;\n enable(): Effect.Effect<void>;\n disable(): Effect.Effect<void>;\n flush(): Effect.Effect<void>;\n addDataProvider(dataProvider: DataProvider): Effect.Effect<void, Error>;\n identify(distinctId: string, attributes?: Attributes, setOnceAttributes?: Attributes): void;\n alias(distinctId: string, previousId?: string): void;\n setTags(tags: Attributes, kind?: Kind): void;\n enabled: boolean;\n errors: Errors;\n events: Events;\n feedback: Feedback;\n /** True if at least one extension of the given kind reports as available. */\n isAvailable(kind: Kind): Effect.Effect<boolean>;\n metrics: Metrics;\n}\n\nclass ObservabilityImpl implements Observability {\n private _initialized = false;\n private readonly _extensions: Extension[] = [];\n private readonly _dataProviders: DataProvider[] = [];\n private readonly _subscriptions = new SubscriptionList();\n\n initialize(): Effect.Effect<void> {\n if (this._initialized) {\n return Effect.succeed(undefined);\n }\n\n const initializedExtensions: Extension[] = [];\n\n return Effect.gen(this, function* () {\n for (const extension of this._extensions) {\n if (extension.initialize) {\n yield* extension.initialize();\n }\n initializedExtensions.push(extension);\n }\n\n const cleanups = yield* Effect.all(this._dataProviders.map((provider) => provider(this)));\n this._subscriptions.add(...cleanups.filter((cleanup) => cleanup !== undefined));\n this._initialized = true;\n }).pipe(\n Effect.catchAll((error) =>\n Effect.gen(this, function* () {\n log.catch(error);\n // Roll back already-initialized extensions.\n for (const extension of initializedExtensions) {\n if (extension.close) {\n yield* extension.close().pipe(Effect.catchAll(() => Effect.succeed(undefined)));\n }\n }\n this._subscriptions.clear();\n }),\n ),\n );\n }\n\n close(): Effect.Effect<void> {\n return Effect.gen(this, function* () {\n this._subscriptions.clear();\n this._dataProviders.length = 0;\n for (const extension of this._extensions) {\n if (extension.close) {\n yield* extension.close();\n }\n }\n this._initialized = false;\n });\n }\n\n enable(): Effect.Effect<void> {\n return Effect.gen(this, function* () {\n for (const extension of this._extensions) {\n if (extension.enable) {\n yield* extension.enable();\n }\n }\n });\n }\n\n disable(): Effect.Effect<void> {\n return Effect.gen(this, function* () {\n for (const extension of this._extensions) {\n if (extension.disable) {\n yield* extension.disable();\n }\n }\n });\n }\n\n flush(): Effect.Effect<void> {\n return Effect.gen(this, function* () {\n for (const extension of this._extensions) {\n if (extension.flush) {\n yield* extension.flush();\n }\n }\n });\n }\n\n _addExtension(extension: Extension): void {\n invariant(!this._initialized, 'Observability is already initialized');\n this._extensions.push(extension);\n }\n\n _addDataProvider(dataProvider: DataProvider): void {\n invariant(!this._initialized, 'Observability is already initialized');\n this._dataProviders.push(dataProvider);\n }\n\n /**\n * Adds a data provider and initializes it.\n */\n addDataProvider(dataProvider: DataProvider): Effect.Effect<void, Error> {\n return Effect.gen(this, function* () {\n this._dataProviders.push(dataProvider);\n const cleanup = yield* dataProvider(this);\n if (cleanup) {\n this._subscriptions.add(cleanup);\n }\n });\n }\n\n identify(distinctId: string, attributes?: Attributes, setOnceAttributes?: Attributes): void {\n for (const extension of this._extensions) {\n extension.identify?.(distinctId, attributes, setOnceAttributes);\n }\n }\n\n alias(distinctId: string, previousId?: string): void {\n for (const extension of this._extensions) {\n extension.alias?.(distinctId, previousId);\n }\n }\n\n setTags(tags: Attributes, kind?: Kind): void {\n for (const extension of this._extensions) {\n if (kind && !extension.apis.some((api) => api.kind === kind)) {\n continue;\n }\n\n const processedTags = Object.fromEntries(\n Object.entries(tags)\n .filter((entry): entry is [string, string | number | boolean] => entry[1] !== undefined)\n .map(([key, value]) => [key, value.toString()]),\n );\n extension.setTags?.(processedTags);\n }\n }\n\n get enabled(): boolean {\n return this._extensions.every((extension) => extension.enabled);\n }\n\n get errors(): Errors {\n return {\n captureException: (error, attributes) => {\n for (const extension of this._getExtensions('errors')) {\n extension.captureException(error, attributes);\n }\n },\n };\n }\n\n get events(): Events {\n return {\n captureEvent: (event, attributes) => {\n for (const extension of this._getExtensions('events')) {\n extension.captureEvent(event, attributes);\n }\n },\n };\n }\n\n get feedback(): Feedback {\n return {\n captureUserFeedback: (form) => {\n for (const extension of this._getExtensions('feedback')) {\n extension.captureUserFeedback(form);\n }\n },\n };\n }\n\n isAvailable(kind: Kind): Effect.Effect<boolean> {\n const apis = this._getExtensions(kind);\n if (apis.length === 0) {\n return Effect.succeed(false);\n }\n return Effect.gen(this, function* () {\n for (const api of apis) {\n const available = yield* api.isAvailable();\n if (available) {\n return true;\n }\n }\n return false;\n });\n }\n\n get metrics(): Metrics {\n return {\n gauge: (name, value, attributes) => {\n for (const extension of this._getExtensions('metrics')) {\n extension.gauge(name, value, attributes);\n }\n },\n increment: (name, value, attributes) => {\n for (const extension of this._getExtensions('metrics')) {\n extension.increment(name, value, attributes);\n }\n },\n distribution: (name, value, attributes) => {\n for (const extension of this._getExtensions('metrics')) {\n extension.distribution(name, value, attributes);\n }\n },\n };\n }\n\n private _getExtensions<T extends Kind>(kind: T): Extract<ExtensionApi, { kind: T }>[] {\n return Function.pipe(\n this._extensions,\n Array.flatMap((extension) => extension.apis),\n Array.filter((api): api is Extract<ExtensionApi, { kind: T }> => api.kind === kind),\n );\n }\n}\n\nexport const make = (): Effect.Effect<Observability> => Effect.succeed(new ObservabilityImpl());\n\nexport const addExtension = (_extension: Effect.Effect<Extension>) =>\n Effect.fn(function* (_observability: Effect.Effect<Observability>) {\n const observability = yield* _observability;\n const extension = yield* _extension;\n invariant('_addExtension' in observability && typeof observability._addExtension === 'function');\n observability._addExtension(extension);\n return observability;\n });\n\nexport const addDataProvider = (dataProvider: DataProvider) =>\n Effect.fn(function* (_observability: Effect.Effect<Observability>) {\n const observability = yield* _observability;\n invariant('_addDataProvider' in observability && typeof observability._addDataProvider === 'function');\n observability._addDataProvider(dataProvider);\n return observability;\n });\n\nexport const initialize = Effect.fn(function* (_observability: Effect.Effect<Observability>) {\n const observability = yield* _observability;\n yield* observability.initialize();\n return observability;\n});\n", "//\n// Copyright 2022 DXOS.org\n//\n\n// NOTE: localStorage is not available in web workers.\nimport * as localForage from 'localforage';\n\nimport { log } from '@dxos/log';\n\nconst OBSERVABILITY_DISABLED_KEY = 'observability-disabled';\nconst OBSERVABILITY_GROUP_KEY = 'observability-group';\n\n/** No-op in browser contexts. */\nexport const showObservabilityBanner = () => {\n log.warn('showObservabilityBanner is not supported in browser contexts.');\n};\n\n/**\n * @param namespace - localForage key prefix used to scope the observability state in browser storage.\n */\nexport const isObservabilityDisabled = async (namespace: string): Promise<boolean> => {\n try {\n return (await localForage.getItem(`${namespace}:${OBSERVABILITY_DISABLED_KEY}`)) === 'true';\n } catch (err) {\n log.catch('Failed to check if observability is disabled, assuming it is', err);\n return true;\n }\n};\n\n/**\n * @param namespace - localForage key prefix used to scope the observability state in browser storage.\n */\nexport const storeObservabilityDisabled = async (namespace: string, value: boolean) => {\n try {\n await localForage.setItem(`${namespace}:${OBSERVABILITY_DISABLED_KEY}`, String(value));\n } catch (err) {\n log.catch('Failed to store observability disabled', err);\n }\n};\n\n/**\n * @param namespace - localForage key prefix used to scope the observability state in browser storage.\n */\nexport const getObservabilityGroup = async (namespace: string): Promise<string | undefined> => {\n try {\n return (await localForage.getItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`)) ?? undefined;\n } catch (err) {\n log.catch('Failed to get observability group', err);\n }\n};\n\n/**\n * @param namespace - localForage key prefix used to scope the observability state in browser storage.\n */\nexport const storeObservabilityGroup = async (namespace: string, value: string) => {\n try {\n await localForage.setItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`, value);\n } catch (err) {\n log.catch('Failed to store observability group', err);\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Effect from 'effect/Effect';\n\nexport * from './extensions';\n\n/**\n * Kind of observability extension.\n *\n * - errors: Error tracking (e.g., PostHog)\n * - events: Product usage event tracking (e.g., PostHog)\n * - feedback: User feedback submission (e.g., PostHog)\n * - logs: Structured logging (e.g., OTEL)\n * - metrics: Metric data (e.g., OTEL)\n * - traces: Distributed tracing (e.g., OTEL)\n */\nexport type Kind = 'errors' | 'events' | 'feedback' | 'logs' | 'metrics' | 'traces';\n\n/**\n * Base for every extension API variant. All kinds implement availability the same way.\n */\nexport type ExtensionApiBase<K extends Kind = Kind> = {\n kind: K;\n isAvailable(): Effect.Effect<boolean>;\n};\n\n/**\n * Metrics extension API (kind-specific methods only).\n */\nexport type Metrics = {\n gauge(name: string, value: number, tags?: Attributes): void;\n increment(name: string, value?: number, tags?: Attributes): void;\n distribution(name: string, value: number, tags?: Attributes): void;\n};\n\n/**\n * Errors extension API (kind-specific methods only).\n */\nexport type Errors = {\n captureException(error: Error, attributes?: Attributes): void;\n};\n\n/**\n * Events extension API (kind-specific methods only).\n */\nexport type Events = {\n captureEvent(event: string, attributes?: Attributes): void;\n};\n\n/**\n * Feedback extension API (kind-specific methods only).\n */\nexport type Feedback = {\n captureUserFeedback(form: FeedbackForm): void;\n};\n\nexport type ExtensionApi =\n | (ExtensionApiBase<'errors'> & Errors)\n | (ExtensionApiBase<'events'> & Events)\n | (ExtensionApiBase<'feedback'> & Feedback)\n // TODO(wittjosiah): Direct logs api?\n | ExtensionApiBase<'logs'>\n | (ExtensionApiBase<'metrics'> & Metrics)\n // TODO(wittjosiah): Direct traces api?\n | ExtensionApiBase<'traces'>;\n\n/**\n * Feedback form to be captured by the feedback extension.\n */\n// TODO(wittjosiah): Support more form fields (e.g., PostHog custom surveys).\nexport type FeedbackForm = { message: string; includeLogs?: boolean };\n\n/**\n * Attributes to be attached to observability events.\n */\nexport type Attributes = Record<string, string | number | boolean | undefined>;\n\n/**\n * Implementation of an observability extension API.\n */\nexport type Extension = {\n initialize?(): Effect.Effect<void, Error>;\n close?(): Effect.Effect<void>;\n enable?(): Effect.Effect<void>;\n disable?(): Effect.Effect<void>;\n flush?(): Effect.Effect<void>;\n identify?(distinctId: string, attributes?: Attributes, setOnceAttributes?: Attributes): void;\n alias?(distinctId: string, previousId?: string): void;\n setTags?(tags: Record<string, string>): void;\n enabled: boolean;\n apis: ExtensionApi[];\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport * from './extension';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport * as Ref from 'effect/Ref';\n\nimport { type Config } from '@dxos/config';\nimport { LogLevel, log } from '@dxos/log';\nimport { isNode, isNonNullable } from '@dxos/util';\n\nimport buildSecrets from '../../cli-observability-secrets.json';\nimport { type Extension, type ExtensionApi } from '../../observability-extension';\nimport { isObservabilityDisabled, storeObservabilityDisabled } from '../../storage';\nimport { stubExtension } from '../stub';\n\nexport type ExtensionsOptions = {\n /** For the OTEL, the name of the entity for which signals (metrics or trace) are collected. */\n serviceName: string;\n /** For the OTEL, the version of the entity for which signals (metrics or trace) are collected. */\n serviceVersion: string;\n /** For the OTEL, the environment of the entity for which signals (metrics or trace) are collected. */\n environment: string;\n config: Config;\n endpoint?: string;\n headers?: Record<string, string>;\n logs?: boolean;\n /** Minimum log level to export. Defaults to INFO (i.e. info, warn, error). */\n logLevel?: LogLevel;\n metrics?: boolean;\n traces?: boolean;\n};\n\n/** Create an OTEL-backed observability extension for logs, metrics, and/or traces. */\nexport const extensions: (options: ExtensionsOptions) => Effect.Effect<Extension> = Effect.fn(function* ({\n serviceName,\n serviceVersion,\n environment,\n config,\n endpoint: _endpoint,\n headers: _headers,\n // TODO(wittjosiah): Logging integration.\n // - logger should run even if observability is disabled\n // - logs should be cached locally in a circular buffer\n // - logs should be flushed to the server if user opts to include them in a bug report\n logs: logsEnabled = false,\n logLevel = LogLevel.INFO,\n metrics: metricsEnabled = false,\n traces: tracesEnabled = false,\n}) {\n const { OtelLogs } = yield* Effect.promise(() => import('./logs'));\n const { OtelMetrics } = yield* Effect.promise(() => import('./metrics'));\n const { OtelTraces } = yield* Effect.promise(() => import('./traces'));\n\n const cachedDisabled = yield* Effect.promise(() => isObservabilityDisabled(serviceName));\n const enabledRef = yield* Ref.make(!cachedDisabled);\n const tags = new Map<string, string>();\n\n const endpoint = isNode()\n ? (process.env.DX_OTEL_ENDPOINT ?? _endpoint ?? buildSecrets.OTEL_ENDPOINT)\n : config.values.runtime?.app?.env?.DX_OTEL_ENDPOINT;\n const headers =\n _headers ??\n Match.value(isNode()).pipe(\n Match.when(true, () => Option.fromNullable(process.env.DX_OTEL_HEADERS ?? buildSecrets.OTEL_HEADERS)),\n Match.when(false, () => Option.fromNullable(config.values.runtime?.app?.env?.DX_OTEL_HEADERS)),\n Match.exhaustive,\n Option.map((raw) => parseHeaders(raw)),\n Option.getOrElse(() => undefined),\n );\n\n if (!endpoint || !headers) {\n log.info('Missing OTEL_ENDPOINT or OTEL_HEADERS');\n return stubExtension;\n }\n\n const resource = defaultResource().merge(\n resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n [ATTR_SERVICE_VERSION]: serviceVersion,\n 'deployment.environment': environment,\n }),\n );\n\n const logs = logsEnabled\n ? new OtelLogs({\n endpoint,\n headers,\n resource,\n getTags: () => Object.fromEntries(tags),\n logLevel,\n })\n : undefined;\n\n const metrics = metricsEnabled\n ? new OtelMetrics({\n endpoint,\n headers,\n resource,\n getTags: () => Object.fromEntries(tags),\n })\n : undefined;\n\n const traces = tracesEnabled\n ? new OtelTraces({\n endpoint,\n headers,\n resource,\n getTags: () => Object.fromEntries(tags),\n })\n : undefined;\n\n return {\n initialize: () =>\n Effect.sync(() => {\n if (logs) {\n log.runtimeConfig.processors.push(logs.logProcessor);\n }\n if (traces) {\n traces.start();\n }\n }),\n enable: Effect.fn(function* () {\n yield* Effect.promise(() => storeObservabilityDisabled(serviceName, false));\n yield* Ref.update(enabledRef, () => true);\n }),\n disable: Effect.fn(function* () {\n yield* Effect.promise(() => storeObservabilityDisabled(serviceName, true));\n yield* Ref.update(enabledRef, () => false);\n }),\n close: () =>\n Effect.promise(async () => {\n await logs?.close();\n await metrics?.close();\n }),\n flush: () =>\n Effect.promise(async () => {\n await logs?.flush();\n await metrics?.flush();\n }),\n setTags: (incomingTags) => {\n for (const [key, value] of Object.entries(incomingTags)) {\n tags.set(key, value);\n }\n },\n get enabled() {\n return Ref.get(enabledRef).pipe(Effect.runSync);\n },\n apis: [\n { kind: 'logs', isAvailable: () => Effect.succeed(!!logs) } satisfies ExtensionApi,\n metrics\n ? ({\n kind: 'metrics',\n isAvailable: () => Effect.succeed(true),\n gauge: (name, value, tags) => metrics.gauge(name, value, tags),\n increment: (name, value, tags) => metrics.increment(name, value, tags),\n distribution: (name, value, tags) => metrics.distribution(name, value, tags),\n } satisfies ExtensionApi)\n : undefined,\n traces ? ({ kind: 'traces', isAvailable: () => Effect.succeed(true) } satisfies ExtensionApi) : undefined,\n ].filter(isNonNullable),\n };\n});\n\nconst parseHeaders = (unparsedHeaders: string): Record<string, string> => {\n return unparsedHeaders.split(';').reduce((acc: Record<string, string>, header) => {\n const [key, ...rest] = header.split(':');\n if (key && rest.length > 0) {\n acc[key.trim().toLowerCase()] = rest.join(':').trim();\n }\n\n return acc;\n }, {});\n};\n", "{\n \"POSTHOG_API_KEY\": null,\n \"IPDATA_API_KEY\": \"73dfdecdf979c18f07d50cf841bbdd9e589f237256326ac8cca23786\",\n \"OTEL_ENDPOINT\": \"https://ingest.eu.signoz.cloud:443\",\n \"OTEL_HEADERS\": \"signoz-ingestion-key: 5300e0c9-a5e8-4a10-9c61-f473e539c0b7\"\n}", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { type Extension } from '../observability-extension';\n\nexport const stubExtension: Extension = {\n initialize: () => Effect.succeed(undefined),\n enable: () => Effect.succeed(undefined),\n disable: () => Effect.succeed(undefined),\n flush: () => Effect.succeed(undefined),\n setTags: () => undefined,\n get enabled() {\n return true;\n },\n apis: [],\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport * from './extension';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport { type PostHogConfig } from 'posthog-js';\n\nimport { type Config } from '@dxos/config';\nimport { log } from '@dxos/log';\n\nimport { LogBuffer } from '../../log-buffer';\nimport { type Extension } from '../../observability-extension';\nimport { stubExtension } from '../stub';\n\nexport type ExtensionsOptions = {\n config: Config;\n /** Release identifier, e.g. `composer@0.8.3`. */\n release?: string;\n /** Deployment environment, e.g. `production` or `staging`. */\n environment?: string;\n posthog?: Partial<PostHogConfig>;\n};\n\n/** Upload serialized logs to the feedback-logs endpoint. Returns the R2 key on success. */\nconst uploadLogs = async (body: string): Promise<string | undefined> => {\n try {\n const response = await fetch('/api/feedback-logs', {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-ndjson' },\n body,\n });\n if (!response.ok) {\n log.warn('feedback log upload failed', { status: response.status });\n return undefined;\n }\n const { key } = await response.json();\n return key;\n } catch (err) {\n log.warn('feedback log upload error', { error: err });\n return undefined;\n }\n};\n\n/** Create a PostHog-backed observability extension for events, errors, and feedback. */\nexport const extensions: (options: ExtensionsOptions) => Effect.Effect<Extension> = Effect.fn(function* ({\n config,\n release,\n environment,\n posthog: posthogConfig,\n}) {\n if (typeof window === 'undefined') {\n log('PostHog is being stubbed because it is running in a worker.');\n return stubExtension;\n }\n\n const feedbackSurveyId = config.get('runtime.app.env.DX_POSTHOG_FEEDBACK_SURVEY_ID');\n const apiKey = config.get('runtime.app.env.DX_POSTHOG_API_KEY');\n const api_host = config.get('runtime.app.env.DX_POSTHOG_API_HOST');\n if (!apiKey || !api_host) {\n log.info('Missing POSTHOG_API_KEY or POSTHOG_API_HOST');\n return stubExtension;\n }\n\n const { default: posthog } = yield* Effect.promise(() => import('posthog-js'));\n const { logProcessor } = yield* Effect.promise(() => import('./log-processor'));\n const logBuffer = new LogBuffer();\n let feedbackSurveyAvailable: boolean | null = null;\n\n const checkFeedbackSurveyAvailable = (): Effect.Effect<boolean> =>\n feedbackSurveyId\n ? Effect.promise(() => {\n if (feedbackSurveyAvailable !== null) {\n return Promise.resolve(feedbackSurveyAvailable);\n }\n return new Promise<boolean>((resolve) => {\n posthog.getSurveys((surveys) => {\n const found = surveys.some((s) => s.id === feedbackSurveyId);\n feedbackSurveyAvailable = found;\n resolve(found);\n });\n });\n })\n : Effect.succeed(false);\n\n return {\n initialize: () =>\n Effect.sync(() => {\n // https://posthog.com/docs/libraries/js/config\n posthog.init(apiKey, {\n api_host,\n mask_all_text: true,\n capture_exceptions: true,\n ...posthogConfig,\n });\n if (release || environment) {\n posthog.register({\n ...(release ? { release } : {}),\n ...(environment ? { environment } : {}),\n });\n }\n log.runtimeConfig.processors.push(logProcessor);\n log.runtimeConfig.processors.push(logBuffer.logProcessor);\n }),\n close: () =>\n Effect.sync(() => {\n for (const processor of [logProcessor, logBuffer.logProcessor]) {\n const index = log.runtimeConfig.processors.indexOf(processor);\n if (index !== -1) {\n log.runtimeConfig.processors.splice(index, 1);\n }\n }\n }),\n enable: () => Effect.sync(() => posthog.opt_in_capturing()),\n disable: () => Effect.sync(() => posthog.opt_out_capturing()),\n identify: (distinctId, attributes, setOnceAttributes) => {\n posthog.identify(distinctId, attributes, setOnceAttributes);\n },\n alias: (distinctId, previousId) => {\n posthog.alias(distinctId, previousId);\n },\n setTags: (tags) => {\n posthog.register_for_session(tags);\n },\n get enabled(): boolean {\n return posthog.is_capturing();\n },\n apis: [\n {\n kind: 'events',\n isAvailable: () => Effect.succeed(true),\n captureEvent: (event, attributes) => {\n posthog.capture(event, attributes);\n },\n },\n {\n kind: 'errors',\n isAvailable: () => Effect.succeed(true),\n captureException: (error, attributes) => {\n posthog.captureException(error, attributes);\n },\n },\n {\n kind: 'feedback',\n // TODO(wittjosiah): Support custom surveys.\n captureUserFeedback: (form) => {\n posthog.getSurveys(async (surveys) => {\n const survey = surveys.find((survey) => survey.id === feedbackSurveyId);\n if (!survey || survey.questions.length === 0) {\n log.error('Missing feedback survey or survey has no questions', { feedbackSurveyId });\n return;\n }\n\n let debugLogDumpKey: string | undefined;\n if (form.includeLogs !== false && logBuffer.size > 0) {\n debugLogDumpKey = await uploadLogs(logBuffer.serialize());\n }\n\n // https://posthog.com/docs/surveys/implementing-custom-surveys\n const question = survey.questions[0];\n posthog.capture('survey sent', {\n $survey_id: survey.id,\n $survey_questions: [{ id: question.id, question: question.question }],\n [`$survey_response_${question.id}`]: form.message,\n ...(debugLogDumpKey ? { debug_log_dump_key: debugLogDumpKey } : {}),\n });\n });\n },\n isAvailable: checkFeedbackSurveyAvailable,\n },\n ],\n };\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport * as Client from './client-observability';\nexport * as IPData from './ip-data';\nexport * as Storage from './storage';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Event, scheduleTaskInterval } from '@dxos/async';\nimport { type Client, type ClientServices } from '@dxos/client';\nimport { type Space } from '@dxos/client/echo';\nimport { DeviceKind } from '@dxos/client/halo';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { ConnectionState, type NetworkStatus, Platform } from '@dxos/protocols/proto/dxos/client/services';\n\nimport { type DataProvider } from '../observability';\n\nconst SPACE_METRICS_MIN_INTERVAL = 1000 * 60 * 10; // 10 minutes\nconst NETWORK_METRICS_MIN_INTERVAL = 1000 * 60 * 10; // 10 minutes\nconst RUNTIME_METRICS_MIN_INTERVAL = 1000 * 60 * 10; // 10 minutes\n\n// TODO(wittjosiah): Improve privacy of telemetry identifiers.\n// - Identifier should be generated client-side with no attachment to identity.\n// - Identifier can then be reset by user.\n// - Identifier can be synced via HALO to allow for correlation of events bewteen devices.\n// - Identifier should also be stored outside of HALO such that it is available immediately on startup.\n/** Subscribes to identity and device changes and sets observability tags accordingly. */\nexport const identityProvider = (clientServices: Partial<ClientServices>): DataProvider =>\n Effect.fn(function* (observability) {\n // TODO(wittjosiah): RPC subscribe returns void; cleanup requires upstream API change.\n clientServices.IdentityService!.queryIdentity().subscribe((idqr) => {\n if (!idqr?.identity?.did) {\n return;\n }\n\n observability.identify(idqr.identity.did);\n observability.setTags({ did: idqr.identity.did });\n });\n\n // TODO(wittjosiah): RPC subscribe returns void; cleanup requires upstream API change.\n clientServices.DevicesService!.queryDevices().subscribe((dqr) => {\n if (!dqr?.devices || dqr.devices.length === 0) {\n return;\n }\n\n const thisDevice = dqr.devices.find((device) => device.kind === DeviceKind.CURRENT);\n if (!thisDevice) {\n return;\n }\n\n observability.setTags({ deviceKey: thisDevice.deviceKey.truncate() });\n if (thisDevice.profile?.label) {\n observability.setTags({ deviceProfile: thisDevice.profile.label });\n }\n });\n });\n\n/** Periodically publishes network connection and buffer metrics. */\nexport const networkMetricsProvider = (clientServices: Partial<ClientServices>): DataProvider =>\n Effect.fn(function* (observability) {\n const ctx = new Context();\n let lastNetworkStatus: NetworkStatus | undefined;\n\n // TODO(nf): support type in debounce()\n const updateSignalMetrics = new Event<NetworkStatus>().debounce(NETWORK_METRICS_MIN_INTERVAL);\n updateSignalMetrics.on(ctx, async () => {\n log('send signal metrics');\n (lastNetworkStatus?.signaling as NetworkStatus.Signal[])?.forEach(({ server, state }) => {\n observability.metrics.gauge('dxos.client.network.signal.connectionState', state, { server });\n });\n\n let swarmCount = 0;\n const connectionStates = new Map<string, number>();\n for (const state in ConnectionState) {\n connectionStates.set(state, 0);\n }\n\n let totalReadBufferSize = 0;\n let totalWriteBufferSize = 0;\n let totalChannelBufferSize = 0;\n\n lastNetworkStatus?.connectionInfo?.forEach((connectionInfo) => {\n swarmCount++;\n\n for (const conn of connectionInfo.connections ?? []) {\n connectionStates.set(conn.state, (connectionStates.get(conn.state) ?? 0) + 1);\n totalReadBufferSize += conn.readBufferSize ?? 0;\n totalWriteBufferSize += conn.writeBufferSize ?? 0;\n for (const stream of conn.streams ?? []) {\n totalChannelBufferSize += stream.writeBufferSize ?? 0;\n }\n }\n\n observability.metrics.gauge('dxos.client.network.swarm.count', swarmCount);\n for (const state in ConnectionState) {\n observability.metrics.gauge('dxos.client.network.connection.count', connectionStates.get(state) ?? 0, {\n state,\n });\n }\n observability.metrics.gauge('dxos.client.network.totalReadBufferSize', totalReadBufferSize);\n observability.metrics.gauge('dxos.client.network.totalWriteBufferSize', totalWriteBufferSize);\n observability.metrics.gauge('dxos.client.network.totalChannelBufferSize', totalChannelBufferSize);\n });\n });\n\n clientServices.NetworkService!.queryStatus().subscribe((networkStatus) => {\n lastNetworkStatus = networkStatus;\n updateSignalMetrics.emit();\n });\n\n scheduleTaskInterval(ctx, async () => updateSignalMetrics.emit(), NETWORK_METRICS_MIN_INTERVAL);\n\n return async () => {\n await ctx.dispose();\n };\n });\n\n/** Periodically publishes platform and heap memory metrics. */\nexport const runtimeMetricsProvider = (clientServices: Partial<ClientServices>): DataProvider =>\n Effect.fn(function* (observability) {\n const ctx = new Context();\n const platform = yield* Effect.promise(() => clientServices.SystemService!.getPlatform());\n invariant(platform, 'platform is required');\n\n observability.setTags({\n platformType: Platform.PLATFORM_TYPE[platform.type as number].toLowerCase(),\n platform: platform.platform,\n arch: platform.arch,\n runtime: platform.runtime,\n });\n\n scheduleTaskInterval(\n ctx,\n async () => {\n if (clientServices.constructor.name === 'WorkerClientServices') {\n const memory = (window.performance as any).memory;\n if (memory) {\n observability.metrics.gauge('dxos.client.runtime.heapTotal', memory.totalJSHeapSize);\n observability.metrics.gauge('dxos.client.runtime.heapUsed', memory.usedJSHeapSize);\n observability.metrics.gauge('dxos.client.runtime.heapSizeLimit', memory.jsHeapSizeLimit);\n }\n }\n\n clientServices.SystemService?.getPlatform()\n .then((platform) => {\n if (platform.memory) {\n observability.metrics.gauge('dxos.client.services.runtime.rss', platform.memory.rss);\n observability.metrics.gauge('dxos.client.services.runtime.heapTotal', platform.memory.heapTotal);\n observability.metrics.gauge('dxos.client.services.runtime.heapUsed', platform.memory.heapUsed);\n }\n })\n .catch((error) => log('platform error', { error }));\n },\n RUNTIME_METRICS_MIN_INTERVAL,\n );\n\n return async () => {\n await ctx.dispose();\n };\n });\n\n/** Periodically publishes space membership, object count, and pipeline progress metrics. */\nexport const spacesMetricsProvider = (client: Client): DataProvider =>\n Effect.fn(function* (observability) {\n const ctx = new Context();\n // TODO(nf): update subscription on new spaces\n const spaces = client.spaces.get();\n const subscriptions = new Map<string, { unsubscribe: () => void }>();\n ctx.onDispose(() => subscriptions.forEach((subscription) => subscription.unsubscribe()));\n\n const updateSpaceMetrics = new Event<Space>().debounce(SPACE_METRICS_MIN_INTERVAL);\n updateSpaceMetrics.on(ctx, async () => {\n log('send space metrics');\n for (const data of mapSpaces(spaces, { truncateKeys: true })) {\n observability.metrics.gauge('dxos.client.space.members', data.members, { key: data.key });\n observability.metrics.gauge('dxos.client.space.objects', data.objects, { key: data.key });\n observability.metrics.gauge('dxos.client.space.epoch', data.epoch, { key: data.key });\n observability.metrics.gauge('dxos.client.space.currentDataMutations', data.currentDataMutations, {\n key: data.key,\n });\n }\n });\n\n const subscribeToSpaceUpdate = (space: Space) =>\n space.pipeline.subscribe({\n next: () => {\n updateSpaceMetrics.emit();\n },\n });\n\n spaces.forEach((space) => {\n subscriptions.set(space.id, subscribeToSpaceUpdate(space));\n });\n\n client.spaces.subscribe({\n next: async (spaces) => {\n spaces\n .filter((space) => !subscriptions.has(space.id))\n .forEach((space) => {\n subscriptions.set(space.id, subscribeToSpaceUpdate(space));\n });\n },\n });\n\n scheduleTaskInterval(ctx, async () => updateSpaceMetrics.emit(), SPACE_METRICS_MIN_INTERVAL);\n\n return async () => {\n await ctx.dispose();\n };\n });\n\ntype MapSpacesOptions = {\n verbose?: boolean;\n truncateKeys?: boolean;\n};\n\nconst mapSpaces = (spaces: Space[], options: MapSpacesOptions = { verbose: false, truncateKeys: false }) => {\n return spaces.map((space) => {\n // TODO(burdon): Factor out.\n // TODO(burdon): Agent needs to restart before `ready` is available.\n const { open, ready } = space.internal.data.metrics ?? {};\n const startup = open && ready && ready.getTime() - open.getTime();\n\n // TODO(burdon): Get feeds from client-services if verbose (factor out from devtools/diagnostics).\n // const host = client.services.services.DevtoolsHost!;\n const pipeline = space.internal.data.pipeline;\n const startDataMutations = pipeline?.currentEpoch?.subject.assertion.timeframe.totalMessages() ?? 0;\n const epoch = pipeline?.currentEpoch?.subject.assertion.number;\n // const appliedEpoch = pipeline?.appliedEpoch?.subject.assertion.number;\n const currentDataMutations = pipeline?.currentDataTimeframe?.totalMessages() ?? 0;\n const totalDataMutations = pipeline?.targetDataTimeframe?.totalMessages() ?? 0;\n\n return {\n // TODO(nf): truncate keys for DD?\n key: space.key.truncate(),\n open: space.isOpen,\n members: space.members.get().length,\n objects: space.internal.db.coreDatabase.getAllObjectIds().length,\n startup,\n epoch,\n // appliedEpoch,\n startDataMutations,\n currentDataMutations,\n totalDataMutations,\n\n // TODO(burdon): Negative?\n progress: (\n Math.min(Math.abs((currentDataMutations - startDataMutations) / (totalDataMutations - startDataMutations)), 1) *\n 100\n ).toFixed(0),\n };\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as FetchHttpClient from '@effect/platform/FetchHttpClient';\nimport * as HttpClient from '@effect/platform/HttpClient';\nimport * as HttpClientRequest from '@effect/platform/HttpClientRequest';\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n// NOTE: localStorage is not available in web workers.\nimport * as localForage from 'localforage';\n\nimport { type Config } from '@dxos/config';\nimport { log } from '@dxos/log';\n\nimport { type DataProvider } from '../observability';\n\nconst IP_DATA_CACHE_TIMEOUT = 6 * 60 * 60 * 1000; // 6 hours\n\nconst IPData = Schema.Struct({\n city: Schema.String,\n region: Schema.String,\n country: Schema.String,\n latitude: Schema.optional(Schema.Number),\n longitude: Schema.optional(Schema.Number),\n});\ntype IPData = Schema.Schema.Type<typeof IPData>;\n\ntype CachedIPData = {\n data: IPData;\n timestamp: number;\n};\n\nconst getIPData = Effect.fn(function* (config: Config) {\n const httpClient = yield* HttpClient.HttpClient;\n\n // Check cache first.\n const cachedData = yield* Effect.promise(() => localForage.getItem<CachedIPData>('dxos:observability:ipdata'));\n if (cachedData && cachedData.timestamp > Date.now() - IP_DATA_CACHE_TIMEOUT) {\n return cachedData.data;\n }\n\n // Fetch data if not cached.\n const IPDATA_API_KEY = config.get('runtime.app.env.DX_IPDATA_API_KEY');\n if (IPDATA_API_KEY) {\n const data = yield* HttpClientRequest.get(`https://api.ipdata.co?api-key=${IPDATA_API_KEY}`).pipe(\n httpClient.execute,\n Effect.flatMap((res) => res.json),\n Effect.flatMap(Schema.decodeUnknown(IPData)),\n );\n\n // Cache data.\n yield* Effect.promise(() =>\n localForage.setItem('dxos:observability:ipdata', {\n data,\n timestamp: Date.now(),\n }),\n );\n\n return data;\n }\n});\n\n/** Fetches IP geolocation data and sets city/region/country tags on the observability instance. */\nexport const provider =\n (config: Config): DataProvider =>\n (observability) =>\n Effect.gen(function* () {\n const ipData = yield* getIPData(config);\n if (!ipData) {\n return;\n }\n\n observability.setTags({\n city: ipData.city,\n region: ipData.region,\n country: ipData.country,\n latitude: ipData.latitude,\n longitude: ipData.longitude,\n });\n }).pipe(\n Effect.provide(FetchHttpClient.layer),\n Effect.catchAll((err) =>\n Effect.sync(() => {\n log.catch(err);\n }),\n ),\n );\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Duration from 'effect/Duration';\nimport * as Effect from 'effect/Effect';\nimport * as Fiber from 'effect/Fiber';\nimport * as Schedule from 'effect/Schedule';\n\nimport { type DataProvider } from '../observability';\n\nexport const provider: DataProvider = Effect.fn(function* (observability) {\n if (typeof navigator !== 'undefined' && navigator.storage?.estimate) {\n const action = Effect.gen(function* () {\n const storageEstimate = yield* Effect.tryPromise(() => navigator.storage.estimate());\n storageEstimate.usage && observability.metrics.gauge('storageUsage', storageEstimate.usage);\n storageEstimate.quota && observability.metrics.gauge('storageQuota', storageEstimate.quota);\n });\n\n const fiber = action.pipe(Effect.repeat(Schedule.fixed(Duration.hours(1))), Effect.runFork);\n return () => Effect.runSync(Fiber.interrupt(fiber));\n }\n});\n"],
5
+ "mappings": ";;;;;AAIA,SAAwCA,UAA6BC,sBAAsB;AAC3F,SAASC,sBAAsB;AAE/B,IAAMC,sBAAsB;AAC5B,IAAMC,qBAAqB;AAyBpB,IAAMC,YAAN,MAAMA;EACMC;EAEjB,YAAYC,OAAOJ,qBAAqB;AACtC,SAAKG,UAAU,IAAIE,eAA0BD,IAAAA;EAC/C;;EAGSE,eAA6B,CAACC,SAAoBC,UAAAA;AACzD,QAAIA,MAAMC,SAASC,SAASC,OAAO;AACjC;IACF;AAEA,UAAMC,SAAoB;MACxBC,IAAG,oBAAIC,KAAAA,GAAOC,YAAW;MACzBC,GAAGC,eAAeT,MAAMC,KAAK,KAAK;MAClCS,GAAGV,MAAMW,WAAW;IACtB;AAEA,QAAIX,MAAMY,MAAM;AACdR,aAAOS,IAAIC,oBAAoBd,MAAMY,KAAKG,CAAC;AAC3CX,aAAOY,IAAIhB,MAAMY,KAAKK;IACxB;AAEA,QAAIjB,MAAMkB,OAAO;AACfd,aAAOe,IAAInB,MAAMkB,MAAME,SAASpB,MAAMkB,MAAMP;IAC9C;AAEA,QAAIX,MAAMqB,WAAW,MAAM;AACzB,UAAI;AACF,cAAMC,MAAM,OAAOtB,MAAMqB,YAAY,aAAarB,MAAMqB,QAAO,IAAKrB,MAAMqB;AAC1E,YAAIC,OAAO,QAAQ,EAAEA,eAAeC,QAAQ;AAC1C,cAAIC,OAAOC,KAAKC,UAAUJ,GAAAA;AAC1B,cAAIE,KAAKG,SAASlC,oBAAoB;AACpC+B,mBAAOA,KAAKI,MAAM,GAAGnC,kBAAAA;UACvB;AACAW,iBAAOyB,IAAIL;QACb;MACF,QAAQ;MAER;IACF;AAEA,SAAK7B,QAAQmC,KAAK1B,MAAAA;EACpB;;EAGA,IAAIR,OAAe;AACjB,WAAO,KAAKD,QAAQoC;EACtB;;EAGAC,YAAoB;AAClB,UAAMC,QAAkB,CAAA;AACxB,eAAW7B,UAAU,KAAKT,SAAS;AACjCsC,YAAMH,KAAKL,KAAKC,UAAUtB,MAAAA,CAAAA;IAC5B;AACA,WAAO6B,MAAMC,KAAK,IAAA;EACpB;AACF;AAEA,IAAMpB,sBAAsB,CAACqB,aAAAA;AAC3B,QAAMC,QAAQD,SAASC,MAAM,wBAAA;AAC7B,MAAIA,OAAO;AACT,WAAOA,MAAM,CAAA;EACf;AACA,SAAOD;AACT;;;ACpGA;;;;;;;;;;;;AAIA,YAAYE,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,cAAc;AAE1B,SAAyBC,wBAAwB;AACjD,SAASC,iBAAiB;AAC1B,SAASC,OAAAA,YAAW;;;ACLpB,YAAYC,iBAAiB;AAE7B,SAASC,WAAW;;AAEpB,IAAMC,6BAA6B;AACnC,IAAMC,0BAA0B;AAGzB,IAAMC,0BAA0B,MAAA;AACrCH,MAAII,KAAK,iEAAA,QAAA;;;;;;AACX;AAKO,IAAMC,0BAA0B,OAAOC,cAAAA;AAC5C,MAAI;AACF,WAAQ,MAAkBC,oBAAQ,GAAGD,SAAAA,IAAaL,0BAAAA,EAA4B,MAAO;EACvF,SAASO,KAAK;AACZR,QAAIS,MAAM,gEAAgED,KAAAA;;;;;;AAC1E,WAAO;EACT;AACF;AAKO,IAAME,6BAA6B,OAAOJ,WAAmBK,WAAAA;AAClE,MAAI;AACF,UAAkBC,oBAAQ,GAAGN,SAAAA,IAAaL,0BAAAA,IAA8BY,OAAOF,MAAAA,CAAAA;EACjF,SAASH,KAAK;AACZR,QAAIS,MAAM,0CAA0CD,KAAAA;;;;;;EACtD;AACF;AAKO,IAAMM,wBAAwB,OAAOR,cAAAA;AAC1C,MAAI;AACF,WAAQ,MAAkBC,oBAAQ,GAAGD,SAAAA,IAAaJ,uBAAAA,EAAyB,KAAMa;EACnF,SAASP,KAAK;AACZR,QAAIS,MAAM,qCAAqCD,KAAAA;;;;;;EACjD;AACF;AAKO,IAAMQ,0BAA0B,OAAOV,WAAmBK,WAAAA;AAC/D,MAAI;AACF,UAAkBC,oBAAQ,GAAGN,SAAAA,IAAaJ,uBAAAA,IAA2BS,MAAAA;EACvE,SAASH,KAAK;AACZR,QAAIS,MAAM,uCAAuCD,KAAAA;;;;;;EACnD;AACF;;;;ADHA,IAAMS,oBAAN,MAAMA;EACIC,eAAe;EACNC,cAA2B,CAAA;EAC3BC,iBAAiC,CAAA;EACjCC,iBAAiB,IAAIC,iBAAAA;EAEtCC,aAAkC;AAChC,QAAI,KAAKL,cAAc;AACrB,aAAcM,eAAQC,MAAAA;IACxB;AAEA,UAAMC,wBAAqC,CAAA;AAE3C,WAAcC,WAAI,MAAM,aAAA;AACtB,iBAAWC,aAAa,KAAKT,aAAa;AACxC,YAAIS,UAAUL,YAAY;AACxB,iBAAOK,UAAUL,WAAU;QAC7B;AACAG,8BAAsBG,KAAKD,SAAAA;MAC7B;AAEA,YAAME,WAAW,OAAcC,WAAI,KAAKX,eAAeY,IAAI,CAACC,cAAaA,UAAS,IAAI,CAAA,CAAA;AACtF,WAAKZ,eAAea,IAAG,GAAIJ,SAASK,OAAO,CAACC,YAAYA,YAAYX,MAAAA,CAAAA;AACpE,WAAKP,eAAe;IACtB,CAAA,EAAGmB,KACMC,gBAAS,CAACC,UACRZ,WAAI,MAAM,aAAA;AACfa,MAAAA,KAAIC,MAAMF,OAAAA,QAAAA;;;;;;AAEV,iBAAWX,aAAaF,uBAAuB;AAC7C,YAAIE,UAAUc,OAAO;AACnB,iBAAOd,UAAUc,MAAK,EAAGL,KAAYC,gBAAS,MAAad,eAAQC,MAAAA,CAAAA,CAAAA;QACrE;MACF;AACA,WAAKJ,eAAesB,MAAK;IAC3B,CAAA,CAAA,CAAA;EAGN;EAEAD,QAA6B;AAC3B,WAAcf,WAAI,MAAM,aAAA;AACtB,WAAKN,eAAesB,MAAK;AACzB,WAAKvB,eAAewB,SAAS;AAC7B,iBAAWhB,aAAa,KAAKT,aAAa;AACxC,YAAIS,UAAUc,OAAO;AACnB,iBAAOd,UAAUc,MAAK;QACxB;MACF;AACA,WAAKxB,eAAe;IACtB,CAAA;EACF;EAEA2B,SAA8B;AAC5B,WAAclB,WAAI,MAAM,aAAA;AACtB,iBAAWC,aAAa,KAAKT,aAAa;AACxC,YAAIS,UAAUiB,QAAQ;AACpB,iBAAOjB,UAAUiB,OAAM;QACzB;MACF;IACF,CAAA;EACF;EAEAC,UAA+B;AAC7B,WAAcnB,WAAI,MAAM,aAAA;AACtB,iBAAWC,aAAa,KAAKT,aAAa;AACxC,YAAIS,UAAUkB,SAAS;AACrB,iBAAOlB,UAAUkB,QAAO;QAC1B;MACF;IACF,CAAA;EACF;EAEAC,QAA6B;AAC3B,WAAcpB,WAAI,MAAM,aAAA;AACtB,iBAAWC,aAAa,KAAKT,aAAa;AACxC,YAAIS,UAAUmB,OAAO;AACnB,iBAAOnB,UAAUmB,MAAK;QACxB;MACF;IACF,CAAA;EACF;EAEAC,cAAcpB,WAA4B;AACxCqB,cAAU,CAAC,KAAK/B,cAAc,wCAAA;;;;;;;;;AAC9B,SAAKC,YAAYU,KAAKD,SAAAA;EACxB;EAEAsB,iBAAiBC,cAAkC;AACjDF,cAAU,CAAC,KAAK/B,cAAc,wCAAA;;;;;;;;;AAC9B,SAAKE,eAAeS,KAAKsB,YAAAA;EAC3B;;;;EAKAC,gBAAgBD,cAAwD;AACtE,WAAcxB,WAAI,MAAM,aAAA;AACtB,WAAKP,eAAeS,KAAKsB,YAAAA;AACzB,YAAMf,UAAU,OAAOe,aAAa,IAAI;AACxC,UAAIf,SAAS;AACX,aAAKf,eAAea,IAAIE,OAAAA;MAC1B;IACF,CAAA;EACF;EAEAiB,SAASC,YAAoBC,YAAyBC,mBAAsC;AAC1F,eAAW5B,aAAa,KAAKT,aAAa;AACxCS,gBAAUyB,WAAWC,YAAYC,YAAYC,iBAAAA;IAC/C;EACF;EAEAC,MAAMH,YAAoBI,YAA2B;AACnD,eAAW9B,aAAa,KAAKT,aAAa;AACxCS,gBAAU6B,QAAQH,YAAYI,UAAAA;IAChC;EACF;EAEAC,QAAQC,MAAkBC,MAAmB;AAC3C,eAAWjC,aAAa,KAAKT,aAAa;AACxC,UAAI0C,QAAQ,CAACjC,UAAUkC,KAAKC,KAAK,CAACC,QAAQA,IAAIH,SAASA,IAAAA,GAAO;AAC5D;MACF;AAEA,YAAMI,gBAAgBC,OAAOC,YAC3BD,OAAOE,QAAQR,IAAAA,EACZzB,OAAO,CAACkC,UAAwDA,MAAM,CAAA,MAAO5C,MAAAA,EAC7EO,IAAI,CAAC,CAACsC,KAAKC,MAAAA,MAAW;QAACD;QAAKC,OAAMC,SAAQ;OAAG,CAAA;AAElD5C,gBAAU+B,UAAUM,aAAAA;IACtB;EACF;EAEA,IAAIQ,UAAmB;AACrB,WAAO,KAAKtD,YAAYuD,MAAM,CAAC9C,cAAcA,UAAU6C,OAAO;EAChE;EAEA,IAAIE,SAAiB;AACnB,WAAO;MACLC,kBAAkB,CAACrC,OAAOgB,eAAAA;AACxB,mBAAW3B,aAAa,KAAKiD,eAAe,QAAA,GAAW;AACrDjD,oBAAUgD,iBAAiBrC,OAAOgB,UAAAA;QACpC;MACF;IACF;EACF;EAEA,IAAIuB,SAAiB;AACnB,WAAO;MACLC,cAAc,CAACC,OAAOzB,eAAAA;AACpB,mBAAW3B,aAAa,KAAKiD,eAAe,QAAA,GAAW;AACrDjD,oBAAUmD,aAAaC,OAAOzB,UAAAA;QAChC;MACF;IACF;EACF;EAEA,IAAI0B,WAAqB;AACvB,WAAO;MACLC,qBAAqB,CAACC,SAAAA;AACpB,mBAAWvD,aAAa,KAAKiD,eAAe,UAAA,GAAa;AACvDjD,oBAAUsD,oBAAoBC,IAAAA;QAChC;MACF;IACF;EACF;EAEAC,YAAYvB,MAAoC;AAC9C,UAAMC,OAAO,KAAKe,eAAehB,IAAAA;AACjC,QAAIC,KAAKlB,WAAW,GAAG;AACrB,aAAcpB,eAAQ,KAAA;IACxB;AACA,WAAcG,WAAI,MAAM,aAAA;AACtB,iBAAWqC,OAAOF,MAAM;AACtB,cAAMuB,YAAY,OAAOrB,IAAIoB,YAAW;AACxC,YAAIC,WAAW;AACb,iBAAO;QACT;MACF;AACA,aAAO;IACT,CAAA;EACF;EAEA,IAAIC,UAAmB;AACrB,WAAO;MACLC,OAAO,CAACC,MAAMjB,QAAOhB,eAAAA;AACnB,mBAAW3B,aAAa,KAAKiD,eAAe,SAAA,GAAY;AACtDjD,oBAAU2D,MAAMC,MAAMjB,QAAOhB,UAAAA;QAC/B;MACF;MACAkC,WAAW,CAACD,MAAMjB,QAAOhB,eAAAA;AACvB,mBAAW3B,aAAa,KAAKiD,eAAe,SAAA,GAAY;AACtDjD,oBAAU6D,UAAUD,MAAMjB,QAAOhB,UAAAA;QACnC;MACF;MACAmC,cAAc,CAACF,MAAMjB,QAAOhB,eAAAA;AAC1B,mBAAW3B,aAAa,KAAKiD,eAAe,SAAA,GAAY;AACtDjD,oBAAU8D,aAAaF,MAAMjB,QAAOhB,UAAAA;QACtC;MACF;IACF;EACF;EAEQsB,eAA+BhB,MAA+C;AACpF,WAAgBxB,cACd,KAAKlB,aACCwE,cAAQ,CAAC/D,cAAcA,UAAUkC,IAAI,GACrC3B,aAAO,CAAC6B,QAAmDA,IAAIH,SAASA,IAAAA,CAAAA;EAElF;AACF;AAEO,IAAM+B,OAAO,MAA2CpE,eAAQ,IAAIP,kBAAAA,CAAAA;AAEpE,IAAM4E,eAAe,CAACC,eACpBC,UAAG,WAAWC,gBAA4C;AAC/D,QAAMC,gBAAgB,OAAOD;AAC7B,QAAMpE,YAAY,OAAOkE;AACzB7C,YAAU,mBAAmBgD,iBAAiB,OAAOA,cAAcjD,kBAAkB,YAAA,QAAA;;;;;;;;;AACrFiD,gBAAcjD,cAAcpB,SAAAA;AAC5B,SAAOqE;AACT,CAAA;AAEK,IAAM7C,kBAAkB,CAACD,iBACvB4C,UAAG,WAAWC,gBAA4C;AAC/D,QAAMC,gBAAgB,OAAOD;AAC7B/C,YAAU,sBAAsBgD,iBAAiB,OAAOA,cAAc/C,qBAAqB,YAAA,QAAA;;;;;;;;;AAC3F+C,gBAAc/C,iBAAiBC,YAAAA;AAC/B,SAAO8C;AACT,CAAA;AAEK,IAAM1E,aAAoBwE,UAAG,WAAWC,gBAA4C;AACzF,QAAMC,gBAAgB,OAAOD;AAC7B,SAAOC,cAAc1E,WAAU;AAC/B,SAAO0E;AACT,CAAA;;;AEpSA;;;;;;;ACAA;;;;;;ACIA,SAASC,iBAAiBC,8BAA8B;AACxD,SAASC,mBAAmBC,4BAA4B;AACxD,YAAYC,aAAY;AACxB,YAAYC,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,SAAS;AAGrB,SAASC,YAAAA,WAAUC,OAAAA,YAAW;AAC9B,SAASC,QAAQC,qBAAqB;;;ACbtC;AAAA,EACE,iBAAmB;AAAA,EACnB,gBAAkB;AAAA,EAClB,eAAiB;AAAA,EACjB,cAAgB;AAClB;;;ACDA,YAAYC,aAAY;AAIjB,IAAMC,gBAA2B;EACtCC,YAAY,MAAaC,gBAAQC,MAAAA;EACjCC,QAAQ,MAAaF,gBAAQC,MAAAA;EAC7BE,SAAS,MAAaH,gBAAQC,MAAAA;EAC9BG,OAAO,MAAaJ,gBAAQC,MAAAA;EAC5BI,SAAS,MAAMJ;EACf,IAAIK,UAAU;AACZ,WAAO;EACT;EACAC,MAAM,CAAA;AACR;;;;AFoBO,IAAMC,aAA8EC,WAAG,WAAW;EACvGC;EACAC;EACAC;EACAC;EACAC,UAAUC;EACVC,SAASC;;;;;EAKTC,MAAMC,cAAc;EACpBC,WAAWC,UAASC;EACpBC,SAASC,iBAAiB;EAC1BC,QAAQC,gBAAgB;AAAK,GAC9B;AACC,QAAM,EAAEC,SAAQ,IAAK,OAAcC,gBAAQ,MAAM,OAAO,qBAAA,CAAA;AACxD,QAAM,EAAEC,YAAW,IAAK,OAAcD,gBAAQ,MAAM,OAAO,wBAAA,CAAA;AAC3D,QAAM,EAAEE,WAAU,IAAK,OAAcF,gBAAQ,MAAM,OAAO,+BAAA,CAAA;AAE1D,QAAMG,iBAAiB,OAAcH,gBAAQ,MAAMI,wBAAwBtB,WAAAA,CAAAA;AAC3E,QAAMuB,aAAa,OAAWC,SAAK,CAACH,cAAAA;AACpC,QAAMI,OAAO,oBAAIC,IAAAA;AAEjB,QAAMtB,WAAWuB,OAAAA,IACZC,QAAQC,IAAIC,oBAAoBzB,aAAa0B,kCAAaC,gBAC3D7B,OAAO8B,OAAOC,SAASC,KAAKN,KAAKC;AACrC,QAAMxB,UACJC,YACM6B,YAAMT,OAAAA,CAAAA,EAAUU,KACdC,WAAK,MAAM,MAAaC,oBAAaX,QAAQC,IAAIW,mBAAmBT,kCAAaU,YAAY,CAAA,GAC7FH,WAAK,OAAO,MAAaC,oBAAapC,OAAO8B,OAAOC,SAASC,KAAKN,KAAKW,eAAAA,CAAAA,GACvEE,kBACCC,WAAI,CAACC,QAAQC,aAAaD,GAAAA,CAAAA,GAC1BE,iBAAU,MAAMC,MAAAA,CAAAA;AAG3B,MAAI,CAAC3C,YAAY,CAACE,SAAS;AACzB0C,IAAAA,KAAIC,KAAK,yCAAA,QAAA;;;;;;AACT,WAAOC;EACT;AAEA,QAAMC,WAAWC,gBAAAA,EAAkBC,MACjCC,uBAAuB;IACrB,CAACC,iBAAAA,GAAoBvD;IACrB,CAACwD,oBAAAA,GAAuBvD;IACxB,0BAA0BC;EAC5B,CAAA,CAAA;AAGF,QAAMM,OAAOC,cACT,IAAIQ,SAAS;IACXb;IACAE;IACA6C;IACAM,SAAS,MAAMC,OAAOC,YAAYlC,IAAAA;IAClCf;EACF,CAAA,IACAqC;AAEJ,QAAMlC,UAAUC,iBACZ,IAAIK,YAAY;IACdf;IACAE;IACA6C;IACAM,SAAS,MAAMC,OAAOC,YAAYlC,IAAAA;EACpC,CAAA,IACAsB;AAEJ,QAAMhC,SAASC,gBACX,IAAII,WAAW;IACbhB;IACAE;IACA6C;IACAM,SAAS,MAAMC,OAAOC,YAAYlC,IAAAA;EACpC,CAAA,IACAsB;AAEJ,SAAO;IACLa,YAAY,MACHC,aAAK,MAAA;AACV,UAAIrD,MAAM;AACRwC,QAAAA,KAAIc,cAAcC,WAAWC,KAAKxD,KAAKyD,YAAY;MACrD;AACA,UAAIlD,QAAQ;AACVA,eAAOmD,MAAK;MACd;IACF,CAAA;IACFC,QAAepE,WAAG,aAAA;AAChB,aAAcmB,gBAAQ,MAAMkD,2BAA2BpE,aAAa,KAAA,CAAA;AACpE,aAAWqE,WAAO9C,YAAY,MAAM,IAAA;IACtC,CAAA;IACA+C,SAAgBvE,WAAG,aAAA;AACjB,aAAcmB,gBAAQ,MAAMkD,2BAA2BpE,aAAa,IAAA,CAAA;AACpE,aAAWqE,WAAO9C,YAAY,MAAM,KAAA;IACtC,CAAA;IACAgD,OAAO,MACErD,gBAAQ,YAAA;AACb,YAAMV,MAAM+D,MAAAA;AACZ,YAAM1D,SAAS0D,MAAAA;IACjB,CAAA;IACFC,OAAO,MACEtD,gBAAQ,YAAA;AACb,YAAMV,MAAMgE,MAAAA;AACZ,YAAM3D,SAAS2D,MAAAA;IACjB,CAAA;IACFC,SAAS,CAACC,iBAAAA;AACR,iBAAW,CAACC,KAAKvC,MAAAA,KAAUsB,OAAOkB,QAAQF,YAAAA,GAAe;AACvDjD,aAAKoD,IAAIF,KAAKvC,MAAAA;MAChB;IACF;IACA,IAAI0C,UAAU;AACZ,aAAWC,QAAIxD,UAAAA,EAAYc,KAAY2C,eAAO;IAChD;IACAC,MAAM;MACJ;QAAEC,MAAM;QAAQC,aAAa,MAAaC,gBAAQ,CAAC,CAAC5E,IAAAA;MAAM;MAC1DK,UACK;QACCqE,MAAM;QACNC,aAAa,MAAaC,gBAAQ,IAAA;QAClCC,OAAO,CAACC,MAAMlD,QAAOX,UAASZ,QAAQwE,MAAMC,MAAMlD,QAAOX,KAAAA;QACzD8D,WAAW,CAACD,MAAMlD,QAAOX,UAASZ,QAAQ0E,UAAUD,MAAMlD,QAAOX,KAAAA;QACjE+D,cAAc,CAACF,MAAMlD,QAAOX,UAASZ,QAAQ2E,aAAaF,MAAMlD,QAAOX,KAAAA;MACzE,IACAsB;MACJhC,SAAU;QAAEmE,MAAM;QAAUC,aAAa,MAAaC,gBAAQ,IAAA;MAAM,IAA4BrC;MAChG0C,OAAOC,aAAAA;EACX;AACF,CAAA;AAEA,IAAM7C,eAAe,CAAC8C,oBAAAA;AACpB,SAAOA,gBAAgBC,MAAM,GAAA,EAAKC,OAAO,CAACC,KAA6BC,WAAAA;AACrE,UAAM,CAACpB,KAAK,GAAGqB,IAAAA,IAAQD,OAAOH,MAAM,GAAA;AACpC,QAAIjB,OAAOqB,KAAKC,SAAS,GAAG;AAC1BH,UAAInB,IAAIuB,KAAI,EAAGC,YAAW,CAAA,IAAMH,KAAKI,KAAK,GAAA,EAAKF,KAAI;IACrD;AAEA,WAAOJ;EACT,GAAG,CAAC,CAAA;AACN;;;AGjLA;;oBAAAO;;;;ACIA,YAAYC,aAAY;AAIxB,SAASC,OAAAA,YAAW;;AAgBpB,IAAMC,aAAa,OAAOC,SAAAA;AACxB,MAAI;AACF,UAAMC,WAAW,MAAMC,MAAM,sBAAsB;MACjDC,QAAQ;MACRC,SAAS;QAAE,gBAAgB;MAAuB;MAClDJ;IACF,CAAA;AACA,QAAI,CAACC,SAASI,IAAI;AAChBC,MAAAA,KAAIC,KAAK,8BAA8B;QAAEC,QAAQP,SAASO;MAAO,GAAA;;;;;;AACjE,aAAOC;IACT;AACA,UAAM,EAAEC,IAAG,IAAK,MAAMT,SAASU,KAAI;AACnC,WAAOD;EACT,SAASE,KAAK;AACZN,IAAAA,KAAIC,KAAK,6BAA6B;MAAEM,OAAOD;IAAI,GAAA;;;;;;AACnD,WAAOH;EACT;AACF;AAGO,IAAMK,cAA8EC,WAAG,WAAW,EACvGC,QACAC,SACAC,aACAC,SAASC,cAAa,GACvB;AACC,MAAI,OAAOC,WAAW,aAAa;AACjCf,IAAAA,KAAI,+DAAA,QAAA;;;;;;AACJ,WAAOgB;EACT;AAEA,QAAMC,mBAAmBP,OAAOQ,IAAI,+CAAA;AACpC,QAAMC,SAAST,OAAOQ,IAAI,oCAAA;AAC1B,QAAME,WAAWV,OAAOQ,IAAI,qCAAA;AAC5B,MAAI,CAACC,UAAU,CAACC,UAAU;AACxBpB,IAAAA,KAAIqB,KAAK,+CAAA,QAAA;;;;;;AACT,WAAOL;EACT;AAEA,QAAM,EAAEM,SAAST,QAAO,IAAK,OAAcU,gBAAQ,MAAM,OAAO,YAAA,CAAA;AAChE,QAAM,EAAEC,aAAY,IAAK,OAAcD,gBAAQ,MAAM,OAAO,8BAAA,CAAA;AAC5D,QAAME,YAAY,IAAIC,UAAAA;AACtB,MAAIC,0BAA0C;AAE9C,QAAMC,+BAA+B,MACnCX,mBACWM,gBAAQ,MAAA;AACb,QAAII,4BAA4B,MAAM;AACpC,aAAOE,QAAQC,QAAQH,uBAAAA;IACzB;AACA,WAAO,IAAIE,QAAiB,CAACC,YAAAA;AAC3BjB,cAAQkB,WAAW,CAACC,YAAAA;AAClB,cAAMC,QAAQD,QAAQE,KAAK,CAACC,MAAMA,EAAEC,OAAOnB,gBAAAA;AAC3CU,kCAA0BM;AAC1BH,gBAAQG,KAAAA;MACV,CAAA;IACF,CAAA;EACF,CAAA,IACOI,gBAAQ,KAAA;AAErB,SAAO;IACLC,YAAY,MACHC,aAAK,MAAA;AAEV1B,cAAQ2B,KAAKrB,QAAQ;QACnBC;QACAqB,eAAe;QACfC,oBAAoB;QACpB,GAAG5B;MACL,CAAA;AACA,UAAIH,WAAWC,aAAa;AAC1BC,gBAAQ8B,SAAS;UACf,GAAIhC,UAAU;YAAEA;UAAQ,IAAI,CAAC;UAC7B,GAAIC,cAAc;YAAEA;UAAY,IAAI,CAAC;QACvC,CAAA;MACF;AACAZ,MAAAA,KAAI4C,cAAcC,WAAWC,KAAKtB,YAAAA;AAClCxB,MAAAA,KAAI4C,cAAcC,WAAWC,KAAKrB,UAAUD,YAAY;IAC1D,CAAA;IACFuB,OAAO,MACER,aAAK,MAAA;AACV,iBAAWS,aAAa;QAACxB;QAAcC,UAAUD;SAAe;AAC9D,cAAMyB,QAAQjD,KAAI4C,cAAcC,WAAWK,QAAQF,SAAAA;AACnD,YAAIC,UAAU,IAAI;AAChBjD,UAAAA,KAAI4C,cAAcC,WAAWM,OAAOF,OAAO,CAAA;QAC7C;MACF;IACF,CAAA;IACFG,QAAQ,MAAab,aAAK,MAAM1B,QAAQwC,iBAAgB,CAAA;IACxDC,SAAS,MAAaf,aAAK,MAAM1B,QAAQ0C,kBAAiB,CAAA;IAC1DC,UAAU,CAACC,YAAYC,YAAYC,sBAAAA;AACjC9C,cAAQ2C,SAASC,YAAYC,YAAYC,iBAAAA;IAC3C;IACAC,OAAO,CAACH,YAAYI,eAAAA;AAClBhD,cAAQ+C,MAAMH,YAAYI,UAAAA;IAC5B;IACAC,SAAS,CAACC,SAAAA;AACRlD,cAAQmD,qBAAqBD,IAAAA;IAC/B;IACA,IAAIE,UAAmB;AACrB,aAAOpD,QAAQqD,aAAY;IAC7B;IACAC,MAAM;MACJ;QACEC,MAAM;QACNC,aAAa,MAAahC,gBAAQ,IAAA;QAClCiC,cAAc,CAACC,OAAOb,eAAAA;AACpB7C,kBAAQ2D,QAAQD,OAAOb,UAAAA;QACzB;MACF;MACA;QACEU,MAAM;QACNC,aAAa,MAAahC,gBAAQ,IAAA;QAClCoC,kBAAkB,CAAClE,OAAOmD,eAAAA;AACxB7C,kBAAQ4D,iBAAiBlE,OAAOmD,UAAAA;QAClC;MACF;MACA;QACEU,MAAM;;QAENM,qBAAqB,CAACC,SAAAA;AACpB9D,kBAAQkB,WAAW,OAAOC,YAAAA;AACxB,kBAAM4C,SAAS5C,QAAQ6C,KAAK,CAACD,YAAWA,QAAOxC,OAAOnB,gBAAAA;AACtD,gBAAI,CAAC2D,UAAUA,OAAOE,UAAUC,WAAW,GAAG;AAC5C/E,cAAAA,KAAIO,MAAM,sDAAsD;gBAAEU;cAAiB,GAAA;;;;;;AACnF;YACF;AAEA,gBAAI+D;AACJ,gBAAIL,KAAKM,gBAAgB,SAASxD,UAAUyD,OAAO,GAAG;AACpDF,gCAAkB,MAAMvF,WAAWgC,UAAU0D,UAAS,CAAA;YACxD;AAGA,kBAAMC,WAAWR,OAAOE,UAAU,CAAA;AAClCjE,oBAAQ2D,QAAQ,eAAe;cAC7Ba,YAAYT,OAAOxC;cACnBkD,mBAAmB;gBAAC;kBAAElD,IAAIgD,SAAShD;kBAAIgD,UAAUA,SAASA;gBAAS;;cACnE,CAAC,oBAAoBA,SAAShD,EAAE,EAAE,GAAGuC,KAAKY;cAC1C,GAAIP,kBAAkB;gBAAEQ,oBAAoBR;cAAgB,IAAI,CAAC;YACnE,CAAA;UACF,CAAA;QACF;QACAX,aAAazC;MACf;;EAEJ;AACF,CAAA;;;AC3KA;;;;;;;;ACAA;;;;;;;AAIA,YAAY6D,aAAY;AAExB,SAASC,OAAOC,4BAA4B;AAG5C,SAASC,kBAAkB;AAC3B,SAASC,eAAe;AACxB,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,iBAAqCC,gBAAgB;;AAI9D,IAAMC,6BAA6B,MAAO,KAAK;AAC/C,IAAMC,+BAA+B,MAAO,KAAK;AACjD,IAAMC,+BAA+B,MAAO,KAAK;AAQ1C,IAAMC,mBAAmB,CAACC,mBACxBC,WAAG,WAAWC,eAAa;AAEhCF,iBAAeG,gBAAiBC,cAAa,EAAGC,UAAU,CAACC,SAAAA;AACzD,QAAI,CAACA,MAAMC,UAAUC,KAAK;AACxB;IACF;AAEAN,kBAAcO,SAASH,KAAKC,SAASC,GAAG;AACxCN,kBAAcQ,QAAQ;MAAEF,KAAKF,KAAKC,SAASC;IAAI,CAAA;EACjD,CAAA;AAGAR,iBAAeW,eAAgBC,aAAY,EAAGP,UAAU,CAACQ,QAAAA;AACvD,QAAI,CAACA,KAAKC,WAAWD,IAAIC,QAAQC,WAAW,GAAG;AAC7C;IACF;AAEA,UAAMC,aAAaH,IAAIC,QAAQG,KAAK,CAACC,WAAWA,OAAOC,SAAS7B,WAAW8B,OAAO;AAClF,QAAI,CAACJ,YAAY;AACf;IACF;AAEAd,kBAAcQ,QAAQ;MAAEW,WAAWL,WAAWK,UAAUC,SAAQ;IAAG,CAAA;AACnE,QAAIN,WAAWO,SAASC,OAAO;AAC7BtB,oBAAcQ,QAAQ;QAAEe,eAAeT,WAAWO,QAAQC;MAAM,CAAA;IAClE;EACF,CAAA;AACF,CAAA;AAGK,IAAME,yBAAyB,CAAC1B,mBAC9BC,WAAG,WAAWC,eAAa;AAChC,QAAMyB,MAAM,IAAIpC,QAAAA,QAAAA;;;;AAChB,MAAIqC;AAGJ,QAAMC,sBAAsB,IAAIzC,MAAAA,EAAuB0C,SAASjC,4BAAAA;AAChEgC,sBAAoBE,GAAGJ,KAAK,YAAA;AAC1BlC,IAAAA,KAAI,uBAAA,QAAA;;;;;;AACHmC,uBAAmBI,WAAsCC,QAAQ,CAAC,EAAEC,QAAQC,MAAK,MAAE;AAClFjC,oBAAckC,QAAQC,MAAM,8CAA8CF,OAAO;QAAED;MAAO,CAAA;IAC5F,CAAA;AAEA,QAAII,aAAa;AACjB,UAAMC,mBAAmB,oBAAIC,IAAAA;AAC7B,eAAWL,SAASzC,iBAAiB;AACnC6C,uBAAiBE,IAAIN,OAAO,CAAA;IAC9B;AAEA,QAAIO,sBAAsB;AAC1B,QAAIC,uBAAuB;AAC3B,QAAIC,yBAAyB;AAE7BhB,uBAAmBiB,gBAAgBZ,QAAQ,CAACY,mBAAAA;AAC1CP;AAEA,iBAAWQ,QAAQD,eAAeE,eAAe,CAAA,GAAI;AACnDR,yBAAiBE,IAAIK,KAAKX,QAAQI,iBAAiBS,IAAIF,KAAKX,KAAK,KAAK,KAAK,CAAA;AAC3EO,+BAAuBI,KAAKG,kBAAkB;AAC9CN,gCAAwBG,KAAKI,mBAAmB;AAChD,mBAAWC,UAAUL,KAAKM,WAAW,CAAA,GAAI;AACvCR,oCAA0BO,OAAOD,mBAAmB;QACtD;MACF;AAEAhD,oBAAckC,QAAQC,MAAM,mCAAmCC,UAAAA;AAC/D,iBAAWH,SAASzC,iBAAiB;AACnCQ,sBAAckC,QAAQC,MAAM,wCAAwCE,iBAAiBS,IAAIb,KAAAA,KAAU,GAAG;UACpGA;QACF,CAAA;MACF;AACAjC,oBAAckC,QAAQC,MAAM,2CAA2CK,mBAAAA;AACvExC,oBAAckC,QAAQC,MAAM,4CAA4CM,oBAAAA;AACxEzC,oBAAckC,QAAQC,MAAM,8CAA8CO,sBAAAA;IAC5E,CAAA;EACF,CAAA;AAEA5C,iBAAeqD,eAAgBC,YAAW,EAAGjD,UAAU,CAACkD,kBAAAA;AACtD3B,wBAAoB2B;AACpB1B,wBAAoB2B,KAAI;EAC1B,CAAA;AAEAnE,uBAAqBsC,KAAK,YAAYE,oBAAoB2B,KAAI,GAAI3D,4BAAAA;AAElE,SAAO,YAAA;AACL,UAAM8B,IAAI8B,QAAO;EACnB;AACF,CAAA;AAGK,IAAMC,yBAAyB,CAAC1D,mBAC9BC,WAAG,WAAWC,eAAa;AAChC,QAAMyB,MAAM,IAAIpC,QAAAA,QAAAA;;;;AAChB,QAAMoE,WAAW,OAAcC,gBAAQ,MAAM5D,eAAe6D,cAAeC,YAAW,CAAA;AACtFtE,EAAAA,WAAUmE,UAAU,wBAAA;;;;;;;;;AAEpBzD,gBAAcQ,QAAQ;IACpBqD,cAAcpE,SAASqE,cAAcL,SAASM,IAAI,EAAYC,YAAW;IACzEP,UAAUA,SAASA;IACnBQ,MAAMR,SAASQ;IACfC,SAAST,SAASS;EACpB,CAAA;AAEA/E,uBACEsC,KACA,YAAA;AACE,QAAI3B,eAAe,YAAYqE,SAAS,wBAAwB;AAC9D,YAAMC,SAAUC,OAAOC,YAAoBF;AAC3C,UAAIA,QAAQ;AACVpE,sBAAckC,QAAQC,MAAM,iCAAiCiC,OAAOG,eAAe;AACnFvE,sBAAckC,QAAQC,MAAM,gCAAgCiC,OAAOI,cAAc;AACjFxE,sBAAckC,QAAQC,MAAM,qCAAqCiC,OAAOK,eAAe;MACzF;IACF;AAEA3E,mBAAe6D,eAAeC,YAAAA,EAC3Bc,KAAK,CAACjB,cAAAA;AACL,UAAIA,UAASW,QAAQ;AACnBpE,sBAAckC,QAAQC,MAAM,oCAAoCsB,UAASW,OAAOO,GAAG;AACnF3E,sBAAckC,QAAQC,MAAM,0CAA0CsB,UAASW,OAAOQ,SAAS;AAC/F5E,sBAAckC,QAAQC,MAAM,yCAAyCsB,UAASW,OAAOS,QAAQ;MAC/F;IACF,CAAA,EACCC,MAAM,CAACC,UAAUxF,KAAI,kBAAkB;MAAEwF;IAAM,GAAA;;;;;;EACpD,GACAnF,4BAAAA;AAGF,SAAO,YAAA;AACL,UAAM6B,IAAI8B,QAAO;EACnB;AACF,CAAA;AAGK,IAAMyB,wBAAwB,CAACC,WAC7BlF,WAAG,WAAWC,eAAa;AAChC,QAAMyB,MAAM,IAAIpC,QAAAA,QAAAA;;;;AAEhB,QAAM6F,SAASD,OAAOC,OAAOpC,IAAG;AAChC,QAAMqC,gBAAgB,oBAAI7C,IAAAA;AAC1Bb,MAAI2D,UAAU,MAAMD,cAAcpD,QAAQ,CAACsD,iBAAiBA,aAAaC,YAAW,CAAA,CAAA;AAEpF,QAAMC,qBAAqB,IAAIrG,MAAAA,EAAe0C,SAASlC,0BAAAA;AACvD6F,qBAAmB1D,GAAGJ,KAAK,YAAA;AACzBlC,IAAAA,KAAI,sBAAA,QAAA;;;;;;AACJ,eAAWiG,QAAQC,UAAUP,QAAQ;MAAEQ,cAAc;IAAK,CAAA,GAAI;AAC5D1F,oBAAckC,QAAQC,MAAM,6BAA6BqD,KAAKG,SAAS;QAAEC,KAAKJ,KAAKI;MAAI,CAAA;AACvF5F,oBAAckC,QAAQC,MAAM,6BAA6BqD,KAAKK,SAAS;QAAED,KAAKJ,KAAKI;MAAI,CAAA;AACvF5F,oBAAckC,QAAQC,MAAM,2BAA2BqD,KAAKM,OAAO;QAAEF,KAAKJ,KAAKI;MAAI,CAAA;AACnF5F,oBAAckC,QAAQC,MAAM,0CAA0CqD,KAAKO,sBAAsB;QAC/FH,KAAKJ,KAAKI;MACZ,CAAA;IACF;EACF,CAAA;AAEA,QAAMI,yBAAyB,CAACC,UAC9BA,MAAMC,SAAS/F,UAAU;IACvBgG,MAAM,MAAA;AACJZ,yBAAmBjC,KAAI;IACzB;EACF,CAAA;AAEF4B,SAAOnD,QAAQ,CAACkE,UAAAA;AACdd,kBAAc5C,IAAI0D,MAAMG,IAAIJ,uBAAuBC,KAAAA,CAAAA;EACrD,CAAA;AAEAhB,SAAOC,OAAO/E,UAAU;IACtBgG,MAAM,OAAOjB,YAAAA;AACXA,MAAAA,QACGmB,OAAO,CAACJ,UAAU,CAACd,cAAcmB,IAAIL,MAAMG,EAAE,CAAA,EAC7CrE,QAAQ,CAACkE,UAAAA;AACRd,sBAAc5C,IAAI0D,MAAMG,IAAIJ,uBAAuBC,KAAAA,CAAAA;MACrD,CAAA;IACJ;EACF,CAAA;AAEA9G,uBAAqBsC,KAAK,YAAY8D,mBAAmBjC,KAAI,GAAI5D,0BAAAA;AAEjE,SAAO,YAAA;AACL,UAAM+B,IAAI8B,QAAO;EACnB;AACF,CAAA;AAOF,IAAMkC,YAAY,CAACP,QAAiBqB,UAA4B;EAAEC,SAAS;EAAOd,cAAc;AAAM,MAAC;AACrG,SAAOR,OAAOuB,IAAI,CAACR,UAAAA;AAGjB,UAAM,EAAES,MAAMC,MAAK,IAAKV,MAAMW,SAASpB,KAAKtD,WAAW,CAAC;AACxD,UAAM2E,UAAUH,QAAQC,SAASA,MAAMG,QAAO,IAAKJ,KAAKI,QAAO;AAI/D,UAAMZ,WAAWD,MAAMW,SAASpB,KAAKU;AACrC,UAAMa,qBAAqBb,UAAUc,cAAcC,QAAQC,UAAUC,UAAUC,cAAAA,KAAmB;AAClG,UAAMtB,QAAQI,UAAUc,cAAcC,QAAQC,UAAUG;AAExD,UAAMtB,uBAAuBG,UAAUoB,sBAAsBF,cAAAA,KAAmB;AAChF,UAAMG,qBAAqBrB,UAAUsB,qBAAqBJ,cAAAA,KAAmB;AAE7E,WAAO;;MAELxB,KAAKK,MAAML,IAAIxE,SAAQ;MACvBsF,MAAMT,MAAMwB;MACZ9B,SAASM,MAAMN,QAAQ7C,IAAG,EAAGjC;MAC7BgF,SAASI,MAAMW,SAASc,GAAGC,aAAaC,gBAAe,EAAG/G;MAC1DgG;MACAf;;MAEAiB;MACAhB;MACAwB;;MAGAM,WACEC,KAAKC,IAAID,KAAKE,KAAKjC,uBAAuBgB,uBAAuBQ,qBAAqBR,mBAAiB,GAAK,CAAA,IAC5G,KACAkB,QAAQ,CAAA;IACZ;EACF,CAAA;AACF;;;AC5PA;;;;AAIA,YAAYC,qBAAqB;AACjC,YAAYC,gBAAgB;AAC5B,YAAYC,uBAAuB;AACnC,YAAYC,aAAY;AACxB,YAAYC,YAAY;AAExB,YAAYC,kBAAiB;AAG7B,SAASC,OAAAA,YAAW;;AAIpB,IAAMC,wBAAwB,IAAI,KAAK,KAAK;AAE5C,IAAMC,SAAgBC,cAAO;EAC3BC,MAAaC;EACbC,QAAeD;EACfE,SAAgBF;EAChBG,UAAiBC,gBAAgBC,aAAM;EACvCC,WAAkBF,gBAAgBC,aAAM;AAC1C,CAAA;AAQA,IAAME,YAAmBC,WAAG,WAAWC,QAAc;AACnD,QAAMC,aAAa,OAAkBpB;AAGrC,QAAMqB,aAAa,OAAcC,gBAAQ,MAAkBC,qBAAsB,2BAAA,CAAA;AACjF,MAAIF,cAAcA,WAAWG,YAAYC,KAAKC,IAAG,IAAKpB,uBAAuB;AAC3E,WAAOe,WAAWM;EACpB;AAGA,QAAMC,iBAAiBT,OAAOU,IAAI,mCAAA;AAClC,MAAID,gBAAgB;AAClB,UAAMD,OAAO,OAAyBE,sBAAI,iCAAiCD,cAAAA,EAAgB,EAAEE,KAC3FV,WAAWW,SACJC,gBAAQ,CAACC,QAAQA,IAAIC,IAAI,GACzBF,gBAAeG,qBAAc5B,MAAAA,CAAAA,CAAAA;AAItC,WAAce,gBAAQ,MACRc,qBAAQ,6BAA6B;MAC/CT;MACAH,WAAWC,KAAKC,IAAG;IACrB,CAAA,CAAA;AAGF,WAAOC;EACT;AACF,CAAA;AAGO,IAAMU,WACX,CAAClB,WACD,CAACmB,kBACQC,YAAI,aAAA;AACT,QAAMC,SAAS,OAAOvB,UAAUE,MAAAA;AAChC,MAAI,CAACqB,QAAQ;AACX;EACF;AAEAF,gBAAcG,QAAQ;IACpBhC,MAAM+B,OAAO/B;IACbE,QAAQ6B,OAAO7B;IACfC,SAAS4B,OAAO5B;IAChBC,UAAU2B,OAAO3B;IACjBG,WAAWwB,OAAOxB;EACpB,CAAA;AACF,CAAA,EAAGc,KACMY,gBAAwBC,qBAAK,GAC7BC,iBAAS,CAACC,QACRC,aAAK,MAAA;AACVzC,EAAAA,KAAI0C,MAAMF,KAAAA,QAAAA;;;;;;AACZ,CAAA,CAAA,CAAA;;;ACrFR;;kBAAAG;;AAIA,YAAYC,cAAc;AAC1B,YAAYC,aAAY;AACxB,YAAYC,WAAW;AACvB,YAAYC,cAAc;AAInB,IAAMC,YAAgCC,WAAG,WAAWC,eAAa;AACtE,MAAI,OAAOC,cAAc,eAAeA,UAAUC,SAASC,UAAU;AACnE,UAAMC,SAAgBC,YAAI,aAAA;AACxB,YAAMC,kBAAkB,OAAcC,mBAAW,MAAMN,UAAUC,QAAQC,SAAQ,CAAA;AACjFG,sBAAgBE,SAASR,cAAcS,QAAQC,MAAM,gBAAgBJ,gBAAgBE,KAAK;AAC1FF,sBAAgBK,SAASX,cAAcS,QAAQC,MAAM,gBAAgBJ,gBAAgBK,KAAK;IAC5F,CAAA;AAEA,UAAMC,QAAQR,OAAOS,KAAYC,eAAgBC,eAAeC,eAAM,CAAA,CAAA,CAAA,GAAaC,eAAO;AAC1F,WAAO,MAAaC,gBAAcC,gBAAUP,KAAAA,CAAAA;EAC9C;AACF,CAAA;",
6
+ "names": ["LogLevel", "shortLevelName", "CircularBuffer", "DEFAULT_BUFFER_SIZE", "MAX_CONTEXT_LENGTH", "LogBuffer", "_buffer", "size", "CircularBuffer", "logProcessor", "_config", "entry", "level", "LogLevel", "TRACE", "record", "t", "Date", "toISOString", "l", "shortLevelName", "m", "message", "meta", "f", "getRelativeFilename", "F", "n", "L", "error", "e", "stack", "context", "ctx", "Error", "json", "JSON", "stringify", "length", "slice", "c", "push", "elementCount", "serialize", "lines", "join", "filename", "match", "Array", "Effect", "Function", "SubscriptionList", "invariant", "log", "localForage", "log", "OBSERVABILITY_DISABLED_KEY", "OBSERVABILITY_GROUP_KEY", "showObservabilityBanner", "warn", "isObservabilityDisabled", "namespace", "getItem", "err", "catch", "storeObservabilityDisabled", "value", "setItem", "String", "getObservabilityGroup", "undefined", "storeObservabilityGroup", "ObservabilityImpl", "_initialized", "_extensions", "_dataProviders", "_subscriptions", "SubscriptionList", "initialize", "succeed", "undefined", "initializedExtensions", "gen", "extension", "push", "cleanups", "all", "map", "provider", "add", "filter", "cleanup", "pipe", "catchAll", "error", "log", "catch", "close", "clear", "length", "enable", "disable", "flush", "_addExtension", "invariant", "_addDataProvider", "dataProvider", "addDataProvider", "identify", "distinctId", "attributes", "setOnceAttributes", "alias", "previousId", "setTags", "tags", "kind", "apis", "some", "api", "processedTags", "Object", "fromEntries", "entries", "entry", "key", "value", "toString", "enabled", "every", "errors", "captureException", "_getExtensions", "events", "captureEvent", "event", "feedback", "captureUserFeedback", "form", "isAvailable", "available", "metrics", "gauge", "name", "increment", "distribution", "flatMap", "make", "addExtension", "_extension", "fn", "_observability", "observability", "defaultResource", "resourceFromAttributes", "ATTR_SERVICE_NAME", "ATTR_SERVICE_VERSION", "Effect", "Match", "Option", "Ref", "LogLevel", "log", "isNode", "isNonNullable", "Effect", "stubExtension", "initialize", "succeed", "undefined", "enable", "disable", "flush", "setTags", "enabled", "apis", "extensions", "fn", "serviceName", "serviceVersion", "environment", "config", "endpoint", "_endpoint", "headers", "_headers", "logs", "logsEnabled", "logLevel", "LogLevel", "INFO", "metrics", "metricsEnabled", "traces", "tracesEnabled", "OtelLogs", "promise", "OtelMetrics", "OtelTraces", "cachedDisabled", "isObservabilityDisabled", "enabledRef", "make", "tags", "Map", "isNode", "process", "env", "DX_OTEL_ENDPOINT", "buildSecrets", "OTEL_ENDPOINT", "values", "runtime", "app", "value", "pipe", "when", "fromNullable", "DX_OTEL_HEADERS", "OTEL_HEADERS", "exhaustive", "map", "raw", "parseHeaders", "getOrElse", "undefined", "log", "info", "stubExtension", "resource", "defaultResource", "merge", "resourceFromAttributes", "ATTR_SERVICE_NAME", "ATTR_SERVICE_VERSION", "getTags", "Object", "fromEntries", "initialize", "sync", "runtimeConfig", "processors", "push", "logProcessor", "start", "enable", "storeObservabilityDisabled", "update", "disable", "close", "flush", "setTags", "incomingTags", "key", "entries", "set", "enabled", "get", "runSync", "apis", "kind", "isAvailable", "succeed", "gauge", "name", "increment", "distribution", "filter", "isNonNullable", "unparsedHeaders", "split", "reduce", "acc", "header", "rest", "length", "trim", "toLowerCase", "join", "extensions", "Effect", "log", "uploadLogs", "body", "response", "fetch", "method", "headers", "ok", "log", "warn", "status", "undefined", "key", "json", "err", "error", "extensions", "fn", "config", "release", "environment", "posthog", "posthogConfig", "window", "stubExtension", "feedbackSurveyId", "get", "apiKey", "api_host", "info", "default", "promise", "logProcessor", "logBuffer", "LogBuffer", "feedbackSurveyAvailable", "checkFeedbackSurveyAvailable", "Promise", "resolve", "getSurveys", "surveys", "found", "some", "s", "id", "succeed", "initialize", "sync", "init", "mask_all_text", "capture_exceptions", "register", "runtimeConfig", "processors", "push", "close", "processor", "index", "indexOf", "splice", "enable", "opt_in_capturing", "disable", "opt_out_capturing", "identify", "distinctId", "attributes", "setOnceAttributes", "alias", "previousId", "setTags", "tags", "register_for_session", "enabled", "is_capturing", "apis", "kind", "isAvailable", "captureEvent", "event", "capture", "captureException", "captureUserFeedback", "form", "survey", "find", "questions", "length", "debugLogDumpKey", "includeLogs", "size", "serialize", "question", "$survey_id", "$survey_questions", "message", "debug_log_dump_key", "Effect", "Event", "scheduleTaskInterval", "DeviceKind", "Context", "invariant", "log", "ConnectionState", "Platform", "SPACE_METRICS_MIN_INTERVAL", "NETWORK_METRICS_MIN_INTERVAL", "RUNTIME_METRICS_MIN_INTERVAL", "identityProvider", "clientServices", "fn", "observability", "IdentityService", "queryIdentity", "subscribe", "idqr", "identity", "did", "identify", "setTags", "DevicesService", "queryDevices", "dqr", "devices", "length", "thisDevice", "find", "device", "kind", "CURRENT", "deviceKey", "truncate", "profile", "label", "deviceProfile", "networkMetricsProvider", "ctx", "lastNetworkStatus", "updateSignalMetrics", "debounce", "on", "signaling", "forEach", "server", "state", "metrics", "gauge", "swarmCount", "connectionStates", "Map", "set", "totalReadBufferSize", "totalWriteBufferSize", "totalChannelBufferSize", "connectionInfo", "conn", "connections", "get", "readBufferSize", "writeBufferSize", "stream", "streams", "NetworkService", "queryStatus", "networkStatus", "emit", "dispose", "runtimeMetricsProvider", "platform", "promise", "SystemService", "getPlatform", "platformType", "PLATFORM_TYPE", "type", "toLowerCase", "arch", "runtime", "name", "memory", "window", "performance", "totalJSHeapSize", "usedJSHeapSize", "jsHeapSizeLimit", "then", "rss", "heapTotal", "heapUsed", "catch", "error", "spacesMetricsProvider", "client", "spaces", "subscriptions", "onDispose", "subscription", "unsubscribe", "updateSpaceMetrics", "data", "mapSpaces", "truncateKeys", "members", "key", "objects", "epoch", "currentDataMutations", "subscribeToSpaceUpdate", "space", "pipeline", "next", "id", "filter", "has", "options", "verbose", "map", "open", "ready", "internal", "startup", "getTime", "startDataMutations", "currentEpoch", "subject", "assertion", "timeframe", "totalMessages", "number", "currentDataTimeframe", "totalDataMutations", "targetDataTimeframe", "isOpen", "db", "coreDatabase", "getAllObjectIds", "progress", "Math", "min", "abs", "toFixed", "FetchHttpClient", "HttpClient", "HttpClientRequest", "Effect", "Schema", "localForage", "log", "IP_DATA_CACHE_TIMEOUT", "IPData", "Struct", "city", "String", "region", "country", "latitude", "optional", "Number", "longitude", "getIPData", "fn", "config", "httpClient", "cachedData", "promise", "getItem", "timestamp", "Date", "now", "data", "IPDATA_API_KEY", "get", "pipe", "execute", "flatMap", "res", "json", "decodeUnknown", "setItem", "provider", "observability", "gen", "ipData", "setTags", "provide", "layer", "catchAll", "err", "sync", "catch", "provider", "Duration", "Effect", "Fiber", "Schedule", "provider", "fn", "observability", "navigator", "storage", "estimate", "action", "gen", "storageEstimate", "tryPromise", "usage", "metrics", "gauge", "quota", "fiber", "pipe", "repeat", "fixed", "hours", "runFork", "runSync", "interrupt"]
7
7
  }
@@ -0,0 +1,45 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/extensions/posthog/log-processor.ts
4
+ import posthog from "posthog-js";
5
+ import { InvariantViolation } from "@dxos/invariant";
6
+ import { LogLevel, shouldLog } from "@dxos/log";
7
+ var logProcessor = (config, entry) => {
8
+ if (!shouldLog(entry, config.captureFilters) || entry.meta?.S?.remoteSessionId) {
9
+ return;
10
+ }
11
+ let capturedError = entry.error;
12
+ if (capturedError == null && entry.level === LogLevel.ERROR) {
13
+ capturedError = Object.values(entry.context ?? {}).find((v) => v instanceof Error);
14
+ }
15
+ if (!capturedError) {
16
+ return;
17
+ }
18
+ const additionalProperties = {};
19
+ if (entry.meta) {
20
+ additionalProperties.transaction = `${getRelativeFilename(entry.meta.F)}:${entry.meta.L}`;
21
+ if (entry.meta.S?.hostSessionId) {
22
+ additionalProperties.service_host_issue = true;
23
+ additionalProperties.service_host_session = entry.meta.S?.hostSessionId;
24
+ }
25
+ if (entry.meta.S?.uptimeSeconds != null) {
26
+ additionalProperties.uptime_seconds = entry.meta.S.uptimeSeconds;
27
+ }
28
+ }
29
+ if (capturedError instanceof InvariantViolation) {
30
+ additionalProperties.invariant_violation = true;
31
+ }
32
+ posthog.captureException(capturedError, additionalProperties);
33
+ };
34
+ var getRelativeFilename = (filename) => {
35
+ const match = filename.match(/.+\/(packages\/.+\/.+)/);
36
+ if (match) {
37
+ const [, filePath] = match;
38
+ return filePath;
39
+ }
40
+ return filename;
41
+ };
42
+ export {
43
+ logProcessor
44
+ };
45
+ //# sourceMappingURL=log-processor-FDLTDQEM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extensions/posthog/log-processor.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport posthog from 'posthog-js';\n\nimport { InvariantViolation } from '@dxos/invariant';\nimport { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shouldLog } from '@dxos/log';\n\nexport const logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n // Don't forward logs from remote sessions.\n if (!shouldLog(entry, config.captureFilters) || entry.meta?.S?.remoteSessionId) {\n return;\n }\n\n let capturedError = entry.error;\n if (capturedError == null && entry.level === LogLevel.ERROR) {\n capturedError = Object.values(entry.context ?? {}).find((v): v is Error => v instanceof Error);\n }\n\n if (!capturedError) {\n return;\n }\n\n const additionalProperties: Record<string, string | boolean | number> = {};\n if (entry.meta) {\n additionalProperties.transaction = `${getRelativeFilename(entry.meta.F)}:${entry.meta.L}`;\n if (entry.meta.S?.hostSessionId) {\n additionalProperties.service_host_issue = true;\n additionalProperties.service_host_session = entry.meta.S?.hostSessionId;\n }\n if (entry.meta.S?.uptimeSeconds != null) {\n additionalProperties.uptime_seconds = entry.meta.S.uptimeSeconds;\n }\n }\n\n if (capturedError instanceof InvariantViolation) {\n additionalProperties.invariant_violation = true;\n }\n\n posthog.captureException(capturedError, additionalProperties);\n};\n\nconst getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n"],
5
+ "mappings": ";;;AAIA,OAAOA,aAAa;AAEpB,SAASC,0BAA0B;AACnC,SAAwCC,UAA6BC,iBAAiB;AAE/E,IAAMC,eAA6B,CAACC,QAAmBC,UAAAA;AAE5D,MAAI,CAACC,UAAUD,OAAOD,OAAOG,cAAc,KAAKF,MAAMG,MAAMC,GAAGC,iBAAiB;AAC9E;EACF;AAEA,MAAIC,gBAAgBN,MAAMO;AAC1B,MAAID,iBAAiB,QAAQN,MAAMQ,UAAUC,SAASC,OAAO;AAC3DJ,oBAAgBK,OAAOC,OAAOZ,MAAMa,WAAW,CAAC,CAAA,EAAGC,KAAK,CAACC,MAAkBA,aAAaC,KAAAA;EAC1F;AAEA,MAAI,CAACV,eAAe;AAClB;EACF;AAEA,QAAMW,uBAAkE,CAAC;AACzE,MAAIjB,MAAMG,MAAM;AACdc,yBAAqBC,cAAc,GAAGC,oBAAoBnB,MAAMG,KAAKiB,CAAC,CAAA,IAAKpB,MAAMG,KAAKkB,CAAC;AACvF,QAAIrB,MAAMG,KAAKC,GAAGkB,eAAe;AAC/BL,2BAAqBM,qBAAqB;AAC1CN,2BAAqBO,uBAAuBxB,MAAMG,KAAKC,GAAGkB;IAC5D;AACA,QAAItB,MAAMG,KAAKC,GAAGqB,iBAAiB,MAAM;AACvCR,2BAAqBS,iBAAiB1B,MAAMG,KAAKC,EAAEqB;IACrD;EACF;AAEA,MAAInB,yBAAyBqB,oBAAoB;AAC/CV,yBAAqBW,sBAAsB;EAC7C;AAEAC,UAAQC,iBAAiBxB,eAAeW,oBAAAA;AAC1C;AAEA,IAAME,sBAAsB,CAACY,aAAAA;AAG3B,QAAMC,QAAQD,SAASC,MAAM,wBAAA;AAC7B,MAAIA,OAAO;AACT,UAAM,CAAA,EAAGC,QAAAA,IAAYD;AACrB,WAAOC;EACT;AAEA,SAAOF;AACT;",
6
+ "names": ["posthog", "InvariantViolation", "LogLevel", "shouldLog", "logProcessor", "config", "entry", "shouldLog", "captureFilters", "meta", "S", "remoteSessionId", "capturedError", "error", "level", "LogLevel", "ERROR", "Object", "values", "context", "find", "v", "Error", "additionalProperties", "transaction", "getRelativeFilename", "F", "L", "hostSessionId", "service_host_issue", "service_host_session", "uptimeSeconds", "uptime_seconds", "InvariantViolation", "invariant_violation", "posthog", "captureException", "filename", "match", "filePath"]
7
+ }
@@ -0,0 +1,113 @@
1
+ import {
2
+ setDiagLogger
3
+ } from "./chunk-K4VFBKST.mjs";
4
+ import "./chunk-J5LGTIGS.mjs";
5
+
6
+ // src/extensions/otel/logs.ts
7
+ import { SeverityNumber } from "@opentelemetry/api-logs";
8
+ import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
9
+ import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
10
+ import { ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
11
+ import { LogLevel, getContextFromEntry, getRelativeFilename } from "@dxos/log";
12
+ var FLATTEN_DEPTH = 1;
13
+ var OtelLogs = class {
14
+ options;
15
+ _loggerProvider;
16
+ constructor(options) {
17
+ this.options = options;
18
+ setDiagLogger(options.consoleDiagLogLevel);
19
+ const logExporter = new OTLPLogExporter({
20
+ url: this.options.endpoint + "/v1/logs",
21
+ headers: this.options.headers,
22
+ concurrencyLimit: 10
23
+ });
24
+ this._loggerProvider = new LoggerProvider({
25
+ resource: this.options.resource,
26
+ processors: [
27
+ new BatchLogRecordProcessor(logExporter)
28
+ ]
29
+ });
30
+ }
31
+ logProcessor = (_config, entry) => {
32
+ const logger = this._loggerProvider.getLogger("dxos-observability", this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString());
33
+ if (entry.level < this.options.logLevel || !this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId) {
34
+ return;
35
+ }
36
+ const attributes = {
37
+ ...this.options.getTags(),
38
+ ...entry.meta ? {
39
+ meta: {
40
+ file: getRelativeFilename(entry.meta.F),
41
+ line: entry.meta.L
42
+ }
43
+ } : {},
44
+ ...entry.error ? {
45
+ error: entry.error.stack
46
+ } : {},
47
+ ...stringifyValues(getContextFromEntry(entry), "ctx_")
48
+ };
49
+ logger.emit({
50
+ severityNumber: convertLevel(entry.level),
51
+ body: entry.message,
52
+ attributes
53
+ });
54
+ };
55
+ flush() {
56
+ return this._loggerProvider.forceFlush();
57
+ }
58
+ close() {
59
+ return this._loggerProvider.shutdown();
60
+ }
61
+ };
62
+ var convertLevel = (level) => {
63
+ switch (level) {
64
+ case LogLevel.DEBUG:
65
+ return SeverityNumber.DEBUG;
66
+ case LogLevel.VERBOSE:
67
+ return SeverityNumber.INFO;
68
+ case LogLevel.INFO:
69
+ return SeverityNumber.INFO;
70
+ case LogLevel.WARN:
71
+ return SeverityNumber.WARN;
72
+ case LogLevel.ERROR:
73
+ return SeverityNumber.ERROR;
74
+ default:
75
+ return SeverityNumber.ERROR;
76
+ }
77
+ };
78
+ var safeStringify = (value) => {
79
+ try {
80
+ return JSON.stringify(value);
81
+ } catch {
82
+ return "[Circular]";
83
+ }
84
+ };
85
+ var stringifyValues = (object, keyPrefix, depth = 1) => {
86
+ if (!object) {
87
+ return {};
88
+ }
89
+ const result = {};
90
+ for (const [key, value] of Object.entries(object)) {
91
+ if (value === void 0) {
92
+ continue;
93
+ }
94
+ const newKey = keyPrefix ? `${keyPrefix}${key}` : key;
95
+ if (typeof value === "object") {
96
+ if (!value || Array.isArray(value) || depth > FLATTEN_DEPTH) {
97
+ result[newKey] = safeStringify(value);
98
+ } else {
99
+ const flattened = stringifyValues(value, `${newKey}_`, depth + 1);
100
+ for (const [flattenedKey, flattenedValue] of Object.entries(flattened)) {
101
+ result[flattenedKey] = flattenedValue;
102
+ }
103
+ }
104
+ } else {
105
+ result[newKey] = String(value);
106
+ }
107
+ }
108
+ return result;
109
+ };
110
+ export {
111
+ OtelLogs
112
+ };
113
+ //# sourceMappingURL=logs-ATTRIUTL.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extensions/otel/logs.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport {\n type LogConfig,\n type LogEntry,\n LogLevel,\n type LogProcessor,\n getContextFromEntry,\n getRelativeFilename,\n} from '@dxos/log';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nconst FLATTEN_DEPTH = 1;\n\nexport type OtelLogOptions = OtelOptions & {\n logLevel: LogLevel;\n /**\n * Include logs forwarded from the shared worker via LoggingService.\n *\n * @deprecated\n */\n includeSharedWorkerLogs?: boolean;\n};\n\nexport class OtelLogs {\n private _loggerProvider: LoggerProvider;\n constructor(private readonly options: OtelLogOptions) {\n setDiagLogger(options.consoleDiagLogLevel);\n const logExporter = new OTLPLogExporter({\n url: this.options.endpoint + '/v1/logs',\n headers: this.options.headers,\n concurrencyLimit: 10, // an optional limit on pending requests\n });\n this._loggerProvider = new LoggerProvider({\n resource: this.options.resource,\n processors: [new BatchLogRecordProcessor(logExporter)],\n });\n }\n\n public readonly logProcessor: LogProcessor = (_config: LogConfig, entry: LogEntry) => {\n const logger = this._loggerProvider.getLogger(\n 'dxos-observability',\n this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString(),\n );\n\n if (\n entry.level < this.options.logLevel ||\n (!this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId)\n ) {\n return;\n }\n\n const attributes = {\n ...this.options.getTags(),\n ...(entry.meta ? { meta: { file: getRelativeFilename(entry.meta.F), line: entry.meta.L } } : {}),\n ...(entry.error ? { error: entry.error.stack } : {}),\n ...stringifyValues(getContextFromEntry(entry), 'ctx_'),\n };\n\n logger.emit({\n severityNumber: convertLevel(entry.level),\n body: entry.message,\n attributes,\n });\n };\n\n flush(): Promise<void> {\n return this._loggerProvider.forceFlush();\n }\n\n close(): Promise<void> {\n return this._loggerProvider.shutdown();\n }\n}\n\nconst convertLevel = (level: LogLevel): SeverityNumber => {\n switch (level) {\n case LogLevel.DEBUG:\n return SeverityNumber.DEBUG;\n case LogLevel.VERBOSE:\n return SeverityNumber.INFO;\n case LogLevel.INFO:\n return SeverityNumber.INFO;\n case LogLevel.WARN:\n return SeverityNumber.WARN;\n case LogLevel.ERROR:\n return SeverityNumber.ERROR;\n default:\n return SeverityNumber.ERROR;\n }\n};\n\nconst safeStringify = (value: unknown): string => {\n try {\n return JSON.stringify(value);\n } catch {\n return '[Circular]';\n }\n};\n\n// TODO(wittjosiah): Reconcile logging utils w/ EDGE.\nconst stringifyValues = (object: object | undefined, keyPrefix?: string, depth: number = 1) => {\n if (!object) {\n return {};\n }\n const result: Record<string, string> = {};\n for (const [key, value] of Object.entries(object)) {\n if (value === undefined) {\n continue;\n }\n const newKey = keyPrefix ? `${keyPrefix}${key}` : key;\n if (typeof value === 'object') {\n if (!value || Array.isArray(value) || depth > FLATTEN_DEPTH) {\n result[newKey] = safeStringify(value);\n } else {\n const flattened = stringifyValues(value, `${newKey}_`, depth + 1);\n for (const [flattenedKey, flattenedValue] of Object.entries(flattened)) {\n result[flattenedKey] = flattenedValue;\n }\n }\n } else {\n result[newKey] = String(value);\n }\n }\n return result;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["SeverityNumber", "OTLPLogExporter", "BatchLogRecordProcessor", "LoggerProvider", "ATTR_SERVICE_VERSION", "LogLevel", "getContextFromEntry", "getRelativeFilename", "FLATTEN_DEPTH", "OtelLogs", "_loggerProvider", "options", "setDiagLogger", "consoleDiagLogLevel", "logExporter", "OTLPLogExporter", "url", "endpoint", "headers", "concurrencyLimit", "LoggerProvider", "resource", "processors", "BatchLogRecordProcessor", "logProcessor", "_config", "entry", "logger", "getLogger", "attributes", "ATTR_SERVICE_VERSION", "toString", "level", "logLevel", "includeSharedWorkerLogs", "meta", "S", "remoteSessionId", "getTags", "file", "getRelativeFilename", "F", "line", "L", "error", "stack", "stringifyValues", "getContextFromEntry", "emit", "severityNumber", "convertLevel", "body", "message", "flush", "forceFlush", "close", "shutdown", "LogLevel", "DEBUG", "SeverityNumber", "VERBOSE", "INFO", "WARN", "ERROR", "safeStringify", "value", "JSON", "stringify", "object", "keyPrefix", "depth", "result", "key", "Object", "entries", "undefined", "newKey", "Array", "isArray", "flattened", "flattenedKey", "flattenedValue", "String"]
7
+ }
@@ -1 +1 @@
1
- {"inputs":{"packages/sdk/observability/src/cli-observability-secrets.json":{"bytes":593,"imports":[]},"packages/sdk/observability/src/segment/types.ts":{"bytes":2527,"imports":[],"format":"esm"},"packages/sdk/observability/src/segment/base.ts":{"bytes":5286,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/segment/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/sdk/observability/src/sentry/browser.ts":{"bytes":15809,"imports":[{"path":"@sentry/browser","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@sentry/browser","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/sentry/types.ts":{"bytes":1037,"imports":[],"format":"esm"},"packages/sdk/observability/src/sentry/index.ts":{"bytes":546,"imports":[{"path":"packages/sdk/observability/src/sentry/browser.ts","kind":"import-statement","original":"./node"},{"path":"packages/sdk/observability/src/sentry/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/sdk/observability/src/segment/browser.ts":{"bytes":7594,"imports":[{"path":"@segment/snippet","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/segment/base.ts","kind":"import-statement","original":"./base"},{"path":"packages/sdk/observability/src/sentry/index.ts","kind":"import-statement","original":"../sentry"}],"format":"esm"},"packages/sdk/observability/src/segment/index.ts":{"bytes":547,"imports":[{"path":"packages/sdk/observability/src/segment/browser.ts","kind":"import-statement","original":"./node"},{"path":"packages/sdk/observability/src/segment/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/sdk/observability/src/otel/otel.ts":{"bytes":1920,"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/otel/logs.ts":{"bytes":10977,"imports":[{"path":"@opentelemetry/api-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-logs-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/otel/otel.ts","kind":"import-statement","original":"./otel"}],"format":"esm"},"packages/sdk/observability/src/otel/metrics.ts":{"bytes":14198,"imports":[{"path":"@opentelemetry/exporter-metrics-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-metrics","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/otel/otel.ts","kind":"import-statement","original":"./otel"}],"format":"esm"},"packages/sdk/observability/src/otel/traces-browser.ts":{"bytes":8216,"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/auto-instrumentations-web","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-trace-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/instrumentation","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-base","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-web","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/otel/index.ts":{"bytes":712,"imports":[{"path":"packages/sdk/observability/src/otel/otel.ts","kind":"import-statement","original":"./otel"},{"path":"packages/sdk/observability/src/otel/logs.ts","kind":"import-statement","original":"./logs"},{"path":"packages/sdk/observability/src/otel/metrics.ts","kind":"import-statement","original":"./metrics"},{"path":"packages/sdk/observability/src/otel/traces-browser.ts","kind":"import-statement","original":"./traces"}],"format":"esm"},"packages/sdk/observability/src/sentry/sentry-log-processor.ts":{"bytes":19452,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/sentry/browser.ts","kind":"import-statement","original":"./node"}],"format":"esm"},"packages/sdk/observability/src/observability.ts":{"bytes":76925,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/cli-observability-secrets.json","kind":"import-statement","original":"./cli-observability-secrets.json"},{"path":"packages/sdk/observability/src/helpers/index.ts","kind":"import-statement","original":"./helpers"},{"path":"packages/sdk/observability/src/segment/index.ts","kind":"import-statement","original":"./segment"},{"path":"packages/sdk/observability/src/otel/index.ts","kind":"dynamic-import","original":"./otel"},{"path":"packages/sdk/observability/src/otel/index.ts","kind":"dynamic-import","original":"./otel"},{"path":"packages/sdk/observability/src/segment/index.ts","kind":"dynamic-import","original":"./segment"},{"path":"packages/sdk/observability/src/sentry/index.ts","kind":"dynamic-import","original":"./sentry"},{"path":"packages/sdk/observability/src/sentry/sentry-log-processor.ts","kind":"dynamic-import","original":"./sentry/sentry-log-processor"},{"path":"packages/sdk/observability/src/otel/index.ts","kind":"dynamic-import","original":"./otel"}],"format":"esm"},"packages/sdk/observability/src/helpers/browser-observability.ts":{"bytes":20102,"imports":[{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/observability.ts","kind":"dynamic-import","original":"../observability"}],"format":"esm"},"packages/sdk/observability/src/helpers/common.ts":{"bytes":3134,"imports":[],"format":"esm"},"packages/sdk/observability/src/helpers/node-observability.ts":{"bytes":14188,"imports":[{"path":"js-yaml","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs/promises","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"uuid","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/observability.ts","kind":"import-statement","original":"../observability"}],"format":"esm"},"packages/sdk/observability/src/helpers/map-spaces.ts":{"bytes":6377,"imports":[],"format":"esm"},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytes":10352,"imports":[{"path":"packages/sdk/observability/src/helpers/common.ts","kind":"import-statement","original":"./common"}],"format":"esm"},"packages/sdk/observability/src/helpers/index.ts":{"bytes":930,"imports":[{"path":"packages/sdk/observability/src/helpers/browser-observability.ts","kind":"import-statement","original":"./browser-observability"},{"path":"packages/sdk/observability/src/helpers/common.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/observability/src/helpers/node-observability.ts","kind":"import-statement","original":"./node-observability"},{"path":"packages/sdk/observability/src/helpers/map-spaces.ts","kind":"import-statement","original":"./map-spaces"},{"path":"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts","kind":"import-statement","original":"./setup-telemetry-listeners"}],"format":"esm"},"packages/sdk/observability/src/index.ts":{"bytes":566,"imports":[{"path":"packages/sdk/observability/src/helpers/index.ts","kind":"import-statement","original":"./helpers"},{"path":"packages/sdk/observability/src/observability.ts","kind":"import-statement","original":"./observability"}],"format":"esm"}},"outputs":{"packages/sdk/observability/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-YQJELTRP.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-G6EE7HFV.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-KDP3SESE.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-JA5VJRKF.mjs","kind":"import-statement"}],"exports":["OBSERVABILITY_DISABLED_KEY","OBSERVABILITY_GROUP_KEY","Observability","getObservabilityGroup","getObservabilityState","getTelemetryIdentifier","getTelemetryIdentity","initializeAppObservability","initializeNodeObservability","isObservabilityDisabled","mapSpaces","setupTelemetryListeners","showObservabilityBanner","storeObservabilityDisabled","storeObservabilityGroup"],"entryPoint":"packages/sdk/observability/src/index.ts","inputs":{"packages/sdk/observability/src/index.ts":{"bytesInOutput":0}},"bytes":950},"packages/sdk/observability/dist/lib/browser/segment/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/segment/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-G6EE7HFV.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-KDP3SESE.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-JA5VJRKF.mjs","kind":"import-statement"}],"exports":["SegmentTelemetry","TelemetryEvent"],"entryPoint":"packages/sdk/observability/src/segment/index.ts","inputs":{},"bytes":226},"packages/sdk/observability/dist/lib/browser/sentry/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/sentry/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-KDP3SESE.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-JA5VJRKF.mjs","kind":"import-statement"}],"exports":["addBreadcrumb","captureException","captureMessage","captureUserFeedback","init","setTag","setTags","setUser","withScope"],"entryPoint":"packages/sdk/observability/src/sentry/index.ts","inputs":{},"bytes":380},"packages/sdk/observability/dist/lib/browser/otel-LHAFLNBQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18016},"packages/sdk/observability/dist/lib/browser/otel-LHAFLNBQ.mjs":{"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/api-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-logs-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-metrics-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-metrics","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/auto-instrumentations-web","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-trace-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/instrumentation","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-base","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-web","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true}],"exports":["OtelLogs","OtelMetrics","OtelTraces","setDiagLogger"],"entryPoint":"packages/sdk/observability/src/otel/index.ts","inputs":{"packages/sdk/observability/src/otel/otel.ts":{"bytesInOutput":229},"packages/sdk/observability/src/otel/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/otel/logs.ts":{"bytesInOutput":2448},"packages/sdk/observability/src/otel/metrics.ts":{"bytesInOutput":3528},"packages/sdk/observability/src/otel/traces-browser.ts":{"bytesInOutput":2328}},"bytes":8849},"packages/sdk/observability/dist/lib/browser/sentry-log-processor-625AISXI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10071},"packages/sdk/observability/dist/lib/browser/sentry-log-processor-625AISXI.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-JA5VJRKF.mjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["SentryLogProcessor"],"entryPoint":"packages/sdk/observability/src/sentry/sentry-log-processor.ts","inputs":{"packages/sdk/observability/src/sentry/sentry-log-processor.ts":{"bytesInOutput":4634}},"bytes":4882},"packages/sdk/observability/dist/lib/browser/observability-HDE3I7TA.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/observability-HDE3I7TA.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-YQJELTRP.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-G6EE7HFV.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-KDP3SESE.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-JA5VJRKF.mjs","kind":"import-statement"}],"exports":["Observability"],"entryPoint":"packages/sdk/observability/src/observability.ts","inputs":{},"bytes":229},"packages/sdk/observability/dist/lib/browser/chunk-YQJELTRP.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":64517},"packages/sdk/observability/dist/lib/browser/chunk-YQJELTRP.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-G6EE7HFV.mjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/dist/lib/browser/observability-HDE3I7TA.mjs","kind":"dynamic-import"},{"path":"js-yaml","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs/promises","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"uuid","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/dist/lib/browser/otel-LHAFLNBQ.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/browser/otel-LHAFLNBQ.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/browser/segment/index.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/browser/sentry/index.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/browser/sentry-log-processor-625AISXI.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/browser/otel-LHAFLNBQ.mjs","kind":"dynamic-import"}],"exports":["OBSERVABILITY_DISABLED_KEY","OBSERVABILITY_GROUP_KEY","Observability","getObservabilityGroup","getObservabilityState","getTelemetryIdentifier","getTelemetryIdentity","initializeAppObservability","initializeNodeObservability","isObservabilityDisabled","mapSpaces","setupTelemetryListeners","showObservabilityBanner","storeObservabilityDisabled","storeObservabilityGroup"],"inputs":{"packages/sdk/observability/src/observability.ts":{"bytesInOutput":19467},"packages/sdk/observability/src/cli-observability-secrets.json":{"bytesInOutput":625},"packages/sdk/observability/src/helpers/browser-observability.ts":{"bytesInOutput":5045},"packages/sdk/observability/src/helpers/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/helpers/common.ts":{"bytesInOutput":324},"packages/sdk/observability/src/helpers/node-observability.ts":{"bytesInOutput":3445},"packages/sdk/observability/src/helpers/map-spaces.ts":{"bytesInOutput":1192},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytesInOutput":2542}},"bytes":33624},"packages/sdk/observability/dist/lib/browser/chunk-G6EE7HFV.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7711},"packages/sdk/observability/dist/lib/browser/chunk-G6EE7HFV.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-JA5VJRKF.mjs","kind":"import-statement"},{"path":"@segment/snippet","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["SegmentTelemetry","TelemetryEvent"],"inputs":{"packages/sdk/observability/src/segment/browser.ts":{"bytesInOutput":1959},"packages/sdk/observability/src/segment/base.ts":{"bytesInOutput":1096},"packages/sdk/observability/src/segment/types.ts":{"bytesInOutput":180},"packages/sdk/observability/src/segment/index.ts":{"bytesInOutput":0}},"bytes":3650},"packages/sdk/observability/dist/lib/browser/chunk-KDP3SESE.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/chunk-KDP3SESE.mjs":{"imports":[],"exports":[],"inputs":{"packages/sdk/observability/src/sentry/index.ts":{"bytesInOutput":0}},"bytes":44},"packages/sdk/observability/dist/lib/browser/chunk-JA5VJRKF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7321},"packages/sdk/observability/dist/lib/browser/chunk-JA5VJRKF.mjs":{"imports":[{"path":"@sentry/browser","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@sentry/browser","kind":"import-statement","external":true}],"exports":["addBreadcrumb","captureException","captureMessage","captureUserFeedback","init","setTag","setTags","setUser","withScope"],"inputs":{"packages/sdk/observability/src/sentry/browser.ts":{"bytesInOutput":4076}},"bytes":4326}}}
1
+ {"inputs":{"src/log-buffer.ts":{"bytes":8585,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/storage/browser.ts":{"bytes":7285,"imports":[{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/storage/index.ts":{"bytes":453,"imports":[{"path":"src/storage/browser.ts","kind":"import-statement","original":"./node"}],"format":"esm"},"src/observability.ts":{"bytes":28997,"imports":[{"path":"effect/Array","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Function","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/storage/index.ts","kind":"import-statement","original":"./storage"}],"format":"esm"},"src/cli-observability-secrets.json":{"bytes":246,"imports":[]},"src/extensions/stub.ts":{"bytes":1776,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true}],"format":"esm"},"src/extensions/otel/otel.ts":{"bytes":1710,"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true}],"format":"esm"},"src/extensions/otel/logs.ts":{"bytes":13603,"imports":[{"path":"@opentelemetry/api-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-logs-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/extensions/otel/otel.ts","kind":"import-statement","original":"./otel"}],"format":"esm"},"src/extensions/otel/metrics.ts":{"bytes":12316,"imports":[{"path":"@opentelemetry/exporter-metrics-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-metrics","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"src/extensions/otel/otel.ts","kind":"import-statement","original":"./otel"}],"format":"esm"},"src/extensions/otel/traces-browser.ts":{"bytes":6737,"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/auto-instrumentations-web","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-trace-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/instrumentation","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-base","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-web","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"src/extensions/otel/extension.ts":{"bytes":20276,"imports":[{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Match","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"effect/Ref","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/cli-observability-secrets.json","kind":"import-statement","original":"../../cli-observability-secrets.json"},{"path":"src/storage/index.ts","kind":"import-statement","original":"../../storage"},{"path":"src/extensions/stub.ts","kind":"import-statement","original":"../stub"},{"path":"src/extensions/otel/logs.ts","kind":"dynamic-import","original":"./logs"},{"path":"src/extensions/otel/metrics.ts","kind":"dynamic-import","original":"./metrics"},{"path":"src/extensions/otel/traces-browser.ts","kind":"dynamic-import","original":"./traces"}],"format":"esm"},"src/extensions/otel/index.ts":{"bytes":474,"imports":[{"path":"src/extensions/otel/extension.ts","kind":"import-statement","original":"./extension"}],"format":"esm"},"src/extensions/posthog/log-processor.ts":{"bytes":6561,"imports":[{"path":"posthog-js","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/extensions/posthog/extension.ts":{"bytes":21654,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/log-buffer.ts","kind":"import-statement","original":"../../log-buffer"},{"path":"src/extensions/stub.ts","kind":"import-statement","original":"../stub"},{"path":"posthog-js","kind":"dynamic-import","external":true},{"path":"src/extensions/posthog/log-processor.ts","kind":"dynamic-import","original":"./log-processor"}],"format":"esm"},"src/extensions/posthog/index.ts":{"bytes":477,"imports":[{"path":"src/extensions/posthog/extension.ts","kind":"import-statement","original":"./extension"}],"format":"esm"},"src/extensions/index.ts":{"bytes":650,"imports":[{"path":"src/extensions/otel/index.ts","kind":"import-statement","original":"./otel"},{"path":"src/extensions/posthog/index.ts","kind":"import-statement","original":"./posthog"}],"format":"esm"},"src/observability-extension.ts":{"bytes":4133,"imports":[{"path":"src/extensions/index.ts","kind":"import-statement","original":"./extensions"}],"format":"esm"},"src/providers/client-observability.ts":{"bytes":35893,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"format":"esm"},"src/providers/ip-data.ts":{"bytes":8948,"imports":[{"path":"@effect/platform/FetchHttpClient","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClient","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClientRequest","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/providers/storage.ts":{"bytes":3607,"imports":[{"path":"effect/Duration","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Fiber","kind":"import-statement","external":true},{"path":"effect/Schedule","kind":"import-statement","external":true}],"format":"esm"},"src/providers/index.ts":{"bytes":840,"imports":[{"path":"src/providers/client-observability.ts","kind":"import-statement","original":"./client-observability"},{"path":"src/providers/ip-data.ts","kind":"import-statement","original":"./ip-data"},{"path":"src/providers/storage.ts","kind":"import-statement","original":"./storage"}],"format":"esm"},"src/index.ts":{"bytes":1092,"imports":[{"path":"src/log-buffer.ts","kind":"import-statement","original":"./log-buffer"},{"path":"src/observability.ts","kind":"import-statement","original":"./observability"},{"path":"src/observability-extension.ts","kind":"import-statement","original":"./observability-extension"},{"path":"src/providers/index.ts","kind":"import-statement","original":"./providers"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":72117},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"effect/Array","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Function","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Match","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"effect/Ref","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"dist/lib/browser/logs-ATTRIUTL.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/metrics-PKTV6IGF.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/traces-browser-XYXBF5ZX.mjs","kind":"dynamic-import"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"posthog-js","kind":"dynamic-import","external":true},{"path":"dist/lib/browser/log-processor-FDLTDQEM.mjs","kind":"dynamic-import"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@effect/platform/FetchHttpClient","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClient","kind":"import-statement","external":true},{"path":"@effect/platform/HttpClientRequest","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect/Duration","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Fiber","kind":"import-statement","external":true},{"path":"effect/Schedule","kind":"import-statement","external":true}],"exports":["LogBuffer","Observability","ObservabilityExtension","ObservabilityProvider"],"entryPoint":"src/index.ts","inputs":{"src/log-buffer.ts":{"bytesInOutput":1781},"src/index.ts":{"bytesInOutput":0},"src/observability.ts":{"bytesInOutput":7711},"src/storage/browser.ts":{"bytesInOutput":1838},"src/observability-extension.ts":{"bytesInOutput":151},"src/extensions/otel/index.ts":{"bytesInOutput":83},"src/extensions/otel/extension.ts":{"bytesInOutput":4856},"src/cli-observability-secrets.json":{"bytesInOutput":280},"src/extensions/stub.ts":{"bytesInOutput":311},"src/extensions/index.ts":{"bytesInOutput":0},"src/extensions/posthog/index.ts":{"bytesInOutput":90},"src/extensions/posthog/extension.ts":{"bytesInOutput":5581},"src/providers/index.ts":{"bytesInOutput":174},"src/providers/client-observability.ts":{"bytesInOutput":8756},"src/providers/ip-data.ts":{"bytesInOutput":2095},"src/providers/storage.ts":{"bytesInOutput":895}},"bytes":35371},"dist/lib/browser/logs-ATTRIUTL.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7265},"dist/lib/browser/logs-ATTRIUTL.mjs":{"imports":[{"path":"dist/lib/browser/chunk-K4VFBKST.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@opentelemetry/api-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-logs-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["OtelLogs"],"entryPoint":"src/extensions/otel/logs.ts","inputs":{"src/extensions/otel/logs.ts":{"bytesInOutput":3076}},"bytes":3261},"dist/lib/browser/metrics-PKTV6IGF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6100},"dist/lib/browser/metrics-PKTV6IGF.mjs":{"imports":[{"path":"dist/lib/browser/chunk-K4VFBKST.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@opentelemetry/exporter-metrics-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-metrics","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true}],"exports":["OtelMetrics"],"entryPoint":"src/extensions/otel/metrics.ts","inputs":{"src/extensions/otel/metrics.ts":{"bytesInOutput":3058}},"bytes":3252},"dist/lib/browser/chunk-K4VFBKST.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1010},"dist/lib/browser/chunk-K4VFBKST.mjs":{"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true}],"exports":["setDiagLogger"],"inputs":{"src/extensions/otel/otel.ts":{"bytesInOutput":229}},"bytes":333},"dist/lib/browser/traces-browser-XYXBF5ZX.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3273},"dist/lib/browser/traces-browser-XYXBF5ZX.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/auto-instrumentations-web","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-trace-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/instrumentation","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-base","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-web","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true}],"exports":["OtelTraces"],"entryPoint":"src/extensions/otel/traces-browser.ts","inputs":{"src/extensions/otel/traces-browser.ts":{"bytesInOutput":1878}},"bytes":2029},"dist/lib/browser/log-processor-FDLTDQEM.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3467},"dist/lib/browser/log-processor-FDLTDQEM.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"posthog-js","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["logProcessor"],"entryPoint":"src/extensions/posthog/log-processor.ts","inputs":{"src/extensions/posthog/log-processor.ts":{"bytesInOutput":1338}},"bytes":1492},"dist/lib/browser/chunk-J5LGTIGS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/chunk-J5LGTIGS.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":235}}}