@kubesense/kubesense-browser-core 1.0.0

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 (725) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/cjs/boot/displayAlreadyInitializedError.d.ts +2 -0
  4. package/cjs/boot/displayAlreadyInitializedError.js +10 -0
  5. package/cjs/boot/displayAlreadyInitializedError.js.map +1 -0
  6. package/cjs/boot/init.d.ts +13 -0
  7. package/cjs/boot/init.js +39 -0
  8. package/cjs/boot/init.js.map +1 -0
  9. package/cjs/browser/addEventListener.d.ts +87 -0
  10. package/cjs/browser/addEventListener.js +55 -0
  11. package/cjs/browser/addEventListener.js.map +1 -0
  12. package/cjs/browser/browser.types.d.ts +51 -0
  13. package/cjs/browser/browser.types.js +6 -0
  14. package/cjs/browser/browser.types.js.map +1 -0
  15. package/cjs/browser/cookie.d.ts +26 -0
  16. package/cjs/browser/cookie.js +112 -0
  17. package/cjs/browser/cookie.js.map +1 -0
  18. package/cjs/browser/fetchObservable.d.ts +38 -0
  19. package/cjs/browser/fetchObservable.js +103 -0
  20. package/cjs/browser/fetchObservable.js.map +1 -0
  21. package/cjs/browser/pageMayExitObservable.d.ts +14 -0
  22. package/cjs/browser/pageMayExitObservable.js +45 -0
  23. package/cjs/browser/pageMayExitObservable.js.map +1 -0
  24. package/cjs/browser/runOnReadyState.d.ts +5 -0
  25. package/cjs/browser/runOnReadyState.js +20 -0
  26. package/cjs/browser/runOnReadyState.js.map +1 -0
  27. package/cjs/browser/xhrObservable.d.ts +24 -0
  28. package/cjs/browser/xhrObservable.js +86 -0
  29. package/cjs/browser/xhrObservable.js.map +1 -0
  30. package/cjs/domain/allowedTrackingOrigins.d.ts +4 -0
  31. package/cjs/domain/allowedTrackingOrigins.js +25 -0
  32. package/cjs/domain/allowedTrackingOrigins.js.map +1 -0
  33. package/cjs/domain/bufferedData.d.ts +14 -0
  34. package/cjs/domain/bufferedData.js +22 -0
  35. package/cjs/domain/bufferedData.js.map +1 -0
  36. package/cjs/domain/configuration/configuration.d.ts +284 -0
  37. package/cjs/domain/configuration/configuration.js +135 -0
  38. package/cjs/domain/configuration/configuration.js.map +1 -0
  39. package/cjs/domain/configuration/endpointBuilder.d.ts +12 -0
  40. package/cjs/domain/configuration/endpointBuilder.js +66 -0
  41. package/cjs/domain/configuration/endpointBuilder.js.map +1 -0
  42. package/cjs/domain/configuration/index.d.ts +6 -0
  43. package/cjs/domain/configuration/index.js +31 -0
  44. package/cjs/domain/configuration/index.js.map +1 -0
  45. package/cjs/domain/configuration/transportConfiguration.d.ts +21 -0
  46. package/cjs/domain/configuration/transportConfiguration.js +58 -0
  47. package/cjs/domain/configuration/transportConfiguration.js.map +1 -0
  48. package/cjs/domain/connectivity/connectivity.d.ts +14 -0
  49. package/cjs/domain/connectivity/connectivity.js +14 -0
  50. package/cjs/domain/connectivity/connectivity.js.map +1 -0
  51. package/cjs/domain/connectivity/index.d.ts +1 -0
  52. package/cjs/domain/connectivity/index.js +18 -0
  53. package/cjs/domain/connectivity/index.js.map +1 -0
  54. package/cjs/domain/console/consoleObservable.d.ts +21 -0
  55. package/cjs/domain/console/consoleObservable.js +84 -0
  56. package/cjs/domain/console/consoleObservable.js.map +1 -0
  57. package/cjs/domain/context/contextConstants.d.ts +21 -0
  58. package/cjs/domain/context/contextConstants.js +18 -0
  59. package/cjs/domain/context/contextConstants.js.map +1 -0
  60. package/cjs/domain/context/contextManager.d.ts +19 -0
  61. package/cjs/domain/context/contextManager.js +59 -0
  62. package/cjs/domain/context/contextManager.js.map +1 -0
  63. package/cjs/domain/context/contextUtils.d.ts +5 -0
  64. package/cjs/domain/context/contextUtils.js +16 -0
  65. package/cjs/domain/context/contextUtils.js.map +1 -0
  66. package/cjs/domain/context/defineContextMethod.d.ts +6 -0
  67. package/cjs/domain/context/defineContextMethod.js +21 -0
  68. package/cjs/domain/context/defineContextMethod.js.map +1 -0
  69. package/cjs/domain/context/storeContextManager.d.ts +6 -0
  70. package/cjs/domain/context/storeContextManager.js +40 -0
  71. package/cjs/domain/context/storeContextManager.js.map +1 -0
  72. package/cjs/domain/contexts/accountContext.d.ts +26 -0
  73. package/cjs/domain/contexts/accountContext.js +33 -0
  74. package/cjs/domain/contexts/accountContext.js.map +1 -0
  75. package/cjs/domain/contexts/globalContext.d.ts +18 -0
  76. package/cjs/domain/contexts/globalContext.js +21 -0
  77. package/cjs/domain/contexts/globalContext.js.map +1 -0
  78. package/cjs/domain/contexts/rumInternalContext.type.d.ts +14 -0
  79. package/cjs/domain/contexts/rumInternalContext.type.js +3 -0
  80. package/cjs/domain/contexts/rumInternalContext.type.js.map +1 -0
  81. package/cjs/domain/contexts/userContext.d.ts +31 -0
  82. package/cjs/domain/contexts/userContext.js +120 -0
  83. package/cjs/domain/contexts/userContext.js.map +1 -0
  84. package/cjs/domain/deflate/deflate.types.d.ts +40 -0
  85. package/cjs/domain/deflate/deflate.types.js +3 -0
  86. package/cjs/domain/deflate/deflate.types.js.map +1 -0
  87. package/cjs/domain/deflate/index.d.ts +1 -0
  88. package/cjs/domain/deflate/index.js +18 -0
  89. package/cjs/domain/deflate/index.js.map +1 -0
  90. package/cjs/domain/error/error.d.ts +23 -0
  91. package/cjs/domain/error/error.js +81 -0
  92. package/cjs/domain/error/error.js.map +1 -0
  93. package/cjs/domain/error/error.types.d.ts +47 -0
  94. package/cjs/domain/error/error.types.js +13 -0
  95. package/cjs/domain/error/error.types.js.map +1 -0
  96. package/cjs/domain/error/trackRuntimeError.d.ts +11 -0
  97. package/cjs/domain/error/trackRuntimeError.js +48 -0
  98. package/cjs/domain/error/trackRuntimeError.js.map +1 -0
  99. package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +5 -0
  100. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +41 -0
  101. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -0
  102. package/cjs/domain/extension/extensionUtils.d.ts +10 -0
  103. package/cjs/domain/extension/extensionUtils.js +30 -0
  104. package/cjs/domain/extension/extensionUtils.js.map +1 -0
  105. package/cjs/domain/intakeSites.d.ts +4 -0
  106. package/cjs/domain/intakeSites.js +7 -0
  107. package/cjs/domain/intakeSites.js.map +1 -0
  108. package/cjs/domain/report/browser.types.d.ts +34 -0
  109. package/cjs/domain/report/browser.types.js +3 -0
  110. package/cjs/domain/report/browser.types.js.map +1 -0
  111. package/cjs/domain/report/reportObservable.d.ts +14 -0
  112. package/cjs/domain/report/reportObservable.js +99 -0
  113. package/cjs/domain/report/reportObservable.js.map +1 -0
  114. package/cjs/domain/resourceUtils.d.ts +18 -0
  115. package/cjs/domain/resourceUtils.js +20 -0
  116. package/cjs/domain/resourceUtils.js.map +1 -0
  117. package/cjs/domain/session/oldCookiesMigration.d.ts +11 -0
  118. package/cjs/domain/session/oldCookiesMigration.js +40 -0
  119. package/cjs/domain/session/oldCookiesMigration.js.map +1 -0
  120. package/cjs/domain/session/sessionConstants.d.ts +15 -0
  121. package/cjs/domain/session/sessionConstants.js +16 -0
  122. package/cjs/domain/session/sessionConstants.js.map +1 -0
  123. package/cjs/domain/session/sessionManager.d.ts +28 -0
  124. package/cjs/domain/session/sessionManager.js +201 -0
  125. package/cjs/domain/session/sessionManager.js.map +1 -0
  126. package/cjs/domain/session/sessionState.d.ts +16 -0
  127. package/cjs/domain/session/sessionState.js +70 -0
  128. package/cjs/domain/session/sessionState.js.map +1 -0
  129. package/cjs/domain/session/sessionStateValidation.d.ts +3 -0
  130. package/cjs/domain/session/sessionStateValidation.js +11 -0
  131. package/cjs/domain/session/sessionStateValidation.js.map +1 -0
  132. package/cjs/domain/session/sessionStore.d.ts +38 -0
  133. package/cjs/domain/session/sessionStore.js +186 -0
  134. package/cjs/domain/session/sessionStore.js.map +1 -0
  135. package/cjs/domain/session/sessionStoreOperations.d.ts +12 -0
  136. package/cjs/domain/session/sessionStoreOperations.js +119 -0
  137. package/cjs/domain/session/sessionStoreOperations.js.map +1 -0
  138. package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +12 -0
  139. package/cjs/domain/session/storeStrategies/sessionInCookie.js +104 -0
  140. package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
  141. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +6 -0
  142. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +42 -0
  143. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -0
  144. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -0
  145. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +5 -0
  146. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -0
  147. package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +12 -0
  148. package/cjs/domain/synthetics/syntheticsWorkerValues.js +31 -0
  149. package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -0
  150. package/cjs/domain/tags.d.ts +6 -0
  151. package/cjs/domain/tags.js +66 -0
  152. package/cjs/domain/tags.js.map +1 -0
  153. package/cjs/domain/telemetry/index.d.ts +4 -0
  154. package/cjs/domain/telemetry/index.js +28 -0
  155. package/cjs/domain/telemetry/index.js.map +1 -0
  156. package/cjs/domain/telemetry/rawTelemetryEvent.types.d.ts +18 -0
  157. package/cjs/domain/telemetry/rawTelemetryEvent.types.js +9 -0
  158. package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -0
  159. package/cjs/domain/telemetry/telemetry.d.ts +56 -0
  160. package/cjs/domain/telemetry/telemetry.js +245 -0
  161. package/cjs/domain/telemetry/telemetry.js.map +1 -0
  162. package/cjs/domain/telemetry/telemetryEvent.types.d.ts +866 -0
  163. package/cjs/domain/telemetry/telemetryEvent.types.js +7 -0
  164. package/cjs/domain/telemetry/telemetryEvent.types.js.map +1 -0
  165. package/cjs/domain/trackingConsent.d.ts +13 -0
  166. package/cjs/domain/trackingConsent.js +28 -0
  167. package/cjs/domain/trackingConsent.js.map +1 -0
  168. package/cjs/domain/userAgentData/index.d.ts +1 -0
  169. package/cjs/domain/userAgentData/index.js +18 -0
  170. package/cjs/domain/userAgentData/index.js.map +1 -0
  171. package/cjs/domain/userAgentData/userAgentData.d.ts +22 -0
  172. package/cjs/domain/userAgentData/userAgentData.js +109 -0
  173. package/cjs/domain/userAgentData/userAgentData.js.map +1 -0
  174. package/cjs/index.d.ts +101 -0
  175. package/cjs/index.js +199 -0
  176. package/cjs/index.js.map +1 -0
  177. package/cjs/tools/abstractHooks.d.ts +24 -0
  178. package/cjs/tools/abstractHooks.js +41 -0
  179. package/cjs/tools/abstractHooks.js.map +1 -0
  180. package/cjs/tools/abstractLifeCycle.d.ts +23 -0
  181. package/cjs/tools/abstractLifeCycle.js +28 -0
  182. package/cjs/tools/abstractLifeCycle.js.map +1 -0
  183. package/cjs/tools/boundedBuffer.d.ts +16 -0
  184. package/cjs/tools/boundedBuffer.js +32 -0
  185. package/cjs/tools/boundedBuffer.js.map +1 -0
  186. package/cjs/tools/catchUserErrors.d.ts +1 -0
  187. package/cjs/tools/catchUserErrors.js +15 -0
  188. package/cjs/tools/catchUserErrors.js.map +1 -0
  189. package/cjs/tools/display.d.ts +38 -0
  190. package/cjs/tools/display.js +44 -0
  191. package/cjs/tools/display.js.map +1 -0
  192. package/cjs/tools/encoder.d.ts +54 -0
  193. package/cjs/tools/encoder.js +40 -0
  194. package/cjs/tools/encoder.js.map +1 -0
  195. package/cjs/tools/experimentalFeatures.d.ts +21 -0
  196. package/cjs/tools/experimentalFeatures.js +50 -0
  197. package/cjs/tools/experimentalFeatures.js.map +1 -0
  198. package/cjs/tools/getZoneJsOriginalValue.d.ts +19 -0
  199. package/cjs/tools/getZoneJsOriginalValue.js +29 -0
  200. package/cjs/tools/getZoneJsOriginalValue.js.map +1 -0
  201. package/cjs/tools/globalObject.d.ts +19 -0
  202. package/cjs/tools/globalObject.js +44 -0
  203. package/cjs/tools/globalObject.js.map +1 -0
  204. package/cjs/tools/instrumentMethod.d.ts +75 -0
  205. package/cjs/tools/instrumentMethod.js +118 -0
  206. package/cjs/tools/instrumentMethod.js.map +1 -0
  207. package/cjs/tools/matchOption.d.ts +8 -0
  208. package/cjs/tools/matchOption.js +35 -0
  209. package/cjs/tools/matchOption.js.map +1 -0
  210. package/cjs/tools/mergeInto.d.ts +25 -0
  211. package/cjs/tools/mergeInto.js +98 -0
  212. package/cjs/tools/mergeInto.js.map +1 -0
  213. package/cjs/tools/monitor.d.ts +9 -0
  214. package/cjs/tools/monitor.js +61 -0
  215. package/cjs/tools/monitor.js.map +1 -0
  216. package/cjs/tools/observable.d.ts +30 -0
  217. package/cjs/tools/observable.js +89 -0
  218. package/cjs/tools/observable.js.map +1 -0
  219. package/cjs/tools/queueMicrotask.d.ts +1 -0
  220. package/cjs/tools/queueMicrotask.js +17 -0
  221. package/cjs/tools/queueMicrotask.js.map +1 -0
  222. package/cjs/tools/readBytesFromStream.d.ts +10 -0
  223. package/cjs/tools/readBytesFromStream.js +28 -0
  224. package/cjs/tools/readBytesFromStream.js.map +1 -0
  225. package/cjs/tools/requestIdleCallback.d.ts +12 -0
  226. package/cjs/tools/requestIdleCallback.js +35 -0
  227. package/cjs/tools/requestIdleCallback.js.map +1 -0
  228. package/cjs/tools/sendToExtension.d.ts +3 -0
  229. package/cjs/tools/sendToExtension.js +11 -0
  230. package/cjs/tools/sendToExtension.js.map +1 -0
  231. package/cjs/tools/serialisation/context.d.ts +9 -0
  232. package/cjs/tools/serialisation/context.js +3 -0
  233. package/cjs/tools/serialisation/context.js.map +1 -0
  234. package/cjs/tools/serialisation/jsonStringify.d.ts +13 -0
  235. package/cjs/tools/serialisation/jsonStringify.js +48 -0
  236. package/cjs/tools/serialisation/jsonStringify.js.map +1 -0
  237. package/cjs/tools/serialisation/sanitize.d.ts +18 -0
  238. package/cjs/tools/serialisation/sanitize.js +188 -0
  239. package/cjs/tools/serialisation/sanitize.js.map +1 -0
  240. package/cjs/tools/stackTrace/computeStackTrace.d.ts +25 -0
  241. package/cjs/tools/stackTrace/computeStackTrace.js +187 -0
  242. package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -0
  243. package/cjs/tools/stackTrace/handlingStack.d.ts +10 -0
  244. package/cjs/tools/stackTrace/handlingStack.js +46 -0
  245. package/cjs/tools/stackTrace/handlingStack.js.map +1 -0
  246. package/cjs/tools/taskQueue.d.ts +15 -0
  247. package/cjs/tools/taskQueue.js +54 -0
  248. package/cjs/tools/taskQueue.js.map +1 -0
  249. package/cjs/tools/timer.d.ts +5 -0
  250. package/cjs/tools/timer.js +22 -0
  251. package/cjs/tools/timer.js.map +1 -0
  252. package/cjs/tools/utils/arrayUtils.d.ts +3 -0
  253. package/cjs/tools/utils/arrayUtils.js +20 -0
  254. package/cjs/tools/utils/arrayUtils.js.map +1 -0
  255. package/cjs/tools/utils/browserDetection.d.ts +8 -0
  256. package/cjs/tools/utils/browserDetection.js +33 -0
  257. package/cjs/tools/utils/browserDetection.js.map +1 -0
  258. package/cjs/tools/utils/byteUtils.d.ts +8 -0
  259. package/cjs/tools/utils/byteUtils.js +34 -0
  260. package/cjs/tools/utils/byteUtils.js.map +1 -0
  261. package/cjs/tools/utils/functionUtils.d.ts +8 -0
  262. package/cjs/tools/utils/functionUtils.js +43 -0
  263. package/cjs/tools/utils/functionUtils.js.map +1 -0
  264. package/cjs/tools/utils/numberUtils.d.ts +8 -0
  265. package/cjs/tools/utils/numberUtils.js +23 -0
  266. package/cjs/tools/utils/numberUtils.js.map +1 -0
  267. package/cjs/tools/utils/objectUtils.d.ts +10 -0
  268. package/cjs/tools/utils/objectUtils.js +23 -0
  269. package/cjs/tools/utils/objectUtils.js.map +1 -0
  270. package/cjs/tools/utils/polyfills.d.ts +7 -0
  271. package/cjs/tools/utils/polyfills.js +23 -0
  272. package/cjs/tools/utils/polyfills.js.map +1 -0
  273. package/cjs/tools/utils/responseUtils.d.ts +2 -0
  274. package/cjs/tools/utils/responseUtils.js +17 -0
  275. package/cjs/tools/utils/responseUtils.js.map +1 -0
  276. package/cjs/tools/utils/stringUtils.d.ts +23 -0
  277. package/cjs/tools/utils/stringUtils.js +91 -0
  278. package/cjs/tools/utils/stringUtils.js.map +1 -0
  279. package/cjs/tools/utils/timeUtils.d.ts +53 -0
  280. package/cjs/tools/utils/timeUtils.js +101 -0
  281. package/cjs/tools/utils/timeUtils.js.map +1 -0
  282. package/cjs/tools/utils/timezone.d.ts +1 -0
  283. package/cjs/tools/utils/timezone.js +13 -0
  284. package/cjs/tools/utils/timezone.js.map +1 -0
  285. package/cjs/tools/utils/typeUtils.d.ts +4 -0
  286. package/cjs/tools/utils/typeUtils.js +16 -0
  287. package/cjs/tools/utils/typeUtils.js.map +1 -0
  288. package/cjs/tools/utils/urlPolyfill.d.ts +5 -0
  289. package/cjs/tools/utils/urlPolyfill.js +59 -0
  290. package/cjs/tools/utils/urlPolyfill.js.map +1 -0
  291. package/cjs/tools/valueHistory.d.ts +27 -0
  292. package/cjs/tools/valueHistory.js +104 -0
  293. package/cjs/tools/valueHistory.js.map +1 -0
  294. package/cjs/transport/batch.d.ts +16 -0
  295. package/cjs/transport/batch.js +110 -0
  296. package/cjs/transport/batch.js.map +1 -0
  297. package/cjs/transport/eventBridge.d.ts +21 -0
  298. package/cjs/transport/eventBridge.js +46 -0
  299. package/cjs/transport/eventBridge.js.map +1 -0
  300. package/cjs/transport/flushController.d.ts +65 -0
  301. package/cjs/transport/flushController.js +123 -0
  302. package/cjs/transport/flushController.js.map +1 -0
  303. package/cjs/transport/httpRequest.d.ts +57 -0
  304. package/cjs/transport/httpRequest.js +107 -0
  305. package/cjs/transport/httpRequest.js.map +1 -0
  306. package/cjs/transport/index.d.ts +7 -0
  307. package/cjs/transport/index.js +15 -0
  308. package/cjs/transport/index.js.map +1 -0
  309. package/cjs/transport/sendWithRetryStrategy.d.ts +41 -0
  310. package/cjs/transport/sendWithRetryStrategy.js +163 -0
  311. package/cjs/transport/sendWithRetryStrategy.js.map +1 -0
  312. package/esm/boot/displayAlreadyInitializedError.d.ts +2 -0
  313. package/esm/boot/displayAlreadyInitializedError.js +7 -0
  314. package/esm/boot/displayAlreadyInitializedError.js.map +1 -0
  315. package/esm/boot/init.d.ts +13 -0
  316. package/esm/boot/init.js +35 -0
  317. package/esm/boot/init.js.map +1 -0
  318. package/esm/browser/addEventListener.d.ts +87 -0
  319. package/esm/browser/addEventListener.js +51 -0
  320. package/esm/browser/addEventListener.js.map +1 -0
  321. package/esm/browser/browser.types.d.ts +51 -0
  322. package/esm/browser/browser.types.js +5 -0
  323. package/esm/browser/browser.types.js.map +1 -0
  324. package/esm/browser/cookie.d.ts +26 -0
  325. package/esm/browser/cookie.js +101 -0
  326. package/esm/browser/cookie.js.map +1 -0
  327. package/esm/browser/fetchObservable.d.ts +38 -0
  328. package/esm/browser/fetchObservable.js +99 -0
  329. package/esm/browser/fetchObservable.js.map +1 -0
  330. package/esm/browser/pageMayExitObservable.d.ts +14 -0
  331. package/esm/browser/pageMayExitObservable.js +40 -0
  332. package/esm/browser/pageMayExitObservable.js.map +1 -0
  333. package/esm/browser/runOnReadyState.d.ts +5 -0
  334. package/esm/browser/runOnReadyState.js +16 -0
  335. package/esm/browser/runOnReadyState.js.map +1 -0
  336. package/esm/browser/xhrObservable.d.ts +24 -0
  337. package/esm/browser/xhrObservable.js +83 -0
  338. package/esm/browser/xhrObservable.js.map +1 -0
  339. package/esm/domain/allowedTrackingOrigins.d.ts +4 -0
  340. package/esm/domain/allowedTrackingOrigins.js +21 -0
  341. package/esm/domain/allowedTrackingOrigins.js.map +1 -0
  342. package/esm/domain/bufferedData.d.ts +14 -0
  343. package/esm/domain/bufferedData.js +19 -0
  344. package/esm/domain/bufferedData.js.map +1 -0
  345. package/esm/domain/configuration/configuration.d.ts +284 -0
  346. package/esm/domain/configuration/configuration.js +129 -0
  347. package/esm/domain/configuration/configuration.js.map +1 -0
  348. package/esm/domain/configuration/endpointBuilder.d.ts +12 -0
  349. package/esm/domain/configuration/endpointBuilder.js +62 -0
  350. package/esm/domain/configuration/endpointBuilder.js.map +1 -0
  351. package/esm/domain/configuration/index.d.ts +6 -0
  352. package/esm/domain/configuration/index.js +5 -0
  353. package/esm/domain/configuration/index.js.map +1 -0
  354. package/esm/domain/configuration/transportConfiguration.d.ts +21 -0
  355. package/esm/domain/configuration/transportConfiguration.js +54 -0
  356. package/esm/domain/configuration/transportConfiguration.js.map +1 -0
  357. package/esm/domain/connectivity/connectivity.d.ts +14 -0
  358. package/esm/domain/connectivity/connectivity.js +11 -0
  359. package/esm/domain/connectivity/connectivity.js.map +1 -0
  360. package/esm/domain/connectivity/index.d.ts +1 -0
  361. package/esm/domain/connectivity/index.js +2 -0
  362. package/esm/domain/connectivity/index.js.map +1 -0
  363. package/esm/domain/console/consoleObservable.d.ts +21 -0
  364. package/esm/domain/console/consoleObservable.js +80 -0
  365. package/esm/domain/console/consoleObservable.js.map +1 -0
  366. package/esm/domain/context/contextConstants.d.ts +21 -0
  367. package/esm/domain/context/contextConstants.js +15 -0
  368. package/esm/domain/context/contextConstants.js.map +1 -0
  369. package/esm/domain/context/contextManager.d.ts +19 -0
  370. package/esm/domain/context/contextManager.js +56 -0
  371. package/esm/domain/context/contextManager.js.map +1 -0
  372. package/esm/domain/context/contextUtils.d.ts +5 -0
  373. package/esm/domain/context/contextUtils.js +13 -0
  374. package/esm/domain/context/contextUtils.js.map +1 -0
  375. package/esm/domain/context/defineContextMethod.d.ts +6 -0
  376. package/esm/domain/context/defineContextMethod.js +17 -0
  377. package/esm/domain/context/defineContextMethod.js.map +1 -0
  378. package/esm/domain/context/storeContextManager.d.ts +6 -0
  379. package/esm/domain/context/storeContextManager.js +35 -0
  380. package/esm/domain/context/storeContextManager.js.map +1 -0
  381. package/esm/domain/contexts/accountContext.d.ts +26 -0
  382. package/esm/domain/contexts/accountContext.js +29 -0
  383. package/esm/domain/contexts/accountContext.js.map +1 -0
  384. package/esm/domain/contexts/globalContext.d.ts +18 -0
  385. package/esm/domain/contexts/globalContext.js +17 -0
  386. package/esm/domain/contexts/globalContext.js.map +1 -0
  387. package/esm/domain/contexts/rumInternalContext.type.d.ts +14 -0
  388. package/esm/domain/contexts/rumInternalContext.type.js +2 -0
  389. package/esm/domain/contexts/rumInternalContext.type.js.map +1 -0
  390. package/esm/domain/contexts/userContext.d.ts +31 -0
  391. package/esm/domain/contexts/userContext.js +116 -0
  392. package/esm/domain/contexts/userContext.js.map +1 -0
  393. package/esm/domain/deflate/deflate.types.d.ts +40 -0
  394. package/esm/domain/deflate/deflate.types.js +2 -0
  395. package/esm/domain/deflate/deflate.types.js.map +1 -0
  396. package/esm/domain/deflate/index.d.ts +1 -0
  397. package/esm/domain/deflate/index.js +2 -0
  398. package/esm/domain/deflate/index.js.map +1 -0
  399. package/esm/domain/error/error.d.ts +23 -0
  400. package/esm/domain/error/error.js +72 -0
  401. package/esm/domain/error/error.js.map +1 -0
  402. package/esm/domain/error/error.types.d.ts +47 -0
  403. package/esm/domain/error/error.types.js +10 -0
  404. package/esm/domain/error/error.types.js.map +1 -0
  405. package/esm/domain/error/trackRuntimeError.d.ts +11 -0
  406. package/esm/domain/error/trackRuntimeError.js +43 -0
  407. package/esm/domain/error/trackRuntimeError.js.map +1 -0
  408. package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +5 -0
  409. package/esm/domain/eventRateLimiter/createEventRateLimiter.js +38 -0
  410. package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -0
  411. package/esm/domain/extension/extensionUtils.d.ts +10 -0
  412. package/esm/domain/extension/extensionUtils.js +25 -0
  413. package/esm/domain/extension/extensionUtils.js.map +1 -0
  414. package/esm/domain/intakeSites.d.ts +4 -0
  415. package/esm/domain/intakeSites.js +4 -0
  416. package/esm/domain/intakeSites.js.map +1 -0
  417. package/esm/domain/report/browser.types.d.ts +34 -0
  418. package/esm/domain/report/browser.types.js +2 -0
  419. package/esm/domain/report/browser.types.js.map +1 -0
  420. package/esm/domain/report/reportObservable.d.ts +14 -0
  421. package/esm/domain/report/reportObservable.js +95 -0
  422. package/esm/domain/report/reportObservable.js.map +1 -0
  423. package/esm/domain/resourceUtils.d.ts +18 -0
  424. package/esm/domain/resourceUtils.js +17 -0
  425. package/esm/domain/resourceUtils.js.map +1 -0
  426. package/esm/domain/session/oldCookiesMigration.d.ts +11 -0
  427. package/esm/domain/session/oldCookiesMigration.js +36 -0
  428. package/esm/domain/session/oldCookiesMigration.js.map +1 -0
  429. package/esm/domain/session/sessionConstants.d.ts +15 -0
  430. package/esm/domain/session/sessionConstants.js +13 -0
  431. package/esm/domain/session/sessionConstants.js.map +1 -0
  432. package/esm/domain/session/sessionManager.d.ts +28 -0
  433. package/esm/domain/session/sessionManager.js +196 -0
  434. package/esm/domain/session/sessionManager.js.map +1 -0
  435. package/esm/domain/session/sessionState.d.ts +16 -0
  436. package/esm/domain/session/sessionState.js +60 -0
  437. package/esm/domain/session/sessionState.js.map +1 -0
  438. package/esm/domain/session/sessionStateValidation.d.ts +3 -0
  439. package/esm/domain/session/sessionStateValidation.js +7 -0
  440. package/esm/domain/session/sessionStateValidation.js.map +1 -0
  441. package/esm/domain/session/sessionStore.d.ts +38 -0
  442. package/esm/domain/session/sessionStore.js +180 -0
  443. package/esm/domain/session/sessionStore.js.map +1 -0
  444. package/esm/domain/session/sessionStoreOperations.d.ts +12 -0
  445. package/esm/domain/session/sessionStoreOperations.js +114 -0
  446. package/esm/domain/session/sessionStoreOperations.js.map +1 -0
  447. package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +12 -0
  448. package/esm/domain/session/storeStrategies/sessionInCookie.js +98 -0
  449. package/esm/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
  450. package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +6 -0
  451. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +37 -0
  452. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -0
  453. package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -0
  454. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +2 -0
  455. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -0
  456. package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +12 -0
  457. package/esm/domain/synthetics/syntheticsWorkerValues.js +24 -0
  458. package/esm/domain/synthetics/syntheticsWorkerValues.js.map +1 -0
  459. package/esm/domain/tags.d.ts +6 -0
  460. package/esm/domain/tags.js +59 -0
  461. package/esm/domain/tags.js.map +1 -0
  462. package/esm/domain/telemetry/index.d.ts +4 -0
  463. package/esm/domain/telemetry/index.js +3 -0
  464. package/esm/domain/telemetry/index.js.map +1 -0
  465. package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +18 -0
  466. package/esm/domain/telemetry/rawTelemetryEvent.types.js +6 -0
  467. package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +1 -0
  468. package/esm/domain/telemetry/telemetry.d.ts +56 -0
  469. package/esm/domain/telemetry/telemetry.js +232 -0
  470. package/esm/domain/telemetry/telemetry.js.map +1 -0
  471. package/esm/domain/telemetry/telemetryEvent.types.d.ts +866 -0
  472. package/esm/domain/telemetry/telemetryEvent.types.js +6 -0
  473. package/esm/domain/telemetry/telemetryEvent.types.js.map +1 -0
  474. package/esm/domain/trackingConsent.d.ts +13 -0
  475. package/esm/domain/trackingConsent.js +24 -0
  476. package/esm/domain/trackingConsent.js.map +1 -0
  477. package/esm/domain/userAgentData/index.d.ts +1 -0
  478. package/esm/domain/userAgentData/index.js +2 -0
  479. package/esm/domain/userAgentData/index.js.map +1 -0
  480. package/esm/domain/userAgentData/userAgentData.d.ts +22 -0
  481. package/esm/domain/userAgentData/userAgentData.js +105 -0
  482. package/esm/domain/userAgentData/userAgentData.js.map +1 -0
  483. package/esm/index.d.ts +101 -0
  484. package/esm/index.js +77 -0
  485. package/esm/index.js.map +1 -0
  486. package/esm/tools/abstractHooks.d.ts +24 -0
  487. package/esm/tools/abstractHooks.js +37 -0
  488. package/esm/tools/abstractHooks.js.map +1 -0
  489. package/esm/tools/abstractLifeCycle.d.ts +23 -0
  490. package/esm/tools/abstractLifeCycle.js +24 -0
  491. package/esm/tools/abstractLifeCycle.js.map +1 -0
  492. package/esm/tools/boundedBuffer.d.ts +16 -0
  493. package/esm/tools/boundedBuffer.js +29 -0
  494. package/esm/tools/boundedBuffer.js.map +1 -0
  495. package/esm/tools/catchUserErrors.d.ts +1 -0
  496. package/esm/tools/catchUserErrors.js +12 -0
  497. package/esm/tools/catchUserErrors.js.map +1 -0
  498. package/esm/tools/display.d.ts +38 -0
  499. package/esm/tools/display.js +41 -0
  500. package/esm/tools/display.js.map +1 -0
  501. package/esm/tools/encoder.d.ts +54 -0
  502. package/esm/tools/encoder.js +37 -0
  503. package/esm/tools/encoder.js.map +1 -0
  504. package/esm/tools/experimentalFeatures.d.ts +21 -0
  505. package/esm/tools/experimentalFeatures.js +42 -0
  506. package/esm/tools/experimentalFeatures.js.map +1 -0
  507. package/esm/tools/getZoneJsOriginalValue.d.ts +19 -0
  508. package/esm/tools/getZoneJsOriginalValue.js +26 -0
  509. package/esm/tools/getZoneJsOriginalValue.js.map +1 -0
  510. package/esm/tools/globalObject.d.ts +19 -0
  511. package/esm/tools/globalObject.js +40 -0
  512. package/esm/tools/globalObject.js.map +1 -0
  513. package/esm/tools/instrumentMethod.d.ts +75 -0
  514. package/esm/tools/instrumentMethod.js +114 -0
  515. package/esm/tools/instrumentMethod.js.map +1 -0
  516. package/esm/tools/matchOption.d.ts +8 -0
  517. package/esm/tools/matchOption.js +31 -0
  518. package/esm/tools/matchOption.js.map +1 -0
  519. package/esm/tools/mergeInto.d.ts +25 -0
  520. package/esm/tools/mergeInto.js +93 -0
  521. package/esm/tools/mergeInto.js.map +1 -0
  522. package/esm/tools/monitor.d.ts +9 -0
  523. package/esm/tools/monitor.js +51 -0
  524. package/esm/tools/monitor.js.map +1 -0
  525. package/esm/tools/observable.d.ts +30 -0
  526. package/esm/tools/observable.js +83 -0
  527. package/esm/tools/observable.js.map +1 -0
  528. package/esm/tools/queueMicrotask.d.ts +1 -0
  529. package/esm/tools/queueMicrotask.js +14 -0
  530. package/esm/tools/queueMicrotask.js.map +1 -0
  531. package/esm/tools/readBytesFromStream.d.ts +10 -0
  532. package/esm/tools/readBytesFromStream.js +25 -0
  533. package/esm/tools/readBytesFromStream.js.map +1 -0
  534. package/esm/tools/requestIdleCallback.d.ts +12 -0
  535. package/esm/tools/requestIdleCallback.js +30 -0
  536. package/esm/tools/requestIdleCallback.js.map +1 -0
  537. package/esm/tools/sendToExtension.d.ts +3 -0
  538. package/esm/tools/sendToExtension.js +8 -0
  539. package/esm/tools/sendToExtension.js.map +1 -0
  540. package/esm/tools/serialisation/context.d.ts +9 -0
  541. package/esm/tools/serialisation/context.js +2 -0
  542. package/esm/tools/serialisation/context.js.map +1 -0
  543. package/esm/tools/serialisation/jsonStringify.d.ts +13 -0
  544. package/esm/tools/serialisation/jsonStringify.js +44 -0
  545. package/esm/tools/serialisation/jsonStringify.js.map +1 -0
  546. package/esm/tools/serialisation/sanitize.d.ts +18 -0
  547. package/esm/tools/serialisation/sanitize.js +185 -0
  548. package/esm/tools/serialisation/sanitize.js.map +1 -0
  549. package/esm/tools/stackTrace/computeStackTrace.d.ts +25 -0
  550. package/esm/tools/stackTrace/computeStackTrace.js +183 -0
  551. package/esm/tools/stackTrace/computeStackTrace.js.map +1 -0
  552. package/esm/tools/stackTrace/handlingStack.d.ts +10 -0
  553. package/esm/tools/stackTrace/handlingStack.js +41 -0
  554. package/esm/tools/stackTrace/handlingStack.js.map +1 -0
  555. package/esm/tools/taskQueue.d.ts +15 -0
  556. package/esm/tools/taskQueue.js +50 -0
  557. package/esm/tools/taskQueue.js.map +1 -0
  558. package/esm/tools/timer.d.ts +5 -0
  559. package/esm/tools/timer.js +16 -0
  560. package/esm/tools/timer.js.map +1 -0
  561. package/esm/tools/utils/arrayUtils.d.ts +3 -0
  562. package/esm/tools/utils/arrayUtils.js +15 -0
  563. package/esm/tools/utils/arrayUtils.js.map +1 -0
  564. package/esm/tools/utils/browserDetection.d.ts +8 -0
  565. package/esm/tools/utils/browserDetection.js +28 -0
  566. package/esm/tools/utils/browserDetection.js.map +1 -0
  567. package/esm/tools/utils/byteUtils.d.ts +8 -0
  568. package/esm/tools/utils/byteUtils.js +29 -0
  569. package/esm/tools/utils/byteUtils.js.map +1 -0
  570. package/esm/tools/utils/functionUtils.d.ts +8 -0
  571. package/esm/tools/utils/functionUtils.js +39 -0
  572. package/esm/tools/utils/functionUtils.js.map +1 -0
  573. package/esm/tools/utils/numberUtils.d.ts +8 -0
  574. package/esm/tools/utils/numberUtils.js +17 -0
  575. package/esm/tools/utils/numberUtils.js.map +1 -0
  576. package/esm/tools/utils/objectUtils.d.ts +10 -0
  577. package/esm/tools/utils/objectUtils.js +17 -0
  578. package/esm/tools/utils/objectUtils.js.map +1 -0
  579. package/esm/tools/utils/polyfills.d.ts +7 -0
  580. package/esm/tools/utils/polyfills.js +18 -0
  581. package/esm/tools/utils/polyfills.js.map +1 -0
  582. package/esm/tools/utils/responseUtils.d.ts +2 -0
  583. package/esm/tools/utils/responseUtils.js +13 -0
  584. package/esm/tools/utils/responseUtils.js.map +1 -0
  585. package/esm/tools/utils/stringUtils.d.ts +23 -0
  586. package/esm/tools/utils/stringUtils.js +84 -0
  587. package/esm/tools/utils/stringUtils.js.map +1 -0
  588. package/esm/tools/utils/timeUtils.d.ts +53 -0
  589. package/esm/tools/utils/timeUtils.js +84 -0
  590. package/esm/tools/utils/timeUtils.js.map +1 -0
  591. package/esm/tools/utils/timezone.d.ts +1 -0
  592. package/esm/tools/utils/timezone.js +10 -0
  593. package/esm/tools/utils/timezone.js.map +1 -0
  594. package/esm/tools/utils/typeUtils.d.ts +4 -0
  595. package/esm/tools/utils/typeUtils.js +13 -0
  596. package/esm/tools/utils/typeUtils.js.map +1 -0
  597. package/esm/tools/utils/urlPolyfill.d.ts +5 -0
  598. package/esm/tools/utils/urlPolyfill.js +52 -0
  599. package/esm/tools/utils/urlPolyfill.js.map +1 -0
  600. package/esm/tools/valueHistory.d.ts +27 -0
  601. package/esm/tools/valueHistory.js +100 -0
  602. package/esm/tools/valueHistory.js.map +1 -0
  603. package/esm/transport/batch.d.ts +16 -0
  604. package/esm/transport/batch.js +106 -0
  605. package/esm/transport/batch.js.map +1 -0
  606. package/esm/transport/eventBridge.d.ts +21 -0
  607. package/esm/transport/eventBridge.js +41 -0
  608. package/esm/transport/eventBridge.js.map +1 -0
  609. package/esm/transport/flushController.d.ts +65 -0
  610. package/esm/transport/flushController.js +119 -0
  611. package/esm/transport/flushController.js.map +1 -0
  612. package/esm/transport/httpRequest.d.ts +57 -0
  613. package/esm/transport/httpRequest.js +101 -0
  614. package/esm/transport/httpRequest.js.map +1 -0
  615. package/esm/transport/index.d.ts +7 -0
  616. package/esm/transport/index.js +5 -0
  617. package/esm/transport/index.js.map +1 -0
  618. package/esm/transport/sendWithRetryStrategy.d.ts +41 -0
  619. package/esm/transport/sendWithRetryStrategy.js +158 -0
  620. package/esm/transport/sendWithRetryStrategy.js.map +1 -0
  621. package/package.json +28 -0
  622. package/src/boot/displayAlreadyInitializedError.ts +8 -0
  623. package/src/boot/init.ts +54 -0
  624. package/src/browser/addEventListener.ts +145 -0
  625. package/src/browser/browser.types.ts +84 -0
  626. package/src/browser/cookie.ts +122 -0
  627. package/src/browser/fetchObservable.ts +167 -0
  628. package/src/browser/pageMayExitObservable.ts +56 -0
  629. package/src/browser/runOnReadyState.ts +25 -0
  630. package/src/browser/xhrObservable.ts +134 -0
  631. package/src/domain/allowedTrackingOrigins.ts +29 -0
  632. package/src/domain/bufferedData.ts +32 -0
  633. package/src/domain/configuration/configuration.ts +409 -0
  634. package/src/domain/configuration/endpointBuilder.ts +105 -0
  635. package/src/domain/configuration/index.ts +12 -0
  636. package/src/domain/configuration/transportConfiguration.ts +86 -0
  637. package/src/domain/connectivity/connectivity.ts +31 -0
  638. package/src/domain/connectivity/index.ts +1 -0
  639. package/src/domain/console/consoleObservable.ts +118 -0
  640. package/src/domain/context/contextConstants.ts +27 -0
  641. package/src/domain/context/contextManager.ts +81 -0
  642. package/src/domain/context/contextUtils.ts +14 -0
  643. package/src/domain/context/defineContextMethod.ts +31 -0
  644. package/src/domain/context/storeContextManager.ts +55 -0
  645. package/src/domain/contexts/accountContext.ts +47 -0
  646. package/src/domain/contexts/globalContext.ts +30 -0
  647. package/src/domain/contexts/rumInternalContext.type.ts +15 -0
  648. package/src/domain/contexts/userContext.ts +148 -0
  649. package/src/domain/deflate/deflate.types.ts +57 -0
  650. package/src/domain/deflate/index.ts +1 -0
  651. package/src/domain/error/error.ts +127 -0
  652. package/src/domain/error/error.types.ts +64 -0
  653. package/src/domain/error/trackRuntimeError.ts +50 -0
  654. package/src/domain/eventRateLimiter/createEventRateLimiter.ts +49 -0
  655. package/src/domain/extension/extensionUtils.ts +28 -0
  656. package/src/domain/intakeSites.ts +6 -0
  657. package/src/domain/report/browser.types.ts +38 -0
  658. package/src/domain/report/reportObservable.ts +133 -0
  659. package/src/domain/resourceUtils.ts +21 -0
  660. package/src/domain/session/README.md +193 -0
  661. package/src/domain/session/oldCookiesMigration.ts +42 -0
  662. package/src/domain/session/sessionConstants.ts +19 -0
  663. package/src/domain/session/sessionManager.ts +262 -0
  664. package/src/domain/session/sessionState.ts +83 -0
  665. package/src/domain/session/sessionStateValidation.ts +9 -0
  666. package/src/domain/session/sessionStore.ts +250 -0
  667. package/src/domain/session/sessionStoreOperations.ts +131 -0
  668. package/src/domain/session/storeStrategies/sessionInCookie.ts +146 -0
  669. package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +44 -0
  670. package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +16 -0
  671. package/src/domain/synthetics/syntheticsWorkerValues.ts +38 -0
  672. package/src/domain/tags.ts +75 -0
  673. package/src/domain/telemetry/index.ts +22 -0
  674. package/src/domain/telemetry/rawTelemetryEvent.types.ts +22 -0
  675. package/src/domain/telemetry/telemetry.ts +344 -0
  676. package/src/domain/telemetry/telemetryEvent.types.ts +907 -0
  677. package/src/domain/trackingConsent.ts +34 -0
  678. package/src/domain/userAgentData/index.ts +1 -0
  679. package/src/domain/userAgentData/userAgentData.ts +163 -0
  680. package/src/index.ts +169 -0
  681. package/src/tools/abstractHooks.ts +72 -0
  682. package/src/tools/abstractLifeCycle.ts +46 -0
  683. package/src/tools/boundedBuffer.ts +44 -0
  684. package/src/tools/catchUserErrors.ts +11 -0
  685. package/src/tools/display.ts +56 -0
  686. package/src/tools/encoder.ts +103 -0
  687. package/src/tools/experimentalFeatures.ts +52 -0
  688. package/src/tools/getZoneJsOriginalValue.ts +38 -0
  689. package/src/tools/globalObject.ts +51 -0
  690. package/src/tools/instrumentMethod.ts +170 -0
  691. package/src/tools/matchOption.ts +31 -0
  692. package/src/tools/mergeInto.ts +177 -0
  693. package/src/tools/monitor.ts +71 -0
  694. package/src/tools/observable.ts +103 -0
  695. package/src/tools/queueMicrotask.ts +13 -0
  696. package/src/tools/readBytesFromStream.ts +37 -0
  697. package/src/tools/requestIdleCallback.ts +40 -0
  698. package/src/tools/sendToExtension.ts +14 -0
  699. package/src/tools/serialisation/context.ts +11 -0
  700. package/src/tools/serialisation/jsonStringify.ts +53 -0
  701. package/src/tools/serialisation/sanitize.ts +273 -0
  702. package/src/tools/stackTrace/computeStackTrace.ts +251 -0
  703. package/src/tools/stackTrace/handlingStack.ts +48 -0
  704. package/src/tools/taskQueue.ts +63 -0
  705. package/src/tools/timer.ts +21 -0
  706. package/src/tools/utils/arrayUtils.ts +16 -0
  707. package/src/tools/utils/browserDetection.ts +39 -0
  708. package/src/tools/utils/byteUtils.ts +40 -0
  709. package/src/tools/utils/functionUtils.ts +45 -0
  710. package/src/tools/utils/numberUtils.ts +19 -0
  711. package/src/tools/utils/objectUtils.ts +19 -0
  712. package/src/tools/utils/polyfills.ts +23 -0
  713. package/src/tools/utils/responseUtils.ts +12 -0
  714. package/src/tools/utils/stringUtils.ts +86 -0
  715. package/src/tools/utils/timeUtils.ts +117 -0
  716. package/src/tools/utils/timezone.ts +9 -0
  717. package/src/tools/utils/typeUtils.ts +12 -0
  718. package/src/tools/utils/urlPolyfill.ts +55 -0
  719. package/src/tools/valueHistory.ts +151 -0
  720. package/src/transport/batch.ts +144 -0
  721. package/src/transport/eventBridge.ts +60 -0
  722. package/src/transport/flushController.ts +150 -0
  723. package/src/transport/httpRequest.ts +191 -0
  724. package/src/transport/index.ts +7 -0
  725. package/src/transport/sendWithRetryStrategy.ts +222 -0
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Cross-browser stack trace computation.
3
+ *
4
+ * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js
5
+ */
6
+
7
+ export interface StackFrame {
8
+ url?: string
9
+ func?: string
10
+ /** The arguments passed to the function, if known. */
11
+ args?: string[]
12
+ line?: number
13
+ column?: number
14
+ /** An array of source code lines; the middle element corresponds to the correct line. */
15
+ context?: string[]
16
+ }
17
+
18
+ export interface StackTrace {
19
+ name?: string
20
+ message?: string
21
+ url?: string
22
+ stack: StackFrame[]
23
+ incomplete?: boolean
24
+ partial?: boolean
25
+ }
26
+
27
+ const UNKNOWN_FUNCTION = '?'
28
+
29
+ export function computeStackTrace(ex: unknown): StackTrace {
30
+ const stack: StackFrame[] = []
31
+
32
+ let stackProperty = tryToGetString(ex, 'stack')
33
+ const exString = String(ex)
34
+ if (stackProperty && stackProperty.startsWith(exString)) {
35
+ stackProperty = stackProperty.slice(exString.length)
36
+ }
37
+ if (stackProperty) {
38
+ stackProperty.split('\n').forEach((line) => {
39
+ const stackFrame =
40
+ parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line)
41
+ if (stackFrame) {
42
+ if (!stackFrame.func && stackFrame.line) {
43
+ stackFrame.func = UNKNOWN_FUNCTION
44
+ }
45
+
46
+ stack.push(stackFrame)
47
+ }
48
+ })
49
+ }
50
+
51
+ if (stack.length > 0 && isWronglyReportingCustomErrors() && ex instanceof Error) {
52
+ // if we are wrongly reporting custom errors
53
+ const constructors: string[] = []
54
+
55
+ // go through each inherited constructor
56
+ let currentPrototype: object | undefined = ex
57
+ while (
58
+ (currentPrototype = Object.getPrototypeOf(currentPrototype)) &&
59
+ isNonNativeClassPrototype(currentPrototype)
60
+ ) {
61
+ const constructorName = currentPrototype.constructor?.name || UNKNOWN_FUNCTION
62
+ constructors.push(constructorName)
63
+ }
64
+
65
+ // traverse the stacktrace in reverse order because the stacktrace starts with the last inherited constructor
66
+ // we check constructor names to ensure we remove the correct frame (and there isn't a weird unsupported environment behavior)
67
+ for (let i = constructors.length - 1; i >= 0 && stack[0]?.func === constructors[i]; i--) {
68
+ // if the first stack frame is the custom error constructor
69
+ // null stack frames may represent frames that failed to be parsed because the error class did not have a constructor
70
+ stack.shift() // remove it
71
+ }
72
+ }
73
+
74
+ return {
75
+ message: tryToGetString(ex, 'message'),
76
+ name: tryToGetString(ex, 'name'),
77
+ stack,
78
+ }
79
+ }
80
+ const fileUrl =
81
+ '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|snippet|<anonymous>|\\w+\\.|\\/).*?)'
82
+ const filePosition = '(?::(\\d+))'
83
+ const CHROME_LINE_RE = new RegExp(`^\\s*at (.*?) ?\\(${fileUrl}${filePosition}?${filePosition}?\\)?\\s*$`, 'i')
84
+
85
+ const CHROME_EVAL_RE = new RegExp(`\\((\\S*)${filePosition}${filePosition}\\)`)
86
+
87
+ function parseChromeLine(line: string): StackFrame | undefined {
88
+ const parts = CHROME_LINE_RE.exec(line)
89
+
90
+ if (!parts) {
91
+ return
92
+ }
93
+
94
+ const isNative = parts[2] && parts[2].indexOf('native') === 0 // start of line
95
+ const isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line
96
+ const submatch = CHROME_EVAL_RE.exec(parts[2])
97
+
98
+ if (isEval && submatch) {
99
+ // throw out eval line/column and use top-most line/column number
100
+ parts[2] = submatch[1] // url
101
+ parts[3] = submatch[2] // line
102
+ parts[4] = submatch[3] // column
103
+ }
104
+
105
+ return {
106
+ args: isNative ? [parts[2]] : [],
107
+ column: parts[4] ? +parts[4] : undefined,
108
+ func: parts[1] || UNKNOWN_FUNCTION,
109
+ line: parts[3] ? +parts[3] : undefined,
110
+ url: !isNative ? parts[2] : undefined,
111
+ }
112
+ }
113
+
114
+ const CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(`^\\s*at ?${fileUrl}${filePosition}?${filePosition}??\\s*$`, 'i')
115
+
116
+ function parseChromeAnonymousLine(line: string): StackFrame | undefined {
117
+ const parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)
118
+
119
+ if (!parts) {
120
+ return
121
+ }
122
+
123
+ return {
124
+ args: [],
125
+ column: parts[3] ? +parts[3] : undefined,
126
+ func: UNKNOWN_FUNCTION,
127
+ line: parts[2] ? +parts[2] : undefined,
128
+ url: parts[1],
129
+ }
130
+ }
131
+
132
+ const WINJS_LINE_RE =
133
+ /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i
134
+
135
+ function parseWinLine(line: string): StackFrame | undefined {
136
+ const parts = WINJS_LINE_RE.exec(line)
137
+ if (!parts) {
138
+ return
139
+ }
140
+
141
+ return {
142
+ args: [],
143
+ column: parts[4] ? +parts[4] : undefined,
144
+ func: parts[1] || UNKNOWN_FUNCTION,
145
+ line: +parts[3],
146
+ url: parts[2],
147
+ }
148
+ }
149
+
150
+ const GECKO_LINE_RE =
151
+ /^\s*(.*?)(?:\((.*?)\))?(?:(?:(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle|\[wasm code\])(?::(\d+))?(?::(\d+))?)|@)\s*$/i
152
+ const GECKO_EVAL_RE = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i
153
+
154
+ function parseGeckoLine(line: string): StackFrame | undefined {
155
+ const parts = GECKO_LINE_RE.exec(line)
156
+ if (!parts) {
157
+ return
158
+ }
159
+
160
+ const isEval = parts[3] && parts[3].indexOf(' > eval') > -1
161
+ const submatch = GECKO_EVAL_RE.exec(parts[3])
162
+
163
+ if (isEval && submatch) {
164
+ // throw out eval line/column and use top-most line number
165
+ parts[3] = submatch[1]
166
+ parts[4] = submatch[2]
167
+ parts[5] = undefined! // no column when eval
168
+ }
169
+
170
+ return {
171
+ args: parts[2] ? parts[2].split(',') : [],
172
+ column: parts[5] ? +parts[5] : undefined,
173
+ func: parts[1] || UNKNOWN_FUNCTION,
174
+ line: parts[4] ? +parts[4] : undefined,
175
+ url: parts[3],
176
+ }
177
+ }
178
+
179
+ function tryToGetString(candidate: unknown, property: string) {
180
+ if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {
181
+ return undefined
182
+ }
183
+ const value = (candidate as { [k: string]: unknown })[property]
184
+ return typeof value === 'string' ? value : undefined
185
+ }
186
+
187
+ export function computeStackTraceFromOnErrorMessage(
188
+ messageObj: unknown,
189
+ url?: string,
190
+ line?: number,
191
+ column?: number
192
+ ): StackTrace | undefined {
193
+ if (url === undefined) {
194
+ return
195
+ }
196
+ const { name, message } = tryToParseMessage(messageObj)
197
+ return {
198
+ name,
199
+ message,
200
+ stack: [{ url, column, line }],
201
+ }
202
+ }
203
+
204
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types
205
+ const ERROR_TYPES_RE =
206
+ /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/
207
+
208
+ function tryToParseMessage(messageObj: unknown) {
209
+ let name
210
+ let message
211
+ if ({}.toString.call(messageObj) === '[object String]') {
212
+ ;[, name, message] = ERROR_TYPES_RE.exec(messageObj as string)!
213
+ }
214
+ return { name, message }
215
+ }
216
+
217
+
218
+ // Custom error stacktrace fix
219
+ // Some browsers (safari/firefox) add the error constructor as a frame in the stacktrace
220
+ // In order to normalize the stacktrace, we need to remove it
221
+
222
+ function isNonNativeClassPrototype(prototype: object) {
223
+ return String(prototype.constructor).startsWith('class ')
224
+ }
225
+
226
+ let isWronglyReportingCustomErrorsCache: boolean | undefined
227
+
228
+ function isWronglyReportingCustomErrors() {
229
+ if (isWronglyReportingCustomErrorsCache !== undefined) {
230
+ return isWronglyReportingCustomErrorsCache
231
+ }
232
+
233
+ /* eslint-disable no-restricted-syntax */
234
+ class KubesenseTestCustomError extends Error {
235
+ constructor() {
236
+ super()
237
+ this.name = 'Error' // set name to Error so that no browser would default to the constructor name
238
+ }
239
+ }
240
+
241
+ const [customError, nativeError] = [KubesenseTestCustomError, Error].map((errConstructor) => new errConstructor()) // so that both errors should exactly have the same stacktrace
242
+
243
+ isWronglyReportingCustomErrorsCache =
244
+ // If customError is not a class, it means that this was built with ES5 as target, converting the class to a normal object.
245
+ // Thus, error constructors will be reported on all browsers, which is the expected behavior.
246
+ isNonNativeClassPrototype(Object.getPrototypeOf(customError)) &&
247
+ // If the browser is correctly reporting the stacktrace, the normal error stacktrace should be the same as the custom error stacktrace
248
+ nativeError.stack !== customError.stack
249
+
250
+ return isWronglyReportingCustomErrorsCache
251
+ }
@@ -0,0 +1,48 @@
1
+ import { callMonitored } from '../monitor'
2
+ import type { StackTrace } from './computeStackTrace'
3
+ import { computeStackTrace } from './computeStackTrace'
4
+
5
+ /**
6
+ * Creates a stacktrace without SDK internal frames.
7
+ * Constraints:
8
+ * - Has to be called at the utmost position of the call stack.
9
+ * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.
10
+ */
11
+ export function createHandlingStack(
12
+ type: 'console error' | 'action' | 'error' | 'instrumented method' | 'log' | 'react error'
13
+ ): string {
14
+ /**
15
+ * Skip the two internal frames:
16
+ * - SDK API (console.error, ...)
17
+ * - this function
18
+ * in order to keep only the user calls
19
+ */
20
+ const internalFramesToSkip = 2
21
+ const error = new Error(type)
22
+ error.name = 'HandlingStack'
23
+ let formattedStack: string
24
+
25
+ callMonitored(() => {
26
+ const stackTrace = computeStackTrace(error)
27
+ stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip)
28
+ formattedStack = toStackTraceString(stackTrace)
29
+ })
30
+
31
+ return formattedStack!
32
+ }
33
+
34
+ export function toStackTraceString(stack: StackTrace) {
35
+ let result = formatErrorMessage(stack)
36
+ stack.stack.forEach((frame) => {
37
+ const func = frame.func === '?' ? '<anonymous>' : frame.func
38
+ const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : ''
39
+ const line = frame.line ? `:${frame.line}` : ''
40
+ const column = frame.line && frame.column ? `:${frame.column}` : ''
41
+ result += `\n at ${func!}${args} @ ${frame.url!}${line}${column}`
42
+ })
43
+ return result
44
+ }
45
+
46
+ export function formatErrorMessage(stack: StackTrace) {
47
+ return `${stack.name || 'Error'}: ${stack.message!}`
48
+ }
@@ -0,0 +1,63 @@
1
+ import { ONE_SECOND } from './utils/timeUtils'
2
+ import { requestIdleCallback } from './requestIdleCallback'
3
+
4
+ /**
5
+ * Maximum delay before starting to execute tasks in the queue. We don't want to wait too long
6
+ * before running tasks, as it might hurt reliability (ex: if the user navigates away, we might lose
7
+ * the opportunity to send some data). We also don't want to run tasks too often, as it might hurt
8
+ * performance.
9
+ */
10
+ const IDLE_CALLBACK_TIMEOUT = ONE_SECOND
11
+
12
+ /**
13
+ * Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is
14
+ * reached. We should not run tasks for too long as it will hurt performance, but we should still
15
+ * run some tasks to avoid postponing them forever.
16
+ *
17
+ * Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.
18
+ */
19
+ export const MAX_EXECUTION_TIME_ON_TIMEOUT = 30
20
+
21
+ export interface TaskQueue {
22
+ push(task: Task): void
23
+ stop(): void
24
+ }
25
+
26
+ type Task = () => void
27
+
28
+ export function createTaskQueue(): TaskQueue {
29
+ const pendingTasks: Task[] = []
30
+
31
+ function run(deadline: IdleDeadline) {
32
+ let executionTimeRemaining: () => number
33
+ if (deadline.didTimeout) {
34
+ const start = performance.now()
35
+ executionTimeRemaining = () => MAX_EXECUTION_TIME_ON_TIMEOUT - (performance.now() - start)
36
+ } else {
37
+ executionTimeRemaining = deadline.timeRemaining.bind(deadline)
38
+ }
39
+
40
+ while (executionTimeRemaining() > 0 && pendingTasks.length) {
41
+ pendingTasks.shift()!()
42
+ }
43
+
44
+ if (pendingTasks.length) {
45
+ scheduleNextRun()
46
+ }
47
+ }
48
+
49
+ function scheduleNextRun() {
50
+ requestIdleCallback(run, { timeout: IDLE_CALLBACK_TIMEOUT })
51
+ }
52
+
53
+ return {
54
+ push(task) {
55
+ if (pendingTasks.push(task) === 1) {
56
+ scheduleNextRun()
57
+ }
58
+ },
59
+ stop() {
60
+ pendingTasks.length = 0
61
+ },
62
+ }
63
+ }
@@ -0,0 +1,21 @@
1
+ import { getZoneJsOriginalValue } from './getZoneJsOriginalValue'
2
+ import { monitor } from './monitor'
3
+ import { getGlobalObject } from './globalObject'
4
+
5
+ export type TimeoutId = ReturnType<typeof globalThis.setTimeout>
6
+
7
+ export function setTimeout(callback: () => void, delay?: number): TimeoutId {
8
+ return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay)
9
+ }
10
+
11
+ export function clearTimeout(timeoutId: TimeoutId | undefined) {
12
+ getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId)
13
+ }
14
+
15
+ export function setInterval(callback: () => void, delay?: number): TimeoutId {
16
+ return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay)
17
+ }
18
+
19
+ export function clearInterval(timeoutId: TimeoutId | undefined) {
20
+ getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId)
21
+ }
@@ -0,0 +1,16 @@
1
+ export function removeDuplicates<T>(array: T[]) {
2
+ const set = new Set<T>()
3
+ array.forEach((item) => set.add(item))
4
+ return Array.from(set)
5
+ }
6
+
7
+ export function removeItem<T>(array: T[], item: T) {
8
+ const index = array.indexOf(item)
9
+ if (index >= 0) {
10
+ array.splice(index, 1)
11
+ }
12
+ }
13
+
14
+ export function isNonEmptyArray<T>(value: unknown): value is T[] {
15
+ return Array.isArray(value) && value.length > 0
16
+ }
@@ -0,0 +1,39 @@
1
+ // Exported only for tests
2
+ export const enum Browser {
3
+ CHROMIUM,
4
+ SAFARI,
5
+ OTHER,
6
+ }
7
+
8
+ export function isChromium() {
9
+ return detectBrowserCached() === Browser.CHROMIUM
10
+ }
11
+
12
+ export function isSafari() {
13
+ return detectBrowserCached() === Browser.SAFARI
14
+ }
15
+
16
+ let browserCache: Browser | undefined
17
+ function detectBrowserCached() {
18
+ return browserCache ?? (browserCache = detectBrowser())
19
+ }
20
+
21
+ // Exported only for tests
22
+ export function detectBrowser(browserWindow: Window = window) {
23
+ const userAgent = browserWindow.navigator.userAgent
24
+ if ((browserWindow as any).chrome || /HeadlessChrome/.test(userAgent)) {
25
+ return Browser.CHROMIUM
26
+ }
27
+
28
+ if (
29
+ // navigator.vendor is deprecated, but it is the most resilient way we found to detect
30
+ // "Apple maintained browsers" (AKA Safari). If one day it gets removed, we still have the
31
+ // useragent test as a semi-working fallback.
32
+ browserWindow.navigator.vendor?.indexOf('Apple') === 0 ||
33
+ (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))
34
+ ) {
35
+ return Browser.SAFARI
36
+ }
37
+
38
+ return Browser.OTHER
39
+ }
@@ -0,0 +1,40 @@
1
+ export const ONE_KIBI_BYTE = 1024
2
+ export const ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE
3
+
4
+ // eslint-disable-next-line no-control-regex
5
+ const HAS_MULTI_BYTES_CHARACTERS = /[^\u0000-\u007F]/
6
+
7
+ export interface Uint8ArrayBuffer extends Uint8Array {
8
+ readonly buffer: ArrayBuffer
9
+
10
+ subarray(begin?: number, end?: number): Uint8ArrayBuffer
11
+ }
12
+
13
+ export function computeBytesCount(candidate: string): number {
14
+ // Accurate bytes count computations can degrade performances when there is a lot of events to process
15
+ if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {
16
+ return candidate.length
17
+ }
18
+
19
+ if (window.TextEncoder !== undefined) {
20
+ return new TextEncoder().encode(candidate).length
21
+ }
22
+
23
+ return new Blob([candidate]).size
24
+ }
25
+
26
+ export function concatBuffers(buffers: Uint8ArrayBuffer[]): Uint8ArrayBuffer {
27
+ // Optimization: if there is a single buffer, no need to copy it
28
+ if (buffers.length === 1) {
29
+ return buffers[0]
30
+ }
31
+
32
+ const length = buffers.reduce((total, buffer) => total + buffer.length, 0)
33
+ const result: Uint8ArrayBuffer = new Uint8Array(length)
34
+ let offset = 0
35
+ for (const buffer of buffers) {
36
+ result.set(buffer, offset)
37
+ offset += buffer.length
38
+ }
39
+ return result
40
+ }
@@ -0,0 +1,45 @@
1
+ import type { TimeoutId } from '../timer'
2
+ import { setTimeout, clearTimeout } from '../timer'
3
+
4
+ // use lodash API
5
+ export function throttle<T extends (...args: any[]) => void>(
6
+ fn: T,
7
+ wait: number,
8
+ options?: { leading?: boolean; trailing?: boolean }
9
+ ) {
10
+ const needLeadingExecution = options && options.leading !== undefined ? options.leading : true
11
+ const needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true
12
+ let inWaitPeriod = false
13
+ let pendingExecutionWithParameters: Parameters<T> | undefined
14
+ let pendingTimeoutId: TimeoutId
15
+
16
+ return {
17
+ throttled: (...parameters: Parameters<T>) => {
18
+ if (inWaitPeriod) {
19
+ pendingExecutionWithParameters = parameters
20
+ return
21
+ }
22
+ if (needLeadingExecution) {
23
+ fn(...parameters)
24
+ } else {
25
+ pendingExecutionWithParameters = parameters
26
+ }
27
+ inWaitPeriod = true
28
+ pendingTimeoutId = setTimeout(() => {
29
+ if (needTrailingExecution && pendingExecutionWithParameters) {
30
+ fn(...pendingExecutionWithParameters)
31
+ }
32
+ inWaitPeriod = false
33
+ pendingExecutionWithParameters = undefined
34
+ }, wait)
35
+ },
36
+ cancel: () => {
37
+ clearTimeout(pendingTimeoutId)
38
+ inWaitPeriod = false
39
+ pendingExecutionWithParameters = undefined
40
+ },
41
+ }
42
+ }
43
+
44
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
45
+ export function noop() {}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Return true if the draw is successful
3
+ * @param threshold - Threshold between 0 and 100
4
+ */
5
+ export function performDraw(threshold: number): boolean {
6
+ return threshold !== 0 && Math.random() * 100 <= threshold
7
+ }
8
+
9
+ export function round(num: number, decimals: 0 | 1 | 2 | 3 | 4) {
10
+ return +num.toFixed(decimals)
11
+ }
12
+
13
+ export function isPercentage(value: unknown) {
14
+ return isNumber(value) && value >= 0 && value <= 100
15
+ }
16
+
17
+ export function isNumber(value: unknown): value is number {
18
+ return typeof value === 'number'
19
+ }
@@ -0,0 +1,19 @@
1
+ export function shallowClone<T>(object: T): T & Record<string, never> {
2
+ return { ...object } as T & Record<string, never>
3
+ }
4
+
5
+ export function objectHasValue<T extends { [key: string]: unknown }>(object: T, value: unknown): value is T[keyof T] {
6
+ return Object.keys(object).some((key) => object[key] === value)
7
+ }
8
+
9
+ export function isEmptyObject(object: object) {
10
+ return Object.keys(object).length === 0
11
+ }
12
+
13
+ export function mapValues<A, B>(object: { [key: string]: A }, fn: (arg: A) => B) {
14
+ const newObject: { [key: string]: B } = {}
15
+ for (const key of Object.keys(object)) {
16
+ newObject[key] = fn(object[key])
17
+ }
18
+ return newObject
19
+ }
@@ -0,0 +1,23 @@
1
+ export function findLast<T, S extends T>(
2
+ array: readonly T[],
3
+ predicate: (item: T, index: number, array: readonly T[]) => item is S
4
+ ): S | undefined {
5
+ for (let i = array.length - 1; i >= 0; i -= 1) {
6
+ const item = array[i]
7
+ if (predicate(item, i, array)) {
8
+ return item
9
+ }
10
+ }
11
+ return undefined
12
+ }
13
+
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
16
+
17
+ export function objectValues<T = unknown>(object: { [key: string]: T }) {
18
+ return Object.values(object)
19
+ }
20
+
21
+ export function objectEntries<T = unknown>(object: { [key: string]: T }): Array<[string, T]> {
22
+ return Object.entries(object)
23
+ }
@@ -0,0 +1,12 @@
1
+ export function isServerError(status: number) {
2
+ return status >= 500
3
+ }
4
+
5
+ export function tryToClone(response: Response): Response | undefined {
6
+ try {
7
+ return response.clone()
8
+ } catch {
9
+ // clone can throw if the response has already been used by another instrumentation or is disturbed
10
+ return
11
+ }
12
+ }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * UUID v4
3
+ * from https://gist.github.com/jed/982883
4
+ */
5
+ export function generateUUID(placeholder?: string): string {
6
+ return placeholder
7
+ ? // eslint-disable-next-line no-bitwise
8
+ (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)
9
+ : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID)
10
+ }
11
+
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
74
+ }
75
+
76
+ export function safeTruncate(candidate: string, length: number, suffix = '') {
77
+ const lastChar = candidate.charCodeAt(length - 1)
78
+ const isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff
79
+ const correctedLength = isLastCharSurrogatePair ? length + 1 : length
80
+
81
+ if (candidate.length <= correctedLength) {
82
+ return candidate
83
+ }
84
+
85
+ return `${candidate.slice(0, correctedLength)}${suffix}`
86
+ }