@scalebun-release/web 2.2.2

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 (1062) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -0
  3. package/dist/bootstrap/FeatureRegistry.d.ts +44 -0
  4. package/dist/bootstrap/FeatureRegistry.d.ts.map +1 -0
  5. package/dist/bootstrap/FeatureRegistry.js +85 -0
  6. package/dist/bootstrap/FeatureRegistry.js.map +1 -0
  7. package/dist/bootstrap/SDKBootstrapper.d.ts +37 -0
  8. package/dist/bootstrap/SDKBootstrapper.d.ts.map +1 -0
  9. package/dist/bootstrap/SDKBootstrapper.js +346 -0
  10. package/dist/bootstrap/SDKBootstrapper.js.map +1 -0
  11. package/dist/browser.d.ts +51 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +86 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/config/endpoints.d.ts +12 -0
  16. package/dist/config/endpoints.d.ts.map +1 -0
  17. package/dist/config/endpoints.js +12 -0
  18. package/dist/config/endpoints.js.map +1 -0
  19. package/dist/config/schema.d.ts +120 -0
  20. package/dist/config/schema.d.ts.map +1 -0
  21. package/dist/config/schema.js +117 -0
  22. package/dist/config/schema.js.map +1 -0
  23. package/dist/core/breadcrumbs.d.ts +56 -0
  24. package/dist/core/breadcrumbs.d.ts.map +1 -0
  25. package/dist/core/breadcrumbs.js +141 -0
  26. package/dist/core/breadcrumbs.js.map +1 -0
  27. package/dist/core/capabilities.d.ts +38 -0
  28. package/dist/core/capabilities.d.ts.map +1 -0
  29. package/dist/core/capabilities.js +78 -0
  30. package/dist/core/capabilities.js.map +1 -0
  31. package/dist/core/consent.d.ts +17 -0
  32. package/dist/core/consent.d.ts.map +1 -0
  33. package/dist/core/consent.js +38 -0
  34. package/dist/core/consent.js.map +1 -0
  35. package/dist/core/csp.d.ts +31 -0
  36. package/dist/core/csp.d.ts.map +1 -0
  37. package/dist/core/csp.js +74 -0
  38. package/dist/core/csp.js.map +1 -0
  39. package/dist/core/evalContext.d.ts +7 -0
  40. package/dist/core/evalContext.d.ts.map +1 -0
  41. package/dist/core/evalContext.js +22 -0
  42. package/dist/core/evalContext.js.map +1 -0
  43. package/dist/core/ids.d.ts +6 -0
  44. package/dist/core/ids.d.ts.map +1 -0
  45. package/dist/core/ids.js +35 -0
  46. package/dist/core/ids.js.map +1 -0
  47. package/dist/core/index.d.ts +16 -0
  48. package/dist/core/index.d.ts.map +1 -0
  49. package/dist/core/index.js +16 -0
  50. package/dist/core/index.js.map +1 -0
  51. package/dist/core/lifecycle.d.ts +4 -0
  52. package/dist/core/lifecycle.d.ts.map +1 -0
  53. package/dist/core/lifecycle.js +24 -0
  54. package/dist/core/lifecycle.js.map +1 -0
  55. package/dist/core/logger.d.ts +12 -0
  56. package/dist/core/logger.d.ts.map +1 -0
  57. package/dist/core/logger.js +14 -0
  58. package/dist/core/logger.js.map +1 -0
  59. package/dist/core/observe.d.ts +3 -0
  60. package/dist/core/observe.d.ts.map +1 -0
  61. package/dist/core/observe.js +22 -0
  62. package/dist/core/observe.js.map +1 -0
  63. package/dist/core/pageContext.d.ts +13 -0
  64. package/dist/core/pageContext.d.ts.map +1 -0
  65. package/dist/core/pageContext.js +90 -0
  66. package/dist/core/pageContext.js.map +1 -0
  67. package/dist/core/prune.d.ts +31 -0
  68. package/dist/core/prune.d.ts.map +1 -0
  69. package/dist/core/prune.js +112 -0
  70. package/dist/core/prune.js.map +1 -0
  71. package/dist/core/redact.d.ts +15 -0
  72. package/dist/core/redact.d.ts.map +1 -0
  73. package/dist/core/redact.js +72 -0
  74. package/dist/core/redact.js.map +1 -0
  75. package/dist/core/replayCoord.d.ts +22 -0
  76. package/dist/core/replayCoord.d.ts.map +1 -0
  77. package/dist/core/replayCoord.js +20 -0
  78. package/dist/core/replayCoord.js.map +1 -0
  79. package/dist/core/retry.d.ts +25 -0
  80. package/dist/core/retry.d.ts.map +1 -0
  81. package/dist/core/retry.js +44 -0
  82. package/dist/core/retry.js.map +1 -0
  83. package/dist/core/runtime.d.ts +28 -0
  84. package/dist/core/runtime.d.ts.map +1 -0
  85. package/dist/core/runtime.js +67 -0
  86. package/dist/core/runtime.js.map +1 -0
  87. package/dist/core/scrollDepth.d.ts +48 -0
  88. package/dist/core/scrollDepth.d.ts.map +1 -0
  89. package/dist/core/scrollDepth.js +63 -0
  90. package/dist/core/scrollDepth.js.map +1 -0
  91. package/dist/core/uiStateReader.d.ts +35 -0
  92. package/dist/core/uiStateReader.d.ts.map +1 -0
  93. package/dist/core/uiStateReader.js +47 -0
  94. package/dist/core/uiStateReader.js.map +1 -0
  95. package/dist/core/version.generated.d.ts +9 -0
  96. package/dist/core/version.generated.d.ts.map +1 -0
  97. package/dist/core/version.generated.js +9 -0
  98. package/dist/core/version.generated.js.map +1 -0
  99. package/dist/debug/index.d.ts +6 -0
  100. package/dist/debug/index.d.ts.map +1 -0
  101. package/dist/debug/index.js +2 -0
  102. package/dist/debug/index.js.map +1 -0
  103. package/dist/features/analytics/AnalyticsFeature.d.ts +123 -0
  104. package/dist/features/analytics/AnalyticsFeature.d.ts.map +1 -0
  105. package/dist/features/analytics/AnalyticsFeature.js +785 -0
  106. package/dist/features/analytics/AnalyticsFeature.js.map +1 -0
  107. package/dist/features/analytics/autocapture.d.ts +13 -0
  108. package/dist/features/analytics/autocapture.d.ts.map +1 -0
  109. package/dist/features/analytics/autocapture.js +436 -0
  110. package/dist/features/analytics/autocapture.js.map +1 -0
  111. package/dist/features/analytics/governance.d.ts +15 -0
  112. package/dist/features/analytics/governance.d.ts.map +1 -0
  113. package/dist/features/analytics/governance.js +30 -0
  114. package/dist/features/analytics/governance.js.map +1 -0
  115. package/dist/features/analytics/revenue.d.ts +77 -0
  116. package/dist/features/analytics/revenue.d.ts.map +1 -0
  117. package/dist/features/analytics/revenue.js +56 -0
  118. package/dist/features/analytics/revenue.js.map +1 -0
  119. package/dist/features/analytics/sampler.d.ts +2 -0
  120. package/dist/features/analytics/sampler.d.ts.map +1 -0
  121. package/dist/features/analytics/sampler.js +24 -0
  122. package/dist/features/analytics/sampler.js.map +1 -0
  123. package/dist/features/analytics/subscription.d.ts +35 -0
  124. package/dist/features/analytics/subscription.d.ts.map +1 -0
  125. package/dist/features/analytics/subscription.js +95 -0
  126. package/dist/features/analytics/subscription.js.map +1 -0
  127. package/dist/features/attention/index.d.ts +29 -0
  128. package/dist/features/attention/index.d.ts.map +1 -0
  129. package/dist/features/attention/index.js +128 -0
  130. package/dist/features/attention/index.js.map +1 -0
  131. package/dist/features/bugreport/BugReportFeature.d.ts +37 -0
  132. package/dist/features/bugreport/BugReportFeature.d.ts.map +1 -0
  133. package/dist/features/bugreport/BugReportFeature.js +56 -0
  134. package/dist/features/bugreport/BugReportFeature.js.map +1 -0
  135. package/dist/features/bugreport/collect.d.ts +33 -0
  136. package/dist/features/bugreport/collect.d.ts.map +1 -0
  137. package/dist/features/bugreport/collect.js +30 -0
  138. package/dist/features/bugreport/collect.js.map +1 -0
  139. package/dist/features/bugreport/widget.d.ts +40 -0
  140. package/dist/features/bugreport/widget.d.ts.map +1 -0
  141. package/dist/features/bugreport/widget.js +145 -0
  142. package/dist/features/bugreport/widget.js.map +1 -0
  143. package/dist/features/coach/CoachmarkFeature.d.ts +78 -0
  144. package/dist/features/coach/CoachmarkFeature.d.ts.map +1 -0
  145. package/dist/features/coach/CoachmarkFeature.js +161 -0
  146. package/dist/features/coach/CoachmarkFeature.js.map +1 -0
  147. package/dist/features/coach/anchor.d.ts +32 -0
  148. package/dist/features/coach/anchor.d.ts.map +1 -0
  149. package/dist/features/coach/anchor.js +128 -0
  150. package/dist/features/coach/anchor.js.map +1 -0
  151. package/dist/features/coach/observers.d.ts +17 -0
  152. package/dist/features/coach/observers.d.ts.map +1 -0
  153. package/dist/features/coach/observers.js +49 -0
  154. package/dist/features/coach/observers.js.map +1 -0
  155. package/dist/features/coach/overlay.d.ts +15 -0
  156. package/dist/features/coach/overlay.d.ts.map +1 -0
  157. package/dist/features/coach/overlay.js +205 -0
  158. package/dist/features/coach/overlay.js.map +1 -0
  159. package/dist/features/coach/position.d.ts +9 -0
  160. package/dist/features/coach/position.d.ts.map +1 -0
  161. package/dist/features/coach/position.js +83 -0
  162. package/dist/features/coach/position.js.map +1 -0
  163. package/dist/features/coach/predicate.d.ts +10 -0
  164. package/dist/features/coach/predicate.d.ts.map +1 -0
  165. package/dist/features/coach/predicate.js +36 -0
  166. package/dist/features/coach/predicate.js.map +1 -0
  167. package/dist/features/coach/tour.d.ts +55 -0
  168. package/dist/features/coach/tour.d.ts.map +1 -0
  169. package/dist/features/coach/tour.js +181 -0
  170. package/dist/features/coach/tour.js.map +1 -0
  171. package/dist/features/coach/types.d.ts +161 -0
  172. package/dist/features/coach/types.d.ts.map +1 -0
  173. package/dist/features/coach/types.js +2 -0
  174. package/dist/features/coach/types.js.map +1 -0
  175. package/dist/features/coach/wait.d.ts +34 -0
  176. package/dist/features/coach/wait.d.ts.map +1 -0
  177. package/dist/features/coach/wait.js +107 -0
  178. package/dist/features/coach/wait.js.map +1 -0
  179. package/dist/features/config/ConfigFeature.d.ts +117 -0
  180. package/dist/features/config/ConfigFeature.d.ts.map +1 -0
  181. package/dist/features/config/ConfigFeature.js +437 -0
  182. package/dist/features/config/ConfigFeature.js.map +1 -0
  183. package/dist/features/config/bucketing.d.ts +20 -0
  184. package/dist/features/config/bucketing.d.ts.map +1 -0
  185. package/dist/features/config/bucketing.js +37 -0
  186. package/dist/features/config/bucketing.js.map +1 -0
  187. package/dist/features/config/configStore.d.ts +11 -0
  188. package/dist/features/config/configStore.d.ts.map +1 -0
  189. package/dist/features/config/configStore.js +66 -0
  190. package/dist/features/config/configStore.js.map +1 -0
  191. package/dist/features/config/targeting.d.ts +11 -0
  192. package/dist/features/config/targeting.d.ts.map +1 -0
  193. package/dist/features/config/targeting.js +57 -0
  194. package/dist/features/config/targeting.js.map +1 -0
  195. package/dist/features/config/types.d.ts +100 -0
  196. package/dist/features/config/types.d.ts.map +1 -0
  197. package/dist/features/config/types.js +9 -0
  198. package/dist/features/config/types.js.map +1 -0
  199. package/dist/features/console/ConsoleFeature.d.ts +31 -0
  200. package/dist/features/console/ConsoleFeature.d.ts.map +1 -0
  201. package/dist/features/console/ConsoleFeature.js +98 -0
  202. package/dist/features/console/ConsoleFeature.js.map +1 -0
  203. package/dist/features/console/normalize.d.ts +18 -0
  204. package/dist/features/console/normalize.d.ts.map +1 -0
  205. package/dist/features/console/normalize.js +64 -0
  206. package/dist/features/console/normalize.js.map +1 -0
  207. package/dist/features/console/serialize.d.ts +24 -0
  208. package/dist/features/console/serialize.d.ts.map +1 -0
  209. package/dist/features/console/serialize.js +99 -0
  210. package/dist/features/console/serialize.js.map +1 -0
  211. package/dist/features/console/throttle.d.ts +27 -0
  212. package/dist/features/console/throttle.d.ts.map +1 -0
  213. package/dist/features/console/throttle.js +37 -0
  214. package/dist/features/console/throttle.js.map +1 -0
  215. package/dist/features/crash/CrashFeature.d.ts +46 -0
  216. package/dist/features/crash/CrashFeature.d.ts.map +1 -0
  217. package/dist/features/crash/CrashFeature.js +173 -0
  218. package/dist/features/crash/CrashFeature.js.map +1 -0
  219. package/dist/features/crash/liveness.d.ts +30 -0
  220. package/dist/features/crash/liveness.d.ts.map +1 -0
  221. package/dist/features/crash/liveness.js +131 -0
  222. package/dist/features/crash/liveness.js.map +1 -0
  223. package/dist/features/engage/EngageFeature.d.ts +67 -0
  224. package/dist/features/engage/EngageFeature.d.ts.map +1 -0
  225. package/dist/features/engage/EngageFeature.js +243 -0
  226. package/dist/features/engage/EngageFeature.js.map +1 -0
  227. package/dist/features/engage/attachments.d.ts +24 -0
  228. package/dist/features/engage/attachments.d.ts.map +1 -0
  229. package/dist/features/engage/attachments.js +209 -0
  230. package/dist/features/engage/attachments.js.map +1 -0
  231. package/dist/features/engage/gameLogic.d.ts +60 -0
  232. package/dist/features/engage/gameLogic.d.ts.map +1 -0
  233. package/dist/features/engage/gameLogic.js +213 -0
  234. package/dist/features/engage/gameLogic.js.map +1 -0
  235. package/dist/features/engage/gameResolver.d.ts +35 -0
  236. package/dist/features/engage/gameResolver.d.ts.map +1 -0
  237. package/dist/features/engage/gameResolver.js +81 -0
  238. package/dist/features/engage/gameResolver.js.map +1 -0
  239. package/dist/features/engage/gameTypes.d.ts +76 -0
  240. package/dist/features/engage/gameTypes.d.ts.map +1 -0
  241. package/dist/features/engage/gameTypes.js +17 -0
  242. package/dist/features/engage/gameTypes.js.map +1 -0
  243. package/dist/features/engage/inappSlots.d.ts +39 -0
  244. package/dist/features/engage/inappSlots.d.ts.map +1 -0
  245. package/dist/features/engage/inappSlots.js +50 -0
  246. package/dist/features/engage/inappSlots.js.map +1 -0
  247. package/dist/features/engage/normalize.d.ts +11 -0
  248. package/dist/features/engage/normalize.d.ts.map +1 -0
  249. package/dist/features/engage/normalize.js +210 -0
  250. package/dist/features/engage/normalize.js.map +1 -0
  251. package/dist/features/engage/richInApp.d.ts +64 -0
  252. package/dist/features/engage/richInApp.d.ts.map +1 -0
  253. package/dist/features/engage/richInApp.js +1082 -0
  254. package/dist/features/engage/richInApp.js.map +1 -0
  255. package/dist/features/engage/runtime.d.ts +89 -0
  256. package/dist/features/engage/runtime.d.ts.map +1 -0
  257. package/dist/features/engage/runtime.js +364 -0
  258. package/dist/features/engage/runtime.js.map +1 -0
  259. package/dist/features/engage/shakeDetector.d.ts +6 -0
  260. package/dist/features/engage/shakeDetector.d.ts.map +1 -0
  261. package/dist/features/engage/shakeDetector.js +105 -0
  262. package/dist/features/engage/shakeDetector.js.map +1 -0
  263. package/dist/features/engage/theme.d.ts +129 -0
  264. package/dist/features/engage/theme.d.ts.map +1 -0
  265. package/dist/features/engage/theme.js +270 -0
  266. package/dist/features/engage/theme.js.map +1 -0
  267. package/dist/features/engage/throttle.d.ts +41 -0
  268. package/dist/features/engage/throttle.d.ts.map +1 -0
  269. package/dist/features/engage/throttle.js +220 -0
  270. package/dist/features/engage/throttle.js.map +1 -0
  271. package/dist/features/engage/transport.d.ts +62 -0
  272. package/dist/features/engage/transport.d.ts.map +1 -0
  273. package/dist/features/engage/transport.js +185 -0
  274. package/dist/features/engage/transport.js.map +1 -0
  275. package/dist/features/engage/triggerEngine.d.ts +39 -0
  276. package/dist/features/engage/triggerEngine.d.ts.map +1 -0
  277. package/dist/features/engage/triggerEngine.js +105 -0
  278. package/dist/features/engage/triggerEngine.js.map +1 -0
  279. package/dist/features/engage/types.d.ts +271 -0
  280. package/dist/features/engage/types.d.ts.map +1 -0
  281. package/dist/features/engage/types.js +3 -0
  282. package/dist/features/engage/types.js.map +1 -0
  283. package/dist/features/engage/widget/InAppWidget.d.ts +10 -0
  284. package/dist/features/engage/widget/InAppWidget.d.ts.map +1 -0
  285. package/dist/features/engage/widget/InAppWidget.js +137 -0
  286. package/dist/features/engage/widget/InAppWidget.js.map +1 -0
  287. package/dist/features/engage/widget/SurveyWidget.d.ts +11 -0
  288. package/dist/features/engage/widget/SurveyWidget.d.ts.map +1 -0
  289. package/dist/features/engage/widget/SurveyWidget.js +547 -0
  290. package/dist/features/engage/widget/SurveyWidget.js.map +1 -0
  291. package/dist/features/errors/ErrorsFeature.d.ts +62 -0
  292. package/dist/features/errors/ErrorsFeature.d.ts.map +1 -0
  293. package/dist/features/errors/ErrorsFeature.js +209 -0
  294. package/dist/features/errors/ErrorsFeature.js.map +1 -0
  295. package/dist/features/errors/causes.d.ts +15 -0
  296. package/dist/features/errors/causes.d.ts.map +1 -0
  297. package/dist/features/errors/causes.js +29 -0
  298. package/dist/features/errors/causes.js.map +1 -0
  299. package/dist/features/errors/dedup.d.ts +28 -0
  300. package/dist/features/errors/dedup.d.ts.map +1 -0
  301. package/dist/features/errors/dedup.js +42 -0
  302. package/dist/features/errors/dedup.js.map +1 -0
  303. package/dist/features/errors/group/fingerprint.d.ts +13 -0
  304. package/dist/features/errors/group/fingerprint.d.ts.map +1 -0
  305. package/dist/features/errors/group/fingerprint.js +45 -0
  306. package/dist/features/errors/group/fingerprint.js.map +1 -0
  307. package/dist/features/errors/lazy.d.ts +8 -0
  308. package/dist/features/errors/lazy.d.ts.map +1 -0
  309. package/dist/features/errors/lazy.js +8 -0
  310. package/dist/features/errors/lazy.js.map +1 -0
  311. package/dist/features/errors/normalize.d.ts +26 -0
  312. package/dist/features/errors/normalize.d.ts.map +1 -0
  313. package/dist/features/errors/normalize.js +58 -0
  314. package/dist/features/errors/normalize.js.map +1 -0
  315. package/dist/features/errors/parse/stacktrace.d.ts +13 -0
  316. package/dist/features/errors/parse/stacktrace.d.ts.map +1 -0
  317. package/dist/features/errors/parse/stacktrace.js +85 -0
  318. package/dist/features/errors/parse/stacktrace.js.map +1 -0
  319. package/dist/features/errors/redact.d.ts +7 -0
  320. package/dist/features/errors/redact.d.ts.map +1 -0
  321. package/dist/features/errors/redact.js +39 -0
  322. package/dist/features/errors/redact.js.map +1 -0
  323. package/dist/features/errors/sampling.d.ts +2 -0
  324. package/dist/features/errors/sampling.d.ts.map +1 -0
  325. package/dist/features/errors/sampling.js +24 -0
  326. package/dist/features/errors/sampling.js.map +1 -0
  327. package/dist/features/errors/scope.d.ts +26 -0
  328. package/dist/features/errors/scope.d.ts.map +1 -0
  329. package/dist/features/errors/scope.js +30 -0
  330. package/dist/features/errors/scope.js.map +1 -0
  331. package/dist/features/exit-intent/ExitIntentFeature.d.ts +16 -0
  332. package/dist/features/exit-intent/ExitIntentFeature.d.ts.map +1 -0
  333. package/dist/features/exit-intent/ExitIntentFeature.js +25 -0
  334. package/dist/features/exit-intent/ExitIntentFeature.js.map +1 -0
  335. package/dist/features/exit-intent/engine.d.ts +127 -0
  336. package/dist/features/exit-intent/engine.d.ts.map +1 -0
  337. package/dist/features/exit-intent/engine.js +227 -0
  338. package/dist/features/exit-intent/engine.js.map +1 -0
  339. package/dist/features/forms/index.d.ts +83 -0
  340. package/dist/features/forms/index.d.ts.map +1 -0
  341. package/dist/features/forms/index.js +405 -0
  342. package/dist/features/forms/index.js.map +1 -0
  343. package/dist/features/inapp/InApp2Feature.d.ts +24 -0
  344. package/dist/features/inapp/InApp2Feature.d.ts.map +1 -0
  345. package/dist/features/inapp/InApp2Feature.js +44 -0
  346. package/dist/features/inapp/InApp2Feature.js.map +1 -0
  347. package/dist/features/inapp/a11y/focus.d.ts +24 -0
  348. package/dist/features/inapp/a11y/focus.d.ts.map +1 -0
  349. package/dist/features/inapp/a11y/focus.js +112 -0
  350. package/dist/features/inapp/a11y/focus.js.map +1 -0
  351. package/dist/features/inapp/anchor/controller.d.ts +64 -0
  352. package/dist/features/inapp/anchor/controller.d.ts.map +1 -0
  353. package/dist/features/inapp/anchor/controller.js +155 -0
  354. package/dist/features/inapp/anchor/controller.js.map +1 -0
  355. package/dist/features/inapp/api.d.ts +28 -0
  356. package/dist/features/inapp/api.d.ts.map +1 -0
  357. package/dist/features/inapp/api.js +41 -0
  358. package/dist/features/inapp/api.js.map +1 -0
  359. package/dist/features/inapp/blocks/blocks.d.ts +65 -0
  360. package/dist/features/inapp/blocks/blocks.d.ts.map +1 -0
  361. package/dist/features/inapp/blocks/blocks.js +196 -0
  362. package/dist/features/inapp/blocks/blocks.js.map +1 -0
  363. package/dist/features/inapp/blocks/feedback.d.ts +13 -0
  364. package/dist/features/inapp/blocks/feedback.d.ts.map +1 -0
  365. package/dist/features/inapp/blocks/feedback.js +154 -0
  366. package/dist/features/inapp/blocks/feedback.js.map +1 -0
  367. package/dist/features/inapp/blocks/heavy/carousel.d.ts +8 -0
  368. package/dist/features/inapp/blocks/heavy/carousel.d.ts.map +1 -0
  369. package/dist/features/inapp/blocks/heavy/carousel.js +67 -0
  370. package/dist/features/inapp/blocks/heavy/carousel.js.map +1 -0
  371. package/dist/features/inapp/blocks/heavy/chart.d.ts +9 -0
  372. package/dist/features/inapp/blocks/heavy/chart.d.ts.map +1 -0
  373. package/dist/features/inapp/blocks/heavy/chart.js +83 -0
  374. package/dist/features/inapp/blocks/heavy/chart.js.map +1 -0
  375. package/dist/features/inapp/blocks/heavy/code.d.ts +8 -0
  376. package/dist/features/inapp/blocks/heavy/code.d.ts.map +1 -0
  377. package/dist/features/inapp/blocks/heavy/code.js +47 -0
  378. package/dist/features/inapp/blocks/heavy/code.js.map +1 -0
  379. package/dist/features/inapp/blocks/heavy/confetti.d.ts +9 -0
  380. package/dist/features/inapp/blocks/heavy/confetti.d.ts.map +1 -0
  381. package/dist/features/inapp/blocks/heavy/confetti.js +76 -0
  382. package/dist/features/inapp/blocks/heavy/confetti.js.map +1 -0
  383. package/dist/features/inapp/blocks/heavy/countdown.d.ts +9 -0
  384. package/dist/features/inapp/blocks/heavy/countdown.d.ts.map +1 -0
  385. package/dist/features/inapp/blocks/heavy/countdown.js +59 -0
  386. package/dist/features/inapp/blocks/heavy/countdown.js.map +1 -0
  387. package/dist/features/inapp/blocks/heavy/index.d.ts +11 -0
  388. package/dist/features/inapp/blocks/heavy/index.d.ts.map +1 -0
  389. package/dist/features/inapp/blocks/heavy/index.js +45 -0
  390. package/dist/features/inapp/blocks/heavy/index.js.map +1 -0
  391. package/dist/features/inapp/blocks/heavy/markdown.d.ts +9 -0
  392. package/dist/features/inapp/blocks/heavy/markdown.d.ts.map +1 -0
  393. package/dist/features/inapp/blocks/heavy/markdown.js +76 -0
  394. package/dist/features/inapp/blocks/heavy/markdown.js.map +1 -0
  395. package/dist/features/inapp/blocks/heavy/productgrid.d.ts +8 -0
  396. package/dist/features/inapp/blocks/heavy/productgrid.d.ts.map +1 -0
  397. package/dist/features/inapp/blocks/heavy/productgrid.js +46 -0
  398. package/dist/features/inapp/blocks/heavy/productgrid.js.map +1 -0
  399. package/dist/features/inapp/blocks/heavy/qr.d.ts +10 -0
  400. package/dist/features/inapp/blocks/heavy/qr.d.ts.map +1 -0
  401. package/dist/features/inapp/blocks/heavy/qr.js +69 -0
  402. package/dist/features/inapp/blocks/heavy/qr.js.map +1 -0
  403. package/dist/features/inapp/blocks/heavy/scratch.d.ts +8 -0
  404. package/dist/features/inapp/blocks/heavy/scratch.d.ts.map +1 -0
  405. package/dist/features/inapp/blocks/heavy/scratch.js +141 -0
  406. package/dist/features/inapp/blocks/heavy/scratch.js.map +1 -0
  407. package/dist/features/inapp/blocks/heavy/slot.d.ts +8 -0
  408. package/dist/features/inapp/blocks/heavy/slot.d.ts.map +1 -0
  409. package/dist/features/inapp/blocks/heavy/slot.js +96 -0
  410. package/dist/features/inapp/blocks/heavy/slot.js.map +1 -0
  411. package/dist/features/inapp/blocks/heavy/spinwheel.d.ts +9 -0
  412. package/dist/features/inapp/blocks/heavy/spinwheel.d.ts.map +1 -0
  413. package/dist/features/inapp/blocks/heavy/spinwheel.js +127 -0
  414. package/dist/features/inapp/blocks/heavy/spinwheel.js.map +1 -0
  415. package/dist/features/inapp/blocks/heavy/steps.d.ts +27 -0
  416. package/dist/features/inapp/blocks/heavy/steps.d.ts.map +1 -0
  417. package/dist/features/inapp/blocks/heavy/steps.js +135 -0
  418. package/dist/features/inapp/blocks/heavy/steps.js.map +1 -0
  419. package/dist/features/inapp/blocks/heavy/streak.d.ts +18 -0
  420. package/dist/features/inapp/blocks/heavy/streak.d.ts.map +1 -0
  421. package/dist/features/inapp/blocks/heavy/streak.js +52 -0
  422. package/dist/features/inapp/blocks/heavy/streak.js.map +1 -0
  423. package/dist/features/inapp/blocks/heavy/table.d.ts +7 -0
  424. package/dist/features/inapp/blocks/heavy/table.d.ts.map +1 -0
  425. package/dist/features/inapp/blocks/heavy/table.js +30 -0
  426. package/dist/features/inapp/blocks/heavy/table.js.map +1 -0
  427. package/dist/features/inapp/blocks/heavy/unavailable.d.ts +28 -0
  428. package/dist/features/inapp/blocks/heavy/unavailable.d.ts.map +1 -0
  429. package/dist/features/inapp/blocks/heavy/unavailable.js +33 -0
  430. package/dist/features/inapp/blocks/heavy/unavailable.js.map +1 -0
  431. package/dist/features/inapp/blocks/heavy/video.d.ts +7 -0
  432. package/dist/features/inapp/blocks/heavy/video.d.ts.map +1 -0
  433. package/dist/features/inapp/blocks/heavy/video.js +38 -0
  434. package/dist/features/inapp/blocks/heavy/video.js.map +1 -0
  435. package/dist/features/inapp/blocks/styles.d.ts +7 -0
  436. package/dist/features/inapp/blocks/styles.d.ts.map +1 -0
  437. package/dist/features/inapp/blocks/styles.js +225 -0
  438. package/dist/features/inapp/blocks/styles.js.map +1 -0
  439. package/dist/features/inapp/center/bridge.d.ts +12 -0
  440. package/dist/features/inapp/center/bridge.d.ts.map +1 -0
  441. package/dist/features/inapp/center/bridge.js +59 -0
  442. package/dist/features/inapp/center/bridge.js.map +1 -0
  443. package/dist/features/inapp/center/panel.d.ts +20 -0
  444. package/dist/features/inapp/center/panel.d.ts.map +1 -0
  445. package/dist/features/inapp/center/panel.js +228 -0
  446. package/dist/features/inapp/center/panel.js.map +1 -0
  447. package/dist/features/inapp/center/store.d.ts +50 -0
  448. package/dist/features/inapp/center/store.d.ts.map +1 -0
  449. package/dist/features/inapp/center/store.js +188 -0
  450. package/dist/features/inapp/center/store.js.map +1 -0
  451. package/dist/features/inapp/center/sync.d.ts +32 -0
  452. package/dist/features/inapp/center/sync.d.ts.map +1 -0
  453. package/dist/features/inapp/center/sync.js +60 -0
  454. package/dist/features/inapp/center/sync.js.map +1 -0
  455. package/dist/features/inapp/center/types.d.ts +46 -0
  456. package/dist/features/inapp/center/types.d.ts.map +1 -0
  457. package/dist/features/inapp/center/types.js +5 -0
  458. package/dist/features/inapp/center/types.js.map +1 -0
  459. package/dist/features/inapp/core/analytics.d.ts +35 -0
  460. package/dist/features/inapp/core/analytics.d.ts.map +1 -0
  461. package/dist/features/inapp/core/analytics.js +70 -0
  462. package/dist/features/inapp/core/analytics.js.map +1 -0
  463. package/dist/features/inapp/core/compat.d.ts +28 -0
  464. package/dist/features/inapp/core/compat.d.ts.map +1 -0
  465. package/dist/features/inapp/core/compat.js +104 -0
  466. package/dist/features/inapp/core/compat.js.map +1 -0
  467. package/dist/features/inapp/core/debugOverlay.d.ts +5 -0
  468. package/dist/features/inapp/core/debugOverlay.d.ts.map +1 -0
  469. package/dist/features/inapp/core/debugOverlay.js +79 -0
  470. package/dist/features/inapp/core/debugOverlay.js.map +1 -0
  471. package/dist/features/inapp/core/engine.d.ts +72 -0
  472. package/dist/features/inapp/core/engine.d.ts.map +1 -0
  473. package/dist/features/inapp/core/engine.js +248 -0
  474. package/dist/features/inapp/core/engine.js.map +1 -0
  475. package/dist/features/inapp/core/environment.d.ts +21 -0
  476. package/dist/features/inapp/core/environment.d.ts.map +1 -0
  477. package/dist/features/inapp/core/environment.js +57 -0
  478. package/dist/features/inapp/core/environment.js.map +1 -0
  479. package/dist/features/inapp/core/host.d.ts +53 -0
  480. package/dist/features/inapp/core/host.d.ts.map +1 -0
  481. package/dist/features/inapp/core/host.js +243 -0
  482. package/dist/features/inapp/core/host.js.map +1 -0
  483. package/dist/features/inapp/core/keyboard.d.ts +27 -0
  484. package/dist/features/inapp/core/keyboard.d.ts.map +1 -0
  485. package/dist/features/inapp/core/keyboard.js +69 -0
  486. package/dist/features/inapp/core/keyboard.js.map +1 -0
  487. package/dist/features/inapp/core/metrics.d.ts +73 -0
  488. package/dist/features/inapp/core/metrics.d.ts.map +1 -0
  489. package/dist/features/inapp/core/metrics.js +125 -0
  490. package/dist/features/inapp/core/metrics.js.map +1 -0
  491. package/dist/features/inapp/core/migration.d.ts +32 -0
  492. package/dist/features/inapp/core/migration.d.ts.map +1 -0
  493. package/dist/features/inapp/core/migration.js +28 -0
  494. package/dist/features/inapp/core/migration.js.map +1 -0
  495. package/dist/features/inapp/core/orchestrator.d.ts +77 -0
  496. package/dist/features/inapp/core/orchestrator.d.ts.map +1 -0
  497. package/dist/features/inapp/core/orchestrator.js +144 -0
  498. package/dist/features/inapp/core/orchestrator.js.map +1 -0
  499. package/dist/features/inapp/core/respect.d.ts +51 -0
  500. package/dist/features/inapp/core/respect.d.ts.map +1 -0
  501. package/dist/features/inapp/core/respect.js +78 -0
  502. package/dist/features/inapp/core/respect.js.map +1 -0
  503. package/dist/features/inapp/core/slots.d.ts +19 -0
  504. package/dist/features/inapp/core/slots.d.ts.map +1 -0
  505. package/dist/features/inapp/core/slots.js +53 -0
  506. package/dist/features/inapp/core/slots.js.map +1 -0
  507. package/dist/features/inapp/core/targeting.d.ts +85 -0
  508. package/dist/features/inapp/core/targeting.d.ts.map +1 -0
  509. package/dist/features/inapp/core/targeting.js +255 -0
  510. package/dist/features/inapp/core/targeting.js.map +1 -0
  511. package/dist/features/inapp/core/transport.d.ts +66 -0
  512. package/dist/features/inapp/core/transport.d.ts.map +1 -0
  513. package/dist/features/inapp/core/transport.js +154 -0
  514. package/dist/features/inapp/core/transport.js.map +1 -0
  515. package/dist/features/inapp/core/triggers.d.ts +94 -0
  516. package/dist/features/inapp/core/triggers.d.ts.map +1 -0
  517. package/dist/features/inapp/core/triggers.js +368 -0
  518. package/dist/features/inapp/core/triggers.js.map +1 -0
  519. package/dist/features/inapp/inappContract.web.d.ts +47 -0
  520. package/dist/features/inapp/inappContract.web.d.ts.map +1 -0
  521. package/dist/features/inapp/inappContract.web.js +230 -0
  522. package/dist/features/inapp/inappContract.web.js.map +1 -0
  523. package/dist/features/inapp/index.d.ts +23 -0
  524. package/dist/features/inapp/index.d.ts.map +1 -0
  525. package/dist/features/inapp/index.js +23 -0
  526. package/dist/features/inapp/index.js.map +1 -0
  527. package/dist/features/inapp/registry.canonical.hash.d.ts +7 -0
  528. package/dist/features/inapp/registry.canonical.hash.d.ts.map +1 -0
  529. package/dist/features/inapp/registry.canonical.hash.js +7 -0
  530. package/dist/features/inapp/registry.canonical.hash.js.map +1 -0
  531. package/dist/features/inapp/registry.web.canonical.d.ts +21 -0
  532. package/dist/features/inapp/registry.web.canonical.d.ts.map +1 -0
  533. package/dist/features/inapp/registry.web.canonical.js +136 -0
  534. package/dist/features/inapp/registry.web.canonical.js.map +1 -0
  535. package/dist/features/inapp/registry.web.catalog.d.ts +12 -0
  536. package/dist/features/inapp/registry.web.catalog.d.ts.map +1 -0
  537. package/dist/features/inapp/registry.web.catalog.js +208 -0
  538. package/dist/features/inapp/registry.web.catalog.js.map +1 -0
  539. package/dist/features/inapp/surfaces/banner.d.ts +7 -0
  540. package/dist/features/inapp/surfaces/banner.d.ts.map +1 -0
  541. package/dist/features/inapp/surfaces/banner.js +30 -0
  542. package/dist/features/inapp/surfaces/banner.js.map +1 -0
  543. package/dist/features/inapp/surfaces/checklist.d.ts +13 -0
  544. package/dist/features/inapp/surfaces/checklist.d.ts.map +1 -0
  545. package/dist/features/inapp/surfaces/checklist.js +127 -0
  546. package/dist/features/inapp/surfaces/checklist.js.map +1 -0
  547. package/dist/features/inapp/surfaces/coachmark.d.ts +10 -0
  548. package/dist/features/inapp/surfaces/coachmark.d.ts.map +1 -0
  549. package/dist/features/inapp/surfaces/coachmark.js +95 -0
  550. package/dist/features/inapp/surfaces/coachmark.js.map +1 -0
  551. package/dist/features/inapp/surfaces/hotspot.d.ts +8 -0
  552. package/dist/features/inapp/surfaces/hotspot.d.ts.map +1 -0
  553. package/dist/features/inapp/surfaces/hotspot.js +91 -0
  554. package/dist/features/inapp/surfaces/hotspot.js.map +1 -0
  555. package/dist/features/inapp/surfaces/inline.d.ts +13 -0
  556. package/dist/features/inapp/surfaces/inline.d.ts.map +1 -0
  557. package/dist/features/inapp/surfaces/inline.js +78 -0
  558. package/dist/features/inapp/surfaces/inline.js.map +1 -0
  559. package/dist/features/inapp/surfaces/launcher.d.ts +9 -0
  560. package/dist/features/inapp/surfaces/launcher.d.ts.map +1 -0
  561. package/dist/features/inapp/surfaces/launcher.js +54 -0
  562. package/dist/features/inapp/surfaces/launcher.js.map +1 -0
  563. package/dist/features/inapp/surfaces/modal.d.ts +8 -0
  564. package/dist/features/inapp/surfaces/modal.d.ts.map +1 -0
  565. package/dist/features/inapp/surfaces/modal.js +70 -0
  566. package/dist/features/inapp/surfaces/modal.js.map +1 -0
  567. package/dist/features/inapp/surfaces/mount.d.ts +19 -0
  568. package/dist/features/inapp/surfaces/mount.d.ts.map +1 -0
  569. package/dist/features/inapp/surfaces/mount.js +29 -0
  570. package/dist/features/inapp/surfaces/mount.js.map +1 -0
  571. package/dist/features/inapp/surfaces/palette.d.ts +9 -0
  572. package/dist/features/inapp/surfaces/palette.d.ts.map +1 -0
  573. package/dist/features/inapp/surfaces/palette.js +127 -0
  574. package/dist/features/inapp/surfaces/palette.js.map +1 -0
  575. package/dist/features/inapp/surfaces/panel.d.ts +14 -0
  576. package/dist/features/inapp/surfaces/panel.d.ts.map +1 -0
  577. package/dist/features/inapp/surfaces/panel.js +91 -0
  578. package/dist/features/inapp/surfaces/panel.js.map +1 -0
  579. package/dist/features/inapp/surfaces/popover.d.ts +10 -0
  580. package/dist/features/inapp/surfaces/popover.d.ts.map +1 -0
  581. package/dist/features/inapp/surfaces/popover.js +69 -0
  582. package/dist/features/inapp/surfaces/popover.js.map +1 -0
  583. package/dist/features/inapp/surfaces/render.d.ts +34 -0
  584. package/dist/features/inapp/surfaces/render.d.ts.map +1 -0
  585. package/dist/features/inapp/surfaces/render.js +56 -0
  586. package/dist/features/inapp/surfaces/render.js.map +1 -0
  587. package/dist/features/inapp/surfaces/slideover.d.ts +9 -0
  588. package/dist/features/inapp/surfaces/slideover.d.ts.map +1 -0
  589. package/dist/features/inapp/surfaces/slideover.js +144 -0
  590. package/dist/features/inapp/surfaces/slideover.js.map +1 -0
  591. package/dist/features/inapp/surfaces/styles.d.ts +7 -0
  592. package/dist/features/inapp/surfaces/styles.d.ts.map +1 -0
  593. package/dist/features/inapp/surfaces/styles.js +235 -0
  594. package/dist/features/inapp/surfaces/styles.js.map +1 -0
  595. package/dist/features/inapp/surfaces/surface.d.ts +69 -0
  596. package/dist/features/inapp/surfaces/surface.d.ts.map +1 -0
  597. package/dist/features/inapp/surfaces/surface.js +80 -0
  598. package/dist/features/inapp/surfaces/surface.js.map +1 -0
  599. package/dist/features/inapp/surfaces/takeover.d.ts +9 -0
  600. package/dist/features/inapp/surfaces/takeover.d.ts.map +1 -0
  601. package/dist/features/inapp/surfaces/takeover.js +60 -0
  602. package/dist/features/inapp/surfaces/takeover.js.map +1 -0
  603. package/dist/features/inapp/surfaces/toast.d.ts +7 -0
  604. package/dist/features/inapp/surfaces/toast.d.ts.map +1 -0
  605. package/dist/features/inapp/surfaces/toast.js +48 -0
  606. package/dist/features/inapp/surfaces/toast.js.map +1 -0
  607. package/dist/features/inapp/surfaces/toolbar.d.ts +8 -0
  608. package/dist/features/inapp/surfaces/toolbar.d.ts.map +1 -0
  609. package/dist/features/inapp/surfaces/toolbar.js +65 -0
  610. package/dist/features/inapp/surfaces/toolbar.js.map +1 -0
  611. package/dist/features/inapp/surfaces/tour.d.ts +14 -0
  612. package/dist/features/inapp/surfaces/tour.d.ts.map +1 -0
  613. package/dist/features/inapp/surfaces/tour.js +202 -0
  614. package/dist/features/inapp/surfaces/tour.js.map +1 -0
  615. package/dist/features/inapp/types.d.ts +165 -0
  616. package/dist/features/inapp/types.d.ts.map +1 -0
  617. package/dist/features/inapp/types.js +12 -0
  618. package/dist/features/inapp/types.js.map +1 -0
  619. package/dist/features/inbox/InboxFeature.d.ts +57 -0
  620. package/dist/features/inbox/InboxFeature.d.ts.map +1 -0
  621. package/dist/features/inbox/InboxFeature.js +225 -0
  622. package/dist/features/inbox/InboxFeature.js.map +1 -0
  623. package/dist/features/inbox/runtime.d.ts +67 -0
  624. package/dist/features/inbox/runtime.d.ts.map +1 -0
  625. package/dist/features/inbox/runtime.js +376 -0
  626. package/dist/features/inbox/runtime.js.map +1 -0
  627. package/dist/features/inbox/store.d.ts +37 -0
  628. package/dist/features/inbox/store.d.ts.map +1 -0
  629. package/dist/features/inbox/store.js +149 -0
  630. package/dist/features/inbox/store.js.map +1 -0
  631. package/dist/features/inbox/sync.d.ts +49 -0
  632. package/dist/features/inbox/sync.d.ts.map +1 -0
  633. package/dist/features/inbox/sync.js +131 -0
  634. package/dist/features/inbox/sync.js.map +1 -0
  635. package/dist/features/inbox/types.d.ts +275 -0
  636. package/dist/features/inbox/types.d.ts.map +1 -0
  637. package/dist/features/inbox/types.js +42 -0
  638. package/dist/features/inbox/types.js.map +1 -0
  639. package/dist/features/inbox/widget/InboxWidget.d.ts +16 -0
  640. package/dist/features/inbox/widget/InboxWidget.d.ts.map +1 -0
  641. package/dist/features/inbox/widget/InboxWidget.js +609 -0
  642. package/dist/features/inbox/widget/InboxWidget.js.map +1 -0
  643. package/dist/features/index.d.ts +21 -0
  644. package/dist/features/index.d.ts.map +1 -0
  645. package/dist/features/index.js +2 -0
  646. package/dist/features/index.js.map +1 -0
  647. package/dist/features/journey/InteractionTracker.d.ts +87 -0
  648. package/dist/features/journey/InteractionTracker.d.ts.map +1 -0
  649. package/dist/features/journey/InteractionTracker.js +466 -0
  650. package/dist/features/journey/InteractionTracker.js.map +1 -0
  651. package/dist/features/journey/JourneyFeature.d.ts +18 -0
  652. package/dist/features/journey/JourneyFeature.d.ts.map +1 -0
  653. package/dist/features/journey/JourneyFeature.js +71 -0
  654. package/dist/features/journey/JourneyFeature.js.map +1 -0
  655. package/dist/features/journey/NavigationTracker.d.ts +16 -0
  656. package/dist/features/journey/NavigationTracker.d.ts.map +1 -0
  657. package/dist/features/journey/NavigationTracker.js +92 -0
  658. package/dist/features/journey/NavigationTracker.js.map +1 -0
  659. package/dist/features/journey/friction.d.ts +28 -0
  660. package/dist/features/journey/friction.d.ts.map +1 -0
  661. package/dist/features/journey/friction.js +64 -0
  662. package/dist/features/journey/friction.js.map +1 -0
  663. package/dist/features/journey/positionContext.d.ts +30 -0
  664. package/dist/features/journey/positionContext.d.ts.map +1 -0
  665. package/dist/features/journey/positionContext.js +116 -0
  666. package/dist/features/journey/positionContext.js.map +1 -0
  667. package/dist/features/journey/uiState.d.ts +44 -0
  668. package/dist/features/journey/uiState.d.ts.map +1 -0
  669. package/dist/features/journey/uiState.js +158 -0
  670. package/dist/features/journey/uiState.js.map +1 -0
  671. package/dist/features/manifest.d.ts +41 -0
  672. package/dist/features/manifest.d.ts.map +1 -0
  673. package/dist/features/manifest.js +93 -0
  674. package/dist/features/manifest.js.map +1 -0
  675. package/dist/features/network/NetworkFeature.d.ts +60 -0
  676. package/dist/features/network/NetworkFeature.d.ts.map +1 -0
  677. package/dist/features/network/NetworkFeature.js +260 -0
  678. package/dist/features/network/NetworkFeature.js.map +1 -0
  679. package/dist/features/network/capture/body.d.ts +31 -0
  680. package/dist/features/network/capture/body.d.ts.map +1 -0
  681. package/dist/features/network/capture/body.js +81 -0
  682. package/dist/features/network/capture/body.js.map +1 -0
  683. package/dist/features/network/classify.d.ts +21 -0
  684. package/dist/features/network/classify.d.ts.map +1 -0
  685. package/dist/features/network/classify.js +50 -0
  686. package/dist/features/network/classify.js.map +1 -0
  687. package/dist/features/network/dedup.d.ts +36 -0
  688. package/dist/features/network/dedup.d.ts.map +1 -0
  689. package/dist/features/network/dedup.js +68 -0
  690. package/dist/features/network/dedup.js.map +1 -0
  691. package/dist/features/network/fetchInterceptor.d.ts +20 -0
  692. package/dist/features/network/fetchInterceptor.d.ts.map +1 -0
  693. package/dist/features/network/fetchInterceptor.js +158 -0
  694. package/dist/features/network/fetchInterceptor.js.map +1 -0
  695. package/dist/features/network/intercept/beacon.d.ts +14 -0
  696. package/dist/features/network/intercept/beacon.d.ts.map +1 -0
  697. package/dist/features/network/intercept/beacon.js +56 -0
  698. package/dist/features/network/intercept/beacon.js.map +1 -0
  699. package/dist/features/network/intercept/sse.d.ts +16 -0
  700. package/dist/features/network/intercept/sse.d.ts.map +1 -0
  701. package/dist/features/network/intercept/sse.js +74 -0
  702. package/dist/features/network/intercept/sse.js.map +1 -0
  703. package/dist/features/network/intercept/streams.d.ts +23 -0
  704. package/dist/features/network/intercept/streams.d.ts.map +1 -0
  705. package/dist/features/network/intercept/streams.js +25 -0
  706. package/dist/features/network/intercept/streams.js.map +1 -0
  707. package/dist/features/network/intercept/websocket.d.ts +14 -0
  708. package/dist/features/network/intercept/websocket.d.ts.map +1 -0
  709. package/dist/features/network/intercept/websocket.js +97 -0
  710. package/dist/features/network/intercept/websocket.js.map +1 -0
  711. package/dist/features/network/lazy.d.ts +23 -0
  712. package/dist/features/network/lazy.d.ts.map +1 -0
  713. package/dist/features/network/lazy.js +65 -0
  714. package/dist/features/network/lazy.js.map +1 -0
  715. package/dist/features/network/normalize.d.ts +9 -0
  716. package/dist/features/network/normalize.d.ts.map +1 -0
  717. package/dist/features/network/normalize.js +49 -0
  718. package/dist/features/network/normalize.js.map +1 -0
  719. package/dist/features/network/parse/graphql.d.ts +17 -0
  720. package/dist/features/network/parse/graphql.d.ts.map +1 -0
  721. package/dist/features/network/parse/graphql.js +106 -0
  722. package/dist/features/network/parse/graphql.js.map +1 -0
  723. package/dist/features/network/parse/url.d.ts +12 -0
  724. package/dist/features/network/parse/url.d.ts.map +1 -0
  725. package/dist/features/network/parse/url.js +52 -0
  726. package/dist/features/network/parse/url.js.map +1 -0
  727. package/dist/features/network/sampler.d.ts +21 -0
  728. package/dist/features/network/sampler.d.ts.map +1 -0
  729. package/dist/features/network/sampler.js +25 -0
  730. package/dist/features/network/sampler.js.map +1 -0
  731. package/dist/features/network/size.d.ts +21 -0
  732. package/dist/features/network/size.d.ts.map +1 -0
  733. package/dist/features/network/size.js +63 -0
  734. package/dist/features/network/size.js.map +1 -0
  735. package/dist/features/network/thirdParty.d.ts +95 -0
  736. package/dist/features/network/thirdParty.d.ts.map +1 -0
  737. package/dist/features/network/thirdParty.js +126 -0
  738. package/dist/features/network/thirdParty.js.map +1 -0
  739. package/dist/features/network/timing.d.ts +41 -0
  740. package/dist/features/network/timing.d.ts.map +1 -0
  741. package/dist/features/network/timing.js +134 -0
  742. package/dist/features/network/timing.js.map +1 -0
  743. package/dist/features/network/tracing.d.ts +18 -0
  744. package/dist/features/network/tracing.d.ts.map +1 -0
  745. package/dist/features/network/tracing.js +46 -0
  746. package/dist/features/network/tracing.js.map +1 -0
  747. package/dist/features/network/types.d.ts +75 -0
  748. package/dist/features/network/types.d.ts.map +1 -0
  749. package/dist/features/network/types.js +2 -0
  750. package/dist/features/network/types.js.map +1 -0
  751. package/dist/features/network/xhrInterceptor.d.ts +12 -0
  752. package/dist/features/network/xhrInterceptor.d.ts.map +1 -0
  753. package/dist/features/network/xhrInterceptor.js +108 -0
  754. package/dist/features/network/xhrInterceptor.js.map +1 -0
  755. package/dist/features/performance/PerformanceFeature.d.ts +76 -0
  756. package/dist/features/performance/PerformanceFeature.d.ts.map +1 -0
  757. package/dist/features/performance/PerformanceFeature.js +265 -0
  758. package/dist/features/performance/PerformanceFeature.js.map +1 -0
  759. package/dist/features/performance/jankTap.d.ts +23 -0
  760. package/dist/features/performance/jankTap.d.ts.map +1 -0
  761. package/dist/features/performance/jankTap.js +20 -0
  762. package/dist/features/performance/jankTap.js.map +1 -0
  763. package/dist/features/performance/longTasks.d.ts +14 -0
  764. package/dist/features/performance/longTasks.d.ts.map +1 -0
  765. package/dist/features/performance/longTasks.js +55 -0
  766. package/dist/features/performance/longTasks.js.map +1 -0
  767. package/dist/features/performance/normalize.d.ts +15 -0
  768. package/dist/features/performance/normalize.d.ts.map +1 -0
  769. package/dist/features/performance/normalize.js +30 -0
  770. package/dist/features/performance/normalize.js.map +1 -0
  771. package/dist/features/performance/resources.d.ts +19 -0
  772. package/dist/features/performance/resources.d.ts.map +1 -0
  773. package/dist/features/performance/resources.js +78 -0
  774. package/dist/features/performance/resources.js.map +1 -0
  775. package/dist/features/performance/sampler.d.ts +10 -0
  776. package/dist/features/performance/sampler.d.ts.map +1 -0
  777. package/dist/features/performance/sampler.js +23 -0
  778. package/dist/features/performance/sampler.js.map +1 -0
  779. package/dist/features/performance/spa.d.ts +2 -0
  780. package/dist/features/performance/spa.d.ts.map +1 -0
  781. package/dist/features/performance/spa.js +40 -0
  782. package/dist/features/performance/spa.js.map +1 -0
  783. package/dist/features/performance/throttle.d.ts +21 -0
  784. package/dist/features/performance/throttle.d.ts.map +1 -0
  785. package/dist/features/performance/throttle.js +26 -0
  786. package/dist/features/performance/throttle.js.map +1 -0
  787. package/dist/features/performance/trace/context.d.ts +17 -0
  788. package/dist/features/performance/trace/context.d.ts.map +1 -0
  789. package/dist/features/performance/trace/context.js +33 -0
  790. package/dist/features/performance/trace/context.js.map +1 -0
  791. package/dist/features/performance/trace/index.d.ts +7 -0
  792. package/dist/features/performance/trace/index.d.ts.map +1 -0
  793. package/dist/features/performance/trace/index.js +6 -0
  794. package/dist/features/performance/trace/index.js.map +1 -0
  795. package/dist/features/performance/trace/pageload.d.ts +3 -0
  796. package/dist/features/performance/trace/pageload.d.ts.map +1 -0
  797. package/dist/features/performance/trace/pageload.js +34 -0
  798. package/dist/features/performance/trace/pageload.js.map +1 -0
  799. package/dist/features/performance/trace/transaction.d.ts +61 -0
  800. package/dist/features/performance/trace/transaction.d.ts.map +1 -0
  801. package/dist/features/performance/trace/transaction.js +90 -0
  802. package/dist/features/performance/trace/transaction.js.map +1 -0
  803. package/dist/features/performance/trace/types.d.ts +23 -0
  804. package/dist/features/performance/trace/types.d.ts.map +1 -0
  805. package/dist/features/performance/trace/types.js +10 -0
  806. package/dist/features/performance/trace/types.js.map +1 -0
  807. package/dist/features/performance/traces.d.ts +36 -0
  808. package/dist/features/performance/traces.d.ts.map +1 -0
  809. package/dist/features/performance/traces.js +50 -0
  810. package/dist/features/performance/traces.js.map +1 -0
  811. package/dist/features/profiler/ProfilerFeature.d.ts +28 -0
  812. package/dist/features/profiler/ProfilerFeature.d.ts.map +1 -0
  813. package/dist/features/profiler/ProfilerFeature.js +82 -0
  814. package/dist/features/profiler/ProfilerFeature.js.map +1 -0
  815. package/dist/features/profiler/capture.d.ts +8 -0
  816. package/dist/features/profiler/capture.d.ts.map +1 -0
  817. package/dist/features/profiler/capture.js +21 -0
  818. package/dist/features/profiler/capture.js.map +1 -0
  819. package/dist/features/push/PushFeature.d.ts +120 -0
  820. package/dist/features/push/PushFeature.d.ts.map +1 -0
  821. package/dist/features/push/PushFeature.js +319 -0
  822. package/dist/features/push/PushFeature.js.map +1 -0
  823. package/dist/features/push/diagnostics.d.ts +55 -0
  824. package/dist/features/push/diagnostics.d.ts.map +1 -0
  825. package/dist/features/push/diagnostics.js +383 -0
  826. package/dist/features/push/diagnostics.js.map +1 -0
  827. package/dist/features/push/pushState.d.ts +58 -0
  828. package/dist/features/push/pushState.d.ts.map +1 -0
  829. package/dist/features/push/pushState.js +75 -0
  830. package/dist/features/push/pushState.js.map +1 -0
  831. package/dist/features/push/softAsk.d.ts +68 -0
  832. package/dist/features/push/softAsk.d.ts.map +1 -0
  833. package/dist/features/push/softAsk.js +142 -0
  834. package/dist/features/push/softAsk.js.map +1 -0
  835. package/dist/features/replay/ReplayFeature.d.ts +52 -0
  836. package/dist/features/replay/ReplayFeature.d.ts.map +1 -0
  837. package/dist/features/replay/ReplayFeature.js +282 -0
  838. package/dist/features/replay/ReplayFeature.js.map +1 -0
  839. package/dist/features/replay/engine/canvas.d.ts +45 -0
  840. package/dist/features/replay/engine/canvas.d.ts.map +1 -0
  841. package/dist/features/replay/engine/canvas.js +122 -0
  842. package/dist/features/replay/engine/canvas.js.map +1 -0
  843. package/dist/features/replay/engine/crossOrigin.d.ts +23 -0
  844. package/dist/features/replay/engine/crossOrigin.d.ts.map +1 -0
  845. package/dist/features/replay/engine/crossOrigin.js +108 -0
  846. package/dist/features/replay/engine/crossOrigin.js.map +1 -0
  847. package/dist/features/replay/engine/cssom.d.ts +31 -0
  848. package/dist/features/replay/engine/cssom.d.ts.map +1 -0
  849. package/dist/features/replay/engine/cssom.js +128 -0
  850. package/dist/features/replay/engine/cssom.js.map +1 -0
  851. package/dist/features/replay/engine/iframe.d.ts +65 -0
  852. package/dist/features/replay/engine/iframe.d.ts.map +1 -0
  853. package/dist/features/replay/engine/iframe.js +186 -0
  854. package/dist/features/replay/engine/iframe.js.map +1 -0
  855. package/dist/features/replay/engine/interactions.d.ts +172 -0
  856. package/dist/features/replay/engine/interactions.d.ts.map +1 -0
  857. package/dist/features/replay/engine/interactions.js +437 -0
  858. package/dist/features/replay/engine/interactions.js.map +1 -0
  859. package/dist/features/replay/engine/mutations.d.ts +65 -0
  860. package/dist/features/replay/engine/mutations.d.ts.map +1 -0
  861. package/dist/features/replay/engine/mutations.js +304 -0
  862. package/dist/features/replay/engine/mutations.js.map +1 -0
  863. package/dist/features/replay/engine/nodeRegistry.d.ts +23 -0
  864. package/dist/features/replay/engine/nodeRegistry.d.ts.map +1 -0
  865. package/dist/features/replay/engine/nodeRegistry.js +51 -0
  866. package/dist/features/replay/engine/nodeRegistry.js.map +1 -0
  867. package/dist/features/replay/engine/player.d.ts +11 -0
  868. package/dist/features/replay/engine/player.d.ts.map +1 -0
  869. package/dist/features/replay/engine/player.js +284 -0
  870. package/dist/features/replay/engine/player.js.map +1 -0
  871. package/dist/features/replay/engine/rebuild.d.ts +8 -0
  872. package/dist/features/replay/engine/rebuild.d.ts.map +1 -0
  873. package/dist/features/replay/engine/rebuild.js +46 -0
  874. package/dist/features/replay/engine/rebuild.js.map +1 -0
  875. package/dist/features/replay/engine/replayWorker.d.ts +33 -0
  876. package/dist/features/replay/engine/replayWorker.d.ts.map +1 -0
  877. package/dist/features/replay/engine/replayWorker.js +175 -0
  878. package/dist/features/replay/engine/replayWorker.js.map +1 -0
  879. package/dist/features/replay/engine/resources.d.ts +52 -0
  880. package/dist/features/replay/engine/resources.d.ts.map +1 -0
  881. package/dist/features/replay/engine/resources.js +132 -0
  882. package/dist/features/replay/engine/resources.js.map +1 -0
  883. package/dist/features/replay/engine/snapshot.d.ts +103 -0
  884. package/dist/features/replay/engine/snapshot.d.ts.map +1 -0
  885. package/dist/features/replay/engine/snapshot.js +459 -0
  886. package/dist/features/replay/engine/snapshot.js.map +1 -0
  887. package/dist/features/replay/engine/traverse.d.ts +19 -0
  888. package/dist/features/replay/engine/traverse.d.ts.map +1 -0
  889. package/dist/features/replay/engine/traverse.js +39 -0
  890. package/dist/features/replay/engine/traverse.js.map +1 -0
  891. package/dist/features/replay/engine/types.d.ts +149 -0
  892. package/dist/features/replay/engine/types.d.ts.map +1 -0
  893. package/dist/features/replay/engine/types.js +6 -0
  894. package/dist/features/replay/engine/types.js.map +1 -0
  895. package/dist/features/replay/engine/webglPatch.d.ts +26 -0
  896. package/dist/features/replay/engine/webglPatch.d.ts.map +1 -0
  897. package/dist/features/replay/engine/webglPatch.js +83 -0
  898. package/dist/features/replay/engine/webglPatch.js.map +1 -0
  899. package/dist/features/replay/lifecycle/adaptive.d.ts +38 -0
  900. package/dist/features/replay/lifecycle/adaptive.d.ts.map +1 -0
  901. package/dist/features/replay/lifecycle/adaptive.js +90 -0
  902. package/dist/features/replay/lifecycle/adaptive.js.map +1 -0
  903. package/dist/features/replay/lifecycle/cadence.d.ts +35 -0
  904. package/dist/features/replay/lifecycle/cadence.d.ts.map +1 -0
  905. package/dist/features/replay/lifecycle/cadence.js +149 -0
  906. package/dist/features/replay/lifecycle/cadence.js.map +1 -0
  907. package/dist/features/replay/lifecycle/deltaBatcher.d.ts +31 -0
  908. package/dist/features/replay/lifecycle/deltaBatcher.d.ts.map +1 -0
  909. package/dist/features/replay/lifecycle/deltaBatcher.js +32 -0
  910. package/dist/features/replay/lifecycle/deltaBatcher.js.map +1 -0
  911. package/dist/features/replay/lifecycle/deviceSignals.d.ts +35 -0
  912. package/dist/features/replay/lifecycle/deviceSignals.d.ts.map +1 -0
  913. package/dist/features/replay/lifecycle/deviceSignals.js +61 -0
  914. package/dist/features/replay/lifecycle/deviceSignals.js.map +1 -0
  915. package/dist/features/replay/lifecycle/offloadDomFrames.d.ts +69 -0
  916. package/dist/features/replay/lifecycle/offloadDomFrames.d.ts.map +1 -0
  917. package/dist/features/replay/lifecycle/offloadDomFrames.js +107 -0
  918. package/dist/features/replay/lifecycle/offloadDomFrames.js.map +1 -0
  919. package/dist/features/replay/lifecycle/pii.d.ts +14 -0
  920. package/dist/features/replay/lifecycle/pii.d.ts.map +1 -0
  921. package/dist/features/replay/lifecycle/pii.js +52 -0
  922. package/dist/features/replay/lifecycle/pii.js.map +1 -0
  923. package/dist/features/replay/lifecycle/recorder.d.ts +178 -0
  924. package/dist/features/replay/lifecycle/recorder.d.ts.map +1 -0
  925. package/dist/features/replay/lifecycle/recorder.js +644 -0
  926. package/dist/features/replay/lifecycle/recorder.js.map +1 -0
  927. package/dist/features/replay/lifecycle/sampling.d.ts +28 -0
  928. package/dist/features/replay/lifecycle/sampling.d.ts.map +1 -0
  929. package/dist/features/replay/lifecycle/sampling.js +31 -0
  930. package/dist/features/replay/lifecycle/sampling.js.map +1 -0
  931. package/dist/features/replay/lifecycle/segmentBuffer.d.ts +75 -0
  932. package/dist/features/replay/lifecycle/segmentBuffer.d.ts.map +1 -0
  933. package/dist/features/replay/lifecycle/segmentBuffer.js +130 -0
  934. package/dist/features/replay/lifecycle/segmentBuffer.js.map +1 -0
  935. package/dist/features/replay/lifecycle/viewContext.d.ts +7 -0
  936. package/dist/features/replay/lifecycle/viewContext.d.ts.map +1 -0
  937. package/dist/features/replay/lifecycle/viewContext.js +51 -0
  938. package/dist/features/replay/lifecycle/viewContext.js.map +1 -0
  939. package/dist/features/scroll/index.d.ts +33 -0
  940. package/dist/features/scroll/index.d.ts.map +1 -0
  941. package/dist/features/scroll/index.js +106 -0
  942. package/dist/features/scroll/index.js.map +1 -0
  943. package/dist/features/session/sessionManager.d.ts +41 -0
  944. package/dist/features/session/sessionManager.d.ts.map +1 -0
  945. package/dist/features/session/sessionManager.js +67 -0
  946. package/dist/features/session/sessionManager.js.map +1 -0
  947. package/dist/features/session/sessionStore.d.ts +137 -0
  948. package/dist/features/session/sessionStore.d.ts.map +1 -0
  949. package/dist/features/session/sessionStore.js +323 -0
  950. package/dist/features/session/sessionStore.js.map +1 -0
  951. package/dist/features/watchdog/WatchdogFeature.d.ts +23 -0
  952. package/dist/features/watchdog/WatchdogFeature.d.ts.map +1 -0
  953. package/dist/features/watchdog/WatchdogFeature.js +29 -0
  954. package/dist/features/watchdog/WatchdogFeature.js.map +1 -0
  955. package/dist/features/watchdog/collectors.d.ts +18 -0
  956. package/dist/features/watchdog/collectors.d.ts.map +1 -0
  957. package/dist/features/watchdog/collectors.js +107 -0
  958. package/dist/features/watchdog/collectors.js.map +1 -0
  959. package/dist/features/watchdog/config.d.ts +51 -0
  960. package/dist/features/watchdog/config.d.ts.map +1 -0
  961. package/dist/features/watchdog/config.js +28 -0
  962. package/dist/features/watchdog/config.js.map +1 -0
  963. package/dist/features/watchdog/engine.d.ts +22 -0
  964. package/dist/features/watchdog/engine.d.ts.map +1 -0
  965. package/dist/features/watchdog/engine.js +123 -0
  966. package/dist/features/watchdog/engine.js.map +1 -0
  967. package/dist/features/watchdog/incidents.d.ts +79 -0
  968. package/dist/features/watchdog/incidents.d.ts.map +1 -0
  969. package/dist/features/watchdog/incidents.js +204 -0
  970. package/dist/features/watchdog/incidents.js.map +1 -0
  971. package/dist/features/watchdog/rollup.d.ts +41 -0
  972. package/dist/features/watchdog/rollup.d.ts.map +1 -0
  973. package/dist/features/watchdog/rollup.js +76 -0
  974. package/dist/features/watchdog/rollup.js.map +1 -0
  975. package/dist/features/webVitals/WebVitalsFeature.d.ts +46 -0
  976. package/dist/features/webVitals/WebVitalsFeature.d.ts.map +1 -0
  977. package/dist/features/webVitals/WebVitalsFeature.js +252 -0
  978. package/dist/features/webVitals/WebVitalsFeature.js.map +1 -0
  979. package/dist/features/webVitals/attribution.d.ts +50 -0
  980. package/dist/features/webVitals/attribution.d.ts.map +1 -0
  981. package/dist/features/webVitals/attribution.js +186 -0
  982. package/dist/features/webVitals/attribution.js.map +1 -0
  983. package/dist/features/webVitals/observe.d.ts +6 -0
  984. package/dist/features/webVitals/observe.d.ts.map +1 -0
  985. package/dist/features/webVitals/observe.js +6 -0
  986. package/dist/features/webVitals/observe.js.map +1 -0
  987. package/dist/features/webVitals/vitals.d.ts +99 -0
  988. package/dist/features/webVitals/vitals.d.ts.map +1 -0
  989. package/dist/features/webVitals/vitals.js +166 -0
  990. package/dist/features/webVitals/vitals.js.map +1 -0
  991. package/dist/features/webperf/WebPerfFeature.d.ts +19 -0
  992. package/dist/features/webperf/WebPerfFeature.d.ts.map +1 -0
  993. package/dist/features/webperf/WebPerfFeature.js +48 -0
  994. package/dist/features/webperf/WebPerfFeature.js.map +1 -0
  995. package/dist/features/webperf/collectors.d.ts +3 -0
  996. package/dist/features/webperf/collectors.d.ts.map +1 -0
  997. package/dist/features/webperf/collectors.js +118 -0
  998. package/dist/features/webperf/collectors.js.map +1 -0
  999. package/dist/features/webperf/math.d.ts +12 -0
  1000. package/dist/features/webperf/math.d.ts.map +1 -0
  1001. package/dist/features/webperf/math.js +26 -0
  1002. package/dist/features/webperf/math.js.map +1 -0
  1003. package/dist/inapp.d.ts +6 -0
  1004. package/dist/inapp.d.ts.map +1 -0
  1005. package/dist/inapp.js +6 -0
  1006. package/dist/inapp.js.map +1 -0
  1007. package/dist/index.d.ts +34 -0
  1008. package/dist/index.d.ts.map +1 -0
  1009. package/dist/index.js +12 -0
  1010. package/dist/index.js.map +1 -0
  1011. package/dist/integrations/index.d.ts +7 -0
  1012. package/dist/integrations/index.d.ts.map +1 -0
  1013. package/dist/integrations/index.js +2 -0
  1014. package/dist/integrations/index.js.map +1 -0
  1015. package/dist/pipeline/index.d.ts +3 -0
  1016. package/dist/pipeline/index.d.ts.map +1 -0
  1017. package/dist/pipeline/index.js +3 -0
  1018. package/dist/pipeline/index.js.map +1 -0
  1019. package/dist/pipeline/pipeline.d.ts +263 -0
  1020. package/dist/pipeline/pipeline.d.ts.map +1 -0
  1021. package/dist/pipeline/pipeline.js +783 -0
  1022. package/dist/pipeline/pipeline.js.map +1 -0
  1023. package/dist/public/ScaleBunFacade.d.ts +436 -0
  1024. package/dist/public/ScaleBunFacade.d.ts.map +1 -0
  1025. package/dist/public/ScaleBunFacade.js +857 -0
  1026. package/dist/public/ScaleBunFacade.js.map +1 -0
  1027. package/dist/public/index.d.ts +5 -0
  1028. package/dist/public/index.d.ts.map +1 -0
  1029. package/dist/public/index.js +4 -0
  1030. package/dist/public/index.js.map +1 -0
  1031. package/dist/public/typedTracker.d.ts +91 -0
  1032. package/dist/public/typedTracker.d.ts.map +1 -0
  1033. package/dist/public/typedTracker.js +60 -0
  1034. package/dist/public/typedTracker.js.map +1 -0
  1035. package/dist/scalebun-push-sw.js +236 -0
  1036. package/dist/scalebun.min.js +717 -0
  1037. package/dist/scalebun.min.js.map +7 -0
  1038. package/dist/storage/idb.d.ts +16 -0
  1039. package/dist/storage/idb.d.ts.map +1 -0
  1040. package/dist/storage/idb.js +76 -0
  1041. package/dist/storage/idb.js.map +1 -0
  1042. package/dist/storage/index.d.ts +3 -0
  1043. package/dist/storage/index.d.ts.map +1 -0
  1044. package/dist/storage/index.js +3 -0
  1045. package/dist/storage/index.js.map +1 -0
  1046. package/dist/transport/gzip.d.ts +2 -0
  1047. package/dist/transport/gzip.d.ts.map +1 -0
  1048. package/dist/transport/gzip.js +20 -0
  1049. package/dist/transport/gzip.js.map +1 -0
  1050. package/dist/transport/httpClient.d.ts +156 -0
  1051. package/dist/transport/httpClient.d.ts.map +1 -0
  1052. package/dist/transport/httpClient.js +277 -0
  1053. package/dist/transport/httpClient.js.map +1 -0
  1054. package/dist/transport/index.d.ts +3 -0
  1055. package/dist/transport/index.d.ts.map +1 -0
  1056. package/dist/transport/index.js +3 -0
  1057. package/dist/transport/index.js.map +1 -0
  1058. package/dist/transport/sign.d.ts +25 -0
  1059. package/dist/transport/sign.d.ts.map +1 -0
  1060. package/dist/transport/sign.js +58 -0
  1061. package/dist/transport/sign.js.map +1 -0
  1062. package/package.json +67 -0
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Owns the session identity + the static client/device/app/context blocks for every envelope.
3
+ *
4
+ * The session id is PERSISTED (see ./sessionStore) rather than minted per document, so a refresh or
5
+ * a second tab continues the same session instead of starting a new one. Boundary rules live in the
6
+ * store; this stays a thin header source.
7
+ */
8
+ import { getOrCreateDeviceId, buildClient, buildDevice, buildApp, buildContext } from '../../core/index.js';
9
+ import { resolveSession, sessionExpired, touchSession, DEFAULT_SESSION_TIMEOUT_MS, DEFAULT_SESSION_MAX_MS, } from './sessionStore.js';
10
+ export class SessionManager {
11
+ /** The session every envelope is filed under. A GETTER, not a field: `rotate()` can replace it
12
+ * while the page is open, and every reader picks the new id up on its next envelope. */
13
+ get sessionId() {
14
+ return this.id;
15
+ }
16
+ get timeoutMs() {
17
+ return this.config.sessionTimeoutMs ?? DEFAULT_SESSION_TIMEOUT_MS;
18
+ }
19
+ get maxMs() {
20
+ return this.config.sessionMaxDurationMs ?? DEFAULT_SESSION_MAX_MS;
21
+ }
22
+ constructor(config) {
23
+ this.config = config;
24
+ this.id = resolveSession(this.timeoutMs, this.maxMs).id;
25
+ this.deviceId = getOrCreateDeviceId();
26
+ }
27
+ /** Has this session crossed the idle window or the absolute cap? Pure read — see sessionStore. */
28
+ expired() {
29
+ return sessionExpired(this.timeoutMs, this.maxMs);
30
+ }
31
+ /**
32
+ * End the current session and begin a new one, returning the id that just ended (or null when the
33
+ * bounds have not been crossed and nothing changed).
34
+ *
35
+ * The caller owns the ORDER, and it matters: whatever is still queued belongs to the session that
36
+ * just ended and has to leave under the old id, so the drain happens before this is called. See
37
+ * `installSessionRotation` in the bootstrap, which is the only caller.
38
+ */
39
+ rotate() {
40
+ if (!this.expired())
41
+ return null;
42
+ const prev = this.id;
43
+ // Expired, so this mints a fresh record rather than resuming — new id, and `seq` back to 0,
44
+ // which is what keeps the new session's replay frames from sorting against the old one's.
45
+ this.id = resolveSession(this.timeoutMs, this.maxMs).id;
46
+ return prev;
47
+ }
48
+ client() {
49
+ return buildClient();
50
+ }
51
+ device() {
52
+ return buildDevice(this.deviceId);
53
+ }
54
+ app() {
55
+ return buildApp(this.config);
56
+ }
57
+ /**
58
+ * Called once per outgoing envelope, which makes it the one hook that runs for EVERY feature
59
+ * without needing a listener of its own — so activity slides the inactivity window even in an
60
+ * SPA that never reloads and never records replay. `touchSession` throttles the write.
61
+ */
62
+ context() {
63
+ touchSession();
64
+ return buildContext();
65
+ }
66
+ }
67
+ //# sourceMappingURL=sessionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../../src/features/session/sessionManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnG,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,MAAM,OAAO,cAAc;IAIzB;6FACyF;IACzF,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;IACpE,CAAC;IACD,IAAY,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,sBAAsB,CAAC;IACpE,CAAC;IAED,YAA6B,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;QACjD,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACxC,CAAC;IAED,kGAAkG;IAClG,OAAO;QACL,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;OAOG;IACH,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACrB,4FAA4F;QAC5F,0FAA0F;QAC1F,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IACD,MAAM;QACJ,OAAO,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IACD,GAAG;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD;;;;OAIG;IACH,OAAO;QACL,YAAY,EAAE,CAAC;QACf,OAAO,YAAY,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Persisted web session identity.
3
+ *
4
+ * THE BUG THIS FIXES
5
+ * `SessionManager` minted `sess_${uuid()}` in its constructor and stored it nowhere, so EVERY
6
+ * document load started a new session. A refresh, a hard navigation, or opening the same app in a
7
+ * second tab each produced a separate "visit" — session replay showed a user's single journey as a
8
+ * pile of disconnected 10-second sessions, and every session-scoped metric (duration, events per
9
+ * session, rage-click grouping) was measured against the wrong denominator.
10
+ *
11
+ * WHAT A SESSION IS NOW
12
+ * One session continues across refreshes and navigations within a browsing context, and ends when
13
+ * that context goes away (the tab or browser is closed), after a period of inactivity (default 30
14
+ * minutes), or once it hits an absolute cap (default 24 hours, so a tab left open for days cannot
15
+ * produce an infinite session).
16
+ *
17
+ * WHY sessionStorage AND NOT localStorage
18
+ * This first shipped on localStorage, following the GA/analytics definition of a session: storage
19
+ * that outlives the browsing context, expired purely by a 30-minute idle timer. That is correct for
20
+ * analytics and WRONG here — it meant closing the site and returning a minute later resumed the old
21
+ * session, because "closed the browser" is not an end signal in that model. For session REPLAY a
22
+ * visit ends when the visit ends.
23
+ *
24
+ * sessionStorage is scoped to the browsing context: it survives refreshes and same-tab navigations
25
+ * (the actual bug this file exists to fix) and is dropped when the tab closes. The idle timeout is
26
+ * kept on top of it so a tab left open overnight still rolls over.
27
+ *
28
+ * The tradeoff, stated plainly: sessionStorage is per-TAB, so opening a link in a new tab starts a
29
+ * new session. For replay that is arguably the better shape anyway — frames are per-document, and
30
+ * two tabs sharing one session means two writers interleaving into a single `seq` space (see below).
31
+ * Caveat: browsers that restore tabs after a crash also restore sessionStorage, so crash → "restore
32
+ * tabs" can resume; crash → reopening manually starts fresh.
33
+ *
34
+ * THE SEQUENCE COUNTER LIVES HERE TOO, DELIBERATELY
35
+ * Replay frames carry a per-session `seq`, and the backend both orders frames by it
36
+ * (`orderBy: { sequenceNumber: 'asc' }`) and resolves a keyframe's deltas as the frames in
37
+ * `[seq, nextSeq)`. The recorder's counter is per-INSTANCE and restarts at 0 on every page load, so
38
+ * resuming a session without also resuming the counter would emit a second frame 0, 1, 2… that
39
+ * sorts *before* the first load's later frames and scrambles the replay. Persisting the id without
40
+ * the counter would have traded a visible bug for a subtler one.
41
+ */
42
+ /** Inactivity that ends a session. 30 min is the de-facto standard (GA, and most RUM tools). */
43
+ export declare const DEFAULT_SESSION_TIMEOUT_MS: number;
44
+ /**
45
+ * Hard cap so a tab left open for days does not report one endless session.
46
+ *
47
+ * 4 HOURS, lowered from 24. A 24-hour cap describes a DEVICE, not a visit: measured on live Joint
48
+ * Clinic data, clinic workstations left open across a shift produced single sessions of 100, 98 and 79
49
+ * minutes, and the cap was the only thing bounding them. Four hours is longer than any genuine sitting
50
+ * while still splitting a shift into a handful of sessions instead of one.
51
+ *
52
+ * ⚠️ This moves SESSION COUNTS, and therefore every per-session metric (sessions/day, per-session
53
+ * averages, conversion-per-session). It is a deliberate product change, not a refactor — hosts who
54
+ * want the old behaviour set `sessionMaxDurationMs: 86_400_000`.
55
+ */
56
+ export declare const DEFAULT_SESSION_MAX_MS: number;
57
+ export interface SessionRecord {
58
+ id: string;
59
+ /** When this session began — drives the absolute cap. */
60
+ startedAt: number;
61
+ /** Last activity we observed — drives the inactivity timeout. */
62
+ lastSeenAt: number;
63
+ /** Next replay frame sequence number for this session. */
64
+ seq: number;
65
+ }
66
+ /**
67
+ * Resume the stored session when it is still live, otherwise start a fresh one.
68
+ *
69
+ * Clock note: `lastSeenAt` is wall-clock, so a large system-clock change can expire a session early
70
+ * or hold one open. Expiring early is the safe direction, and a negative delta (clock moved
71
+ * backwards) is treated as "no time passed" rather than as a huge idle gap.
72
+ */
73
+ export declare function resolveSession(timeoutMs?: number, maxMs?: number): SessionRecord;
74
+ /**
75
+ * Has the stored session crossed a boundary? The same rule `resolveSession` applies at load, asked
76
+ * at any moment — and it is a pure read, so asking cannot itself extend the session.
77
+ *
78
+ * WHY THIS EXISTS. `resolveSession` is called exactly once, from the `SessionManager` constructor,
79
+ * so both bounds were only ever evaluated at document load. A single-page app that is opened and
80
+ * never reloaded was therefore never re-evaluated, and neither bound could fire. Measured on
81
+ * production over 14 days: 141 web sessions ran past the four-hour cap and exactly 2 were capped by
82
+ * it. The rest were held open until the server's reaper clamped them at 24 hours — real spans of 24
83
+ * to 28 hours, each carrying a single event and one or two frames. Parked tabs, reported as visits.
84
+ *
85
+ * `read()` first because it is the persisted truth; `live` covers a host that has cleared storage
86
+ * out from under us (see the note below), where the in-memory copy is all that is left.
87
+ */
88
+ export declare function sessionExpired(timeoutMs?: number, maxMs?: number): boolean;
89
+ /** Test seam — drop the in-memory copy so a case can simulate a fresh document. */
90
+ export declare function __resetLiveSessionForTests(): void;
91
+ /**
92
+ * Mark activity so the inactivity window slides forward.
93
+ *
94
+ * Called on the per-envelope path, so it is THROTTLED: without this a busy page would do a
95
+ * JSON parse + sessionStorage write per event, and sessionStorage is synchronous — that is main-thread
96
+ * work on the hot path. Once a minute is far finer than the 30-minute window it feeds.
97
+ */
98
+ export declare function touchSession(): void;
99
+ /**
100
+ * Reserve `count` sequence numbers and return the first.
101
+ *
102
+ * Read-modify-write against storage rather than a purely in-memory counter, so the counter SURVIVES
103
+ * a refresh: a resumed session must keep numbering upward instead of restarting at 0 and sorting its
104
+ * new frames before the old ones.
105
+ *
106
+ * Since the move to sessionStorage the store is per-tab, so the cross-tab contention this used to
107
+ * guard against cannot arise — two tabs now hold two different sessions, each with its own counter.
108
+ */
109
+ export declare function reserveSeq(count?: number): number;
110
+ /**
111
+ * Raise the next-sequence floor, returning it.
112
+ *
113
+ * Crash recovery replays a pre-roll buffer whose frames ALREADY consumed sequence numbers, but those
114
+ * frames were written by a previous document and the store knows nothing about them. Without this the
115
+ * counter would hand the same numbers out again and the recovered frames would collide with the new
116
+ * session's — the exact ordering corruption the persisted counter exists to prevent.
117
+ */
118
+ export declare function ensureSeqAtLeast(next: number): number;
119
+ /**
120
+ * Drop the stored session so the next `resolveSession()` mints a new id.
121
+ *
122
+ * ⚠️ NOT called by `reset()`, and it must not be. The docstring here used to claim "Used by
123
+ * `reset()` / logout", which is false in both halves — it has no callers at all, and wiring it to
124
+ * logout would reintroduce the exact bug the `live` copy and the self-heal in `touchSession` were
125
+ * built to prevent: see the WHY A SECOND COPY note above, where "I logged out in the same tab and
126
+ * got a new session" is the report being fixed.
127
+ *
128
+ * Signing out does not end a visit. The person is still in the same tab, and `AnalyticsFeature.reset()`
129
+ * already does the part that genuinely must change — a fresh anonymous id, cleared user id,
130
+ * super-properties and groups — so the next user is never attributed to the previous one. The session
131
+ * is the visit, not the identity.
132
+ *
133
+ * This exists for a host that wants an explicit hard boundary and knows it is asking for one. It is
134
+ * currently unused; keep it, but reach for it deliberately.
135
+ */
136
+ export declare function clearSession(): void;
137
+ //# sourceMappingURL=sessionStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.d.ts","sourceRoot":"","sources":["../../../src/features/session/sessionStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAMH,gGAAgG;AAChG,eAAO,MAAM,0BAA0B,QAAiB,CAAC;AACzD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,QAAqB,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;CACb;AAwDD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,SAAS,GAAE,MAAmC,EAC9C,KAAK,GAAE,MAA+B,GACrC,aAAa,CAgBf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,SAAS,GAAE,MAAmC,EAC9C,KAAK,GAAE,MAA+B,GACrC,OAAO,CAOT;AAoBD,mFAAmF;AACnF,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAMD;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAgDnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,SAAI,GAAG,MAAM,CAkC5C;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWrD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAMnC"}
@@ -0,0 +1,323 @@
1
+ /**
2
+ * Persisted web session identity.
3
+ *
4
+ * THE BUG THIS FIXES
5
+ * `SessionManager` minted `sess_${uuid()}` in its constructor and stored it nowhere, so EVERY
6
+ * document load started a new session. A refresh, a hard navigation, or opening the same app in a
7
+ * second tab each produced a separate "visit" — session replay showed a user's single journey as a
8
+ * pile of disconnected 10-second sessions, and every session-scoped metric (duration, events per
9
+ * session, rage-click grouping) was measured against the wrong denominator.
10
+ *
11
+ * WHAT A SESSION IS NOW
12
+ * One session continues across refreshes and navigations within a browsing context, and ends when
13
+ * that context goes away (the tab or browser is closed), after a period of inactivity (default 30
14
+ * minutes), or once it hits an absolute cap (default 24 hours, so a tab left open for days cannot
15
+ * produce an infinite session).
16
+ *
17
+ * WHY sessionStorage AND NOT localStorage
18
+ * This first shipped on localStorage, following the GA/analytics definition of a session: storage
19
+ * that outlives the browsing context, expired purely by a 30-minute idle timer. That is correct for
20
+ * analytics and WRONG here — it meant closing the site and returning a minute later resumed the old
21
+ * session, because "closed the browser" is not an end signal in that model. For session REPLAY a
22
+ * visit ends when the visit ends.
23
+ *
24
+ * sessionStorage is scoped to the browsing context: it survives refreshes and same-tab navigations
25
+ * (the actual bug this file exists to fix) and is dropped when the tab closes. The idle timeout is
26
+ * kept on top of it so a tab left open overnight still rolls over.
27
+ *
28
+ * The tradeoff, stated plainly: sessionStorage is per-TAB, so opening a link in a new tab starts a
29
+ * new session. For replay that is arguably the better shape anyway — frames are per-document, and
30
+ * two tabs sharing one session means two writers interleaving into a single `seq` space (see below).
31
+ * Caveat: browsers that restore tabs after a crash also restore sessionStorage, so crash → "restore
32
+ * tabs" can resume; crash → reopening manually starts fresh.
33
+ *
34
+ * THE SEQUENCE COUNTER LIVES HERE TOO, DELIBERATELY
35
+ * Replay frames carry a per-session `seq`, and the backend both orders frames by it
36
+ * (`orderBy: { sequenceNumber: 'asc' }`) and resolves a keyframe's deltas as the frames in
37
+ * `[seq, nextSeq)`. The recorder's counter is per-INSTANCE and restarts at 0 on every page load, so
38
+ * resuming a session without also resuming the counter would emit a second frame 0, 1, 2… that
39
+ * sorts *before* the first load's later frames and scrambles the replay. Persisting the id without
40
+ * the counter would have traded a visible bug for a subtler one.
41
+ */
42
+ import { uuid, now } from '../../core/index.js';
43
+ const SESSION_KEY = 'scalebun_session';
44
+ /** Inactivity that ends a session. 30 min is the de-facto standard (GA, and most RUM tools). */
45
+ export const DEFAULT_SESSION_TIMEOUT_MS = 30 * 60 * 1000;
46
+ /**
47
+ * Hard cap so a tab left open for days does not report one endless session.
48
+ *
49
+ * 4 HOURS, lowered from 24. A 24-hour cap describes a DEVICE, not a visit: measured on live Joint
50
+ * Clinic data, clinic workstations left open across a shift produced single sessions of 100, 98 and 79
51
+ * minutes, and the cap was the only thing bounding them. Four hours is longer than any genuine sitting
52
+ * while still splitting a shift into a handful of sessions instead of one.
53
+ *
54
+ * ⚠️ This moves SESSION COUNTS, and therefore every per-session metric (sessions/day, per-session
55
+ * averages, conversion-per-session). It is a deliberate product change, not a refactor — hosts who
56
+ * want the old behaviour set `sessionMaxDurationMs: 86_400_000`.
57
+ */
58
+ export const DEFAULT_SESSION_MAX_MS = 4 * 60 * 60 * 1000;
59
+ function read() {
60
+ try {
61
+ const raw = typeof sessionStorage !== 'undefined' && sessionStorage.getItem(SESSION_KEY);
62
+ if (!raw)
63
+ return null;
64
+ const a = JSON.parse(raw);
65
+ // A truncated or hand-edited record must not resurrect a broken session.
66
+ if (!Array.isArray(a) || typeof a[0] !== 'string' || !a[0] || typeof a[2] !== 'number')
67
+ return null;
68
+ /**
69
+ * `startedAt` gets the SAME scrutiny as `lastSeenAt`, and falls back to `lastSeenAt` — never 0.
70
+ *
71
+ * It used to be `+a[1] || 0`, which was validated by nothing. A record whose startedAt did not
72
+ * parse therefore resolved to epoch 0, and `resolveSession`'s absolute-cap check
73
+ * (`t - startedAt <= maxMs`) then measured ~56 YEARS and killed the session on the very next load
74
+ * — silently, and forever, because each replacement was written by the same code path. The visible
75
+ * symptom is a brand-new session id seconds after a perfectly good one, which is indistinguishable
76
+ * from "the SDK does not persist sessions at all".
77
+ *
78
+ * Falling back to `lastSeenAt` keeps the session alive and merely under-measures its age, which is
79
+ * the safe direction: the worst case is one session that runs to the idle timeout instead of the
80
+ * cap, rather than a user's whole visit shattered into fragments.
81
+ */
82
+ const started = typeof a[1] === 'number' && isFinite(a[1]) && a[1] > 0 ? a[1] : a[2];
83
+ return { id: a[0], startedAt: started, lastSeenAt: a[2], seq: a[3] > 0 ? a[3] : 0 };
84
+ }
85
+ catch {
86
+ return null; // storage blocked (private mode / partitioned) or unparsable
87
+ }
88
+ }
89
+ function write(r) {
90
+ // Every persist keeps the in-memory copy current, so a restore can never write back a STALER record
91
+ // than the one in use. Doing this anywhere but here drifts: `reserveSeq` advances the frame counter
92
+ // far more often than the throttled `touchSession` runs, so a restore that had only seen the load-time
93
+ // record would reset `seq` to 0 — and frames numbered from 0 sort BEFORE the earlier ones, which is
94
+ // the exact replay scramble this file's header warns about.
95
+ live = r;
96
+ try {
97
+ if (typeof sessionStorage !== 'undefined') {
98
+ sessionStorage.setItem(SESSION_KEY, JSON.stringify([r.id, r.startedAt, r.lastSeenAt, r.seq]));
99
+ }
100
+ }
101
+ catch {
102
+ /* quota or blocked storage → session stays in-memory for this document */
103
+ }
104
+ }
105
+ /**
106
+ * Resume the stored session when it is still live, otherwise start a fresh one.
107
+ *
108
+ * Clock note: `lastSeenAt` is wall-clock, so a large system-clock change can expire a session early
109
+ * or hold one open. Expiring early is the safe direction, and a negative delta (clock moved
110
+ * backwards) is treated as "no time passed" rather than as a huge idle gap.
111
+ */
112
+ export function resolveSession(timeoutMs = DEFAULT_SESSION_TIMEOUT_MS, maxMs = DEFAULT_SESSION_MAX_MS) {
113
+ const t = now();
114
+ const prev = read();
115
+ // Math.max(0, …) so a backwards clock jump reads as "no time passed" rather than a huge idle gap.
116
+ if (prev && Math.max(0, t - prev.lastSeenAt) <= timeoutMs && Math.max(0, t - prev.startedAt) <= maxMs) {
117
+ prev.lastSeenAt = t;
118
+ write(prev);
119
+ live = prev;
120
+ return prev;
121
+ }
122
+ const fresh = { id: `sess_${uuid()}`, startedAt: t, lastSeenAt: t, seq: 0 };
123
+ write(fresh);
124
+ live = fresh;
125
+ return fresh;
126
+ }
127
+ /**
128
+ * Has the stored session crossed a boundary? The same rule `resolveSession` applies at load, asked
129
+ * at any moment — and it is a pure read, so asking cannot itself extend the session.
130
+ *
131
+ * WHY THIS EXISTS. `resolveSession` is called exactly once, from the `SessionManager` constructor,
132
+ * so both bounds were only ever evaluated at document load. A single-page app that is opened and
133
+ * never reloaded was therefore never re-evaluated, and neither bound could fire. Measured on
134
+ * production over 14 days: 141 web sessions ran past the four-hour cap and exactly 2 were capped by
135
+ * it. The rest were held open until the server's reaper clamped them at 24 hours — real spans of 24
136
+ * to 28 hours, each carrying a single event and one or two frames. Parked tabs, reported as visits.
137
+ *
138
+ * `read()` first because it is the persisted truth; `live` covers a host that has cleared storage
139
+ * out from under us (see the note below), where the in-memory copy is all that is left.
140
+ */
141
+ export function sessionExpired(timeoutMs = DEFAULT_SESSION_TIMEOUT_MS, maxMs = DEFAULT_SESSION_MAX_MS) {
142
+ const rec = read() ?? live;
143
+ if (!rec)
144
+ return false; // nothing resolved yet — there is no session to have expired
145
+ const t = now();
146
+ // Math.max(0, …) for the same reason resolveSession uses it: a backwards clock jump is "no time
147
+ // passed", not a huge idle gap that would end a session the visitor is still using.
148
+ return Math.max(0, t - rec.lastSeenAt) > timeoutMs || Math.max(0, t - rec.startedAt) > maxMs;
149
+ }
150
+ /**
151
+ * The session this document is running, held in memory as well as in storage.
152
+ *
153
+ * WHY A SECOND COPY. `sessionStorage` belongs to the page, not to us, and hosts wipe it. Clearing
154
+ * storage on sign-out is the single most common auth pattern there is — `sessionStorage.clear()` in a
155
+ * logout handler is meant to drop the app's own auth state and takes `scalebun_session` with it as
156
+ * collateral. From the SDK's side the session then simply vanishes mid-visit, and the next resolve
157
+ * mints a new id: one continuous visit is reported as two sessions, which is exactly the "I logged out
158
+ * in the same tab and got a new session" report. The same thing happens on sign-IN for apps that clear
159
+ * storage before establishing the new identity.
160
+ *
161
+ * This copy lets `touchSession` notice the record has disappeared and put it back, so a host clearing
162
+ * storage no longer silently splits the visit. It is deliberately NOT a second source of truth: a real
163
+ * boundary (idle timeout, absolute cap, tab close) still ends the session, because those are decided in
164
+ * `resolveSession` at load time and this only ever restores the id the document is already using.
165
+ */
166
+ let live = null;
167
+ /** Test seam — drop the in-memory copy so a case can simulate a fresh document. */
168
+ export function __resetLiveSessionForTests() {
169
+ live = null;
170
+ }
171
+ let lastTouch = 0;
172
+ /** Sequence counter used when no record can be persisted (see reserveSeq). */
173
+ let memSeq = 0;
174
+ /**
175
+ * Mark activity so the inactivity window slides forward.
176
+ *
177
+ * Called on the per-envelope path, so it is THROTTLED: without this a busy page would do a
178
+ * JSON parse + sessionStorage write per event, and sessionStorage is synchronous — that is main-thread
179
+ * work on the hot path. Once a minute is far finer than the 30-minute window it feeds.
180
+ */
181
+ export function touchSession() {
182
+ /**
183
+ * D5 — a HIDDEN document does not slide the inactivity window.
184
+ *
185
+ * This runs on the per-envelope path, which means TELEMETRY kept the session alive, not the visitor:
186
+ * a parked background tab still flushes a queue and refreshes config, so `lastSeenAt` advanced every
187
+ * minute and the 30-minute timeout was never reached. That is why the only thing bounding a
188
+ * shift-long tab was the hard cap. Freezing `lastSeenAt` while hidden lets the timeout actually fire,
189
+ * so returning after 30+ minutes away resolves to a NEW session on the next load.
190
+ *
191
+ * A hidden tab playing media is the honest edge case here — it is genuinely doing something, and
192
+ * this will let its session expire. Treating "hidden" as "not present" is the right default for a
193
+ * clinic workstation, which is the case that prompted this; a host that needs otherwise can raise
194
+ * `sessionTimeoutMs`.
195
+ */
196
+ if (typeof document !== 'undefined' && document.visibilityState === 'hidden')
197
+ return;
198
+ const t = now();
199
+ /**
200
+ * Self-heal, checked on EVERY call rather than behind the throttle.
201
+ *
202
+ * The throttle exists so a busy page does not do a parse + write per envelope — but the window it
203
+ * creates is the whole problem here: a host that clears storage in its logout handler usually
204
+ * navigates or reloads immediately afterwards, well inside 60 seconds, so a throttled restore would
205
+ * run only after the session had already been lost. This guard is a bare `getItem` with no parse —
206
+ * the cheapest read available — and it only does work in the case that is actually broken.
207
+ */
208
+ if (live) {
209
+ try {
210
+ if (typeof sessionStorage !== 'undefined' && sessionStorage.getItem(SESSION_KEY) === null) {
211
+ live.lastSeenAt = t;
212
+ write(live);
213
+ lastTouch = t;
214
+ return;
215
+ }
216
+ }
217
+ catch {
218
+ /* storage blocked — nothing to restore into */
219
+ }
220
+ }
221
+ if (t - lastTouch < 60000)
222
+ return;
223
+ lastTouch = t;
224
+ const rec = read();
225
+ if (!rec)
226
+ return;
227
+ rec.lastSeenAt = t;
228
+ write(rec);
229
+ live = rec;
230
+ }
231
+ /**
232
+ * Reserve `count` sequence numbers and return the first.
233
+ *
234
+ * Read-modify-write against storage rather than a purely in-memory counter, so the counter SURVIVES
235
+ * a refresh: a resumed session must keep numbering upward instead of restarting at 0 and sorting its
236
+ * new frames before the old ones.
237
+ *
238
+ * Since the move to sessionStorage the store is per-tab, so the cross-tab contention this used to
239
+ * guard against cannot arise — two tabs now hold two different sessions, each with its own counter.
240
+ */
241
+ export function reserveSeq(count = 1) {
242
+ const rec = read();
243
+ // No usable record (storage blocked, private mode, or a session that could not be written): fall
244
+ // back to an in-memory counter. Returning a constant 0 here would stamp EVERY frame as seq 0 and
245
+ // destroy replay ordering outright — far worse than the per-document counter this replaced.
246
+ if (!rec) {
247
+ const s = memSeq;
248
+ memSeq += count;
249
+ return s;
250
+ }
251
+ const start = rec.seq;
252
+ rec.seq = start + count;
253
+ /**
254
+ * D5b — NUMBERING A FRAME IS NOT ACTIVITY, and this used to write `rec.lastSeenAt = now()` here.
255
+ *
256
+ * `touchSession` is the activity path and it carries two rules deliberately: it returns early
257
+ * while the document is hidden (D5 — "a HIDDEN document does not slide the inactivity window")
258
+ * and it throttles to once a minute. This line had neither, so the sequence counter quietly
259
+ * overrode both, and a tab that was RECORDING could never idle-expire at all.
260
+ *
261
+ * MEASURED, on the production session that prompted it
262
+ * (`sess_f41ae2db-6c33-4729-886c-f6d66117628b`, SDK 2.0.0): the visitor left for a Google
263
+ * sign-in, came back 62 minutes later against a 30-minute timeout, and the recorder's first
264
+ * frame refreshed `lastSeenAt` before the 60-second rotation timer next looked. `sessionExpired`
265
+ * then answered false forever after, so the tab carried on under an id the SERVER had already
266
+ * retired — the row said 3 min 10 s while the frames ran to 71 minutes. Across 14 days: 556 web
267
+ * sessions and 27,082 frames stored, counted and invisible.
268
+ *
269
+ * Nothing is starved by removing it. Frames travel the same envelope path as everything else, so
270
+ * `SessionManager.context()` still calls `touchSession()` for them — with the visibility rule
271
+ * applied, which is the whole point.
272
+ */
273
+ write(rec);
274
+ return start;
275
+ }
276
+ /**
277
+ * Raise the next-sequence floor, returning it.
278
+ *
279
+ * Crash recovery replays a pre-roll buffer whose frames ALREADY consumed sequence numbers, but those
280
+ * frames were written by a previous document and the store knows nothing about them. Without this the
281
+ * counter would hand the same numbers out again and the recovered frames would collide with the new
282
+ * session's — the exact ordering corruption the persisted counter exists to prevent.
283
+ */
284
+ export function ensureSeqAtLeast(next) {
285
+ const rec = read();
286
+ if (!rec) {
287
+ if (memSeq < next)
288
+ memSeq = next;
289
+ return memSeq;
290
+ }
291
+ if (rec.seq < next) {
292
+ rec.seq = next;
293
+ write(rec);
294
+ }
295
+ return rec.seq;
296
+ }
297
+ /**
298
+ * Drop the stored session so the next `resolveSession()` mints a new id.
299
+ *
300
+ * ⚠️ NOT called by `reset()`, and it must not be. The docstring here used to claim "Used by
301
+ * `reset()` / logout", which is false in both halves — it has no callers at all, and wiring it to
302
+ * logout would reintroduce the exact bug the `live` copy and the self-heal in `touchSession` were
303
+ * built to prevent: see the WHY A SECOND COPY note above, where "I logged out in the same tab and
304
+ * got a new session" is the report being fixed.
305
+ *
306
+ * Signing out does not end a visit. The person is still in the same tab, and `AnalyticsFeature.reset()`
307
+ * already does the part that genuinely must change — a fresh anonymous id, cleared user id,
308
+ * super-properties and groups — so the next user is never attributed to the previous one. The session
309
+ * is the visit, not the identity.
310
+ *
311
+ * This exists for a host that wants an explicit hard boundary and knows it is asking for one. It is
312
+ * currently unused; keep it, but reach for it deliberately.
313
+ */
314
+ export function clearSession() {
315
+ try {
316
+ if (typeof sessionStorage !== 'undefined')
317
+ sessionStorage.removeItem(SESSION_KEY);
318
+ }
319
+ catch {
320
+ /* nothing we can do */
321
+ }
322
+ }
323
+ //# sourceMappingURL=sessionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.js","sourceRoot":"","sources":["../../../src/features/session/sessionStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * F-WDOG (W5.2) — Resource Watchdog. Ultra-thin eager shell: feature-detect, then lazy-load the engine
3
+ * (sampling gate + collectors + incident detector + rollup + emit). A production watchdog — continuous
4
+ * low-cost resource sampling → local incident detection → only rollups + incidents egress, replay-
5
+ * correlated on the existing `kind:'performance'` lane (ZERO backend migration). Off by default.
6
+ *
7
+ * Distinct from `profiler` (JS Self-Profiling flame capture): mobile's profiler is desktop-only and
8
+ * never reaches the backend — this watchdog persists incidents. Everything but the detect+import lives
9
+ * in the lazy chunk to keep the core bundle gate.
10
+ */
11
+ import type { IFeature, FeatureContext } from '@scalebun/sdk-contracts';
12
+ import type { WatchdogStats } from './engine.js';
13
+ export declare class WatchdogFeature implements IFeature {
14
+ readonly name = "watchdog";
15
+ private active;
16
+ private handle?;
17
+ get isActive(): boolean;
18
+ setup(ctx: FeatureContext): Promise<void>;
19
+ /** Self-observability (`scalebun.watchdog.stats()`), matching errorStats/perfStats. */
20
+ stats(): WatchdogStats;
21
+ teardown(): void;
22
+ }
23
+ //# sourceMappingURL=WatchdogFeature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WatchdogFeature.d.ts","sourceRoot":"","sources":["../../../src/features/watchdog/WatchdogFeature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9D,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAC,CAAiB;IAEhC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAEK,KAAK,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,uFAAuF;IACvF,KAAK,IAAI,aAAa;IAItB,QAAQ,IAAI,IAAI;CAKjB"}
@@ -0,0 +1,29 @@
1
+ const EMPTY_STATS = { incidents: 0, droppedIncidents: 0, rollups: 0, tiers: { pressure: false, memory: false } };
2
+ export class WatchdogFeature {
3
+ constructor() {
4
+ this.name = 'watchdog';
5
+ this.active = false;
6
+ }
7
+ get isActive() {
8
+ return this.active;
9
+ }
10
+ async setup(ctx) {
11
+ if (typeof window === 'undefined' || typeof performance === 'undefined')
12
+ return;
13
+ this.active = true;
14
+ const { startWatchdog } = await import('./engine.js');
15
+ if (!this.active)
16
+ return; // torn down while the chunk loaded
17
+ this.handle = startWatchdog(ctx);
18
+ }
19
+ /** Self-observability (`scalebun.watchdog.stats()`), matching errorStats/perfStats. */
20
+ stats() {
21
+ return this.handle?.stats() ?? EMPTY_STATS;
22
+ }
23
+ teardown() {
24
+ this.active = false;
25
+ this.handle?.stop();
26
+ this.handle = undefined;
27
+ }
28
+ }
29
+ //# sourceMappingURL=WatchdogFeature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WatchdogFeature.js","sourceRoot":"","sources":["../../../src/features/watchdog/WatchdogFeature.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,GAAkB,EAAE,SAAS,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;AAEhI,MAAM,OAAO,eAAe;IAA5B;QACW,SAAI,GAAG,UAAU,CAAC;QACnB,WAAM,GAAG,KAAK,CAAC;IAyBzB,CAAC;IAtBC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAmB;QAC7B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,WAAW,KAAK,WAAW;YAAE,OAAO;QAChF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,mCAAmC;QAC7D,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,uFAAuF;IACvF,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,WAAW,CAAC;IAC7C,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import type { PressureState } from './incidents.js';
2
+ export interface CollectorSinks {
3
+ onHeartbeat: (lagMs: number) => void;
4
+ onPressure: (state: PressureState) => void;
5
+ onMemory: (usedBytes: number, limitBytes: number) => void;
6
+ }
7
+ export interface CollectorHandle {
8
+ stop: () => void;
9
+ /** Whether Compute Pressure is present (decides the incident engine's cpu_spike model). */
10
+ pressureAvailable: boolean;
11
+ /** Whether performance.memory is present (Chromium) — drives the rollup's honest tier map. */
12
+ memoryAvailable: boolean;
13
+ }
14
+ export declare function startCollectors(sinks: CollectorSinks, opts: {
15
+ heartbeatMs: number;
16
+ memorySampleMs: number;
17
+ }): CollectorHandle;
18
+ //# sourceMappingURL=collectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectors.d.ts","sourceRoot":"","sources":["../../../src/features/watchdog/collectors.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3C,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,2FAA2F;IAC3F,iBAAiB,EAAE,OAAO,CAAC;IAC3B,8FAA8F;IAC9F,eAAe,EAAE,OAAO,CAAC;CAC1B;AAwBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAmF7H"}