@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,48 +1,6 @@
1
- export function includes(candidate: string, search: string): boolean
2
- export function includes<T>(candidate: T[], search: T): boolean
3
- export function includes(candidate: string | unknown[], search: any) {
4
- return candidate.indexOf(search) !== -1
5
- }
6
-
7
- export function arrayFrom<T>(arrayLike: ArrayLike<T> | Set<T>): T[] {
8
- if (Array.from) {
9
- return Array.from(arrayLike)
10
- }
11
-
12
- const array = []
13
-
14
- if (arrayLike instanceof Set) {
15
- arrayLike.forEach((item) => array.push(item))
16
- } else {
17
- for (let i = 0; i < arrayLike.length; i++) {
18
- array.push(arrayLike[i])
19
- }
20
- }
21
-
22
- return array
23
- }
24
-
25
- export function find<T, S extends T>(
26
- array: ArrayLike<T>,
27
- predicate: (item: T, index: number) => item is S
28
- ): S | undefined
29
- export function find<T>(array: ArrayLike<T>, predicate: (item: T, index: number) => boolean): T | undefined
30
- export function find(
31
- array: ArrayLike<unknown>,
32
- predicate: (item: unknown, index: number) => boolean
33
- ): unknown | undefined {
34
- for (let i = 0; i < array.length; i += 1) {
35
- const item = array[i]
36
- if (predicate(item, i)) {
37
- return item
38
- }
39
- }
40
- return undefined
41
- }
42
-
43
1
  export function findLast<T, S extends T>(
44
- array: T[],
45
- predicate: (item: T, index: number, array: T[]) => item is S
2
+ array: readonly T[],
3
+ predicate: (item: T, index: number, array: readonly T[]) => item is S
46
4
  ): S | undefined {
47
5
  for (let i = array.length - 1; i >= 0; i -= 1) {
48
6
  const item = array[i]
@@ -53,75 +11,13 @@ export function findLast<T, S extends T>(
53
11
  return undefined
54
12
  }
55
13
 
56
- export function forEach<List extends { [index: number]: any }>(
57
- list: List,
58
- callback: (value: List[number], index: number, parent: List) => void
59
- ) {
60
- Array.prototype.forEach.call(list, callback as any)
61
- }
14
+ // Keep the following wrapper functions as it can be mangled and will result in smaller bundle size that using
15
+ // the native Object.values and Object.entries directly
62
16
 
63
17
  export function objectValues<T = unknown>(object: { [key: string]: T }) {
64
- return Object.keys(object).map((key) => object[key])
18
+ return Object.values(object)
65
19
  }
66
20
 
67
21
  export function objectEntries<T = unknown>(object: { [key: string]: T }): Array<[string, T]> {
68
- return Object.keys(object).map((key) => [key, object[key]])
69
- }
70
-
71
- export function startsWith(candidate: string, search: string) {
72
- return candidate.slice(0, search.length) === search
73
- }
74
-
75
- export function endsWith(candidate: string, search: string) {
76
- return candidate.slice(-search.length) === search
77
- }
78
-
79
- export function elementMatches(element: Element & { msMatchesSelector?(selector: string): boolean }, selector: string) {
80
- if (element.matches) {
81
- return element.matches(selector)
82
- }
83
- // IE11 support
84
- if (element.msMatchesSelector) {
85
- return element.msMatchesSelector(selector)
86
- }
87
- return false
88
- }
89
-
90
- // https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js
91
- export function cssEscape(str: string) {
92
- if (window.CSS && window.CSS.escape) {
93
- return window.CSS.escape(str)
94
- }
95
-
96
- // eslint-disable-next-line no-control-regex
97
- return str.replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g, function (ch, asCodePoint) {
98
- if (asCodePoint) {
99
- // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
100
- if (ch === '\0') {
101
- return '\uFFFD'
102
- }
103
- // Control characters and (dependent upon position) numbers get escaped as code points
104
- return `${ch.slice(0, -1)}\\${ch.charCodeAt(ch.length - 1).toString(16)} `
105
- }
106
- // Other potentially-special ASCII characters get backslash-escaped
107
- return `\\${ch}`
108
- })
109
- }
110
-
111
- interface Assignable {
112
- [key: string]: any
113
- }
114
-
115
- export function assign<T, U>(target: T, source: U): T & U
116
- export function assign<T, U, V>(target: T, source1: U, source2: V): T & U & V
117
- export function assign<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W
118
- export function assign(target: Assignable, ...toAssign: Assignable[]) {
119
- toAssign.forEach((source: Assignable) => {
120
- for (const key in source) {
121
- if (Object.prototype.hasOwnProperty.call(source, key)) {
122
- target[key] = source[key]
123
- }
124
- }
125
- })
126
- return target
22
+ return Object.entries(object)
127
23
  }
@@ -5,7 +5,7 @@ export function isServerError(status: number) {
5
5
  export function tryToClone(response: Response): Response | undefined {
6
6
  try {
7
7
  return response.clone()
8
- } catch (e) {
8
+ } catch {
9
9
  // clone can throw if the response has already been used by another instrumentation or is disturbed
10
10
  return
11
11
  }
@@ -9,10 +9,68 @@ export function generateUUID(placeholder?: string): string {
9
9
  : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID)
10
10
  }
11
11
 
12
- export function findCommaSeparatedValue(rawString: string, name: string) {
13
- const regex = new RegExp(`(?:^|;)\\s*${name}\\s*=\\s*([^;]+)`)
14
- const matches = regex.exec(rawString)
15
- return matches ? matches[1] : undefined
12
+ const COMMA_SEPARATED_KEY_VALUE = /([\w-]+)\s*=\s*([^;]+)/g
13
+
14
+ /**
15
+ * Returns the value of the key with the given name
16
+ * If there are multiple values with the same key, returns the first one
17
+ */
18
+ export function findCommaSeparatedValue(rawString: string, name: string): string | undefined {
19
+ COMMA_SEPARATED_KEY_VALUE.lastIndex = 0
20
+ while (true) {
21
+ const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString)
22
+ if (match) {
23
+ if (match[1] === name) {
24
+ return match[2]
25
+ }
26
+ } else {
27
+ break
28
+ }
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Returns a map of all the values with the given key
34
+ * If there are multiple values with the same key, returns all the values
35
+ */
36
+ export function findAllCommaSeparatedValues(rawString: string): Map<string, string[]> {
37
+ const result = new Map<string, string[]>()
38
+ COMMA_SEPARATED_KEY_VALUE.lastIndex = 0
39
+ while (true) {
40
+ const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString)
41
+ if (match) {
42
+ const key = match[1]
43
+ const value = match[2]
44
+ if (result.has(key)) {
45
+ result.get(key)!.push(value)
46
+ } else {
47
+ result.set(key, [value])
48
+ }
49
+ } else {
50
+ break
51
+ }
52
+ }
53
+ return result
54
+ }
55
+
56
+ /**
57
+ * Returns a map of the values with the given key
58
+ * ⚠️ If there are multiple values with the same key, returns the LAST one
59
+ *
60
+ * @deprecated use `findAllCommaSeparatedValues()` instead
61
+ */
62
+ export function findCommaSeparatedValues(rawString: string): Map<string, string> {
63
+ const result = new Map<string, string>()
64
+ COMMA_SEPARATED_KEY_VALUE.lastIndex = 0
65
+ while (true) {
66
+ const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString)
67
+ if (match) {
68
+ result.set(match[1], match[2])
69
+ } else {
70
+ break
71
+ }
72
+ }
73
+ return result
16
74
  }
17
75
 
18
76
  export function safeTruncate(candidate: string, length: number, suffix = '') {
@@ -10,12 +10,19 @@ export type Duration = number & { d: 'Duration in ms' }
10
10
  export type ServerDuration = number & { s: 'Duration in ns' }
11
11
  export type TimeStamp = number & { t: 'Epoch time' }
12
12
  export type RelativeTime = number & { r: 'Time relative to navigation start' } & { d: 'Duration in ms' }
13
- export type ClocksState = { relative: RelativeTime; timeStamp: TimeStamp }
13
+ export interface ClocksState {
14
+ relative: RelativeTime
15
+ timeStamp: TimeStamp
16
+ }
14
17
 
15
18
  export function relativeToClocks(relative: RelativeTime) {
16
19
  return { relative, timeStamp: getCorrectedTimeStamp(relative) }
17
20
  }
18
21
 
22
+ export function timeStampToClocks(timeStamp: TimeStamp) {
23
+ return { relative: getRelativeTime(timeStamp), timeStamp }
24
+ }
25
+
19
26
  function getCorrectedTimeStamp(relativeTime: RelativeTime) {
20
27
  const correctedOrigin = (dateNow() - performance.now()) as TimeStamp
21
28
  // apply correction only for positive drift
@@ -76,13 +83,7 @@ export function addDuration(a: number, b: number) {
76
83
  return a + b
77
84
  }
78
85
 
79
- /**
80
- * Get the time since the navigation was started.
81
- *
82
- * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual
83
- * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.
84
- * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926
85
- */
86
+ // Get the time since the navigation was started.
86
87
  export function getRelativeTime(timestamp: TimeStamp) {
87
88
  return (timestamp - getNavigationStart()) as RelativeTime
88
89
  }
@@ -100,13 +101,17 @@ export function looksLikeRelativeTime(time: RelativeTime | TimeStamp): time is R
100
101
  */
101
102
  let navigationStart: TimeStamp | undefined
102
103
 
104
+ /**
105
+ * Notes: this does not use `performance.timeOrigin` because:
106
+ * - It doesn't seem to reflect the actual time on which the navigation has started: it may be much farther in the past,
107
+ * at least in Firefox 71. (see: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926)
108
+ * - It is not supported in Safari <15
109
+ */
103
110
  function getNavigationStart() {
104
111
  if (navigationStart === undefined) {
105
- navigationStart = performance.timing.navigationStart as TimeStamp
112
+ // ServiceWorkers do not support navigationStart (it's deprecated), so we fallback to timeOrigin
113
+ navigationStart = (performance.timing?.navigationStart ?? performance.timeOrigin) as TimeStamp
106
114
  }
107
- return navigationStart
108
- }
109
115
 
110
- export function resetNavigationStart() {
111
- navigationStart = undefined
116
+ return navigationStart
112
117
  }
@@ -0,0 +1,9 @@
1
+ export function getTimeZone() {
2
+ try {
3
+ const intl = new Intl.DateTimeFormat()
4
+
5
+ return intl.resolvedOptions().timeZone
6
+ } catch {
7
+ return undefined
8
+ }
9
+ }
@@ -1,7 +1,7 @@
1
- import { jsonStringify } from '../serialisation/jsonStringify'
1
+ import { globalObject } from '../globalObject'
2
2
 
3
3
  export function normalizeUrl(url: string) {
4
- return buildUrl(url, getLocationOrigin()).href
4
+ return buildUrl(url, location.href).href
5
5
  }
6
6
 
7
7
  export function isValidUrl(url: string) {
@@ -12,75 +12,45 @@ export function isValidUrl(url: string) {
12
12
  }
13
13
  }
14
14
 
15
- export function getOrigin(url: string) {
16
- return getLinkElementOrigin(buildUrl(url))
17
- }
18
-
19
15
  export function getPathName(url: string) {
20
16
  const pathname = buildUrl(url).pathname
21
17
  return pathname[0] === '/' ? pathname : `/${pathname}`
22
18
  }
23
19
 
24
- export function getSearch(url: string) {
25
- return buildUrl(url).search
26
- }
27
-
28
- export function getHash(url: string) {
29
- return buildUrl(url).hash
30
- }
31
-
32
20
  export function buildUrl(url: string, base?: string) {
33
- const supportedURL = getSupportedUrl()
34
- if (supportedURL) {
35
- try {
36
- return base !== undefined ? new supportedURL(url, base) : new supportedURL(url)
37
- } catch (error) {
38
- throw new Error(`Failed to construct URL: ${String(error)} ${jsonStringify({ url, base })!}`)
39
- }
40
- }
41
- if (base === undefined && !/:/.test(url)) {
42
- throw new Error(`Invalid URL: '${url}'`)
43
- }
44
- let doc = document
45
- const anchorElement = doc.createElement('a')
46
- if (base !== undefined) {
47
- doc = document.implementation.createHTMLDocument('')
48
- const baseElement = doc.createElement('base')
49
- baseElement.href = base
50
- doc.head.appendChild(baseElement)
51
- doc.body.appendChild(anchorElement)
21
+ const { URL } = getPristineWindow()
22
+
23
+ try {
24
+ return base !== undefined ? new URL(url, base) : new URL(url)
25
+ } catch (error) {
26
+ throw new Error(`Failed to construct URL: ${String(error)}`)
52
27
  }
53
- anchorElement.href = url
54
- return anchorElement
55
28
  }
56
29
 
57
- const originalURL = URL
58
- let isURLSupported: boolean | undefined
59
- function getSupportedUrl(): typeof URL | undefined {
60
- if (isURLSupported === undefined) {
30
+ /**
31
+ * Get native URL constructor from a clean iframe
32
+ * This avoids polyfill issues by getting the native implementation from a fresh iframe context
33
+ * Falls back to the original URL constructor if iframe approach fails
34
+ */
35
+ let getPristineGlobalObjectCache: Pick<typeof window, 'URL'> | undefined
36
+
37
+ export function getPristineWindow() {
38
+ if (!getPristineGlobalObjectCache) {
39
+ let iframe: HTMLIFrameElement | undefined
40
+ let pristineWindow: Window & typeof globalThis
61
41
  try {
62
- const url = new originalURL('http://test/path')
63
- isURLSupported = url.href === 'http://test/path'
42
+ iframe = document.createElement('iframe')
43
+ iframe.style.display = 'none'
44
+ document.body.appendChild(iframe)
45
+ pristineWindow = iframe.contentWindow as Window & typeof globalThis
64
46
  } catch {
65
- isURLSupported = false
47
+ pristineWindow = globalObject as unknown as Window & typeof globalThis
48
+ }
49
+ getPristineGlobalObjectCache = {
50
+ URL: pristineWindow.URL,
66
51
  }
52
+ iframe?.remove()
67
53
  }
68
- return isURLSupported ? originalURL : undefined
69
- }
70
54
 
71
- export function getLocationOrigin() {
72
- return getLinkElementOrigin(window.location)
73
- }
74
-
75
- /**
76
- * Fallback
77
- * On IE HTMLAnchorElement origin is not supported: https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/origin
78
- * On Firefox window.location.origin is "null" for file: URIs: https://bugzilla.mozilla.org/show_bug.cgi?id=878297
79
- */
80
- export function getLinkElementOrigin(element: Location | HTMLAnchorElement | URL) {
81
- if (element.origin && element.origin !== 'null') {
82
- return element.origin
83
- }
84
- const sanitizedHost = element.host.replace(/(:80|:443)$/, '')
85
- return `${element.protocol}//${sanitizedHost}`
55
+ return getPristineGlobalObjectCache
86
56
  }
@@ -1,5 +1,6 @@
1
1
  import { setInterval, clearInterval } from './timer'
2
2
  import type { TimeoutId } from './timer'
3
+ import { removeItem } from './utils/arrayUtils'
3
4
  import type { Duration, RelativeTime } from './utils/timeUtils'
4
5
  import { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils'
5
6
 
@@ -16,45 +17,71 @@ export interface ValueHistoryEntry<T> {
16
17
  export const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE
17
18
 
18
19
  /**
19
- * Store and keep track of values spans. This whole class assumes that values are added in
20
+ * Store and keep track of values spans. This whole cache assumes that values are added in
20
21
  * chronological order (i.e. all entries have an increasing start time).
21
22
  */
22
- export class ValueHistory<Value> {
23
- private entries: Array<ValueHistoryEntry<Value>> = []
24
- private clearOldValuesInterval: TimeoutId
25
-
26
- constructor(
27
- private expireDelay: number,
28
- private maxEntries?: number
29
- ) {
30
- this.clearOldValuesInterval = setInterval(() => this.clearOldValues(), CLEAR_OLD_VALUES_INTERVAL)
23
+ export interface ValueHistory<Value> {
24
+ add: (value: Value, startTime: RelativeTime) => ValueHistoryEntry<Value>
25
+ find: (startTime?: RelativeTime, options?: { returnInactive: boolean }) => Value | undefined
26
+
27
+ closeActive: (endTime: RelativeTime) => void
28
+ findAll: (startTime?: RelativeTime, duration?: Duration) => Value[]
29
+ reset: () => void
30
+ stop: () => void
31
+ }
32
+
33
+ let cleanupHistoriesInterval: TimeoutId | null = null
34
+
35
+ const cleanupTasks: Set<() => void> = new Set()
36
+
37
+ function cleanupHistories() {
38
+ cleanupTasks.forEach((task) => task())
39
+ }
40
+
41
+ export function createValueHistory<Value>({
42
+ expireDelay,
43
+ maxEntries,
44
+ }: {
45
+ expireDelay: number
46
+ maxEntries?: number
47
+ }): ValueHistory<Value> {
48
+ let entries: Array<ValueHistoryEntry<Value>> = []
49
+
50
+ if (!cleanupHistoriesInterval) {
51
+ cleanupHistoriesInterval = setInterval(() => cleanupHistories(), CLEAR_OLD_VALUES_INTERVAL)
31
52
  }
32
53
 
54
+ const clearExpiredValues = () => {
55
+ const oldTimeThreshold = relativeNow() - expireDelay
56
+ while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {
57
+ entries.pop()
58
+ }
59
+ }
60
+
61
+ cleanupTasks.add(clearExpiredValues)
62
+
33
63
  /**
34
64
  * Add a value to the history associated with a start time. Returns a reference to this newly
35
65
  * added entry that can be removed or closed.
36
66
  */
37
- add(value: Value, startTime: RelativeTime): ValueHistoryEntry<Value> {
67
+ function add(value: Value, startTime: RelativeTime): ValueHistoryEntry<Value> {
38
68
  const entry: ValueHistoryEntry<Value> = {
39
69
  value,
40
70
  startTime,
41
71
  endTime: END_OF_TIMES,
42
72
  remove: () => {
43
- const index = this.entries.indexOf(entry)
44
- if (index >= 0) {
45
- this.entries.splice(index, 1)
46
- }
73
+ removeItem(entries, entry)
47
74
  },
48
75
  close: (endTime: RelativeTime) => {
49
76
  entry.endTime = endTime
50
77
  },
51
78
  }
52
79
 
53
- if (this.maxEntries && this.entries.length >= this.maxEntries) {
54
- this.entries.pop()
80
+ if (maxEntries && entries.length >= maxEntries) {
81
+ entries.pop()
55
82
  }
56
83
 
57
- this.entries.unshift(entry)
84
+ entries.unshift(entry)
58
85
 
59
86
  return entry
60
87
  }
@@ -62,11 +89,16 @@ export class ValueHistory<Value> {
62
89
  /**
63
90
  * Return the latest value that was active during `startTime`, or the currently active value
64
91
  * if no `startTime` is provided. This method assumes that entries are not overlapping.
92
+ *
93
+ * If `option.returnInactive` is true, returns the value at `startTime` (active or not).
65
94
  */
66
- find(startTime: RelativeTime = END_OF_TIMES): Value | undefined {
67
- for (const entry of this.entries) {
95
+ function find(
96
+ startTime: RelativeTime = END_OF_TIMES,
97
+ options: { returnInactive: boolean } = { returnInactive: false }
98
+ ): Value | undefined {
99
+ for (const entry of entries) {
68
100
  if (entry.startTime <= startTime) {
69
- if (startTime <= entry.endTime) {
101
+ if (options.returnInactive || startTime <= entry.endTime) {
70
102
  return entry.value
71
103
  }
72
104
  break
@@ -78,8 +110,8 @@ export class ValueHistory<Value> {
78
110
  * Helper function to close the currently active value, if any. This method assumes that entries
79
111
  * are not overlapping.
80
112
  */
81
- closeActive(endTime: RelativeTime) {
82
- const latestEntry = this.entries[0]
113
+ function closeActive(endTime: RelativeTime) {
114
+ const latestEntry = entries[0]
83
115
  if (latestEntry && latestEntry.endTime === END_OF_TIMES) {
84
116
  latestEntry.close(endTime)
85
117
  }
@@ -90,9 +122,9 @@ export class ValueHistory<Value> {
90
122
  * or all values that were active during `startTime` if no duration is provided,
91
123
  * or all currently active values if no `startTime` is provided.
92
124
  */
93
- findAll(startTime: RelativeTime = END_OF_TIMES, duration = 0 as Duration): Value[] {
125
+ function findAll(startTime: RelativeTime = END_OF_TIMES, duration = 0 as Duration): Value[] {
94
126
  const endTime = addDuration(startTime, duration)
95
- return this.entries
127
+ return entries
96
128
  .filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)
97
129
  .map((entry) => entry.value)
98
130
  }
@@ -100,21 +132,20 @@ export class ValueHistory<Value> {
100
132
  /**
101
133
  * Remove all entries from this collection.
102
134
  */
103
- reset() {
104
- this.entries = []
135
+ function reset() {
136
+ entries = []
105
137
  }
106
138
 
107
139
  /**
108
140
  * Stop internal garbage collection of past entries.
109
141
  */
110
- stop() {
111
- clearInterval(this.clearOldValuesInterval)
112
- }
113
-
114
- private clearOldValues() {
115
- const oldTimeThreshold = relativeNow() - this.expireDelay
116
- while (this.entries.length > 0 && this.entries[this.entries.length - 1].endTime < oldTimeThreshold) {
117
- this.entries.pop()
142
+ function stop() {
143
+ cleanupTasks.delete(clearExpiredValues)
144
+ if (cleanupTasks.size === 0 && cleanupHistoriesInterval) {
145
+ clearInterval(cleanupHistoriesInterval)
146
+ cleanupHistoriesInterval = null
118
147
  }
119
148
  }
149
+
150
+ return { add, find, closeActive, findAll, reset, stop }
120
151
  }