@openobserve/browser-core 0.2.11 → 0.2.12-beta.4

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 (628) hide show
  1. package/package.json +6 -5
  2. package/src/boot/displayAlreadyInitializedError.ts +8 -0
  3. package/src/boot/init.ts +29 -15
  4. package/src/browser/addEventListener.ts +44 -35
  5. package/src/browser/{types.ts → browser.types.ts} +42 -0
  6. package/src/browser/cookie.ts +69 -15
  7. package/src/browser/fetchObservable.ts +97 -42
  8. package/src/browser/{pageExitObservable.ts → pageMayExitObservable.ts} +11 -24
  9. package/src/browser/runOnReadyState.ts +14 -4
  10. package/src/browser/xhrObservable.ts +45 -38
  11. package/src/domain/allowedTrackingOrigins.ts +30 -0
  12. package/src/domain/bufferedData.ts +32 -0
  13. package/src/domain/configuration/configuration.ts +366 -95
  14. package/src/domain/configuration/endpointBuilder.ts +48 -64
  15. package/src/domain/configuration/index.ts +6 -4
  16. package/src/domain/configuration/transportConfiguration.ts +42 -35
  17. package/src/domain/connectivity/connectivity.ts +31 -0
  18. package/src/domain/connectivity/index.ts +1 -0
  19. package/src/domain/console/consoleObservable.ts +59 -27
  20. package/src/domain/context/contextConstants.ts +27 -0
  21. package/src/domain/context/contextManager.ts +85 -0
  22. package/src/domain/context/contextUtils.ts +14 -0
  23. package/src/domain/context/defineContextMethod.ts +31 -0
  24. package/src/domain/context/storeContextManager.ts +55 -0
  25. package/src/domain/contexts/accountContext.ts +47 -0
  26. package/src/domain/contexts/globalContext.ts +30 -0
  27. package/src/domain/contexts/rumInternalContext.type.ts +15 -0
  28. package/src/domain/contexts/userContext.ts +64 -0
  29. package/src/domain/deflate/{types.ts → deflate.types.ts} +18 -2
  30. package/src/domain/deflate/index.ts +1 -1
  31. package/src/domain/error/error.ts +28 -84
  32. package/src/domain/error/error.types.ts +21 -4
  33. package/src/domain/error/trackRuntimeError.ts +37 -8
  34. package/src/domain/eventRateLimiter/createEventRateLimiter.ts +5 -2
  35. package/src/domain/extension/extensionUtils.ts +28 -0
  36. package/src/domain/intakeSites.ts +18 -0
  37. package/src/domain/report/browser.types.ts +12 -0
  38. package/src/domain/report/reportObservable.ts +37 -30
  39. package/src/domain/resourceUtils.ts +20 -16
  40. package/src/domain/session/README.md +193 -0
  41. package/src/domain/session/oldCookiesMigration.ts +7 -7
  42. package/src/domain/session/sessionConstants.ts +16 -1
  43. package/src/domain/session/sessionManager.ts +179 -15
  44. package/src/domain/session/sessionState.ts +49 -17
  45. package/src/domain/session/sessionStateValidation.ts +9 -0
  46. package/src/domain/session/sessionStore.ts +118 -55
  47. package/src/domain/session/sessionStoreOperations.ts +51 -32
  48. package/src/domain/session/storeStrategies/sessionInCookie.ts +113 -23
  49. package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +11 -8
  50. package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +6 -2
  51. package/src/domain/synthetics/syntheticsWorkerValues.ts +15 -4
  52. package/src/domain/tags.ts +76 -0
  53. package/src/domain/telemetry/index.ts +12 -4
  54. package/src/domain/telemetry/rawTelemetryEvent.types.ts +11 -3
  55. package/src/domain/telemetry/telemetry.ts +242 -98
  56. package/src/domain/telemetry/telemetryEvent.types.ts +530 -5
  57. package/src/domain/trackingConsent.ts +34 -0
  58. package/src/index.ts +92 -55
  59. package/src/tools/abstractHooks.ts +72 -0
  60. package/src/tools/abstractLifeCycle.ts +1 -0
  61. package/src/tools/boundedBuffer.ts +36 -8
  62. package/src/tools/display.ts +18 -13
  63. package/src/tools/encoder.ts +103 -0
  64. package/src/tools/experimentalFeatures.ts +18 -9
  65. package/src/tools/getZoneJsOriginalValue.ts +1 -1
  66. package/src/tools/{getGlobalObject.ts → globalObject.ts} +20 -0
  67. package/src/tools/instrumentMethod.ts +127 -66
  68. package/src/tools/matchOption.ts +1 -2
  69. package/src/tools/mergeInto.ts +16 -16
  70. package/src/tools/monitor.ts +14 -10
  71. package/src/tools/observable.ts +79 -15
  72. package/src/tools/queueMicrotask.ts +13 -0
  73. package/src/tools/readBytesFromStream.ts +24 -64
  74. package/src/tools/requestIdleCallback.ts +40 -0
  75. package/src/tools/sendToExtension.ts +3 -1
  76. package/src/tools/serialisation/context.ts +4 -1
  77. package/src/tools/serialisation/sanitize.ts +32 -14
  78. package/src/tools/stackTrace/computeStackTrace.ts +250 -0
  79. package/src/tools/stackTrace/handlingStack.ts +48 -0
  80. package/src/tools/taskQueue.ts +63 -0
  81. package/src/tools/timer.ts +1 -1
  82. package/src/tools/utils/arrayUtils.ts +11 -3
  83. package/src/tools/utils/browserDetection.ts +35 -3
  84. package/src/tools/utils/byteUtils.ts +13 -2
  85. package/src/tools/utils/functionUtils.ts +0 -2
  86. package/src/tools/utils/numberUtils.ts +2 -1
  87. package/src/tools/utils/objectUtils.ts +1 -3
  88. package/src/tools/utils/polyfills.ts +6 -110
  89. package/src/tools/utils/responseUtils.ts +1 -1
  90. package/src/tools/utils/stringUtils.ts +62 -4
  91. package/src/tools/utils/timeUtils.ts +18 -13
  92. package/src/tools/utils/timezone.ts +9 -0
  93. package/src/tools/utils/urlPolyfill.ts +29 -59
  94. package/src/tools/valueHistory.ts +66 -35
  95. package/src/transport/batch.ts +113 -61
  96. package/src/transport/eventBridge.ts +24 -5
  97. package/src/transport/flushController.ts +44 -23
  98. package/src/transport/httpRequest.ts +99 -71
  99. package/src/transport/index.ts +7 -4
  100. package/src/transport/sendWithRetryStrategy.ts +60 -41
  101. package/cjs/boot/init.d.ts +0 -5
  102. package/cjs/boot/init.js +0 -36
  103. package/cjs/boot/init.js.map +0 -1
  104. package/cjs/browser/addEventListener.d.ts +0 -76
  105. package/cjs/browser/addEventListener.js +0 -52
  106. package/cjs/browser/addEventListener.js.map +0 -1
  107. package/cjs/browser/cookie.d.ts +0 -10
  108. package/cjs/browser/cookie.js +0 -69
  109. package/cjs/browser/cookie.js.map +0 -1
  110. package/cjs/browser/fetchObservable.d.ts +0 -23
  111. package/cjs/browser/fetchObservable.js +0 -74
  112. package/cjs/browser/fetchObservable.js.map +0 -1
  113. package/cjs/browser/pageExitObservable.d.ts +0 -14
  114. package/cjs/browser/pageExitObservable.js +0 -58
  115. package/cjs/browser/pageExitObservable.js.map +0 -1
  116. package/cjs/browser/runOnReadyState.d.ts +0 -2
  117. package/cjs/browser/runOnReadyState.js +0 -15
  118. package/cjs/browser/runOnReadyState.js.map +0 -1
  119. package/cjs/browser/types.d.ts +0 -19
  120. package/cjs/browser/types.js +0 -6
  121. package/cjs/browser/types.js.map +0 -1
  122. package/cjs/browser/xhrObservable.d.ts +0 -22
  123. package/cjs/browser/xhrObservable.js +0 -93
  124. package/cjs/browser/xhrObservable.js.map +0 -1
  125. package/cjs/domain/configuration/configuration.d.ts +0 -67
  126. package/cjs/domain/configuration/configuration.js +0 -95
  127. package/cjs/domain/configuration/configuration.js.map +0 -1
  128. package/cjs/domain/configuration/endpointBuilder.d.ts +0 -14
  129. package/cjs/domain/configuration/endpointBuilder.js +0 -94
  130. package/cjs/domain/configuration/endpointBuilder.js.map +0 -1
  131. package/cjs/domain/configuration/index.d.ts +0 -3
  132. package/cjs/domain/configuration/index.js +0 -25
  133. package/cjs/domain/configuration/index.js.map +0 -1
  134. package/cjs/domain/configuration/intakeSites.d.ts +0 -5
  135. package/cjs/domain/configuration/intakeSites.js +0 -9
  136. package/cjs/domain/configuration/intakeSites.js.map +0 -1
  137. package/cjs/domain/configuration/tags.d.ts +0 -4
  138. package/cjs/domain/configuration/tags.js +0 -39
  139. package/cjs/domain/configuration/tags.js.map +0 -1
  140. package/cjs/domain/configuration/transportConfiguration.d.ts +0 -16
  141. package/cjs/domain/configuration/transportConfiguration.js +0 -42
  142. package/cjs/domain/configuration/transportConfiguration.js.map +0 -1
  143. package/cjs/domain/console/consoleObservable.d.ts +0 -11
  144. package/cjs/domain/console/consoleObservable.js +0 -75
  145. package/cjs/domain/console/consoleObservable.js.map +0 -1
  146. package/cjs/domain/deflate/index.d.ts +0 -1
  147. package/cjs/domain/deflate/index.js +0 -18
  148. package/cjs/domain/deflate/index.js.map +0 -1
  149. package/cjs/domain/deflate/types.d.ts +0 -26
  150. package/cjs/domain/deflate/types.js +0 -3
  151. package/cjs/domain/deflate/types.js.map +0 -1
  152. package/cjs/domain/error/error.d.ts +0 -28
  153. package/cjs/domain/error/error.js +0 -131
  154. package/cjs/domain/error/error.js.map +0 -1
  155. package/cjs/domain/error/error.types.d.ts +0 -40
  156. package/cjs/domain/error/error.types.js +0 -13
  157. package/cjs/domain/error/error.types.js.map +0 -1
  158. package/cjs/domain/error/trackRuntimeError.d.ts +0 -5
  159. package/cjs/domain/error/trackRuntimeError.js +0 -21
  160. package/cjs/domain/error/trackRuntimeError.js.map +0 -1
  161. package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
  162. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +0 -40
  163. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
  164. package/cjs/domain/report/browser.types.d.ts +0 -24
  165. package/cjs/domain/report/browser.types.js +0 -3
  166. package/cjs/domain/report/browser.types.js.map +0 -1
  167. package/cjs/domain/report/reportObservable.d.ts +0 -15
  168. package/cjs/domain/report/reportObservable.js +0 -94
  169. package/cjs/domain/report/reportObservable.js.map +0 -1
  170. package/cjs/domain/resourceUtils.d.ts +0 -16
  171. package/cjs/domain/resourceUtils.js +0 -3
  172. package/cjs/domain/resourceUtils.js.map +0 -1
  173. package/cjs/domain/session/oldCookiesMigration.d.ts +0 -11
  174. package/cjs/domain/session/oldCookiesMigration.js +0 -40
  175. package/cjs/domain/session/oldCookiesMigration.js.map +0 -1
  176. package/cjs/domain/session/sessionConstants.d.ts +0 -2
  177. package/cjs/domain/session/sessionConstants.js +0 -7
  178. package/cjs/domain/session/sessionConstants.js.map +0 -1
  179. package/cjs/domain/session/sessionManager.d.ts +0 -20
  180. package/cjs/domain/session/sessionManager.js +0 -65
  181. package/cjs/domain/session/sessionManager.js.map +0 -1
  182. package/cjs/domain/session/sessionState.d.ts +0 -11
  183. package/cjs/domain/session/sessionState.js +0 -45
  184. package/cjs/domain/session/sessionState.js.map +0 -1
  185. package/cjs/domain/session/sessionStore.d.ts +0 -34
  186. package/cjs/domain/session/sessionStore.js +0 -144
  187. package/cjs/domain/session/sessionStore.js.map +0 -1
  188. package/cjs/domain/session/sessionStoreOperations.d.ts +0 -15
  189. package/cjs/domain/session/sessionStoreOperations.js +0 -104
  190. package/cjs/domain/session/sessionStoreOperations.js.map +0 -1
  191. package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +0 -6
  192. package/cjs/domain/session/storeStrategies/sessionInCookie.js +0 -48
  193. package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
  194. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -3
  195. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +0 -40
  196. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
  197. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -14
  198. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +0 -5
  199. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
  200. package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +0 -11
  201. package/cjs/domain/synthetics/syntheticsWorkerValues.js +0 -22
  202. package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
  203. package/cjs/domain/telemetry/index.d.ts +0 -3
  204. package/cjs/domain/telemetry/index.js +0 -28
  205. package/cjs/domain/telemetry/index.js.map +0 -1
  206. package/cjs/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -11
  207. package/cjs/domain/telemetry/rawTelemetryEvent.types.js +0 -8
  208. package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
  209. package/cjs/domain/telemetry/telemetry.d.ts +0 -112
  210. package/cjs/domain/telemetry/telemetry.js +0 -146
  211. package/cjs/domain/telemetry/telemetry.js.map +0 -1
  212. package/cjs/domain/telemetry/telemetryEvent.types.d.ts +0 -375
  213. package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
  214. package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
  215. package/cjs/domain/tracekit/computeStackTrace.d.ts +0 -5
  216. package/cjs/domain/tracekit/computeStackTrace.js +0 -118
  217. package/cjs/domain/tracekit/computeStackTrace.js.map +0 -1
  218. package/cjs/domain/tracekit/index.d.ts +0 -3
  219. package/cjs/domain/tracekit/index.js +0 -8
  220. package/cjs/domain/tracekit/index.js.map +0 -1
  221. package/cjs/domain/tracekit/tracekit.d.ts +0 -35
  222. package/cjs/domain/tracekit/tracekit.js +0 -95
  223. package/cjs/domain/tracekit/tracekit.js.map +0 -1
  224. package/cjs/domain/tracekit/types.d.ts +0 -44
  225. package/cjs/domain/tracekit/types.js +0 -3
  226. package/cjs/domain/tracekit/types.js.map +0 -1
  227. package/cjs/domain/user/index.d.ts +0 -2
  228. package/cjs/domain/user/index.js +0 -19
  229. package/cjs/domain/user/index.js.map +0 -1
  230. package/cjs/domain/user/user.d.ts +0 -12
  231. package/cjs/domain/user/user.js +0 -35
  232. package/cjs/domain/user/user.js.map +0 -1
  233. package/cjs/domain/user/user.types.d.ts +0 -6
  234. package/cjs/domain/user/user.types.js +0 -3
  235. package/cjs/domain/user/user.types.js.map +0 -1
  236. package/cjs/index.d.ts +0 -63
  237. package/cjs/index.js +0 -155
  238. package/cjs/index.js.map +0 -1
  239. package/cjs/tools/abstractLifeCycle.d.ts +0 -23
  240. package/cjs/tools/abstractLifeCycle.js +0 -29
  241. package/cjs/tools/abstractLifeCycle.js.map +0 -1
  242. package/cjs/tools/boundedBuffer.d.ts +0 -5
  243. package/cjs/tools/boundedBuffer.js +0 -22
  244. package/cjs/tools/boundedBuffer.js.map +0 -1
  245. package/cjs/tools/catchUserErrors.d.ts +0 -1
  246. package/cjs/tools/catchUserErrors.js +0 -20
  247. package/cjs/tools/catchUserErrors.js.map +0 -1
  248. package/cjs/tools/display.d.ts +0 -35
  249. package/cjs/tools/display.js +0 -45
  250. package/cjs/tools/display.js.map +0 -1
  251. package/cjs/tools/experimentalFeatures.d.ts +0 -24
  252. package/cjs/tools/experimentalFeatures.js +0 -47
  253. package/cjs/tools/experimentalFeatures.js.map +0 -1
  254. package/cjs/tools/getGlobalObject.d.ts +0 -4
  255. package/cjs/tools/getGlobalObject.js +0 -37
  256. package/cjs/tools/getGlobalObject.js.map +0 -1
  257. package/cjs/tools/getZoneJsOriginalValue.d.ts +0 -19
  258. package/cjs/tools/getZoneJsOriginalValue.js +0 -30
  259. package/cjs/tools/getZoneJsOriginalValue.js.map +0 -1
  260. package/cjs/tools/instrumentMethod.d.ts +0 -19
  261. package/cjs/tools/instrumentMethod.js +0 -83
  262. package/cjs/tools/instrumentMethod.js.map +0 -1
  263. package/cjs/tools/matchOption.d.ts +0 -8
  264. package/cjs/tools/matchOption.js +0 -38
  265. package/cjs/tools/matchOption.js.map +0 -1
  266. package/cjs/tools/mergeInto.d.ts +0 -25
  267. package/cjs/tools/mergeInto.js +0 -105
  268. package/cjs/tools/mergeInto.js.map +0 -1
  269. package/cjs/tools/monitor.d.ts +0 -9
  270. package/cjs/tools/monitor.js +0 -76
  271. package/cjs/tools/monitor.js.map +0 -1
  272. package/cjs/tools/observable.d.ts +0 -12
  273. package/cjs/tools/observable.js +0 -44
  274. package/cjs/tools/observable.js.map +0 -1
  275. package/cjs/tools/readBytesFromStream.d.ts +0 -11
  276. package/cjs/tools/readBytesFromStream.js +0 -64
  277. package/cjs/tools/readBytesFromStream.js.map +0 -1
  278. package/cjs/tools/sendToExtension.d.ts +0 -3
  279. package/cjs/tools/sendToExtension.js +0 -11
  280. package/cjs/tools/sendToExtension.js.map +0 -1
  281. package/cjs/tools/serialisation/context.d.ts +0 -6
  282. package/cjs/tools/serialisation/context.js +0 -3
  283. package/cjs/tools/serialisation/context.js.map +0 -1
  284. package/cjs/tools/serialisation/contextManager.d.ts +0 -21
  285. package/cjs/tools/serialisation/contextManager.js +0 -70
  286. package/cjs/tools/serialisation/contextManager.js.map +0 -1
  287. package/cjs/tools/serialisation/heavyCustomerDataWarning.d.ts +0 -8
  288. package/cjs/tools/serialisation/heavyCustomerDataWarning.js +0 -18
  289. package/cjs/tools/serialisation/heavyCustomerDataWarning.js.map +0 -1
  290. package/cjs/tools/serialisation/jsonStringify.d.ts +0 -14
  291. package/cjs/tools/serialisation/jsonStringify.js +0 -49
  292. package/cjs/tools/serialisation/jsonStringify.js.map +0 -1
  293. package/cjs/tools/serialisation/sanitize.d.ts +0 -18
  294. package/cjs/tools/serialisation/sanitize.js +0 -185
  295. package/cjs/tools/serialisation/sanitize.js.map +0 -1
  296. package/cjs/tools/timer.d.ts +0 -5
  297. package/cjs/tools/timer.js +0 -23
  298. package/cjs/tools/timer.js.map +0 -1
  299. package/cjs/tools/utils/arrayUtils.d.ts +0 -1
  300. package/cjs/tools/utils/arrayUtils.js +0 -11
  301. package/cjs/tools/utils/arrayUtils.js.map +0 -1
  302. package/cjs/tools/utils/browserDetection.d.ts +0 -2
  303. package/cjs/tools/utils/browserDetection.js +0 -12
  304. package/cjs/tools/utils/browserDetection.js.map +0 -1
  305. package/cjs/tools/utils/byteUtils.d.ts +0 -4
  306. package/cjs/tools/utils/byteUtils.js +0 -31
  307. package/cjs/tools/utils/byteUtils.js.map +0 -1
  308. package/cjs/tools/utils/functionUtils.d.ts +0 -9
  309. package/cjs/tools/utils/functionUtils.js +0 -48
  310. package/cjs/tools/utils/functionUtils.js.map +0 -1
  311. package/cjs/tools/utils/numberUtils.d.ts +0 -8
  312. package/cjs/tools/utils/numberUtils.js +0 -24
  313. package/cjs/tools/utils/numberUtils.js.map +0 -1
  314. package/cjs/tools/utils/objectUtils.d.ts +0 -10
  315. package/cjs/tools/utils/objectUtils.js +0 -26
  316. package/cjs/tools/utils/objectUtils.js.map +0 -1
  317. package/cjs/tools/utils/polyfills.d.ts +0 -24
  318. package/cjs/tools/utils/polyfills.js +0 -110
  319. package/cjs/tools/utils/polyfills.js.map +0 -1
  320. package/cjs/tools/utils/responseUtils.d.ts +0 -2
  321. package/cjs/tools/utils/responseUtils.js +0 -18
  322. package/cjs/tools/utils/responseUtils.js.map +0 -1
  323. package/cjs/tools/utils/stringUtils.d.ts +0 -7
  324. package/cjs/tools/utils/stringUtils.js +0 -32
  325. package/cjs/tools/utils/stringUtils.js.map +0 -1
  326. package/cjs/tools/utils/timeUtils.d.ts +0 -57
  327. package/cjs/tools/utils/timeUtils.js +0 -99
  328. package/cjs/tools/utils/timeUtils.js.map +0 -1
  329. package/cjs/tools/utils/typeUtils.d.ts +0 -4
  330. package/cjs/tools/utils/typeUtils.js +0 -17
  331. package/cjs/tools/utils/typeUtils.js.map +0 -1
  332. package/cjs/tools/utils/urlPolyfill.d.ts +0 -14
  333. package/cjs/tools/utils/urlPolyfill.js +0 -92
  334. package/cjs/tools/utils/urlPolyfill.js.map +0 -1
  335. package/cjs/tools/valueHistory.d.ts +0 -50
  336. package/cjs/tools/valueHistory.js +0 -106
  337. package/cjs/tools/valueHistory.js.map +0 -1
  338. package/cjs/transport/batch.d.ts +0 -19
  339. package/cjs/transport/batch.js +0 -79
  340. package/cjs/transport/batch.js.map +0 -1
  341. package/cjs/transport/eventBridge.d.ts +0 -12
  342. package/cjs/transport/eventBridge.js +0 -34
  343. package/cjs/transport/eventBridge.js.map +0 -1
  344. package/cjs/transport/flushController.d.ts +0 -48
  345. package/cjs/transport/flushController.js +0 -97
  346. package/cjs/transport/flushController.js.map +0 -1
  347. package/cjs/transport/httpRequest.d.ts +0 -37
  348. package/cjs/transport/httpRequest.js +0 -91
  349. package/cjs/transport/httpRequest.js.map +0 -1
  350. package/cjs/transport/index.d.ts +0 -4
  351. package/cjs/transport/index.js +0 -13
  352. package/cjs/transport/index.js.map +0 -1
  353. package/cjs/transport/sendWithRetryStrategy.d.ts +0 -39
  354. package/cjs/transport/sendWithRetryStrategy.js +0 -151
  355. package/cjs/transport/sendWithRetryStrategy.js.map +0 -1
  356. package/cjs/transport/startBatchWithReplica.d.ts +0 -15
  357. package/cjs/transport/startBatchWithReplica.js +0 -37
  358. package/cjs/transport/startBatchWithReplica.js.map +0 -1
  359. package/esm/boot/init.d.ts +0 -5
  360. package/esm/boot/init.js +0 -31
  361. package/esm/boot/init.js.map +0 -1
  362. package/esm/browser/addEventListener.d.ts +0 -76
  363. package/esm/browser/addEventListener.js +0 -47
  364. package/esm/browser/addEventListener.js.map +0 -1
  365. package/esm/browser/cookie.d.ts +0 -10
  366. package/esm/browser/cookie.js +0 -61
  367. package/esm/browser/cookie.js.map +0 -1
  368. package/esm/browser/fetchObservable.d.ts +0 -23
  369. package/esm/browser/fetchObservable.js +0 -70
  370. package/esm/browser/fetchObservable.js.map +0 -1
  371. package/esm/browser/pageExitObservable.d.ts +0 -14
  372. package/esm/browser/pageExitObservable.js +0 -53
  373. package/esm/browser/pageExitObservable.js.map +0 -1
  374. package/esm/browser/runOnReadyState.d.ts +0 -2
  375. package/esm/browser/runOnReadyState.js +0 -11
  376. package/esm/browser/runOnReadyState.js.map +0 -1
  377. package/esm/browser/types.d.ts +0 -19
  378. package/esm/browser/types.js +0 -5
  379. package/esm/browser/types.js.map +0 -1
  380. package/esm/browser/xhrObservable.d.ts +0 -22
  381. package/esm/browser/xhrObservable.js +0 -89
  382. package/esm/browser/xhrObservable.js.map +0 -1
  383. package/esm/domain/configuration/configuration.d.ts +0 -67
  384. package/esm/domain/configuration/configuration.js +0 -90
  385. package/esm/domain/configuration/configuration.js.map +0 -1
  386. package/esm/domain/configuration/endpointBuilder.d.ts +0 -14
  387. package/esm/domain/configuration/endpointBuilder.js +0 -90
  388. package/esm/domain/configuration/endpointBuilder.js.map +0 -1
  389. package/esm/domain/configuration/index.d.ts +0 -3
  390. package/esm/domain/configuration/index.js +0 -4
  391. package/esm/domain/configuration/index.js.map +0 -1
  392. package/esm/domain/configuration/intakeSites.d.ts +0 -5
  393. package/esm/domain/configuration/intakeSites.js +0 -6
  394. package/esm/domain/configuration/intakeSites.js.map +0 -1
  395. package/esm/domain/configuration/tags.d.ts +0 -4
  396. package/esm/domain/configuration/tags.js +0 -34
  397. package/esm/domain/configuration/tags.js.map +0 -1
  398. package/esm/domain/configuration/transportConfiguration.d.ts +0 -16
  399. package/esm/domain/configuration/transportConfiguration.js +0 -38
  400. package/esm/domain/configuration/transportConfiguration.js.map +0 -1
  401. package/esm/domain/console/consoleObservable.d.ts +0 -11
  402. package/esm/domain/console/consoleObservable.js +0 -70
  403. package/esm/domain/console/consoleObservable.js.map +0 -1
  404. package/esm/domain/deflate/index.d.ts +0 -1
  405. package/esm/domain/deflate/index.js +0 -2
  406. package/esm/domain/deflate/index.js.map +0 -1
  407. package/esm/domain/deflate/types.d.ts +0 -26
  408. package/esm/domain/deflate/types.js +0 -2
  409. package/esm/domain/deflate/types.js.map +0 -1
  410. package/esm/domain/error/error.d.ts +0 -28
  411. package/esm/domain/error/error.js +0 -121
  412. package/esm/domain/error/error.js.map +0 -1
  413. package/esm/domain/error/error.types.d.ts +0 -40
  414. package/esm/domain/error/error.types.js +0 -10
  415. package/esm/domain/error/error.types.js.map +0 -1
  416. package/esm/domain/error/trackRuntimeError.d.ts +0 -5
  417. package/esm/domain/error/trackRuntimeError.js +0 -17
  418. package/esm/domain/error/trackRuntimeError.js.map +0 -1
  419. package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
  420. package/esm/domain/eventRateLimiter/createEventRateLimiter.js +0 -36
  421. package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
  422. package/esm/domain/report/browser.types.d.ts +0 -24
  423. package/esm/domain/report/browser.types.js +0 -2
  424. package/esm/domain/report/browser.types.js.map +0 -1
  425. package/esm/domain/report/reportObservable.d.ts +0 -15
  426. package/esm/domain/report/reportObservable.js +0 -90
  427. package/esm/domain/report/reportObservable.js.map +0 -1
  428. package/esm/domain/resourceUtils.d.ts +0 -16
  429. package/esm/domain/resourceUtils.js +0 -2
  430. package/esm/domain/resourceUtils.js.map +0 -1
  431. package/esm/domain/session/oldCookiesMigration.d.ts +0 -11
  432. package/esm/domain/session/oldCookiesMigration.js +0 -36
  433. package/esm/domain/session/oldCookiesMigration.js.map +0 -1
  434. package/esm/domain/session/sessionConstants.d.ts +0 -2
  435. package/esm/domain/session/sessionConstants.js +0 -4
  436. package/esm/domain/session/sessionConstants.js.map +0 -1
  437. package/esm/domain/session/sessionManager.d.ts +0 -20
  438. package/esm/domain/session/sessionManager.js +0 -60
  439. package/esm/domain/session/sessionManager.js.map +0 -1
  440. package/esm/domain/session/sessionState.d.ts +0 -11
  441. package/esm/domain/session/sessionState.js +0 -38
  442. package/esm/domain/session/sessionState.js.map +0 -1
  443. package/esm/domain/session/sessionStore.d.ts +0 -34
  444. package/esm/domain/session/sessionStore.js +0 -139
  445. package/esm/domain/session/sessionStore.js.map +0 -1
  446. package/esm/domain/session/sessionStoreOperations.d.ts +0 -15
  447. package/esm/domain/session/sessionStoreOperations.js +0 -99
  448. package/esm/domain/session/sessionStoreOperations.js.map +0 -1
  449. package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +0 -6
  450. package/esm/domain/session/storeStrategies/sessionInCookie.js +0 -42
  451. package/esm/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
  452. package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -3
  453. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +0 -35
  454. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
  455. package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -14
  456. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +0 -2
  457. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
  458. package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +0 -11
  459. package/esm/domain/synthetics/syntheticsWorkerValues.js +0 -16
  460. package/esm/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
  461. package/esm/domain/telemetry/index.d.ts +0 -3
  462. package/esm/domain/telemetry/index.js +0 -4
  463. package/esm/domain/telemetry/index.js.map +0 -1
  464. package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -11
  465. package/esm/domain/telemetry/rawTelemetryEvent.types.js +0 -5
  466. package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
  467. package/esm/domain/telemetry/telemetry.d.ts +0 -112
  468. package/esm/domain/telemetry/telemetry.js +0 -134
  469. package/esm/domain/telemetry/telemetry.js.map +0 -1
  470. package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -375
  471. package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
  472. package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
  473. package/esm/domain/tracekit/computeStackTrace.d.ts +0 -5
  474. package/esm/domain/tracekit/computeStackTrace.js +0 -114
  475. package/esm/domain/tracekit/computeStackTrace.js.map +0 -1
  476. package/esm/domain/tracekit/index.d.ts +0 -3
  477. package/esm/domain/tracekit/index.js +0 -3
  478. package/esm/domain/tracekit/index.js.map +0 -1
  479. package/esm/domain/tracekit/tracekit.d.ts +0 -35
  480. package/esm/domain/tracekit/tracekit.js +0 -91
  481. package/esm/domain/tracekit/tracekit.js.map +0 -1
  482. package/esm/domain/tracekit/types.d.ts +0 -44
  483. package/esm/domain/tracekit/types.js +0 -2
  484. package/esm/domain/tracekit/types.js.map +0 -1
  485. package/esm/domain/user/index.d.ts +0 -2
  486. package/esm/domain/user/index.js +0 -3
  487. package/esm/domain/user/index.js.map +0 -1
  488. package/esm/domain/user/user.d.ts +0 -12
  489. package/esm/domain/user/user.js +0 -30
  490. package/esm/domain/user/user.js.map +0 -1
  491. package/esm/domain/user/user.types.d.ts +0 -6
  492. package/esm/domain/user/user.types.js +0 -2
  493. package/esm/domain/user/user.types.js.map +0 -1
  494. package/esm/index.d.ts +0 -63
  495. package/esm/index.js +0 -61
  496. package/esm/index.js.map +0 -1
  497. package/esm/tools/abstractLifeCycle.d.ts +0 -23
  498. package/esm/tools/abstractLifeCycle.js +0 -26
  499. package/esm/tools/abstractLifeCycle.js.map +0 -1
  500. package/esm/tools/boundedBuffer.d.ts +0 -5
  501. package/esm/tools/boundedBuffer.js +0 -19
  502. package/esm/tools/boundedBuffer.js.map +0 -1
  503. package/esm/tools/catchUserErrors.d.ts +0 -1
  504. package/esm/tools/catchUserErrors.js +0 -16
  505. package/esm/tools/catchUserErrors.js.map +0 -1
  506. package/esm/tools/display.d.ts +0 -35
  507. package/esm/tools/display.js +0 -41
  508. package/esm/tools/display.js.map +0 -1
  509. package/esm/tools/experimentalFeatures.d.ts +0 -24
  510. package/esm/tools/experimentalFeatures.js +0 -40
  511. package/esm/tools/experimentalFeatures.js.map +0 -1
  512. package/esm/tools/getGlobalObject.d.ts +0 -4
  513. package/esm/tools/getGlobalObject.js +0 -33
  514. package/esm/tools/getGlobalObject.js.map +0 -1
  515. package/esm/tools/getZoneJsOriginalValue.d.ts +0 -19
  516. package/esm/tools/getZoneJsOriginalValue.js +0 -26
  517. package/esm/tools/getZoneJsOriginalValue.js.map +0 -1
  518. package/esm/tools/instrumentMethod.d.ts +0 -19
  519. package/esm/tools/instrumentMethod.js +0 -77
  520. package/esm/tools/instrumentMethod.js.map +0 -1
  521. package/esm/tools/matchOption.d.ts +0 -8
  522. package/esm/tools/matchOption.js +0 -33
  523. package/esm/tools/matchOption.js.map +0 -1
  524. package/esm/tools/mergeInto.d.ts +0 -25
  525. package/esm/tools/mergeInto.js +0 -99
  526. package/esm/tools/mergeInto.js.map +0 -1
  527. package/esm/tools/monitor.d.ts +0 -9
  528. package/esm/tools/monitor.js +0 -66
  529. package/esm/tools/monitor.js.map +0 -1
  530. package/esm/tools/observable.d.ts +0 -12
  531. package/esm/tools/observable.js +0 -40
  532. package/esm/tools/observable.js.map +0 -1
  533. package/esm/tools/readBytesFromStream.d.ts +0 -11
  534. package/esm/tools/readBytesFromStream.js +0 -60
  535. package/esm/tools/readBytesFromStream.js.map +0 -1
  536. package/esm/tools/sendToExtension.d.ts +0 -3
  537. package/esm/tools/sendToExtension.js +0 -7
  538. package/esm/tools/sendToExtension.js.map +0 -1
  539. package/esm/tools/serialisation/context.d.ts +0 -6
  540. package/esm/tools/serialisation/context.js +0 -2
  541. package/esm/tools/serialisation/context.js.map +0 -1
  542. package/esm/tools/serialisation/contextManager.d.ts +0 -21
  543. package/esm/tools/serialisation/contextManager.js +0 -66
  544. package/esm/tools/serialisation/contextManager.js.map +0 -1
  545. package/esm/tools/serialisation/heavyCustomerDataWarning.d.ts +0 -8
  546. package/esm/tools/serialisation/heavyCustomerDataWarning.js +0 -14
  547. package/esm/tools/serialisation/heavyCustomerDataWarning.js.map +0 -1
  548. package/esm/tools/serialisation/jsonStringify.d.ts +0 -14
  549. package/esm/tools/serialisation/jsonStringify.js +0 -44
  550. package/esm/tools/serialisation/jsonStringify.js.map +0 -1
  551. package/esm/tools/serialisation/sanitize.d.ts +0 -18
  552. package/esm/tools/serialisation/sanitize.js +0 -181
  553. package/esm/tools/serialisation/sanitize.js.map +0 -1
  554. package/esm/tools/timer.d.ts +0 -5
  555. package/esm/tools/timer.js +0 -16
  556. package/esm/tools/timer.js.map +0 -1
  557. package/esm/tools/utils/arrayUtils.d.ts +0 -1
  558. package/esm/tools/utils/arrayUtils.js +0 -7
  559. package/esm/tools/utils/arrayUtils.js.map +0 -1
  560. package/esm/tools/utils/browserDetection.d.ts +0 -2
  561. package/esm/tools/utils/browserDetection.js +0 -7
  562. package/esm/tools/utils/browserDetection.js.map +0 -1
  563. package/esm/tools/utils/byteUtils.d.ts +0 -4
  564. package/esm/tools/utils/byteUtils.js +0 -26
  565. package/esm/tools/utils/byteUtils.js.map +0 -1
  566. package/esm/tools/utils/functionUtils.d.ts +0 -9
  567. package/esm/tools/utils/functionUtils.js +0 -43
  568. package/esm/tools/utils/functionUtils.js.map +0 -1
  569. package/esm/tools/utils/numberUtils.d.ts +0 -8
  570. package/esm/tools/utils/numberUtils.js +0 -17
  571. package/esm/tools/utils/numberUtils.js.map +0 -1
  572. package/esm/tools/utils/objectUtils.d.ts +0 -10
  573. package/esm/tools/utils/objectUtils.js +0 -19
  574. package/esm/tools/utils/objectUtils.js.map +0 -1
  575. package/esm/tools/utils/polyfills.d.ts +0 -24
  576. package/esm/tools/utils/polyfills.js +0 -95
  577. package/esm/tools/utils/polyfills.js.map +0 -1
  578. package/esm/tools/utils/responseUtils.d.ts +0 -2
  579. package/esm/tools/utils/responseUtils.js +0 -13
  580. package/esm/tools/utils/responseUtils.js.map +0 -1
  581. package/esm/tools/utils/stringUtils.d.ts +0 -7
  582. package/esm/tools/utils/stringUtils.js +0 -26
  583. package/esm/tools/utils/stringUtils.js.map +0 -1
  584. package/esm/tools/utils/timeUtils.d.ts +0 -57
  585. package/esm/tools/utils/timeUtils.js +0 -82
  586. package/esm/tools/utils/timeUtils.js.map +0 -1
  587. package/esm/tools/utils/typeUtils.d.ts +0 -4
  588. package/esm/tools/utils/typeUtils.js +0 -13
  589. package/esm/tools/utils/typeUtils.js.map +0 -1
  590. package/esm/tools/utils/urlPolyfill.d.ts +0 -14
  591. package/esm/tools/utils/urlPolyfill.js +0 -80
  592. package/esm/tools/utils/urlPolyfill.js.map +0 -1
  593. package/esm/tools/valueHistory.d.ts +0 -50
  594. package/esm/tools/valueHistory.js +0 -103
  595. package/esm/tools/valueHistory.js.map +0 -1
  596. package/esm/transport/batch.d.ts +0 -19
  597. package/esm/transport/batch.js +0 -76
  598. package/esm/transport/batch.js.map +0 -1
  599. package/esm/transport/eventBridge.d.ts +0 -12
  600. package/esm/transport/eventBridge.js +0 -29
  601. package/esm/transport/eventBridge.js.map +0 -1
  602. package/esm/transport/flushController.d.ts +0 -48
  603. package/esm/transport/flushController.js +0 -93
  604. package/esm/transport/flushController.js.map +0 -1
  605. package/esm/transport/httpRequest.d.ts +0 -37
  606. package/esm/transport/httpRequest.js +0 -85
  607. package/esm/transport/httpRequest.js.map +0 -1
  608. package/esm/transport/index.d.ts +0 -4
  609. package/esm/transport/index.js +0 -5
  610. package/esm/transport/index.js.map +0 -1
  611. package/esm/transport/sendWithRetryStrategy.d.ts +0 -39
  612. package/esm/transport/sendWithRetryStrategy.js +0 -146
  613. package/esm/transport/sendWithRetryStrategy.js.map +0 -1
  614. package/esm/transport/startBatchWithReplica.d.ts +0 -15
  615. package/esm/transport/startBatchWithReplica.js +0 -33
  616. package/esm/transport/startBatchWithReplica.js.map +0 -1
  617. package/src/domain/configuration/intakeSites.ts +0 -5
  618. package/src/domain/configuration/tags.ts +0 -43
  619. package/src/domain/tracekit/computeStackTrace.ts +0 -141
  620. package/src/domain/tracekit/index.ts +0 -3
  621. package/src/domain/tracekit/tracekit.ts +0 -96
  622. package/src/domain/tracekit/types.ts +0 -47
  623. package/src/domain/user/index.ts +0 -2
  624. package/src/domain/user/user.ts +0 -33
  625. package/src/domain/user/user.types.ts +0 -6
  626. package/src/tools/serialisation/contextManager.ts +0 -79
  627. package/src/tools/serialisation/heavyCustomerDataWarning.ts +0 -26
  628. package/src/transport/startBatchWithReplica.ts +0 -52
@@ -0,0 +1,55 @@
1
+ import { addEventListener, DOM_EVENT } from '../../browser/addEventListener'
2
+ import type { Context } from '../../tools/serialisation/context'
3
+ import type { Configuration } from '../configuration'
4
+ import { combine } from '../../tools/mergeInto'
5
+ import { isEmptyObject } from '../../tools/utils/objectUtils'
6
+ import type { ContextManager } from './contextManager'
7
+ import type { CustomerDataType } from './contextConstants'
8
+
9
+ const CONTEXT_STORE_KEY_PREFIX = '_dd_c'
10
+
11
+ const storageListeners: Array<{ stop: () => void }> = []
12
+
13
+ export function storeContextManager(
14
+ configuration: Configuration,
15
+ contextManager: ContextManager,
16
+ productKey: string,
17
+ customerDataType: CustomerDataType
18
+ ) {
19
+ const storageKey = buildStorageKey(productKey, customerDataType)
20
+
21
+ storageListeners.push(
22
+ addEventListener(configuration, window, DOM_EVENT.STORAGE, ({ key }) => {
23
+ if (storageKey === key) {
24
+ synchronizeWithStorage()
25
+ }
26
+ })
27
+ )
28
+ contextManager.changeObservable.subscribe(dumpToStorage)
29
+
30
+ const contextFromStorage = combine(getFromStorage(), contextManager.getContext())
31
+ if (!isEmptyObject(contextFromStorage)) {
32
+ contextManager.setContext(contextFromStorage)
33
+ }
34
+
35
+ function synchronizeWithStorage() {
36
+ contextManager.setContext(getFromStorage())
37
+ }
38
+
39
+ function dumpToStorage() {
40
+ localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()))
41
+ }
42
+
43
+ function getFromStorage() {
44
+ const rawContext = localStorage.getItem(storageKey)
45
+ return rawContext ? (JSON.parse(rawContext) as Context) : {}
46
+ }
47
+ }
48
+
49
+ export function buildStorageKey(productKey: string, customerDataType: CustomerDataType) {
50
+ return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`
51
+ }
52
+
53
+ export function removeStorageListeners() {
54
+ storageListeners.map((listener) => listener.stop())
55
+ }
@@ -0,0 +1,47 @@
1
+ import type { Configuration } from '../configuration'
2
+ import { CustomerDataType } from '../context/contextConstants'
3
+ import { storeContextManager } from '../context/storeContextManager'
4
+ import { HookNames, SKIPPED } from '../../tools/abstractHooks'
5
+ import type { AbstractHooks } from '../../tools/abstractHooks'
6
+ import { isEmptyObject } from '../../tools/utils/objectUtils'
7
+ import { createContextManager } from '../context/contextManager'
8
+
9
+ /**
10
+ * Account information for the browser SDK.
11
+ */
12
+ export interface Account {
13
+ id: string
14
+ name?: string | undefined
15
+ [key: string]: unknown
16
+ }
17
+
18
+ export function startAccountContext(hooks: AbstractHooks, configuration: Configuration, productKey: string) {
19
+ const accountContextManager = buildAccountContextManager()
20
+
21
+ if (configuration.storeContextsAcrossPages) {
22
+ storeContextManager(configuration, accountContextManager, productKey, CustomerDataType.Account)
23
+ }
24
+
25
+ hooks.register(HookNames.Assemble, () => {
26
+ const account = accountContextManager.getContext() as Account
27
+
28
+ if (isEmptyObject(account) || !account.id) {
29
+ return SKIPPED
30
+ }
31
+
32
+ return {
33
+ account,
34
+ }
35
+ })
36
+
37
+ return accountContextManager
38
+ }
39
+
40
+ export function buildAccountContextManager() {
41
+ return createContextManager('account', {
42
+ propertiesConfig: {
43
+ id: { type: 'string', required: true },
44
+ name: { type: 'string' },
45
+ },
46
+ })
47
+ }
@@ -0,0 +1,30 @@
1
+ import type { AbstractHooks } from '../../tools/abstractHooks'
2
+ import { CustomerDataType } from '../context/contextConstants'
3
+ import { storeContextManager } from '../context/storeContextManager'
4
+ import { HookNames } from '../../tools/abstractHooks'
5
+ import { createContextManager } from '../context/contextManager'
6
+ import type { Configuration } from '../configuration'
7
+
8
+ export function startGlobalContext(
9
+ hooks: AbstractHooks,
10
+ configuration: Configuration,
11
+ productKey: string,
12
+ useContextNamespace: boolean
13
+ ) {
14
+ const globalContextManager = buildGlobalContextManager()
15
+
16
+ if (configuration.storeContextsAcrossPages) {
17
+ storeContextManager(configuration, globalContextManager, productKey, CustomerDataType.GlobalContext)
18
+ }
19
+
20
+ hooks.register(HookNames.Assemble, () => {
21
+ const context = globalContextManager.getContext()
22
+ return useContextNamespace ? { context } : context
23
+ })
24
+
25
+ return globalContextManager
26
+ }
27
+
28
+ export function buildGlobalContextManager() {
29
+ return createContextManager('global context')
30
+ }
@@ -0,0 +1,15 @@
1
+ import type { Context } from '../../tools/serialisation/context'
2
+
3
+ export interface RumInternalContext extends Context {
4
+ application_id: string
5
+ session_id: string | undefined
6
+ view?: {
7
+ id: string
8
+ url: string
9
+ referrer: string
10
+ name?: string
11
+ }
12
+ user_action?: {
13
+ id: string | string[]
14
+ }
15
+ }
@@ -0,0 +1,64 @@
1
+ import type { AbstractHooks } from '../../tools/abstractHooks'
2
+ import { CustomerDataType } from '../context/contextConstants'
3
+ import { storeContextManager } from '../context/storeContextManager'
4
+ import { HookNames, SKIPPED } from '../../tools/abstractHooks'
5
+ import { createContextManager } from '../context/contextManager'
6
+ import type { Configuration } from '../configuration'
7
+ import { isEmptyObject } from '../../tools/utils/objectUtils'
8
+ import type { RelativeTime } from '../../tools/utils/timeUtils'
9
+
10
+ export interface User {
11
+ id?: string | undefined
12
+ email?: string | undefined
13
+ name?: string | undefined
14
+ [key: string]: unknown
15
+ }
16
+
17
+ export function startUserContext(
18
+ hooks: AbstractHooks,
19
+ configuration: Configuration,
20
+ sessionManager: {
21
+ findTrackedSession: (startTime?: RelativeTime) => { anonymousId?: string } | undefined
22
+ },
23
+ productKey: string
24
+ ) {
25
+ const userContextManager = buildUserContextManager()
26
+
27
+ if (configuration.storeContextsAcrossPages) {
28
+ storeContextManager(configuration, userContextManager, productKey, CustomerDataType.User)
29
+ }
30
+
31
+ hooks.register(HookNames.Assemble, ({ eventType, startTime }) => {
32
+ const user = userContextManager.getContext()
33
+ const session = sessionManager.findTrackedSession(startTime)
34
+
35
+ if (session && session.anonymousId && !user.anonymous_id && !!configuration.trackAnonymousUser) {
36
+ user.anonymous_id = session.anonymousId
37
+ }
38
+
39
+ if (isEmptyObject(user)) {
40
+ return SKIPPED
41
+ }
42
+
43
+ return {
44
+ type: eventType,
45
+ usr: user,
46
+ }
47
+ })
48
+
49
+ hooks.register(HookNames.AssembleTelemetry, ({ startTime }) => ({
50
+ anonymous_id: sessionManager.findTrackedSession(startTime)?.anonymousId,
51
+ }))
52
+
53
+ return userContextManager
54
+ }
55
+
56
+ export function buildUserContextManager() {
57
+ return createContextManager('user', {
58
+ propertiesConfig: {
59
+ id: { type: 'string' },
60
+ name: { type: 'string' },
61
+ email: { type: 'string' },
62
+ },
63
+ })
64
+ }
@@ -1,3 +1,6 @@
1
+ import type { Encoder } from '../../tools/encoder'
2
+ import type { Uint8ArrayBuffer } from '../../tools/utils/byteUtils'
3
+
1
4
  export type DeflateWorkerAction =
2
5
  // Action to send when creating the worker to check if the communication is working correctly.
3
6
  // The worker should respond with a 'initialized' response.
@@ -29,8 +32,8 @@ export type DeflateWorkerResponse =
29
32
  type: 'wrote'
30
33
  id: number
31
34
  streamId: number
32
- result: Uint8Array
33
- trailer: Uint8Array
35
+ result: Uint8ArrayBuffer
36
+ trailer: Uint8ArrayBuffer
34
37
  additionalBytesCount: number
35
38
  }
36
39
  // Could happen at any time when something goes wrong in the worker
@@ -39,3 +42,16 @@ export type DeflateWorkerResponse =
39
42
  streamId?: number
40
43
  error: Error | string
41
44
  }
45
+
46
+ export interface DeflateWorker extends Worker {
47
+ postMessage(message: DeflateWorkerAction): void
48
+ }
49
+
50
+ export type DeflateEncoder = Encoder<Uint8ArrayBuffer> & { stop: () => void }
51
+
52
+ export const enum DeflateEncoderStreamId {
53
+ REPLAY = 1,
54
+ RUM = 2,
55
+ TELEMETRY = 4,
56
+ PROFILING = 6,
57
+ }
@@ -1 +1 @@
1
- export * from './types'
1
+ export * from './deflate.types'
@@ -1,21 +1,22 @@
1
- import type { StackTrace } from '../tracekit'
2
- import { computeStackTrace } from '../tracekit'
3
- import { callMonitored } from '../../tools/monitor'
4
1
  import { sanitize } from '../../tools/serialisation/sanitize'
5
2
  import type { ClocksState } from '../../tools/utils/timeUtils'
6
- import { noop } from '../../tools/utils/functionUtils'
3
+ import type { Context } from '../../tools/serialisation/context'
7
4
  import { jsonStringify } from '../../tools/serialisation/jsonStringify'
5
+ import type { StackTrace } from '../../tools/stackTrace/computeStackTrace'
6
+ import { computeStackTrace } from '../../tools/stackTrace/computeStackTrace'
7
+ import { toStackTraceString } from '../../tools/stackTrace/handlingStack'
8
8
  import type { ErrorSource, ErrorHandling, RawError, RawErrorCause, ErrorWithCause, NonErrorPrefix } from './error.types'
9
9
 
10
10
  export const NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error'
11
11
 
12
- type RawErrorParams = {
12
+ interface RawErrorParams {
13
13
  stackTrace?: StackTrace
14
14
  originalError: unknown
15
-
16
15
  handlingStack?: string
16
+ componentStack?: string
17
17
  startClocks: ClocksState
18
18
  nonErrorPrefix: NonErrorPrefix
19
+ useFallbackStack?: boolean
19
20
  source: ErrorSource
20
21
  handling: ErrorHandling
21
22
  }
@@ -24,32 +25,31 @@ export function computeRawError({
24
25
  stackTrace,
25
26
  originalError,
26
27
  handlingStack,
28
+ componentStack,
27
29
  startClocks,
28
30
  nonErrorPrefix,
31
+ useFallbackStack = true,
29
32
  source,
30
33
  handling,
31
34
  }: RawErrorParams): RawError {
32
- const isErrorInstance = originalError instanceof Error
33
-
34
- const message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError)
35
- const stack = hasUsableStack(isErrorInstance, stackTrace)
36
- ? toStackTraceString(stackTrace)
37
- : NO_ERROR_STACK_PRESENT_MESSAGE
38
- const causes = isErrorInstance ? flattenErrorCauses(originalError as ErrorWithCause, source) : undefined
39
- const type = stackTrace?.name
40
- const fingerprint = tryToGetFingerprint(originalError)
35
+ const isErrorInstance = isError(originalError)
36
+ if (!stackTrace && isErrorInstance) {
37
+ stackTrace = computeStackTrace(originalError)
38
+ }
41
39
 
42
40
  return {
43
41
  startClocks,
44
42
  source,
45
43
  handling,
46
44
  handlingStack,
45
+ componentStack,
47
46
  originalError,
48
- type,
49
- message,
50
- stack,
51
- causes,
52
- fingerprint,
47
+ type: stackTrace ? stackTrace.name : undefined,
48
+ message: computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError),
49
+ stack: stackTrace ? toStackTraceString(stackTrace) : useFallbackStack ? NO_ERROR_STACK_PRESENT_MESSAGE : undefined,
50
+ causes: isErrorInstance ? flattenErrorCauses(originalError as ErrorWithCause, source) : undefined,
51
+ fingerprint: tryToGetFingerprint(originalError),
52
+ context: tryToGetErrorContext(originalError),
53
53
  }
54
54
  }
55
55
 
@@ -68,84 +68,28 @@ function computeMessage(
68
68
  : 'Empty message'
69
69
  }
70
70
 
71
- function hasUsableStack(isErrorInstance: boolean, stackTrace?: StackTrace): stackTrace is StackTrace {
72
- if (stackTrace === undefined) {
73
- return false
74
- }
75
- if (isErrorInstance) {
76
- return true
77
- }
78
- // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]
79
- // TODO rework tracekit integration to avoid generating those unusable stack
80
- return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined)
81
- }
82
-
83
71
  export function tryToGetFingerprint(originalError: unknown) {
84
- return originalError instanceof Error && 'oo_fingerprint' in originalError
85
- ? String(originalError.oo_fingerprint)
86
- : undefined
72
+ return isError(originalError) && 'oo_fingerprint' in originalError ? String(originalError.oo_fingerprint) : undefined
87
73
  }
88
74
 
89
- export function toStackTraceString(stack: StackTrace) {
90
- let result = formatErrorMessage(stack)
91
- stack.stack.forEach((frame) => {
92
- const func = frame.func === '?' ? '<anonymous>' : frame.func
93
- const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : ''
94
- const line = frame.line ? `:${frame.line}` : ''
95
- const column = frame.line && frame.column ? `:${frame.column}` : ''
96
- result += `\n at ${func!}${args} @ ${frame.url!}${line}${column}`
97
- })
98
- return result
75
+ export function tryToGetErrorContext(originalError: unknown) {
76
+ if (originalError !== null && typeof originalError === 'object' && 'dd_context' in originalError) {
77
+ return originalError.dd_context as Context
78
+ }
99
79
  }
100
80
 
101
81
  export function getFileFromStackTraceString(stack: string) {
102
82
  return /@ (.+)/.exec(stack)?.[1]
103
83
  }
104
84
 
105
- export function formatErrorMessage(stack: StackTrace) {
106
- return `${stack.name || 'Error'}: ${stack.message!}`
107
- }
108
-
109
- /**
110
- Creates a stacktrace without SDK internal frames.
111
-
112
- Constraints:
113
- - Has to be called at the utmost position of the call stack.
114
- - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.
115
- */
116
- export function createHandlingStack(): string {
117
- /**
118
- * Skip the two internal frames:
119
- * - SDK API (console.error, ...)
120
- * - this function
121
- * in order to keep only the user calls
122
- */
123
- const internalFramesToSkip = 2
124
- const error = new Error()
125
- let formattedStack: string
126
-
127
- // IE needs to throw the error to fill in the stack trace
128
- if (!error.stack) {
129
- try {
130
- throw error
131
- } catch (e) {
132
- noop()
133
- }
134
- }
135
-
136
- callMonitored(() => {
137
- const stackTrace = computeStackTrace(error)
138
- stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip)
139
- formattedStack = toStackTraceString(stackTrace)
140
- })
141
-
142
- return formattedStack!
85
+ export function isError(error: unknown): error is Error {
86
+ return error instanceof Error || Object.prototype.toString.call(error) === '[object Error]'
143
87
  }
144
88
 
145
89
  export function flattenErrorCauses(error: ErrorWithCause, parentSource: ErrorSource): RawErrorCause[] | undefined {
146
90
  let currentError = error
147
91
  const causes: RawErrorCause[] = []
148
- while (currentError?.cause instanceof Error && causes.length < 10) {
92
+ while (isError(currentError?.cause) && causes.length < 10) {
149
93
  const stackTrace = computeStackTrace(currentError.cause)
150
94
  causes.push({
151
95
  message: currentError.cause.message,
@@ -1,16 +1,30 @@
1
+ import type { Context } from '../../tools/serialisation/context'
1
2
  import type { ClocksState } from '../../tools/utils/timeUtils'
2
3
 
3
- export interface ErrorWithCause extends Error {
4
- cause?: Error
4
+ // TS v4.6 introduced Error.cause[1] typed as `Error`. TS v4.8 changed Error.cause to be
5
+ // `unknown`[2].
6
+ //
7
+ // Because we still support TS 3.8, we need to declare our own type. We can remove it once we drop
8
+ // support for TS v4.7 and before. The 'cause' property defined by TS needs to be omitted because
9
+ // we define it with a type `unknown` which is incompatible with TS 4.6 and 4.7.
10
+ //
11
+ // [1]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-6/#target-es2022
12
+ // [2]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/#lib-d-ts-updates
13
+ export interface ErrorWithCause extends Omit<Error, 'cause'> {
14
+ cause?: unknown
5
15
  }
6
16
 
7
- export type RawErrorCause = {
17
+ export interface RawErrorCause {
8
18
  message: string
9
- source: string
19
+ source: ErrorSource
10
20
  type?: string
11
21
  stack?: string
12
22
  }
13
23
 
24
+ export interface Csp {
25
+ disposition: 'enforce' | 'report'
26
+ }
27
+
14
28
  export interface RawError {
15
29
  startClocks: ClocksState
16
30
  message: string
@@ -20,8 +34,11 @@ export interface RawError {
20
34
  originalError?: unknown
21
35
  handling?: ErrorHandling
22
36
  handlingStack?: string
37
+ componentStack?: string
23
38
  causes?: RawErrorCause[]
24
39
  fingerprint?: string
40
+ csp?: Csp
41
+ context?: Context
25
42
  }
26
43
 
27
44
  export const ErrorSource = {
@@ -1,14 +1,19 @@
1
- import type { Observable } from '../../tools/observable'
1
+ import { instrumentMethod } from '../../tools/instrumentMethod'
2
+ import { Observable } from '../../tools/observable'
2
3
  import { clocksNow } from '../../tools/utils/timeUtils'
3
- import { startUnhandledErrorCollection } from '../tracekit'
4
- import { computeRawError } from './error'
4
+ import type { StackTrace } from '../../tools/stackTrace/computeStackTrace'
5
+ import { computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace'
6
+ import { getGlobalObject } from '../../tools/globalObject'
7
+ import { computeRawError, isError } from './error'
5
8
  import type { RawError } from './error.types'
6
9
  import { ErrorHandling, ErrorSource, NonErrorPrefix } from './error.types'
7
10
 
8
- export function trackRuntimeError(errorObservable: Observable<RawError>) {
9
- return startUnhandledErrorCollection((stackTrace, originalError) => {
10
- errorObservable.notify(
11
- computeRawError({
11
+ export type UnhandledErrorCallback = (originalError: unknown, stackTrace?: StackTrace) => any
12
+
13
+ export function trackRuntimeError() {
14
+ return new Observable<RawError>((observer) => {
15
+ const handleRuntimeError = (originalError: unknown, stackTrace?: StackTrace) => {
16
+ const rawError = computeRawError({
12
17
  stackTrace,
13
18
  originalError,
14
19
  startClocks: clocksNow(),
@@ -16,6 +21,30 @@ export function trackRuntimeError(errorObservable: Observable<RawError>) {
16
21
  source: ErrorSource.SOURCE,
17
22
  handling: ErrorHandling.UNHANDLED,
18
23
  })
19
- )
24
+ observer.notify(rawError)
25
+ }
26
+ const { stop: stopInstrumentingOnError } = instrumentOnError(handleRuntimeError)
27
+ const { stop: stopInstrumentingOnUnhandledRejection } = instrumentUnhandledRejection(handleRuntimeError)
28
+
29
+ return () => {
30
+ stopInstrumentingOnError()
31
+ stopInstrumentingOnUnhandledRejection()
32
+ }
33
+ })
34
+ }
35
+
36
+ export function instrumentOnError(callback: UnhandledErrorCallback) {
37
+ return instrumentMethod(getGlobalObject(), 'onerror', ({ parameters: [messageObj, url, line, column, errorObj] }) => {
38
+ let stackTrace
39
+ if (!isError(errorObj)) {
40
+ stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column)
41
+ }
42
+ callback(errorObj ?? messageObj, stackTrace)
43
+ })
44
+ }
45
+
46
+ export function instrumentUnhandledRejection(callback: UnhandledErrorCallback) {
47
+ return instrumentMethod(getGlobalObject(), 'onunhandledrejection', ({ parameters: [e] }) => {
48
+ callback(e.reason || 'Empty reason')
20
49
  })
21
50
  }
@@ -5,10 +5,13 @@ import { ErrorSource } from '../error/error.types'
5
5
 
6
6
  export type EventRateLimiter = ReturnType<typeof createEventRateLimiter>
7
7
 
8
+ // Limit the maximum number of actions, errors and logs per minutes
9
+ const EVENT_RATE_LIMIT = 3000
10
+
8
11
  export function createEventRateLimiter(
9
12
  eventType: string,
10
- limit: number,
11
- onLimitReached: (limitError: RawError) => void
13
+ onLimitReached: (limitError: RawError) => void,
14
+ limit = EVENT_RATE_LIMIT
12
15
  ) {
13
16
  let eventCount = 0
14
17
  let allowNextEvent = false
@@ -0,0 +1,28 @@
1
+ export const EXTENSION_PREFIXES = ['chrome-extension://', 'moz-extension://']
2
+
3
+ export function containsExtensionUrl(str: string): boolean {
4
+ return EXTENSION_PREFIXES.some((prefix) => str.includes(prefix))
5
+ }
6
+
7
+ /**
8
+ * Utility function to detect if the SDK is being initialized in an unsupported browser extension environment.
9
+ *
10
+ * @param windowLocation - The current window location to check
11
+ * @param stack - The error stack to check for extension URLs
12
+ * @returns true if running in an unsupported browser extension environment
13
+ */
14
+ export function isUnsupportedExtensionEnvironment(windowLocation: string, stack: string = '') {
15
+ // If the page itself is an extension page.
16
+ if (containsExtensionUrl(windowLocation)) {
17
+ return false
18
+ }
19
+
20
+ // Since we generate the error on the init, we check the 2nd frame line.
21
+ const frameLines = stack.split('\n').filter((line) => {
22
+ const trimmedLine = line.trim()
23
+ return trimmedLine.length && /^at\s+|@/.test(trimmedLine)
24
+ })
25
+ const target = frameLines[1] || ''
26
+
27
+ return containsExtensionUrl(target)
28
+ }
@@ -0,0 +1,18 @@
1
+ export type Site =
2
+ | 'datadoghq.com'
3
+ | 'us3.datadoghq.com'
4
+ | 'us5.datadoghq.com'
5
+ | 'datadoghq.eu'
6
+ | 'ddog-gov.com'
7
+ | 'ap1.datadoghq.com'
8
+ | 'ap2.datadoghq.com'
9
+ | (string & {})
10
+
11
+ export const INTAKE_SITE_STAGING: Site = 'datad0g.com'
12
+ export const INTAKE_SITE_FED_STAGING: Site = 'dd0g-gov.com'
13
+ export const INTAKE_SITE_US1: Site = 'datadoghq.com'
14
+ export const INTAKE_SITE_EU1: Site = 'datadoghq.eu'
15
+ export const INTAKE_SITE_US1_FED: Site = 'ddog-gov.com'
16
+
17
+ export const PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com'
18
+ export const INTAKE_URL_PARAMETERS = ['ddsource', 'dd-api-key', 'dd-request-id']
@@ -1,5 +1,16 @@
1
1
  export type ReportType = DeprecationReport['type'] | InterventionReport['type']
2
2
 
3
+ interface Report {
4
+ type: ReportType
5
+ url: string
6
+ body: DeprecationReportBody | InterventionReportBody
7
+ toJSON(): any
8
+ }
9
+
10
+ interface ReportBody {
11
+ toJSON(): any
12
+ }
13
+
3
14
  export interface DeprecationReport extends Report {
4
15
  type: 'deprecation'
5
16
  body: DeprecationReportBody
@@ -17,6 +28,7 @@ export interface InterventionReport extends Report {
17
28
  type: 'intervention'
18
29
  body: InterventionReportBody
19
30
  }
31
+
20
32
  export interface InterventionReportBody extends ReportBody {
21
33
  id: string
22
34
  message: string