@openobserve/browser-core 0.3.3 → 0.4.0-beta.1

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 (863) hide show
  1. package/README.md +1 -1
  2. package/cjs/boot/displayAlreadyInitializedError.js +6 -7
  3. package/cjs/boot/displayAlreadyInitializedError.js.map +1 -1
  4. package/cjs/boot/init.js +26 -34
  5. package/cjs/boot/init.js.map +1 -1
  6. package/cjs/browser/addEventListener.d.ts +10 -8
  7. package/cjs/browser/addEventListener.js +107 -50
  8. package/cjs/browser/addEventListener.js.map +1 -1
  9. package/cjs/browser/browser.types.d.ts +91 -4
  10. package/cjs/browser/cookie.d.ts +0 -1
  11. package/cjs/browser/cookie.js +65 -92
  12. package/cjs/browser/cookie.js.map +1 -1
  13. package/cjs/browser/cookieAccess.d.ts +16 -0
  14. package/cjs/browser/cookieAccess.js +114 -0
  15. package/cjs/browser/cookieAccess.js.map +1 -0
  16. package/cjs/browser/fetch.d.ts +9 -0
  17. package/cjs/browser/fetch.js +18 -0
  18. package/cjs/browser/fetch.js.map +1 -0
  19. package/cjs/browser/fetchObservable.d.ts +3 -3
  20. package/cjs/browser/fetchObservable.js +80 -92
  21. package/cjs/browser/fetchObservable.js.map +1 -1
  22. package/cjs/browser/pageMayExitObservable.d.ts +1 -2
  23. package/cjs/browser/pageMayExitObservable.js +41 -40
  24. package/cjs/browser/pageMayExitObservable.js.map +1 -1
  25. package/cjs/browser/runOnReadyState.d.ts +2 -3
  26. package/cjs/browser/runOnReadyState.js +18 -17
  27. package/cjs/browser/runOnReadyState.js.map +1 -1
  28. package/cjs/browser/xhrObservable.d.ts +8 -3
  29. package/cjs/browser/xhrObservable.js +65 -77
  30. package/cjs/browser/xhrObservable.js.map +1 -1
  31. package/cjs/domain/allowedTrackingOrigins.d.ts +1 -1
  32. package/cjs/domain/allowedTrackingOrigins.js +25 -23
  33. package/cjs/domain/allowedTrackingOrigins.js.map +1 -1
  34. package/cjs/domain/bufferedData.d.ts +20 -6
  35. package/cjs/domain/bufferedData.js +41 -19
  36. package/cjs/domain/bufferedData.js.map +1 -1
  37. package/cjs/domain/configuration/configuration.d.ts +44 -43
  38. package/cjs/domain/configuration/configuration.js +122 -125
  39. package/cjs/domain/configuration/configuration.js.map +1 -1
  40. package/cjs/domain/configuration/endpointBuilder.d.ts +42 -7
  41. package/cjs/domain/configuration/endpointBuilder.js +67 -74
  42. package/cjs/domain/configuration/endpointBuilder.js.map +1 -1
  43. package/cjs/domain/configuration/index.d.ts +2 -3
  44. package/cjs/domain/connectivity/connectivity.d.ts +1 -7
  45. package/cjs/domain/connectivity/connectivity.js +11 -11
  46. package/cjs/domain/connectivity/connectivity.js.map +1 -1
  47. package/cjs/domain/console/consoleObservable.d.ts +1 -1
  48. package/cjs/domain/console/consoleObservable.js +59 -74
  49. package/cjs/domain/console/consoleObservable.js.map +1 -1
  50. package/cjs/domain/context/contextConstants.js +24 -15
  51. package/cjs/domain/context/contextConstants.js.map +1 -1
  52. package/cjs/domain/context/contextManager.js +49 -54
  53. package/cjs/domain/context/contextManager.js.map +1 -1
  54. package/cjs/domain/context/contextUtils.js +11 -12
  55. package/cjs/domain/context/contextUtils.js.map +1 -1
  56. package/cjs/domain/context/defineContextMethod.d.ts +2 -2
  57. package/cjs/domain/context/defineContextMethod.js +15 -16
  58. package/cjs/domain/context/defineContextMethod.js.map +1 -1
  59. package/cjs/domain/context/storeContextManager.d.ts +1 -2
  60. package/cjs/domain/context/storeContextManager.js +30 -33
  61. package/cjs/domain/context/storeContextManager.js.map +1 -1
  62. package/cjs/domain/contexts/accountContext.d.ts +2 -2
  63. package/cjs/domain/contexts/accountContext.js +26 -29
  64. package/cjs/domain/contexts/accountContext.js.map +1 -1
  65. package/cjs/domain/contexts/globalContext.d.ts +2 -2
  66. package/cjs/domain/contexts/globalContext.js +17 -17
  67. package/cjs/domain/contexts/globalContext.js.map +1 -1
  68. package/cjs/domain/contexts/tabContext.d.ts +4 -0
  69. package/cjs/domain/contexts/tabContext.js +27 -0
  70. package/cjs/domain/contexts/tabContext.js.map +1 -0
  71. package/cjs/domain/contexts/telemetrySessionContext.d.ts +4 -0
  72. package/cjs/domain/contexts/telemetrySessionContext.js +17 -0
  73. package/cjs/domain/contexts/telemetrySessionContext.js.map +1 -0
  74. package/cjs/domain/contexts/userContext.d.ts +8 -3
  75. package/cjs/domain/contexts/userContext.js +29 -41
  76. package/cjs/domain/contexts/userContext.js.map +1 -1
  77. package/cjs/domain/deflate/deflate.types.js +11 -2
  78. package/cjs/domain/deflate/deflate.types.js.map +1 -1
  79. package/cjs/domain/error/error.d.ts +1 -1
  80. package/cjs/domain/error/error.js +62 -60
  81. package/cjs/domain/error/error.js.map +1 -1
  82. package/cjs/domain/error/error.types.d.ts +1 -1
  83. package/cjs/domain/error/error.types.js +24 -11
  84. package/cjs/domain/error/error.types.js.map +1 -1
  85. package/cjs/domain/error/trackRuntimeError.d.ts +3 -2
  86. package/cjs/domain/error/trackRuntimeError.js +41 -41
  87. package/cjs/domain/error/trackRuntimeError.js.map +1 -1
  88. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +33 -38
  89. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -1
  90. package/cjs/domain/extension/extensionUtils.js +18 -25
  91. package/cjs/domain/extension/extensionUtils.js.map +1 -1
  92. package/cjs/domain/intakeSites.d.ts +3 -3
  93. package/cjs/domain/intakeSites.js +23 -10
  94. package/cjs/domain/intakeSites.js.map +1 -1
  95. package/cjs/domain/report/reportObservable.d.ts +1 -2
  96. package/cjs/domain/report/reportObservable.js +73 -85
  97. package/cjs/domain/report/reportObservable.js.map +1 -1
  98. package/cjs/domain/resourceUtils.js +19 -17
  99. package/cjs/domain/resourceUtils.js.map +1 -1
  100. package/cjs/domain/sampler.d.ts +11 -0
  101. package/cjs/domain/sampler.js +40 -0
  102. package/cjs/domain/sampler.js.map +1 -0
  103. package/cjs/domain/session/sessionConstants.d.ts +1 -0
  104. package/cjs/domain/session/sessionConstants.js +19 -13
  105. package/cjs/domain/session/sessionConstants.js.map +1 -1
  106. package/cjs/domain/session/sessionManager.d.ts +13 -13
  107. package/cjs/domain/session/sessionManager.js +219 -193
  108. package/cjs/domain/session/sessionManager.js.map +1 -1
  109. package/cjs/domain/session/sessionState.d.ts +10 -1
  110. package/cjs/domain/session/sessionState.js +70 -55
  111. package/cjs/domain/session/sessionState.js.map +1 -1
  112. package/cjs/domain/session/sessionStateValidation.js +7 -8
  113. package/cjs/domain/session/sessionStateValidation.js.map +1 -1
  114. package/cjs/domain/session/sessionStore.d.ts +4 -33
  115. package/cjs/domain/session/sessionStore.js +42 -180
  116. package/cjs/domain/session/sessionStore.js.map +1 -1
  117. package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +7 -11
  118. package/cjs/domain/session/storeStrategies/sessionInCookie.js +89 -95
  119. package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -1
  120. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +1 -4
  121. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +39 -38
  122. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -1
  123. package/cjs/domain/session/storeStrategies/sessionInMemory.d.ts +12 -0
  124. package/cjs/domain/session/storeStrategies/sessionInMemory.js +35 -0
  125. package/cjs/domain/session/storeStrategies/sessionInMemory.js.map +1 -0
  126. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -7
  127. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +7 -4
  128. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -1
  129. package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +9 -3
  130. package/cjs/domain/synthetics/syntheticsWorkerValues.js +33 -25
  131. package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -1
  132. package/cjs/domain/tags.d.ts +0 -1
  133. package/cjs/domain/tags.js +22 -58
  134. package/cjs/domain/tags.js.map +1 -1
  135. package/cjs/domain/telemetry/rawTelemetryEvent.types.js +8 -7
  136. package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -1
  137. package/cjs/domain/telemetry/telemetry.d.ts +8 -8
  138. package/cjs/domain/telemetry/telemetry.js +196 -211
  139. package/cjs/domain/telemetry/telemetry.js.map +1 -1
  140. package/cjs/domain/telemetry/telemetryEvent.types.d.ts +97 -17
  141. package/cjs/domain/trackingConsent.d.ts +1 -0
  142. package/cjs/domain/trackingConsent.js +35 -24
  143. package/cjs/domain/trackingConsent.js.map +1 -1
  144. package/cjs/index.d.ts +25 -22
  145. package/cjs/index.js +281 -194
  146. package/cjs/tools/abstractLifeCycle.js +19 -26
  147. package/cjs/tools/abstractLifeCycle.js.map +1 -1
  148. package/cjs/tools/catchUserErrors.js +12 -12
  149. package/cjs/tools/catchUserErrors.js.map +1 -1
  150. package/cjs/tools/display.d.ts +1 -35
  151. package/cjs/tools/display.js +11 -43
  152. package/cjs/tools/display.js.map +1 -1
  153. package/cjs/tools/encoder.js +36 -37
  154. package/cjs/tools/encoder.js.map +1 -1
  155. package/cjs/tools/experimentalFeatures.d.ts +1 -4
  156. package/cjs/tools/experimentalFeatures.js +29 -40
  157. package/cjs/tools/experimentalFeatures.js.map +1 -1
  158. package/cjs/tools/getZoneJsOriginalValue.d.ts +1 -1
  159. package/cjs/tools/getZoneJsOriginalValue.js +22 -25
  160. package/cjs/tools/getZoneJsOriginalValue.js.map +1 -1
  161. package/cjs/tools/globalObject.d.ts +16 -15
  162. package/cjs/tools/globalObject.js +7 -43
  163. package/cjs/tools/globalObject.js.map +1 -1
  164. package/cjs/tools/instrumentMethod.d.ts +58 -1
  165. package/cjs/tools/instrumentMethod.js +174 -112
  166. package/cjs/tools/instrumentMethod.js.map +1 -1
  167. package/cjs/tools/matchOption.js +25 -29
  168. package/cjs/tools/matchOption.js.map +1 -1
  169. package/cjs/tools/mockable.d.ts +22 -0
  170. package/cjs/tools/mockable.js +28 -0
  171. package/cjs/tools/mockable.js.map +1 -0
  172. package/cjs/tools/monitor.d.ts +5 -7
  173. package/cjs/tools/monitor.js +13 -58
  174. package/cjs/tools/monitor.js.map +1 -1
  175. package/cjs/tools/observable.d.ts +3 -1
  176. package/cjs/tools/observable.js +75 -85
  177. package/cjs/tools/observable.js.map +1 -1
  178. package/cjs/tools/queueMicrotask.js +9 -14
  179. package/cjs/tools/queueMicrotask.js.map +1 -1
  180. package/cjs/tools/readBytesFromStream.d.ts +1 -6
  181. package/cjs/tools/readBytesFromStream.js +18 -25
  182. package/cjs/tools/readBytesFromStream.js.map +1 -1
  183. package/cjs/tools/requestIdleCallback.js +22 -29
  184. package/cjs/tools/requestIdleCallback.js.map +1 -1
  185. package/cjs/tools/sendToExtension.js +10 -8
  186. package/cjs/tools/sendToExtension.js.map +1 -1
  187. package/cjs/tools/serialisation/jsonStringify.js +37 -42
  188. package/cjs/tools/serialisation/jsonStringify.js.map +1 -1
  189. package/cjs/tools/serialisation/sanitize.d.ts +1 -0
  190. package/cjs/tools/serialisation/sanitize.js +111 -167
  191. package/cjs/tools/serialisation/sanitize.js.map +1 -1
  192. package/cjs/tools/serialisation/stringify.d.ts +2 -0
  193. package/cjs/tools/serialisation/stringify.js +18 -0
  194. package/cjs/tools/serialisation/stringify.js.map +1 -0
  195. package/cjs/tools/stackTrace/computeStackTrace.js +121 -159
  196. package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -1
  197. package/cjs/tools/stackTrace/handlingStack.d.ts +1 -1
  198. package/cjs/tools/stackTrace/handlingStack.js +39 -38
  199. package/cjs/tools/stackTrace/handlingStack.js.map +1 -1
  200. package/cjs/tools/taskQueue.js +40 -49
  201. package/cjs/tools/taskQueue.js.map +1 -1
  202. package/cjs/tools/timer.d.ts +2 -1
  203. package/cjs/tools/timer.js +14 -13
  204. package/cjs/tools/timer.js.map +1 -1
  205. package/cjs/tools/utils/arrayUtils.d.ts +1 -0
  206. package/cjs/tools/utils/arrayUtils.js +17 -13
  207. package/cjs/tools/utils/arrayUtils.js.map +1 -1
  208. package/cjs/tools/utils/browserDetection.d.ts +1 -0
  209. package/cjs/tools/utils/browserDetection.js +25 -23
  210. package/cjs/tools/utils/browserDetection.js.map +1 -1
  211. package/cjs/tools/utils/byteUtils.js +20 -28
  212. package/cjs/tools/utils/byteUtils.js.map +1 -1
  213. package/cjs/tools/utils/functionUtils.js +33 -40
  214. package/cjs/tools/utils/functionUtils.js.map +1 -1
  215. package/cjs/tools/utils/numberUtils.js +15 -14
  216. package/cjs/tools/utils/numberUtils.js.map +1 -1
  217. package/cjs/tools/utils/objectUtils.d.ts +2 -0
  218. package/cjs/tools/utils/objectUtils.js +27 -14
  219. package/cjs/tools/utils/objectUtils.js.map +1 -1
  220. package/cjs/tools/utils/polyfills.js +12 -16
  221. package/cjs/tools/utils/polyfills.js.map +1 -1
  222. package/cjs/tools/utils/responseUtils.js +11 -12
  223. package/cjs/tools/utils/responseUtils.js.map +1 -1
  224. package/cjs/tools/utils/stringUtils.js +56 -77
  225. package/cjs/tools/utils/stringUtils.js.map +1 -1
  226. package/cjs/tools/utils/timezone.js +9 -10
  227. package/cjs/tools/utils/timezone.js.map +1 -1
  228. package/cjs/tools/utils/urlPolyfill.js +42 -46
  229. package/cjs/tools/utils/urlPolyfill.js.map +1 -1
  230. package/cjs/tools/valueHistory.d.ts +9 -1
  231. package/cjs/tools/valueHistory.js +110 -99
  232. package/cjs/tools/valueHistory.js.map +1 -1
  233. package/cjs/transport/batch.js +73 -106
  234. package/cjs/transport/batch.js.map +1 -1
  235. package/cjs/transport/eventBridge.d.ts +6 -2
  236. package/cjs/transport/eventBridge.js +53 -38
  237. package/cjs/transport/eventBridge.js.map +1 -1
  238. package/cjs/transport/flushController.d.ts +2 -12
  239. package/cjs/transport/flushController.js +98 -117
  240. package/cjs/transport/flushController.js.map +1 -1
  241. package/cjs/transport/httpRequest.d.ts +0 -1
  242. package/cjs/transport/httpRequest.js +51 -85
  243. package/cjs/transport/httpRequest.js.map +1 -1
  244. package/cjs/transport/index.d.ts +1 -0
  245. package/cjs/transport/sendWithRetryStrategy.js +133 -146
  246. package/cjs/transport/sendWithRetryStrategy.js.map +1 -1
  247. package/esm/boot/displayAlreadyInitializedError.mjs +9 -0
  248. package/esm/boot/displayAlreadyInitializedError.mjs.map +1 -0
  249. package/esm/boot/init.mjs +30 -0
  250. package/esm/boot/init.mjs.map +1 -0
  251. package/esm/browser/addEventListener.mjs +107 -0
  252. package/esm/browser/addEventListener.mjs.map +1 -0
  253. package/esm/browser/cookie.mjs +81 -0
  254. package/esm/browser/cookie.mjs.map +1 -0
  255. package/esm/browser/cookieAccess.mjs +111 -0
  256. package/esm/browser/cookieAccess.mjs.map +1 -0
  257. package/esm/browser/fetch.mjs +18 -0
  258. package/esm/browser/fetch.mjs.map +1 -0
  259. package/esm/browser/fetchObservable.mjs +90 -0
  260. package/esm/browser/fetchObservable.mjs.map +1 -0
  261. package/esm/browser/pageMayExitObservable.mjs +44 -0
  262. package/esm/browser/pageMayExitObservable.mjs.map +1 -0
  263. package/esm/browser/runOnReadyState.mjs +19 -0
  264. package/esm/browser/runOnReadyState.mjs.map +1 -0
  265. package/esm/browser/xhrObservable.mjs +74 -0
  266. package/esm/browser/xhrObservable.mjs.map +1 -0
  267. package/esm/domain/allowedTrackingOrigins.mjs +27 -0
  268. package/esm/domain/allowedTrackingOrigins.mjs.map +1 -0
  269. package/esm/domain/bufferedData.mjs +43 -0
  270. package/esm/domain/bufferedData.mjs.map +1 -0
  271. package/esm/domain/configuration/configuration.mjs +131 -0
  272. package/esm/domain/configuration/configuration.mjs.map +1 -0
  273. package/esm/domain/configuration/endpointBuilder.mjs +72 -0
  274. package/esm/domain/configuration/endpointBuilder.mjs.map +1 -0
  275. package/esm/domain/connectivity/connectivity.mjs +14 -0
  276. package/esm/domain/connectivity/connectivity.mjs.map +1 -0
  277. package/esm/domain/console/consoleObservable.mjs +69 -0
  278. package/esm/domain/console/consoleObservable.mjs.map +1 -0
  279. package/esm/domain/context/contextConstants.mjs +25 -0
  280. package/esm/domain/context/contextConstants.mjs.map +1 -0
  281. package/esm/domain/context/contextManager.mjs +55 -0
  282. package/esm/domain/context/contextManager.mjs.map +1 -0
  283. package/esm/domain/context/contextUtils.mjs +15 -0
  284. package/esm/domain/context/contextUtils.mjs.map +1 -0
  285. package/esm/domain/context/defineContextMethod.mjs +19 -0
  286. package/esm/domain/context/defineContextMethod.mjs.map +1 -0
  287. package/esm/domain/context/storeContextManager.mjs +36 -0
  288. package/esm/domain/context/storeContextManager.mjs.map +1 -0
  289. package/esm/domain/contexts/accountContext.mjs +29 -0
  290. package/esm/domain/contexts/accountContext.mjs.map +1 -0
  291. package/esm/domain/contexts/globalContext.mjs +20 -0
  292. package/esm/domain/contexts/globalContext.mjs.map +1 -0
  293. package/esm/domain/contexts/tabContext.mjs +27 -0
  294. package/esm/domain/contexts/tabContext.mjs.map +1 -0
  295. package/esm/domain/contexts/telemetrySessionContext.mjs +17 -0
  296. package/esm/domain/contexts/telemetrySessionContext.mjs.map +1 -0
  297. package/esm/domain/contexts/userContext.mjs +32 -0
  298. package/esm/domain/contexts/userContext.mjs.map +1 -0
  299. package/esm/domain/deflate/deflate.types.mjs +12 -0
  300. package/esm/domain/deflate/deflate.types.mjs.map +1 -0
  301. package/esm/domain/error/error.mjs +73 -0
  302. package/esm/domain/error/error.mjs.map +1 -0
  303. package/esm/domain/error/error.types.mjs +24 -0
  304. package/esm/domain/error/error.types.mjs.map +1 -0
  305. package/esm/domain/error/trackRuntimeError.mjs +48 -0
  306. package/esm/domain/error/trackRuntimeError.mjs.map +1 -0
  307. package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs +36 -0
  308. package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs.map +1 -0
  309. package/esm/domain/extension/extensionUtils.mjs +23 -0
  310. package/esm/domain/extension/extensionUtils.mjs.map +1 -0
  311. package/esm/domain/intakeSites.mjs +18 -0
  312. package/esm/domain/intakeSites.mjs.map +1 -0
  313. package/esm/domain/report/reportObservable.mjs +86 -0
  314. package/esm/domain/report/reportObservable.mjs.map +1 -0
  315. package/esm/domain/resourceUtils.mjs +21 -0
  316. package/esm/domain/resourceUtils.mjs.map +1 -0
  317. package/esm/domain/sampler.mjs +37 -0
  318. package/esm/domain/sampler.mjs.map +1 -0
  319. package/esm/domain/session/sessionConstants.mjs +18 -0
  320. package/esm/domain/session/sessionConstants.mjs.map +1 -0
  321. package/esm/domain/session/sessionManager.mjs +225 -0
  322. package/esm/domain/session/sessionManager.mjs.map +1 -0
  323. package/esm/domain/session/sessionState.mjs +76 -0
  324. package/esm/domain/session/sessionState.mjs.map +1 -0
  325. package/esm/domain/session/sessionStateValidation.mjs +9 -0
  326. package/esm/domain/session/sessionStateValidation.mjs.map +1 -0
  327. package/esm/domain/session/sessionStore.mjs +46 -0
  328. package/esm/domain/session/sessionStore.mjs.map +1 -0
  329. package/esm/domain/session/storeStrategies/sessionInCookie.mjs +97 -0
  330. package/esm/domain/session/storeStrategies/sessionInCookie.mjs.map +1 -0
  331. package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs +42 -0
  332. package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs.map +1 -0
  333. package/esm/domain/session/storeStrategies/sessionInMemory.mjs +33 -0
  334. package/esm/domain/session/storeStrategies/sessionInMemory.mjs.map +1 -0
  335. package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs +7 -0
  336. package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs.map +1 -0
  337. package/esm/domain/synthetics/syntheticsWorkerValues.mjs +37 -0
  338. package/esm/domain/synthetics/syntheticsWorkerValues.mjs.map +1 -0
  339. package/esm/domain/tags.mjs +28 -0
  340. package/esm/domain/tags.mjs.map +1 -0
  341. package/esm/domain/telemetry/rawTelemetryEvent.types.mjs +10 -0
  342. package/esm/domain/telemetry/rawTelemetryEvent.types.mjs.map +1 -0
  343. package/esm/domain/telemetry/telemetry.mjs +219 -0
  344. package/esm/domain/telemetry/telemetry.mjs.map +1 -0
  345. package/esm/domain/trackingConsent.mjs +38 -0
  346. package/esm/domain/trackingConsent.mjs.map +1 -0
  347. package/esm/index.mjs +81 -0
  348. package/esm/tools/abstractLifeCycle.mjs +21 -0
  349. package/esm/tools/abstractLifeCycle.mjs.map +1 -0
  350. package/esm/tools/catchUserErrors.mjs +15 -0
  351. package/esm/tools/catchUserErrors.mjs.map +1 -0
  352. package/esm/tools/display.mjs +10 -0
  353. package/esm/tools/display.mjs.map +1 -0
  354. package/esm/tools/encoder.mjs +39 -0
  355. package/esm/tools/encoder.mjs.map +1 -0
  356. package/esm/tools/experimentalFeatures.mjs +35 -0
  357. package/esm/tools/experimentalFeatures.mjs.map +1 -0
  358. package/esm/tools/getZoneJsOriginalValue.mjs +26 -0
  359. package/esm/tools/getZoneJsOriginalValue.mjs.map +1 -0
  360. package/esm/tools/globalObject.mjs +7 -0
  361. package/esm/tools/globalObject.mjs.map +1 -0
  362. package/esm/tools/instrumentMethod.mjs +178 -0
  363. package/esm/tools/instrumentMethod.mjs.map +1 -0
  364. package/esm/tools/matchOption.mjs +30 -0
  365. package/esm/tools/matchOption.mjs.map +1 -0
  366. package/esm/tools/mockable.mjs +28 -0
  367. package/esm/tools/mockable.mjs.map +1 -0
  368. package/esm/tools/monitor.mjs +13 -0
  369. package/esm/tools/monitor.mjs.map +1 -0
  370. package/esm/tools/observable.mjs +77 -0
  371. package/esm/tools/observable.mjs.map +1 -0
  372. package/esm/tools/queueMicrotask.mjs +12 -0
  373. package/esm/tools/queueMicrotask.mjs.map +1 -0
  374. package/esm/tools/readBytesFromStream.mjs +21 -0
  375. package/esm/tools/readBytesFromStream.mjs.map +1 -0
  376. package/esm/tools/requestIdleCallback.mjs +28 -0
  377. package/esm/tools/requestIdleCallback.mjs.map +1 -0
  378. package/esm/tools/sendToExtension.mjs +13 -0
  379. package/esm/tools/sendToExtension.mjs.map +1 -0
  380. package/esm/tools/serialisation/jsonStringify.mjs +42 -0
  381. package/esm/tools/serialisation/jsonStringify.mjs.map +1 -0
  382. package/esm/tools/serialisation/sanitize.mjs +131 -0
  383. package/esm/tools/serialisation/sanitize.mjs.map +1 -0
  384. package/esm/tools/serialisation/stringify.mjs +17 -0
  385. package/esm/tools/serialisation/stringify.mjs.map +1 -0
  386. package/esm/tools/stackTrace/computeStackTrace.mjs +148 -0
  387. package/esm/tools/stackTrace/computeStackTrace.mjs.map +1 -0
  388. package/esm/tools/stackTrace/handlingStack.mjs +45 -0
  389. package/esm/tools/stackTrace/handlingStack.mjs.map +1 -0
  390. package/esm/tools/taskQueue.mjs +45 -0
  391. package/esm/tools/taskQueue.mjs.map +1 -0
  392. package/esm/tools/timer.mjs +20 -0
  393. package/esm/tools/timer.mjs.map +1 -0
  394. package/esm/tools/utils/arrayUtils.mjs +21 -0
  395. package/esm/tools/utils/arrayUtils.mjs.map +1 -0
  396. package/esm/tools/utils/browserDetection.mjs +31 -0
  397. package/esm/tools/utils/browserDetection.mjs.map +1 -0
  398. package/esm/tools/utils/byteUtils.mjs +23 -0
  399. package/esm/tools/utils/byteUtils.mjs.map +1 -0
  400. package/esm/tools/utils/functionUtils.mjs +35 -0
  401. package/esm/tools/utils/functionUtils.mjs.map +1 -0
  402. package/esm/tools/utils/numberUtils.mjs +22 -0
  403. package/esm/tools/utils/numberUtils.mjs.map +1 -0
  404. package/esm/tools/utils/objectUtils.mjs +31 -0
  405. package/esm/tools/utils/objectUtils.mjs.map +1 -0
  406. package/esm/tools/utils/polyfills.mjs +17 -0
  407. package/esm/tools/utils/polyfills.mjs.map +1 -0
  408. package/esm/tools/utils/responseUtils.mjs +15 -0
  409. package/esm/tools/utils/responseUtils.mjs.map +1 -0
  410. package/esm/tools/utils/stringUtils.mjs +66 -0
  411. package/esm/tools/utils/stringUtils.mjs.map +1 -0
  412. package/esm/tools/utils/timezone.mjs +12 -0
  413. package/esm/tools/utils/timezone.mjs.map +1 -0
  414. package/esm/tools/utils/urlPolyfill.mjs +51 -0
  415. package/esm/tools/utils/urlPolyfill.mjs.map +1 -0
  416. package/esm/tools/valueHistory.mjs +114 -0
  417. package/esm/tools/valueHistory.mjs.map +1 -0
  418. package/esm/transport/batch.mjs +77 -0
  419. package/esm/transport/batch.mjs.map +1 -0
  420. package/esm/transport/eventBridge.mjs +58 -0
  421. package/esm/transport/eventBridge.mjs.map +1 -0
  422. package/esm/transport/flushController.mjs +104 -0
  423. package/esm/transport/flushController.mjs.map +1 -0
  424. package/esm/transport/httpRequest.mjs +60 -0
  425. package/esm/transport/httpRequest.mjs.map +1 -0
  426. package/esm/transport/sendWithRetryStrategy.mjs +149 -0
  427. package/esm/transport/sendWithRetryStrategy.mjs.map +1 -0
  428. package/package.json +16 -5
  429. package/src/boot/init.ts +2 -2
  430. package/src/browser/addEventListener.ts +37 -5
  431. package/src/browser/browser.types.ts +127 -13
  432. package/src/browser/cookie.ts +21 -27
  433. package/src/browser/cookieAccess.ts +150 -0
  434. package/src/browser/fetch.ts +14 -0
  435. package/src/browser/fetchObservable.ts +22 -22
  436. package/src/browser/pageMayExitObservable.ts +7 -4
  437. package/src/browser/runOnReadyState.ts +3 -8
  438. package/src/browser/xhrObservable.ts +22 -12
  439. package/src/domain/allowedTrackingOrigins.ts +5 -5
  440. package/src/domain/bufferedData.ts +41 -14
  441. package/src/domain/configuration/configuration.ts +87 -72
  442. package/src/domain/configuration/endpointBuilder.ts +82 -52
  443. package/src/domain/configuration/index.ts +2 -2
  444. package/src/domain/connectivity/connectivity.ts +3 -15
  445. package/src/domain/console/consoleObservable.ts +3 -3
  446. package/src/domain/context/contextManager.ts +1 -1
  447. package/src/domain/context/contextUtils.ts +1 -1
  448. package/src/domain/context/defineContextMethod.ts +3 -3
  449. package/src/domain/context/storeContextManager.ts +9 -6
  450. package/src/domain/contexts/accountContext.ts +5 -5
  451. package/src/domain/contexts/globalContext.ts +4 -5
  452. package/src/domain/contexts/tabContext.ts +43 -0
  453. package/src/domain/contexts/telemetrySessionContext.ts +26 -0
  454. package/src/domain/contexts/userContext.ts +7 -11
  455. package/src/domain/error/error.ts +53 -23
  456. package/src/domain/error/error.types.ts +1 -1
  457. package/src/domain/error/trackRuntimeError.ts +11 -4
  458. package/src/domain/eventRateLimiter/createEventRateLimiter.ts +1 -1
  459. package/src/domain/intakeSites.ts +8 -3
  460. package/src/domain/report/reportObservable.ts +11 -7
  461. package/src/domain/sampler.ts +64 -0
  462. package/src/domain/session/sessionConstants.ts +2 -1
  463. package/src/domain/session/sessionManager.ts +281 -176
  464. package/src/domain/session/sessionState.ts +64 -8
  465. package/src/domain/session/sessionStore.ts +57 -223
  466. package/src/domain/session/storeStrategies/sessionInCookie.ts +121 -107
  467. package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +33 -21
  468. package/src/domain/session/storeStrategies/sessionInMemory.ts +55 -0
  469. package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +28 -6
  470. package/src/domain/synthetics/syntheticsWorkerValues.ts +44 -13
  471. package/src/domain/tags.ts +0 -16
  472. package/src/domain/telemetry/telemetry.ts +38 -34
  473. package/src/domain/telemetry/telemetryEvent.types.ts +116 -20
  474. package/src/domain/trackingConsent.ts +18 -3
  475. package/src/index.ts +51 -31
  476. package/src/tools/display.ts +2 -50
  477. package/src/tools/experimentalFeatures.ts +1 -4
  478. package/src/tools/getZoneJsOriginalValue.ts +3 -3
  479. package/src/tools/globalObject.ts +27 -41
  480. package/src/tools/instrumentMethod.ts +230 -20
  481. package/src/tools/matchOption.ts +3 -1
  482. package/src/tools/mockable.ts +32 -0
  483. package/src/tools/monitor.ts +14 -62
  484. package/src/tools/observable.ts +9 -1
  485. package/src/tools/queueMicrotask.ts +6 -1
  486. package/src/tools/readBytesFromStream.ts +3 -12
  487. package/src/tools/requestIdleCallback.ts +1 -1
  488. package/src/tools/serialisation/sanitize.ts +67 -65
  489. package/src/tools/serialisation/stringify.ts +18 -0
  490. package/src/tools/stackTrace/computeStackTrace.ts +15 -13
  491. package/src/tools/stackTrace/handlingStack.ts +14 -1
  492. package/src/tools/taskQueue.ts +5 -3
  493. package/src/tools/timer.ts +7 -6
  494. package/src/tools/utils/arrayUtils.ts +7 -0
  495. package/src/tools/utils/browserDetection.ts +8 -0
  496. package/src/tools/utils/byteUtils.ts +1 -5
  497. package/src/tools/utils/functionUtils.ts +2 -2
  498. package/src/tools/utils/objectUtils.ts +20 -0
  499. package/src/tools/utils/stringUtils.ts +4 -1
  500. package/src/tools/utils/urlPolyfill.ts +5 -4
  501. package/src/tools/valueHistory.ts +39 -6
  502. package/src/transport/batch.ts +9 -18
  503. package/src/transport/eventBridge.ts +23 -10
  504. package/src/transport/flushController.ts +17 -24
  505. package/src/transport/httpRequest.ts +4 -36
  506. package/src/transport/index.ts +1 -0
  507. package/src/transport/sendWithRetryStrategy.ts +1 -1
  508. package/cjs/browser/browser.types.js +0 -6
  509. package/cjs/browser/browser.types.js.map +0 -1
  510. package/cjs/domain/configuration/index.js +0 -16
  511. package/cjs/domain/configuration/index.js.map +0 -1
  512. package/cjs/domain/configuration/transportConfiguration.d.ts +0 -20
  513. package/cjs/domain/configuration/transportConfiguration.js +0 -54
  514. package/cjs/domain/configuration/transportConfiguration.js.map +0 -1
  515. package/cjs/domain/connectivity/index.js +0 -18
  516. package/cjs/domain/connectivity/index.js.map +0 -1
  517. package/cjs/domain/contexts/rumInternalContext.type.js +0 -3
  518. package/cjs/domain/contexts/rumInternalContext.type.js.map +0 -1
  519. package/cjs/domain/deflate/index.js +0 -18
  520. package/cjs/domain/deflate/index.js.map +0 -1
  521. package/cjs/domain/report/browser.types.js +0 -3
  522. package/cjs/domain/report/browser.types.js.map +0 -1
  523. package/cjs/domain/session/oldCookiesMigration.d.ts +0 -11
  524. package/cjs/domain/session/oldCookiesMigration.js +0 -40
  525. package/cjs/domain/session/oldCookiesMigration.js.map +0 -1
  526. package/cjs/domain/session/sessionStoreOperations.d.ts +0 -12
  527. package/cjs/domain/session/sessionStoreOperations.js +0 -119
  528. package/cjs/domain/session/sessionStoreOperations.js.map +0 -1
  529. package/cjs/domain/telemetry/index.js +0 -28
  530. package/cjs/domain/telemetry/index.js.map +0 -1
  531. package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
  532. package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
  533. package/cjs/index.js.map +0 -1
  534. package/cjs/tools/abstractHooks.d.ts +0 -24
  535. package/cjs/tools/abstractHooks.js +0 -41
  536. package/cjs/tools/abstractHooks.js.map +0 -1
  537. package/cjs/tools/boundedBuffer.d.ts +0 -16
  538. package/cjs/tools/boundedBuffer.js +0 -32
  539. package/cjs/tools/boundedBuffer.js.map +0 -1
  540. package/cjs/tools/mergeInto.d.ts +0 -25
  541. package/cjs/tools/mergeInto.js +0 -98
  542. package/cjs/tools/mergeInto.js.map +0 -1
  543. package/cjs/tools/serialisation/context.js +0 -3
  544. package/cjs/tools/serialisation/context.js.map +0 -1
  545. package/cjs/tools/utils/timeUtils.d.ts +0 -53
  546. package/cjs/tools/utils/timeUtils.js +0 -101
  547. package/cjs/tools/utils/timeUtils.js.map +0 -1
  548. package/cjs/tools/utils/typeUtils.d.ts +0 -4
  549. package/cjs/tools/utils/typeUtils.js +0 -16
  550. package/cjs/tools/utils/typeUtils.js.map +0 -1
  551. package/cjs/transport/index.js +0 -15
  552. package/cjs/transport/index.js.map +0 -1
  553. package/esm/boot/displayAlreadyInitializedError.d.ts +0 -2
  554. package/esm/boot/displayAlreadyInitializedError.js +0 -7
  555. package/esm/boot/displayAlreadyInitializedError.js.map +0 -1
  556. package/esm/boot/init.d.ts +0 -14
  557. package/esm/boot/init.js +0 -35
  558. package/esm/boot/init.js.map +0 -1
  559. package/esm/browser/addEventListener.d.ts +0 -87
  560. package/esm/browser/addEventListener.js +0 -51
  561. package/esm/browser/addEventListener.js.map +0 -1
  562. package/esm/browser/browser.types.d.ts +0 -51
  563. package/esm/browser/browser.types.js +0 -5
  564. package/esm/browser/browser.types.js.map +0 -1
  565. package/esm/browser/cookie.d.ts +0 -28
  566. package/esm/browser/cookie.js +0 -103
  567. package/esm/browser/cookie.js.map +0 -1
  568. package/esm/browser/fetchObservable.d.ts +0 -38
  569. package/esm/browser/fetchObservable.js +0 -99
  570. package/esm/browser/fetchObservable.js.map +0 -1
  571. package/esm/browser/pageMayExitObservable.d.ts +0 -14
  572. package/esm/browser/pageMayExitObservable.js +0 -40
  573. package/esm/browser/pageMayExitObservable.js.map +0 -1
  574. package/esm/browser/runOnReadyState.d.ts +0 -5
  575. package/esm/browser/runOnReadyState.js +0 -16
  576. package/esm/browser/runOnReadyState.js.map +0 -1
  577. package/esm/browser/xhrObservable.d.ts +0 -24
  578. package/esm/browser/xhrObservable.js +0 -83
  579. package/esm/browser/xhrObservable.js.map +0 -1
  580. package/esm/domain/allowedTrackingOrigins.d.ts +0 -4
  581. package/esm/domain/allowedTrackingOrigins.js +0 -21
  582. package/esm/domain/allowedTrackingOrigins.js.map +0 -1
  583. package/esm/domain/bufferedData.d.ts +0 -14
  584. package/esm/domain/bufferedData.js +0 -19
  585. package/esm/domain/bufferedData.js.map +0 -1
  586. package/esm/domain/configuration/configuration.d.ts +0 -312
  587. package/esm/domain/configuration/configuration.js +0 -132
  588. package/esm/domain/configuration/configuration.js.map +0 -1
  589. package/esm/domain/configuration/endpointBuilder.d.ts +0 -12
  590. package/esm/domain/configuration/endpointBuilder.js +0 -77
  591. package/esm/domain/configuration/endpointBuilder.js.map +0 -1
  592. package/esm/domain/configuration/index.d.ts +0 -5
  593. package/esm/domain/configuration/index.js +0 -4
  594. package/esm/domain/configuration/index.js.map +0 -1
  595. package/esm/domain/configuration/transportConfiguration.d.ts +0 -20
  596. package/esm/domain/configuration/transportConfiguration.js +0 -50
  597. package/esm/domain/configuration/transportConfiguration.js.map +0 -1
  598. package/esm/domain/connectivity/connectivity.d.ts +0 -14
  599. package/esm/domain/connectivity/connectivity.js +0 -11
  600. package/esm/domain/connectivity/connectivity.js.map +0 -1
  601. package/esm/domain/connectivity/index.d.ts +0 -1
  602. package/esm/domain/connectivity/index.js +0 -2
  603. package/esm/domain/connectivity/index.js.map +0 -1
  604. package/esm/domain/console/consoleObservable.d.ts +0 -21
  605. package/esm/domain/console/consoleObservable.js +0 -80
  606. package/esm/domain/console/consoleObservable.js.map +0 -1
  607. package/esm/domain/context/contextConstants.d.ts +0 -21
  608. package/esm/domain/context/contextConstants.js +0 -15
  609. package/esm/domain/context/contextConstants.js.map +0 -1
  610. package/esm/domain/context/contextManager.d.ts +0 -19
  611. package/esm/domain/context/contextManager.js +0 -57
  612. package/esm/domain/context/contextManager.js.map +0 -1
  613. package/esm/domain/context/contextUtils.d.ts +0 -5
  614. package/esm/domain/context/contextUtils.js +0 -13
  615. package/esm/domain/context/contextUtils.js.map +0 -1
  616. package/esm/domain/context/defineContextMethod.d.ts +0 -6
  617. package/esm/domain/context/defineContextMethod.js +0 -17
  618. package/esm/domain/context/defineContextMethod.js.map +0 -1
  619. package/esm/domain/context/storeContextManager.d.ts +0 -6
  620. package/esm/domain/context/storeContextManager.js +0 -35
  621. package/esm/domain/context/storeContextManager.js.map +0 -1
  622. package/esm/domain/contexts/accountContext.d.ts +0 -26
  623. package/esm/domain/contexts/accountContext.js +0 -29
  624. package/esm/domain/contexts/accountContext.js.map +0 -1
  625. package/esm/domain/contexts/globalContext.d.ts +0 -18
  626. package/esm/domain/contexts/globalContext.js +0 -17
  627. package/esm/domain/contexts/globalContext.js.map +0 -1
  628. package/esm/domain/contexts/rumInternalContext.type.d.ts +0 -14
  629. package/esm/domain/contexts/rumInternalContext.type.js +0 -2
  630. package/esm/domain/contexts/rumInternalContext.type.js.map +0 -1
  631. package/esm/domain/contexts/userContext.d.ts +0 -29
  632. package/esm/domain/contexts/userContext.js +0 -41
  633. package/esm/domain/contexts/userContext.js.map +0 -1
  634. package/esm/domain/deflate/deflate.types.d.ts +0 -40
  635. package/esm/domain/deflate/deflate.types.js +0 -2
  636. package/esm/domain/deflate/deflate.types.js.map +0 -1
  637. package/esm/domain/deflate/index.d.ts +0 -1
  638. package/esm/domain/deflate/index.js +0 -2
  639. package/esm/domain/deflate/index.js.map +0 -1
  640. package/esm/domain/error/error.d.ts +0 -23
  641. package/esm/domain/error/error.js +0 -65
  642. package/esm/domain/error/error.js.map +0 -1
  643. package/esm/domain/error/error.types.d.ts +0 -47
  644. package/esm/domain/error/error.types.js +0 -10
  645. package/esm/domain/error/error.types.js.map +0 -1
  646. package/esm/domain/error/trackRuntimeError.d.ts +0 -11
  647. package/esm/domain/error/trackRuntimeError.js +0 -43
  648. package/esm/domain/error/trackRuntimeError.js.map +0 -1
  649. package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
  650. package/esm/domain/eventRateLimiter/createEventRateLimiter.js +0 -38
  651. package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
  652. package/esm/domain/extension/extensionUtils.d.ts +0 -10
  653. package/esm/domain/extension/extensionUtils.js +0 -25
  654. package/esm/domain/extension/extensionUtils.js.map +0 -1
  655. package/esm/domain/intakeSites.d.ts +0 -8
  656. package/esm/domain/intakeSites.js +0 -8
  657. package/esm/domain/intakeSites.js.map +0 -1
  658. package/esm/domain/report/browser.types.d.ts +0 -34
  659. package/esm/domain/report/browser.types.js +0 -2
  660. package/esm/domain/report/browser.types.js.map +0 -1
  661. package/esm/domain/report/reportObservable.d.ts +0 -14
  662. package/esm/domain/report/reportObservable.js +0 -95
  663. package/esm/domain/report/reportObservable.js.map +0 -1
  664. package/esm/domain/resourceUtils.d.ts +0 -18
  665. package/esm/domain/resourceUtils.js +0 -17
  666. package/esm/domain/resourceUtils.js.map +0 -1
  667. package/esm/domain/session/oldCookiesMigration.d.ts +0 -11
  668. package/esm/domain/session/oldCookiesMigration.js +0 -36
  669. package/esm/domain/session/oldCookiesMigration.js.map +0 -1
  670. package/esm/domain/session/sessionConstants.d.ts +0 -15
  671. package/esm/domain/session/sessionConstants.js +0 -13
  672. package/esm/domain/session/sessionConstants.js.map +0 -1
  673. package/esm/domain/session/sessionManager.d.ts +0 -28
  674. package/esm/domain/session/sessionManager.js +0 -196
  675. package/esm/domain/session/sessionManager.js.map +0 -1
  676. package/esm/domain/session/sessionState.d.ts +0 -16
  677. package/esm/domain/session/sessionState.js +0 -60
  678. package/esm/domain/session/sessionState.js.map +0 -1
  679. package/esm/domain/session/sessionStateValidation.d.ts +0 -3
  680. package/esm/domain/session/sessionStateValidation.js +0 -7
  681. package/esm/domain/session/sessionStateValidation.js.map +0 -1
  682. package/esm/domain/session/sessionStore.d.ts +0 -38
  683. package/esm/domain/session/sessionStore.js +0 -179
  684. package/esm/domain/session/sessionStore.js.map +0 -1
  685. package/esm/domain/session/sessionStoreOperations.d.ts +0 -12
  686. package/esm/domain/session/sessionStoreOperations.js +0 -114
  687. package/esm/domain/session/sessionStoreOperations.js.map +0 -1
  688. package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +0 -12
  689. package/esm/domain/session/storeStrategies/sessionInCookie.js +0 -98
  690. package/esm/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
  691. package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -6
  692. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +0 -37
  693. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
  694. package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -16
  695. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +0 -2
  696. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
  697. package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +0 -12
  698. package/esm/domain/synthetics/syntheticsWorkerValues.js +0 -24
  699. package/esm/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
  700. package/esm/domain/tags.d.ts +0 -6
  701. package/esm/domain/tags.js +0 -60
  702. package/esm/domain/tags.js.map +0 -1
  703. package/esm/domain/telemetry/index.d.ts +0 -4
  704. package/esm/domain/telemetry/index.js +0 -3
  705. package/esm/domain/telemetry/index.js.map +0 -1
  706. package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -18
  707. package/esm/domain/telemetry/rawTelemetryEvent.types.js +0 -6
  708. package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
  709. package/esm/domain/telemetry/telemetry.d.ts +0 -56
  710. package/esm/domain/telemetry/telemetry.js +0 -228
  711. package/esm/domain/telemetry/telemetry.js.map +0 -1
  712. package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -866
  713. package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
  714. package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
  715. package/esm/domain/trackingConsent.d.ts +0 -13
  716. package/esm/domain/trackingConsent.js +0 -24
  717. package/esm/domain/trackingConsent.js.map +0 -1
  718. package/esm/index.d.ts +0 -100
  719. package/esm/index.js +0 -76
  720. package/esm/index.js.map +0 -1
  721. package/esm/tools/abstractHooks.d.ts +0 -24
  722. package/esm/tools/abstractHooks.js +0 -37
  723. package/esm/tools/abstractHooks.js.map +0 -1
  724. package/esm/tools/abstractLifeCycle.d.ts +0 -23
  725. package/esm/tools/abstractLifeCycle.js +0 -24
  726. package/esm/tools/abstractLifeCycle.js.map +0 -1
  727. package/esm/tools/boundedBuffer.d.ts +0 -16
  728. package/esm/tools/boundedBuffer.js +0 -29
  729. package/esm/tools/boundedBuffer.js.map +0 -1
  730. package/esm/tools/catchUserErrors.d.ts +0 -1
  731. package/esm/tools/catchUserErrors.js +0 -12
  732. package/esm/tools/catchUserErrors.js.map +0 -1
  733. package/esm/tools/display.d.ts +0 -38
  734. package/esm/tools/display.js +0 -41
  735. package/esm/tools/display.js.map +0 -1
  736. package/esm/tools/encoder.d.ts +0 -54
  737. package/esm/tools/encoder.js +0 -37
  738. package/esm/tools/encoder.js.map +0 -1
  739. package/esm/tools/experimentalFeatures.d.ts +0 -21
  740. package/esm/tools/experimentalFeatures.js +0 -42
  741. package/esm/tools/experimentalFeatures.js.map +0 -1
  742. package/esm/tools/getZoneJsOriginalValue.d.ts +0 -19
  743. package/esm/tools/getZoneJsOriginalValue.js +0 -26
  744. package/esm/tools/getZoneJsOriginalValue.js.map +0 -1
  745. package/esm/tools/globalObject.d.ts +0 -19
  746. package/esm/tools/globalObject.js +0 -40
  747. package/esm/tools/globalObject.js.map +0 -1
  748. package/esm/tools/instrumentMethod.d.ts +0 -75
  749. package/esm/tools/instrumentMethod.js +0 -114
  750. package/esm/tools/instrumentMethod.js.map +0 -1
  751. package/esm/tools/matchOption.d.ts +0 -8
  752. package/esm/tools/matchOption.js +0 -31
  753. package/esm/tools/matchOption.js.map +0 -1
  754. package/esm/tools/mergeInto.d.ts +0 -25
  755. package/esm/tools/mergeInto.js +0 -93
  756. package/esm/tools/mergeInto.js.map +0 -1
  757. package/esm/tools/monitor.d.ts +0 -9
  758. package/esm/tools/monitor.js +0 -52
  759. package/esm/tools/monitor.js.map +0 -1
  760. package/esm/tools/observable.d.ts +0 -30
  761. package/esm/tools/observable.js +0 -83
  762. package/esm/tools/observable.js.map +0 -1
  763. package/esm/tools/queueMicrotask.d.ts +0 -1
  764. package/esm/tools/queueMicrotask.js +0 -14
  765. package/esm/tools/queueMicrotask.js.map +0 -1
  766. package/esm/tools/readBytesFromStream.d.ts +0 -10
  767. package/esm/tools/readBytesFromStream.js +0 -25
  768. package/esm/tools/readBytesFromStream.js.map +0 -1
  769. package/esm/tools/requestIdleCallback.d.ts +0 -12
  770. package/esm/tools/requestIdleCallback.js +0 -30
  771. package/esm/tools/requestIdleCallback.js.map +0 -1
  772. package/esm/tools/sendToExtension.d.ts +0 -3
  773. package/esm/tools/sendToExtension.js +0 -8
  774. package/esm/tools/sendToExtension.js.map +0 -1
  775. package/esm/tools/serialisation/context.d.ts +0 -9
  776. package/esm/tools/serialisation/context.js +0 -2
  777. package/esm/tools/serialisation/context.js.map +0 -1
  778. package/esm/tools/serialisation/jsonStringify.d.ts +0 -13
  779. package/esm/tools/serialisation/jsonStringify.js +0 -44
  780. package/esm/tools/serialisation/jsonStringify.js.map +0 -1
  781. package/esm/tools/serialisation/sanitize.d.ts +0 -18
  782. package/esm/tools/serialisation/sanitize.js +0 -185
  783. package/esm/tools/serialisation/sanitize.js.map +0 -1
  784. package/esm/tools/stackTrace/computeStackTrace.d.ts +0 -25
  785. package/esm/tools/stackTrace/computeStackTrace.js +0 -183
  786. package/esm/tools/stackTrace/computeStackTrace.js.map +0 -1
  787. package/esm/tools/stackTrace/handlingStack.d.ts +0 -10
  788. package/esm/tools/stackTrace/handlingStack.js +0 -41
  789. package/esm/tools/stackTrace/handlingStack.js.map +0 -1
  790. package/esm/tools/taskQueue.d.ts +0 -15
  791. package/esm/tools/taskQueue.js +0 -50
  792. package/esm/tools/taskQueue.js.map +0 -1
  793. package/esm/tools/timer.d.ts +0 -5
  794. package/esm/tools/timer.js +0 -16
  795. package/esm/tools/timer.js.map +0 -1
  796. package/esm/tools/utils/arrayUtils.d.ts +0 -3
  797. package/esm/tools/utils/arrayUtils.js +0 -15
  798. package/esm/tools/utils/arrayUtils.js.map +0 -1
  799. package/esm/tools/utils/browserDetection.d.ts +0 -8
  800. package/esm/tools/utils/browserDetection.js +0 -28
  801. package/esm/tools/utils/browserDetection.js.map +0 -1
  802. package/esm/tools/utils/byteUtils.d.ts +0 -8
  803. package/esm/tools/utils/byteUtils.js +0 -29
  804. package/esm/tools/utils/byteUtils.js.map +0 -1
  805. package/esm/tools/utils/functionUtils.d.ts +0 -8
  806. package/esm/tools/utils/functionUtils.js +0 -39
  807. package/esm/tools/utils/functionUtils.js.map +0 -1
  808. package/esm/tools/utils/numberUtils.d.ts +0 -9
  809. package/esm/tools/utils/numberUtils.js +0 -18
  810. package/esm/tools/utils/numberUtils.js.map +0 -1
  811. package/esm/tools/utils/objectUtils.d.ts +0 -10
  812. package/esm/tools/utils/objectUtils.js +0 -17
  813. package/esm/tools/utils/objectUtils.js.map +0 -1
  814. package/esm/tools/utils/polyfills.d.ts +0 -7
  815. package/esm/tools/utils/polyfills.js +0 -18
  816. package/esm/tools/utils/polyfills.js.map +0 -1
  817. package/esm/tools/utils/responseUtils.d.ts +0 -2
  818. package/esm/tools/utils/responseUtils.js +0 -13
  819. package/esm/tools/utils/responseUtils.js.map +0 -1
  820. package/esm/tools/utils/stringUtils.d.ts +0 -23
  821. package/esm/tools/utils/stringUtils.js +0 -84
  822. package/esm/tools/utils/stringUtils.js.map +0 -1
  823. package/esm/tools/utils/timeUtils.d.ts +0 -53
  824. package/esm/tools/utils/timeUtils.js +0 -84
  825. package/esm/tools/utils/timeUtils.js.map +0 -1
  826. package/esm/tools/utils/timezone.d.ts +0 -1
  827. package/esm/tools/utils/timezone.js +0 -10
  828. package/esm/tools/utils/timezone.js.map +0 -1
  829. package/esm/tools/utils/typeUtils.d.ts +0 -4
  830. package/esm/tools/utils/typeUtils.js +0 -13
  831. package/esm/tools/utils/typeUtils.js.map +0 -1
  832. package/esm/tools/utils/urlPolyfill.d.ts +0 -5
  833. package/esm/tools/utils/urlPolyfill.js +0 -52
  834. package/esm/tools/utils/urlPolyfill.js.map +0 -1
  835. package/esm/tools/valueHistory.d.ts +0 -27
  836. package/esm/tools/valueHistory.js +0 -100
  837. package/esm/tools/valueHistory.js.map +0 -1
  838. package/esm/transport/batch.d.ts +0 -16
  839. package/esm/transport/batch.js +0 -106
  840. package/esm/transport/batch.js.map +0 -1
  841. package/esm/transport/eventBridge.d.ts +0 -21
  842. package/esm/transport/eventBridge.js +0 -41
  843. package/esm/transport/eventBridge.js.map +0 -1
  844. package/esm/transport/flushController.d.ts +0 -65
  845. package/esm/transport/flushController.js +0 -119
  846. package/esm/transport/flushController.js.map +0 -1
  847. package/esm/transport/httpRequest.d.ts +0 -56
  848. package/esm/transport/httpRequest.js +0 -89
  849. package/esm/transport/httpRequest.js.map +0 -1
  850. package/esm/transport/index.d.ts +0 -7
  851. package/esm/transport/index.js +0 -5
  852. package/esm/transport/index.js.map +0 -1
  853. package/esm/transport/sendWithRetryStrategy.d.ts +0 -41
  854. package/esm/transport/sendWithRetryStrategy.js +0 -158
  855. package/esm/transport/sendWithRetryStrategy.js.map +0 -1
  856. package/src/domain/configuration/transportConfiguration.ts +0 -78
  857. package/src/domain/session/oldCookiesMigration.ts +0 -42
  858. package/src/domain/session/sessionStoreOperations.ts +0 -131
  859. package/src/tools/abstractHooks.ts +0 -72
  860. package/src/tools/boundedBuffer.ts +0 -45
  861. package/src/tools/mergeInto.ts +0 -177
  862. package/src/tools/utils/timeUtils.ts +0 -117
  863. package/src/tools/utils/typeUtils.ts +0 -12
@@ -0,0 +1,131 @@
1
+ import { display } from "../../tools/display.mjs";
2
+ import { catchUserErrors } from "../../tools/catchUserErrors.mjs";
3
+ import { isPercentage } from "../../tools/utils/numberUtils.mjs";
4
+ import { objectHasValue } from "../../tools/utils/objectUtils.mjs";
5
+ import { getCurrentSite } from "../../browser/cookie.mjs";
6
+ import { TrackingConsent } from "../trackingConsent.mjs";
7
+ import { isAllowedTrackingOrigins } from "../allowedTrackingOrigins.mjs";
8
+ import "../intakeSites.mjs";
9
+ //#region src/domain/configuration/configuration.ts
10
+ /**
11
+ * Default privacy level for the browser SDK.
12
+ *
13
+ * [Replay Privacy Options](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser/privacy_options) for further information.
14
+ */
15
+ const DefaultPrivacyLevel = {
16
+ ALLOW: "allow",
17
+ MASK: "mask",
18
+ MASK_USER_INPUT: "mask-user-input",
19
+ MASK_UNLESS_ALLOWLISTED: "mask-unless-allowlisted"
20
+ };
21
+ /**
22
+ * Trace context injection option.
23
+ *
24
+ * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.
25
+ */
26
+ const TraceContextInjection = {
27
+ ALL: "all",
28
+ SAMPLED: "sampled"
29
+ };
30
+ function isString(tag, tagName) {
31
+ if (tag !== void 0 && tag !== null && typeof tag !== "string") {
32
+ display.error(`${tagName} must be defined as a string`);
33
+ return false;
34
+ }
35
+ return true;
36
+ }
37
+ function isSampleRate(sampleRate, name) {
38
+ if (sampleRate !== void 0 && !isPercentage(sampleRate)) {
39
+ display.error(`${name} Sample Rate should be a number between 0 and 100`);
40
+ return false;
41
+ }
42
+ return true;
43
+ }
44
+ function validateAndBuildConfiguration(initConfiguration, errorStack) {
45
+ if (!initConfiguration?.clientToken) {
46
+ display.error("Client Token is not configured, we will not send any data.");
47
+ return;
48
+ }
49
+ if (initConfiguration.allowedTrackingOrigins !== void 0 && !Array.isArray(initConfiguration.allowedTrackingOrigins)) {
50
+ display.error("Allowed Tracking Origins must be an array");
51
+ return;
52
+ }
53
+ if (!isSampleRate(initConfiguration.sessionSampleRate, "Session") || !isSampleRate(initConfiguration.telemetrySampleRate, "Telemetry") || !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, "Telemetry Configuration") || !isSampleRate(initConfiguration.telemetryUsageSampleRate, "Telemetry Usage") || !isString(initConfiguration.version, "Version") || !isString(initConfiguration.env, "Env") || !isString(initConfiguration.service, "Service") || !isAllowedTrackingOrigins(initConfiguration, errorStack ?? "")) return;
54
+ if (initConfiguration.trackingConsent !== void 0 && !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {
55
+ display.error("Tracking Consent should be either \"granted\" or \"not-granted\"");
56
+ return;
57
+ }
58
+ return {
59
+ clientToken: initConfiguration.clientToken,
60
+ proxy: initConfiguration.proxy,
61
+ site: initConfiguration.site || "datadoghq.com",
62
+ apiVersion: initConfiguration.apiVersion ?? "v1",
63
+ organizationIdentifier: initConfiguration.organizationIdentifier ?? "default",
64
+ insecureHTTP: initConfiguration.insecureHTTP,
65
+ source: validateSource(initConfiguration.source),
66
+ beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, "beforeSend threw an error:"),
67
+ cookieOptions: buildCookieOptions(initConfiguration),
68
+ sessionPersistence: initConfiguration.sessionPersistence,
69
+ sessionSampleRate: initConfiguration.sessionSampleRate ?? 100,
70
+ telemetrySampleRate: initConfiguration.telemetrySampleRate ?? 20,
71
+ telemetryConfigurationSampleRate: initConfiguration.telemetryConfigurationSampleRate ?? 5,
72
+ telemetryUsageSampleRate: initConfiguration.telemetryUsageSampleRate ?? 5,
73
+ service: initConfiguration.service ?? void 0,
74
+ env: initConfiguration.env ?? void 0,
75
+ version: initConfiguration.version ?? void 0,
76
+ datacenter: initConfiguration.datacenter ?? void 0,
77
+ silentMultipleInit: !!initConfiguration.silentMultipleInit,
78
+ trackingConsent: initConfiguration.trackingConsent ?? TrackingConsent.GRANTED,
79
+ trackAnonymousUser: initConfiguration.trackAnonymousUser ?? true,
80
+ storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,
81
+ /**
82
+ * The source of the SDK, used for support plugins purposes.
83
+ */
84
+ variant: initConfiguration.variant,
85
+ sdkVersion: initConfiguration.sdkVersion,
86
+ replica: initConfiguration.replica
87
+ };
88
+ }
89
+ function buildCookieOptions(initConfiguration) {
90
+ const cookieOptions = {};
91
+ cookieOptions.secure = !!initConfiguration.useSecureSessionCookie || !!initConfiguration.usePartitionedCrossSiteSessionCookie;
92
+ cookieOptions.crossSite = !!initConfiguration.usePartitionedCrossSiteSessionCookie;
93
+ cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;
94
+ if (initConfiguration.trackSessionAcrossSubdomains) {
95
+ const currentSite = getCurrentSite();
96
+ if (!currentSite) return;
97
+ cookieOptions.domain = currentSite;
98
+ }
99
+ return cookieOptions;
100
+ }
101
+ function serializeConfiguration(initConfiguration) {
102
+ return {
103
+ session_sample_rate: initConfiguration.sessionSampleRate,
104
+ telemetry_sample_rate: initConfiguration.telemetrySampleRate,
105
+ telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,
106
+ telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,
107
+ use_before_send: !!initConfiguration.beforeSend,
108
+ use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,
109
+ use_secure_session_cookie: initConfiguration.useSecureSessionCookie,
110
+ use_proxy: !!initConfiguration.proxy,
111
+ silent_multiple_init: initConfiguration.silentMultipleInit,
112
+ track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,
113
+ track_anonymous_user: initConfiguration.trackAnonymousUser,
114
+ session_persistence: Array.isArray(initConfiguration.sessionPersistence) ? initConfiguration.sessionPersistence[0] : initConfiguration.sessionPersistence,
115
+ store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,
116
+ allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,
117
+ tracking_consent: initConfiguration.trackingConsent,
118
+ use_allowed_tracking_origins: Array.isArray(initConfiguration.allowedTrackingOrigins),
119
+ source: initConfiguration.source,
120
+ sdk_version: initConfiguration.sdkVersion,
121
+ variant: initConfiguration.variant
122
+ };
123
+ }
124
+ function validateSource(source) {
125
+ if (source === "flutter" || source === "unity") return source;
126
+ return "browser";
127
+ }
128
+ //#endregion
129
+ export { DefaultPrivacyLevel, TraceContextInjection, isSampleRate, serializeConfiguration, validateAndBuildConfiguration };
130
+
131
+ //# sourceMappingURL=configuration.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.mjs","names":[],"sources":["../../../src/domain/configuration/configuration.ts"],"sourcesContent":["import { catchUserErrors } from '../../tools/catchUserErrors'\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display'\nimport type { RawTelemetryConfiguration } from '../telemetry'\nimport { isPercentage } from '../../tools/utils/numberUtils'\nimport { objectHasValue } from '../../tools/utils/objectUtils'\nimport type { CookieOptions } from '../../browser/cookie'\nimport { getCurrentSite } from '../../browser/cookie'\nimport { TrackingConsent } from '../trackingConsent'\nimport type { SessionPersistence } from '../session/sessionConstants'\nimport type { MatchOption } from '../../tools/matchOption'\nimport { isAllowedTrackingOrigins } from '../allowedTrackingOrigins'\nimport { INTAKE_SITE_US1 } from '../intakeSites'\nimport type { Site } from '../intakeSites'\n\n/**\n * Default privacy level for the browser SDK.\n *\n * [Replay Privacy Options](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser/privacy_options) for further information.\n */\nexport const DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n MASK_UNLESS_ALLOWLISTED: 'mask-unless-allowlisted',\n} as const\nexport type DefaultPrivacyLevel = (typeof DefaultPrivacyLevel)[keyof typeof DefaultPrivacyLevel]\n\n/**\n * Trace context injection option.\n *\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n */\nexport const TraceContextInjection = {\n ALL: 'all',\n SAMPLED: 'sampled',\n} as const\n\n/**\n * Trace context injection option.\n *\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n *\n */\nexport type TraceContextInjection = (typeof TraceContextInjection)[keyof typeof TraceContextInjection]\n\nexport interface InitConfiguration {\n /**\n * The client token for Datadog. Required for authenticating your application with Datadog.\n *\n * @category Authentication\n */\n clientToken: string\n\n /**\n * A callback function that can be used to modify events before they are sent to Datadog.\n *\n * @category Data Collection\n */\n beforeSend?: GenericBeforeSendCallback | undefined\n\n /**\n * The percentage of sessions tracked. A value between 0 and 100.\n *\n * @category Data Collection\n * @defaultValue 100\n */\n sessionSampleRate?: number | undefined\n\n /**\n * The percentage of telemetry events sent. A value between 0 and 100.\n *\n * @category Data Collection\n * @defaultValue 20\n */\n telemetrySampleRate?: number | undefined\n\n /**\n * Initialization fails silently if the RUM Browser SDK is already initialized on the page.\n *\n * @defaultValue false\n */\n silentMultipleInit?: boolean | undefined\n\n /**\n * Which storage strategy to use for persisting sessions. Can be 'cookie', 'local-storage', or 'memory'.\n * When an array is provided, the SDK will attempt each persistence type in the order specified.\n *\n * Important: If you are using the RUM and Logs Browser SDKs, this option must be configured with identical values\n *\n * Note: 'memory' option is only for use with single-page applications. All page loads will start a new session, likely resulting in an increase in total number of RUM sessions\n *\n * @category Session Persistence\n * @defaultValue \"cookie\"\n */\n sessionPersistence?: SessionPersistence | SessionPersistence[] | undefined\n\n /**\n * Allow listening to DOM events dispatched programmatically ([untrusted events](https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted)). Enabling this option can be useful if you heavily rely on programmatic events, such as in an automated UI test environment.\n *\n * @defaultValue false\n */\n allowUntrustedEvents?: boolean | undefined\n\n /**\n * Store global context and user context in localStorage to preserve them along the user navigation.\n * See [Contexts life cycle](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#contexts-life-cycle) for further information.\n *\n * @defaultValue false\n */\n storeContextsAcrossPages?: boolean | undefined\n\n /**\n * Set the initial user tracking consent state.\n * See [User tracking consent](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#user-tracking-consent) for further information.\n *\n * @category Privacy\n * @defaultValue granted\n */\n trackingConsent?: TrackingConsent | undefined\n\n /**\n * List of origins where the SDK is allowed to run when used in a browser extension context.\n * Matches urls against the extensions origin.\n * If not provided and the SDK is running in a browser extension, the SDK will not run.\n */\n allowedTrackingOrigins?: MatchOption[] | undefined\n\n // transport options\n /**\n * Optional proxy URL, for example: https://www.proxy.com/path.\n * See [Proxy Your Browser RUM Data](https://docs.datadoghq.com/real_user_monitoring/guide/proxy-rum-data) for further information.\n *\n * @category Transport\n */\n proxy?: string | ProxyFn | undefined\n\n /**\n * The Datadog [site](https://docs.datadoghq.com/getting_started/site) parameter of your organization.\n *\n * @category Transport\n * @defaultValue datadoghq.com\n */\n site?: Site | undefined\n\n /**\n * The OpenObserve ingestion API version used to build intake URLs.\n *\n * @category Transport\n * @defaultValue v1\n */\n apiVersion?: string | undefined\n\n /**\n * The OpenObserve organization identifier, used as a path segment of intake URLs.\n *\n * @category Transport\n * @defaultValue default\n */\n organizationIdentifier?: string | undefined\n\n /**\n * Send data to the intake over plain HTTP instead of HTTPS. Only intended for local\n * development against a non-TLS OpenObserve instance.\n *\n * @category Transport\n */\n insecureHTTP?: boolean | undefined\n\n // tag and context options\n /**\n * The service name for your application. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\n *\n * @category Data Collection\n */\n service?: string | undefined | null\n\n /**\n * The application’s environment, for example: prod, pre-prod, and staging. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\n *\n * @category Data Collection\n */\n env?: string | undefined | null\n\n /**\n * The application’s version, for example: 1.2.3, 6c44da20, and 2020.02.13. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\n *\n * @category Data Collection\n */\n version?: string | undefined | null\n\n // cookie options\n /**\n * Use a partitioned secure cross-site session cookie. This allows the RUM Browser SDK to run when the site is loaded from another one (iframe). Implies `useSecureSessionCookie`.\n *\n * Important: If you are using the RUM and Logs Browser SDKs, this option must be configured with identical values\n *\n * @category Session Persistence\n * @defaultValue false\n */\n usePartitionedCrossSiteSessionCookie?: boolean | undefined\n\n /**\n * Use a secure session cookie. This disables RUM events sent on insecure (non-HTTPS) connections.\n *\n * Important: If you are using the RUM and Logs Browser SDKs, this option must be configured with identical values\n *\n * @category Session Persistence\n * @defaultValue false\n */\n useSecureSessionCookie?: boolean | undefined\n\n /**\n * Preserve the session across subdomains for the same site.\n *\n * Important: If you are using the RUM and Logs Browser SDKs, this option must be configured with identical values\n *\n * @category Session Persistence\n * @defaultValue false\n */\n trackSessionAcrossSubdomains?: boolean | undefined\n\n /**\n * Track anonymous user for the same site and extend cookie expiration date\n *\n * @category Data Collection\n * @defaultValue true\n */\n trackAnonymousUser?: boolean | undefined\n\n // internal options\n /**\n * [Internal option] Enable experimental features\n *\n * @internal\n */\n enableExperimentalFeatures?: string[] | undefined\n\n /**\n * [Internal option] Configure the dual shipping to another datacenter\n *\n * @internal\n */\n replica?: ReplicaInitConfiguration | undefined\n\n /**\n * [Internal option] Set the datacenter from where the data is dual shipped\n *\n * @internal\n */\n datacenter?: string\n\n /**\n * [Internal option] The percentage of telemetry configuration sent. A value between 0 and 100.\n *\n * @internal\n * @defaultValue 5\n */\n telemetryConfigurationSampleRate?: number\n\n /**\n * [Internal option] The percentage of telemetry usage sent. A value between 0 and 100.\n *\n * @internal\n * @defaultValue 5\n */\n telemetryUsageSampleRate?: number\n\n /**\n * [Internal option] Additional configuration for the SDK.\n *\n * @internal\n */\n source?: 'browser' | 'flutter' | 'unity' | undefined\n\n /**\n * [Internal option] Additional configuration for the SDK.\n *\n * @internal\n */\n sdkVersion?: string | undefined\n\n /**\n * [Internal option] Additional configuration for the SDK.\n *\n * @internal\n */\n variant?: string | undefined\n}\n\n// This type is only used to build the core configuration. Logs and RUM SDKs are using a proper type\n// for this option.\ntype GenericBeforeSendCallback = (event: any, context?: any) => unknown\n\n/**\n * path: /api/vX/product\n * parameters: xxx=yyy&zzz=aaa\n */\nexport type ProxyFn = (options: { path: string; parameters: string; subdomain?: string }) => string\n\n/**\n * @internal\n */\nexport interface ReplicaInitConfiguration {\n applicationId?: string\n clientToken: string\n}\n\nexport type SdkSource = 'browser' | 'flutter' | 'unity'\n\nexport interface Configuration {\n clientToken: string\n datacenter: string | undefined\n proxy: string | ProxyFn | undefined\n site: Site\n apiVersion: string\n organizationIdentifier: string\n insecureHTTP: boolean | undefined\n source: SdkSource\n beforeSend: GenericBeforeSendCallback | undefined\n cookieOptions: CookieOptions | undefined\n sessionPersistence: SessionPersistence | SessionPersistence[] | undefined\n sessionSampleRate: number\n telemetrySampleRate: number\n telemetryConfigurationSampleRate: number\n telemetryUsageSampleRate: number\n service?: string | undefined\n version?: string | undefined\n env?: string | undefined\n silentMultipleInit: boolean\n trackingConsent: TrackingConsent\n storeContextsAcrossPages: boolean\n trackAnonymousUser?: boolean\n\n // internal\n sdkVersion: string | undefined\n variant: string | undefined\n replica: ReplicaInitConfiguration | undefined\n}\n\nfunction isString(tag: unknown, tagName: string): tag is string | undefined | null {\n if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n display.error(`${tagName} must be defined as a string`)\n return false\n }\n return true\n}\n\nexport function isSampleRate(sampleRate: unknown, name: string) {\n if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n display.error(`${name} Sample Rate should be a number between 0 and 100`)\n return false\n }\n return true\n}\n\nexport function validateAndBuildConfiguration(\n initConfiguration: InitConfiguration,\n errorStack?: string\n): Configuration | undefined {\n if (!initConfiguration?.clientToken) {\n display.error('Client Token is not configured, we will not send any data.')\n return\n }\n\n if (\n initConfiguration.allowedTrackingOrigins !== undefined &&\n !Array.isArray(initConfiguration.allowedTrackingOrigins)\n ) {\n display.error('Allowed Tracking Origins must be an array')\n return\n }\n\n if (\n !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||\n !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||\n !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||\n !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||\n !isString(initConfiguration.version, 'Version') ||\n !isString(initConfiguration.env, 'Env') ||\n !isString(initConfiguration.service, 'Service') ||\n !isAllowedTrackingOrigins(initConfiguration, errorStack ?? '')\n ) {\n return\n }\n\n if (\n initConfiguration.trackingConsent !== undefined &&\n !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)\n ) {\n display.error('Tracking Consent should be either \"granted\" or \"not-granted\"')\n return\n }\n\n return {\n clientToken: initConfiguration.clientToken,\n proxy: initConfiguration.proxy,\n site: initConfiguration.site || INTAKE_SITE_US1,\n apiVersion: initConfiguration.apiVersion ?? 'v1',\n organizationIdentifier: initConfiguration.organizationIdentifier ?? 'default',\n insecureHTTP: initConfiguration.insecureHTTP,\n source: validateSource(initConfiguration.source),\n beforeSend:\n initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n cookieOptions: buildCookieOptions(initConfiguration),\n sessionPersistence: initConfiguration.sessionPersistence,\n sessionSampleRate: initConfiguration.sessionSampleRate ?? 100,\n telemetrySampleRate: initConfiguration.telemetrySampleRate ?? 20,\n telemetryConfigurationSampleRate: initConfiguration.telemetryConfigurationSampleRate ?? 5,\n telemetryUsageSampleRate: initConfiguration.telemetryUsageSampleRate ?? 5,\n service: initConfiguration.service ?? undefined,\n env: initConfiguration.env ?? undefined,\n version: initConfiguration.version ?? undefined,\n datacenter: initConfiguration.datacenter ?? undefined,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n trackingConsent: initConfiguration.trackingConsent ?? TrackingConsent.GRANTED,\n trackAnonymousUser: initConfiguration.trackAnonymousUser ?? true,\n storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n\n /**\n * The source of the SDK, used for support plugins purposes.\n */\n variant: initConfiguration.variant,\n sdkVersion: initConfiguration.sdkVersion,\n replica: initConfiguration.replica,\n }\n}\n\nexport function buildCookieOptions(initConfiguration: InitConfiguration): CookieOptions | undefined {\n const cookieOptions: CookieOptions = {}\n\n cookieOptions.secure =\n !!initConfiguration.useSecureSessionCookie || !!initConfiguration.usePartitionedCrossSiteSessionCookie\n cookieOptions.crossSite = !!initConfiguration.usePartitionedCrossSiteSessionCookie\n cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie\n\n if (initConfiguration.trackSessionAcrossSubdomains) {\n const currentSite = getCurrentSite()\n if (!currentSite) {\n return\n }\n cookieOptions.domain = currentSite\n }\n\n return cookieOptions\n}\n\nexport function serializeConfiguration(initConfiguration: InitConfiguration) {\n return {\n session_sample_rate: initConfiguration.sessionSampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: !!initConfiguration.proxy,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n track_anonymous_user: initConfiguration.trackAnonymousUser,\n session_persistence: Array.isArray(initConfiguration.sessionPersistence)\n ? initConfiguration.sessionPersistence[0]\n : initConfiguration.sessionPersistence,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n tracking_consent: initConfiguration.trackingConsent,\n use_allowed_tracking_origins: Array.isArray(initConfiguration.allowedTrackingOrigins),\n source: initConfiguration.source,\n sdk_version: initConfiguration.sdkVersion,\n variant: initConfiguration.variant,\n } satisfies RawTelemetryConfiguration\n}\n\nfunction validateSource(source: string | undefined): SdkSource {\n if (source === 'flutter' || source === 'unity') {\n return source\n }\n return 'browser'\n}\n"],"mappings":";;;;;;;;;;;;;;AAmBA,MAAa,sBAAsB;CACjC,OAAO;CACP,MAAM;CACN,iBAAiB;CACjB,yBAAyB;AAC3B;;;;;;AAQA,MAAa,wBAAwB;CACnC,KAAK;CACL,SAAS;AACX;AAgTA,SAAS,SAAS,KAAc,SAAmD;CACjF,IAAI,QAAQ,KAAA,KAAa,QAAQ,QAAQ,OAAO,QAAQ,UAAU;EAChE,QAAQ,MAAM,GAAG,QAAQ,6BAA6B;EACtD,OAAO;CACT;CACA,OAAO;AACT;AAEA,SAAgB,aAAa,YAAqB,MAAc;CAC9D,IAAI,eAAe,KAAA,KAAa,CAAC,aAAa,UAAU,GAAG;EACzD,QAAQ,MAAM,GAAG,KAAK,kDAAkD;EACxE,OAAO;CACT;CACA,OAAO;AACT;AAEA,SAAgB,8BACd,mBACA,YAC2B;CAC3B,IAAI,CAAC,mBAAmB,aAAa;EACnC,QAAQ,MAAM,4DAA4D;EAC1E;CACF;CAEA,IACE,kBAAkB,2BAA2B,KAAA,KAC7C,CAAC,MAAM,QAAQ,kBAAkB,sBAAsB,GACvD;EACA,QAAQ,MAAM,2CAA2C;EACzD;CACF;CAEA,IACE,CAAC,aAAa,kBAAkB,mBAAmB,SAAS,KAC5D,CAAC,aAAa,kBAAkB,qBAAqB,WAAW,KAChE,CAAC,aAAa,kBAAkB,kCAAkC,yBAAyB,KAC3F,CAAC,aAAa,kBAAkB,0BAA0B,iBAAiB,KAC3E,CAAC,SAAS,kBAAkB,SAAS,SAAS,KAC9C,CAAC,SAAS,kBAAkB,KAAK,KAAK,KACtC,CAAC,SAAS,kBAAkB,SAAS,SAAS,KAC9C,CAAC,yBAAyB,mBAAmB,cAAc,EAAE,GAE7D;CAGF,IACE,kBAAkB,oBAAoB,KAAA,KACtC,CAAC,eAAe,iBAAiB,kBAAkB,eAAe,GAClE;EACA,QAAQ,MAAM,kEAA8D;EAC5E;CACF;CAEA,OAAO;EACL,aAAa,kBAAkB;EAC/B,OAAO,kBAAkB;EACzB,MAAM,kBAAkB,QAAA;EACxB,YAAY,kBAAkB,cAAc;EAC5C,wBAAwB,kBAAkB,0BAA0B;EACpE,cAAc,kBAAkB;EAChC,QAAQ,eAAe,kBAAkB,MAAM;EAC/C,YACE,kBAAkB,cAAc,gBAAgB,kBAAkB,YAAY,4BAA4B;EAC5G,eAAe,mBAAmB,iBAAiB;EACnD,oBAAoB,kBAAkB;EACtC,mBAAmB,kBAAkB,qBAAqB;EAC1D,qBAAqB,kBAAkB,uBAAuB;EAC9D,kCAAkC,kBAAkB,oCAAoC;EACxF,0BAA0B,kBAAkB,4BAA4B;EACxE,SAAS,kBAAkB,WAAW,KAAA;EACtC,KAAK,kBAAkB,OAAO,KAAA;EAC9B,SAAS,kBAAkB,WAAW,KAAA;EACtC,YAAY,kBAAkB,cAAc,KAAA;EAC5C,oBAAoB,CAAC,CAAC,kBAAkB;EACxC,iBAAiB,kBAAkB,mBAAmB,gBAAgB;EACtE,oBAAoB,kBAAkB,sBAAsB;EAC5D,0BAA0B,CAAC,CAAC,kBAAkB;;;;EAK9C,SAAS,kBAAkB;EAC3B,YAAY,kBAAkB;EAC9B,SAAS,kBAAkB;CAC7B;AACF;AAEA,SAAgB,mBAAmB,mBAAiE;CAClG,MAAM,gBAA+B,CAAC;CAEtC,cAAc,SACZ,CAAC,CAAC,kBAAkB,0BAA0B,CAAC,CAAC,kBAAkB;CACpE,cAAc,YAAY,CAAC,CAAC,kBAAkB;CAC9C,cAAc,cAAc,CAAC,CAAC,kBAAkB;CAEhD,IAAI,kBAAkB,8BAA8B;EAClD,MAAM,cAAc,eAAe;EACnC,IAAI,CAAC,aACH;EAEF,cAAc,SAAS;CACzB;CAEA,OAAO;AACT;AAEA,SAAgB,uBAAuB,mBAAsC;CAC3E,OAAO;EACL,qBAAqB,kBAAkB;EACvC,uBAAuB,kBAAkB;EACzC,qCAAqC,kBAAkB;EACvD,6BAA6B,kBAAkB;EAC/C,iBAAiB,CAAC,CAAC,kBAAkB;EACrC,2CAA2C,kBAAkB;EAC7D,2BAA2B,kBAAkB;EAC7C,WAAW,CAAC,CAAC,kBAAkB;EAC/B,sBAAsB,kBAAkB;EACxC,iCAAiC,kBAAkB;EACnD,sBAAsB,kBAAkB;EACxC,qBAAqB,MAAM,QAAQ,kBAAkB,kBAAkB,IACnE,kBAAkB,mBAAmB,KACrC,kBAAkB;EACtB,6BAA6B,CAAC,CAAC,kBAAkB;EACjD,wBAAwB,CAAC,CAAC,kBAAkB;EAC5C,kBAAkB,kBAAkB;EACpC,8BAA8B,MAAM,QAAQ,kBAAkB,sBAAsB;EACpF,QAAQ,kBAAkB;EAC1B,aAAa,kBAAkB;EAC/B,SAAS,kBAAkB;CAC7B;AACF;AAEA,SAAS,eAAe,QAAuC;CAC7D,IAAI,WAAW,aAAa,WAAW,SACrC,OAAO;CAET,OAAO;AACT"}
@@ -0,0 +1,72 @@
1
+ import { generateUUID } from "../../tools/utils/stringUtils.mjs";
2
+ import { normalizeUrl } from "../../tools/utils/urlPolyfill.mjs";
3
+ import { INTAKE_SITE_US1 } from "../intakeSites.mjs";
4
+ import { timeStampNow } from "@openobserve/js-core/time";
5
+ //#region src/domain/configuration/endpointBuilder.ts
6
+ function createEndpointBuilder(configuration, trackType, extraParameters) {
7
+ return {
8
+ build(api, payload) {
9
+ return buildEndpointUrl({
10
+ proxy: configuration.proxy,
11
+ site: configuration.site,
12
+ insecureHTTP: configuration.insecureHTTP,
13
+ path: `/rum/${configuration.apiVersion ?? "v1"}/${configuration.organizationIdentifier ?? "default"}/${trackType}`,
14
+ parameters: buildEndpointParameters(configuration, trackType, api, payload, extraParameters)
15
+ });
16
+ },
17
+ trackType
18
+ };
19
+ }
20
+ /**
21
+ * Build the endpoint for the replica (dual shipping) site, if a replica is configured.
22
+ *
23
+ * The replica always targets the US1 site but keeps the `proxy` and `source` of the main
24
+ * configuration. The RUM track additionally carries the replica `application.id`.
25
+ */
26
+ function createReplicaEndpointBuilder({ replica, proxy, source }, trackType) {
27
+ if (!replica) return;
28
+ return createEndpointBuilder({
29
+ clientToken: replica.clientToken,
30
+ proxy,
31
+ source,
32
+ site: INTAKE_SITE_US1
33
+ }, trackType, trackType === "rum" ? [`application.id=${replica.applicationId}`] : void 0);
34
+ }
35
+ function buildEndpointUrl({ proxy, site = INTAKE_SITE_US1, path, parameters = "", subdomain, insecureHTTP }) {
36
+ let pathAndParameters = path;
37
+ if (parameters) pathAndParameters += `?${parameters}`;
38
+ if (typeof proxy === "string") {
39
+ let url = `${normalizeUrl(proxy)}?o2forward=${encodeURIComponent(pathAndParameters)}`;
40
+ if (subdomain) url += `&o2forwardSubdomain=${subdomain}`;
41
+ return url;
42
+ }
43
+ if (typeof proxy === "function") return proxy({
44
+ path,
45
+ parameters,
46
+ subdomain
47
+ });
48
+ return `${insecureHTTP ? "http" : "https"}://${site}${pathAndParameters}`;
49
+ }
50
+ /**
51
+ * Build parameters to be used for an intake request. Parameters should be re-built for each
52
+ * request, as they change randomly.
53
+ */
54
+ function buildEndpointParameters({ clientToken, source = "browser" }, trackType, api, { retry, encoding }, extraParameters = []) {
55
+ const parameters = [
56
+ `o2source=${source}`,
57
+ `o2-api-key=${clientToken}`,
58
+ `o2-evp-origin-version=${encodeURIComponent("7.4.0")}`,
59
+ "o2-evp-origin=browser",
60
+ `o2-request-id=${generateUUID()}`
61
+ ].concat(extraParameters);
62
+ if (encoding) parameters.push(`o2-evp-encoding=${encoding}`);
63
+ if (trackType === "rum") {
64
+ parameters.push(`batch_time=${timeStampNow()}`, `_o2.api=${api}`);
65
+ if (retry) parameters.push(`_o2.retry_count=${retry.count}`, `_o2.retry_after=${retry.lastFailureStatus}`);
66
+ }
67
+ return parameters.join("&");
68
+ }
69
+ //#endregion
70
+ export { buildEndpointUrl, createEndpointBuilder, createReplicaEndpointBuilder };
71
+
72
+ //# sourceMappingURL=endpointBuilder.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpointBuilder.mjs","names":[],"sources":["../../../src/domain/configuration/endpointBuilder.ts"],"sourcesContent":["import { timeStampNow } from '@openobserve/js-core/time'\nimport type { Payload } from '../../transport'\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill'\nimport { generateUUID } from '../../tools/utils/stringUtils'\nimport type { Site } from '../intakeSites'\nimport { INTAKE_SITE_US1 } from '../intakeSites'\nimport type { Configuration, ProxyFn } from './configuration'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nexport type TrackType = 'logs' | 'rum' | 'replay' | 'profile' | 'exposures' | 'flagevaluation' | 'debugger'\nexport type ApiType =\n | 'fetch'\n | 'beacon'\n // 'manual' reflects that the request have been sent manually, outside of the SDK (ex: via curl or\n // a Node.js script).\n | 'manual'\n\n/**\n * Source values supported by the transport layer for the `o2source` URL parameter.\n *\n * `'dd_debugger'` is internal to the Live Debugger SDK and is not part of\n * `InitConfiguration.source`. It is passed directly to `createEndpointBuilder`\n * by the debugger transport.\n */\nexport type TransportSource = 'browser' | 'flutter' | 'unity' | 'dd_debugger'\n\ninterface EndpointBuilderConfiguration {\n clientToken: string\n proxy?: string | ProxyFn\n site?: Site\n source?: TransportSource\n apiVersion?: string\n organizationIdentifier?: string\n insecureHTTP?: boolean\n}\n\nexport type EndpointBuilder = ReturnType<typeof createEndpointBuilder>\n\nexport function createEndpointBuilder(\n configuration: EndpointBuilderConfiguration,\n trackType: TrackType,\n extraParameters?: string[]\n) {\n return {\n build(api: ApiType, payload: Payload) {\n return buildEndpointUrl({\n proxy: configuration.proxy,\n site: configuration.site,\n insecureHTTP: configuration.insecureHTTP,\n path: `/rum/${configuration.apiVersion ?? 'v1'}/${configuration.organizationIdentifier ?? 'default'}/${trackType}`,\n parameters: buildEndpointParameters(configuration, trackType, api, payload, extraParameters),\n })\n },\n trackType,\n }\n}\n\n/**\n * Build the endpoint for the replica (dual shipping) site, if a replica is configured.\n *\n * The replica always targets the US1 site but keeps the `proxy` and `source` of the main\n * configuration. The RUM track additionally carries the replica `application.id`.\n */\nexport function createReplicaEndpointBuilder({ replica, proxy, source }: Configuration, trackType: TrackType) {\n if (!replica) {\n return\n }\n return createEndpointBuilder(\n {\n clientToken: replica.clientToken,\n proxy,\n source,\n site: INTAKE_SITE_US1,\n },\n trackType,\n trackType === 'rum' ? [`application.id=${replica.applicationId}`] : undefined\n )\n}\n\nexport interface BuildEndpointUrlOptions {\n proxy?: string | ProxyFn\n site: Site | undefined\n subdomain?: string\n path: string\n parameters?: string\n insecureHTTP?: boolean\n}\n\nexport function buildEndpointUrl({\n proxy,\n site = INTAKE_SITE_US1,\n path,\n parameters = '',\n subdomain,\n insecureHTTP,\n}: BuildEndpointUrlOptions): string {\n let pathAndParameters = path\n if (parameters) {\n pathAndParameters += `?${parameters}`\n }\n\n if (typeof proxy === 'string') {\n let url = `${normalizeUrl(proxy)}?o2forward=${encodeURIComponent(pathAndParameters)}`\n if (subdomain) {\n url += `&o2forwardSubdomain=${subdomain}`\n }\n return url\n }\n\n if (typeof proxy === 'function') {\n return proxy({ path, parameters, subdomain })\n }\n\n // OpenObserve: the configured `site` is used verbatim as the intake host, without the\n // Datadog `browser-intake-` domain construction or subdomain prefixes.\n const protocol = insecureHTTP ? 'http' : 'https'\n return `${protocol}://${site}${pathAndParameters}`\n}\n\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters(\n { clientToken, source = 'browser' }: EndpointBuilderConfiguration,\n trackType: TrackType,\n api: ApiType,\n { retry, encoding }: Payload,\n extraParameters: string[] = []\n) {\n const parameters = [\n `o2source=${source}`,\n `o2-api-key=${clientToken}`,\n `o2-evp-origin-version=${encodeURIComponent(__BUILD_ENV__SDK_VERSION__)}`,\n 'o2-evp-origin=browser',\n `o2-request-id=${generateUUID()}`,\n ].concat(extraParameters)\n\n if (encoding) {\n parameters.push(`o2-evp-encoding=${encoding}`)\n }\n\n if (trackType === 'rum') {\n parameters.push(`batch_time=${timeStampNow()}`, `_o2.api=${api}`)\n\n if (retry) {\n parameters.push(`_o2.retry_count=${retry.count}`, `_o2.retry_after=${retry.lastFailureStatus}`)\n }\n }\n\n return parameters.join('&')\n}\n"],"mappings":";;;;;AAwCA,SAAgB,sBACd,eACA,WACA,iBACA;CACA,OAAO;EACL,MAAM,KAAc,SAAkB;GACpC,OAAO,iBAAiB;IACtB,OAAO,cAAc;IACrB,MAAM,cAAc;IACpB,cAAc,cAAc;IAC5B,MAAM,QAAQ,cAAc,cAAc,KAAK,GAAG,cAAc,0BAA0B,UAAU,GAAG;IACvG,YAAY,wBAAwB,eAAe,WAAW,KAAK,SAAS,eAAe;GAC7F,CAAC;EACH;EACA;CACF;AACF;;;;;;;AAQA,SAAgB,6BAA6B,EAAE,SAAS,OAAO,UAAyB,WAAsB;CAC5G,IAAI,CAAC,SACH;CAEF,OAAO,sBACL;EACE,aAAa,QAAQ;EACrB;EACA;EACA,MAAM;CACR,GACA,WACA,cAAc,QAAQ,CAAC,kBAAkB,QAAQ,eAAe,IAAI,KAAA,CACtE;AACF;AAWA,SAAgB,iBAAiB,EAC/B,OACA,OAAO,iBACP,MACA,aAAa,IACb,WACA,gBACkC;CAClC,IAAI,oBAAoB;CACxB,IAAI,YACF,qBAAqB,IAAI;CAG3B,IAAI,OAAO,UAAU,UAAU;EAC7B,IAAI,MAAM,GAAG,aAAa,KAAK,EAAE,aAAa,mBAAmB,iBAAiB;EAClF,IAAI,WACF,OAAO,uBAAuB;EAEhC,OAAO;CACT;CAEA,IAAI,OAAO,UAAU,YACnB,OAAO,MAAM;EAAE;EAAM;EAAY;CAAU,CAAC;CAM9C,OAAO,GADU,eAAe,SAAS,QACtB,KAAK,OAAO;AACjC;;;;;AAMA,SAAS,wBACP,EAAE,aAAa,SAAS,aACxB,WACA,KACA,EAAE,OAAO,YACT,kBAA4B,CAAC,GAC7B;CACA,MAAM,aAAa;EACjB,YAAY;EACZ,cAAc;EACd,yBAAyB,mBAAA,OAA6C;EACtE;EACA,iBAAiB,aAAa;CAChC,CAAC,CAAC,OAAO,eAAe;CAExB,IAAI,UACF,WAAW,KAAK,mBAAmB,UAAU;CAG/C,IAAI,cAAc,OAAO;EACvB,WAAW,KAAK,cAAc,aAAa,KAAK,WAAW,KAAK;EAEhE,IAAI,OACF,WAAW,KAAK,mBAAmB,MAAM,SAAS,mBAAmB,MAAM,mBAAmB;CAElG;CAEA,OAAO,WAAW,KAAK,GAAG;AAC5B"}
@@ -0,0 +1,14 @@
1
+ import { globalObject } from "../../tools/globalObject.mjs";
2
+ //#region src/domain/connectivity/connectivity.ts
3
+ function getConnectivity() {
4
+ const navigator = globalObject.navigator;
5
+ return {
6
+ status: navigator.onLine ? "connected" : "not_connected",
7
+ interfaces: navigator.connection?.type ? [navigator.connection.type] : void 0,
8
+ effective_type: navigator.connection?.effectiveType
9
+ };
10
+ }
11
+ //#endregion
12
+ export { getConnectivity };
13
+
14
+ //# sourceMappingURL=connectivity.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectivity.mjs","names":[],"sources":["../../../src/domain/connectivity/connectivity.ts"],"sourcesContent":["import type { EffectiveType, NetworkInterface } from '../../browser/browser.types'\nimport { globalObject } from '../../tools/globalObject'\n\nexport interface Connectivity {\n status: 'connected' | 'not_connected'\n interfaces?: NetworkInterface[]\n effective_type?: EffectiveType\n [key: string]: unknown\n}\n\nexport function getConnectivity(): Connectivity {\n const navigator = globalObject.navigator\n\n return {\n status: navigator.onLine ? 'connected' : 'not_connected',\n interfaces: navigator.connection?.type ? [navigator.connection.type] : undefined,\n effective_type: navigator.connection?.effectiveType,\n }\n}\n"],"mappings":";;AAUA,SAAgB,kBAAgC;CAC9C,MAAM,YAAY,aAAa;CAE/B,OAAO;EACL,QAAQ,UAAU,SAAS,cAAc;EACzC,YAAY,UAAU,YAAY,OAAO,CAAC,UAAU,WAAW,IAAI,IAAI,KAAA;EACvE,gBAAgB,UAAU,YAAY;CACxC;AACF"}
@@ -0,0 +1,69 @@
1
+ import { callMonitored } from "../../tools/monitor.mjs";
2
+ import { Observable, mergeObservables } from "../../tools/observable.mjs";
3
+ import { computeStackTrace } from "../../tools/stackTrace/computeStackTrace.mjs";
4
+ import { createHandlingStack, formatErrorMessage } from "../../tools/stackTrace/handlingStack.mjs";
5
+ import { jsonStringify } from "../../tools/serialisation/jsonStringify.mjs";
6
+ import { sanitize } from "../../tools/serialisation/sanitize.mjs";
7
+ import { computeRawError, isError } from "../error/error.mjs";
8
+ import { ErrorSource } from "../error/error.types.mjs";
9
+ import { ConsoleApiName, globalConsole } from "@openobserve/js-core/util";
10
+ import { clocksNow } from "@openobserve/js-core/time";
11
+ //#region src/domain/console/consoleObservable.ts
12
+ let consoleObservablesByApi = {};
13
+ function initConsoleObservable(apis) {
14
+ return mergeObservables(...apis.map((api) => {
15
+ if (!consoleObservablesByApi[api]) consoleObservablesByApi[api] = createConsoleObservable(api);
16
+ return consoleObservablesByApi[api];
17
+ }));
18
+ }
19
+ function createConsoleObservable(api) {
20
+ return new Observable((observable) => {
21
+ const originalConsoleApi = globalConsole[api];
22
+ globalConsole[api] = (...params) => {
23
+ originalConsoleApi.apply(console, params);
24
+ const handlingStack = createHandlingStack("console error");
25
+ callMonitored(() => {
26
+ observable.notify(buildConsoleLog(params, api, handlingStack));
27
+ });
28
+ };
29
+ return () => {
30
+ globalConsole[api] = originalConsoleApi;
31
+ };
32
+ });
33
+ }
34
+ function buildConsoleLog(params, api, handlingStack) {
35
+ const message = params.map((param) => formatConsoleParameters(param)).join(" ");
36
+ if (api === ConsoleApiName.error) {
37
+ const rawError = computeRawError({
38
+ originalError: params.find(isError),
39
+ handlingStack,
40
+ startClocks: clocksNow(),
41
+ source: ErrorSource.CONSOLE,
42
+ handling: "handled",
43
+ nonErrorPrefix: "Provided",
44
+ useFallbackStack: false
45
+ });
46
+ rawError.message = message;
47
+ return {
48
+ api,
49
+ message,
50
+ handlingStack,
51
+ error: rawError
52
+ };
53
+ }
54
+ return {
55
+ api,
56
+ message,
57
+ error: void 0,
58
+ handlingStack
59
+ };
60
+ }
61
+ function formatConsoleParameters(param) {
62
+ if (typeof param === "string") return sanitize(param);
63
+ if (isError(param)) return formatErrorMessage(computeStackTrace(param));
64
+ return jsonStringify(sanitize(param), void 0, 2);
65
+ }
66
+ //#endregion
67
+ export { initConsoleObservable };
68
+
69
+ //# sourceMappingURL=consoleObservable.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consoleObservable.mjs","names":[],"sources":["../../../src/domain/console/consoleObservable.ts"],"sourcesContent":["import { clocksNow } from '@openobserve/js-core/time'\nimport { ConsoleApiName, globalConsole } from '@openobserve/js-core/util'\nimport { isError, computeRawError } from '../error/error'\nimport { Observable, mergeObservables } from '../../tools/observable'\nimport { callMonitored } from '../../tools/monitor'\nimport { sanitize } from '../../tools/serialisation/sanitize'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport type { RawError } from '../error/error.types'\nimport { ErrorHandling, ErrorSource, NonErrorPrefix } from '../error/error.types'\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { createHandlingStack, formatErrorMessage } from '../../tools/stackTrace/handlingStack'\n\nexport type ConsoleLog = NonErrorConsoleLog | ErrorConsoleLog\n\ninterface NonErrorConsoleLog extends ConsoleLogBase {\n api: Exclude<ConsoleApiName, typeof ConsoleApiName.error>\n error: undefined\n}\n\nexport interface ErrorConsoleLog extends ConsoleLogBase {\n api: typeof ConsoleApiName.error\n error: RawError\n}\n\ninterface ConsoleLogBase {\n message: string\n api: ConsoleApiName\n handlingStack: string\n}\n\ntype ConsoleLogForApi<T extends ConsoleApiName> = T extends typeof ConsoleApiName.error\n ? ErrorConsoleLog\n : NonErrorConsoleLog\n\nlet consoleObservablesByApi: { [K in ConsoleApiName]?: Observable<ConsoleLogForApi<K>> } = {}\n\nexport function initConsoleObservable<T extends ConsoleApiName[]>(apis: T): Observable<ConsoleLogForApi<T[number]>> {\n const consoleObservables = apis.map((api) => {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api) as any // we are sure that the observable created for this api will yield the expected ConsoleLog type\n }\n return consoleObservablesByApi[api] as unknown as Observable<ConsoleLogForApi<T[number]>>\n })\n\n return mergeObservables(...consoleObservables)\n}\n\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {}\n}\n\nfunction createConsoleObservable(api: ConsoleApiName) {\n return new Observable<ConsoleLog>((observable) => {\n const originalConsoleApi = globalConsole[api]\n\n globalConsole[api] = (...params: unknown[]) => {\n originalConsoleApi.apply(console, params)\n const handlingStack = createHandlingStack('console error')\n\n callMonitored(() => {\n observable.notify(buildConsoleLog(params, api, handlingStack))\n })\n }\n\n return () => {\n globalConsole[api] = originalConsoleApi\n }\n })\n}\n\nfunction buildConsoleLog(params: unknown[], api: ConsoleApiName, handlingStack: string): ConsoleLog {\n const message = params.map((param) => formatConsoleParameters(param)).join(' ')\n\n if (api === ConsoleApiName.error) {\n const firstErrorParam = params.find(isError)\n\n const rawError = computeRawError({\n originalError: firstErrorParam,\n handlingStack,\n startClocks: clocksNow(),\n source: ErrorSource.CONSOLE,\n handling: ErrorHandling.HANDLED,\n nonErrorPrefix: NonErrorPrefix.PROVIDED,\n\n // if no good stack is computed from the error, let's not use the fallback stack message\n // advising the user to use an instance of Error, as console.error is commonly used without an\n // Error instance.\n useFallbackStack: false,\n })\n\n // Use the full log message as the error message instead of just the error instance message.\n rawError.message = message\n\n return {\n api,\n message,\n handlingStack,\n error: rawError,\n }\n }\n\n return {\n api,\n message,\n error: undefined,\n handlingStack,\n }\n}\n\nfunction formatConsoleParameters(param: unknown) {\n if (typeof param === 'string') {\n return sanitize(param)\n }\n if (isError(param)) {\n return formatErrorMessage(computeStackTrace(param))\n }\n return jsonStringify(sanitize(param), undefined, 2)\n}\n"],"mappings":";;;;;;;;;;;AAkCA,IAAI,0BAAuF,CAAC;AAE5F,SAAgB,sBAAkD,MAAkD;CAQlH,OAAO,iBAAiB,GAPG,KAAK,KAAK,QAAQ;EAC3C,IAAI,CAAC,wBAAwB,MAC3B,wBAAwB,OAAO,wBAAwB,GAAG;EAE5D,OAAO,wBAAwB;CACjC,CAE4C,CAAC;AAC/C;AAMA,SAAS,wBAAwB,KAAqB;CACpD,OAAO,IAAI,YAAwB,eAAe;EAChD,MAAM,qBAAqB,cAAc;EAEzC,cAAc,QAAQ,GAAG,WAAsB;GAC7C,mBAAmB,MAAM,SAAS,MAAM;GACxC,MAAM,gBAAgB,oBAAoB,eAAe;GAEzD,oBAAoB;IAClB,WAAW,OAAO,gBAAgB,QAAQ,KAAK,aAAa,CAAC;GAC/D,CAAC;EACH;EAEA,aAAa;GACX,cAAc,OAAO;EACvB;CACF,CAAC;AACH;AAEA,SAAS,gBAAgB,QAAmB,KAAqB,eAAmC;CAClG,MAAM,UAAU,OAAO,KAAK,UAAU,wBAAwB,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;CAE9E,IAAI,QAAQ,eAAe,OAAO;EAGhC,MAAM,WAAW,gBAAgB;GAC/B,eAHsB,OAAO,KAAK,OAGL;GAC7B;GACA,aAAa,UAAU;GACvB,QAAQ,YAAY;GACpB,UAAA;GACA,gBAAA;GAKA,kBAAkB;EACpB,CAAC;EAGD,SAAS,UAAU;EAEnB,OAAO;GACL;GACA;GACA;GACA,OAAO;EACT;CACF;CAEA,OAAO;EACL;EACA;EACA,OAAO,KAAA;EACP;CACF;AACF;AAEA,SAAS,wBAAwB,OAAgB;CAC/C,IAAI,OAAO,UAAU,UACnB,OAAO,SAAS,KAAK;CAEvB,IAAI,QAAQ,KAAK,GACf,OAAO,mBAAmB,kBAAkB,KAAK,CAAC;CAEpD,OAAO,cAAc,SAAS,KAAK,GAAG,KAAA,GAAW,CAAC;AACpD"}
@@ -0,0 +1,25 @@
1
+ //#region src/domain/context/contextConstants.ts
2
+ let CustomerDataType = /* @__PURE__ */ function(CustomerDataType) {
3
+ CustomerDataType[CustomerDataType["FeatureFlag"] = 0] = "FeatureFlag";
4
+ CustomerDataType[CustomerDataType["User"] = 1] = "User";
5
+ CustomerDataType[CustomerDataType["GlobalContext"] = 2] = "GlobalContext";
6
+ CustomerDataType[CustomerDataType["View"] = 3] = "View";
7
+ CustomerDataType[CustomerDataType["Account"] = 4] = "Account";
8
+ return CustomerDataType;
9
+ }({});
10
+ const CustomerContextKey = {
11
+ userContext: "userContext",
12
+ globalContext: "globalContext",
13
+ accountContext: "accountContext"
14
+ };
15
+ const ContextManagerMethod = {
16
+ getContext: "getContext",
17
+ setContext: "setContext",
18
+ setContextProperty: "setContextProperty",
19
+ removeContextProperty: "removeContextProperty",
20
+ clearContext: "clearContext"
21
+ };
22
+ //#endregion
23
+ export { ContextManagerMethod, CustomerContextKey, CustomerDataType };
24
+
25
+ //# sourceMappingURL=contextConstants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextConstants.mjs","names":[],"sources":["../../../src/domain/context/contextConstants.ts"],"sourcesContent":["export const enum CustomerDataType {\n FeatureFlag,\n User,\n GlobalContext,\n View,\n Account,\n}\n\n// Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes\nexport const CustomerContextKey = {\n userContext: 'userContext',\n globalContext: 'globalContext',\n accountContext: 'accountContext',\n} as const\n\nexport type CustomerContextKey = (typeof CustomerContextKey)[keyof typeof CustomerContextKey]\n\n// Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes\nexport const ContextManagerMethod = {\n getContext: 'getContext',\n setContext: 'setContext',\n setContextProperty: 'setContextProperty',\n removeContextProperty: 'removeContextProperty',\n clearContext: 'clearContext',\n} as const\n\nexport type ContextManagerMethod = (typeof ContextManagerMethod)[keyof typeof ContextManagerMethod]\n"],"mappings":";AAAA,IAAkB,mBAAX,yBAAA,kBAAA;CACL,iBAAA,iBAAA,iBAAA,KAAA;CACA,iBAAA,iBAAA,UAAA,KAAA;CACA,iBAAA,iBAAA,mBAAA,KAAA;CACA,iBAAA,iBAAA,UAAA,KAAA;CACA,iBAAA,iBAAA,aAAA,KAAA;;AACF,EAAA,CAAA,CAAA;AAGA,MAAa,qBAAqB;CAChC,aAAa;CACb,eAAe;CACf,gBAAgB;AAClB;AAKA,MAAa,uBAAuB;CAClC,YAAY;CACZ,YAAY;CACZ,oBAAoB;CACpB,uBAAuB;CACvB,cAAc;AAChB"}
@@ -0,0 +1,55 @@
1
+ import { display } from "../../tools/display.mjs";
2
+ import { Observable } from "../../tools/observable.mjs";
3
+ import { sanitize } from "../../tools/serialisation/sanitize.mjs";
4
+ import { checkContext } from "./contextUtils.mjs";
5
+ import { deepClone } from "@openobserve/js-core/util";
6
+ //#region src/domain/context/contextManager.ts
7
+ function ensureProperties(context, propertiesConfig, name) {
8
+ const newContext = { ...context };
9
+ for (const [key, { required, type }] of Object.entries(propertiesConfig)) {
10
+ /**
11
+ * Ensure specified properties are strings as defined here:
12
+ * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes
13
+ */
14
+ if (type === "string" && !isDefined(newContext[key])) newContext[key] = String(newContext[key]);
15
+ if (required && isDefined(newContext[key])) display.warn(`The property ${key} of ${name} is required; context will not be sent to the intake.`);
16
+ }
17
+ return newContext;
18
+ }
19
+ function isDefined(value) {
20
+ return value === void 0 || value === null || value === "";
21
+ }
22
+ function createContextManager(name = "", { propertiesConfig = {} } = {}) {
23
+ let context = {};
24
+ const changeObservable = new Observable();
25
+ const contextManager = {
26
+ getContext: () => deepClone(context),
27
+ setContext: (newContext) => {
28
+ if (checkContext(newContext)) context = sanitize(ensureProperties(newContext, propertiesConfig, name));
29
+ else contextManager.clearContext();
30
+ changeObservable.notify();
31
+ },
32
+ setContextProperty: (key, property) => {
33
+ context = sanitize(ensureProperties({
34
+ ...context,
35
+ [key]: property
36
+ }, propertiesConfig, name));
37
+ changeObservable.notify();
38
+ },
39
+ removeContextProperty: (key) => {
40
+ delete context[key];
41
+ ensureProperties(context, propertiesConfig, name);
42
+ changeObservable.notify();
43
+ },
44
+ clearContext: () => {
45
+ context = {};
46
+ changeObservable.notify();
47
+ },
48
+ changeObservable
49
+ };
50
+ return contextManager;
51
+ }
52
+ //#endregion
53
+ export { createContextManager };
54
+
55
+ //# sourceMappingURL=contextManager.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextManager.mjs","names":[],"sources":["../../../src/domain/context/contextManager.ts"],"sourcesContent":["import { deepClone } from '@openobserve/js-core/util'\nimport { sanitize } from '../../tools/serialisation/sanitize'\nimport type { Context } from '../../tools/serialisation/context'\nimport { Observable } from '../../tools/observable'\nimport { display } from '../../tools/display'\nimport { checkContext } from './contextUtils'\n\nexport type ContextManager = ReturnType<typeof createContextManager>\n\nexport interface PropertiesConfig {\n [key: string]: {\n required?: boolean\n type?: 'string'\n }\n}\n\nfunction ensureProperties(context: Context, propertiesConfig: PropertiesConfig, name: string) {\n const newContext = { ...context }\n\n for (const [key, { required, type }] of Object.entries(propertiesConfig)) {\n /**\n * Ensure specified properties are strings as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\n\n if (type === 'string' && !isDefined(newContext[key])) {\n /* eslint-disable @typescript-eslint/no-base-to-string */\n newContext[key] = String(newContext[key])\n }\n\n if (required && isDefined(newContext[key])) {\n display.warn(`The property ${key} of ${name} is required; context will not be sent to the intake.`)\n }\n }\n\n return newContext\n}\n\nfunction isDefined(value: unknown) {\n return value === undefined || value === null || value === ''\n}\n\nexport function createContextManager(\n name: string = '',\n {\n propertiesConfig = {},\n }: {\n propertiesConfig?: PropertiesConfig\n } = {}\n) {\n let context: Context = {}\n const changeObservable = new Observable<void>()\n\n const contextManager = {\n getContext: () => deepClone(context),\n\n setContext: (newContext: unknown) => {\n if (checkContext(newContext)) {\n context = sanitize(ensureProperties(newContext, propertiesConfig, name))\n } else {\n contextManager.clearContext()\n }\n changeObservable.notify()\n },\n\n setContextProperty: (key: string, property: any) => {\n context = sanitize(ensureProperties({ ...context, [key]: property }, propertiesConfig, name))\n changeObservable.notify()\n },\n\n removeContextProperty: (key: string) => {\n delete context[key]\n ensureProperties(context, propertiesConfig, name)\n changeObservable.notify()\n },\n\n clearContext: () => {\n context = {}\n changeObservable.notify()\n },\n\n changeObservable,\n }\n return contextManager\n}\n"],"mappings":";;;;;;AAgBA,SAAS,iBAAiB,SAAkB,kBAAoC,MAAc;CAC5F,MAAM,aAAa,EAAE,GAAG,QAAQ;CAEhC,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,WAAW,OAAO,QAAQ,gBAAgB,GAAG;;;;;EAMxE,IAAI,SAAS,YAAY,CAAC,UAAU,WAAW,IAAI,GAEjD,WAAW,OAAO,OAAO,WAAW,IAAI;EAG1C,IAAI,YAAY,UAAU,WAAW,IAAI,GACvC,QAAQ,KAAK,gBAAgB,IAAI,MAAM,KAAK,sDAAsD;CAEtG;CAEA,OAAO;AACT;AAEA,SAAS,UAAU,OAAgB;CACjC,OAAO,UAAU,KAAA,KAAa,UAAU,QAAQ,UAAU;AAC5D;AAEA,SAAgB,qBACd,OAAe,IACf,EACE,mBAAmB,CAAC,MAGlB,CAAC,GACL;CACA,IAAI,UAAmB,CAAC;CACxB,MAAM,mBAAmB,IAAI,WAAiB;CAE9C,MAAM,iBAAiB;EACrB,kBAAkB,UAAU,OAAO;EAEnC,aAAa,eAAwB;GACnC,IAAI,aAAa,UAAU,GACzB,UAAU,SAAS,iBAAiB,YAAY,kBAAkB,IAAI,CAAC;QAEvE,eAAe,aAAa;GAE9B,iBAAiB,OAAO;EAC1B;EAEA,qBAAqB,KAAa,aAAkB;GAClD,UAAU,SAAS,iBAAiB;IAAE,GAAG;KAAU,MAAM;GAAS,GAAG,kBAAkB,IAAI,CAAC;GAC5F,iBAAiB,OAAO;EAC1B;EAEA,wBAAwB,QAAgB;GACtC,OAAO,QAAQ;GACf,iBAAiB,SAAS,kBAAkB,IAAI;GAChD,iBAAiB,OAAO;EAC1B;EAEA,oBAAoB;GAClB,UAAU,CAAC;GACX,iBAAiB,OAAO;EAC1B;EAEA;CACF;CACA,OAAO;AACT"}
@@ -0,0 +1,15 @@
1
+ import { display } from "../../tools/display.mjs";
2
+ import { getType } from "@openobserve/js-core/util";
3
+ //#region src/domain/context/contextUtils.ts
4
+ /**
5
+ * Simple check to ensure an object is a valid context
6
+ */
7
+ function checkContext(maybeContext) {
8
+ const isValid = getType(maybeContext) === "object";
9
+ if (!isValid) display.error("Unsupported context:", maybeContext);
10
+ return isValid;
11
+ }
12
+ //#endregion
13
+ export { checkContext };
14
+
15
+ //# sourceMappingURL=contextUtils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextUtils.mjs","names":[],"sources":["../../../src/domain/context/contextUtils.ts"],"sourcesContent":["import { getType } from '@openobserve/js-core/util'\nimport type { Context } from '../../tools/serialisation/context'\nimport { display } from '../../tools/display'\n\n/**\n * Simple check to ensure an object is a valid context\n */\nexport function checkContext(maybeContext: unknown): maybeContext is Context {\n const isValid = getType(maybeContext) === 'object'\n if (!isValid) {\n display.error('Unsupported context:', maybeContext)\n }\n return isValid\n}\n"],"mappings":";;;;;;AAOA,SAAgB,aAAa,cAAgD;CAC3E,MAAM,UAAU,QAAQ,YAAY,MAAM;CAC1C,IAAI,CAAC,SACH,QAAQ,MAAM,wBAAwB,YAAY;CAEpD,OAAO;AACT"}
@@ -0,0 +1,19 @@
1
+ import { monitor } from "../../tools/monitor.mjs";
2
+ import { addTelemetryUsage } from "../telemetry/telemetry.mjs";
3
+ //#region src/domain/context/defineContextMethod.ts
4
+ function defineContextMethod(getStrategy, contextName, methodName, usage) {
5
+ return monitor((...args) => {
6
+ if (usage) addTelemetryUsage({ feature: usage });
7
+ return getStrategy()[contextName][methodName](...args);
8
+ });
9
+ }
10
+ function bufferContextCalls(preStartContextManager, name, bufferApiCalls) {
11
+ preStartContextManager.changeObservable.subscribe(() => {
12
+ const context = preStartContextManager.getContext();
13
+ bufferApiCalls.notify((startResult) => startResult[name].setContext(context));
14
+ });
15
+ }
16
+ //#endregion
17
+ export { bufferContextCalls, defineContextMethod };
18
+
19
+ //# sourceMappingURL=defineContextMethod.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineContextMethod.mjs","names":[],"sources":["../../../src/domain/context/defineContextMethod.ts"],"sourcesContent":["import type { RawTelemetryUsage, RawTelemetryUsageFeature } from '../telemetry'\nimport { addTelemetryUsage } from '../telemetry'\nimport { monitor } from '../../tools/monitor'\nimport type { BufferedObservable } from '../../tools/observable'\nimport type { ContextManager } from './contextManager'\nimport type { ContextManagerMethod, CustomerContextKey } from './contextConstants'\n\nexport function defineContextMethod<MethodName extends ContextManagerMethod, Key extends CustomerContextKey>(\n getStrategy: () => Record<Key, ContextManager>,\n contextName: Key,\n methodName: MethodName,\n usage?: RawTelemetryUsageFeature\n): ContextManager[MethodName] {\n return monitor((...args: any[]) => {\n if (usage) {\n addTelemetryUsage({ feature: usage } as RawTelemetryUsage)\n }\n return (getStrategy()[contextName][methodName] as (...args: unknown[]) => unknown)(...args)\n }) as ContextManager[MethodName]\n}\n\nexport function bufferContextCalls<Key extends string, StartResult extends Record<Key, ContextManager>>(\n preStartContextManager: ContextManager,\n name: Key,\n bufferApiCalls: BufferedObservable<(startResult: StartResult) => void>\n) {\n preStartContextManager.changeObservable.subscribe(() => {\n const context = preStartContextManager.getContext()\n bufferApiCalls.notify((startResult) => startResult[name].setContext(context))\n })\n}\n"],"mappings":";;;AAOA,SAAgB,oBACd,aACA,aACA,YACA,OAC4B;CAC5B,OAAO,SAAS,GAAG,SAAgB;EACjC,IAAI,OACF,kBAAkB,EAAE,SAAS,MAAM,CAAsB;EAE3D,OAAQ,YAAY,CAAC,CAAC,YAAY,CAAC,WAAW,CAAqC,GAAG,IAAI;CAC5F,CAAC;AACH;AAEA,SAAgB,mBACd,wBACA,MACA,gBACA;CACA,uBAAuB,iBAAiB,gBAAgB;EACtD,MAAM,UAAU,uBAAuB,WAAW;EAClD,eAAe,QAAQ,gBAAgB,YAAY,KAAK,CAAC,WAAW,OAAO,CAAC;CAC9E,CAAC;AACH"}
@@ -0,0 +1,36 @@
1
+ import { isEmptyObject, tryJsonParse } from "../../tools/utils/objectUtils.mjs";
2
+ import { addEventListener } from "../../browser/addEventListener.mjs";
3
+ import { combine } from "@openobserve/js-core/util";
4
+ //#region src/domain/context/storeContextManager.ts
5
+ const CONTEXT_STORE_KEY_PREFIX = "_oo_c";
6
+ const storageListeners = [];
7
+ function storeContextManager(contextManager, productKey, customerDataType) {
8
+ if (typeof window === "undefined" || typeof localStorage === "undefined") return;
9
+ const storageKey = buildStorageKey(productKey, customerDataType);
10
+ storageListeners.push(addEventListener(window, "storage", ({ key }) => {
11
+ if (storageKey === key) synchronizeWithStorage();
12
+ }));
13
+ contextManager.changeObservable.subscribe(dumpToStorage);
14
+ const contextFromStorage = combine(getFromStorage(), contextManager.getContext());
15
+ if (!isEmptyObject(contextFromStorage)) contextManager.setContext(contextFromStorage);
16
+ function synchronizeWithStorage() {
17
+ contextManager.setContext(getFromStorage());
18
+ }
19
+ function dumpToStorage() {
20
+ localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));
21
+ }
22
+ function getFromStorage() {
23
+ const rawContext = localStorage.getItem(storageKey);
24
+ return rawContext ? tryJsonParse(rawContext) ?? {} : {};
25
+ }
26
+ }
27
+ function buildStorageKey(productKey, customerDataType) {
28
+ return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`;
29
+ }
30
+ function removeStorageListeners() {
31
+ storageListeners.map((listener) => listener.stop());
32
+ }
33
+ //#endregion
34
+ export { removeStorageListeners, storeContextManager };
35
+
36
+ //# sourceMappingURL=storeContextManager.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storeContextManager.mjs","names":[],"sources":["../../../src/domain/context/storeContextManager.ts"],"sourcesContent":["import { combine } from '@openobserve/js-core/util'\nimport { addEventListener, DOM_EVENT } from '../../browser/addEventListener'\nimport type { Context } from '../../tools/serialisation/context'\nimport { isEmptyObject, tryJsonParse } from '../../tools/utils/objectUtils'\nimport type { ContextManager } from './contextManager'\nimport type { CustomerDataType } from './contextConstants'\n\nconst CONTEXT_STORE_KEY_PREFIX = '_oo_c'\n\nconst storageListeners: Array<{ stop: () => void }> = []\n\nexport function storeContextManager(\n contextManager: ContextManager,\n productKey: string,\n customerDataType: CustomerDataType\n) {\n // window and localStorage are not available in Web Workers or Node.js environments\n if (typeof window === 'undefined' || typeof localStorage === 'undefined') {\n return\n }\n\n const storageKey = buildStorageKey(productKey, customerDataType)\n\n storageListeners.push(\n addEventListener(window, DOM_EVENT.STORAGE, ({ key }) => {\n if (storageKey === key) {\n synchronizeWithStorage()\n }\n })\n )\n contextManager.changeObservable.subscribe(dumpToStorage)\n\n const contextFromStorage = combine(getFromStorage(), contextManager.getContext())\n if (!isEmptyObject(contextFromStorage)) {\n contextManager.setContext(contextFromStorage)\n }\n\n function synchronizeWithStorage() {\n contextManager.setContext(getFromStorage())\n }\n\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()))\n }\n\n function getFromStorage() {\n const rawContext = localStorage.getItem(storageKey)\n return rawContext ? (tryJsonParse<Context>(rawContext) ?? {}) : {}\n }\n}\n\nexport function buildStorageKey(productKey: string, customerDataType: CustomerDataType) {\n return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`\n}\n\nexport function removeStorageListeners() {\n storageListeners.map((listener) => listener.stop())\n}\n"],"mappings":";;;;AAOA,MAAM,2BAA2B;AAEjC,MAAM,mBAAgD,CAAC;AAEvD,SAAgB,oBACd,gBACA,YACA,kBACA;CAEA,IAAI,OAAO,WAAW,eAAe,OAAO,iBAAiB,aAC3D;CAGF,MAAM,aAAa,gBAAgB,YAAY,gBAAgB;CAE/D,iBAAiB,KACf,iBAAiB,QAAA,YAA4B,EAAE,UAAU;EACvD,IAAI,eAAe,KACjB,uBAAuB;CAE3B,CAAC,CACH;CACA,eAAe,iBAAiB,UAAU,aAAa;CAEvD,MAAM,qBAAqB,QAAQ,eAAe,GAAG,eAAe,WAAW,CAAC;CAChF,IAAI,CAAC,cAAc,kBAAkB,GACnC,eAAe,WAAW,kBAAkB;CAG9C,SAAS,yBAAyB;EAChC,eAAe,WAAW,eAAe,CAAC;CAC5C;CAEA,SAAS,gBAAgB;EACvB,aAAa,QAAQ,YAAY,KAAK,UAAU,eAAe,WAAW,CAAC,CAAC;CAC9E;CAEA,SAAS,iBAAiB;EACxB,MAAM,aAAa,aAAa,QAAQ,UAAU;EAClD,OAAO,aAAc,aAAsB,UAAU,KAAK,CAAC,IAAK,CAAC;CACnE;AACF;AAEA,SAAgB,gBAAgB,YAAoB,kBAAoC;CACtF,OAAO,GAAG,yBAAyB,GAAG,WAAW,GAAG;AACtD;AAEA,SAAgB,yBAAyB;CACvC,iBAAiB,KAAK,aAAa,SAAS,KAAK,CAAC;AACpD"}
@@ -0,0 +1,29 @@
1
+ import { isEmptyObject } from "../../tools/utils/objectUtils.mjs";
2
+ import { createContextManager } from "../context/contextManager.mjs";
3
+ import { storeContextManager } from "../context/storeContextManager.mjs";
4
+ import "../context/contextConstants.mjs";
5
+ import { SKIPPED } from "@openobserve/js-core/assembly";
6
+ //#region src/domain/contexts/accountContext.ts
7
+ function startAccountContext(assembleHook, configuration, productKey) {
8
+ const accountContextManager = buildAccountContextManager();
9
+ if (configuration.storeContextsAcrossPages) storeContextManager(accountContextManager, productKey, 4);
10
+ assembleHook.register(() => {
11
+ const account = accountContextManager.getContext();
12
+ if (isEmptyObject(account) || !account.id) return SKIPPED;
13
+ return { account };
14
+ });
15
+ return accountContextManager;
16
+ }
17
+ function buildAccountContextManager() {
18
+ return createContextManager("account", { propertiesConfig: {
19
+ id: {
20
+ type: "string",
21
+ required: true
22
+ },
23
+ name: { type: "string" }
24
+ } });
25
+ }
26
+ //#endregion
27
+ export { buildAccountContextManager, startAccountContext };
28
+
29
+ //# sourceMappingURL=accountContext.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountContext.mjs","names":[],"sources":["../../../src/domain/contexts/accountContext.ts"],"sourcesContent":["import type { Hook } from '@openobserve/js-core/assembly'\nimport { SKIPPED } from '@openobserve/js-core/assembly'\nimport type { Configuration } from '../configuration'\nimport { CustomerDataType } from '../context/contextConstants'\nimport { storeContextManager } from '../context/storeContextManager'\nimport { isEmptyObject } from '../../tools/utils/objectUtils'\nimport { createContextManager } from '../context/contextManager'\n\n/**\n * Account information for the browser SDK.\n */\nexport interface Account {\n id: string\n name?: string | undefined\n [key: string]: unknown\n}\n\nexport function startAccountContext(assembleHook: Hook<any, any>, configuration: Configuration, productKey: string) {\n const accountContextManager = buildAccountContextManager()\n\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(accountContextManager, productKey, CustomerDataType.Account)\n }\n\n assembleHook.register(() => {\n const account = accountContextManager.getContext() as Account\n\n if (isEmptyObject(account) || !account.id) {\n return SKIPPED\n }\n\n return {\n account,\n }\n })\n\n return accountContextManager\n}\n\nexport function buildAccountContextManager() {\n return createContextManager('account', {\n propertiesConfig: {\n id: { type: 'string', required: true },\n name: { type: 'string' },\n },\n })\n}\n"],"mappings":";;;;;;AAiBA,SAAgB,oBAAoB,cAA8B,eAA8B,YAAoB;CAClH,MAAM,wBAAwB,2BAA2B;CAEzD,IAAI,cAAc,0BAChB,oBAAoB,uBAAuB,YAAA,CAAoC;CAGjF,aAAa,eAAe;EAC1B,MAAM,UAAU,sBAAsB,WAAW;EAEjD,IAAI,cAAc,OAAO,KAAK,CAAC,QAAQ,IACrC,OAAO;EAGT,OAAO,EACL,QACF;CACF,CAAC;CAED,OAAO;AACT;AAEA,SAAgB,6BAA6B;CAC3C,OAAO,qBAAqB,WAAW,EACrC,kBAAkB;EAChB,IAAI;GAAE,MAAM;GAAU,UAAU;EAAK;EACrC,MAAM,EAAE,MAAM,SAAS;CACzB,EACF,CAAC;AACH"}
@@ -0,0 +1,20 @@
1
+ import { createContextManager } from "../context/contextManager.mjs";
2
+ import { storeContextManager } from "../context/storeContextManager.mjs";
3
+ import "../context/contextConstants.mjs";
4
+ //#region src/domain/contexts/globalContext.ts
5
+ function startGlobalContext(assembleHook, configuration, productKey, useContextNamespace) {
6
+ const globalContextManager = buildGlobalContextManager();
7
+ if (configuration.storeContextsAcrossPages) storeContextManager(globalContextManager, productKey, 2);
8
+ assembleHook.register(() => {
9
+ const context = globalContextManager.getContext();
10
+ return useContextNamespace ? { context } : context;
11
+ });
12
+ return globalContextManager;
13
+ }
14
+ function buildGlobalContextManager() {
15
+ return createContextManager("global context");
16
+ }
17
+ //#endregion
18
+ export { buildGlobalContextManager, startGlobalContext };
19
+
20
+ //# sourceMappingURL=globalContext.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalContext.mjs","names":[],"sources":["../../../src/domain/contexts/globalContext.ts"],"sourcesContent":["import type { Hook } from '@openobserve/js-core/assembly'\nimport { CustomerDataType } from '../context/contextConstants'\nimport { storeContextManager } from '../context/storeContextManager'\nimport { createContextManager } from '../context/contextManager'\nimport type { Configuration } from '../configuration'\n\nexport function startGlobalContext(\n assembleHook: Hook<any, any>,\n configuration: Configuration,\n productKey: string,\n useContextNamespace: boolean\n) {\n const globalContextManager = buildGlobalContextManager()\n\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(globalContextManager, productKey, CustomerDataType.GlobalContext)\n }\n\n assembleHook.register(() => {\n const context = globalContextManager.getContext()\n return useContextNamespace ? { context } : context\n })\n\n return globalContextManager\n}\n\nexport function buildGlobalContextManager() {\n return createContextManager('global context')\n}\n"],"mappings":";;;;AAMA,SAAgB,mBACd,cACA,eACA,YACA,qBACA;CACA,MAAM,uBAAuB,0BAA0B;CAEvD,IAAI,cAAc,0BAChB,oBAAoB,sBAAsB,YAAA,CAA0C;CAGtF,aAAa,eAAe;EAC1B,MAAM,UAAU,qBAAqB,WAAW;EAChD,OAAO,sBAAsB,EAAE,QAAQ,IAAI;CAC7C,CAAC;CAED,OAAO;AACT;AAEA,SAAgB,4BAA4B;CAC1C,OAAO,qBAAqB,gBAAgB;AAC9C"}