@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
@@ -1,51 +1,37 @@
1
- import type { RetryInfo, FlushReason } from '../../transport'
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_AP1, 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 const ENDPOINTS = {
13
- logs: 'logs',
14
- rum: 'rum',
15
- sessionReplay: 'session-replay',
16
- } as const
17
-
18
- const INTAKE_TRACKS = {
19
- logs: 'logs',
20
- rum: 'rum',
21
- sessionReplay: 'replay',
22
- }
23
-
24
- export type EndpointType = keyof typeof ENDPOINTS
11
+ export type TrackType = 'logs' | 'rum' | 'replay' | 'profile' | 'exposures'
12
+ export type ApiType =
13
+ | 'fetch-keepalive'
14
+ | 'fetch'
15
+ | 'beacon'
16
+ // 'manual' reflects that the request have been sent manually, outside of the SDK (ex: via curl or
17
+ // a Node.js script).
18
+ | 'manual'
25
19
 
26
20
  export type EndpointBuilder = ReturnType<typeof createEndpointBuilder>
27
21
 
28
22
  export function createEndpointBuilder(
29
23
  initConfiguration: InitConfiguration,
30
- endpointType: EndpointType,
31
- configurationTags: string[]
24
+ trackType: TrackType,
25
+ extraParameters?: string[]
32
26
  ) {
33
- const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, endpointType)
27
+ const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType)
34
28
 
35
29
  return {
36
- build(api: 'xhr' | 'fetch' | 'beacon', flushReason?: FlushReason, retry?: RetryInfo) {
37
- const parameters = buildEndpointParameters(
38
- initConfiguration,
39
- endpointType,
40
- configurationTags,
41
- api,
42
- flushReason,
43
- retry
44
- )
30
+ build(api: ApiType, payload: Payload) {
31
+ const parameters = buildEndpointParameters(initConfiguration, trackType, api, payload, extraParameters)
45
32
  return buildUrlWithParameters(parameters)
46
33
  },
47
- urlPrefix: buildUrlWithParameters(''),
48
- endpointType,
34
+ trackType,
49
35
  }
50
36
  }
51
37
 
@@ -56,32 +42,27 @@ export function createEndpointBuilder(
56
42
  */
57
43
  function createEndpointUrlWithParametersBuilder(
58
44
  initConfiguration: InitConfiguration,
59
- endpointType: EndpointType
45
+ trackType: TrackType
60
46
  ): (parameters: string) => string {
61
47
  const { proxy, proxyUrl, apiVersion, organizationIdentifier, insecureHTTP } = initConfiguration
62
48
 
63
- const path = `/rum/${apiVersion}/${organizationIdentifier}/${INTAKE_TRACKS[endpointType]}`
49
+ const path = `/rum/${apiVersion}/${organizationIdentifier}/${INTAKE_TRACKS[trackType]}`
64
50
 
65
51
  if (proxy) {
66
52
  const normalizedProxyUrl = normalizeUrl(proxy)
67
53
  return (parameters) => `${normalizedProxyUrl}?ooforward=${encodeURIComponent(`${path}?${parameters}`)}`
68
54
  }
69
-
70
- const host = buildEndpointHost(initConfiguration, endpointType)
71
-
72
- if (proxy === undefined && proxyUrl) {
73
- // TODO: remove this in a future major.
74
- const normalizedProxyUrl = normalizeUrl(proxyUrl)
75
- return (parameters) =>
76
- `${normalizedProxyUrl}?ooforward=${encodeURIComponent(`https://${host}${path}?${parameters}`)}`
55
+ if (typeof proxy === 'function') {
56
+ return (parameters) => proxy({ path, parameters })
77
57
  }
78
-
79
- const protocol = insecureHTTP ? 'http' : 'https'
80
-
81
- return (parameters) => `${protocol}://${host}${path}?${parameters}`
58
+ const host = buildEndpointHost(trackType, initConfiguration)
59
+ return (parameters) => `https://${host}${path}?${parameters}`
82
60
  }
83
61
 
84
- function buildEndpointHost(initConfiguration: InitConfiguration, endpointType: EndpointType) {
62
+ export function buildEndpointHost(
63
+ trackType: TrackType,
64
+ initConfiguration: InitConfiguration & { usePciIntake?: boolean }
65
+ ) {
85
66
  const { site = INTAKE_SITE_US1, internalAnalyticsSubdomain } = initConfiguration
86
67
 
87
68
  return site
@@ -89,10 +70,13 @@ function buildEndpointHost(initConfiguration: InitConfiguration, endpointType: E
89
70
  return `${internalAnalyticsSubdomain}.${INTAKE_SITE_US1}`
90
71
  }
91
72
 
73
+ if (site === INTAKE_SITE_FED_STAGING) {
74
+ return `http-intake.logs.${site}`
75
+ }
76
+
92
77
  const domainParts = site.split('.')
93
78
  const extension = domainParts.pop()
94
- const subdomain = site !== INTAKE_SITE_AP1 ? `${ENDPOINTS[endpointType]}.` : ''
95
- return `${subdomain}browser-intake-${domainParts.join('-')}.${extension!}`
79
+ return `browser-intake-${domainParts.join('-')}.${extension!}`
96
80
  }
97
81
 
98
82
  /**
@@ -100,32 +84,32 @@ function buildEndpointHost(initConfiguration: InitConfiguration, endpointType: E
100
84
  * request, as they change randomly.
101
85
  */
102
86
  function buildEndpointParameters(
103
- { clientToken, internalAnalyticsSubdomain }: InitConfiguration,
104
- endpointType: EndpointType,
105
- configurationTags: string[],
106
- api: 'xhr' | 'fetch' | 'beacon',
107
- flushReason: FlushReason | undefined,
108
- retry: RetryInfo | undefined
87
+ { clientToken, internalAnalyticsSubdomain, source = 'browser' }: InitConfiguration,
88
+ trackType: TrackType,
89
+ api: ApiType,
90
+ { retry, encoding }: Payload,
91
+ extraParameters: string[] = []
109
92
  ) {
110
- const tags = [`sdk_version:${__BUILD_ENV__SDK_VERSION__}`, `api:${api}`].concat(configurationTags)
111
- if (flushReason && isExperimentalFeatureEnabled(ExperimentalFeature.COLLECT_FLUSH_REASON)) {
112
- tags.push(`flush_reason:${flushReason}`)
113
- }
114
- if (retry) {
115
- tags.push(`retry_count:${retry.count}`, `retry_after:${retry.lastFailureStatus}`)
116
- }
117
93
  const parameters = [
118
94
  'o2source=browser',
119
- `o2tags=${encodeURIComponent(tags.join(','))}`,
120
95
  `o2-api-key=${clientToken}`,
121
96
  `o2-evp-origin-version=${encodeURIComponent(__BUILD_ENV__SDK_VERSION__)}`,
122
97
  'o2-evp-origin=browser',
123
98
  `o2-request-id=${generateUUID()}`,
124
- ]
99
+ ].concat(extraParameters)
125
100
 
126
- if (endpointType === 'rum') {
127
- parameters.push(`batch_time=${timeStampNow()}`)
101
+ if (encoding) {
102
+ parameters.push(`dd-evp-encoding=${encoding}`)
128
103
  }
104
+
105
+ if (trackType === 'rum') {
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
+ }
111
+ }
112
+
129
113
  if (internalAnalyticsSubdomain) {
130
114
  parameters.reverse()
131
115
  }
@@ -1,9 +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, EndpointType } from './endpointBuilder'
9
- export * from './intakeSites'
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, 'sessionReplay', 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
  }
@@ -0,0 +1,31 @@
1
+ import { globalObject } from '../../tools/globalObject'
2
+
3
+ export type NetworkInterface = 'bluetooth' | 'cellular' | 'ethernet' | 'none' | 'wifi' | 'wimax' | 'other' | 'unknown'
4
+ export type EffectiveType = 'slow-2g' | '2g' | '3g' | '4g'
5
+
6
+ interface BrowserNavigator extends Navigator {
7
+ connection?: NetworkInformation
8
+ }
9
+
10
+ export interface NetworkInformation {
11
+ type?: NetworkInterface
12
+ effectiveType?: EffectiveType
13
+ saveData: boolean
14
+ }
15
+
16
+ export interface Connectivity {
17
+ status: 'connected' | 'not_connected'
18
+ interfaces?: NetworkInterface[]
19
+ effective_type?: EffectiveType
20
+ [key: string]: unknown
21
+ }
22
+
23
+ export function getConnectivity(): Connectivity {
24
+ const navigator = globalObject.navigator as BrowserNavigator
25
+
26
+ return {
27
+ status: navigator.onLine ? 'connected' : 'not_connected',
28
+ interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,
29
+ effective_type: navigator.connection?.effectiveType,
30
+ }
31
+ }
@@ -0,0 +1 @@
1
+ export * from './connectivity'
@@ -1,31 +1,48 @@
1
- import { computeStackTrace } from '../tracekit'
2
- import { createHandlingStack, formatErrorMessage, toStackTraceString, tryToGetFingerprint } from '../error/error'
1
+ import { isError, computeRawError } from '../error/error'
3
2
  import { mergeObservables, Observable } from '../../tools/observable'
4
3
  import { ConsoleApiName, globalConsole } from '../../tools/display'
5
4
  import { callMonitored } from '../../tools/monitor'
6
5
  import { sanitize } from '../../tools/serialisation/sanitize'
7
- import { find } from '../../tools/utils/polyfills'
8
6
  import { jsonStringify } from '../../tools/serialisation/jsonStringify'
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() {
@@ -33,12 +50,12 @@ export function resetConsoleObservable() {
33
50
  }
34
51
 
35
52
  function createConsoleObservable(api: ConsoleApiName) {
36
- const observable = new Observable<ConsoleLog>(() => {
53
+ return new Observable<ConsoleLog>((observable) => {
37
54
  const originalConsoleApi = globalConsole[api]
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))
@@ -49,29 +66,44 @@ function createConsoleObservable(api: ConsoleApiName) {
49
66
  globalConsole[api] = originalConsoleApi
50
67
  }
51
68
  })
52
-
53
- return observable
54
69
  }
55
70
 
56
71
  function buildConsoleLog(params: unknown[], api: ConsoleApiName, handlingStack: string): ConsoleLog {
57
- // Todo: remove console error prefix in the next major version
58
- let message = params.map((param) => formatConsoleParameters(param)).join(' ')
59
- let stack
60
- let fingerprint
72
+ const message = params.map((param) => formatConsoleParameters(param)).join(' ')
61
73
 
62
74
  if (api === ConsoleApiName.error) {
63
- const firstErrorParam = find(params, (param: unknown): param is Error => param instanceof Error)
64
- stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined
65
- fingerprint = tryToGetFingerprint(firstErrorParam)
66
- message = `console error: ${message}`
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
+ }
67
100
  }
68
101
 
69
102
  return {
70
103
  api,
71
104
  message,
72
- stack,
105
+ error: undefined,
73
106
  handlingStack,
74
- fingerprint,
75
107
  }
76
108
  }
77
109
 
@@ -79,7 +111,7 @@ function formatConsoleParameters(param: unknown) {
79
111
  if (typeof param === 'string') {
80
112
  return sanitize(param)
81
113
  }
82
- if (param instanceof Error) {
114
+ if (isError(param)) {
83
115
  return formatErrorMessage(computeStackTrace(param))
84
116
  }
85
117
  return jsonStringify(sanitize(param), undefined, 2)
@@ -0,0 +1,27 @@
1
+ export const enum CustomerDataType {
2
+ FeatureFlag,
3
+ User,
4
+ GlobalContext,
5
+ View,
6
+ Account,
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]
@@ -0,0 +1,85 @@
1
+ import { deepClone } from '../../tools/mergeInto'
2
+ import { sanitize } from '../../tools/serialisation/sanitize'
3
+ import type { Context } from '../../tools/serialisation/context'
4
+ import { Observable } from '../../tools/observable'
5
+ import { display } from '../../tools/display'
6
+ import { checkContext } from './contextUtils'
7
+
8
+ export type ContextManager = ReturnType<typeof createContextManager>
9
+
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
+ ) {
51
+ let context: Context = {}
52
+ const changeObservable = new Observable<void>()
53
+
54
+ const contextManager = {
55
+ getContext: () => deepClone(context),
56
+
57
+ setContext: (newContext: unknown) => {
58
+ if (checkContext(newContext)) {
59
+ context = sanitize(ensureProperties(newContext, propertiesConfig, name))
60
+ } else {
61
+ contextManager.clearContext()
62
+ }
63
+ changeObservable.notify()
64
+ },
65
+
66
+ setContextProperty: (key: string, property: any) => {
67
+ context = sanitize(ensureProperties({ ...context, [key]: property }, propertiesConfig, name))
68
+ changeObservable.notify()
69
+ },
70
+
71
+ removeContextProperty: (key: string) => {
72
+ delete context[key]
73
+ ensureProperties(context, propertiesConfig, name)
74
+ changeObservable.notify()
75
+ },
76
+
77
+ clearContext: () => {
78
+ context = {}
79
+ changeObservable.notify()
80
+ },
81
+
82
+ changeObservable,
83
+ }
84
+ return contextManager
85
+ }
@@ -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
+ }