@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
@@ -0,0 +1,30 @@
1
+ import { display } from '../tools/display'
2
+ import { matchList } from '../tools/matchOption'
3
+ import type { InitConfiguration } from './configuration'
4
+ import { isUnsupportedExtensionEnvironment } from './extension/extensionUtils'
5
+
6
+ export const ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN =
7
+ 'Running the Browser SDK in a Web extension content script is forbidden unless the `allowedTrackingOrigins` option is provided.'
8
+ export const ERROR_NOT_ALLOWED_TRACKING_ORIGIN = 'SDK initialized on a non-allowed domain.'
9
+
10
+ export function isAllowedTrackingOrigins(
11
+ configuration: InitConfiguration,
12
+ errorStack: string,
13
+ windowOrigin = typeof location !== 'undefined' ? location.origin : ''
14
+ ): boolean {
15
+ const allowedTrackingOrigins = configuration.allowedTrackingOrigins
16
+ if (!allowedTrackingOrigins) {
17
+ if (isUnsupportedExtensionEnvironment(windowOrigin, errorStack)) {
18
+ display.error(ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN)
19
+
20
+ return false
21
+ }
22
+ return true
23
+ }
24
+
25
+ const isAllowed = matchList(allowedTrackingOrigins, windowOrigin)
26
+ if (!isAllowed) {
27
+ display.error(ERROR_NOT_ALLOWED_TRACKING_ORIGIN)
28
+ }
29
+ return isAllowed
30
+ }
@@ -0,0 +1,32 @@
1
+ import { BufferedObservable } from '../tools/observable'
2
+ import type { RawError } from './error/error.types'
3
+ import { trackRuntimeError } from './error/trackRuntimeError'
4
+
5
+ const BUFFER_LIMIT = 500
6
+
7
+ export const enum BufferedDataType {
8
+ RUNTIME_ERROR,
9
+ }
10
+
11
+ export interface BufferedData {
12
+ type: BufferedDataType.RUNTIME_ERROR
13
+ error: RawError
14
+ }
15
+
16
+ export function startBufferingData(trackRuntimeErrorImpl = trackRuntimeError) {
17
+ const observable = new BufferedObservable<BufferedData>(BUFFER_LIMIT)
18
+
19
+ const runtimeErrorSubscription = trackRuntimeErrorImpl().subscribe((error) => {
20
+ observable.notify({
21
+ type: BufferedDataType.RUNTIME_ERROR,
22
+ error,
23
+ })
24
+ })
25
+
26
+ return {
27
+ observable,
28
+ stop: () => {
29
+ runtimeErrorSubscription.unsubscribe()
30
+ },
31
+ }
32
+ }
@@ -1,66 +1,297 @@
1
1
  import { catchUserErrors } from '../../tools/catchUserErrors'
2
- import { display } from '../../tools/display'
2
+ import { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display'
3
3
  import type { RawTelemetryConfiguration } from '../telemetry'
4
- import { ExperimentalFeature, addExperimentalFeatures } from '../../tools/experimentalFeatures'
5
- import type { Duration } from '../../tools/utils/timeUtils'
6
- import { ONE_SECOND } from '../../tools/utils/timeUtils'
7
4
  import { isPercentage } from '../../tools/utils/numberUtils'
8
- import { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils'
9
5
  import { objectHasValue } from '../../tools/utils/objectUtils'
10
- import { assign } from '../../tools/utils/polyfills'
11
6
  import { selectSessionStoreStrategyType } from '../session/sessionStore'
12
7
  import type { SessionStoreStrategyType } from '../session/storeStrategies/sessionStoreStrategy'
8
+ import { TrackingConsent } from '../trackingConsent'
9
+ import type { SessionPersistence } from '../session/sessionConstants'
10
+ import type { MatchOption } from '../../tools/matchOption'
11
+ import { isAllowedTrackingOrigins } from '../allowedTrackingOrigins'
12
+ import type { Site } from '../intakeSites'
13
+ import { isWorkerEnvironment } from '../../tools/globalObject'
13
14
  import type { TransportConfiguration } from './transportConfiguration'
14
15
  import { computeTransportConfiguration } from './transportConfiguration'
15
16
 
17
+ /**
18
+ * Default privacy level for the browser SDK.
19
+ *
20
+ * [Replay Privacy Options](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser/privacy_options) for further information.
21
+ */
16
22
  export const DefaultPrivacyLevel = {
17
23
  ALLOW: 'allow',
18
24
  MASK: 'mask',
19
25
  MASK_USER_INPUT: 'mask-user-input',
26
+ MASK_UNLESS_ALLOWLISTED: 'mask-unless-allowlisted',
20
27
  } as const
21
28
  export type DefaultPrivacyLevel = (typeof DefaultPrivacyLevel)[keyof typeof DefaultPrivacyLevel]
22
29
 
30
+ /**
31
+ * Trace context injection option.
32
+ *
33
+ * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.
34
+ */
35
+ export const TraceContextInjection = {
36
+ ALL: 'all',
37
+ SAMPLED: 'sampled',
38
+ } as const
39
+
40
+ /**
41
+ * Trace context injection option.
42
+ *
43
+ * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.
44
+ *
45
+ */
46
+ export type TraceContextInjection = (typeof TraceContextInjection)[keyof typeof TraceContextInjection]
47
+
23
48
  export interface InitConfiguration {
24
- // global options
49
+ /**
50
+ * The client token for Datadog. Required for authenticating your application with Datadog.
51
+ *
52
+ * @category Authentication
53
+ */
25
54
  clientToken: string
55
+
56
+ /**
57
+ * A callback function that can be used to modify events before they are sent to Datadog.
58
+ *
59
+ * @category Data Collection
60
+ */
26
61
  beforeSend?: GenericBeforeSendCallback | undefined
62
+
63
+ /**
64
+ * The percentage of sessions tracked. A value between 0 and 100.
65
+ *
66
+ * @category Data Collection
67
+ * @defaultValue 100
68
+ */
27
69
  sessionSampleRate?: number | undefined
70
+
71
+ /**
72
+ * The percentage of telemetry events sent. A value between 0 and 100.
73
+ *
74
+ * @category Data Collection
75
+ * @defaultValue 20
76
+ */
28
77
  telemetrySampleRate?: number | undefined
78
+
79
+ /**
80
+ * Initialization fails silently if the RUM Browser SDK is already initialized on the page.
81
+ *
82
+ * @defaultValue false
83
+ */
29
84
  silentMultipleInit?: boolean | undefined
85
+
86
+ /**
87
+ * Which storage strategy to use for persisting sessions. Can be either 'cookie' or 'local-storage'.
88
+ *
89
+ * Important: If you are using the RUM and Logs Browser SDKs, this option must be configured with identical values
90
+ *
91
+ * @category Session Persistence
92
+ * @defaultValue "cookie"
93
+ */
94
+ sessionPersistence?: SessionPersistence | undefined
95
+
96
+ /**
97
+ * Allows the use of localStorage when cookies cannot be set. This enables the RUM Browser SDK to run in environments that do not provide cookie support.
98
+ *
99
+ * Important: If you are using the RUM and Logs Browser SDKs, this option must be configured with identical values
100
+ * See [Monitor Electron Applications Using the Browser SDK](https://docs.datadoghq.com/real_user_monitoring/guide/monitor-electron-applications-using-browser-sdk) for further information.
101
+ *
102
+ * @category Session Persistence
103
+ * @deprecated use `sessionPersistence: local-storage` where you want to use localStorage instead
104
+ */
30
105
  allowFallbackToLocalStorage?: boolean | undefined
106
+
107
+ /**
108
+ * Allow listening to DOM events dispatched programmatically ([untrusted events](https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted)). Enabling this option can be useful if you heavily rely on programmatic events, such as in an automated UI test environment.
109
+ *
110
+ * @defaultValue false
111
+ */
31
112
  allowUntrustedEvents?: boolean | undefined
113
+
114
+ /**
115
+ * Store global context and user context in localStorage to preserve them along the user navigation.
116
+ * See [Contexts life cycle](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#contexts-life-cycle) for further information.
117
+ *
118
+ * @defaultValue false
119
+ */
32
120
  storeContextsAcrossPages?: boolean | undefined
33
121
 
122
+ /**
123
+ * Set the initial user tracking consent state.
124
+ * See [User tracking consent](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#user-tracking-consent) for further information.
125
+ *
126
+ * @category Privacy
127
+ * @defaultValue granted
128
+ */
129
+ trackingConsent?: TrackingConsent | undefined
130
+
131
+ /**
132
+ * List of origins where the SDK is allowed to run when used in a browser extension context.
133
+ * Matches urls against the extensions origin.
134
+ * If not provided and the SDK is running in a browser extension, the SDK will not run.
135
+ */
136
+ allowedTrackingOrigins?: MatchOption[] | undefined
137
+
34
138
  // transport options
139
+ /**
140
+ * Optional proxy URL, for example: https://www.proxy.com/path.
141
+ * See [Proxy Your Browser RUM Data](https://docs.datadoghq.com/real_user_monitoring/guide/proxy-rum-data) for further information.
142
+ *
143
+ * @category Transport
144
+ */
35
145
  proxy?: string | ProxyFn | undefined
36
- site?: string | undefined
146
+
147
+ /**
148
+ * The Datadog [site](https://docs.datadoghq.com/getting_started/site) parameter of your organization.
149
+ *
150
+ * @category Transport
151
+ * @defaultValue datadoghq.com
152
+ */
153
+ site?: Site | undefined
37
154
 
38
155
  // tag and context options
39
- service: string | undefined
40
- env: string | undefined
41
- version: string | undefined
156
+ /**
157
+ * The service name for your application. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).
158
+ *
159
+ * @category Data Collection
160
+ */
161
+ service?: string | undefined | null
162
+
163
+ /**
164
+ * The application’s environment, for example: prod, pre-prod, and staging. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).
165
+ *
166
+ * @category Data Collection
167
+ */
168
+ env?: string | undefined | null
169
+
170
+ /**
171
+ * The application’s version, for example: 1.2.3, 6c44da20, and 2020.02.13. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).
172
+ *
173
+ * @category Data Collection
174
+ */
175
+ version?: string | undefined | null
42
176
 
43
177
  // cookie options
44
178
  /**
45
- * @deprecated use usePartitionedCrossSiteSessionCookie instead
179
+ * Use a partitioned secure cross-site session cookie. This allows the RUM Browser SDK to run when the site is loaded from another one (iframe). Implies `useSecureSessionCookie`.
180
+ *
181
+ * Important: If you are using the RUM and Logs Browser SDKs, this option must be configured with identical values
182
+ *
183
+ * @category Session Persistence
184
+ * @defaultValue false
46
185
  */
47
- useCrossSiteSessionCookie?: boolean | undefined
48
186
  usePartitionedCrossSiteSessionCookie?: boolean | undefined
187
+
188
+ /**
189
+ * Use a secure session cookie. This disables RUM events sent on insecure (non-HTTPS) connections.
190
+ *
191
+ * Important: If you are using the RUM and Logs Browser SDKs, this option must be configured with identical values
192
+ *
193
+ * @category Session Persistence
194
+ * @defaultValue false
195
+ */
49
196
  useSecureSessionCookie?: boolean | undefined
197
+
198
+ /**
199
+ * Preserve the session across subdomains for the same site.
200
+ *
201
+ * Important: If you are using the RUM and Logs Browser SDKs, this option must be configured with identical values
202
+ *
203
+ * @category Session Persistence
204
+ * @defaultValue false
205
+ */
50
206
  trackSessionAcrossSubdomains?: boolean | undefined
51
207
 
208
+ /**
209
+ * Track anonymous user for the same site and extend cookie expiration date
210
+ *
211
+ * @category Data Collection
212
+ * @defaultValue true
213
+ */
214
+ trackAnonymousUser?: boolean | undefined
215
+
216
+ /**
217
+ * Encode cookie options in the cookie value. This can be used as a mitigation for microssession issues.
218
+ * ⚠️ This is a beta feature and may be changed or removed in the future.
219
+ *
220
+ * @category Beta
221
+ * @defaultValue false
222
+ */
223
+ betaEncodeCookieOptions?: boolean | undefined
224
+
52
225
  // internal options
226
+ /**
227
+ * [Internal option] Enable experimental features
228
+ *
229
+ * @internal
230
+ */
53
231
  enableExperimentalFeatures?: string[] | undefined
232
+
233
+ /**
234
+ * [Internal option] Configure the dual shipping to another datacenter
235
+ *
236
+ * @internal
237
+ */
54
238
  replica?: ReplicaUserConfiguration | undefined
239
+
240
+ /**
241
+ * [Internal option] Set the datacenter from where the data is dual shipped
242
+ *
243
+ * @internal
244
+ */
55
245
  datacenter?: string
246
+
247
+ /**
248
+ * [Internal option] Datadog internal analytics subdomain
249
+ *
250
+ * @internal
251
+ */
56
252
  // TODO next major: remove this option and replace usages by proxyFn
57
253
  internalAnalyticsSubdomain?: string
58
254
 
255
+ /**
256
+ * [Internal option] The percentage of telemetry configuration sent. A value between 0 and 100.
257
+ *
258
+ * @internal
259
+ * @defaultValue 5
260
+ */
59
261
  telemetryConfigurationSampleRate?: number
60
262
 
263
+ /**
264
+ * [Internal option] The percentage of telemetry usage sent. A value between 0 and 100.
265
+ *
266
+ * @internal
267
+ * @defaultValue 5
268
+ */
269
+ telemetryUsageSampleRate?: number
270
+
271
+ /**
272
+ * [Internal option] Additional configuration for the SDK.
273
+ *
274
+ * @internal
275
+ */
276
+ source?: 'browser' | 'flutter' | 'unity' | undefined
277
+
278
+ /**
279
+ * [Internal option] Additional configuration for the SDK.
280
+ *
281
+ * @internal
282
+ */
283
+ sdkVersion?: string | undefined
284
+
285
+ /**
286
+ * [Internal option] Additional configuration for the SDK.
287
+ *
288
+ * @internal
289
+ */
290
+ variant?: string | undefined
291
+
61
292
  apiVersion: string
62
293
  organizationIdentifier: string
63
- insecureHTTP: boolean
294
+ insecureHTTP: boolean | undefined
64
295
  }
65
296
 
66
297
  // This type is only used to build the core configuration. Logs and RUM SDKs are using a proper type
@@ -71,9 +302,12 @@ type GenericBeforeSendCallback = (event: any, context?: any) => unknown
71
302
  * path: /api/vX/product
72
303
  * parameters: xxx=yyy&zzz=aaa
73
304
  */
74
- type ProxyFn = (options: { path: string; parameters: string }) => string
305
+ export type ProxyFn = (options: { path: string; parameters: string }) => string
75
306
 
76
- interface ReplicaUserConfiguration {
307
+ /**
308
+ * @internal
309
+ */
310
+ export interface ReplicaUserConfiguration {
77
311
  applicationId?: string
78
312
  clientToken: string
79
313
  }
@@ -85,109 +319,144 @@ export interface Configuration extends TransportConfiguration {
85
319
  sessionSampleRate: number
86
320
  telemetrySampleRate: number
87
321
  telemetryConfigurationSampleRate: number
88
- service: string | undefined
322
+ telemetryUsageSampleRate: number
323
+ service?: string | undefined
324
+ version?: string | undefined
325
+ env?: string | undefined
89
326
  silentMultipleInit: boolean
90
327
  allowUntrustedEvents: boolean
328
+ trackingConsent: TrackingConsent
329
+ storeContextsAcrossPages: boolean
330
+ trackAnonymousUser?: boolean
331
+ betaEncodeCookieOptions: boolean
332
+
333
+ // internal
334
+ sdkVersion: string | undefined
335
+ source: 'browser' | 'flutter' | 'unity'
336
+ variant: string | undefined
337
+ apiVersion: string
338
+ organizationIdentifier: string
339
+ insecureHTTP: boolean | undefined
340
+ }
341
+
342
+ function isString(tag: unknown, tagName: string): tag is string | undefined | null {
343
+ if (tag !== undefined && tag !== null && typeof tag !== 'string') {
344
+ display.error(`${tagName} must be defined as a string`)
345
+ return false
346
+ }
347
+ return true
348
+ }
91
349
 
92
- // Event limits
93
- eventRateLimiterThreshold: number // Limit the maximum number of actions, errors and logs per minutes
94
- maxTelemetryEventsPerPage: number
350
+ function isDatadogSite(site: unknown) {
351
+ if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {
352
+ display.error(`Site should be a valid Datadog site. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/site/.`)
353
+ return false
354
+ }
355
+ return true
356
+ }
95
357
 
96
- // Batch configuration
97
- batchBytesLimit: number
98
- flushTimeout: Duration
99
- batchMessagesLimit: number
100
- messageBytesLimit: number
358
+ export function isSampleRate(sampleRate: unknown, name: string) {
359
+ if (sampleRate !== undefined && !isPercentage(sampleRate)) {
360
+ display.error(`${name} Sample Rate should be a number between 0 and 100`)
361
+ return false
362
+ }
363
+ return true
101
364
  }
102
365
 
103
- export function validateAndBuildConfiguration(initConfiguration: InitConfiguration): Configuration | undefined {
366
+ export function validateAndBuildConfiguration(
367
+ initConfiguration: InitConfiguration,
368
+ errorStack?: string
369
+ ): Configuration | undefined {
104
370
  if (!initConfiguration || !initConfiguration.clientToken) {
105
371
  display.error('Client Token is not configured, we will not send any data.')
106
372
  return
107
373
  }
108
374
 
109
- if (initConfiguration.sessionSampleRate !== undefined && !isPercentage(initConfiguration.sessionSampleRate)) {
110
- display.error('Session Sample Rate should be a number between 0 and 100')
375
+ if (
376
+ initConfiguration.allowedTrackingOrigins !== undefined &&
377
+ !Array.isArray(initConfiguration.allowedTrackingOrigins)
378
+ ) {
379
+ display.error('Allowed Tracking Origins must be an array')
111
380
  return
112
381
  }
113
382
 
114
- if (initConfiguration.telemetrySampleRate !== undefined && !isPercentage(initConfiguration.telemetrySampleRate)) {
115
- display.error('Telemetry Sample Rate should be a number between 0 and 100')
383
+ if (
384
+ !isDatadogSite(initConfiguration.site) ||
385
+ !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||
386
+ !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||
387
+ !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||
388
+ !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||
389
+ !isString(initConfiguration.version, 'Version') ||
390
+ !isString(initConfiguration.env, 'Env') ||
391
+ !isString(initConfiguration.service, 'Service') ||
392
+ !isAllowedTrackingOrigins(initConfiguration, errorStack ?? '')
393
+ ) {
116
394
  return
117
395
  }
118
396
 
119
397
  if (
120
- initConfiguration.telemetryConfigurationSampleRate !== undefined &&
121
- !isPercentage(initConfiguration.telemetryConfigurationSampleRate)
398
+ initConfiguration.trackingConsent !== undefined &&
399
+ !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)
122
400
  ) {
123
- display.error('Telemetry Configuration Sample Rate should be a number between 0 and 100')
401
+ display.error('Tracking Consent should be either "granted" or "not-granted"')
124
402
  return
125
403
  }
126
404
 
127
- // Set the experimental feature flags as early as possible, so we can use them in most places
128
- if (Array.isArray(initConfiguration.enableExperimentalFeatures)) {
129
- addExperimentalFeatures(
130
- initConfiguration.enableExperimentalFeatures.filter((flag): flag is ExperimentalFeature =>
131
- objectHasValue(ExperimentalFeature, flag)
132
- )
133
- )
134
- }
405
+ return {
406
+ beforeSend:
407
+ initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),
408
+ sessionStoreStrategyType: isWorkerEnvironment ? undefined : selectSessionStoreStrategyType(initConfiguration),
409
+ sessionSampleRate: initConfiguration.sessionSampleRate ?? 100,
410
+ telemetrySampleRate: initConfiguration.telemetrySampleRate ?? 20,
411
+ telemetryConfigurationSampleRate: initConfiguration.telemetryConfigurationSampleRate ?? 5,
412
+ telemetryUsageSampleRate: initConfiguration.telemetryUsageSampleRate ?? 5,
413
+ service: initConfiguration.service ?? undefined,
414
+ env: initConfiguration.env ?? undefined,
415
+ version: initConfiguration.version ?? undefined,
416
+ datacenter: initConfiguration.datacenter ?? undefined,
417
+ silentMultipleInit: !!initConfiguration.silentMultipleInit,
418
+ allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,
419
+ trackingConsent: initConfiguration.trackingConsent ?? TrackingConsent.GRANTED,
420
+ trackAnonymousUser: initConfiguration.trackAnonymousUser ?? true,
421
+ storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,
422
+ betaEncodeCookieOptions: !!initConfiguration.betaEncodeCookieOptions,
423
+
424
+ /**
425
+ * The source of the SDK, used for support plugins purposes.
426
+ */
427
+ variant: initConfiguration.variant,
428
+ sdkVersion: initConfiguration.sdkVersion,
135
429
 
136
- return assign(
137
- {
138
- beforeSend:
139
- initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),
140
- sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),
141
- sessionSampleRate: initConfiguration.sessionSampleRate ?? 100,
142
- telemetrySampleRate: initConfiguration.telemetrySampleRate ?? 20,
143
- telemetryConfigurationSampleRate: initConfiguration.telemetryConfigurationSampleRate ?? 5,
144
- service: initConfiguration.service,
145
- silentMultipleInit: !!initConfiguration.silentMultipleInit,
146
- allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,
147
-
148
- /**
149
- * beacon payload max queue size implementation is 64kb
150
- * ensure that we leave room for logs, rum and potential other users
151
- */
152
- batchBytesLimit: 16 * ONE_KIBI_BYTE,
153
-
154
- eventRateLimiterThreshold: 3000,
155
- maxTelemetryEventsPerPage: 15,
156
-
157
- /**
158
- * flush automatically, aim to be lower than ALB connection timeout
159
- * to maximize connection reuse.
160
- */
161
- flushTimeout: (30 * ONE_SECOND) as Duration,
162
-
163
- /**
164
- * Logs intake limit
165
- */
166
- batchMessagesLimit: 50,
167
- messageBytesLimit: 256 * ONE_KIBI_BYTE,
168
-
169
- apiVersion: initConfiguration.apiVersion ?? 'v1',
170
- organizationIdentifier: initConfiguration.organizationIdentifier,
171
- insecureHTTP: initConfiguration.insecureHTTP,
172
- },
173
- computeTransportConfiguration(initConfiguration)
174
- )
430
+ apiVersion: initConfiguration.apiVersion ?? 'v1',
431
+ organizationIdentifier: initConfiguration.organizationIdentifier,
432
+ insecureHTTP: initConfiguration.insecureHTTP,
433
+
434
+ ...computeTransportConfiguration(initConfiguration),
435
+ }
175
436
  }
176
437
 
177
- export function serializeConfiguration(initConfiguration: InitConfiguration): Partial<RawTelemetryConfiguration> {
438
+ export function serializeConfiguration(initConfiguration: InitConfiguration) {
178
439
  return {
179
440
  session_sample_rate: initConfiguration.sessionSampleRate,
180
441
  telemetry_sample_rate: initConfiguration.telemetrySampleRate,
181
442
  telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,
443
+ telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,
182
444
  use_before_send: !!initConfiguration.beforeSend,
183
- use_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,
184
445
  use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,
185
446
  use_secure_session_cookie: initConfiguration.useSecureSessionCookie,
186
447
  use_proxy: !!initConfiguration.proxy,
187
448
  silent_multiple_init: initConfiguration.silentMultipleInit,
188
449
  track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,
450
+ track_anonymous_user: initConfiguration.trackAnonymousUser,
451
+ session_persistence: initConfiguration.sessionPersistence,
189
452
  allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,
190
453
  store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,
191
454
  allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,
192
- }
455
+ tracking_consent: initConfiguration.trackingConsent,
456
+ use_allowed_tracking_origins: Array.isArray(initConfiguration.allowedTrackingOrigins),
457
+ beta_encode_cookie_options: initConfiguration.betaEncodeCookieOptions,
458
+ source: initConfiguration.source,
459
+ sdk_version: initConfiguration.sdkVersion,
460
+ variant: initConfiguration.variant,
461
+ } satisfies RawTelemetryConfiguration
193
462
  }