@openobserve/browser-core 0.2.11-rc1 → 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 (626) 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 +13 -10
  5. package/src/browser/{types.ts → browser.types.ts} +42 -0
  6. package/src/browser/cookie.ts +49 -14
  7. package/src/browser/fetchObservable.ts +80 -21
  8. package/src/browser/{pageExitObservable.ts → pageMayExitObservable.ts} +11 -22
  9. package/src/browser/runOnReadyState.ts +14 -4
  10. package/src/browser/xhrObservable.ts +17 -4
  11. package/src/domain/allowedTrackingOrigins.ts +30 -0
  12. package/src/domain/bufferedData.ts +32 -0
  13. package/src/domain/configuration/configuration.ts +352 -83
  14. package/src/domain/configuration/endpointBuilder.ts +29 -32
  15. package/src/domain/configuration/index.ts +6 -5
  16. package/src/domain/configuration/transportConfiguration.ts +42 -35
  17. package/src/domain/connectivity/connectivity.ts +5 -1
  18. package/src/domain/console/consoleObservable.ts +57 -21
  19. package/src/domain/context/contextConstants.ts +22 -0
  20. package/src/domain/context/contextManager.ts +48 -11
  21. package/src/domain/context/contextUtils.ts +14 -0
  22. package/src/domain/context/defineContextMethod.ts +31 -0
  23. package/src/domain/context/storeContextManager.ts +7 -3
  24. package/src/domain/contexts/accountContext.ts +47 -0
  25. package/src/domain/contexts/globalContext.ts +30 -0
  26. package/src/domain/contexts/rumInternalContext.type.ts +15 -0
  27. package/src/domain/contexts/userContext.ts +64 -0
  28. package/src/domain/deflate/{types.ts → deflate.types.ts} +6 -4
  29. package/src/domain/deflate/index.ts +1 -1
  30. package/src/domain/error/error.ts +28 -84
  31. package/src/domain/error/error.types.ts +10 -2
  32. package/src/domain/error/trackRuntimeError.ts +29 -32
  33. package/src/domain/eventRateLimiter/createEventRateLimiter.ts +5 -2
  34. package/src/domain/extension/extensionUtils.ts +28 -0
  35. package/src/domain/intakeSites.ts +18 -0
  36. package/src/domain/report/reportObservable.ts +35 -30
  37. package/src/domain/resourceUtils.ts +20 -16
  38. package/src/domain/session/README.md +193 -0
  39. package/src/domain/session/oldCookiesMigration.ts +2 -2
  40. package/src/domain/session/sessionConstants.ts +16 -1
  41. package/src/domain/session/sessionManager.ts +179 -15
  42. package/src/domain/session/sessionState.ts +49 -17
  43. package/src/domain/session/sessionStateValidation.ts +9 -0
  44. package/src/domain/session/sessionStore.ts +118 -55
  45. package/src/domain/session/sessionStoreOperations.ts +47 -20
  46. package/src/domain/session/storeStrategies/sessionInCookie.ts +105 -26
  47. package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +10 -8
  48. package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +5 -2
  49. package/src/domain/synthetics/syntheticsWorkerValues.ts +13 -2
  50. package/src/domain/tags.ts +76 -0
  51. package/src/domain/telemetry/index.ts +12 -4
  52. package/src/domain/telemetry/rawTelemetryEvent.types.ts +6 -3
  53. package/src/domain/telemetry/telemetry.ts +235 -106
  54. package/src/domain/telemetry/telemetryEvent.types.ts +514 -5
  55. package/src/domain/trackingConsent.ts +34 -0
  56. package/src/index.ts +90 -59
  57. package/src/tools/abstractHooks.ts +72 -0
  58. package/src/tools/abstractLifeCycle.ts +1 -0
  59. package/src/tools/boundedBuffer.ts +36 -8
  60. package/src/tools/display.ts +4 -0
  61. package/src/tools/encoder.ts +3 -2
  62. package/src/tools/experimentalFeatures.ts +18 -7
  63. package/src/tools/getZoneJsOriginalValue.ts +1 -1
  64. package/src/tools/{getGlobalObject.ts → globalObject.ts} +20 -0
  65. package/src/tools/instrumentMethod.ts +58 -41
  66. package/src/tools/matchOption.ts +1 -2
  67. package/src/tools/monitor.ts +11 -7
  68. package/src/tools/observable.ts +78 -12
  69. package/src/tools/queueMicrotask.ts +13 -0
  70. package/src/tools/readBytesFromStream.ts +24 -64
  71. package/src/tools/requestIdleCallback.ts +40 -0
  72. package/src/tools/sendToExtension.ts +3 -1
  73. package/src/tools/serialisation/context.ts +4 -1
  74. package/src/tools/serialisation/sanitize.ts +32 -14
  75. package/src/{domain/error → tools/stackTrace}/computeStackTrace.ts +72 -8
  76. package/src/tools/stackTrace/handlingStack.ts +48 -0
  77. package/src/tools/taskQueue.ts +63 -0
  78. package/src/tools/timer.ts +1 -1
  79. package/src/tools/utils/arrayUtils.ts +11 -3
  80. package/src/tools/utils/browserDetection.ts +0 -9
  81. package/src/tools/utils/byteUtils.ts +13 -2
  82. package/src/tools/utils/functionUtils.ts +0 -2
  83. package/src/tools/utils/numberUtils.ts +2 -1
  84. package/src/tools/utils/objectUtils.ts +1 -3
  85. package/src/tools/utils/polyfills.ts +6 -107
  86. package/src/tools/utils/responseUtils.ts +1 -1
  87. package/src/tools/utils/stringUtils.ts +34 -2
  88. package/src/tools/utils/timeUtils.ts +18 -13
  89. package/src/tools/utils/timezone.ts +9 -0
  90. package/src/tools/utils/urlPolyfill.ts +29 -59
  91. package/src/tools/valueHistory.ts +66 -35
  92. package/src/transport/batch.ts +77 -80
  93. package/src/transport/eventBridge.ts +24 -5
  94. package/src/transport/flushController.ts +27 -21
  95. package/src/transport/httpRequest.ts +92 -71
  96. package/src/transport/index.ts +7 -4
  97. package/src/transport/sendWithRetryStrategy.ts +55 -36
  98. package/cjs/boot/init.d.ts +0 -5
  99. package/cjs/boot/init.js +0 -36
  100. package/cjs/boot/init.js.map +0 -1
  101. package/cjs/browser/addEventListener.d.ts +0 -84
  102. package/cjs/browser/addEventListener.js +0 -94
  103. package/cjs/browser/addEventListener.js.map +0 -1
  104. package/cjs/browser/cookie.d.ts +0 -17
  105. package/cjs/browser/cookie.js +0 -86
  106. package/cjs/browser/cookie.js.map +0 -1
  107. package/cjs/browser/fetchObservable.d.ts +0 -23
  108. package/cjs/browser/fetchObservable.js +0 -69
  109. package/cjs/browser/fetchObservable.js.map +0 -1
  110. package/cjs/browser/pageExitObservable.d.ts +0 -14
  111. package/cjs/browser/pageExitObservable.js +0 -57
  112. package/cjs/browser/pageExitObservable.js.map +0 -1
  113. package/cjs/browser/runOnReadyState.d.ts +0 -2
  114. package/cjs/browser/runOnReadyState.js +0 -15
  115. package/cjs/browser/runOnReadyState.js.map +0 -1
  116. package/cjs/browser/types.d.ts +0 -19
  117. package/cjs/browser/types.js +0 -6
  118. package/cjs/browser/types.js.map +0 -1
  119. package/cjs/browser/xhrObservable.d.ts +0 -21
  120. package/cjs/browser/xhrObservable.js +0 -85
  121. package/cjs/browser/xhrObservable.js.map +0 -1
  122. package/cjs/domain/configuration/configuration.d.ts +0 -72
  123. package/cjs/domain/configuration/configuration.js +0 -94
  124. package/cjs/domain/configuration/configuration.js.map +0 -1
  125. package/cjs/domain/configuration/endpointBuilder.d.ts +0 -10
  126. package/cjs/domain/configuration/endpointBuilder.js +0 -84
  127. package/cjs/domain/configuration/endpointBuilder.js.map +0 -1
  128. package/cjs/domain/configuration/index.d.ts +0 -4
  129. package/cjs/domain/configuration/index.js +0 -27
  130. package/cjs/domain/configuration/index.js.map +0 -1
  131. package/cjs/domain/configuration/intakeSites.d.ts +0 -5
  132. package/cjs/domain/configuration/intakeSites.js +0 -9
  133. package/cjs/domain/configuration/intakeSites.js.map +0 -1
  134. package/cjs/domain/configuration/tags.d.ts +0 -4
  135. package/cjs/domain/configuration/tags.js +0 -39
  136. package/cjs/domain/configuration/tags.js.map +0 -1
  137. package/cjs/domain/configuration/transportConfiguration.d.ts +0 -16
  138. package/cjs/domain/configuration/transportConfiguration.js +0 -42
  139. package/cjs/domain/configuration/transportConfiguration.js.map +0 -1
  140. package/cjs/domain/connectivity/connectivity.d.ts +0 -13
  141. package/cjs/domain/connectivity/connectivity.js +0 -14
  142. package/cjs/domain/connectivity/connectivity.js.map +0 -1
  143. package/cjs/domain/connectivity/index.d.ts +0 -1
  144. package/cjs/domain/connectivity/index.js +0 -18
  145. package/cjs/domain/connectivity/index.js.map +0 -1
  146. package/cjs/domain/console/consoleObservable.d.ts +0 -11
  147. package/cjs/domain/console/consoleObservable.js +0 -72
  148. package/cjs/domain/console/consoleObservable.js.map +0 -1
  149. package/cjs/domain/context/contextConstants.d.ts +0 -5
  150. package/cjs/domain/context/contextConstants.js +0 -3
  151. package/cjs/domain/context/contextConstants.js.map +0 -1
  152. package/cjs/domain/context/contextManager.d.ts +0 -12
  153. package/cjs/domain/context/contextManager.js +0 -43
  154. package/cjs/domain/context/contextManager.js.map +0 -1
  155. package/cjs/domain/context/customerDataTracker.d.ts +0 -45
  156. package/cjs/domain/context/customerDataTracker.js +0 -107
  157. package/cjs/domain/context/customerDataTracker.js.map +0 -1
  158. package/cjs/domain/context/storeContextManager.d.ts +0 -6
  159. package/cjs/domain/context/storeContextManager.js +0 -38
  160. package/cjs/domain/context/storeContextManager.js.map +0 -1
  161. package/cjs/domain/deflate/types.d.ts +0 -0
  162. package/cjs/domain/deflate/types.js +0 -3
  163. package/cjs/domain/deflate/types.js.map +0 -1
  164. package/cjs/domain/error/computeStackTrace.d.ts +0 -33
  165. package/cjs/domain/error/computeStackTrace.js +0 -142
  166. package/cjs/domain/error/computeStackTrace.js.map +0 -1
  167. package/cjs/domain/error/error.d.ts +0 -28
  168. package/cjs/domain/error/error.js +0 -131
  169. package/cjs/domain/error/error.js.map +0 -1
  170. package/cjs/domain/error/error.types.d.ts +0 -40
  171. package/cjs/domain/error/error.types.js +0 -13
  172. package/cjs/domain/error/error.types.js.map +0 -1
  173. package/cjs/domain/error/trackRuntimeError.d.ts +0 -13
  174. package/cjs/domain/error/trackRuntimeError.js +0 -54
  175. package/cjs/domain/error/trackRuntimeError.js.map +0 -1
  176. package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
  177. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +0 -40
  178. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
  179. package/cjs/domain/report/browser.types.d.ts +0 -34
  180. package/cjs/domain/report/browser.types.js +0 -3
  181. package/cjs/domain/report/browser.types.js.map +0 -1
  182. package/cjs/domain/report/reportObservable.d.ts +0 -17
  183. package/cjs/domain/report/reportObservable.js +0 -94
  184. package/cjs/domain/report/reportObservable.js.map +0 -1
  185. package/cjs/domain/resourceUtils.d.ts +0 -16
  186. package/cjs/domain/resourceUtils.js +0 -3
  187. package/cjs/domain/resourceUtils.js.map +0 -1
  188. package/cjs/domain/session/oldCookiesMigration.d.ts +0 -11
  189. package/cjs/domain/session/oldCookiesMigration.js +0 -40
  190. package/cjs/domain/session/oldCookiesMigration.js.map +0 -1
  191. package/cjs/domain/session/sessionConstants.d.ts +0 -2
  192. package/cjs/domain/session/sessionConstants.js +0 -7
  193. package/cjs/domain/session/sessionConstants.js.map +0 -1
  194. package/cjs/domain/session/sessionManager.d.ts +0 -20
  195. package/cjs/domain/session/sessionManager.js +0 -65
  196. package/cjs/domain/session/sessionManager.js.map +0 -1
  197. package/cjs/domain/session/sessionState.d.ts +0 -11
  198. package/cjs/domain/session/sessionState.js +0 -45
  199. package/cjs/domain/session/sessionState.js.map +0 -1
  200. package/cjs/domain/session/sessionStore.d.ts +0 -34
  201. package/cjs/domain/session/sessionStore.js +0 -144
  202. package/cjs/domain/session/sessionStore.js.map +0 -1
  203. package/cjs/domain/session/sessionStoreOperations.d.ts +0 -10
  204. package/cjs/domain/session/sessionStoreOperations.js +0 -96
  205. package/cjs/domain/session/sessionStoreOperations.js.map +0 -1
  206. package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +0 -6
  207. package/cjs/domain/session/storeStrategies/sessionInCookie.js +0 -59
  208. package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
  209. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -3
  210. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +0 -41
  211. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
  212. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -15
  213. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +0 -5
  214. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
  215. package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +0 -11
  216. package/cjs/domain/synthetics/syntheticsWorkerValues.js +0 -22
  217. package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
  218. package/cjs/domain/telemetry/index.d.ts +0 -3
  219. package/cjs/domain/telemetry/index.js +0 -28
  220. package/cjs/domain/telemetry/index.js.map +0 -1
  221. package/cjs/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -15
  222. package/cjs/domain/telemetry/rawTelemetryEvent.types.js +0 -8
  223. package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
  224. package/cjs/domain/telemetry/telemetry.d.ts +0 -116
  225. package/cjs/domain/telemetry/telemetry.js +0 -157
  226. package/cjs/domain/telemetry/telemetry.js.map +0 -1
  227. package/cjs/domain/telemetry/telemetryEvent.types.d.ts +0 -391
  228. package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
  229. package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
  230. package/cjs/domain/user/index.d.ts +0 -2
  231. package/cjs/domain/user/index.js +0 -19
  232. package/cjs/domain/user/index.js.map +0 -1
  233. package/cjs/domain/user/user.d.ts +0 -12
  234. package/cjs/domain/user/user.js +0 -35
  235. package/cjs/domain/user/user.js.map +0 -1
  236. package/cjs/domain/user/user.types.d.ts +0 -6
  237. package/cjs/domain/user/user.types.js +0 -3
  238. package/cjs/domain/user/user.types.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 -41
  250. package/cjs/tools/display.js.map +0 -1
  251. package/cjs/tools/encoder.d.ts +0 -53
  252. package/cjs/tools/encoder.js +0 -41
  253. package/cjs/tools/encoder.js.map +0 -1
  254. package/cjs/tools/experimentalFeatures.d.ts +0 -22
  255. package/cjs/tools/experimentalFeatures.js +0 -45
  256. package/cjs/tools/experimentalFeatures.js.map +0 -1
  257. package/cjs/tools/getGlobalObject.d.ts +0 -4
  258. package/cjs/tools/getGlobalObject.js +0 -37
  259. package/cjs/tools/getGlobalObject.js.map +0 -1
  260. package/cjs/tools/getZoneJsOriginalValue.d.ts +0 -19
  261. package/cjs/tools/getZoneJsOriginalValue.js +0 -30
  262. package/cjs/tools/getZoneJsOriginalValue.js.map +0 -1
  263. package/cjs/tools/instrumentMethod.d.ts +0 -59
  264. package/cjs/tools/instrumentMethod.js +0 -106
  265. package/cjs/tools/instrumentMethod.js.map +0 -1
  266. package/cjs/tools/matchOption.d.ts +0 -8
  267. package/cjs/tools/matchOption.js +0 -38
  268. package/cjs/tools/matchOption.js.map +0 -1
  269. package/cjs/tools/mergeInto.d.ts +0 -25
  270. package/cjs/tools/mergeInto.js +0 -105
  271. package/cjs/tools/mergeInto.js.map +0 -1
  272. package/cjs/tools/monitor.d.ts +0 -8
  273. package/cjs/tools/monitor.js +0 -76
  274. package/cjs/tools/monitor.js.map +0 -1
  275. package/cjs/tools/observable.d.ts +0 -12
  276. package/cjs/tools/observable.js +0 -43
  277. package/cjs/tools/observable.js.map +0 -1
  278. package/cjs/tools/readBytesFromStream.d.ts +0 -11
  279. package/cjs/tools/readBytesFromStream.js +0 -64
  280. package/cjs/tools/readBytesFromStream.js.map +0 -1
  281. package/cjs/tools/sendToExtension.d.ts +0 -3
  282. package/cjs/tools/sendToExtension.js +0 -11
  283. package/cjs/tools/sendToExtension.js.map +0 -1
  284. package/cjs/tools/serialisation/context.d.ts +0 -6
  285. package/cjs/tools/serialisation/context.js +0 -3
  286. package/cjs/tools/serialisation/context.js.map +0 -1
  287. package/cjs/tools/serialisation/jsonStringify.d.ts +0 -13
  288. package/cjs/tools/serialisation/jsonStringify.js +0 -49
  289. package/cjs/tools/serialisation/jsonStringify.js.map +0 -1
  290. package/cjs/tools/serialisation/sanitize.d.ts +0 -18
  291. package/cjs/tools/serialisation/sanitize.js +0 -185
  292. package/cjs/tools/serialisation/sanitize.js.map +0 -1
  293. package/cjs/tools/timer.d.ts +0 -5
  294. package/cjs/tools/timer.js +0 -23
  295. package/cjs/tools/timer.js.map +0 -1
  296. package/cjs/tools/utils/arrayUtils.d.ts +0 -1
  297. package/cjs/tools/utils/arrayUtils.js +0 -11
  298. package/cjs/tools/utils/arrayUtils.js.map +0 -1
  299. package/cjs/tools/utils/browserDetection.d.ts +0 -10
  300. package/cjs/tools/utils/browserDetection.js +0 -42
  301. package/cjs/tools/utils/browserDetection.js.map +0 -1
  302. package/cjs/tools/utils/byteUtils.d.ts +0 -4
  303. package/cjs/tools/utils/byteUtils.js +0 -31
  304. package/cjs/tools/utils/byteUtils.js.map +0 -1
  305. package/cjs/tools/utils/functionUtils.d.ts +0 -9
  306. package/cjs/tools/utils/functionUtils.js +0 -48
  307. package/cjs/tools/utils/functionUtils.js.map +0 -1
  308. package/cjs/tools/utils/numberUtils.d.ts +0 -8
  309. package/cjs/tools/utils/numberUtils.js +0 -24
  310. package/cjs/tools/utils/numberUtils.js.map +0 -1
  311. package/cjs/tools/utils/objectUtils.d.ts +0 -10
  312. package/cjs/tools/utils/objectUtils.js +0 -26
  313. package/cjs/tools/utils/objectUtils.js.map +0 -1
  314. package/cjs/tools/utils/polyfills.d.ts +0 -24
  315. package/cjs/tools/utils/polyfills.js +0 -110
  316. package/cjs/tools/utils/polyfills.js.map +0 -1
  317. package/cjs/tools/utils/responseUtils.d.ts +0 -2
  318. package/cjs/tools/utils/responseUtils.js +0 -18
  319. package/cjs/tools/utils/responseUtils.js.map +0 -1
  320. package/cjs/tools/utils/stringUtils.d.ts +0 -8
  321. package/cjs/tools/utils/stringUtils.js +0 -59
  322. package/cjs/tools/utils/stringUtils.js.map +0 -1
  323. package/cjs/tools/utils/timeUtils.d.ts +0 -57
  324. package/cjs/tools/utils/timeUtils.js +0 -99
  325. package/cjs/tools/utils/timeUtils.js.map +0 -1
  326. package/cjs/tools/utils/typeUtils.d.ts +0 -4
  327. package/cjs/tools/utils/typeUtils.js +0 -17
  328. package/cjs/tools/utils/typeUtils.js.map +0 -1
  329. package/cjs/tools/utils/urlPolyfill.d.ts +0 -14
  330. package/cjs/tools/utils/urlPolyfill.js +0 -92
  331. package/cjs/tools/utils/urlPolyfill.js.map +0 -1
  332. package/cjs/tools/valueHistory.d.ts +0 -50
  333. package/cjs/tools/valueHistory.js +0 -106
  334. package/cjs/tools/valueHistory.js.map +0 -1
  335. package/cjs/transport/batch.d.ts +0 -21
  336. package/cjs/transport/batch.js +0 -123
  337. package/cjs/transport/batch.js.map +0 -1
  338. package/cjs/transport/eventBridge.d.ts +0 -12
  339. package/cjs/transport/eventBridge.js +0 -34
  340. package/cjs/transport/eventBridge.js.map +0 -1
  341. package/cjs/transport/flushController.d.ts +0 -58
  342. package/cjs/transport/flushController.js +0 -112
  343. package/cjs/transport/flushController.js.map +0 -1
  344. package/cjs/transport/httpRequest.d.ts +0 -38
  345. package/cjs/transport/httpRequest.js +0 -95
  346. package/cjs/transport/httpRequest.js.map +0 -1
  347. package/cjs/transport/index.d.ts +0 -4
  348. package/cjs/transport/index.js +0 -13
  349. package/cjs/transport/index.js.map +0 -1
  350. package/cjs/transport/sendWithRetryStrategy.d.ts +0 -39
  351. package/cjs/transport/sendWithRetryStrategy.js +0 -151
  352. package/cjs/transport/sendWithRetryStrategy.js.map +0 -1
  353. package/cjs/transport/startBatchWithReplica.d.ts +0 -20
  354. package/cjs/transport/startBatchWithReplica.js +0 -42
  355. package/cjs/transport/startBatchWithReplica.js.map +0 -1
  356. package/esm/boot/init.d.ts +0 -5
  357. package/esm/boot/init.js +0 -31
  358. package/esm/boot/init.js.map +0 -1
  359. package/esm/browser/addEventListener.d.ts +0 -84
  360. package/esm/browser/addEventListener.js +0 -89
  361. package/esm/browser/addEventListener.js.map +0 -1
  362. package/esm/browser/cookie.d.ts +0 -17
  363. package/esm/browser/cookie.js +0 -76
  364. package/esm/browser/cookie.js.map +0 -1
  365. package/esm/browser/fetchObservable.d.ts +0 -23
  366. package/esm/browser/fetchObservable.js +0 -65
  367. package/esm/browser/fetchObservable.js.map +0 -1
  368. package/esm/browser/pageExitObservable.d.ts +0 -14
  369. package/esm/browser/pageExitObservable.js +0 -52
  370. package/esm/browser/pageExitObservable.js.map +0 -1
  371. package/esm/browser/runOnReadyState.d.ts +0 -2
  372. package/esm/browser/runOnReadyState.js +0 -11
  373. package/esm/browser/runOnReadyState.js.map +0 -1
  374. package/esm/browser/types.d.ts +0 -19
  375. package/esm/browser/types.js +0 -5
  376. package/esm/browser/types.js.map +0 -1
  377. package/esm/browser/xhrObservable.d.ts +0 -21
  378. package/esm/browser/xhrObservable.js +0 -81
  379. package/esm/browser/xhrObservable.js.map +0 -1
  380. package/esm/domain/configuration/configuration.d.ts +0 -72
  381. package/esm/domain/configuration/configuration.js +0 -89
  382. package/esm/domain/configuration/configuration.js.map +0 -1
  383. package/esm/domain/configuration/endpointBuilder.d.ts +0 -10
  384. package/esm/domain/configuration/endpointBuilder.js +0 -80
  385. package/esm/domain/configuration/endpointBuilder.js.map +0 -1
  386. package/esm/domain/configuration/index.d.ts +0 -4
  387. package/esm/domain/configuration/index.js +0 -5
  388. package/esm/domain/configuration/index.js.map +0 -1
  389. package/esm/domain/configuration/intakeSites.d.ts +0 -5
  390. package/esm/domain/configuration/intakeSites.js +0 -6
  391. package/esm/domain/configuration/intakeSites.js.map +0 -1
  392. package/esm/domain/configuration/tags.d.ts +0 -4
  393. package/esm/domain/configuration/tags.js +0 -34
  394. package/esm/domain/configuration/tags.js.map +0 -1
  395. package/esm/domain/configuration/transportConfiguration.d.ts +0 -16
  396. package/esm/domain/configuration/transportConfiguration.js +0 -38
  397. package/esm/domain/configuration/transportConfiguration.js.map +0 -1
  398. package/esm/domain/connectivity/connectivity.d.ts +0 -13
  399. package/esm/domain/connectivity/connectivity.js +0 -10
  400. package/esm/domain/connectivity/connectivity.js.map +0 -1
  401. package/esm/domain/connectivity/index.d.ts +0 -1
  402. package/esm/domain/connectivity/index.js +0 -2
  403. package/esm/domain/connectivity/index.js.map +0 -1
  404. package/esm/domain/console/consoleObservable.d.ts +0 -11
  405. package/esm/domain/console/consoleObservable.js +0 -67
  406. package/esm/domain/console/consoleObservable.js.map +0 -1
  407. package/esm/domain/context/contextConstants.d.ts +0 -5
  408. package/esm/domain/context/contextConstants.js +0 -2
  409. package/esm/domain/context/contextConstants.js.map +0 -1
  410. package/esm/domain/context/contextManager.d.ts +0 -12
  411. package/esm/domain/context/contextManager.js +0 -39
  412. package/esm/domain/context/contextManager.js.map +0 -1
  413. package/esm/domain/context/customerDataTracker.d.ts +0 -45
  414. package/esm/domain/context/customerDataTracker.js +0 -102
  415. package/esm/domain/context/customerDataTracker.js.map +0 -1
  416. package/esm/domain/context/storeContextManager.d.ts +0 -6
  417. package/esm/domain/context/storeContextManager.js +0 -32
  418. package/esm/domain/context/storeContextManager.js.map +0 -1
  419. package/esm/domain/deflate/index.d.ts +0 -1
  420. package/esm/domain/deflate/index.js +0 -2
  421. package/esm/domain/deflate/index.js.map +0 -1
  422. package/esm/domain/deflate/types.d.ts +0 -38
  423. package/esm/domain/deflate/types.js +0 -2
  424. package/esm/domain/deflate/types.js.map +0 -1
  425. package/esm/domain/error/computeStackTrace.d.ts +0 -33
  426. package/esm/domain/error/computeStackTrace.js +0 -137
  427. package/esm/domain/error/computeStackTrace.js.map +0 -1
  428. package/esm/domain/error/error.d.ts +0 -28
  429. package/esm/domain/error/error.js +0 -121
  430. package/esm/domain/error/error.js.map +0 -1
  431. package/esm/domain/error/error.types.d.ts +0 -40
  432. package/esm/domain/error/error.types.js +0 -10
  433. package/esm/domain/error/error.types.js.map +0 -1
  434. package/esm/domain/error/trackRuntimeError.d.ts +0 -13
  435. package/esm/domain/error/trackRuntimeError.js +0 -48
  436. package/esm/domain/error/trackRuntimeError.js.map +0 -1
  437. package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
  438. package/esm/domain/eventRateLimiter/createEventRateLimiter.js +0 -36
  439. package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
  440. package/esm/domain/report/browser.types.d.ts +0 -34
  441. package/esm/domain/report/browser.types.js +0 -2
  442. package/esm/domain/report/browser.types.js.map +0 -1
  443. package/esm/domain/report/reportObservable.d.ts +0 -17
  444. package/esm/domain/report/reportObservable.js +0 -90
  445. package/esm/domain/report/reportObservable.js.map +0 -1
  446. package/esm/domain/resourceUtils.d.ts +0 -16
  447. package/esm/domain/resourceUtils.js +0 -2
  448. package/esm/domain/resourceUtils.js.map +0 -1
  449. package/esm/domain/session/oldCookiesMigration.d.ts +0 -11
  450. package/esm/domain/session/oldCookiesMigration.js +0 -36
  451. package/esm/domain/session/oldCookiesMigration.js.map +0 -1
  452. package/esm/domain/session/sessionConstants.d.ts +0 -2
  453. package/esm/domain/session/sessionConstants.js +0 -4
  454. package/esm/domain/session/sessionConstants.js.map +0 -1
  455. package/esm/domain/session/sessionManager.d.ts +0 -20
  456. package/esm/domain/session/sessionManager.js +0 -60
  457. package/esm/domain/session/sessionManager.js.map +0 -1
  458. package/esm/domain/session/sessionState.d.ts +0 -11
  459. package/esm/domain/session/sessionState.js +0 -38
  460. package/esm/domain/session/sessionState.js.map +0 -1
  461. package/esm/domain/session/sessionStore.d.ts +0 -34
  462. package/esm/domain/session/sessionStore.js +0 -139
  463. package/esm/domain/session/sessionStore.js.map +0 -1
  464. package/esm/domain/session/sessionStoreOperations.d.ts +0 -10
  465. package/esm/domain/session/sessionStoreOperations.js +0 -92
  466. package/esm/domain/session/sessionStoreOperations.js.map +0 -1
  467. package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +0 -6
  468. package/esm/domain/session/storeStrategies/sessionInCookie.js +0 -53
  469. package/esm/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
  470. package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -3
  471. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +0 -36
  472. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
  473. package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -15
  474. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +0 -2
  475. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
  476. package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +0 -11
  477. package/esm/domain/synthetics/syntheticsWorkerValues.js +0 -16
  478. package/esm/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
  479. package/esm/domain/telemetry/index.d.ts +0 -3
  480. package/esm/domain/telemetry/index.js +0 -4
  481. package/esm/domain/telemetry/index.js.map +0 -1
  482. package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -15
  483. package/esm/domain/telemetry/rawTelemetryEvent.types.js +0 -5
  484. package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
  485. package/esm/domain/telemetry/telemetry.d.ts +0 -116
  486. package/esm/domain/telemetry/telemetry.js +0 -145
  487. package/esm/domain/telemetry/telemetry.js.map +0 -1
  488. package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -391
  489. package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
  490. package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
  491. package/esm/domain/user/index.d.ts +0 -2
  492. package/esm/domain/user/index.js +0 -3
  493. package/esm/domain/user/index.js.map +0 -1
  494. package/esm/domain/user/user.d.ts +0 -12
  495. package/esm/domain/user/user.js +0 -30
  496. package/esm/domain/user/user.js.map +0 -1
  497. package/esm/domain/user/user.types.d.ts +0 -6
  498. package/esm/domain/user/user.types.js +0 -2
  499. package/esm/domain/user/user.types.js.map +0 -1
  500. package/esm/index.d.ts +0 -67
  501. package/esm/index.js +0 -64
  502. package/esm/index.js.map +0 -1
  503. package/esm/tools/abstractLifeCycle.d.ts +0 -23
  504. package/esm/tools/abstractLifeCycle.js +0 -26
  505. package/esm/tools/abstractLifeCycle.js.map +0 -1
  506. package/esm/tools/boundedBuffer.d.ts +0 -5
  507. package/esm/tools/boundedBuffer.js +0 -19
  508. package/esm/tools/boundedBuffer.js.map +0 -1
  509. package/esm/tools/catchUserErrors.d.ts +0 -1
  510. package/esm/tools/catchUserErrors.js +0 -16
  511. package/esm/tools/catchUserErrors.js.map +0 -1
  512. package/esm/tools/display.d.ts +0 -35
  513. package/esm/tools/display.js +0 -38
  514. package/esm/tools/display.js.map +0 -1
  515. package/esm/tools/encoder.d.ts +0 -53
  516. package/esm/tools/encoder.js +0 -37
  517. package/esm/tools/encoder.js.map +0 -1
  518. package/esm/tools/experimentalFeatures.d.ts +0 -22
  519. package/esm/tools/experimentalFeatures.js +0 -38
  520. package/esm/tools/experimentalFeatures.js.map +0 -1
  521. package/esm/tools/getGlobalObject.d.ts +0 -4
  522. package/esm/tools/getGlobalObject.js +0 -33
  523. package/esm/tools/getGlobalObject.js.map +0 -1
  524. package/esm/tools/getZoneJsOriginalValue.d.ts +0 -19
  525. package/esm/tools/getZoneJsOriginalValue.js +0 -26
  526. package/esm/tools/getZoneJsOriginalValue.js.map +0 -1
  527. package/esm/tools/instrumentMethod.d.ts +0 -59
  528. package/esm/tools/instrumentMethod.js +0 -101
  529. package/esm/tools/instrumentMethod.js.map +0 -1
  530. package/esm/tools/matchOption.d.ts +0 -8
  531. package/esm/tools/matchOption.js +0 -33
  532. package/esm/tools/matchOption.js.map +0 -1
  533. package/esm/tools/mergeInto.d.ts +0 -25
  534. package/esm/tools/mergeInto.js +0 -99
  535. package/esm/tools/mergeInto.js.map +0 -1
  536. package/esm/tools/monitor.d.ts +0 -8
  537. package/esm/tools/monitor.js +0 -66
  538. package/esm/tools/monitor.js.map +0 -1
  539. package/esm/tools/observable.d.ts +0 -12
  540. package/esm/tools/observable.js +0 -39
  541. package/esm/tools/observable.js.map +0 -1
  542. package/esm/tools/readBytesFromStream.d.ts +0 -11
  543. package/esm/tools/readBytesFromStream.js +0 -60
  544. package/esm/tools/readBytesFromStream.js.map +0 -1
  545. package/esm/tools/sendToExtension.d.ts +0 -3
  546. package/esm/tools/sendToExtension.js +0 -7
  547. package/esm/tools/sendToExtension.js.map +0 -1
  548. package/esm/tools/serialisation/context.d.ts +0 -6
  549. package/esm/tools/serialisation/context.js +0 -2
  550. package/esm/tools/serialisation/context.js.map +0 -1
  551. package/esm/tools/serialisation/jsonStringify.d.ts +0 -13
  552. package/esm/tools/serialisation/jsonStringify.js +0 -44
  553. package/esm/tools/serialisation/jsonStringify.js.map +0 -1
  554. package/esm/tools/serialisation/sanitize.d.ts +0 -18
  555. package/esm/tools/serialisation/sanitize.js +0 -181
  556. package/esm/tools/serialisation/sanitize.js.map +0 -1
  557. package/esm/tools/timer.d.ts +0 -5
  558. package/esm/tools/timer.js +0 -16
  559. package/esm/tools/timer.js.map +0 -1
  560. package/esm/tools/utils/arrayUtils.d.ts +0 -1
  561. package/esm/tools/utils/arrayUtils.js +0 -7
  562. package/esm/tools/utils/arrayUtils.js.map +0 -1
  563. package/esm/tools/utils/browserDetection.d.ts +0 -10
  564. package/esm/tools/utils/browserDetection.js +0 -35
  565. package/esm/tools/utils/browserDetection.js.map +0 -1
  566. package/esm/tools/utils/byteUtils.d.ts +0 -4
  567. package/esm/tools/utils/byteUtils.js +0 -26
  568. package/esm/tools/utils/byteUtils.js.map +0 -1
  569. package/esm/tools/utils/functionUtils.d.ts +0 -9
  570. package/esm/tools/utils/functionUtils.js +0 -43
  571. package/esm/tools/utils/functionUtils.js.map +0 -1
  572. package/esm/tools/utils/numberUtils.d.ts +0 -8
  573. package/esm/tools/utils/numberUtils.js +0 -17
  574. package/esm/tools/utils/numberUtils.js.map +0 -1
  575. package/esm/tools/utils/objectUtils.d.ts +0 -10
  576. package/esm/tools/utils/objectUtils.js +0 -19
  577. package/esm/tools/utils/objectUtils.js.map +0 -1
  578. package/esm/tools/utils/polyfills.d.ts +0 -24
  579. package/esm/tools/utils/polyfills.js +0 -95
  580. package/esm/tools/utils/polyfills.js.map +0 -1
  581. package/esm/tools/utils/responseUtils.d.ts +0 -2
  582. package/esm/tools/utils/responseUtils.js +0 -13
  583. package/esm/tools/utils/responseUtils.js.map +0 -1
  584. package/esm/tools/utils/stringUtils.d.ts +0 -8
  585. package/esm/tools/utils/stringUtils.js +0 -52
  586. package/esm/tools/utils/stringUtils.js.map +0 -1
  587. package/esm/tools/utils/timeUtils.d.ts +0 -57
  588. package/esm/tools/utils/timeUtils.js +0 -82
  589. package/esm/tools/utils/timeUtils.js.map +0 -1
  590. package/esm/tools/utils/typeUtils.d.ts +0 -4
  591. package/esm/tools/utils/typeUtils.js +0 -13
  592. package/esm/tools/utils/typeUtils.js.map +0 -1
  593. package/esm/tools/utils/urlPolyfill.d.ts +0 -14
  594. package/esm/tools/utils/urlPolyfill.js +0 -80
  595. package/esm/tools/utils/urlPolyfill.js.map +0 -1
  596. package/esm/tools/valueHistory.d.ts +0 -50
  597. package/esm/tools/valueHistory.js +0 -103
  598. package/esm/tools/valueHistory.js.map +0 -1
  599. package/esm/transport/batch.d.ts +0 -21
  600. package/esm/transport/batch.js +0 -120
  601. package/esm/transport/batch.js.map +0 -1
  602. package/esm/transport/eventBridge.d.ts +0 -12
  603. package/esm/transport/eventBridge.js +0 -29
  604. package/esm/transport/eventBridge.js.map +0 -1
  605. package/esm/transport/flushController.d.ts +0 -58
  606. package/esm/transport/flushController.js +0 -108
  607. package/esm/transport/flushController.js.map +0 -1
  608. package/esm/transport/httpRequest.d.ts +0 -38
  609. package/esm/transport/httpRequest.js +0 -89
  610. package/esm/transport/httpRequest.js.map +0 -1
  611. package/esm/transport/index.d.ts +0 -4
  612. package/esm/transport/index.js +0 -5
  613. package/esm/transport/index.js.map +0 -1
  614. package/esm/transport/sendWithRetryStrategy.d.ts +0 -39
  615. package/esm/transport/sendWithRetryStrategy.js +0 -146
  616. package/esm/transport/sendWithRetryStrategy.js.map +0 -1
  617. package/esm/transport/startBatchWithReplica.d.ts +0 -20
  618. package/esm/transport/startBatchWithReplica.js +0 -38
  619. package/esm/transport/startBatchWithReplica.js.map +0 -1
  620. package/src/domain/configuration/intakeSites.ts +0 -5
  621. package/src/domain/configuration/tags.ts +0 -43
  622. package/src/domain/context/customerDataTracker.ts +0 -134
  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/transport/startBatchWithReplica.ts +0 -68
@@ -1,17 +1,16 @@
1
1
  import type { Payload } from '../../transport'
2
2
  import { timeStampNow } from '../../tools/utils/timeUtils'
3
3
  import { normalizeUrl } from '../../tools/utils/urlPolyfill'
4
- import { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures'
5
4
  import { generateUUID } from '../../tools/utils/stringUtils'
5
+ import { INTAKE_SITE_FED_STAGING, INTAKE_SITE_US1, PCI_INTAKE_HOST_US1 } from '../intakeSites'
6
6
  import type { InitConfiguration } from './configuration'
7
- import { INTAKE_SITE_US1 } from './intakeSites'
8
7
 
9
8
  // replaced at build time
10
9
  declare const __BUILD_ENV__SDK_VERSION__: string
11
10
 
12
- export type TrackType = 'logs' | 'rum' | 'replay'
11
+ export type TrackType = 'logs' | 'rum' | 'replay' | 'profile' | 'exposures'
13
12
  export type ApiType =
14
- | 'xhr'
13
+ | 'fetch-keepalive'
15
14
  | 'fetch'
16
15
  | 'beacon'
17
16
  // 'manual' reflects that the request have been sent manually, outside of the SDK (ex: via curl or
@@ -23,16 +22,15 @@ export type EndpointBuilder = ReturnType<typeof createEndpointBuilder>
23
22
  export function createEndpointBuilder(
24
23
  initConfiguration: InitConfiguration,
25
24
  trackType: TrackType,
26
- configurationTags: string[]
25
+ extraParameters?: string[]
27
26
  ) {
28
27
  const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType)
29
28
 
30
29
  return {
31
30
  build(api: ApiType, payload: Payload) {
32
- const parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload)
31
+ const parameters = buildEndpointParameters(initConfiguration, trackType, api, payload, extraParameters)
33
32
  return buildUrlWithParameters(parameters)
34
33
  },
35
- urlPrefix: buildUrlWithParameters(''),
36
34
  trackType,
37
35
  }
38
36
  }
@@ -46,24 +44,25 @@ function createEndpointUrlWithParametersBuilder(
46
44
  initConfiguration: InitConfiguration,
47
45
  trackType: TrackType
48
46
  ): (parameters: string) => string {
49
- const { proxy, apiVersion, organizationIdentifier, insecureHTTP } = initConfiguration
47
+ const { proxy, proxyUrl, apiVersion, organizationIdentifier, insecureHTTP } = initConfiguration
50
48
 
51
- const path = `/rum/${apiVersion}/${organizationIdentifier}/${trackType}`
49
+ const path = `/rum/${apiVersion}/${organizationIdentifier}/${INTAKE_TRACKS[trackType]}`
52
50
 
53
51
  if (proxy) {
54
52
  const normalizedProxyUrl = normalizeUrl(proxy)
55
- return (parameters) => `${normalizedProxyUrl}?o2forward=${encodeURIComponent(`${path}?${parameters}`)}`
53
+ return (parameters) => `${normalizedProxyUrl}?ooforward=${encodeURIComponent(`${path}?${parameters}`)}`
56
54
  }
57
55
  if (typeof proxy === 'function') {
58
56
  return (parameters) => proxy({ path, parameters })
59
57
  }
60
- const host = buildEndpointHost(initConfiguration)
61
- const protocol = insecureHTTP ? 'http' : 'https'
62
-
63
- return (parameters) => `${protocol}://${host}${path}?${parameters}`
58
+ const host = buildEndpointHost(trackType, initConfiguration)
59
+ return (parameters) => `https://${host}${path}?${parameters}`
64
60
  }
65
61
 
66
- function buildEndpointHost(initConfiguration: InitConfiguration) {
62
+ export function buildEndpointHost(
63
+ trackType: TrackType,
64
+ initConfiguration: InitConfiguration & { usePciIntake?: boolean }
65
+ ) {
67
66
  const { site = INTAKE_SITE_US1, internalAnalyticsSubdomain } = initConfiguration
68
67
 
69
68
  return site
@@ -71,10 +70,13 @@ function buildEndpointHost(initConfiguration: InitConfiguration) {
71
70
  return `${internalAnalyticsSubdomain}.${INTAKE_SITE_US1}`
72
71
  }
73
72
 
73
+ if (site === INTAKE_SITE_FED_STAGING) {
74
+ return `http-intake.logs.${site}`
75
+ }
76
+
74
77
  const domainParts = site.split('.')
75
78
  const extension = domainParts.pop()
76
- const subdomain = site !== INTAKE_SITE_AP1 ? `${ENDPOINTS[endpointType]}.` : ''
77
- return `${subdomain}browser-intake-${domainParts.join('-')}.${extension!}`
79
+ return `browser-intake-${domainParts.join('-')}.${extension!}`
78
80
  }
79
81
 
80
82
  /**
@@ -82,35 +84,30 @@ function buildEndpointHost(initConfiguration: InitConfiguration) {
82
84
  * request, as they change randomly.
83
85
  */
84
86
  function buildEndpointParameters(
85
- { clientToken, internalAnalyticsSubdomain }: InitConfiguration,
87
+ { clientToken, internalAnalyticsSubdomain, source = 'browser' }: InitConfiguration,
86
88
  trackType: TrackType,
87
- configurationTags: string[],
88
89
  api: ApiType,
89
- { retry, flushReason, encoding }: Payload
90
+ { retry, encoding }: Payload,
91
+ extraParameters: string[] = []
90
92
  ) {
91
- const tags = [`sdk_version:${__BUILD_ENV__SDK_VERSION__}`, `api:${api}`].concat(configurationTags)
92
- if (flushReason && isExperimentalFeatureEnabled(ExperimentalFeature.COLLECT_FLUSH_REASON)) {
93
- tags.push(`flush_reason:${flushReason}`)
94
- }
95
- if (retry) {
96
- tags.push(`retry_count:${retry.count}`, `retry_after:${retry.lastFailureStatus}`)
97
- }
98
-
99
93
  const parameters = [
100
94
  'o2source=browser',
101
- `o2tags=${encodeURIComponent(tags.join(','))}`,
102
95
  `o2-api-key=${clientToken}`,
103
96
  `o2-evp-origin-version=${encodeURIComponent(__BUILD_ENV__SDK_VERSION__)}`,
104
97
  'o2-evp-origin=browser',
105
98
  `o2-request-id=${generateUUID()}`,
106
- ]
99
+ ].concat(extraParameters)
107
100
 
108
101
  if (encoding) {
109
- parameters.push(`o2-evp-encoding=${encoding}`)
102
+ parameters.push(`dd-evp-encoding=${encoding}`)
110
103
  }
111
104
 
112
105
  if (trackType === 'rum') {
113
- parameters.push(`batch_time=${timeStampNow()}`)
106
+ parameters.push(`batch_time=${timeStampNow()}`, `_dd.api=${api}`)
107
+
108
+ if (retry) {
109
+ parameters.push(`_dd.retry_count=${retry.count}`, `_dd.retry_after=${retry.lastFailureStatus}`)
110
+ }
114
111
  }
115
112
 
116
113
  if (internalAnalyticsSubdomain) {
@@ -1,10 +1,11 @@
1
+ export type { Configuration, InitConfiguration, ProxyFn } from './configuration'
1
2
  export {
2
- Configuration,
3
- InitConfiguration,
4
3
  DefaultPrivacyLevel,
4
+ TraceContextInjection,
5
+ isSampleRate,
5
6
  validateAndBuildConfiguration,
6
7
  serializeConfiguration,
7
8
  } from './configuration'
8
- export { createEndpointBuilder, EndpointBuilder, TrackType } from './endpointBuilder'
9
- export * from './intakeSites'
10
- export { computeTransportConfiguration } from './transportConfiguration'
9
+ export type { EndpointBuilder, TrackType } from './endpointBuilder'
10
+ export { createEndpointBuilder, buildEndpointHost } from './endpointBuilder'
11
+ export { computeTransportConfiguration, isIntakeUrl } from './transportConfiguration'
@@ -1,71 +1,78 @@
1
- import { objectValues, assign } from '../../tools/utils/polyfills'
1
+ import type { Site } from '../intakeSites'
2
+ import { INTAKE_SITE_US1, INTAKE_URL_PARAMETERS } from '../intakeSites'
2
3
  import type { InitConfiguration } from './configuration'
3
4
  import type { EndpointBuilder } from './endpointBuilder'
4
5
  import { createEndpointBuilder } from './endpointBuilder'
5
- import { buildTags } from './tags'
6
- import { INTAKE_SITE_US1 } from './intakeSites'
7
6
 
8
7
  export interface TransportConfiguration {
9
8
  logsEndpointBuilder: EndpointBuilder
10
9
  rumEndpointBuilder: EndpointBuilder
11
10
  sessionReplayEndpointBuilder: EndpointBuilder
12
- isIntakeUrl: (url: string) => boolean
11
+ profilingEndpointBuilder: EndpointBuilder
12
+ exposuresEndpointBuilder: EndpointBuilder
13
+ datacenter?: string | undefined
13
14
  replica?: ReplicaConfiguration
14
- site: string
15
+ site: Site
16
+ source: 'browser' | 'flutter' | 'unity'
15
17
  }
16
18
 
17
19
  export interface ReplicaConfiguration {
18
- applicationId?: string
19
20
  logsEndpointBuilder: EndpointBuilder
20
21
  rumEndpointBuilder: EndpointBuilder
21
22
  }
22
23
 
23
24
  export function computeTransportConfiguration(initConfiguration: InitConfiguration): TransportConfiguration {
24
- const tags = buildTags(initConfiguration)
25
+ const site = initConfiguration.site || INTAKE_SITE_US1
26
+ const source = validateSource(initConfiguration.source)
25
27
 
26
- const endpointBuilders = computeEndpointBuilders(initConfiguration, tags)
27
- const intakeUrlPrefixes = objectValues(endpointBuilders).map((builder) => builder.urlPrefix)
28
+ const endpointBuilders = computeEndpointBuilders({ ...initConfiguration, site, source })
29
+ const replicaConfiguration = computeReplicaConfiguration({ ...initConfiguration, site, source })
28
30
 
29
- const replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags)
31
+ return {
32
+ replica: replicaConfiguration,
33
+ site,
34
+ source,
35
+ ...endpointBuilders,
36
+ }
37
+ }
30
38
 
31
- return assign(
32
- {
33
- isIntakeUrl: (url: string) => intakeUrlPrefixes.some((intakeEndpoint) => url.indexOf(intakeEndpoint) === 0),
34
- replica: replicaConfiguration,
35
- site: initConfiguration.site || INTAKE_SITE_US1,
36
- },
37
- endpointBuilders
38
- )
39
+ function validateSource(source: string | undefined) {
40
+ if (source === 'flutter' || source === 'unity') {
41
+ return source
42
+ }
43
+ return 'browser'
39
44
  }
40
45
 
41
- function computeEndpointBuilders(initConfiguration: InitConfiguration, tags: string[]) {
46
+ function computeEndpointBuilders(initConfiguration: InitConfiguration) {
42
47
  return {
43
- logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),
44
- rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),
45
- sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags),
48
+ logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs'),
49
+ rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum'),
50
+ profilingEndpointBuilder: createEndpointBuilder(initConfiguration, 'profile'),
51
+ sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay'),
52
+ exposuresEndpointBuilder: createEndpointBuilder(initConfiguration, 'exposures'),
46
53
  }
47
54
  }
48
55
 
49
- function computeReplicaConfiguration(
50
- initConfiguration: InitConfiguration,
51
- intakeUrlPrefixes: string[],
52
- tags: string[]
53
- ): ReplicaConfiguration | undefined {
56
+ function computeReplicaConfiguration(initConfiguration: InitConfiguration): ReplicaConfiguration | undefined {
54
57
  if (!initConfiguration.replica) {
55
58
  return
56
59
  }
57
60
 
58
- const replicaConfiguration: InitConfiguration = assign({}, initConfiguration, {
61
+ const replicaConfiguration: InitConfiguration = {
62
+ ...initConfiguration,
59
63
  site: INTAKE_SITE_US1,
60
64
  clientToken: initConfiguration.replica.clientToken,
61
- })
62
-
63
- const replicaEndpointBuilders = {
64
- logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),
65
- rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),
66
65
  }
67
66
 
68
- intakeUrlPrefixes.push(...objectValues(replicaEndpointBuilders).map((builder) => builder.urlPrefix))
67
+ return {
68
+ logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs'),
69
+ rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', [
70
+ `application.id=${initConfiguration.replica.applicationId}`,
71
+ ]),
72
+ }
73
+ }
69
74
 
70
- return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders)
75
+ export function isIntakeUrl(url: string): boolean {
76
+ // check if tags is present in the query string
77
+ return INTAKE_URL_PARAMETERS.every((param) => url.includes(param))
71
78
  }
@@ -1,3 +1,5 @@
1
+ import { globalObject } from '../../tools/globalObject'
2
+
1
3
  export type NetworkInterface = 'bluetooth' | 'cellular' | 'ethernet' | 'none' | 'wifi' | 'wimax' | 'other' | 'unknown'
2
4
  export type EffectiveType = 'slow-2g' | '2g' | '3g' | '4g'
3
5
 
@@ -8,6 +10,7 @@ interface BrowserNavigator extends Navigator {
8
10
  export interface NetworkInformation {
9
11
  type?: NetworkInterface
10
12
  effectiveType?: EffectiveType
13
+ saveData: boolean
11
14
  }
12
15
 
13
16
  export interface Connectivity {
@@ -18,7 +21,8 @@ export interface Connectivity {
18
21
  }
19
22
 
20
23
  export function getConnectivity(): Connectivity {
21
- const navigator = window.navigator as BrowserNavigator
24
+ const navigator = globalObject.navigator as BrowserNavigator
25
+
22
26
  return {
23
27
  status: navigator.onLine ? 'connected' : 'not_connected',
24
28
  interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,
@@ -1,31 +1,48 @@
1
- import { createHandlingStack, formatErrorMessage, toStackTraceString, tryToGetFingerprint } from '../error/error'
1
+ import { isError, computeRawError } from '../error/error'
2
2
  import { mergeObservables, Observable } from '../../tools/observable'
3
3
  import { ConsoleApiName, globalConsole } from '../../tools/display'
4
4
  import { callMonitored } from '../../tools/monitor'
5
5
  import { sanitize } from '../../tools/serialisation/sanitize'
6
- import { find } from '../../tools/utils/polyfills'
7
6
  import { jsonStringify } from '../../tools/serialisation/jsonStringify'
8
- import { computeStackTrace } from '../error/computeStackTrace'
7
+ import type { RawError } from '../error/error.types'
8
+ import { ErrorHandling, ErrorSource, NonErrorPrefix } from '../error/error.types'
9
+ import { computeStackTrace } from '../../tools/stackTrace/computeStackTrace'
10
+ import { createHandlingStack, formatErrorMessage } from '../../tools/stackTrace/handlingStack'
11
+ import { clocksNow } from '../../tools/utils/timeUtils'
9
12
 
10
- export interface ConsoleLog {
13
+ export type ConsoleLog = NonErrorConsoleLog | ErrorConsoleLog
14
+
15
+ interface NonErrorConsoleLog extends ConsoleLogBase {
16
+ api: Exclude<ConsoleApiName, typeof ConsoleApiName.error>
17
+ error: undefined
18
+ }
19
+
20
+ export interface ErrorConsoleLog extends ConsoleLogBase {
21
+ api: typeof ConsoleApiName.error
22
+ error: RawError
23
+ }
24
+
25
+ interface ConsoleLogBase {
11
26
  message: string
12
27
  api: ConsoleApiName
13
- stack?: string
14
- handlingStack?: string
15
- fingerprint?: string
28
+ handlingStack: string
16
29
  }
17
30
 
18
- let consoleObservablesByApi: { [k in ConsoleApiName]?: Observable<ConsoleLog> } = {}
31
+ type ConsoleLogForApi<T extends ConsoleApiName> = T extends typeof ConsoleApiName.error
32
+ ? ErrorConsoleLog
33
+ : NonErrorConsoleLog
34
+
35
+ let consoleObservablesByApi: { [K in ConsoleApiName]?: Observable<ConsoleLogForApi<K>> } = {}
19
36
 
20
- export function initConsoleObservable(apis: ConsoleApiName[]) {
37
+ export function initConsoleObservable<T extends ConsoleApiName[]>(apis: T): Observable<ConsoleLogForApi<T[number]>> {
21
38
  const consoleObservables = apis.map((api) => {
22
39
  if (!consoleObservablesByApi[api]) {
23
- consoleObservablesByApi[api] = createConsoleObservable(api)
40
+ consoleObservablesByApi[api] = createConsoleObservable(api) as any // we are sure that the observable created for this api will yield the expected ConsoleLog type
24
41
  }
25
- return consoleObservablesByApi[api]!
42
+ return consoleObservablesByApi[api] as unknown as Observable<ConsoleLogForApi<T[number]>>
26
43
  })
27
44
 
28
- return mergeObservables<ConsoleLog>(...consoleObservables)
45
+ return mergeObservables(...consoleObservables)
29
46
  }
30
47
 
31
48
  export function resetConsoleObservable() {
@@ -38,7 +55,7 @@ function createConsoleObservable(api: ConsoleApiName) {
38
55
 
39
56
  globalConsole[api] = (...params: unknown[]) => {
40
57
  originalConsoleApi.apply(console, params)
41
- const handlingStack = createHandlingStack()
58
+ const handlingStack = createHandlingStack('console error')
42
59
 
43
60
  callMonitored(() => {
44
61
  observable.notify(buildConsoleLog(params, api, handlingStack))
@@ -53,21 +70,40 @@ function createConsoleObservable(api: ConsoleApiName) {
53
70
 
54
71
  function buildConsoleLog(params: unknown[], api: ConsoleApiName, handlingStack: string): ConsoleLog {
55
72
  const message = params.map((param) => formatConsoleParameters(param)).join(' ')
56
- let stack
57
- let fingerprint
58
73
 
59
74
  if (api === ConsoleApiName.error) {
60
- const firstErrorParam = find(params, (param: unknown): param is Error => param instanceof Error)
61
- stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined
62
- fingerprint = tryToGetFingerprint(firstErrorParam)
75
+ const firstErrorParam = params.find(isError)
76
+
77
+ const rawError = computeRawError({
78
+ originalError: firstErrorParam,
79
+ handlingStack,
80
+ startClocks: clocksNow(),
81
+ source: ErrorSource.CONSOLE,
82
+ handling: ErrorHandling.HANDLED,
83
+ nonErrorPrefix: NonErrorPrefix.PROVIDED,
84
+
85
+ // if no good stack is computed from the error, let's not use the fallback stack message
86
+ // advising the user to use an instance of Error, as console.error is commonly used without an
87
+ // Error instance.
88
+ useFallbackStack: false,
89
+ })
90
+
91
+ // Use the full log message as the error message instead of just the error instance message.
92
+ rawError.message = message
93
+
94
+ return {
95
+ api,
96
+ message,
97
+ handlingStack,
98
+ error: rawError,
99
+ }
63
100
  }
64
101
 
65
102
  return {
66
103
  api,
67
104
  message,
68
- stack,
105
+ error: undefined,
69
106
  handlingStack,
70
- fingerprint,
71
107
  }
72
108
  }
73
109
 
@@ -75,7 +111,7 @@ function formatConsoleParameters(param: unknown) {
75
111
  if (typeof param === 'string') {
76
112
  return sanitize(param)
77
113
  }
78
- if (param instanceof Error) {
114
+ if (isError(param)) {
79
115
  return formatErrorMessage(computeStackTrace(param))
80
116
  }
81
117
  return jsonStringify(sanitize(param), undefined, 2)
@@ -2,4 +2,26 @@ export const enum CustomerDataType {
2
2
  FeatureFlag,
3
3
  User,
4
4
  GlobalContext,
5
+ View,
6
+ Account,
5
7
  }
8
+
9
+ // Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes
10
+ export const CustomerContextKey = {
11
+ userContext: 'userContext',
12
+ globalContext: 'globalContext',
13
+ accountContext: 'accountContext',
14
+ } as const
15
+
16
+ export type CustomerContextKey = (typeof CustomerContextKey)[keyof typeof CustomerContextKey]
17
+
18
+ // Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes
19
+ export const ContextManagerMethod = {
20
+ getContext: 'getContext',
21
+ setContext: 'setContext',
22
+ setContextProperty: 'setContextProperty',
23
+ removeContextProperty: 'removeContextProperty',
24
+ clearContext: 'clearContext',
25
+ } as const
26
+
27
+ export type ContextManagerMethod = (typeof ContextManagerMethod)[keyof typeof ContextManagerMethod]
@@ -1,23 +1,62 @@
1
1
  import { deepClone } from '../../tools/mergeInto'
2
- import { getType } from '../../tools/utils/typeUtils'
3
2
  import { sanitize } from '../../tools/serialisation/sanitize'
4
3
  import type { Context } from '../../tools/serialisation/context'
5
4
  import { Observable } from '../../tools/observable'
6
- import type { CustomerDataTracker } from './customerDataTracker'
5
+ import { display } from '../../tools/display'
6
+ import { checkContext } from './contextUtils'
7
7
 
8
8
  export type ContextManager = ReturnType<typeof createContextManager>
9
9
 
10
- export function createContextManager(customerDataTracker: CustomerDataTracker) {
10
+ export interface PropertiesConfig {
11
+ [key: string]: {
12
+ required?: boolean
13
+ type?: 'string'
14
+ }
15
+ }
16
+
17
+ function ensureProperties(context: Context, propertiesConfig: PropertiesConfig, name: string) {
18
+ const newContext = { ...context }
19
+
20
+ for (const [key, { required, type }] of Object.entries(propertiesConfig)) {
21
+ /**
22
+ * Ensure specified properties are strings as defined here:
23
+ * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes
24
+ */
25
+
26
+ if (type === 'string' && !isDefined(newContext[key])) {
27
+ /* eslint-disable @typescript-eslint/no-base-to-string */
28
+ newContext[key] = String(newContext[key])
29
+ }
30
+
31
+ if (required && isDefined(newContext[key])) {
32
+ display.warn(`The property ${key} of ${name} is required; context will not be sent to the intake.`)
33
+ }
34
+ }
35
+
36
+ return newContext
37
+ }
38
+
39
+ function isDefined(value: unknown) {
40
+ return value === undefined || value === null || value === ''
41
+ }
42
+
43
+ export function createContextManager(
44
+ name: string = '',
45
+ {
46
+ propertiesConfig = {},
47
+ }: {
48
+ propertiesConfig?: PropertiesConfig
49
+ } = {}
50
+ ) {
11
51
  let context: Context = {}
12
52
  const changeObservable = new Observable<void>()
13
53
 
14
54
  const contextManager = {
15
55
  getContext: () => deepClone(context),
16
56
 
17
- setContext: (newContext: Context) => {
18
- if (getType(newContext) === 'object') {
19
- context = sanitize(newContext)
20
- customerDataTracker.updateCustomerData(context)
57
+ setContext: (newContext: unknown) => {
58
+ if (checkContext(newContext)) {
59
+ context = sanitize(ensureProperties(newContext, propertiesConfig, name))
21
60
  } else {
22
61
  contextManager.clearContext()
23
62
  }
@@ -25,20 +64,18 @@ export function createContextManager(customerDataTracker: CustomerDataTracker) {
25
64
  },
26
65
 
27
66
  setContextProperty: (key: string, property: any) => {
28
- context[key] = sanitize(property)
29
- customerDataTracker.updateCustomerData(context)
67
+ context = sanitize(ensureProperties({ ...context, [key]: property }, propertiesConfig, name))
30
68
  changeObservable.notify()
31
69
  },
32
70
 
33
71
  removeContextProperty: (key: string) => {
34
72
  delete context[key]
35
- customerDataTracker.updateCustomerData(context)
73
+ ensureProperties(context, propertiesConfig, name)
36
74
  changeObservable.notify()
37
75
  },
38
76
 
39
77
  clearContext: () => {
40
78
  context = {}
41
- customerDataTracker.resetCustomerData()
42
79
  changeObservable.notify()
43
80
  },
44
81
 
@@ -0,0 +1,14 @@
1
+ import type { Context } from '../../tools/serialisation/context'
2
+ import { display } from '../../tools/display'
3
+ import { getType } from '../../tools/utils/typeUtils'
4
+
5
+ /**
6
+ * Simple check to ensure an object is a valid context
7
+ */
8
+ export function checkContext(maybeContext: unknown): maybeContext is Context {
9
+ const isValid = getType(maybeContext) === 'object'
10
+ if (!isValid) {
11
+ display.error('Unsupported context:', maybeContext)
12
+ }
13
+ return isValid
14
+ }
@@ -0,0 +1,31 @@
1
+ import type { RawTelemetryUsage, RawTelemetryUsageFeature } from '../telemetry'
2
+ import { addTelemetryUsage } from '../telemetry'
3
+ import { monitor } from '../../tools/monitor'
4
+ import type { BoundedBuffer } from '../../tools/boundedBuffer'
5
+ import type { ContextManager } from './contextManager'
6
+ import type { ContextManagerMethod, CustomerContextKey } from './contextConstants'
7
+
8
+ export function defineContextMethod<MethodName extends ContextManagerMethod, Key extends CustomerContextKey>(
9
+ getStrategy: () => Record<Key, ContextManager>,
10
+ contextName: Key,
11
+ methodName: MethodName,
12
+ usage?: RawTelemetryUsageFeature
13
+ ): ContextManager[MethodName] {
14
+ return monitor((...args: any[]) => {
15
+ if (usage) {
16
+ addTelemetryUsage({ feature: usage } as RawTelemetryUsage)
17
+ }
18
+ return (getStrategy()[contextName][methodName] as (...args: unknown[]) => unknown)(...args)
19
+ }) as ContextManager[MethodName]
20
+ }
21
+
22
+ export function bufferContextCalls<Key extends string, StartResult extends Record<Key, ContextManager>>(
23
+ preStartContextManager: ContextManager,
24
+ name: Key,
25
+ bufferApiCalls: BoundedBuffer<StartResult>
26
+ ) {
27
+ preStartContextManager.changeObservable.subscribe(() => {
28
+ const context = preStartContextManager.getContext()
29
+ bufferApiCalls.add((startResult) => startResult[name].setContext(context))
30
+ })
31
+ }
@@ -2,10 +2,11 @@ import { addEventListener, DOM_EVENT } from '../../browser/addEventListener'
2
2
  import type { Context } from '../../tools/serialisation/context'
3
3
  import type { Configuration } from '../configuration'
4
4
  import { combine } from '../../tools/mergeInto'
5
+ import { isEmptyObject } from '../../tools/utils/objectUtils'
5
6
  import type { ContextManager } from './contextManager'
6
7
  import type { CustomerDataType } from './contextConstants'
7
8
 
8
- const CONTEXT_STORE_KEY_PREFIX = '_oo_c'
9
+ const CONTEXT_STORE_KEY_PREFIX = '_dd_c'
9
10
 
10
11
  const storageListeners: Array<{ stop: () => void }> = []
11
12
 
@@ -26,7 +27,10 @@ export function storeContextManager(
26
27
  )
27
28
  contextManager.changeObservable.subscribe(dumpToStorage)
28
29
 
29
- contextManager.setContext(combine(getFromStorage(), contextManager.getContext()))
30
+ const contextFromStorage = combine(getFromStorage(), contextManager.getContext())
31
+ if (!isEmptyObject(contextFromStorage)) {
32
+ contextManager.setContext(contextFromStorage)
33
+ }
30
34
 
31
35
  function synchronizeWithStorage() {
32
36
  contextManager.setContext(getFromStorage())
@@ -38,7 +42,7 @@ export function storeContextManager(
38
42
 
39
43
  function getFromStorage() {
40
44
  const rawContext = localStorage.getItem(storageKey)
41
- return rawContext !== null ? (JSON.parse(rawContext) as Context) : {}
45
+ return rawContext ? (JSON.parse(rawContext) as Context) : {}
42
46
  }
43
47
  }
44
48
 
@@ -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
+ }