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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
package/package.json CHANGED
@@ -1,22 +1,23 @@
1
1
  {
2
2
  "name": "@openobserve/browser-core",
3
- "version": "0.2.11",
3
+ "version": "0.2.12-beta.1",
4
4
  "license": "Apache-2.0",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
7
7
  "types": "cjs/index.d.ts",
8
8
  "sideEffects": false,
9
9
  "scripts": {
10
- "build": "run-p build:cjs build:esm",
11
- "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs",
12
- "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm",
13
- "replace-build-env": "node ../../scripts/build/replace-build-env.js"
10
+ "build": "node ../../scripts/build/build-package.ts --modules"
14
11
  },
15
12
  "repository": {
16
13
  "type": "git",
17
14
  "url": "https://github.com/openobserve/browser-sdk.git",
18
15
  "directory": "packages/core"
19
16
  },
17
+ "devDependencies": {
18
+ "@types/pako": "2.0.4",
19
+ "pako": "2.1.0"
20
+ },
20
21
  "volta": {
21
22
  "extends": "../../package.json"
22
23
  },
@@ -0,0 +1,8 @@
1
+ import type { InitConfiguration } from '../domain/configuration'
2
+ import { display } from '../tools/display'
3
+
4
+ export function displayAlreadyInitializedError(sdkName: 'DD_RUM' | 'DD_LOGS', initConfiguration: InitConfiguration) {
5
+ if (!initConfiguration.silentMultipleInit) {
6
+ display.error(`${sdkName} is already initialized.`)
7
+ }
8
+ }
package/src/boot/init.ts CHANGED
@@ -1,24 +1,35 @@
1
1
  import { catchUserErrors } from '../tools/catchUserErrors'
2
2
  import { setDebugMode } from '../tools/monitor'
3
- import { assign } from '../tools/utils/polyfills'
3
+ import { display } from '../tools/display'
4
4
 
5
5
  // replaced at build time
6
6
  declare const __BUILD_ENV__SDK_VERSION__: string
7
7
 
8
- export function makePublicApi<T>(stub: T): T & { onReady(callback: () => void): void; version: string } {
9
- const publicApi = assign(
10
- {
11
- version: __BUILD_ENV__SDK_VERSION__,
8
+ export interface PublicApi {
9
+ /**
10
+ * Version of the Logs browser SDK
11
+ */
12
+ version: string
12
13
 
13
- // This API method is intentionally not monitored, since the only thing executed is the
14
- // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and
15
- // we don't want to interfere with the user uncaught exceptions.
16
- onReady(callback: () => void) {
17
- callback()
18
- },
14
+ /**
15
+ * For CDN async setup: Early RUM API calls must be wrapped in the `window.DD_RUM.onReady()` callback. This ensures the code only gets executed once the SDK is properly loaded.
16
+ *
17
+ * See [CDN async setup](https://docs.datadoghq.com/real_user_monitoring/browser/#cdn-async) for further information.
18
+ */
19
+ onReady: (callback: () => void) => void
20
+ }
21
+
22
+ export function makePublicApi<T extends PublicApi>(stub: Omit<T, keyof PublicApi>): T {
23
+ const publicApi = {
24
+ version: __BUILD_ENV__SDK_VERSION__,
25
+ // This API method is intentionally not monitored, since the only thing executed is the
26
+ // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and
27
+ // we don't want to interfere with the user uncaught exceptions.
28
+ onReady(callback: () => void) {
29
+ callback()
19
30
  },
20
- stub
21
- )
31
+ ...stub,
32
+ }
22
33
 
23
34
  // Add a "hidden" property to set debug mode. We define it that way to hide it
24
35
  // as much as possible but of course it's not a real protection.
@@ -29,11 +40,14 @@ export function makePublicApi<T>(stub: T): T & { onReady(callback: () => void):
29
40
  enumerable: false,
30
41
  })
31
42
 
32
- return publicApi
43
+ return publicApi as T
33
44
  }
34
45
 
35
46
  export function defineGlobal<Global, Name extends keyof Global>(global: Global, name: Name, api: Global[Name]) {
36
- const existingGlobalVariable = global[name] as { q?: Array<() => void> } | undefined
47
+ const existingGlobalVariable = global[name] as { q?: Array<() => void>; version?: string } | undefined
48
+ if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {
49
+ display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.')
50
+ }
37
51
  global[name] = api
38
52
  if (existingGlobalVariable && existingGlobalVariable.q) {
39
53
  existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')())
@@ -1,7 +1,8 @@
1
1
  import { monitor } from '../tools/monitor'
2
2
  import { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue'
3
- import type { Configuration } from '../domain/configuration'
4
- import type { VisualViewport, VisualViewportEventMap } from './types'
3
+ import type { CookieStore, CookieStoreEventMap, VisualViewport, VisualViewportEventMap } from './browser.types'
4
+
5
+ export type TrustableEvent<E extends Event = Event> = E & { __ddIsTrusted?: boolean }
5
6
 
6
7
  export const enum DOM_EVENT {
7
8
  BEFORE_UNLOAD = 'beforeunload',
@@ -37,6 +38,7 @@ export const enum DOM_EVENT {
37
38
  PAUSE = 'pause',
38
39
  SECURITY_POLICY_VIOLATION = 'securitypolicyviolation',
39
40
  SELECTION_CHANGE = 'selectionchange',
41
+ STORAGE = 'storage',
40
42
  }
41
43
 
42
44
  interface AddEventListenerOptions {
@@ -54,23 +56,25 @@ type EventMapFor<T> = T extends Window
54
56
  visibilitychange: Event
55
57
  }
56
58
  : T extends Document
57
- ? DocumentEventMap
58
- : T extends HTMLElement
59
- ? HTMLElementEventMap
60
- : T extends VisualViewport
61
- ? VisualViewportEventMap
62
- : T extends ShadowRoot
63
- ? // ShadowRootEventMap is not yet defined in our supported TS version. Instead, use
64
- // GlobalEventHandlersEventMap which is more than enough as we only need to listen for events bubbling
65
- // through the ShadowRoot like "change" or "input"
66
- GlobalEventHandlersEventMap
67
- : T extends XMLHttpRequest
68
- ? XMLHttpRequestEventMap
69
- : T extends Performance
70
- ? PerformanceEventMap
71
- : T extends Worker
72
- ? WorkerEventMap
73
- : Record<never, never>
59
+ ? DocumentEventMap
60
+ : T extends HTMLElement
61
+ ? HTMLElementEventMap
62
+ : T extends VisualViewport
63
+ ? VisualViewportEventMap
64
+ : T extends ShadowRoot
65
+ ? // ShadowRootEventMap is not yet defined in our supported TS version. Instead, use
66
+ // GlobalEventHandlersEventMap which is more than enough as we only need to listen for events bubbling
67
+ // through the ShadowRoot like "change" or "input"
68
+ GlobalEventHandlersEventMap
69
+ : T extends XMLHttpRequest
70
+ ? XMLHttpRequestEventMap
71
+ : T extends Performance
72
+ ? PerformanceEventMap
73
+ : T extends Worker
74
+ ? WorkerEventMap
75
+ : T extends CookieStore
76
+ ? CookieStoreEventMap
77
+ : Record<never, never>
74
78
 
75
79
  /**
76
80
  * Add an event listener to an event target object (Window, Element, mock object...). This provides
@@ -83,10 +87,10 @@ type EventMapFor<T> = T extends Window
83
87
  * * returns a `stop` function to remove the listener
84
88
  */
85
89
  export function addEventListener<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(
86
- configuration: Configuration,
90
+ configuration: { allowUntrustedEvents?: boolean | undefined },
87
91
  eventTarget: Target,
88
92
  eventName: EventName,
89
- listener: (event: EventMapFor<Target>[EventName]) => void,
93
+ listener: (event: EventMapFor<Target>[EventName] & { type: EventName }) => void,
90
94
  options?: AddEventListenerOptions
91
95
  ) {
92
96
  return addEventListeners(configuration, eventTarget, [eventName], listener, options)
@@ -105,29 +109,34 @@ export function addEventListener<Target extends EventTarget, EventName extends k
105
109
  * * with `once: true`, the listener will be called at most once, even if different events are listened
106
110
  */
107
111
  export function addEventListeners<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(
108
- _: Configuration,
112
+ configuration: { allowUntrustedEvents?: boolean | undefined },
109
113
  eventTarget: Target,
110
114
  eventNames: EventName[],
111
- listener: (event: EventMapFor<Target>[EventName]) => void,
115
+ listener: (event: EventMapFor<Target>[EventName] & { type: EventName }) => void,
112
116
  { once, capture, passive }: AddEventListenerOptions = {}
113
117
  ) {
114
- const wrappedListener = monitor(
115
- once
116
- ? (event: Event) => {
117
- stop()
118
- listener(event as EventMapFor<Target>[EventName])
119
- }
120
- : (listener as (event: Event) => void)
121
- )
118
+ const listenerWithMonitor = monitor((event: TrustableEvent) => {
119
+ if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {
120
+ return
121
+ }
122
+ if (once) {
123
+ stop()
124
+ }
125
+ listener(event as unknown as EventMapFor<Target>[EventName] & { type: EventName })
126
+ })
122
127
 
123
128
  const options = passive ? { capture, passive } : capture
124
129
 
125
- const add = getZoneJsOriginalValue(eventTarget, 'addEventListener')
126
- eventNames.forEach((eventName) => add.call(eventTarget, eventName, wrappedListener, options))
130
+ // Use the window.EventTarget.prototype when possible to avoid wrong overrides (e.g: https://github.com/salesforce/lwc/issues/1824)
131
+ const listenerTarget =
132
+ window.EventTarget && eventTarget instanceof EventTarget ? window.EventTarget.prototype : eventTarget
133
+
134
+ const add = getZoneJsOriginalValue(listenerTarget, 'addEventListener')
135
+ eventNames.forEach((eventName) => add.call(eventTarget, eventName, listenerWithMonitor, options))
127
136
 
128
137
  function stop() {
129
- const remove = getZoneJsOriginalValue(eventTarget, 'removeEventListener')
130
- eventNames.forEach((eventName) => remove.call(eventTarget, eventName, wrappedListener, options))
138
+ const remove = getZoneJsOriginalValue(listenerTarget, 'removeEventListener')
139
+ eventNames.forEach((eventName) => remove.call(eventTarget, eventName, listenerWithMonitor, options))
131
140
  }
132
141
 
133
142
  return {
@@ -38,3 +38,45 @@ export interface VisualViewport extends EventTarget {
38
38
  options?: boolean | EventListenerOptions
39
39
  ): void
40
40
  }
41
+
42
+ export interface WeakRef<T extends object> {
43
+ readonly [Symbol.toStringTag]: 'WeakRef'
44
+
45
+ deref(): T | undefined
46
+ }
47
+
48
+ export interface WeakRefConstructor {
49
+ readonly prototype: WeakRef<any>
50
+
51
+ new <T extends object>(target: T): WeakRef<T>
52
+ }
53
+
54
+ 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
+ >
68
+ }
69
+
70
+ export interface CookieStoreEventMap {
71
+ change: CookieChangeEvent
72
+ }
73
+
74
+ export interface CookieChangeItem {
75
+ name: string
76
+ value: string | undefined
77
+ }
78
+
79
+ export type CookieChangeEvent = Event & {
80
+ changed: CookieChangeItem[]
81
+ deleted: CookieChangeItem[]
82
+ }
@@ -1,27 +1,65 @@
1
1
  import { display } from '../tools/display'
2
2
  import { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils'
3
- import { findCommaSeparatedValue, generateUUID } from '../tools/utils/stringUtils'
3
+ import {
4
+ findAllCommaSeparatedValues,
5
+ findCommaSeparatedValue,
6
+ findCommaSeparatedValues,
7
+ generateUUID,
8
+ } from '../tools/utils/stringUtils'
9
+ import { buildUrl } from '../tools/utils/urlPolyfill'
4
10
 
5
11
  export interface CookieOptions {
6
12
  secure?: boolean
7
13
  crossSite?: boolean
14
+ partitioned?: boolean
8
15
  domain?: string
9
16
  }
10
17
 
11
- export function setCookie(name: string, value: string, expireDelay: number, options?: CookieOptions) {
18
+ export function setCookie(name: string, value: string, expireDelay: number = 0, options?: CookieOptions) {
12
19
  const date = new Date()
13
20
  date.setTime(date.getTime() + expireDelay)
14
21
  const expires = `expires=${date.toUTCString()}`
15
22
  const sameSite = options && options.crossSite ? 'none' : 'strict'
16
23
  const domain = options && options.domain ? `;domain=${options.domain}` : ''
17
24
  const secure = options && options.secure ? ';secure' : ''
18
- document.cookie = `${name}=${value};${expires};path=/;samesite=${sameSite}${domain}${secure}`
25
+ const partitioned = options && options.partitioned ? ';partitioned' : ''
26
+ document.cookie = `${name}=${value};${expires};path=/;samesite=${sameSite}${domain}${secure}${partitioned}`
19
27
  }
20
28
 
29
+ /**
30
+ * Returns the value of the cookie with the given name
31
+ * If there are multiple cookies with the same name, returns the first one
32
+ */
21
33
  export function getCookie(name: string) {
22
34
  return findCommaSeparatedValue(document.cookie, name)
23
35
  }
24
36
 
37
+ /**
38
+ * Returns all the values of the cookies with the given name
39
+ */
40
+ export function getCookies(name: string): string[] {
41
+ return findAllCommaSeparatedValues(document.cookie).get(name) || []
42
+ }
43
+
44
+ let initCookieParsed: Map<string, string> | undefined
45
+
46
+ /**
47
+ * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)
48
+ * to avoid accessing document.cookie multiple times.
49
+ *
50
+ * ⚠️ If there are multiple cookies with the same name, returns the LAST one (unlike `getCookie()`)
51
+ */
52
+ export function getInitCookie(name: string) {
53
+ if (!initCookieParsed) {
54
+ initCookieParsed = findCommaSeparatedValues(document.cookie)
55
+ }
56
+ return initCookieParsed.get(name)
57
+ }
58
+
59
+ export function resetInitCookies() {
60
+ initCookieParsed = undefined
61
+ }
62
+
25
63
  export function deleteCookie(name: string, options?: CookieOptions) {
26
64
  setCookie(name, '', 0, options)
27
65
  }
@@ -51,21 +89,37 @@ export function areCookiesAuthorized(options: CookieOptions): boolean {
51
89
  * https://web.dev/same-site-same-origin/#site
52
90
  */
53
91
  let getCurrentSiteCache: string | undefined
54
- export function getCurrentSite() {
92
+ export function getCurrentSite(hostname = location.hostname, referrer = document.referrer): string | undefined {
55
93
  if (getCurrentSiteCache === undefined) {
56
- // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during
57
- // the test cookie lifetime
58
- const testCookieName = `oo_site_test_${generateUUID()}`
59
- const testCookieValue = 'test'
94
+ const defaultHostName = getCookieDefaultHostName(hostname, referrer)
95
+ if (defaultHostName) {
96
+ // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during
97
+ // the test cookie lifetime
98
+ const testCookieName = `oo_site_test_${generateUUID()}`
99
+ const testCookieValue = 'test'
60
100
 
61
- const domainLevels = window.location.hostname.split('.')
62
- let candidateDomain = domainLevels.pop()!
63
- while (domainLevels.length && !getCookie(testCookieName)) {
64
- candidateDomain = `${domainLevels.pop()!}.${candidateDomain}`
65
- setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain })
101
+ const domainLevels = defaultHostName.split('.')
102
+ let candidateDomain = domainLevels.pop()!
103
+ while (domainLevels.length && !getCookie(testCookieName)) {
104
+ candidateDomain = `${domainLevels.pop()!}.${candidateDomain}`
105
+ setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain })
106
+ }
107
+ deleteCookie(testCookieName, { domain: candidateDomain })
108
+ getCurrentSiteCache = candidateDomain
66
109
  }
67
- deleteCookie(testCookieName, { domain: candidateDomain })
68
- getCurrentSiteCache = candidateDomain
69
110
  }
111
+
70
112
  return getCurrentSiteCache
71
113
  }
114
+
115
+ function getCookieDefaultHostName(hostname: string, referrer: string) {
116
+ try {
117
+ return hostname || buildUrl(referrer).hostname
118
+ } catch {
119
+ // Ignore
120
+ }
121
+ }
122
+
123
+ export function resetGetCurrentSite() {
124
+ getCurrentSiteCache = undefined
125
+ }
@@ -1,9 +1,14 @@
1
+ import type { InstrumentedMethodCall } from '../tools/instrumentMethod'
1
2
  import { instrumentMethod } from '../tools/instrumentMethod'
2
- import { callMonitored, monitor } from '../tools/monitor'
3
+ import { monitorError } from '../tools/monitor'
3
4
  import { Observable } from '../tools/observable'
4
5
  import type { ClocksState } from '../tools/utils/timeUtils'
5
6
  import { clocksNow } from '../tools/utils/timeUtils'
6
7
  import { normalizeUrl } from '../tools/utils/urlPolyfill'
8
+ import type { GlobalObject } from '../tools/globalObject'
9
+ import { globalObject } from '../tools/globalObject'
10
+ import { readBytesFromStream } from '../tools/readBytesFromStream'
11
+ import { tryToClone } from '../tools/utils/responseUtils'
7
12
 
8
13
  interface FetchContextBase {
9
14
  method: string
@@ -11,6 +16,7 @@ interface FetchContextBase {
11
16
  input: unknown
12
17
  init?: RequestInit
13
18
  url: string
19
+ handlingStack?: string
14
20
  }
15
21
 
16
22
  export interface FetchStartContext extends FetchContextBase {
@@ -21,6 +27,7 @@ export interface FetchResolveContext extends FetchContextBase {
21
27
  state: 'resolve'
22
28
  status: number
23
29
  response?: Response
30
+ responseBody?: string
24
31
  responseType?: string
25
32
  isAborted: boolean
26
33
  error?: Error
@@ -28,48 +35,64 @@ export interface FetchResolveContext extends FetchContextBase {
28
35
 
29
36
  export type FetchContext = FetchStartContext | FetchResolveContext
30
37
 
38
+ type ResponseBodyActionGetter = (context: FetchResolveContext) => ResponseBodyAction
39
+
40
+ /**
41
+ * Action to take with the response body of a fetch request.
42
+ * Values are ordered by priority: higher values take precedence when multiple actions are requested.
43
+ */
44
+ export const enum ResponseBodyAction {
45
+ IGNORE = 0,
46
+ // TODO(next-major): Remove the "WAIT" action when `trackEarlyRequests` is removed, as the
47
+ // duration of fetch requests will always come from PerformanceResourceTiming
48
+ WAIT = 1,
49
+ COLLECT = 2,
50
+ }
51
+
31
52
  let fetchObservable: Observable<FetchContext> | undefined
53
+ const responseBodyActionGetters: ResponseBodyActionGetter[] = []
32
54
 
33
- export function initFetchObservable() {
55
+ export function initFetchObservable({ responseBodyAction }: { responseBodyAction?: ResponseBodyActionGetter } = {}) {
56
+ if (responseBodyAction) {
57
+ responseBodyActionGetters.push(responseBodyAction)
58
+ }
34
59
  if (!fetchObservable) {
35
60
  fetchObservable = createFetchObservable()
36
61
  }
37
62
  return fetchObservable
38
63
  }
39
64
 
65
+ export function resetFetchObservable() {
66
+ fetchObservable = undefined
67
+ responseBodyActionGetters.length = 0
68
+ }
69
+
40
70
  function createFetchObservable() {
41
- const observable = new Observable<FetchContext>(() => {
42
- if (!window.fetch) {
71
+ return new Observable<FetchContext>((observable) => {
72
+ if (!globalObject.fetch) {
43
73
  return
44
74
  }
45
75
 
46
- const { stop } = instrumentMethod(
47
- window,
48
- 'fetch',
49
- (originalFetch) =>
50
- function (input, init) {
51
- let responsePromise: Promise<Response>
52
-
53
- const context = callMonitored(beforeSend, null, [observable, input, init])
54
- if (context) {
55
- responsePromise = originalFetch.call(this, context.input as RequestInfo, context.init)
56
- callMonitored(afterSend, null, [observable, responsePromise, context])
57
- } else {
58
- responsePromise = originalFetch.call(this, input, init)
59
- }
60
-
61
- return responsePromise
62
- }
63
- )
76
+ const { stop } = instrumentMethod(globalObject, 'fetch', (call) => beforeSend(call, observable), {
77
+ computeHandlingStack: true,
78
+ })
64
79
 
65
80
  return stop
66
81
  })
67
-
68
- return observable
69
82
  }
70
83
 
71
- function beforeSend(observable: Observable<FetchContext>, input: unknown, init?: RequestInit) {
72
- const method = (init && init.method) || (input instanceof Request && input.method) || 'GET'
84
+ function beforeSend(
85
+ { parameters, onPostCall, handlingStack }: InstrumentedMethodCall<GlobalObject, 'fetch'>,
86
+ observable: Observable<FetchContext>
87
+ ) {
88
+ const [input, init] = parameters
89
+ let methodFromParams = init && init.method
90
+
91
+ if (methodFromParams === undefined && input instanceof Request) {
92
+ methodFromParams = input.method
93
+ }
94
+
95
+ const method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET'
73
96
  const url = input instanceof Request ? input.url : normalizeUrl(String(input))
74
97
  const startClocks = clocksNow()
75
98
 
@@ -80,33 +103,65 @@ function beforeSend(observable: Observable<FetchContext>, input: unknown, init?:
80
103
  method,
81
104
  startClocks,
82
105
  url,
106
+ handlingStack,
83
107
  }
84
108
 
85
109
  observable.notify(context)
86
110
 
87
- return context
111
+ // Those properties can be changed by observable subscribers
112
+ parameters[0] = context.input as RequestInfo | URL
113
+ parameters[1] = context.init
114
+
115
+ onPostCall((responsePromise) => {
116
+ afterSend(observable, responsePromise, context).catch(monitorError)
117
+ })
88
118
  }
89
119
 
90
- function afterSend(
120
+ async function afterSend(
91
121
  observable: Observable<FetchContext>,
92
122
  responsePromise: Promise<Response>,
93
123
  startContext: FetchStartContext
94
124
  ) {
95
- const reportFetch = (response: Response | Error) => {
96
- const context = startContext as unknown as FetchResolveContext
97
- context.state = 'resolve'
98
- if ('stack' in response || response instanceof Error) {
99
- context.status = 0
100
- context.isAborted = response instanceof DOMException && response.code === DOMException.ABORT_ERR
101
- context.error = response
102
- } else if ('status' in response) {
103
- context.response = response
104
- context.responseType = response.type
105
- context.status = response.status
106
- context.isAborted = false
107
- }
125
+ const context = startContext as unknown as FetchResolveContext
126
+ context.state = 'resolve'
127
+
128
+ let response: Response
129
+
130
+ try {
131
+ response = await responsePromise
132
+ } catch (error) {
133
+ context.status = 0
134
+ context.isAborted =
135
+ context.init?.signal?.aborted || (error instanceof DOMException && error.code === DOMException.ABORT_ERR)
136
+ context.error = error as Error
108
137
  observable.notify(context)
138
+ return
109
139
  }
110
140
 
111
- responsePromise.then(monitor(reportFetch), monitor(reportFetch))
141
+ context.response = response
142
+ context.status = response.status
143
+ context.responseType = response.type
144
+ context.isAborted = false
145
+
146
+ const responseBodyCondition = responseBodyActionGetters.reduce(
147
+ (action, getter) => Math.max(action, getter(context)),
148
+ ResponseBodyAction.IGNORE
149
+ ) as ResponseBodyAction
150
+
151
+ if (responseBodyCondition !== ResponseBodyAction.IGNORE) {
152
+ const clonedResponse = tryToClone(response)
153
+ if (clonedResponse && clonedResponse.body) {
154
+ try {
155
+ const bytes = await readBytesFromStream(clonedResponse.body, {
156
+ collectStreamBody: responseBodyCondition === ResponseBodyAction.COLLECT,
157
+ })
158
+ context.responseBody = bytes && new TextDecoder().decode(bytes)
159
+ } catch {
160
+ // Ignore errors when reading the response body (e.g., stream aborted, network errors)
161
+ // This is not critical and should not be reported as an SDK error
162
+ }
163
+ }
164
+ }
165
+
166
+ observable.notify(context)
112
167
  }
@@ -1,7 +1,5 @@
1
- import { isExperimentalFeatureEnabled, ExperimentalFeature } from '../tools/experimentalFeatures'
2
1
  import { Observable } from '../tools/observable'
3
- import { objectValues, includes } from '../tools/utils/polyfills'
4
- import { noop } from '../tools/utils/functionUtils'
2
+ import { objectValues } from '../tools/utils/polyfills'
5
3
  import type { Configuration } from '../domain/configuration'
6
4
  import { addEventListeners, addEventListener, DOM_EVENT } from './addEventListener'
7
5
 
@@ -14,24 +12,18 @@ export const PageExitReason = {
14
12
 
15
13
  export type PageExitReason = (typeof PageExitReason)[keyof typeof PageExitReason]
16
14
 
17
- export interface PageExitEvent {
15
+ export interface PageMayExitEvent {
18
16
  reason: PageExitReason
19
17
  }
20
18
 
21
- export function createPageExitObservable(configuration: Configuration): Observable<PageExitEvent> {
22
- const observable = new Observable<PageExitEvent>(() => {
23
- const pagehideEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.PAGEHIDE)
19
+ export function createPageMayExitObservable(configuration: Configuration): Observable<PageMayExitEvent> {
20
+ return new Observable<PageMayExitEvent>((observable) => {
24
21
  const { stop: stopListeners } = addEventListeners(
25
22
  configuration,
26
23
  window,
27
- [DOM_EVENT.VISIBILITY_CHANGE, DOM_EVENT.FREEZE, DOM_EVENT.PAGE_HIDE],
24
+ [DOM_EVENT.VISIBILITY_CHANGE, DOM_EVENT.FREEZE],
28
25
  (event) => {
29
- if (event.type === DOM_EVENT.PAGE_HIDE && pagehideEnabled) {
30
- /**
31
- * Only event that detect page unload events while being compatible with the back/forward cache (bfcache)
32
- */
33
- observable.notify({ reason: PageExitReason.PAGEHIDE })
34
- } else if (event.type === DOM_EVENT.VISIBILITY_CHANGE && document.visibilityState === 'hidden') {
26
+ if (event.type === DOM_EVENT.VISIBILITY_CHANGE && document.visibilityState === 'hidden') {
35
27
  /**
36
28
  * Only event that guarantee to fire on mobile devices when the page transitions to background state
37
29
  * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.
@@ -48,22 +40,17 @@ export function createPageExitObservable(configuration: Configuration): Observab
48
40
  { capture: true }
49
41
  )
50
42
 
51
- let stopBeforeUnloadListener = noop
52
- if (!pagehideEnabled) {
53
- stopBeforeUnloadListener = addEventListener(configuration, window, DOM_EVENT.BEFORE_UNLOAD, () => {
54
- observable.notify({ reason: PageExitReason.UNLOADING })
55
- }).stop
56
- }
43
+ const stopBeforeUnloadListener = addEventListener(configuration, window, DOM_EVENT.BEFORE_UNLOAD, () => {
44
+ observable.notify({ reason: PageExitReason.UNLOADING })
45
+ }).stop
57
46
 
58
47
  return () => {
59
48
  stopListeners()
60
49
  stopBeforeUnloadListener()
61
50
  }
62
51
  })
63
-
64
- return observable
65
52
  }
66
53
 
67
- export function isPageExitReason(reason: string | undefined): reason is PageExitReason {
68
- return includes(objectValues(PageExitReason), reason)
54
+ export function isPageExitReason(reason: string): reason is PageExitReason {
55
+ return objectValues(PageExitReason).includes(reason as PageExitReason)
69
56
  }