@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,644 @@
1
+ import { uuid, now } from '../../../core/index.js';
2
+ import { PersistentBuffer } from '../../../storage/idb.js';
3
+ import { capBytes, PERSIST_MAX_BYTES } from '../../../core/prune.js';
4
+ import { approxBytes } from './segmentBuffer.js';
5
+ import { DeltaBatcher } from './deltaBatcher.js';
6
+ import { AdaptiveController, adapt } from './adaptive.js';
7
+ import { redactFrame } from './pii.js';
8
+ import { shouldDeferHeavyEgress } from './deviceSignals.js';
9
+ import { getTabId, getViewId, getRoute } from './viewContext.js';
10
+ import { reserveSeq, ensureSeqAtLeast } from '../../session/sessionStore.js';
11
+ const SEGMENT_MAX_FRAMES = 120;
12
+ const SEGMENT_MAX_BYTES = 200000; // seal a segment at ~200KB even if it hasn't hit the frame cap
13
+ const MAX_SEGMENTS = 8; // ring depth (count guard; the byte budget is the real bound)
14
+ /**
15
+ * Pre-roll cap, DERIVED from the budget the pre-roll has to survive rather than picked.
16
+ *
17
+ * It was a standalone 3MB against `PERSIST_MAX_BYTES` of 2MB, so a pre-roll allowed to fill
18
+ * completely was 1MB over the limit by construction and could never be persisted whole — it was
19
+ * guaranteed to be trimmed on its way to IndexedDB. Two constants in two files that have to relate
20
+ * and didn't. Deriving it means raising the persist budget raises this one with it.
21
+ *
22
+ * This is an upper bound, not a guarantee: the persisted queue also carries events, perf and network
23
+ * items, so a full pre-roll can still be trimmed to make room — which is now a graceful shed of the
24
+ * oldest segments rather than the loss of every frame.
25
+ */
26
+ const MAX_BUFFER_BYTES = PERSIST_MAX_BYTES;
27
+ const KEYFRAME_INTERVAL_MS = 30000; // periodic checkpoint cadence (also drains the hidden-tab pile)
28
+ // B1: even on a genuinely idle page, force a keyframe at least this often so a long session keeps a
29
+ // recent checkpoint (durable crash-mirror freshness + backend retention windows stay seekable).
30
+ const MAX_IDLE_KEYFRAME_MS = 5 * 60000;
31
+ // Packaging window for the DOM lane (mutations + CSSOM + iframe ops, via DeltaBatcher): producers keep
32
+ // their capture cadence, frames ship at most every this-many ms. Caps the worst case (a 60fps DOM
33
+ // animation) at ~10 frames/sec instead of 60 — no ops are lost, only the envelopes.
34
+ const DELTA_BATCH_MS = 100;
35
+ // Move-only interaction batches pool this long before shipping (clicks flush them instantly — see
36
+ // InteractionRecorder.queue). ~3 cursor frames/sec instead of 10 during continuous movement.
37
+ const MOVE_FLUSH_MS = 300;
38
+ /** Attribute a frame to the producer lane it came from (for the stats counters). */
39
+ function classifyFrame(frame) {
40
+ if (frame.frameType === 'keyframe')
41
+ return 'keyframe';
42
+ const muts = frame.mutations;
43
+ if (muts?.length)
44
+ return muts.every((m) => m.op === 'canvas') ? 'canvas' : 'mutation';
45
+ const events = frame.events;
46
+ if (events?.length) {
47
+ if (events.some((e) => e.k === 'click' || e.k === 'deadclick' || e.k === 'input'))
48
+ return 'interaction';
49
+ if (events.some((e) => e.k === 'scroll' || e.k === 'viewport'))
50
+ return 'scroll';
51
+ return 'move';
52
+ }
53
+ return 'other';
54
+ }
55
+ export async function createRecorder(ctx, decision) {
56
+ const c = new RecorderController(ctx, decision);
57
+ await c.init();
58
+ return c;
59
+ }
60
+ export class RecorderController {
61
+ /**
62
+ * Take the next sequence number and persist the advance (survives reload / shared tabs).
63
+ *
64
+ * CALLED FROM push(), AFTER every decision that can discard the frame — never from the builders.
65
+ *
66
+ * It used to be called while constructing the frame object, which push() could then drop outright:
67
+ * adaptive quality shedding a cursor-move frame, or SegmentBuffer refusing a delta that has no open
68
+ * segment. The number was never reused, so a deliberate shed and a frame genuinely lost in transit
69
+ * left the SAME hole in the stored sequence. That made our own reliability figure unprovable —
70
+ * production measures 1.16% of numbered frames missing, and nobody could say how much of it was
71
+ * intentional. Assigning at emission makes a gap mean exactly one thing: a frame that left the
72
+ * recorder and did not arrive.
73
+ */
74
+ nextSeq() {
75
+ const n = reserveSeq(1);
76
+ this.seq = n + 1;
77
+ return n;
78
+ }
79
+ constructor(ctx, decision) {
80
+ this.ctx = ctx;
81
+ this.decision = decision;
82
+ this.active = false;
83
+ /**
84
+ * Replay frame sequence, PER SESSION rather than per document.
85
+ *
86
+ * A session now survives a refresh (features/session/sessionStore), and the backend both orders
87
+ * frames by this number and resolves a keyframe's deltas as the frames in [seq, nextSeq). A
88
+ * counter that restarted at 0 on each page load would therefore emit a second frame 0, 1, 2…
89
+ * that sorts BEFORE the first load's later frames and scrambles the replay. Seed from the store
90
+ * so a resumed session keeps counting.
91
+ */
92
+ this.seq = reserveSeq(0);
93
+ this.keyframeId = '';
94
+ this.checkpointing = false;
95
+ // B1: set by any delta pushed since the last keyframe; the periodic 'time' checkpoint skips its
96
+ // redundant full re-snapshot when a page is genuinely idle (no deltas). `lastKeyframeAt` bounds that
97
+ // skip via MAX_IDLE_KEYFRAME_MS so a keyframe still lands eventually.
98
+ this.dirtySinceKeyframe = false;
99
+ this.lastKeyframeAt = 0;
100
+ // R0.6 — streaming delta-chain budget. The BUFFERED path bounds a chain via SegmentBuffer.currentBytes
101
+ // in push(); the STREAMING path emits deltas directly with no buffer, so without this a busy live page
102
+ // builds an unbounded delta chain between the 30s time-keyframes → unbounded seek/reconstruction cost.
103
+ // Charge each streamed delta with the SAME approxBytes measure and force a keyframe at the same budget;
104
+ // reset when a keyframe opens a fresh chain (in checkpoint()).
105
+ this.streamChainBytes = 0;
106
+ this.streamChainFrames = 0;
107
+ /** Last `egressDropped` reading — a RISE means the pipeline shed a chain (see push()). */
108
+ this.lastShed = 0;
109
+ this.pendingEncodes = new Set();
110
+ this.shed = 0; // delta frames dropped by adaptive quality (for stats in M7)
111
+ this.producerCounts = {};
112
+ this.redactPII = false; // strict privacy on UNMASKED replay (M8)
113
+ this.paused = false; // runtime pause() — capture disarmed, session/buffer retained
114
+ this.streaming = decision.streamFromStart; // 'sampled'/'always' → emit live from frame 0
115
+ // P3/D1 — cost-aware egress: on Save-Data / slow link / ultra-low-memory, DON'T stream live; keep
116
+ // recording into the buffered pre-roll (on-error/crash replay preserved), upload only on signal.
117
+ if (this.streaming && shouldDeferHeavyEgress()) {
118
+ this.streaming = false;
119
+ ctx.log('[replay] save-data/slow → buffered');
120
+ }
121
+ this.persistBuffer = !!ctx.replaySampling?.persistBuffer && !this.streaming; // only the ARMED pre-roll
122
+ this.maskText = ctx.maskReplayText ?? false; // default: show text (config/setPrivacy() can mask); inputs always masked
123
+ }
124
+ get isActive() {
125
+ return this.active;
126
+ }
127
+ /** Live diagnostics. */
128
+ stats() {
129
+ const b = this.segBuf;
130
+ return {
131
+ recording: this.active && !this.paused,
132
+ paused: this.paused,
133
+ streaming: this.streaming,
134
+ sampleReason: this.decision.reason,
135
+ sampleBucket: this.decision.bucket,
136
+ qualityLevel: this.adaptive?.level ?? 0,
137
+ segments: b?.segmentCount ?? 0,
138
+ frames: b?.frameCount ?? 0,
139
+ captured: !!this.keyframeId,
140
+ bufferBytes: b?.totalBytes ?? 0,
141
+ droppedSegments: b?.dropped ?? 0,
142
+ shedFrames: this.shed,
143
+ producers: Object.fromEntries(Object.entries(this.producerCounts).map(([k, v]) => [k, { ...v }])),
144
+ };
145
+ }
146
+ /** Force a re-keyframe (e.g. ScaleBun.replay.checkpoint() before a risky flow). */
147
+ forceCheckpoint(reason) {
148
+ this.checkpoint(reason);
149
+ }
150
+ /** One-time bring-up: segment buffer + crash-survival mirror + encoder (survive pause/resume), then
151
+ * ARM the capture pipeline (observers + first keyframe). The re-armable part lives in `arm()`. */
152
+ async init() {
153
+ const [{ ReplayEncoder }, { SegmentBuffer }] = await Promise.all([
154
+ import('../engine/replayWorker.js'),
155
+ import('./segmentBuffer.js'),
156
+ ]);
157
+ this.segBuf = new SegmentBuffer(MAX_SEGMENTS, MAX_BUFFER_BYTES);
158
+ // M6 crash-survival (opt-in): recover a PRIOR session's pre-roll if it was retained (i.e. the
159
+ // last load didn't clean-close → likely a crash). Emit it as a standalone segment, then continue
160
+ // seq past it so the new session's frames never collide. Guards clear it on a clean close.
161
+ if (this.persistBuffer) {
162
+ this.replayStore = new PersistentBuffer('pending-replay');
163
+ await this.recoverPriorPreRoll();
164
+ this.installPersistGuards();
165
+ }
166
+ // Encoder is one-time (survives pause/resume) — arm()/checkpoints reuse it for gzip-in-place.
167
+ this.encoder = new ReplayEncoder();
168
+ this.disposeEncoder = () => this.encoder?.dispose();
169
+ await this.arm();
170
+ // Capture-on-signal flush is one-time (an error while paused still drains an empty buffer safely).
171
+ this.unsubSignal = this.ctx.onSignal(() => this.flush());
172
+ this.active = true;
173
+ }
174
+ /**
175
+ * ARM the capture pipeline: fresh NodeRegistry + a keyframe of the CURRENT DOM, then wire + observe
176
+ * the mutation/interaction/CSSOM/iframe/canvas recorders, adaptive quality, and checkpoint cadence.
177
+ * Idempotent-safe to call after `disarm()` — this is exactly what resume()/setPrivacy() do, and why a
178
+ * resume takes a fresh keyframe (the DOM changed while paused, so old deltas can't rebase).
179
+ */
180
+ async arm() {
181
+ if (typeof document === 'undefined')
182
+ return;
183
+ const ctx = this.ctx;
184
+ const [{ NodeRegistry }, { takeSnapshot }, { MutationRecorder }, { InteractionRecorder }, { CssomRecorder }, { IframeManager },] = await Promise.all([
185
+ import('../engine/nodeRegistry.js'),
186
+ import('../engine/snapshot.js'),
187
+ import('../engine/mutations.js'),
188
+ import('../engine/interactions.js'),
189
+ import('../engine/cssom.js'),
190
+ // R3: folded into the same Promise.all. As a separate `await` it added a round trip to
191
+ // time-to-first-keyframe for no reason — nothing above it depends on the iframe manager.
192
+ import('../engine/iframe.js'),
193
+ ]);
194
+ // Baseline the shed counter BEFORE the first frame: drops from before recording started (a
195
+ // consent-gated emit, a previous feature's overflow) are not this chain's problem, and counting
196
+ // them would fire a redundant checkpoint against the keyframe taken moments earlier.
197
+ this.lastShed = ctx.egressDropped?.() ?? 0;
198
+ const reg = new NodeRegistry();
199
+ // maskAllText defaults FALSE (text shown); host masks via privacy.maskReplayText or setPrivacy(). Inputs always masked.
200
+ // Inputs stay masked. Held on `this.maskText` so setPrivacy() can flip it + re-arm.
201
+ const snapOpts = { maskAllText: this.maskText, maskAllInputs: ctx.maskInputs ?? true, maskSelectors: ctx.maskSelectors };
202
+ // M8: strict-mode PII redaction only matters when text is UNMASKED (masked text has no PII to find).
203
+ this.redactPII = ctx.replaySampling?.privacyLevel === 'strict' && !snapOpts.maskAllText;
204
+ this.reg = reg;
205
+ this.snapOpts = snapOpts;
206
+ this.takeSnapshotFn = takeSnapshot;
207
+ const snapshot = takeSnapshot(document, reg, snapOpts);
208
+ this.keyframeId = `f_${uuid()}`;
209
+ // Keyframe ships RAW immediately (always valid wire) and is upgraded to gzip in-place as the worker
210
+ // finishes — encoding stays OFF the critical path; a race with egress just sends the raw payload.
211
+ const keyframe = {
212
+ kind: 'frame',
213
+ renderer: 'dom',
214
+ frameType: 'keyframe',
215
+ frameId: this.keyframeId,
216
+ snapshot,
217
+ viewport: viewport(),
218
+ href: href(),
219
+ tabId: getTabId(),
220
+ viewId: getViewId(),
221
+ route: getRoute(),
222
+ masked: true,
223
+ timestamp: now(),
224
+ };
225
+ this.push(keyframe);
226
+ this.compressInPlace(keyframe, snapshot);
227
+ this.persistPreRoll(); // make the very first pre-roll durable too (before the 1st checkpoint)
228
+ this.dirtySinceKeyframe = false; // B1: fresh keyframe = clean baseline
229
+ this.lastKeyframeAt = now();
230
+ // The DOM lane's single packaging point: mutation/CSSOM/iframe producers keep their capture
231
+ // cadence but append ops HERE; one delta frame ships per DELTA_BATCH_MS window (ops in arrival
232
+ // order, so DOM and CSSOM changes from the same tick share one envelope).
233
+ const batcher = new DeltaBatcher(DELTA_BATCH_MS, (mutations) => this.push(this.delta({ mutations })));
234
+ this.deltaBatcher = batcher;
235
+ const interactions = new InteractionRecorder(reg, (events) => {
236
+ this.push(this.delta({ events }));
237
+ }, {
238
+ maskText: !!snapOpts.maskAllText, // click labels omit page text when replay text is masked
239
+ moveFlushMs: MOVE_FLUSH_MS,
240
+ // A click frame flushes synchronously; drain the DOM lane first so a click on a just-added
241
+ // node never ships before the mutation that adds it.
242
+ beforeImmediateFlush: () => batcher.flush(),
243
+ });
244
+ const recorder = new MutationRecorder(reg, (mutations) => {
245
+ interactions.notifyDomActivity(); // a real DOM change → not a dead click (never delayed by batching)
246
+ batcher.append(mutations);
247
+ }, snapOpts);
248
+ const cssom = new CssomRecorder(reg, (mutations) => {
249
+ interactions.notifyDomActivity(); // a style change is a real visual effect, not a dead click
250
+ batcher.append(mutations);
251
+ });
252
+ const iframes = new IframeManager(reg, (mutations) => {
253
+ interactions.notifyDomActivity();
254
+ batcher.append(mutations);
255
+ }, snapOpts, {
256
+ onFrame: (doc, getOffset) => interactions.observeFrame(doc, getOffset),
257
+ onUnframe: (doc) => interactions.unobserveFrame(doc),
258
+ frameOrigins: ctx.replayFrameOrigins ?? [],
259
+ });
260
+ if ((ctx.replayFrameOrigins ?? []).length) {
261
+ void import('../engine/crossOrigin.js').then(({ installChildSatellite }) => {
262
+ this.childSatelliteStop = installChildSatellite(ctx.replayFrameOrigins ?? [], snapOpts);
263
+ });
264
+ }
265
+ this.mutationRec = recorder;
266
+ this.cssomRec = cssom;
267
+ recorder.observe(document.documentElement);
268
+ interactions.observe();
269
+ cssom.install();
270
+ iframes.start();
271
+ this.disconnectRecorder = () => recorder.disconnect();
272
+ this.disconnectInteractions = () => interactions.disconnect();
273
+ this.disconnectCssom = () => cssom.disconnect();
274
+ this.disconnectIframes = () => iframes.disconnect();
275
+ if (ctx.replayCanvas) {
276
+ const { CanvasRecorder } = await import('../engine/canvas.js');
277
+ const canvas = new CanvasRecorder(reg, (mutations) => {
278
+ interactions.notifyDomActivity();
279
+ this.push(this.delta({ mutations }));
280
+ }, (...a) => ctx.log(...a));
281
+ canvas.start();
282
+ this.disconnectCanvas = () => canvas.disconnect();
283
+ }
284
+ // Adaptive quality — shed canvas→mousemove→scroll (never mutations/CSSOM/input) under CPU or
285
+ // egress pressure; recovers automatically when pressure clears.
286
+ this.adaptive = new AdaptiveController(ctx.egressPending);
287
+ // Checkpoint cadence: time / visibility-return / SPA URL change / UI state change → re-keyframe.
288
+ const { installCadence } = await import('./cadence.js');
289
+ /**
290
+ * The state reader is NOT passed here — installCadence takes it from the shared cell in core,
291
+ * which the journey feature registers at init.
292
+ *
293
+ * That indirection is a measured size decision, not a style one. Every direct import path cost
294
+ * eager bundle against 97 B of headroom: 56 B for a dynamic import here, 59 B for a static one
295
+ * inside cadence.ts, because naming journey/uiState from the lazy replay graph makes it shared
296
+ * and the bundler hoists it into core. Registering through core — already imported by both
297
+ * sides — costs the cell alone and leaves 45 B. See core/uiStateReader.
298
+ */
299
+ this.disconnectCadence = installCadence({
300
+ keyframeIntervalMs: KEYFRAME_INTERVAL_MS,
301
+ onCheckpoint: (reason) => this.checkpoint(reason),
302
+ });
303
+ }
304
+ /** DISARM the capture pipeline: stop every observer + adaptive + cadence and drop the capture-scoped
305
+ * state, WITHOUT touching the segment buffer / crash-mirror / encoder / session (those survive a
306
+ * pause). The inverse of `arm()`; shared by pause() and teardown(). Idempotent. */
307
+ disarm() {
308
+ // Drain captured-but-unpackaged work BEFORE disconnecting (disconnect drops producer queues):
309
+ // pending ops become a final delta frame, so a pause/teardown never loses observed changes.
310
+ try {
311
+ this.mutationRec?.flush();
312
+ this.cssomRec?.flush();
313
+ this.deltaBatcher?.dispose();
314
+ }
315
+ catch {
316
+ /* best-effort tail drain */
317
+ }
318
+ this.deltaBatcher = undefined;
319
+ this.disconnectRecorder?.();
320
+ this.disconnectInteractions?.();
321
+ this.disconnectCssom?.();
322
+ this.disconnectCanvas?.();
323
+ this.disconnectIframes?.();
324
+ this.childSatelliteStop?.();
325
+ this.disconnectCadence?.();
326
+ this.adaptive?.dispose();
327
+ this.disconnectRecorder = undefined;
328
+ this.disconnectInteractions = undefined;
329
+ this.disconnectCssom = undefined;
330
+ this.disconnectCanvas = undefined;
331
+ this.disconnectIframes = undefined;
332
+ this.childSatelliteStop = undefined;
333
+ this.disconnectCadence = undefined;
334
+ this.adaptive = undefined;
335
+ // Null the capture-scoped refs so a stray checkpoint()/forceCheckpoint() no-ops while paused.
336
+ this.reg = undefined;
337
+ this.mutationRec = undefined;
338
+ this.cssomRec = undefined;
339
+ this.takeSnapshotFn = undefined;
340
+ this.snapOpts = undefined;
341
+ }
342
+ // ── Runtime control (ScaleBun.replay.pause/start/setPrivacy) ────────────────
343
+ /** Pause capture (stop observers) while keeping the session + buffered pre-roll intact. No-op when
344
+ * not recording or already paused. */
345
+ pause() {
346
+ if (!this.active || this.paused)
347
+ return;
348
+ this.disarm();
349
+ this.paused = true;
350
+ this.ctx.log('[replay] paused');
351
+ }
352
+ /** Resume capture after pause(): re-arm with a FRESH keyframe of the current DOM (the DOM changed
353
+ * while paused, so a new base is required). No-op when not recording or not paused. */
354
+ resume() {
355
+ if (!this.active || !this.paused)
356
+ return;
357
+ this.paused = false;
358
+ void this.arm().then(() => this.ctx.log('[replay] resumed'));
359
+ }
360
+ /** Change replay masking at runtime (e.g. entering a sensitive screen). Re-arms with a fresh keyframe
361
+ * so the new masking takes effect from here on; the already-captured pre-roll keeps its old masking. */
362
+ setPrivacy(policy) {
363
+ if (typeof policy?.maskAllText !== 'boolean' || policy.maskAllText === this.maskText)
364
+ return;
365
+ this.maskText = policy.maskAllText;
366
+ if (this.active && !this.paused) {
367
+ this.disarm();
368
+ void this.arm();
369
+ }
370
+ this.ctx.log('[replay] privacy set: maskAllText=' + this.maskText);
371
+ }
372
+ /** Build a delta frame against the current keyframe. `seq` is assigned in push(), not here — see
373
+ * the note on nextSeq(). */
374
+ delta(payload) {
375
+ return {
376
+ kind: 'frame',
377
+ renderer: 'dom',
378
+ frameType: 'delta',
379
+ frameId: `f_${uuid()}`,
380
+ baseFrameId: this.keyframeId,
381
+ ...payload,
382
+ tabId: getTabId(),
383
+ viewId: getViewId(),
384
+ route: getRoute(),
385
+ masked: true,
386
+ timestamp: now(),
387
+ };
388
+ }
389
+ push(frame) {
390
+ var _a;
391
+ // B1: any delta (even one later shed by adaptive quality) means the page changed since the last
392
+ // keyframe → the next 'time' checkpoint must actually re-snapshot.
393
+ if (frame.frameType === 'delta')
394
+ this.dirtySinceKeyframe = true;
395
+ // M8: scrub PII before the frame is buffered/encoded (keyframe snapshot + delta mutation values).
396
+ if (this.redactPII)
397
+ redactFrame(frame);
398
+ // Adaptive quality: under pressure, shed low-priority deltas (canvas/move/scroll). Keyframes and
399
+ // mutation/CSSOM/input deltas always pass — the correctness + signal floor.
400
+ if (frame.frameType === 'delta' && this.adaptive && this.adaptive.level > 0) {
401
+ const adapted = adapt(frame, this.adaptive.level);
402
+ if (!adapted) {
403
+ this.shed++;
404
+ return;
405
+ }
406
+ frame = adapted;
407
+ }
408
+ /**
409
+ * THE SEQUENCE IS TAKEN HERE, past every decision that can discard this frame.
410
+ *
411
+ * A shed above returns without consuming a number, so the stored sequence has a hole only when a
412
+ * frame actually left the recorder and failed to arrive. That is what makes the gap measurable:
413
+ * before this, an adaptive shed and a lost frame were indistinguishable in the database.
414
+ */
415
+ frame.seq = this.nextSeq();
416
+ // Per-producer attribution of everything that actually ships/buffers (post-shed) — the
417
+ // measurement the flush-policy tuning is judged against.
418
+ const producer = classifyFrame(frame);
419
+ const pc = ((_a = this.producerCounts)[producer] ?? (_a[producer] = { frames: 0, bytes: 0 }));
420
+ pc.frames++;
421
+ pc.bytes += approxBytes(frame);
422
+ if (this.streaming) {
423
+ this.ctx.emit(frame);
424
+ /**
425
+ * A SHED IS A CHAIN BREAK — restart the chain here, not at the next scheduled checkpoint.
426
+ *
427
+ * `Pipeline.evictChain` drops the oldest frame chain whole when the egress queue is full. Every
428
+ * delta emitted after that still carries `baseFrameId` of a keyframe the server will never
429
+ * receive, so without this the shed keeps costing frames until the next 30-second checkpoint —
430
+ * which is precisely how 1.16% frame loss came to break 13.5% of sessions in production.
431
+ * Re-keyframing on the rise bounds the damage to the frames already in flight.
432
+ *
433
+ * Read here rather than on a timer because the counter only moves inside `emit`, so this is the
434
+ * first moment it can have changed; the cost is one function call against the `approxBytes`
435
+ * walk this method already does per frame. Buffered (pre-roll) capture never reaches the queue,
436
+ * so it cannot shed and does not need the check.
437
+ */
438
+ const shed = this.ctx.egressDropped?.() ?? 0;
439
+ if (shed > this.lastShed) {
440
+ this.lastShed = shed;
441
+ this.checkpoint('shed');
442
+ }
443
+ // R0.6: bound the LIVE delta chain the same way the buffered path bounds an open segment — force a
444
+ // re-keyframe once the chain crosses the segment budget so seek/reconstruction cost stays O(segment).
445
+ if (frame.frameType === 'delta') {
446
+ this.streamChainBytes += approxBytes(frame);
447
+ this.streamChainFrames++;
448
+ if (!this.checkpointing &&
449
+ (this.streamChainFrames >= SEGMENT_MAX_FRAMES || this.streamChainBytes >= SEGMENT_MAX_BYTES)) {
450
+ this.checkpoint(this.streamChainBytes >= SEGMENT_MAX_BYTES ? 'segment-bytes' : 'segment-frames');
451
+ }
452
+ }
453
+ return;
454
+ }
455
+ const buf = this.segBuf;
456
+ if (!buf)
457
+ return;
458
+ if (frame.frameType === 'keyframe')
459
+ buf.openSegment(frame);
460
+ else
461
+ buf.append(frame);
462
+ // Once the current segment fills, re-keyframe so the ring evicts whole OLD segments (consistent)
463
+ // instead of dropping an interior delta. Guarded against re-entrancy from checkpoint()'s drain.
464
+ if (!this.checkpointing &&
465
+ frame.frameType === 'delta' &&
466
+ (buf.currentFrameCount >= SEGMENT_MAX_FRAMES || buf.currentBytes >= SEGMENT_MAX_BYTES)) {
467
+ this.checkpoint(buf.currentBytes >= SEGMENT_MAX_BYTES ? 'segment-bytes' : 'segment-frames');
468
+ }
469
+ }
470
+ /** Re-keyframe: drain queued records onto the OLD keyframe, snapshot the live DOM, open a new
471
+ * segment with the keyframe (raw → gzip in-place). Subsequent deltas auto-rebase via `keyframeId`. */
472
+ checkpoint(reason) {
473
+ if (this.checkpointing || !this.reg || !this.takeSnapshotFn || typeof document === 'undefined')
474
+ return;
475
+ this.checkpointing = true;
476
+ try {
477
+ // Drain producers + the DOM batcher FIRST, for two reasons: pending ops must ship as deltas
478
+ // against the OLD keyframe (they describe changes the new snapshot will already contain), and
479
+ // the idle check below is only honest after the drain — a hidden-tab pile that hasn't been
480
+ // packaged yet still counts as "the page changed".
481
+ this.mutationRec?.flush();
482
+ this.cssomRec?.flush();
483
+ this.deltaBatcher?.flush();
484
+ // B1: the periodic 'time' checkpoint — and a tab-return 'visible' — are no-ops on a genuinely
485
+ // idle page: skip the redundant full re-snapshot when nothing changed since the last keyframe
486
+ // (bounded by MAX_IDLE_KEYFRAME_MS). Alt-tabbing used to cost a full DOM snapshot per return.
487
+ // url / segment-* / manual always re-keyframe.
488
+ if ((reason === 'time' || reason === 'visible') &&
489
+ !this.dirtySinceKeyframe &&
490
+ now() - this.lastKeyframeAt < MAX_IDLE_KEYFRAME_MS) {
491
+ return;
492
+ }
493
+ const snapshot = this.takeSnapshotFn(document, this.reg, this.snapOpts);
494
+ const id = `f_${uuid()}`;
495
+ this.keyframeId = id;
496
+ this.streamChainBytes = 0; // R0.6: a fresh keyframe starts a fresh chain
497
+ this.streamChainFrames = 0;
498
+ const keyframe = {
499
+ kind: 'frame',
500
+ renderer: 'dom',
501
+ frameType: 'keyframe',
502
+ frameId: id,
503
+ snapshot,
504
+ viewport: viewport(),
505
+ href: href(),
506
+ masked: true,
507
+ trigger: reason,
508
+ timestamp: now(),
509
+ };
510
+ this.push(keyframe);
511
+ this.compressInPlace(keyframe, snapshot);
512
+ this.persistPreRoll(); // refresh the durable crash-mirror at each checkpoint
513
+ this.dirtySinceKeyframe = false; // B1: this keyframe is the new clean baseline
514
+ this.lastKeyframeAt = now();
515
+ }
516
+ finally {
517
+ this.checkpointing = false;
518
+ }
519
+ }
520
+ // ── M6 crash-survivable pre-roll (opt-in) ──────────────────────────────────
521
+ async recoverPriorPreRoll() {
522
+ if (!this.replayStore)
523
+ return;
524
+ try {
525
+ const prev = (await this.replayStore.load());
526
+ if (Array.isArray(prev) && prev.length) {
527
+ let maxSeq = 0;
528
+ for (const f of prev) {
529
+ this.ctx.emit(f); // standalone segment — the player resets per keyframe
530
+ maxSeq = Math.max(maxSeq, f.seq ?? 0);
531
+ }
532
+ // Raise the SESSION's floor, not just this instance's mirror: the counter is persisted now,
533
+ // so a local assignment would be overwritten by the next reserve() and the recovered frames'
534
+ // numbers would be handed out a second time.
535
+ this.seq = ensureSeqAtLeast(maxSeq + 1);
536
+ await this.replayStore.clear();
537
+ }
538
+ }
539
+ catch {
540
+ /* ignore — recovery is best-effort */
541
+ }
542
+ }
543
+ /** Mirror the current pre-roll to IDB (byte-capped). A crash retains it; a clean close clears it.
544
+ * Every item here IS a frame, so `isHeavy` is constant — the predicates exist to tell capBytes
545
+ * which of them is a base, so a trimmed pre-roll starts at a keyframe instead of at deltas that
546
+ * reconstruct against a snapshot no longer present. */
547
+ persistPreRoll() {
548
+ if (!this.replayStore || !this.segBuf || this.streaming)
549
+ return;
550
+ void this.replayStore.save(capBytes(this.segBuf.drainFrames(), () => true, (f) => f.frameType === 'keyframe'));
551
+ }
552
+ installPersistGuards() {
553
+ if (typeof window === 'undefined')
554
+ return;
555
+ // Clean close → discard the pre-roll (onError: no error fired). A real crash skips pagehide, so
556
+ // the last-checkpoint mirror survives for recovery on the next load.
557
+ this.onPageHide = () => void this.replayStore?.clear();
558
+ window.addEventListener('pagehide', this.onPageHide);
559
+ // C1: mobile Safari frequently kills a BACKGROUNDED tab without ever firing pagehide. Refresh the
560
+ // durable pre-roll mirror at the last reliable lifecycle point (visibility→hidden) so a later OS
561
+ // kill recovers the most recent frames. This PERSISTS (never clears) — the tab may still resume;
562
+ // a genuine clean close still clears via pagehide.
563
+ this.onVisHidden = () => {
564
+ if (typeof document !== 'undefined' && document.visibilityState === 'hidden')
565
+ this.persistPreRoll();
566
+ };
567
+ if (typeof document !== 'undefined')
568
+ document.addEventListener('visibilitychange', this.onVisHidden);
569
+ }
570
+ /**
571
+ * Upgrade a keyframe's already-emitted RAW snapshot to gzip in-place as the worker finishes. The
572
+ * frame object is shared with the SegmentBuffer / pipeline queue, so filling `.snapshot` swaps the
573
+ * payload before egress IF the encode wins the race; otherwise the valid raw payload ships. No
574
+ * await, no ordering hazard — correctness over a few uncompressed bytes on a lost race.
575
+ */
576
+ compressInPlace(frame, snapshot) {
577
+ const enc = this.encoder;
578
+ if (!enc)
579
+ return;
580
+ const p = enc
581
+ .encodeSnapshot(snapshot)
582
+ .then((out) => {
583
+ frame.snapshot = out;
584
+ })
585
+ .catch(() => {
586
+ /* keep the raw snapshot on failure */
587
+ })
588
+ .finally(() => {
589
+ this.pendingEncodes.delete(p);
590
+ });
591
+ this.pendingEncodes.add(p);
592
+ }
593
+ /** Capture-on-signal: drain pending records, flush the pre-roll segments, then stream live. */
594
+ flush() {
595
+ this.mutationRec?.flush();
596
+ this.cssomRec?.flush();
597
+ this.deltaBatcher?.flush(); // package the drained ops before the pre-roll ships
598
+ if (this.segBuf)
599
+ for (const f of this.segBuf.drainFrames())
600
+ this.ctx.emit(f);
601
+ this.segBuf?.clear();
602
+ this.streaming = true;
603
+ void this.replayStore?.clear(); // pre-roll now egressed via the durable pipeline → drop the mirror
604
+ }
605
+ teardown() {
606
+ this.disarm(); // stop every observer + adaptive + cadence + null the capture-scoped refs
607
+ // One-time teardown of the state that survives pause():
608
+ this.disposeEncoder?.();
609
+ if (this.onPageHide && typeof window !== 'undefined')
610
+ window.removeEventListener('pagehide', this.onPageHide);
611
+ this.onPageHide = undefined;
612
+ if (this.onVisHidden && typeof document !== 'undefined')
613
+ document.removeEventListener('visibilitychange', this.onVisHidden);
614
+ this.onVisHidden = undefined;
615
+ void this.replayStore?.clear(); // clean teardown → discard the pre-roll mirror
616
+ this.replayStore = undefined;
617
+ this.unsubSignal?.();
618
+ this.segBuf?.clear();
619
+ this.segBuf = undefined;
620
+ this.encoder = undefined;
621
+ this.pendingEncodes.clear(); // in-flight encodes resolve harmlessly onto GC'd frames
622
+ this.streaming = false;
623
+ this.checkpointing = false;
624
+ this.paused = false;
625
+ this.active = false;
626
+ }
627
+ }
628
+ function viewport() {
629
+ try {
630
+ return typeof window !== 'undefined' ? { width: window.innerWidth, height: window.innerHeight } : undefined;
631
+ }
632
+ catch {
633
+ return undefined;
634
+ }
635
+ }
636
+ function href() {
637
+ try {
638
+ return typeof location !== 'undefined' ? location.href : undefined;
639
+ }
640
+ catch {
641
+ return undefined;
642
+ }
643
+ }
644
+ //# sourceMappingURL=recorder.js.map