@openobserve/browser-core 0.2.12-beta.21 → 0.2.12-beta.22

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 (319) hide show
  1. package/cjs/boot/displayAlreadyInitializedError.d.ts +1 -1
  2. package/cjs/boot/init.d.ts +1 -1
  3. package/cjs/boot/init.js +1 -1
  4. package/cjs/browser/addEventListener.d.ts +1 -1
  5. package/cjs/browser/addEventListener.js +1 -1
  6. package/cjs/domain/configuration/endpointBuilder.js +14 -12
  7. package/cjs/domain/configuration/endpointBuilder.js.map +1 -1
  8. package/cjs/domain/context/storeContextManager.js +1 -1
  9. package/cjs/domain/tags.js +1 -1
  10. package/cjs/domain/telemetry/telemetry.js +2 -2
  11. package/esm/boot/displayAlreadyInitializedError.d.ts +2 -0
  12. package/esm/boot/displayAlreadyInitializedError.js +7 -0
  13. package/esm/boot/displayAlreadyInitializedError.js.map +1 -0
  14. package/esm/boot/init.d.ts +14 -0
  15. package/esm/boot/init.js +35 -0
  16. package/esm/boot/init.js.map +1 -0
  17. package/esm/browser/addEventListener.d.ts +87 -0
  18. package/esm/browser/addEventListener.js +51 -0
  19. package/esm/browser/addEventListener.js.map +1 -0
  20. package/esm/browser/browser.types.d.ts +51 -0
  21. package/esm/browser/browser.types.js +5 -0
  22. package/esm/browser/browser.types.js.map +1 -0
  23. package/esm/browser/cookie.d.ts +28 -0
  24. package/esm/browser/cookie.js +103 -0
  25. package/esm/browser/cookie.js.map +1 -0
  26. package/esm/browser/fetchObservable.d.ts +38 -0
  27. package/esm/browser/fetchObservable.js +99 -0
  28. package/esm/browser/fetchObservable.js.map +1 -0
  29. package/esm/browser/pageMayExitObservable.d.ts +14 -0
  30. package/esm/browser/pageMayExitObservable.js +40 -0
  31. package/esm/browser/pageMayExitObservable.js.map +1 -0
  32. package/esm/browser/runOnReadyState.d.ts +5 -0
  33. package/esm/browser/runOnReadyState.js +16 -0
  34. package/esm/browser/runOnReadyState.js.map +1 -0
  35. package/esm/browser/xhrObservable.d.ts +24 -0
  36. package/esm/browser/xhrObservable.js +83 -0
  37. package/esm/browser/xhrObservable.js.map +1 -0
  38. package/esm/domain/allowedTrackingOrigins.d.ts +4 -0
  39. package/esm/domain/allowedTrackingOrigins.js +21 -0
  40. package/esm/domain/allowedTrackingOrigins.js.map +1 -0
  41. package/esm/domain/bufferedData.d.ts +14 -0
  42. package/esm/domain/bufferedData.js +19 -0
  43. package/esm/domain/bufferedData.js.map +1 -0
  44. package/esm/domain/configuration/configuration.d.ts +312 -0
  45. package/esm/domain/configuration/configuration.js +131 -0
  46. package/esm/domain/configuration/configuration.js.map +1 -0
  47. package/esm/domain/configuration/endpointBuilder.d.ts +12 -0
  48. package/esm/domain/configuration/endpointBuilder.js +74 -0
  49. package/esm/domain/configuration/endpointBuilder.js.map +1 -0
  50. package/esm/domain/configuration/index.d.ts +5 -0
  51. package/esm/domain/configuration/index.js +4 -0
  52. package/esm/domain/configuration/index.js.map +1 -0
  53. package/esm/domain/configuration/transportConfiguration.d.ts +20 -0
  54. package/esm/domain/configuration/transportConfiguration.js +50 -0
  55. package/esm/domain/configuration/transportConfiguration.js.map +1 -0
  56. package/esm/domain/connectivity/connectivity.d.ts +14 -0
  57. package/esm/domain/connectivity/connectivity.js +11 -0
  58. package/esm/domain/connectivity/connectivity.js.map +1 -0
  59. package/esm/domain/connectivity/index.d.ts +1 -0
  60. package/esm/domain/connectivity/index.js +2 -0
  61. package/esm/domain/connectivity/index.js.map +1 -0
  62. package/esm/domain/console/consoleObservable.d.ts +21 -0
  63. package/esm/domain/console/consoleObservable.js +80 -0
  64. package/esm/domain/console/consoleObservable.js.map +1 -0
  65. package/esm/domain/context/contextConstants.d.ts +21 -0
  66. package/esm/domain/context/contextConstants.js +15 -0
  67. package/esm/domain/context/contextConstants.js.map +1 -0
  68. package/esm/domain/context/contextManager.d.ts +19 -0
  69. package/esm/domain/context/contextManager.js +57 -0
  70. package/esm/domain/context/contextManager.js.map +1 -0
  71. package/esm/domain/context/contextUtils.d.ts +5 -0
  72. package/esm/domain/context/contextUtils.js +13 -0
  73. package/esm/domain/context/contextUtils.js.map +1 -0
  74. package/esm/domain/context/defineContextMethod.d.ts +6 -0
  75. package/esm/domain/context/defineContextMethod.js +17 -0
  76. package/esm/domain/context/defineContextMethod.js.map +1 -0
  77. package/esm/domain/context/storeContextManager.d.ts +6 -0
  78. package/esm/domain/context/storeContextManager.js +35 -0
  79. package/esm/domain/context/storeContextManager.js.map +1 -0
  80. package/esm/domain/contexts/accountContext.d.ts +26 -0
  81. package/esm/domain/contexts/accountContext.js +29 -0
  82. package/esm/domain/contexts/accountContext.js.map +1 -0
  83. package/esm/domain/contexts/globalContext.d.ts +18 -0
  84. package/esm/domain/contexts/globalContext.js +17 -0
  85. package/esm/domain/contexts/globalContext.js.map +1 -0
  86. package/esm/domain/contexts/rumInternalContext.type.d.ts +14 -0
  87. package/esm/domain/contexts/rumInternalContext.type.js +2 -0
  88. package/esm/domain/contexts/rumInternalContext.type.js.map +1 -0
  89. package/esm/domain/contexts/userContext.d.ts +29 -0
  90. package/esm/domain/contexts/userContext.js +41 -0
  91. package/esm/domain/contexts/userContext.js.map +1 -0
  92. package/esm/domain/deflate/deflate.types.d.ts +40 -0
  93. package/esm/domain/deflate/deflate.types.js +2 -0
  94. package/esm/domain/deflate/deflate.types.js.map +1 -0
  95. package/esm/domain/deflate/index.d.ts +1 -0
  96. package/esm/domain/deflate/index.js +2 -0
  97. package/esm/domain/deflate/index.js.map +1 -0
  98. package/esm/domain/error/error.d.ts +23 -0
  99. package/esm/domain/error/error.js +65 -0
  100. package/esm/domain/error/error.js.map +1 -0
  101. package/esm/domain/error/error.types.d.ts +47 -0
  102. package/esm/domain/error/error.types.js +10 -0
  103. package/esm/domain/error/error.types.js.map +1 -0
  104. package/esm/domain/error/trackRuntimeError.d.ts +11 -0
  105. package/esm/domain/error/trackRuntimeError.js +43 -0
  106. package/esm/domain/error/trackRuntimeError.js.map +1 -0
  107. package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +5 -0
  108. package/esm/domain/eventRateLimiter/createEventRateLimiter.js +38 -0
  109. package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -0
  110. package/esm/domain/extension/extensionUtils.d.ts +10 -0
  111. package/esm/domain/extension/extensionUtils.js +25 -0
  112. package/esm/domain/extension/extensionUtils.js.map +1 -0
  113. package/esm/domain/intakeSites.d.ts +8 -0
  114. package/esm/domain/intakeSites.js +8 -0
  115. package/esm/domain/intakeSites.js.map +1 -0
  116. package/esm/domain/report/browser.types.d.ts +34 -0
  117. package/esm/domain/report/browser.types.js +2 -0
  118. package/esm/domain/report/browser.types.js.map +1 -0
  119. package/esm/domain/report/reportObservable.d.ts +14 -0
  120. package/esm/domain/report/reportObservable.js +95 -0
  121. package/esm/domain/report/reportObservable.js.map +1 -0
  122. package/esm/domain/resourceUtils.d.ts +18 -0
  123. package/esm/domain/resourceUtils.js +17 -0
  124. package/esm/domain/resourceUtils.js.map +1 -0
  125. package/esm/domain/session/oldCookiesMigration.d.ts +11 -0
  126. package/esm/domain/session/oldCookiesMigration.js +36 -0
  127. package/esm/domain/session/oldCookiesMigration.js.map +1 -0
  128. package/esm/domain/session/sessionConstants.d.ts +15 -0
  129. package/esm/domain/session/sessionConstants.js +13 -0
  130. package/esm/domain/session/sessionConstants.js.map +1 -0
  131. package/esm/domain/session/sessionManager.d.ts +28 -0
  132. package/esm/domain/session/sessionManager.js +196 -0
  133. package/esm/domain/session/sessionManager.js.map +1 -0
  134. package/esm/domain/session/sessionState.d.ts +16 -0
  135. package/esm/domain/session/sessionState.js +60 -0
  136. package/esm/domain/session/sessionState.js.map +1 -0
  137. package/esm/domain/session/sessionStateValidation.d.ts +3 -0
  138. package/esm/domain/session/sessionStateValidation.js +7 -0
  139. package/esm/domain/session/sessionStateValidation.js.map +1 -0
  140. package/esm/domain/session/sessionStore.d.ts +38 -0
  141. package/esm/domain/session/sessionStore.js +179 -0
  142. package/esm/domain/session/sessionStore.js.map +1 -0
  143. package/esm/domain/session/sessionStoreOperations.d.ts +12 -0
  144. package/esm/domain/session/sessionStoreOperations.js +114 -0
  145. package/esm/domain/session/sessionStoreOperations.js.map +1 -0
  146. package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +12 -0
  147. package/esm/domain/session/storeStrategies/sessionInCookie.js +98 -0
  148. package/esm/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
  149. package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +6 -0
  150. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +37 -0
  151. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -0
  152. package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -0
  153. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +2 -0
  154. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -0
  155. package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +12 -0
  156. package/esm/domain/synthetics/syntheticsWorkerValues.js +24 -0
  157. package/esm/domain/synthetics/syntheticsWorkerValues.js.map +1 -0
  158. package/esm/domain/tags.d.ts +6 -0
  159. package/esm/domain/tags.js +60 -0
  160. package/esm/domain/tags.js.map +1 -0
  161. package/esm/domain/telemetry/index.d.ts +4 -0
  162. package/esm/domain/telemetry/index.js +3 -0
  163. package/esm/domain/telemetry/index.js.map +1 -0
  164. package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +18 -0
  165. package/esm/domain/telemetry/rawTelemetryEvent.types.js +6 -0
  166. package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +1 -0
  167. package/esm/domain/telemetry/telemetry.d.ts +56 -0
  168. package/esm/domain/telemetry/telemetry.js +228 -0
  169. package/esm/domain/telemetry/telemetry.js.map +1 -0
  170. package/esm/domain/telemetry/telemetryEvent.types.d.ts +866 -0
  171. package/esm/domain/telemetry/telemetryEvent.types.js +6 -0
  172. package/esm/domain/telemetry/telemetryEvent.types.js.map +1 -0
  173. package/esm/domain/trackingConsent.d.ts +13 -0
  174. package/esm/domain/trackingConsent.js +24 -0
  175. package/esm/domain/trackingConsent.js.map +1 -0
  176. package/esm/index.d.ts +100 -0
  177. package/esm/index.js +76 -0
  178. package/esm/index.js.map +1 -0
  179. package/esm/tools/abstractHooks.d.ts +24 -0
  180. package/esm/tools/abstractHooks.js +37 -0
  181. package/esm/tools/abstractHooks.js.map +1 -0
  182. package/esm/tools/abstractLifeCycle.d.ts +23 -0
  183. package/esm/tools/abstractLifeCycle.js +24 -0
  184. package/esm/tools/abstractLifeCycle.js.map +1 -0
  185. package/esm/tools/boundedBuffer.d.ts +16 -0
  186. package/esm/tools/boundedBuffer.js +29 -0
  187. package/esm/tools/boundedBuffer.js.map +1 -0
  188. package/esm/tools/catchUserErrors.d.ts +1 -0
  189. package/esm/tools/catchUserErrors.js +12 -0
  190. package/esm/tools/catchUserErrors.js.map +1 -0
  191. package/esm/tools/display.d.ts +38 -0
  192. package/esm/tools/display.js +41 -0
  193. package/esm/tools/display.js.map +1 -0
  194. package/esm/tools/encoder.d.ts +54 -0
  195. package/esm/tools/encoder.js +37 -0
  196. package/esm/tools/encoder.js.map +1 -0
  197. package/esm/tools/experimentalFeatures.d.ts +21 -0
  198. package/esm/tools/experimentalFeatures.js +42 -0
  199. package/esm/tools/experimentalFeatures.js.map +1 -0
  200. package/esm/tools/getZoneJsOriginalValue.d.ts +19 -0
  201. package/esm/tools/getZoneJsOriginalValue.js +26 -0
  202. package/esm/tools/getZoneJsOriginalValue.js.map +1 -0
  203. package/esm/tools/globalObject.d.ts +19 -0
  204. package/esm/tools/globalObject.js +40 -0
  205. package/esm/tools/globalObject.js.map +1 -0
  206. package/esm/tools/instrumentMethod.d.ts +75 -0
  207. package/esm/tools/instrumentMethod.js +114 -0
  208. package/esm/tools/instrumentMethod.js.map +1 -0
  209. package/esm/tools/matchOption.d.ts +8 -0
  210. package/esm/tools/matchOption.js +31 -0
  211. package/esm/tools/matchOption.js.map +1 -0
  212. package/esm/tools/mergeInto.d.ts +25 -0
  213. package/esm/tools/mergeInto.js +93 -0
  214. package/esm/tools/mergeInto.js.map +1 -0
  215. package/esm/tools/monitor.d.ts +9 -0
  216. package/esm/tools/monitor.js +52 -0
  217. package/esm/tools/monitor.js.map +1 -0
  218. package/esm/tools/observable.d.ts +30 -0
  219. package/esm/tools/observable.js +83 -0
  220. package/esm/tools/observable.js.map +1 -0
  221. package/esm/tools/queueMicrotask.d.ts +1 -0
  222. package/esm/tools/queueMicrotask.js +14 -0
  223. package/esm/tools/queueMicrotask.js.map +1 -0
  224. package/esm/tools/readBytesFromStream.d.ts +10 -0
  225. package/esm/tools/readBytesFromStream.js +25 -0
  226. package/esm/tools/readBytesFromStream.js.map +1 -0
  227. package/esm/tools/requestIdleCallback.d.ts +12 -0
  228. package/esm/tools/requestIdleCallback.js +30 -0
  229. package/esm/tools/requestIdleCallback.js.map +1 -0
  230. package/esm/tools/sendToExtension.d.ts +3 -0
  231. package/esm/tools/sendToExtension.js +8 -0
  232. package/esm/tools/sendToExtension.js.map +1 -0
  233. package/esm/tools/serialisation/context.d.ts +9 -0
  234. package/esm/tools/serialisation/context.js +2 -0
  235. package/esm/tools/serialisation/context.js.map +1 -0
  236. package/esm/tools/serialisation/jsonStringify.d.ts +13 -0
  237. package/esm/tools/serialisation/jsonStringify.js +44 -0
  238. package/esm/tools/serialisation/jsonStringify.js.map +1 -0
  239. package/esm/tools/serialisation/sanitize.d.ts +18 -0
  240. package/esm/tools/serialisation/sanitize.js +185 -0
  241. package/esm/tools/serialisation/sanitize.js.map +1 -0
  242. package/esm/tools/stackTrace/computeStackTrace.d.ts +25 -0
  243. package/esm/tools/stackTrace/computeStackTrace.js +183 -0
  244. package/esm/tools/stackTrace/computeStackTrace.js.map +1 -0
  245. package/esm/tools/stackTrace/handlingStack.d.ts +10 -0
  246. package/esm/tools/stackTrace/handlingStack.js +41 -0
  247. package/esm/tools/stackTrace/handlingStack.js.map +1 -0
  248. package/esm/tools/taskQueue.d.ts +15 -0
  249. package/esm/tools/taskQueue.js +50 -0
  250. package/esm/tools/taskQueue.js.map +1 -0
  251. package/esm/tools/timer.d.ts +5 -0
  252. package/esm/tools/timer.js +16 -0
  253. package/esm/tools/timer.js.map +1 -0
  254. package/esm/tools/utils/arrayUtils.d.ts +3 -0
  255. package/esm/tools/utils/arrayUtils.js +15 -0
  256. package/esm/tools/utils/arrayUtils.js.map +1 -0
  257. package/esm/tools/utils/browserDetection.d.ts +8 -0
  258. package/esm/tools/utils/browserDetection.js +28 -0
  259. package/esm/tools/utils/browserDetection.js.map +1 -0
  260. package/esm/tools/utils/byteUtils.d.ts +8 -0
  261. package/esm/tools/utils/byteUtils.js +29 -0
  262. package/esm/tools/utils/byteUtils.js.map +1 -0
  263. package/esm/tools/utils/functionUtils.d.ts +8 -0
  264. package/esm/tools/utils/functionUtils.js +39 -0
  265. package/esm/tools/utils/functionUtils.js.map +1 -0
  266. package/esm/tools/utils/numberUtils.d.ts +9 -0
  267. package/esm/tools/utils/numberUtils.js +18 -0
  268. package/esm/tools/utils/numberUtils.js.map +1 -0
  269. package/esm/tools/utils/objectUtils.d.ts +10 -0
  270. package/esm/tools/utils/objectUtils.js +17 -0
  271. package/esm/tools/utils/objectUtils.js.map +1 -0
  272. package/esm/tools/utils/polyfills.d.ts +7 -0
  273. package/esm/tools/utils/polyfills.js +18 -0
  274. package/esm/tools/utils/polyfills.js.map +1 -0
  275. package/esm/tools/utils/responseUtils.d.ts +2 -0
  276. package/esm/tools/utils/responseUtils.js +13 -0
  277. package/esm/tools/utils/responseUtils.js.map +1 -0
  278. package/esm/tools/utils/stringUtils.d.ts +23 -0
  279. package/esm/tools/utils/stringUtils.js +84 -0
  280. package/esm/tools/utils/stringUtils.js.map +1 -0
  281. package/esm/tools/utils/timeUtils.d.ts +53 -0
  282. package/esm/tools/utils/timeUtils.js +84 -0
  283. package/esm/tools/utils/timeUtils.js.map +1 -0
  284. package/esm/tools/utils/timezone.d.ts +1 -0
  285. package/esm/tools/utils/timezone.js +10 -0
  286. package/esm/tools/utils/timezone.js.map +1 -0
  287. package/esm/tools/utils/typeUtils.d.ts +4 -0
  288. package/esm/tools/utils/typeUtils.js +13 -0
  289. package/esm/tools/utils/typeUtils.js.map +1 -0
  290. package/esm/tools/utils/urlPolyfill.d.ts +5 -0
  291. package/esm/tools/utils/urlPolyfill.js +52 -0
  292. package/esm/tools/utils/urlPolyfill.js.map +1 -0
  293. package/esm/tools/valueHistory.d.ts +27 -0
  294. package/esm/tools/valueHistory.js +100 -0
  295. package/esm/tools/valueHistory.js.map +1 -0
  296. package/esm/transport/batch.d.ts +16 -0
  297. package/esm/transport/batch.js +106 -0
  298. package/esm/transport/batch.js.map +1 -0
  299. package/esm/transport/eventBridge.d.ts +21 -0
  300. package/esm/transport/eventBridge.js +41 -0
  301. package/esm/transport/eventBridge.js.map +1 -0
  302. package/esm/transport/flushController.d.ts +65 -0
  303. package/esm/transport/flushController.js +119 -0
  304. package/esm/transport/flushController.js.map +1 -0
  305. package/esm/transport/httpRequest.d.ts +56 -0
  306. package/esm/transport/httpRequest.js +89 -0
  307. package/esm/transport/httpRequest.js.map +1 -0
  308. package/esm/transport/index.d.ts +7 -0
  309. package/esm/transport/index.js +5 -0
  310. package/esm/transport/index.js.map +1 -0
  311. package/esm/transport/sendWithRetryStrategy.d.ts +41 -0
  312. package/esm/transport/sendWithRetryStrategy.js +158 -0
  313. package/esm/transport/sendWithRetryStrategy.js.map +1 -0
  314. package/package.json +1 -1
  315. package/src/boot/displayAlreadyInitializedError.ts +1 -1
  316. package/src/boot/init.ts +1 -1
  317. package/src/browser/addEventListener.ts +2 -2
  318. package/src/domain/configuration/endpointBuilder.ts +16 -15
  319. package/src/domain/context/storeContextManager.ts +1 -1
@@ -0,0 +1,28 @@
1
+ import { Observable } from '../../tools/observable';
2
+ import type { Context } from '../../tools/serialisation/context';
3
+ import type { RelativeTime } from '../../tools/utils/timeUtils';
4
+ import type { Configuration } from '../configuration';
5
+ import type { TrackingConsentState } from '../trackingConsent';
6
+ import type { SessionState } from './sessionState';
7
+ export interface SessionManager<TrackingType extends string> {
8
+ findSession: (startTime?: RelativeTime, options?: {
9
+ returnInactive: boolean;
10
+ }) => SessionContext<TrackingType> | undefined;
11
+ renewObservable: Observable<void>;
12
+ expireObservable: Observable<void>;
13
+ sessionStateUpdateObservable: Observable<{
14
+ previousState: SessionState;
15
+ newState: SessionState;
16
+ }>;
17
+ expire: () => void;
18
+ updateSessionState: (state: Partial<SessionState>) => void;
19
+ }
20
+ export interface SessionContext<TrackingType extends string> extends Context {
21
+ id: string;
22
+ trackingType: TrackingType;
23
+ isReplayForced: boolean;
24
+ anonymousId: string | undefined;
25
+ }
26
+ export declare const VISIBILITY_CHECK_DELAY: number;
27
+ export declare function startSessionManager<TrackingType extends string>(configuration: Configuration, productKey: string, computeTrackingType: (rawTrackingType?: string) => TrackingType, trackingConsentState: TrackingConsentState): SessionManager<TrackingType>;
28
+ export declare function stopSessionManager(): void;
@@ -0,0 +1,196 @@
1
+ import { Observable } from '../../tools/observable';
2
+ import { createValueHistory } from '../../tools/valueHistory';
3
+ import { clocksOrigin, dateNow, ONE_MINUTE, relativeNow } from '../../tools/utils/timeUtils';
4
+ import { addEventListener, addEventListeners } from '../../browser/addEventListener';
5
+ import { clearInterval, setInterval } from '../../tools/timer';
6
+ import { addTelemetryDebug } from '../telemetry';
7
+ import { isSyntheticsTest } from '../synthetics/syntheticsWorkerValues';
8
+ import { getCurrentSite } from '../../browser/cookie';
9
+ import { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures';
10
+ import { findLast } from '../../tools/utils/polyfills';
11
+ import { monitorError } from '../../tools/monitor';
12
+ import { SESSION_NOT_TRACKED, SESSION_TIME_OUT_DELAY, SessionPersistence } from './sessionConstants';
13
+ import { startSessionStore } from './sessionStore';
14
+ import { toSessionState } from './sessionState';
15
+ import { retrieveSessionCookie } from './storeStrategies/sessionInCookie';
16
+ import { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';
17
+ import { retrieveSessionFromLocalStorage } from './storeStrategies/sessionInLocalStorage';
18
+ export const VISIBILITY_CHECK_DELAY = ONE_MINUTE;
19
+ const SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;
20
+ let stopCallbacks = [];
21
+ export function startSessionManager(configuration, productKey, computeTrackingType, trackingConsentState) {
22
+ const renewObservable = new Observable();
23
+ const expireObservable = new Observable();
24
+ // TODO - Improve configuration type and remove assertion
25
+ const sessionStore = startSessionStore(configuration.sessionStoreStrategyType, configuration, productKey, computeTrackingType);
26
+ stopCallbacks.push(() => sessionStore.stop());
27
+ const sessionContextHistory = createValueHistory({
28
+ expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,
29
+ });
30
+ stopCallbacks.push(() => sessionContextHistory.stop());
31
+ sessionStore.renewObservable.subscribe(() => {
32
+ sessionContextHistory.add(buildSessionContext(), relativeNow());
33
+ renewObservable.notify();
34
+ });
35
+ sessionStore.expireObservable.subscribe(() => {
36
+ expireObservable.notify();
37
+ sessionContextHistory.closeActive(relativeNow());
38
+ });
39
+ // We expand/renew session unconditionally as tracking consent is always granted when the session
40
+ // manager is started.
41
+ sessionStore.expandOrRenewSession();
42
+ sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);
43
+ if (isExperimentalFeatureEnabled(ExperimentalFeature.SHORT_SESSION_INVESTIGATION)) {
44
+ const session = sessionStore.getSession();
45
+ if (session) {
46
+ detectSessionIdChange(configuration, session);
47
+ }
48
+ }
49
+ trackingConsentState.observable.subscribe(() => {
50
+ if (trackingConsentState.isGranted()) {
51
+ sessionStore.expandOrRenewSession();
52
+ }
53
+ else {
54
+ sessionStore.expire(false);
55
+ }
56
+ });
57
+ trackActivity(configuration, () => {
58
+ if (trackingConsentState.isGranted()) {
59
+ sessionStore.expandOrRenewSession();
60
+ }
61
+ });
62
+ trackVisibility(configuration, () => sessionStore.expandSession());
63
+ trackResume(configuration, () => sessionStore.restartSession());
64
+ function buildSessionContext() {
65
+ const session = sessionStore.getSession();
66
+ if (!session) {
67
+ reportUnexpectedSessionState(configuration).catch(() => void 0); // Ignore errors
68
+ return {
69
+ id: 'invalid',
70
+ trackingType: SESSION_NOT_TRACKED,
71
+ isReplayForced: false,
72
+ anonymousId: undefined,
73
+ };
74
+ }
75
+ return {
76
+ id: session.id,
77
+ trackingType: session[productKey],
78
+ isReplayForced: !!session.forcedReplay,
79
+ anonymousId: session.anonymousId,
80
+ };
81
+ }
82
+ return {
83
+ findSession: (startTime, options) => sessionContextHistory.find(startTime, options),
84
+ renewObservable,
85
+ expireObservable,
86
+ sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,
87
+ expire: sessionStore.expire,
88
+ updateSessionState: sessionStore.updateSessionState,
89
+ };
90
+ }
91
+ export function stopSessionManager() {
92
+ stopCallbacks.forEach((e) => e());
93
+ stopCallbacks = [];
94
+ }
95
+ function trackActivity(configuration, expandOrRenewSession) {
96
+ const { stop } = addEventListeners(configuration, window, ["click" /* DOM_EVENT.CLICK */, "touchstart" /* DOM_EVENT.TOUCH_START */, "keydown" /* DOM_EVENT.KEY_DOWN */, "scroll" /* DOM_EVENT.SCROLL */], expandOrRenewSession, { capture: true, passive: true });
97
+ stopCallbacks.push(stop);
98
+ }
99
+ function trackVisibility(configuration, expandSession) {
100
+ const expandSessionWhenVisible = () => {
101
+ if (document.visibilityState === 'visible') {
102
+ expandSession();
103
+ }
104
+ };
105
+ const { stop } = addEventListener(configuration, document, "visibilitychange" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible);
106
+ stopCallbacks.push(stop);
107
+ const visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);
108
+ stopCallbacks.push(() => {
109
+ clearInterval(visibilityCheckInterval);
110
+ });
111
+ }
112
+ function trackResume(configuration, cb) {
113
+ const { stop } = addEventListener(configuration, window, "resume" /* DOM_EVENT.RESUME */, cb, { capture: true });
114
+ stopCallbacks.push(stop);
115
+ }
116
+ async function reportUnexpectedSessionState(configuration) {
117
+ const sessionStoreStrategyType = configuration.sessionStoreStrategyType;
118
+ if (!sessionStoreStrategyType) {
119
+ return;
120
+ }
121
+ let rawSession;
122
+ let cookieContext;
123
+ if (sessionStoreStrategyType.type === SessionPersistence.COOKIE) {
124
+ rawSession = retrieveSessionCookie(sessionStoreStrategyType.cookieOptions, configuration);
125
+ cookieContext = {
126
+ cookie: await getSessionCookies(),
127
+ currentDomain: `${window.location.protocol}//${window.location.hostname}`,
128
+ };
129
+ }
130
+ else {
131
+ rawSession = retrieveSessionFromLocalStorage();
132
+ }
133
+ // monitor-until: forever, could be handy to troubleshoot issues until session manager rework
134
+ addTelemetryDebug('Unexpected session state', {
135
+ sessionStoreStrategyType: sessionStoreStrategyType.type,
136
+ session: rawSession,
137
+ isSyntheticsTest: isSyntheticsTest(),
138
+ createdTimestamp: rawSession === null || rawSession === void 0 ? void 0 : rawSession.created,
139
+ expireTimestamp: rawSession === null || rawSession === void 0 ? void 0 : rawSession.expire,
140
+ ...cookieContext,
141
+ });
142
+ }
143
+ function detectSessionIdChange(configuration, initialSessionState) {
144
+ if (!window.cookieStore || !initialSessionState.created) {
145
+ return;
146
+ }
147
+ const sessionCreatedTime = Number(initialSessionState.created);
148
+ const sdkInitTime = dateNow();
149
+ const { stop } = addEventListener(configuration, cookieStore, "change" /* DOM_EVENT.CHANGE */, listener);
150
+ stopCallbacks.push(stop);
151
+ function listener(event) {
152
+ const changed = findLast(event.changed, (change) => change.name === SESSION_STORE_KEY);
153
+ if (!changed) {
154
+ return;
155
+ }
156
+ const sessionAge = dateNow() - sessionCreatedTime;
157
+ if (sessionAge > 14 * ONE_MINUTE) {
158
+ // The session might have expired just because it's too old or lack activity
159
+ stop();
160
+ }
161
+ else {
162
+ const newSessionState = toSessionState(changed.value);
163
+ if (newSessionState.id && newSessionState.id !== initialSessionState.id) {
164
+ stop();
165
+ const time = dateNow() - sdkInitTime;
166
+ getSessionCookies()
167
+ .then((cookie) => {
168
+ // monitor-until: 2025-12-01, after RUM-10845 investigation done
169
+ addTelemetryDebug('Session cookie changed', {
170
+ time,
171
+ session_age: sessionAge,
172
+ old: initialSessionState,
173
+ new: newSessionState,
174
+ cookie,
175
+ });
176
+ })
177
+ .catch(monitorError);
178
+ }
179
+ }
180
+ }
181
+ }
182
+ async function getSessionCookies() {
183
+ let sessionCookies;
184
+ if ('cookieStore' in window) {
185
+ sessionCookies = await window.cookieStore.getAll(SESSION_STORE_KEY);
186
+ }
187
+ else {
188
+ sessionCookies = document.cookie.split(/\s*;\s*/).filter((cookie) => cookie.startsWith(SESSION_STORE_KEY));
189
+ }
190
+ return {
191
+ count: sessionCookies.length,
192
+ domain: getCurrentSite() || 'undefined',
193
+ ...sessionCookies,
194
+ };
195
+ }
196
+ //# sourceMappingURL=sessionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../../src/domain/session/sessionManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Configuration } from '../configuration';
2
+ export declare const EXPIRED = "1";
3
+ export interface SessionState {
4
+ id?: string;
5
+ created?: string;
6
+ expire?: string;
7
+ isExpired?: typeof EXPIRED;
8
+ [key: string]: string | undefined;
9
+ }
10
+ export declare function getExpiredSessionState(previousSessionState: SessionState | undefined, configuration: Configuration): SessionState;
11
+ export declare function isSessionInNotStartedState(session: SessionState): boolean;
12
+ export declare function isSessionStarted(session: SessionState): boolean;
13
+ export declare function isSessionInExpiredState(session: SessionState): boolean;
14
+ export declare function expandSessionState(session: SessionState): void;
15
+ export declare function toSessionString(session: SessionState): string;
16
+ export declare function toSessionState(sessionString: string | undefined | null): SessionState;
@@ -0,0 +1,60 @@
1
+ import { isEmptyObject } from '../../tools/utils/objectUtils';
2
+ import { objectEntries } from '../../tools/utils/polyfills';
3
+ import { dateNow } from '../../tools/utils/timeUtils';
4
+ import { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';
5
+ import { isValidSessionString, SESSION_ENTRY_REGEXP, SESSION_ENTRY_SEPARATOR } from './sessionStateValidation';
6
+ export const EXPIRED = '1';
7
+ export function getExpiredSessionState(previousSessionState, configuration) {
8
+ const expiredSessionState = {
9
+ isExpired: EXPIRED,
10
+ };
11
+ if (configuration.trackAnonymousUser && (previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId)) {
12
+ expiredSessionState.anonymousId = previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId;
13
+ }
14
+ return expiredSessionState;
15
+ }
16
+ export function isSessionInNotStartedState(session) {
17
+ return isEmptyObject(session);
18
+ }
19
+ export function isSessionStarted(session) {
20
+ return !isSessionInNotStartedState(session);
21
+ }
22
+ export function isSessionInExpiredState(session) {
23
+ return session.isExpired !== undefined || !isActiveSession(session);
24
+ }
25
+ // An active session is a session in either `Tracked` or `NotTracked` state
26
+ function isActiveSession(sessionState) {
27
+ // created and expire can be undefined for versions which was not storing them
28
+ // these checks could be removed when older versions will not be available/live anymore
29
+ return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&
30
+ (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));
31
+ }
32
+ export function expandSessionState(session) {
33
+ session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);
34
+ }
35
+ export function toSessionString(session) {
36
+ return (objectEntries(session)
37
+ // we use `aid` as a key for anonymousId
38
+ .map(([key, value]) => (key === 'anonymousId' ? `aid=${value}` : `${key}=${value}`))
39
+ .join(SESSION_ENTRY_SEPARATOR));
40
+ }
41
+ export function toSessionState(sessionString) {
42
+ const session = {};
43
+ if (isValidSessionString(sessionString)) {
44
+ sessionString.split(SESSION_ENTRY_SEPARATOR).forEach((entry) => {
45
+ const matches = SESSION_ENTRY_REGEXP.exec(entry);
46
+ if (matches !== null) {
47
+ const [, key, value] = matches;
48
+ if (key === 'aid') {
49
+ // we use `aid` as a key for anonymousId
50
+ session.anonymousId = value;
51
+ }
52
+ else {
53
+ session[key] = value;
54
+ }
55
+ }
56
+ });
57
+ }
58
+ return session;
59
+ }
60
+ //# sourceMappingURL=sessionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionState.js","sourceRoot":"","sources":["../../../src/domain/session/sessionState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const SESSION_ENTRY_REGEXP: RegExp;
2
+ export declare const SESSION_ENTRY_SEPARATOR = "&";
3
+ export declare function isValidSessionString(sessionString: string | undefined | null): sessionString is string;
@@ -0,0 +1,7 @@
1
+ export const SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;
2
+ export const SESSION_ENTRY_SEPARATOR = '&';
3
+ export function isValidSessionString(sessionString) {
4
+ return (!!sessionString &&
5
+ (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));
6
+ }
7
+ //# sourceMappingURL=sessionStateValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStateValidation.js","sourceRoot":"","sources":["../../../src/domain/session/sessionStateValidation.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,4BAA4B,CAAA;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAA;AAE1C,MAAM,UAAU,oBAAoB,CAAC,aAAwC;IAC3E,OAAO,CACL,CAAC,CAAC,aAAa;QACf,CAAC,aAAa,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CACpG,CAAA;AACH,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { Observable } from '../../tools/observable';
2
+ import type { InitConfiguration, Configuration } from '../configuration';
3
+ import type { SessionStoreStrategy, SessionStoreStrategyType } from './storeStrategies/sessionStoreStrategy';
4
+ import type { SessionState } from './sessionState';
5
+ export interface SessionStore {
6
+ expandOrRenewSession: () => void;
7
+ expandSession: () => void;
8
+ getSession: () => SessionState;
9
+ restartSession: () => void;
10
+ renewObservable: Observable<void>;
11
+ expireObservable: Observable<void>;
12
+ sessionStateUpdateObservable: Observable<{
13
+ previousState: SessionState;
14
+ newState: SessionState;
15
+ }>;
16
+ expire: (hasConsent?: boolean) => void;
17
+ stop: () => void;
18
+ updateSessionState: (state: Partial<SessionState>) => void;
19
+ }
20
+ /**
21
+ * Every second, the storage will be polled to check for any change that can occur
22
+ * to the session state in another browser tab, or another window.
23
+ * This value has been determined from our previous cookie-only implementation.
24
+ */
25
+ export declare const STORAGE_POLL_DELAY = 1000;
26
+ /**
27
+ * Selects the correct session store strategy type based on the configuration and storage
28
+ * availability.
29
+ */
30
+ export declare function selectSessionStoreStrategyType(initConfiguration: InitConfiguration): SessionStoreStrategyType | undefined;
31
+ export declare function getSessionStoreStrategy(sessionStoreStrategyType: SessionStoreStrategyType, configuration: Configuration): SessionStoreStrategy;
32
+ /**
33
+ * Different session concepts:
34
+ * - tracked, the session has an id and is updated along the user navigation
35
+ * - not tracked, the session does not have an id but it is updated along the user navigation
36
+ * - inactive, no session in store or session expired, waiting for a renew session
37
+ */
38
+ export declare function startSessionStore<TrackingType extends string>(sessionStoreStrategyType: SessionStoreStrategyType, configuration: Configuration, productKey: string, computeTrackingType: (rawTrackingType?: string) => TrackingType, sessionStoreStrategy?: SessionStoreStrategy): SessionStore;
@@ -0,0 +1,179 @@
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 { display } from '../../tools/display';
7
+ import { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';
8
+ import { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';
9
+ import { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';
10
+ import { processSessionStoreOperations } from './sessionStoreOperations';
11
+ import { SESSION_NOT_TRACKED, SessionPersistence } from './sessionConstants';
12
+ /**
13
+ * Every second, the storage will be polled to check for any change that can occur
14
+ * to the session state in another browser tab, or another window.
15
+ * This value has been determined from our previous cookie-only implementation.
16
+ */
17
+ export const STORAGE_POLL_DELAY = ONE_SECOND;
18
+ /**
19
+ * Selects the correct session store strategy type based on the configuration and storage
20
+ * availability.
21
+ */
22
+ export function selectSessionStoreStrategyType(initConfiguration) {
23
+ switch (initConfiguration.sessionPersistence) {
24
+ case SessionPersistence.COOKIE:
25
+ return selectCookieStrategy(initConfiguration);
26
+ case SessionPersistence.LOCAL_STORAGE:
27
+ return selectLocalStorageStrategy();
28
+ case undefined: {
29
+ let sessionStoreStrategyType = selectCookieStrategy(initConfiguration);
30
+ if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {
31
+ sessionStoreStrategyType = selectLocalStorageStrategy();
32
+ }
33
+ return sessionStoreStrategyType;
34
+ }
35
+ default:
36
+ display.error(`Invalid session persistence '${String(initConfiguration.sessionPersistence)}'`);
37
+ }
38
+ }
39
+ export function getSessionStoreStrategy(sessionStoreStrategyType, configuration) {
40
+ return sessionStoreStrategyType.type === SessionPersistence.COOKIE
41
+ ? initCookieStrategy(configuration, sessionStoreStrategyType.cookieOptions)
42
+ : initLocalStorageStrategy(configuration);
43
+ }
44
+ /**
45
+ * Different session concepts:
46
+ * - tracked, the session has an id and is updated along the user navigation
47
+ * - not tracked, the session does not have an id but it is updated along the user navigation
48
+ * - inactive, no session in store or session expired, waiting for a renew session
49
+ */
50
+ export function startSessionStore(sessionStoreStrategyType, configuration, productKey, computeTrackingType, sessionStoreStrategy = getSessionStoreStrategy(sessionStoreStrategyType, configuration)) {
51
+ const renewObservable = new Observable();
52
+ const expireObservable = new Observable();
53
+ const sessionStateUpdateObservable = new Observable();
54
+ const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);
55
+ let sessionCache;
56
+ startSession();
57
+ const { throttled: throttledExpandOrRenewSession, cancel: cancelExpandOrRenewSession } = throttle(() => {
58
+ processSessionStoreOperations({
59
+ process: (sessionState) => {
60
+ if (isSessionInNotStartedState(sessionState)) {
61
+ return;
62
+ }
63
+ const synchronizedSession = synchronizeSession(sessionState);
64
+ expandOrRenewSessionState(synchronizedSession);
65
+ return synchronizedSession;
66
+ },
67
+ after: (sessionState) => {
68
+ if (isSessionStarted(sessionState) && !hasSessionInCache()) {
69
+ renewSessionInCache(sessionState);
70
+ }
71
+ sessionCache = sessionState;
72
+ },
73
+ }, sessionStoreStrategy);
74
+ }, STORAGE_POLL_DELAY);
75
+ function expandSession() {
76
+ processSessionStoreOperations({
77
+ process: (sessionState) => (hasSessionInCache() ? synchronizeSession(sessionState) : undefined),
78
+ }, sessionStoreStrategy);
79
+ }
80
+ /**
81
+ * allows two behaviors:
82
+ * - if the session is active, synchronize the session cache without updating the session store
83
+ * - if the session is not active, clear the session store and expire the session cache
84
+ */
85
+ function watchSession() {
86
+ const sessionState = sessionStoreStrategy.retrieveSession();
87
+ if (isSessionInExpiredState(sessionState)) {
88
+ processSessionStoreOperations({
89
+ process: (sessionState) => isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState, configuration) : undefined,
90
+ after: synchronizeSession,
91
+ }, sessionStoreStrategy);
92
+ }
93
+ else {
94
+ synchronizeSession(sessionState);
95
+ }
96
+ }
97
+ function synchronizeSession(sessionState) {
98
+ if (isSessionInExpiredState(sessionState)) {
99
+ sessionState = getExpiredSessionState(sessionState, configuration);
100
+ }
101
+ if (hasSessionInCache()) {
102
+ if (isSessionInCacheOutdated(sessionState)) {
103
+ expireSessionInCache();
104
+ }
105
+ else {
106
+ sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });
107
+ sessionCache = sessionState;
108
+ }
109
+ }
110
+ return sessionState;
111
+ }
112
+ function startSession() {
113
+ processSessionStoreOperations({
114
+ process: (sessionState) => {
115
+ if (isSessionInNotStartedState(sessionState)) {
116
+ sessionState.anonymousId = generateUUID();
117
+ return getExpiredSessionState(sessionState, configuration);
118
+ }
119
+ },
120
+ after: (sessionState) => {
121
+ sessionCache = sessionState;
122
+ },
123
+ }, sessionStoreStrategy);
124
+ }
125
+ function expandOrRenewSessionState(sessionState) {
126
+ if (isSessionInNotStartedState(sessionState)) {
127
+ return false;
128
+ }
129
+ const trackingType = computeTrackingType(sessionState[productKey]);
130
+ sessionState[productKey] = trackingType;
131
+ delete sessionState.isExpired;
132
+ if (trackingType !== SESSION_NOT_TRACKED && !sessionState.id) {
133
+ sessionState.id = generateUUID();
134
+ sessionState.created = String(dateNow());
135
+ }
136
+ }
137
+ function hasSessionInCache() {
138
+ return (sessionCache === null || sessionCache === void 0 ? void 0 : sessionCache[productKey]) !== undefined;
139
+ }
140
+ function isSessionInCacheOutdated(sessionState) {
141
+ return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];
142
+ }
143
+ function expireSessionInCache() {
144
+ sessionCache = getExpiredSessionState(sessionCache, configuration);
145
+ expireObservable.notify();
146
+ }
147
+ function renewSessionInCache(sessionState) {
148
+ sessionCache = sessionState;
149
+ renewObservable.notify();
150
+ }
151
+ function updateSessionState(partialSessionState) {
152
+ processSessionStoreOperations({
153
+ process: (sessionState) => ({ ...sessionState, ...partialSessionState }),
154
+ after: synchronizeSession,
155
+ }, sessionStoreStrategy);
156
+ }
157
+ return {
158
+ expandOrRenewSession: throttledExpandOrRenewSession,
159
+ expandSession,
160
+ getSession: () => sessionCache,
161
+ renewObservable,
162
+ expireObservable,
163
+ sessionStateUpdateObservable,
164
+ restartSession: startSession,
165
+ expire: (hasConsent) => {
166
+ cancelExpandOrRenewSession();
167
+ if (hasConsent === false && sessionCache) {
168
+ delete sessionCache.anonymousId;
169
+ }
170
+ sessionStoreStrategy.expireSession(sessionCache);
171
+ synchronizeSession(getExpiredSessionState(sessionCache, configuration));
172
+ },
173
+ stop: () => {
174
+ clearInterval(watchSessionTimeoutId);
175
+ },
176
+ updateSessionState,
177
+ };
178
+ }
179
+ //# sourceMappingURL=sessionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.js","sourceRoot":"","sources":["../../../src/domain/session/sessionStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy';
2
+ import type { SessionState } from './sessionState';
3
+ interface Operations {
4
+ process: (sessionState: SessionState) => SessionState | undefined;
5
+ after?: (sessionState: SessionState) => void;
6
+ }
7
+ export declare const LOCK_RETRY_DELAY = 10;
8
+ export declare const LOCK_MAX_TRIES = 100;
9
+ export declare const LOCK_EXPIRATION_DELAY = 1000;
10
+ export declare function processSessionStoreOperations(operations: Operations, sessionStoreStrategy: SessionStoreStrategy, numberOfRetries?: number): void;
11
+ export declare function createLock(): string;
12
+ export {};