@openobserve/browser-core 0.3.4 → 0.4.0-beta.2

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 (934) 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 +15 -4
  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/boot/displayAlreadyInitializedError.spec.ts +0 -18
  857. package/src/boot/init.spec.ts +0 -50
  858. package/src/browser/addEventListener.spec.ts +0 -141
  859. package/src/browser/cookie.spec.ts +0 -53
  860. package/src/browser/fetchObservable.spec.ts +0 -334
  861. package/src/browser/pageMayExitObservable.spec.ts +0 -56
  862. package/src/browser/xhrObservable.spec.ts +0 -405
  863. package/src/domain/allowedTrackingOrigins.spec.ts +0 -210
  864. package/src/domain/bufferedData.spec.ts +0 -34
  865. package/src/domain/configuration/configuration.spec.ts +0 -236
  866. package/src/domain/configuration/endpointBuilder.spec.ts +0 -173
  867. package/src/domain/configuration/transportConfiguration.spec.ts +0 -130
  868. package/src/domain/configuration/transportConfiguration.ts +0 -78
  869. package/src/domain/connectivity/connectivity.spec.ts +0 -50
  870. package/src/domain/console/consoleObservable.spec.ts +0 -151
  871. package/src/domain/context/contextManager.spec.ts +0 -152
  872. package/src/domain/context/contextUtils.spec.ts +0 -26
  873. package/src/domain/context/storeContextManager.spec.ts +0 -103
  874. package/src/domain/contexts/accountContext.spec.ts +0 -99
  875. package/src/domain/contexts/globalContext.spec.ts +0 -88
  876. package/src/domain/contexts/userContext.spec.ts +0 -156
  877. package/src/domain/error/error.spec.ts +0 -294
  878. package/src/domain/error/trackRuntimeError.spec.ts +0 -343
  879. package/src/domain/eventRateLimiter/createEventRateLimiter.spec.ts +0 -119
  880. package/src/domain/extension/extensionUtils.spec.ts +0 -47
  881. package/src/domain/report/reportObservable.spec.ts +0 -71
  882. package/src/domain/session/oldCookiesMigration.spec.ts +0 -76
  883. package/src/domain/session/oldCookiesMigration.ts +0 -42
  884. package/src/domain/session/sessionManager.spec.ts +0 -684
  885. package/src/domain/session/sessionState.spec.ts +0 -88
  886. package/src/domain/session/sessionStore.spec.ts +0 -647
  887. package/src/domain/session/sessionStoreOperations.spec.ts +0 -234
  888. package/src/domain/session/sessionStoreOperations.ts +0 -131
  889. package/src/domain/session/storeStrategies/sessionInCookie.spec.ts +0 -228
  890. package/src/domain/session/storeStrategies/sessionInLocalStorage.spec.ts +0 -75
  891. package/src/domain/synthetics/syntheticsWorkerValues.spec.ts +0 -82
  892. package/src/domain/tags.spec.ts +0 -74
  893. package/src/domain/telemetry/telemetry.spec.ts +0 -494
  894. package/src/domain/trackingConsent.spec.ts +0 -44
  895. package/src/tools/abstractHooks.spec.ts +0 -76
  896. package/src/tools/abstractHooks.ts +0 -72
  897. package/src/tools/abstractLifeCycle.spec.ts +0 -46
  898. package/src/tools/boundedBuffer.spec.ts +0 -40
  899. package/src/tools/boundedBuffer.ts +0 -45
  900. package/src/tools/catchUserErrors.spec.ts +0 -20
  901. package/src/tools/encoder.spec.ts +0 -112
  902. package/src/tools/experimentalFeatures.spec.ts +0 -60
  903. package/src/tools/getZoneJsOriginalValue.spec.ts +0 -36
  904. package/src/tools/instrumentMethod.spec.ts +0 -381
  905. package/src/tools/matchOption.spec.ts +0 -41
  906. package/src/tools/mergeInto.spec.ts +0 -198
  907. package/src/tools/mergeInto.ts +0 -177
  908. package/src/tools/monitor.spec.ts +0 -172
  909. package/src/tools/observable.spec.ts +0 -259
  910. package/src/tools/queueMicrotask.spec.ts +0 -24
  911. package/src/tools/readBytesFromStream.spec.ts +0 -62
  912. package/src/tools/requestIdleCallback.spec.ts +0 -65
  913. package/src/tools/serialisation/jsonStringify.spec.ts +0 -76
  914. package/src/tools/serialisation/sanitize.spec.ts +0 -284
  915. package/src/tools/stackTrace/capturedExceptions.specHelper.ts +0 -316
  916. package/src/tools/stackTrace/computeStackTrace.spec.ts +0 -1007
  917. package/src/tools/stackTrace/handlingStack.spec.ts +0 -20
  918. package/src/tools/taskQueue.spec.ts +0 -60
  919. package/src/tools/timer.spec.ts +0 -76
  920. package/src/tools/utils/browserDetection.spec.ts +0 -120
  921. package/src/tools/utils/byteUtils.spec.ts +0 -29
  922. package/src/tools/utils/functionUtils.spec.ts +0 -229
  923. package/src/tools/utils/numberUtils.spec.ts +0 -27
  924. package/src/tools/utils/stringUtils.spec.ts +0 -74
  925. package/src/tools/utils/timeUtils.ts +0 -117
  926. package/src/tools/utils/typeUtils.spec.ts +0 -25
  927. package/src/tools/utils/typeUtils.ts +0 -12
  928. package/src/tools/utils/urlPolyfill.spec.ts +0 -55
  929. package/src/tools/valueHistory.spec.ts +0 -180
  930. package/src/transport/batch.spec.ts +0 -261
  931. package/src/transport/eventBridge.spec.ts +0 -90
  932. package/src/transport/flushController.spec.ts +0 -267
  933. package/src/transport/httpRequest.spec.ts +0 -400
  934. package/src/transport/sendWithRetryStrategy.spec.ts +0 -393
@@ -0,0 +1,104 @@
1
+ import { isWorkerEnvironment } from "../tools/globalObject.mjs";
2
+ import { Observable } from "../tools/observable.mjs";
3
+ import { clearTimeout, setTimeout } from "../tools/timer.mjs";
4
+ import { RECOMMENDED_REQUEST_BYTES_LIMIT } from "./httpRequest.mjs";
5
+ import { ONE_SECOND } from "@openobserve/js-core/time";
6
+ //#region src/transport/flushController.ts
7
+ /**
8
+ * flush automatically, aim to be lower than ALB connection timeout
9
+ * to maximize connection reuse.
10
+ */
11
+ const FLUSH_DURATION_LIMIT = 30 * ONE_SECOND;
12
+ /**
13
+ * When using the SDK in a Worker Environment, we limit the batch size to 1 to ensure it can be sent
14
+ * in a single event.
15
+ */
16
+ const MESSAGES_LIMIT = isWorkerEnvironment ? 1 : 50;
17
+ /**
18
+ * Returns a "flush controller", responsible of notifying when flushing a pool of pending data needs
19
+ * to happen. The implementation is designed to support both synchronous and asynchronous usages,
20
+ * but relies on invariants described in each method documentation to keep a coherent state.
21
+ */
22
+ function createFlushController({ pageMayExitObservable, sessionExpireObservable }) {
23
+ let forcedFlushReason;
24
+ const preparePageExitFlushObservable = new Observable();
25
+ const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => {
26
+ forcedFlushReason = event.reason;
27
+ try {
28
+ preparePageExitFlushObservable.notify(event.reason);
29
+ } finally {
30
+ forcedFlushReason = void 0;
31
+ }
32
+ flush(event.reason);
33
+ });
34
+ const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush("session_expire"));
35
+ const flushObservable = new Observable(() => () => {
36
+ pageMayExitSubscription.unsubscribe();
37
+ sessionExpireSubscription.unsubscribe();
38
+ });
39
+ let currentBytesCount = 0;
40
+ let currentMessagesCount = 0;
41
+ function flush(flushReason) {
42
+ if (currentMessagesCount === 0) return;
43
+ const messagesCount = currentMessagesCount;
44
+ const bytesCount = currentBytesCount;
45
+ currentMessagesCount = 0;
46
+ currentBytesCount = 0;
47
+ cancelDurationLimitTimeout();
48
+ flushObservable.notify({
49
+ reason: flushReason,
50
+ messagesCount,
51
+ bytesCount
52
+ });
53
+ }
54
+ let durationLimitTimeoutId;
55
+ function scheduleDurationLimitTimeout() {
56
+ if (durationLimitTimeoutId === void 0) durationLimitTimeoutId = setTimeout(() => {
57
+ flush("duration_limit");
58
+ }, FLUSH_DURATION_LIMIT);
59
+ }
60
+ function cancelDurationLimitTimeout() {
61
+ clearTimeout(durationLimitTimeoutId);
62
+ durationLimitTimeoutId = void 0;
63
+ }
64
+ return {
65
+ flushObservable,
66
+ preparePageExitFlushObservable,
67
+ get messagesCount() {
68
+ return currentMessagesCount;
69
+ },
70
+ /**
71
+ * Notifies that a message will be added to a pool of pending messages waiting to be flushed.
72
+ *
73
+ * This function needs to be called synchronously, right before adding the message, so no flush
74
+ * event can happen after `notifyBeforeAddMessage` and before adding the message.
75
+ *
76
+ * @param estimatedMessageBytesCount - an estimation of the message bytes count once it is
77
+ * actually added.
78
+ */
79
+ notifyBeforeAddMessage(estimatedMessageBytesCount) {
80
+ if (currentBytesCount + estimatedMessageBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) flush(forcedFlushReason ?? "bytes_limit");
81
+ currentMessagesCount += 1;
82
+ currentBytesCount += estimatedMessageBytesCount;
83
+ scheduleDurationLimitTimeout();
84
+ },
85
+ /**
86
+ * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.
87
+ *
88
+ * This function can be called asynchronously after the message was added, but in this case it
89
+ * should not be called if a flush event occurred in between.
90
+ *
91
+ * @param messageBytesCountDiff - the difference between the estimated message bytes count and
92
+ * its actual bytes count once added to the pool.
93
+ */
94
+ notifyAfterAddMessage(messageBytesCountDiff = 0) {
95
+ currentBytesCount += messageBytesCountDiff;
96
+ if (currentMessagesCount >= MESSAGES_LIMIT) flush(forcedFlushReason ?? "messages_limit");
97
+ else if (currentBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) flush(forcedFlushReason ?? "bytes_limit");
98
+ }
99
+ };
100
+ }
101
+ //#endregion
102
+ export { FLUSH_DURATION_LIMIT, createFlushController };
103
+
104
+ //# sourceMappingURL=flushController.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flushController.mjs","names":[],"sources":["../../src/transport/flushController.ts"],"sourcesContent":["import { ONE_SECOND } from '@openobserve/js-core/time'\nimport type { Duration } from '@openobserve/js-core/time'\nimport type { PageMayExitEvent, PageExitReason } from '../browser/pageMayExitObservable'\nimport { isWorkerEnvironment } from '../tools/globalObject'\nimport { Observable } from '../tools/observable'\nimport type { TimeoutId } from '../tools/timer'\nimport { clearTimeout, setTimeout } from '../tools/timer'\nimport { RECOMMENDED_REQUEST_BYTES_LIMIT } from './httpRequest'\n\nexport type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'\n\n/**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\nexport const FLUSH_DURATION_LIMIT = (30 * ONE_SECOND) as Duration\n\n/**\n * When using the SDK in a Worker Environment, we limit the batch size to 1 to ensure it can be sent\n * in a single event.\n */\nexport const MESSAGES_LIMIT = isWorkerEnvironment ? 1 : 50\n\nexport type FlushController = ReturnType<typeof createFlushController>\nexport interface FlushEvent {\n reason: FlushReason\n bytesCount: number\n messagesCount: number\n}\n\ninterface FlushControllerOptions {\n pageMayExitObservable: Observable<PageMayExitEvent>\n sessionExpireObservable: Observable<void>\n}\n\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController({ pageMayExitObservable, sessionExpireObservable }: FlushControllerOptions) {\n let forcedFlushReason: FlushReason | undefined\n const preparePageExitFlushObservable = new Observable<PageExitReason>()\n const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => {\n forcedFlushReason = event.reason\n try {\n preparePageExitFlushObservable.notify(event.reason)\n } finally {\n forcedFlushReason = undefined\n }\n flush(event.reason)\n })\n const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush('session_expire'))\n\n const flushObservable = new Observable<FlushEvent>(() => () => {\n pageMayExitSubscription.unsubscribe()\n sessionExpireSubscription.unsubscribe()\n })\n\n let currentBytesCount = 0\n let currentMessagesCount = 0\n\n function flush(flushReason: FlushReason) {\n if (currentMessagesCount === 0) {\n return\n }\n\n const messagesCount = currentMessagesCount\n const bytesCount = currentBytesCount\n\n currentMessagesCount = 0\n currentBytesCount = 0\n cancelDurationLimitTimeout()\n\n flushObservable.notify({\n reason: flushReason,\n messagesCount,\n bytesCount,\n })\n }\n\n let durationLimitTimeoutId: TimeoutId | undefined\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(() => {\n flush('duration_limit')\n }, FLUSH_DURATION_LIMIT)\n }\n }\n\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId)\n durationLimitTimeoutId = undefined\n }\n\n return {\n flushObservable,\n preparePageExitFlushObservable,\n get messagesCount() {\n return currentMessagesCount\n },\n\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n *\n * @param estimatedMessageBytesCount - an estimation of the message bytes count once it is\n * actually added.\n */\n notifyBeforeAddMessage(estimatedMessageBytesCount: number) {\n if (currentBytesCount + estimatedMessageBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) {\n flush(forcedFlushReason ?? 'bytes_limit')\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1\n currentBytesCount += estimatedMessageBytesCount\n scheduleDurationLimitTimeout()\n },\n\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n *\n * @param messageBytesCountDiff - the difference between the estimated message bytes count and\n * its actual bytes count once added to the pool.\n */\n notifyAfterAddMessage(messageBytesCountDiff = 0) {\n currentBytesCount += messageBytesCountDiff\n\n if (currentMessagesCount >= MESSAGES_LIMIT) {\n flush(forcedFlushReason ?? 'messages_limit')\n } else if (currentBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) {\n flush(forcedFlushReason ?? 'bytes_limit')\n }\n },\n }\n}\n"],"mappings":";;;;;;;;;;AAeA,MAAa,uBAAwB,KAAK;;;;;AAM1C,MAAa,iBAAiB,sBAAsB,IAAI;;;;;;AAmBxD,SAAgB,sBAAsB,EAAE,uBAAuB,2BAAmD;CAChH,IAAI;CACJ,MAAM,iCAAiC,IAAI,WAA2B;CACtE,MAAM,0BAA0B,sBAAsB,WAAW,UAAU;EACzE,oBAAoB,MAAM;EAC1B,IAAI;GACF,+BAA+B,OAAO,MAAM,MAAM;EACpD,UAAU;GACR,oBAAoB,KAAA;EACtB;EACA,MAAM,MAAM,MAAM;CACpB,CAAC;CACD,MAAM,4BAA4B,wBAAwB,gBAAgB,MAAM,gBAAgB,CAAC;CAEjG,MAAM,kBAAkB,IAAI,uBAAmC;EAC7D,wBAAwB,YAAY;EACpC,0BAA0B,YAAY;CACxC,CAAC;CAED,IAAI,oBAAoB;CACxB,IAAI,uBAAuB;CAE3B,SAAS,MAAM,aAA0B;EACvC,IAAI,yBAAyB,GAC3B;EAGF,MAAM,gBAAgB;EACtB,MAAM,aAAa;EAEnB,uBAAuB;EACvB,oBAAoB;EACpB,2BAA2B;EAE3B,gBAAgB,OAAO;GACrB,QAAQ;GACR;GACA;EACF,CAAC;CACH;CAEA,IAAI;CACJ,SAAS,+BAA+B;EACtC,IAAI,2BAA2B,KAAA,GAC7B,yBAAyB,iBAAiB;GACxC,MAAM,gBAAgB;EACxB,GAAG,oBAAoB;CAE3B;CAEA,SAAS,6BAA6B;EACpC,aAAa,sBAAsB;EACnC,yBAAyB,KAAA;CAC3B;CAEA,OAAO;EACL;EACA;EACA,IAAI,gBAAgB;GAClB,OAAO;EACT;;;;;;;;;;EAWA,uBAAuB,4BAAoC;GACzD,IAAI,oBAAoB,8BAA8B,iCACpD,MAAM,qBAAqB,aAAa;GAK1C,wBAAwB;GACxB,qBAAqB;GACrB,6BAA6B;EAC/B;;;;;;;;;;EAWA,sBAAsB,wBAAwB,GAAG;GAC/C,qBAAqB;GAErB,IAAI,wBAAwB,gBAC1B,MAAM,qBAAqB,gBAAgB;QACtC,IAAI,qBAAqB,iCAC9B,MAAM,qBAAqB,aAAa;EAE5C;CACF;AACF"}
@@ -0,0 +1,60 @@
1
+ import { monitor, monitorError } from "../tools/monitor.mjs";
2
+ import { Observable } from "../tools/observable.mjs";
3
+ import { ONE_KIBI_BYTE } from "../tools/utils/byteUtils.mjs";
4
+ import { fetch } from "../browser/fetch.mjs";
5
+ import { newRetryState, sendWithRetryStrategy } from "./sendWithRetryStrategy.mjs";
6
+ //#region src/transport/httpRequest.ts
7
+ /**
8
+ * beacon payload max queue size implementation is 64kb
9
+ * ensure that we leave room for logs, rum and potential other users
10
+ */
11
+ const RECOMMENDED_REQUEST_BYTES_LIMIT = 16 * ONE_KIBI_BYTE;
12
+ function createHttpRequest(endpointBuilders, reportError, bytesLimit = RECOMMENDED_REQUEST_BYTES_LIMIT) {
13
+ const observable = new Observable();
14
+ const retryState = newRetryState();
15
+ return {
16
+ observable,
17
+ send: (payload) => {
18
+ for (const endpointBuilder of endpointBuilders) sendWithRetryStrategy(payload, retryState, (payload, onResponse) => {
19
+ fetchStrategy(endpointBuilder, payload, onResponse);
20
+ }, endpointBuilder.trackType, reportError, observable);
21
+ },
22
+ /**
23
+ * Since fetch keepalive behaves like regular fetch on Firefox,
24
+ * keep using sendBeaconStrategy on exit
25
+ */
26
+ sendOnExit: (payload) => {
27
+ for (const endpointBuilder of endpointBuilders) sendBeaconStrategy(endpointBuilder, bytesLimit, payload);
28
+ }
29
+ };
30
+ }
31
+ function sendBeaconStrategy(endpointBuilder, bytesLimit, payload) {
32
+ if (payload.bytesCount < bytesLimit) try {
33
+ const beaconUrl = endpointBuilder.build("beacon", payload);
34
+ if (navigator.sendBeacon(beaconUrl, payload.data)) return;
35
+ } catch (e) {
36
+ reportBeaconError(e);
37
+ }
38
+ fetchStrategy(endpointBuilder, payload);
39
+ }
40
+ let hasReportedBeaconError = false;
41
+ function reportBeaconError(e) {
42
+ if (!hasReportedBeaconError) {
43
+ hasReportedBeaconError = true;
44
+ monitorError(e);
45
+ }
46
+ }
47
+ function fetchStrategy(endpointBuilder, payload, onResponse) {
48
+ fetch(endpointBuilder.build("fetch", payload), {
49
+ method: "POST",
50
+ body: payload.data,
51
+ mode: "cors"
52
+ }).then(monitor((response) => onResponse?.({
53
+ status: response.status,
54
+ type: response.type
55
+ }))).catch(monitor(() => onResponse?.({ status: 0 })));
56
+ }
57
+ //#endregion
58
+ export { RECOMMENDED_REQUEST_BYTES_LIMIT, createHttpRequest };
59
+
60
+ //# sourceMappingURL=httpRequest.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpRequest.mjs","names":[],"sources":["../../src/transport/httpRequest.ts"],"sourcesContent":["import type { EndpointBuilder } from '../domain/configuration'\nimport type { Context } from '../tools/serialisation/context'\nimport { fetch } from '../browser/fetch'\nimport { monitor, monitorError } from '../tools/monitor'\nimport type { RawError } from '../domain/error/error.types'\nimport { Observable } from '../tools/observable'\nimport { ONE_KIBI_BYTE } from '../tools/utils/byteUtils'\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\n\n/**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\nexport const RECOMMENDED_REQUEST_BYTES_LIMIT = 16 * ONE_KIBI_BYTE\n\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\n\nexport interface HttpRequest<Body extends Payload = Payload> {\n observable: Observable<HttpRequestEvent<Body>>\n send(this: void, payload: Body): void\n sendOnExit(this: void, payload: Body): void\n}\n\nexport interface HttpResponse extends Context {\n status: number\n type?: ResponseType\n}\n\nexport interface BandwidthStats {\n ongoingByteCount: number\n ongoingRequestCount: number\n}\n\nexport type HttpRequestEvent<Body extends Payload = Payload> =\n | {\n // A request to send the given payload failed. (We may retry.)\n type: 'failure'\n bandwidth: BandwidthStats\n payload: Body\n }\n | {\n // The given payload was discarded because the request queue is full.\n type: 'queue-full'\n bandwidth: BandwidthStats\n payload: Body\n }\n | {\n // A request to send the given payload succeeded.\n type: 'success'\n bandwidth: BandwidthStats\n payload: Body\n }\n\nexport interface Payload {\n data: string | FormData | Blob\n bytesCount: number\n retry?: RetryInfo\n encoding?: 'deflate'\n}\n\nexport interface RetryInfo {\n count: number\n lastFailureStatus: number\n}\n\nexport function createHttpRequest<Body extends Payload = Payload>(\n endpointBuilders: EndpointBuilder[],\n reportError: (error: RawError) => void,\n bytesLimit: number = RECOMMENDED_REQUEST_BYTES_LIMIT\n): HttpRequest<Body> {\n const observable = new Observable<HttpRequestEvent<Body>>()\n const retryState = newRetryState<Body>()\n\n return {\n observable,\n send: (payload: Body) => {\n for (const endpointBuilder of endpointBuilders) {\n sendWithRetryStrategy(\n payload,\n retryState,\n (payload, onResponse) => {\n fetchStrategy(endpointBuilder, payload, onResponse)\n },\n endpointBuilder.trackType,\n reportError,\n observable\n )\n }\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: (payload: Body) => {\n for (const endpointBuilder of endpointBuilders) {\n sendBeaconStrategy(endpointBuilder, bytesLimit, payload)\n }\n },\n }\n}\n\nfunction sendBeaconStrategy(endpointBuilder: EndpointBuilder, bytesLimit: number, payload: Payload) {\n const canUseBeacon = payload.bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n const beaconUrl = endpointBuilder.build('beacon', payload)\n const isQueued = navigator.sendBeacon(beaconUrl, payload.data)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n reportBeaconError(e)\n }\n }\n\n fetchStrategy(endpointBuilder, payload)\n}\n\nlet hasReportedBeaconError = false\n\nfunction reportBeaconError(e: unknown) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true\n monitorError(e)\n }\n}\n\nexport function fetchStrategy(\n endpointBuilder: EndpointBuilder,\n payload: Payload,\n onResponse?: (r: HttpResponse) => void\n) {\n const fetchUrl = endpointBuilder.build('fetch', payload)\n\n fetch(fetchUrl, { method: 'POST', body: payload.data, mode: 'cors' })\n .then(monitor((response: Response) => onResponse?.({ status: response.status, type: response.type })))\n .catch(monitor(() => onResponse?.({ status: 0 })))\n}\n"],"mappings":";;;;;;;;;;AAaA,MAAa,kCAAkC,KAAK;AA2DpD,SAAgB,kBACd,kBACA,aACA,aAAqB,iCACF;CACnB,MAAM,aAAa,IAAI,WAAmC;CAC1D,MAAM,aAAa,cAAoB;CAEvC,OAAO;EACL;EACA,OAAO,YAAkB;GACvB,KAAK,MAAM,mBAAmB,kBAC5B,sBACE,SACA,aACC,SAAS,eAAe;IACvB,cAAc,iBAAiB,SAAS,UAAU;GACpD,GACA,gBAAgB,WAChB,aACA,UACF;EAEJ;;;;;EAKA,aAAa,YAAkB;GAC7B,KAAK,MAAM,mBAAmB,kBAC5B,mBAAmB,iBAAiB,YAAY,OAAO;EAE3D;CACF;AACF;AAEA,SAAS,mBAAmB,iBAAkC,YAAoB,SAAkB;CAElG,IADqB,QAAQ,aAAa,YAExC,IAAI;EACF,MAAM,YAAY,gBAAgB,MAAM,UAAU,OAAO;EAGzD,IAFiB,UAAU,WAAW,WAAW,QAAQ,IAE9C,GACT;CAEJ,SAAS,GAAG;EACV,kBAAkB,CAAC;CACrB;CAGF,cAAc,iBAAiB,OAAO;AACxC;AAEA,IAAI,yBAAyB;AAE7B,SAAS,kBAAkB,GAAY;CACrC,IAAI,CAAC,wBAAwB;EAC3B,yBAAyB;EACzB,aAAa,CAAC;CAChB;AACF;AAEA,SAAgB,cACd,iBACA,SACA,YACA;CAGA,MAFiB,gBAAgB,MAAM,SAAS,OAEnC,GAAG;EAAE,QAAQ;EAAQ,MAAM,QAAQ;EAAM,MAAM;CAAO,CAAC,CAAC,CAClE,KAAK,SAAS,aAAuB,aAAa;EAAE,QAAQ,SAAS;EAAQ,MAAM,SAAS;CAAK,CAAC,CAAC,CAAC,CAAC,CACrG,MAAM,cAAc,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AACrD"}
@@ -0,0 +1,149 @@
1
+ import { setTimeout } from "../tools/timer.mjs";
2
+ import { ONE_KIBI_BYTE, ONE_MEBI_BYTE } from "../tools/utils/byteUtils.mjs";
3
+ import { ErrorSource } from "../domain/error/error.types.mjs";
4
+ import { isServerError } from "../tools/utils/responseUtils.mjs";
5
+ import { ONE_MINUTE, ONE_SECOND, clocksNow } from "@openobserve/js-core/time";
6
+ //#region src/transport/sendWithRetryStrategy.ts
7
+ const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;
8
+ const MAX_QUEUE_BYTES_COUNT = 20 * ONE_MEBI_BYTE;
9
+ const MAX_BACKOFF_TIME = ONE_MINUTE;
10
+ const INITIAL_BACKOFF_TIME = ONE_SECOND;
11
+ function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError, requestObservable) {
12
+ if (state.transportStatus === 0 && state.queuedPayloads.size() === 0 && state.bandwidthMonitor.canHandle(payload)) send(payload, state, sendStrategy, requestObservable, {
13
+ onSuccess: () => retryQueuedPayloads(0, state, sendStrategy, trackType, reportError, requestObservable),
14
+ onFailure: () => {
15
+ if (!state.queuedPayloads.enqueue(payload)) requestObservable.notify({
16
+ type: "queue-full",
17
+ bandwidth: state.bandwidthMonitor.stats(),
18
+ payload
19
+ });
20
+ scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable);
21
+ }
22
+ });
23
+ else if (!state.queuedPayloads.enqueue(payload)) requestObservable.notify({
24
+ type: "queue-full",
25
+ bandwidth: state.bandwidthMonitor.stats(),
26
+ payload
27
+ });
28
+ }
29
+ function scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable) {
30
+ if (state.transportStatus !== 2) return;
31
+ setTimeout(() => {
32
+ send(state.queuedPayloads.first(), state, sendStrategy, requestObservable, {
33
+ onSuccess: () => {
34
+ state.queuedPayloads.dequeue();
35
+ state.currentBackoffTime = INITIAL_BACKOFF_TIME;
36
+ retryQueuedPayloads(1, state, sendStrategy, trackType, reportError, requestObservable);
37
+ },
38
+ onFailure: () => {
39
+ state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);
40
+ scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable);
41
+ }
42
+ });
43
+ }, state.currentBackoffTime);
44
+ }
45
+ function send(payload, state, sendStrategy, requestObservable, { onSuccess, onFailure }) {
46
+ state.bandwidthMonitor.add(payload);
47
+ sendStrategy(payload, (response) => {
48
+ state.bandwidthMonitor.remove(payload);
49
+ if (!shouldRetryRequest(response)) {
50
+ state.transportStatus = 0;
51
+ requestObservable.notify({
52
+ type: "success",
53
+ bandwidth: state.bandwidthMonitor.stats(),
54
+ payload
55
+ });
56
+ onSuccess();
57
+ } else {
58
+ state.transportStatus = state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 : 2;
59
+ payload.retry = {
60
+ count: payload.retry ? payload.retry.count + 1 : 1,
61
+ lastFailureStatus: response.status
62
+ };
63
+ requestObservable.notify({
64
+ type: "failure",
65
+ bandwidth: state.bandwidthMonitor.stats(),
66
+ payload
67
+ });
68
+ onFailure();
69
+ }
70
+ });
71
+ }
72
+ function retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError, requestObservable) {
73
+ if (reason === 0 && state.queuedPayloads.isFull() && !state.queueFullReported) {
74
+ reportError({
75
+ message: `Reached max ${trackType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,
76
+ source: ErrorSource.AGENT,
77
+ startClocks: clocksNow()
78
+ });
79
+ state.queueFullReported = true;
80
+ }
81
+ const previousQueue = state.queuedPayloads;
82
+ state.queuedPayloads = newPayloadQueue();
83
+ while (previousQueue.size() > 0) sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError, requestObservable);
84
+ }
85
+ function shouldRetryRequest(response) {
86
+ return response.type !== "opaque" && (response.status === 0 && !navigator.onLine || response.status === 408 || response.status === 429 || isServerError(response.status));
87
+ }
88
+ function newRetryState() {
89
+ return {
90
+ transportStatus: 0,
91
+ currentBackoffTime: INITIAL_BACKOFF_TIME,
92
+ bandwidthMonitor: newBandwidthMonitor(),
93
+ queuedPayloads: newPayloadQueue(),
94
+ queueFullReported: false
95
+ };
96
+ }
97
+ function newPayloadQueue() {
98
+ const queue = [];
99
+ return {
100
+ bytesCount: 0,
101
+ enqueue(payload) {
102
+ if (this.isFull()) return false;
103
+ queue.push(payload);
104
+ this.bytesCount += payload.bytesCount;
105
+ return true;
106
+ },
107
+ first() {
108
+ return queue[0];
109
+ },
110
+ dequeue() {
111
+ const payload = queue.shift();
112
+ if (payload) this.bytesCount -= payload.bytesCount;
113
+ return payload;
114
+ },
115
+ size() {
116
+ return queue.length;
117
+ },
118
+ isFull() {
119
+ return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;
120
+ }
121
+ };
122
+ }
123
+ function newBandwidthMonitor() {
124
+ return {
125
+ ongoingRequestCount: 0,
126
+ ongoingByteCount: 0,
127
+ canHandle(payload) {
128
+ return this.ongoingRequestCount === 0 || this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT && this.ongoingRequestCount < 32;
129
+ },
130
+ add(payload) {
131
+ this.ongoingRequestCount += 1;
132
+ this.ongoingByteCount += payload.bytesCount;
133
+ },
134
+ remove(payload) {
135
+ this.ongoingRequestCount -= 1;
136
+ this.ongoingByteCount -= payload.bytesCount;
137
+ },
138
+ stats() {
139
+ return {
140
+ ongoingByteCount: this.ongoingByteCount,
141
+ ongoingRequestCount: this.ongoingRequestCount
142
+ };
143
+ }
144
+ };
145
+ }
146
+ //#endregion
147
+ export { newRetryState, sendWithRetryStrategy };
148
+
149
+ //# sourceMappingURL=sendWithRetryStrategy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendWithRetryStrategy.mjs","names":[],"sources":["../../src/transport/sendWithRetryStrategy.ts"],"sourcesContent":["import { ONE_MINUTE, ONE_SECOND, clocksNow } from '@openobserve/js-core/time'\nimport type { TrackType } from '../domain/configuration'\nimport { setTimeout } from '../tools/timer'\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils'\nimport { isServerError } from '../tools/utils/responseUtils'\nimport type { RawError } from '../domain/error/error.types'\nimport { ErrorSource } from '../domain/error/error.types'\nimport type { Observable } from '../tools/observable'\nimport type { Payload, HttpRequestEvent, HttpResponse, BandwidthStats } from './httpRequest'\n\nexport const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE\nexport const MAX_ONGOING_REQUESTS = 32\nexport const MAX_QUEUE_BYTES_COUNT = 20 * ONE_MEBI_BYTE\nexport const MAX_BACKOFF_TIME = ONE_MINUTE\nexport const INITIAL_BACKOFF_TIME = ONE_SECOND\n\nconst enum TransportStatus {\n UP,\n FAILURE_DETECTED,\n DOWN,\n}\n\nconst enum RetryReason {\n AFTER_SUCCESS,\n AFTER_RESUME,\n}\n\nexport interface RetryState<Body extends Payload> {\n transportStatus: TransportStatus\n currentBackoffTime: number\n bandwidthMonitor: ReturnType<typeof newBandwidthMonitor>\n queuedPayloads: ReturnType<typeof newPayloadQueue<Body>>\n queueFullReported: boolean\n}\n\ntype SendStrategy<Body extends Payload> = (payload: Body, onResponse: (r: HttpResponse) => void) => void\n\nexport function sendWithRetryStrategy<Body extends Payload>(\n payload: Body,\n state: RetryState<Body>,\n sendStrategy: SendStrategy<Body>,\n trackType: TrackType,\n reportError: (error: RawError) => void,\n requestObservable: Observable<HttpRequestEvent<Body>>\n) {\n if (\n state.transportStatus === TransportStatus.UP &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)\n ) {\n send(payload, state, sendStrategy, requestObservable, {\n onSuccess: () =>\n retryQueuedPayloads(RetryReason.AFTER_SUCCESS, state, sendStrategy, trackType, reportError, requestObservable),\n onFailure: () => {\n if (!state.queuedPayloads.enqueue(payload)) {\n requestObservable.notify({ type: 'queue-full', bandwidth: state.bandwidthMonitor.stats(), payload })\n }\n scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable)\n },\n })\n } else {\n if (!state.queuedPayloads.enqueue(payload)) {\n requestObservable.notify({ type: 'queue-full', bandwidth: state.bandwidthMonitor.stats(), payload })\n }\n }\n}\n\nfunction scheduleRetry<Body extends Payload>(\n state: RetryState<Body>,\n sendStrategy: SendStrategy<Body>,\n trackType: TrackType,\n reportError: (error: RawError) => void,\n requestObservable: Observable<HttpRequestEvent<Body>>\n) {\n if (state.transportStatus !== TransportStatus.DOWN) {\n return\n }\n setTimeout(() => {\n const payload = state.queuedPayloads.first()\n send(payload, state, sendStrategy, requestObservable, {\n onSuccess: () => {\n state.queuedPayloads.dequeue()\n state.currentBackoffTime = INITIAL_BACKOFF_TIME\n retryQueuedPayloads(RetryReason.AFTER_RESUME, state, sendStrategy, trackType, reportError, requestObservable)\n },\n onFailure: () => {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2)\n scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable)\n },\n })\n }, state.currentBackoffTime)\n}\n\nfunction send<Body extends Payload>(\n payload: Body,\n state: RetryState<Body>,\n sendStrategy: SendStrategy<Body>,\n requestObservable: Observable<HttpRequestEvent<Body>>,\n { onSuccess, onFailure }: { onSuccess: () => void; onFailure: () => void }\n) {\n state.bandwidthMonitor.add(payload)\n sendStrategy(payload, (response) => {\n state.bandwidthMonitor.remove(payload)\n if (!shouldRetryRequest(response)) {\n state.transportStatus = TransportStatus.UP\n requestObservable.notify({ type: 'success', bandwidth: state.bandwidthMonitor.stats(), payload })\n onSuccess()\n } else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0 ? TransportStatus.FAILURE_DETECTED : TransportStatus.DOWN\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status,\n }\n requestObservable.notify({ type: 'failure', bandwidth: state.bandwidthMonitor.stats(), payload })\n onFailure()\n }\n })\n}\n\nfunction retryQueuedPayloads<Body extends Payload>(\n reason: RetryReason,\n state: RetryState<Body>,\n sendStrategy: SendStrategy<Body>,\n trackType: TrackType,\n reportError: (error: RawError) => void,\n requestObservable: Observable<HttpRequestEvent<Body>>\n) {\n if (reason === RetryReason.AFTER_SUCCESS && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: `Reached max ${trackType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n })\n state.queueFullReported = true\n }\n const previousQueue = state.queuedPayloads\n state.queuedPayloads = newPayloadQueue()\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue()!, state, sendStrategy, trackType, reportError, requestObservable)\n }\n}\n\nfunction shouldRetryRequest(response: HttpResponse) {\n return (\n response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status))\n )\n}\n\nexport function newRetryState<Body extends Payload>(): RetryState<Body> {\n return {\n transportStatus: TransportStatus.UP,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n }\n}\n\nfunction newPayloadQueue<Body extends Payload>() {\n const queue: Body[] = []\n return {\n bytesCount: 0,\n enqueue(payload: Body) {\n if (this.isFull()) {\n return false\n }\n queue.push(payload)\n this.bytesCount += payload.bytesCount\n return true\n },\n first() {\n return queue[0]\n },\n dequeue() {\n const payload = queue.shift()\n if (payload) {\n this.bytesCount -= payload.bytesCount\n }\n return payload\n },\n size() {\n return queue.length\n },\n isFull() {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT\n },\n }\n}\n\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle(payload: Payload) {\n return (\n this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS)\n )\n },\n add(payload: Payload) {\n this.ongoingRequestCount += 1\n this.ongoingByteCount += payload.bytesCount\n },\n remove(payload: Payload) {\n this.ongoingRequestCount -= 1\n this.ongoingByteCount -= payload.bytesCount\n },\n stats(): BandwidthStats {\n return {\n ongoingByteCount: this.ongoingByteCount,\n ongoingRequestCount: this.ongoingRequestCount,\n }\n },\n }\n}\n"],"mappings":";;;;;;AAUA,MAAa,0BAA0B,KAAK;AAE5C,MAAa,wBAAwB,KAAK;AAC1C,MAAa,mBAAmB;AAChC,MAAa,uBAAuB;AAuBpC,SAAgB,sBACd,SACA,OACA,cACA,WACA,aACA,mBACA;CACA,IACE,MAAM,oBAAA,KACN,MAAM,eAAe,KAAK,MAAM,KAChC,MAAM,iBAAiB,UAAU,OAAO,GAExC,KAAK,SAAS,OAAO,cAAc,mBAAmB;EACpD,iBACE,oBAAA,GAA+C,OAAO,cAAc,WAAW,aAAa,iBAAiB;EAC/G,iBAAiB;GACf,IAAI,CAAC,MAAM,eAAe,QAAQ,OAAO,GACvC,kBAAkB,OAAO;IAAE,MAAM;IAAc,WAAW,MAAM,iBAAiB,MAAM;IAAG;GAAQ,CAAC;GAErG,cAAc,OAAO,cAAc,WAAW,aAAa,iBAAiB;EAC9E;CACF,CAAC;MAED,IAAI,CAAC,MAAM,eAAe,QAAQ,OAAO,GACvC,kBAAkB,OAAO;EAAE,MAAM;EAAc,WAAW,MAAM,iBAAiB,MAAM;EAAG;CAAQ,CAAC;AAGzG;AAEA,SAAS,cACP,OACA,cACA,WACA,aACA,mBACA;CACA,IAAI,MAAM,oBAAA,GACR;CAEF,iBAAiB;EAEf,KADgB,MAAM,eAAe,MAC1B,GAAG,OAAO,cAAc,mBAAmB;GACpD,iBAAiB;IACf,MAAM,eAAe,QAAQ;IAC7B,MAAM,qBAAqB;IAC3B,oBAAA,GAA8C,OAAO,cAAc,WAAW,aAAa,iBAAiB;GAC9G;GACA,iBAAiB;IACf,MAAM,qBAAqB,KAAK,IAAI,kBAAkB,MAAM,qBAAqB,CAAC;IAClF,cAAc,OAAO,cAAc,WAAW,aAAa,iBAAiB;GAC9E;EACF,CAAC;CACH,GAAG,MAAM,kBAAkB;AAC7B;AAEA,SAAS,KACP,SACA,OACA,cACA,mBACA,EAAE,WAAW,aACb;CACA,MAAM,iBAAiB,IAAI,OAAO;CAClC,aAAa,UAAU,aAAa;EAClC,MAAM,iBAAiB,OAAO,OAAO;EACrC,IAAI,CAAC,mBAAmB,QAAQ,GAAG;GACjC,MAAM,kBAAA;GACN,kBAAkB,OAAO;IAAE,MAAM;IAAW,WAAW,MAAM,iBAAiB,MAAM;IAAG;GAAQ,CAAC;GAChG,UAAU;EACZ,OAAO;GAEL,MAAM,kBACJ,MAAM,iBAAiB,sBAAsB,IAAA,IAAA;GAC/C,QAAQ,QAAQ;IACd,OAAO,QAAQ,QAAQ,QAAQ,MAAM,QAAQ,IAAI;IACjD,mBAAmB,SAAS;GAC9B;GACA,kBAAkB,OAAO;IAAE,MAAM;IAAW,WAAW,MAAM,iBAAiB,MAAM;IAAG;GAAQ,CAAC;GAChG,UAAU;EACZ;CACF,CAAC;AACH;AAEA,SAAS,oBACP,QACA,OACA,cACA,WACA,aACA,mBACA;CACA,IAAI,WAAA,KAAwC,MAAM,eAAe,OAAO,KAAK,CAAC,MAAM,mBAAmB;EACrG,YAAY;GACV,SAAS,eAAe,UAAU,kCAAkC,wBAAwB,cAAc;GAC1G,QAAQ,YAAY;GACpB,aAAa,UAAU;EACzB,CAAC;EACD,MAAM,oBAAoB;CAC5B;CACA,MAAM,gBAAgB,MAAM;CAC5B,MAAM,iBAAiB,gBAAgB;CACvC,OAAO,cAAc,KAAK,IAAI,GAC5B,sBAAsB,cAAc,QAAQ,GAAI,OAAO,cAAc,WAAW,aAAa,iBAAiB;AAElH;AAEA,SAAS,mBAAmB,UAAwB;CAClD,OACE,SAAS,SAAS,aAChB,SAAS,WAAW,KAAK,CAAC,UAAU,UACpC,SAAS,WAAW,OACpB,SAAS,WAAW,OACpB,cAAc,SAAS,MAAM;AAEnC;AAEA,SAAgB,gBAAwD;CACtE,OAAO;EACL,iBAAA;EACA,oBAAoB;EACpB,kBAAkB,oBAAoB;EACtC,gBAAgB,gBAAgB;EAChC,mBAAmB;CACrB;AACF;AAEA,SAAS,kBAAwC;CAC/C,MAAM,QAAgB,CAAC;CACvB,OAAO;EACL,YAAY;EACZ,QAAQ,SAAe;GACrB,IAAI,KAAK,OAAO,GACd,OAAO;GAET,MAAM,KAAK,OAAO;GAClB,KAAK,cAAc,QAAQ;GAC3B,OAAO;EACT;EACA,QAAQ;GACN,OAAO,MAAM;EACf;EACA,UAAU;GACR,MAAM,UAAU,MAAM,MAAM;GAC5B,IAAI,SACF,KAAK,cAAc,QAAQ;GAE7B,OAAO;EACT;EACA,OAAO;GACL,OAAO,MAAM;EACf;EACA,SAAS;GACP,OAAO,KAAK,cAAc;EAC5B;CACF;AACF;AAEA,SAAS,sBAAsB;CAC7B,OAAO;EACL,qBAAqB;EACrB,kBAAkB;EAClB,UAAU,SAAkB;GAC1B,OACE,KAAK,wBAAwB,KAC5B,KAAK,mBAAmB,QAAQ,cAAc,2BAC7C,KAAK,sBAAA;EAEX;EACA,IAAI,SAAkB;GACpB,KAAK,uBAAuB;GAC5B,KAAK,oBAAoB,QAAQ;EACnC;EACA,OAAO,SAAkB;GACvB,KAAK,uBAAuB;GAC5B,KAAK,oBAAoB,QAAQ;EACnC;EACA,QAAwB;GACtB,OAAO;IACL,kBAAkB,KAAK;IACvB,qBAAqB,KAAK;GAC5B;EACF;CACF;AACF"}
package/package.json CHANGED
@@ -1,18 +1,29 @@
1
1
  {
2
2
  "name": "@openobserve/browser-core",
3
- "version": "0.3.4",
3
+ "version": "0.4.0-beta.2",
4
4
  "license": "Apache-2.0",
5
5
  "main": "cjs/index.js",
6
- "module": "esm/index.js",
6
+ "module": "esm/index.mjs",
7
7
  "types": "cjs/index.d.ts",
8
8
  "sideEffects": false,
9
+ "files": [
10
+ "cjs",
11
+ "esm",
12
+ "src",
13
+ "!src/**/*.spec.ts",
14
+ "!src/**/*.specHelper.ts"
15
+ ],
9
16
  "scripts": {
10
- "build": "node ../../scripts/build/build-package.ts --modules"
17
+ "build": "node ../../scripts/build/build-package.ts --modules",
18
+ "prepack": "yarn build"
11
19
  },
12
20
  "repository": {
13
21
  "type": "git",
14
22
  "url": "https://github.com/openobserve/browser-sdk.git",
15
- "directory": "packages/core"
23
+ "directory": "packages/browser-core"
24
+ },
25
+ "dependencies": {
26
+ "@openobserve/js-core": "0.4.0-beta.2"
16
27
  },
17
28
  "devDependencies": {
18
29
  "@types/pako": "2.0.4",
package/src/boot/init.ts CHANGED
@@ -1,5 +1,5 @@
1
+ import { setDebugMode } from '@openobserve/js-core/util'
1
2
  import { catchUserErrors } from '../tools/catchUserErrors'
2
- import { setDebugMode } from '../tools/monitor'
3
3
  import { display } from '../tools/display'
4
4
 
5
5
  // replaced at build time
@@ -49,7 +49,7 @@ export function defineGlobal<Global, Name extends keyof Global>(global: Global,
49
49
  display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.')
50
50
  }
51
51
  global[name] = api
52
- if (existingGlobalVariable && existingGlobalVariable.q) {
52
+ if (existingGlobalVariable?.q) {
53
53
  existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')())
54
54
  }
55
55
  }
@@ -1,5 +1,6 @@
1
1
  import { monitor } from '../tools/monitor'
2
2
  import { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue'
3
+ import { noop } from '../tools/utils/functionUtils'
3
4
  import type { CookieStore, CookieStoreEventMap, VisualViewport, VisualViewportEventMap } from './browser.types'
4
5
 
5
6
  export type TrustableEvent<E extends Event = Event> = E & { __ooIsTrusted?: boolean }
@@ -39,6 +40,7 @@ export const enum DOM_EVENT {
39
40
  SECURITY_POLICY_VIOLATION = 'securitypolicyviolation',
40
41
  SELECTION_CHANGE = 'selectionchange',
41
42
  STORAGE = 'storage',
43
+ UNHANDLED_REJECTION = 'unhandledrejection',
42
44
  }
43
45
 
44
46
  interface AddEventListenerOptions {
@@ -56,7 +58,10 @@ type EventMapFor<T> = T extends Window
56
58
  visibilitychange: Event
57
59
  }
58
60
  : T extends Document
59
- ? DocumentEventMap
61
+ ? DocumentEventMap & {
62
+ // TS 4.9.5 does not define `prerenderingchange` on Document yet (Speculation Rules / Prerender2)
63
+ prerenderingchange: Event
64
+ }
60
65
  : T extends HTMLElement
61
66
  ? HTMLElementEventMap
62
67
  : T extends VisualViewport
@@ -87,13 +92,12 @@ type EventMapFor<T> = T extends Window
87
92
  * * returns a `stop` function to remove the listener
88
93
  */
89
94
  export function addEventListener<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(
90
- configuration: { allowUntrustedEvents?: boolean | undefined },
91
95
  eventTarget: Target,
92
96
  eventName: EventName,
93
97
  listener: (event: EventMapFor<Target>[EventName] & { type: EventName }) => void,
94
98
  options?: AddEventListenerOptions
95
99
  ) {
96
- return addEventListeners(configuration, eventTarget, [eventName], listener, options)
100
+ return addEventListeners(eventTarget, [eventName], listener, options)
97
101
  }
98
102
 
99
103
  /**
@@ -109,14 +113,13 @@ export function addEventListener<Target extends EventTarget, EventName extends k
109
113
  * * with `once: true`, the listener will be called at most once, even if different events are listened
110
114
  */
111
115
  export function addEventListeners<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(
112
- configuration: { allowUntrustedEvents?: boolean | undefined },
113
116
  eventTarget: Target,
114
117
  eventNames: EventName[],
115
118
  listener: (event: EventMapFor<Target>[EventName] & { type: EventName }) => void,
116
119
  { once, capture, passive }: AddEventListenerOptions = {}
117
120
  ) {
118
121
  const listenerWithMonitor = monitor((event: TrustableEvent) => {
119
- if (!event.isTrusted && !event.__ooIsTrusted && !configuration.allowUntrustedEvents) {
122
+ if (!event.isTrusted && !event.__ooIsTrusted && allowUntrustedEventsFromConfiguration === false) {
120
123
  return
121
124
  }
122
125
  if (once) {
@@ -143,3 +146,32 @@ export function addEventListeners<Target extends EventTarget, EventName extends
143
146
  stop,
144
147
  }
145
148
  }
149
+
150
+ export function isEventSupported<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(
151
+ eventTarget: Target | undefined,
152
+ eventName: EventName
153
+ ) {
154
+ if (!eventTarget) {
155
+ return false
156
+ }
157
+
158
+ try {
159
+ addEventListener(eventTarget, eventName, noop).stop()
160
+ return true
161
+ } catch {
162
+ return false
163
+ }
164
+ }
165
+
166
+ let allowUntrustedEventsFromConfiguration: boolean | undefined
167
+
168
+ export function setAllowUntrustedEvents(value: boolean | undefined) {
169
+ if (allowUntrustedEventsFromConfiguration === true) {
170
+ return // keep the laxer value (true)
171
+ }
172
+ allowUntrustedEventsFromConfiguration = value ?? false
173
+ }
174
+
175
+ export function resetAllowUntrustedEvents() {
176
+ allowUntrustedEventsFromConfiguration = undefined
177
+ }
@@ -51,20 +51,31 @@ export interface WeakRefConstructor {
51
51
  new <T extends object>(target: T): WeakRef<T>
52
52
  }
53
53
 
54
+ export interface CookieStoreItem {
55
+ name: string
56
+ value: string
57
+ domain?: string
58
+ path?: string
59
+ expires?: number
60
+ secure?: boolean
61
+ sameSite?: 'strict' | 'lax' | 'none'
62
+ partitioned?: boolean
63
+ }
64
+
54
65
  export interface CookieStore extends EventTarget {
55
- get(name: string): Promise<unknown>
56
- getAll(name?: string): Promise<
57
- Array<{
58
- name: string
59
- value: string
60
- domain?: string
61
- path?: string
62
- expires?: number
63
- secure?: boolean
64
- sameSite?: 'strict' | 'lax' | 'none'
65
- partitioned?: boolean
66
- }>
67
- >
66
+ get(name: string): Promise<CookieStoreItem | null>
67
+ getAll(name?: string): Promise<CookieStoreItem[]>
68
+ set(options: {
69
+ name: string
70
+ value: string
71
+ expires?: number | Date
72
+ domain?: string
73
+ path?: string
74
+ secure?: boolean
75
+ sameSite?: 'strict' | 'lax' | 'none'
76
+ partitioned?: boolean
77
+ }): Promise<void>
78
+ delete(options: { name: string; domain?: string; path?: string; partitioned?: boolean }): Promise<void>
68
79
  }
69
80
 
70
81
  export interface CookieStoreEventMap {
@@ -80,3 +91,106 @@ export type CookieChangeEvent = Event & {
80
91
  changed: CookieChangeItem[]
81
92
  deleted: CookieChangeItem[]
82
93
  }
94
+
95
+ export type NetworkInterface = 'bluetooth' | 'cellular' | 'ethernet' | 'none' | 'wifi' | 'wimax' | 'other' | 'unknown'
96
+ export type EffectiveType = 'slow-2g' | '2g' | '3g' | '4g'
97
+
98
+ export interface BrowserNavigator extends Navigator {
99
+ connection?: NetworkInformation
100
+ }
101
+
102
+ export interface NetworkInformation {
103
+ type?: NetworkInterface
104
+ effectiveType?: EffectiveType
105
+ saveData: boolean
106
+ }
107
+
108
+ // Types for the JS Self-Profiling API
109
+ // https://wicg.github.io/js-self-profiling/
110
+
111
+ export interface ProfilerFrame {
112
+ /** A function instance name. */
113
+ readonly name: string
114
+ /** Index in the trace.resources array. */
115
+ readonly resourceId?: number
116
+ /** 1-based index of the line. */
117
+ readonly line?: number
118
+ /** 1-based index of the column. */
119
+ readonly column?: number
120
+ }
121
+
122
+ export interface ProfilerStack {
123
+ /** Index in the trace.stacks array. */
124
+ readonly parentId?: number
125
+ /** Index in the trace.frames array. */
126
+ readonly frameId: number
127
+ }
128
+
129
+ export interface ProfilerSample {
130
+ /** High resolution time relative to the profiling session's time origin. */
131
+ readonly timestamp: number
132
+ /** Index in the trace.stacks array. */
133
+ readonly stackId?: number
134
+ }
135
+
136
+ export type ProfilerResource = string
137
+
138
+ export interface ProfilerTrace {
139
+ /** An array of profiler resources. */
140
+ readonly resources: ProfilerResource[]
141
+ /** An array of profiler frames. */
142
+ readonly frames: ProfilerFrame[]
143
+ /** An array of profiler stacks. */
144
+ readonly stacks: ProfilerStack[]
145
+ /** An array of profiler samples. */
146
+ readonly samples: ProfilerSample[]
147
+ }
148
+
149
+ export interface ProfilerInitOptions {
150
+ /** Sample interval in ms. */
151
+ readonly sampleInterval: number
152
+ /** Max buffer size in number of samples. */
153
+ readonly maxBufferSize: number
154
+ }
155
+
156
+ export interface ProfilerConstructor {
157
+ new (options: ProfilerInitOptions): Profiler
158
+ }
159
+
160
+ export interface Profiler extends EventTarget {
161
+ /** Sample interval in ms. */
162
+ readonly sampleInterval: number
163
+ /** True if profiler is stopped. */
164
+ readonly stopped: boolean
165
+
166
+ stop(): Promise<ProfilerTrace>
167
+
168
+ addEventListener<K extends keyof ProfilerEventMap>(
169
+ type: K,
170
+ listener: (ev: ProfilerEventMap[K]) => any,
171
+ options?: boolean | AddEventListenerOptions
172
+ ): void
173
+ addEventListener(
174
+ type: string,
175
+ listener: EventListenerOrEventListenerObject,
176
+ options?: boolean | AddEventListenerOptions
177
+ ): void
178
+ removeEventListener<K extends keyof ProfilerEventMap>(
179
+ type: K,
180
+ listener: (ev: ProfilerEventMap[K]) => any,
181
+ options?: boolean | EventListenerOptions
182
+ ): void
183
+ removeEventListener(
184
+ type: string,
185
+ listener: EventListenerOrEventListenerObject,
186
+ options?: boolean | EventListenerOptions
187
+ ): void
188
+ }
189
+
190
+ interface ProfilerEventMap {
191
+ samplebufferfull: SampleBufferFullEvent
192
+ }
193
+
194
+ export interface SampleBufferFullEvent extends Event {
195
+ readonly target: Profiler
196
+ }