@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,250 @@
1
+ import { clearInterval, setInterval } from '../../tools/timer'
2
+ import { Observable } from '../../tools/observable'
3
+ import { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils'
4
+ import { throttle } from '../../tools/utils/functionUtils'
5
+ import { generateUUID } from '../../tools/utils/stringUtils'
6
+ import type { InitConfiguration, Configuration } from '../configuration'
7
+ import { display } from '../../tools/display'
8
+ import { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie'
9
+ import type { SessionStoreStrategy, SessionStoreStrategyType } from './storeStrategies/sessionStoreStrategy'
10
+ import type { SessionState } from './sessionState'
11
+ import {
12
+ getExpiredSessionState,
13
+ isSessionInExpiredState,
14
+ isSessionInNotStartedState,
15
+ isSessionStarted,
16
+ } from './sessionState'
17
+ import { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage'
18
+ import { processSessionStoreOperations } from './sessionStoreOperations'
19
+ import { SESSION_NOT_TRACKED, SessionPersistence } from './sessionConstants'
20
+
21
+ export interface SessionStore {
22
+ expandOrRenewSession: () => void
23
+ expandSession: () => void
24
+ getSession: () => SessionState
25
+ restartSession: () => void
26
+ renewObservable: Observable<void>
27
+ expireObservable: Observable<void>
28
+ sessionStateUpdateObservable: Observable<{ previousState: SessionState; newState: SessionState }>
29
+ expire: (hasConsent?: boolean) => void
30
+ stop: () => void
31
+ updateSessionState: (state: Partial<SessionState>) => void
32
+ }
33
+
34
+ /**
35
+ * Every second, the storage will be polled to check for any change that can occur
36
+ * to the session state in another browser tab, or another window.
37
+ * This value has been determined from our previous cookie-only implementation.
38
+ */
39
+ export const STORAGE_POLL_DELAY = ONE_SECOND
40
+
41
+ /**
42
+ * Selects the correct session store strategy type based on the configuration and storage
43
+ * availability.
44
+ */
45
+ export function selectSessionStoreStrategyType(
46
+ initConfiguration: InitConfiguration
47
+ ): SessionStoreStrategyType | undefined {
48
+ switch (initConfiguration.sessionPersistence) {
49
+ case SessionPersistence.COOKIE:
50
+ return selectCookieStrategy(initConfiguration)
51
+
52
+ case SessionPersistence.LOCAL_STORAGE:
53
+ return selectLocalStorageStrategy()
54
+
55
+ case undefined: {
56
+ let sessionStoreStrategyType = selectCookieStrategy(initConfiguration)
57
+ if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {
58
+ sessionStoreStrategyType = selectLocalStorageStrategy()
59
+ }
60
+ return sessionStoreStrategyType
61
+ }
62
+
63
+ default:
64
+ display.error(`Invalid session persistence '${String(initConfiguration.sessionPersistence)}'`)
65
+ }
66
+ }
67
+
68
+ export function getSessionStoreStrategy(
69
+ sessionStoreStrategyType: SessionStoreStrategyType,
70
+ configuration: Configuration
71
+ ) {
72
+ return sessionStoreStrategyType.type === SessionPersistence.COOKIE
73
+ ? initCookieStrategy(configuration, sessionStoreStrategyType.cookieOptions)
74
+ : initLocalStorageStrategy(configuration)
75
+ }
76
+
77
+ /**
78
+ * Different session concepts:
79
+ * - tracked, the session has an id and is updated along the user navigation
80
+ * - not tracked, the session does not have an id but it is updated along the user navigation
81
+ * - inactive, no session in store or session expired, waiting for a renew session
82
+ */
83
+ export function startSessionStore<TrackingType extends string>(
84
+ sessionStoreStrategyType: SessionStoreStrategyType,
85
+ configuration: Configuration,
86
+ productKey: string,
87
+ computeTrackingType: (rawTrackingType?: string) => TrackingType,
88
+ sessionStoreStrategy: SessionStoreStrategy = getSessionStoreStrategy(sessionStoreStrategyType, configuration)
89
+ ): SessionStore {
90
+ const renewObservable = new Observable<void>()
91
+ const expireObservable = new Observable<void>()
92
+ const sessionStateUpdateObservable = new Observable<{ previousState: SessionState; newState: SessionState }>()
93
+
94
+ const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)
95
+ let sessionCache: SessionState
96
+
97
+ startSession()
98
+
99
+ const { throttled: throttledExpandOrRenewSession, cancel: cancelExpandOrRenewSession } = throttle(() => {
100
+ processSessionStoreOperations(
101
+ {
102
+ process: (sessionState) => {
103
+ if (isSessionInNotStartedState(sessionState)) {
104
+ return
105
+ }
106
+
107
+ const synchronizedSession = synchronizeSession(sessionState)
108
+ expandOrRenewSessionState(synchronizedSession)
109
+ return synchronizedSession
110
+ },
111
+ after: (sessionState) => {
112
+ if (isSessionStarted(sessionState) && !hasSessionInCache()) {
113
+ renewSessionInCache(sessionState)
114
+ }
115
+ sessionCache = sessionState
116
+ },
117
+ },
118
+ sessionStoreStrategy
119
+ )
120
+ }, STORAGE_POLL_DELAY)
121
+
122
+ function expandSession() {
123
+ const sessionState = sessionStoreStrategy.retrieveSession()
124
+
125
+ if (isSessionInExpiredState(sessionState)) {
126
+ processSessionStoreOperations(
127
+ {
128
+ process: (sessionState: SessionState) =>
129
+ isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState, configuration) : undefined,
130
+ after: synchronizeSession,
131
+ },
132
+ sessionStoreStrategy
133
+ )
134
+ } else {
135
+ synchronizeSession(sessionState)
136
+ }
137
+ }
138
+
139
+ /**
140
+ * allows two behaviors:
141
+ * - if the session is active, synchronize the session cache without updating the session store
142
+ * - if the session is not active, clear the session store and expire the session cache
143
+ */
144
+ function watchSession() {
145
+ processSessionStoreOperations(
146
+ {
147
+ process: (sessionState) =>
148
+ isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState, configuration) : undefined,
149
+ after: synchronizeSession,
150
+ },
151
+ sessionStoreStrategy
152
+ )
153
+ }
154
+
155
+ function synchronizeSession(sessionState: SessionState) {
156
+ if (isSessionInExpiredState(sessionState)) {
157
+ sessionState.anonymousId = generateUUID()
158
+ sessionState = getExpiredSessionState(sessionState, configuration)
159
+ }
160
+ if (hasSessionInCache()) {
161
+ if (isSessionInCacheOutdated(sessionState)) {
162
+ expireSessionInCache()
163
+ } else {
164
+ sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState })
165
+ sessionCache = sessionState
166
+ }
167
+ }
168
+ return sessionState
169
+ }
170
+
171
+ function startSession() {
172
+ processSessionStoreOperations(
173
+ {
174
+ process: (sessionState) => {
175
+ if (isSessionInNotStartedState(sessionState)) {
176
+ return getExpiredSessionState(sessionState, configuration)
177
+ }
178
+ },
179
+ after: (sessionState) => {
180
+ sessionCache = sessionState
181
+ },
182
+ },
183
+ sessionStoreStrategy
184
+ )
185
+ }
186
+
187
+ function expandOrRenewSessionState(sessionState: SessionState) {
188
+ if (isSessionInNotStartedState(sessionState)) {
189
+ return false
190
+ }
191
+
192
+ const trackingType = computeTrackingType(sessionState[productKey])
193
+ sessionState[productKey] = trackingType
194
+ delete sessionState.isExpired
195
+ if (trackingType !== SESSION_NOT_TRACKED && !sessionState.id) {
196
+ sessionState.id = generateUUID()
197
+ sessionState.created = String(dateNow())
198
+ }
199
+ }
200
+
201
+ function hasSessionInCache() {
202
+ return sessionCache?.[productKey] !== undefined
203
+ }
204
+
205
+ function isSessionInCacheOutdated(sessionState: SessionState) {
206
+ return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey]
207
+ }
208
+
209
+ function expireSessionInCache() {
210
+ sessionCache = getExpiredSessionState(sessionCache, configuration)
211
+ expireObservable.notify()
212
+ }
213
+
214
+ function renewSessionInCache(sessionState: SessionState) {
215
+ sessionCache = sessionState
216
+ renewObservable.notify()
217
+ }
218
+
219
+ function updateSessionState(partialSessionState: Partial<SessionState>) {
220
+ processSessionStoreOperations(
221
+ {
222
+ process: (sessionState) => ({ ...sessionState, ...partialSessionState }),
223
+ after: synchronizeSession,
224
+ },
225
+ sessionStoreStrategy
226
+ )
227
+ }
228
+
229
+ return {
230
+ expandOrRenewSession: throttledExpandOrRenewSession,
231
+ expandSession,
232
+ getSession: () => sessionCache,
233
+ renewObservable,
234
+ expireObservable,
235
+ sessionStateUpdateObservable,
236
+ restartSession: startSession,
237
+ expire: (hasConsent?: boolean) => {
238
+ cancelExpandOrRenewSession()
239
+ if (hasConsent === false && sessionCache) {
240
+ delete sessionCache.anonymousId
241
+ }
242
+ sessionStoreStrategy.expireSession(sessionCache)
243
+ synchronizeSession(getExpiredSessionState(sessionCache, configuration))
244
+ },
245
+ stop: () => {
246
+ clearInterval(watchSessionTimeoutId)
247
+ },
248
+ updateSessionState,
249
+ }
250
+ }
@@ -0,0 +1,131 @@
1
+ import { setTimeout } from '../../tools/timer'
2
+ import { generateUUID } from '../../tools/utils/stringUtils'
3
+ import type { TimeStamp } from '../../tools/utils/timeUtils'
4
+ import { elapsed, ONE_SECOND, timeStampNow } from '../../tools/utils/timeUtils'
5
+ import type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy'
6
+ import type { SessionState } from './sessionState'
7
+ import { expandSessionState, isSessionInExpiredState } from './sessionState'
8
+
9
+ interface Operations {
10
+ process: (sessionState: SessionState) => SessionState | undefined
11
+ after?: (sessionState: SessionState) => void
12
+ }
13
+
14
+ export const LOCK_RETRY_DELAY = 10
15
+ export const LOCK_MAX_TRIES = 100
16
+
17
+ // Locks should be hold for a few milliseconds top, just the time it takes to read and write a
18
+ // cookie. Using one second should be enough in most situations.
19
+ export const LOCK_EXPIRATION_DELAY = ONE_SECOND
20
+ const LOCK_SEPARATOR = '--'
21
+
22
+ const bufferedOperations: Operations[] = []
23
+ let ongoingOperations: Operations | undefined
24
+
25
+ export function processSessionStoreOperations(
26
+ operations: Operations,
27
+ sessionStoreStrategy: SessionStoreStrategy,
28
+ numberOfRetries = 0
29
+ ) {
30
+ const { isLockEnabled, persistSession, expireSession } = sessionStoreStrategy
31
+ const persistWithLock = (session: SessionState) => persistSession({ ...session, lock: currentLock })
32
+ const retrieveStore = () => {
33
+ const { lock, ...session } = sessionStoreStrategy.retrieveSession()
34
+ return {
35
+ session,
36
+ lock: lock && !isLockExpired(lock) ? lock : undefined,
37
+ }
38
+ }
39
+
40
+ if (!ongoingOperations) {
41
+ ongoingOperations = operations
42
+ }
43
+ if (operations !== ongoingOperations) {
44
+ bufferedOperations.push(operations)
45
+ return
46
+ }
47
+ if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {
48
+ next(sessionStoreStrategy)
49
+ return
50
+ }
51
+ let currentLock: string
52
+ let currentStore = retrieveStore()
53
+ if (isLockEnabled) {
54
+ // if someone has lock, retry later
55
+ if (currentStore.lock) {
56
+ retryLater(operations, sessionStoreStrategy, numberOfRetries)
57
+ return
58
+ }
59
+ // acquire lock
60
+ currentLock = createLock()
61
+ persistWithLock(currentStore.session)
62
+ // if lock is not acquired, retry later
63
+ currentStore = retrieveStore()
64
+ if (currentStore.lock !== currentLock) {
65
+ retryLater(operations, sessionStoreStrategy, numberOfRetries)
66
+ return
67
+ }
68
+ }
69
+ let processedSession = operations.process(currentStore.session)
70
+ if (isLockEnabled) {
71
+ // if lock corrupted after process, retry later
72
+ currentStore = retrieveStore()
73
+ if (currentStore.lock !== currentLock!) {
74
+ retryLater(operations, sessionStoreStrategy, numberOfRetries)
75
+ return
76
+ }
77
+ }
78
+ if (processedSession) {
79
+ if (isSessionInExpiredState(processedSession)) {
80
+ expireSession(processedSession)
81
+ } else {
82
+ expandSessionState(processedSession)
83
+ if (isLockEnabled) {
84
+ persistWithLock(processedSession)
85
+ } else {
86
+ persistSession(processedSession)
87
+ }
88
+ }
89
+ }
90
+ if (isLockEnabled) {
91
+ // correctly handle lock around expiration would require to handle this case properly at several levels
92
+ // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it
93
+ if (!(processedSession && isSessionInExpiredState(processedSession))) {
94
+ // if lock corrupted after persist, retry later
95
+ currentStore = retrieveStore()
96
+ if (currentStore.lock !== currentLock!) {
97
+ retryLater(operations, sessionStoreStrategy, numberOfRetries)
98
+ return
99
+ }
100
+ persistSession(currentStore.session)
101
+ processedSession = currentStore.session
102
+ }
103
+ }
104
+ // call after even if session is not persisted in order to perform operations on
105
+ // up-to-date session state value => the value could have been modified by another tab
106
+ operations.after?.(processedSession || currentStore.session)
107
+ next(sessionStoreStrategy)
108
+ }
109
+
110
+ function retryLater(operations: Operations, sessionStore: SessionStoreStrategy, currentNumberOfRetries: number) {
111
+ setTimeout(() => {
112
+ processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1)
113
+ }, LOCK_RETRY_DELAY)
114
+ }
115
+
116
+ function next(sessionStore: SessionStoreStrategy) {
117
+ ongoingOperations = undefined
118
+ const nextOperations = bufferedOperations.shift()
119
+ if (nextOperations) {
120
+ processSessionStoreOperations(nextOperations, sessionStore)
121
+ }
122
+ }
123
+
124
+ export function createLock(): string {
125
+ return generateUUID() + LOCK_SEPARATOR + timeStampNow()
126
+ }
127
+
128
+ function isLockExpired(lock: string) {
129
+ const [, timeStamp] = lock.split(LOCK_SEPARATOR)
130
+ return !timeStamp || elapsed(Number(timeStamp) as TimeStamp, timeStampNow()) > LOCK_EXPIRATION_DELAY
131
+ }
@@ -0,0 +1,146 @@
1
+ import { isEmptyObject } from '../../../tools/utils/objectUtils'
2
+ import { isChromium } from '../../../tools/utils/browserDetection'
3
+ import type { CookieOptions } from '../../../browser/cookie'
4
+ import { getCurrentSite, areCookiesAuthorized, getCookies, setCookie, getCookie } from '../../../browser/cookie'
5
+ import type { InitConfiguration, Configuration } from '../../configuration'
6
+ import { tryOldCookiesMigration } from '../oldCookiesMigration'
7
+ import {
8
+ SESSION_COOKIE_EXPIRATION_DELAY,
9
+ SESSION_EXPIRATION_DELAY,
10
+ SESSION_TIME_OUT_DELAY,
11
+ SessionPersistence,
12
+ } from '../sessionConstants'
13
+ import type { SessionState } from '../sessionState'
14
+ import { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState'
15
+ import type { SessionStoreStrategy, SessionStoreStrategyType } from './sessionStoreStrategy'
16
+ import { SESSION_STORE_KEY } from './sessionStoreStrategy'
17
+
18
+ const SESSION_COOKIE_VERSION = 0
19
+
20
+ export function selectCookieStrategy(initConfiguration: InitConfiguration): SessionStoreStrategyType | undefined {
21
+ const cookieOptions = buildCookieOptions(initConfiguration)
22
+ return cookieOptions && areCookiesAuthorized(cookieOptions)
23
+ ? { type: SessionPersistence.COOKIE, cookieOptions }
24
+ : undefined
25
+ }
26
+
27
+ export function initCookieStrategy(configuration: Configuration, cookieOptions: CookieOptions): SessionStoreStrategy {
28
+ const cookieStore = {
29
+ /**
30
+ * Lock strategy allows mitigating issues due to concurrent access to cookie.
31
+ * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.
32
+ */
33
+ isLockEnabled: isChromium(),
34
+ persistSession: (sessionState: SessionState) =>
35
+ storeSessionCookie(cookieOptions, configuration, sessionState, SESSION_EXPIRATION_DELAY),
36
+ retrieveSession: () => retrieveSessionCookie(cookieOptions, configuration),
37
+ expireSession: (sessionState: SessionState) =>
38
+ storeSessionCookie(
39
+ cookieOptions,
40
+ configuration,
41
+ getExpiredSessionState(sessionState, configuration),
42
+ SESSION_TIME_OUT_DELAY
43
+ ),
44
+ }
45
+
46
+ tryOldCookiesMigration(cookieStore)
47
+
48
+ return cookieStore
49
+ }
50
+
51
+ function storeSessionCookie(
52
+ options: CookieOptions,
53
+ configuration: Configuration,
54
+ sessionState: SessionState,
55
+ defaultTimeout: number
56
+ ) {
57
+ let sessionStateString = toSessionString(sessionState)
58
+
59
+ if (configuration.betaEncodeCookieOptions) {
60
+ sessionStateString = toSessionString({
61
+ ...sessionState,
62
+ // deleting a cookie is writing a new cookie with an empty value
63
+ // we don't want to store the cookie options in this case otherwise the cookie will not be deleted
64
+ ...(!isEmptyObject(sessionState) ? { c: encodeCookieOptions(options) } : {}),
65
+ })
66
+ }
67
+
68
+ setCookie(
69
+ SESSION_STORE_KEY,
70
+ sessionStateString,
71
+ configuration.trackAnonymousUser ? SESSION_COOKIE_EXPIRATION_DELAY : defaultTimeout,
72
+ options
73
+ )
74
+ }
75
+
76
+ /**
77
+ * Retrieve the session state from the cookie that was set with the same cookie options
78
+ * If there is no match, return the first cookie, because that's how `getCookie()` works
79
+ */
80
+ export function retrieveSessionCookie(cookieOptions: CookieOptions, configuration: Configuration): SessionState {
81
+ if (configuration.betaEncodeCookieOptions) {
82
+ return retrieveSessionCookieFromEncodedCookie(cookieOptions)
83
+ }
84
+
85
+ const sessionString = getCookie(SESSION_STORE_KEY)
86
+ const sessionState = toSessionState(sessionString)
87
+ return sessionState
88
+ }
89
+
90
+ export function buildCookieOptions(initConfiguration: InitConfiguration): CookieOptions | undefined {
91
+ const cookieOptions: CookieOptions = {}
92
+
93
+ cookieOptions.secure =
94
+ !!initConfiguration.useSecureSessionCookie || !!initConfiguration.usePartitionedCrossSiteSessionCookie
95
+ cookieOptions.crossSite = !!initConfiguration.usePartitionedCrossSiteSessionCookie
96
+ cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie
97
+
98
+ if (initConfiguration.trackSessionAcrossSubdomains) {
99
+ const currentSite = getCurrentSite()
100
+ if (!currentSite) {
101
+ return
102
+ }
103
+ cookieOptions.domain = currentSite
104
+ }
105
+
106
+ return cookieOptions
107
+ }
108
+
109
+ function encodeCookieOptions(cookieOptions: CookieOptions): string {
110
+ const domainCount = cookieOptions.domain ? cookieOptions.domain.split('.').length - 1 : 0
111
+
112
+ /* eslint-disable no-bitwise */
113
+ let byte = 0
114
+ byte |= SESSION_COOKIE_VERSION << 5 // Store version in upper 3 bits
115
+ byte |= domainCount << 1 // Store domain count in next 4 bits
116
+ byte |= cookieOptions.crossSite ? 1 : 0 // Store useCrossSiteScripting in next bit
117
+ /* eslint-enable no-bitwise */
118
+
119
+ return byte.toString(16) // Convert to hex string
120
+ }
121
+
122
+ /**
123
+ * Retrieve the session state from the cookie that was set with the same cookie options.
124
+ * If there is no match, fallback to the first cookie, (because that's how `getCookie()` works)
125
+ * and this allows to keep the current session id when we release this feature.
126
+ */
127
+ function retrieveSessionCookieFromEncodedCookie(cookieOptions: CookieOptions): SessionState {
128
+ const cookies = getCookies(SESSION_STORE_KEY)
129
+ const opts = encodeCookieOptions(cookieOptions)
130
+
131
+ let sessionState: SessionState | undefined
132
+
133
+ // reverse the cookies so that if there is no match, the cookie returned is the first one
134
+ for (const cookie of cookies.reverse()) {
135
+ sessionState = toSessionState(cookie)
136
+
137
+ if (sessionState.c === opts) {
138
+ break
139
+ }
140
+ }
141
+
142
+ // remove the cookie options from the session state as this is not part of the session state
143
+ delete sessionState?.c
144
+
145
+ return sessionState ?? {}
146
+ }
@@ -0,0 +1,44 @@
1
+ import { generateUUID } from '../../../tools/utils/stringUtils'
2
+ import type { Configuration } from '../../configuration'
3
+ import { SessionPersistence } from '../sessionConstants'
4
+ import type { SessionState } from '../sessionState'
5
+ import { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState'
6
+ import type { SessionStoreStrategy, SessionStoreStrategyType } from './sessionStoreStrategy'
7
+ import { SESSION_STORE_KEY } from './sessionStoreStrategy'
8
+
9
+ const LOCAL_STORAGE_TEST_KEY = '_kubesense_test_'
10
+
11
+ export function selectLocalStorageStrategy(): SessionStoreStrategyType | undefined {
12
+ try {
13
+ const id = generateUUID()
14
+ const testKey = `${LOCAL_STORAGE_TEST_KEY}${id}`
15
+ localStorage.setItem(testKey, id)
16
+ const retrievedId = localStorage.getItem(testKey)
17
+ localStorage.removeItem(testKey)
18
+ return id === retrievedId ? { type: SessionPersistence.LOCAL_STORAGE } : undefined
19
+ } catch {
20
+ return undefined
21
+ }
22
+ }
23
+
24
+ export function initLocalStorageStrategy(configuration: Configuration): SessionStoreStrategy {
25
+ return {
26
+ isLockEnabled: false,
27
+ persistSession: persistInLocalStorage,
28
+ retrieveSession: retrieveSessionFromLocalStorage,
29
+ expireSession: (sessionState: SessionState) => expireSessionFromLocalStorage(sessionState, configuration),
30
+ }
31
+ }
32
+
33
+ function persistInLocalStorage(sessionState: SessionState) {
34
+ localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState))
35
+ }
36
+
37
+ export function retrieveSessionFromLocalStorage(): SessionState {
38
+ const sessionString = localStorage.getItem(SESSION_STORE_KEY)
39
+ return toSessionState(sessionString)
40
+ }
41
+
42
+ function expireSessionFromLocalStorage(previousSessionState: SessionState, configuration: Configuration) {
43
+ persistInLocalStorage(getExpiredSessionState(previousSessionState, configuration))
44
+ }
@@ -0,0 +1,16 @@
1
+ import type { CookieOptions } from '../../../browser/cookie'
2
+ import type { SessionPersistence } from '../sessionConstants'
3
+ import type { SessionState } from '../sessionState'
4
+
5
+ export const SESSION_STORE_KEY = '_kubesense_s'
6
+
7
+ export type SessionStoreStrategyType =
8
+ | { type: typeof SessionPersistence.COOKIE; cookieOptions: CookieOptions }
9
+ | { type: typeof SessionPersistence.LOCAL_STORAGE }
10
+
11
+ export interface SessionStoreStrategy {
12
+ isLockEnabled: boolean
13
+ persistSession: (session: SessionState) => void
14
+ retrieveSession: () => SessionState
15
+ expireSession: (previousSessionState: SessionState) => void
16
+ }
@@ -0,0 +1,38 @@
1
+ import { getInitCookie } from '../../browser/cookie'
2
+ import { globalObject, isWorkerEnvironment } from '../../tools/globalObject'
3
+
4
+ export const SYNTHETICS_TEST_ID_COOKIE_NAME = 'kubesense-synthetics-public-id'
5
+ export const SYNTHETICS_RESULT_ID_COOKIE_NAME = 'kubesense-synthetics-result-id'
6
+ export const SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'kubesense-synthetics-injects-rum'
7
+
8
+ export interface BrowserWindow extends Window {
9
+ _KUBESENSE_SYNTHETICS_PUBLIC_ID?: unknown
10
+ _KUBESENSE_SYNTHETICS_RESULT_ID?: unknown
11
+ _KUBESENSE_SYNTHETICS_INJECTS_RUM?: unknown
12
+ }
13
+
14
+ export function willSyntheticsInjectRum(): boolean {
15
+ if (isWorkerEnvironment) {
16
+ // We don't expect to run synthetics tests in a worker environment
17
+ return false
18
+ }
19
+
20
+ return Boolean(
21
+ (globalObject as BrowserWindow)._KUBESENSE_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME)
22
+ )
23
+ }
24
+
25
+ export function getSyntheticsTestId(): string | undefined {
26
+ const value = (window as BrowserWindow)._KUBESENSE_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME)
27
+ return typeof value === 'string' ? value : undefined
28
+ }
29
+
30
+ export function getSyntheticsResultId(): string | undefined {
31
+ const value =
32
+ (window as BrowserWindow)._KUBESENSE_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME)
33
+ return typeof value === 'string' ? value : undefined
34
+ }
35
+
36
+ export function isSyntheticsTest(): boolean {
37
+ return Boolean(getSyntheticsTestId() && getSyntheticsResultId())
38
+ }