@tracelog/lib 0.11.2 → 0.11.4

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 (539) hide show
  1. package/dist/browser/tracelog.esm.js +308 -251
  2. package/dist/browser/tracelog.esm.js.map +1 -1
  3. package/dist/browser/tracelog.js +2 -2
  4. package/dist/browser/tracelog.js.map +1 -1
  5. package/dist/public-api.cjs +4427 -0
  6. package/dist/public-api.cjs.map +1 -0
  7. package/dist/public-api.d.mts +913 -0
  8. package/dist/public-api.d.ts +913 -0
  9. package/dist/public-api.js +4388 -0
  10. package/dist/public-api.js.map +1 -0
  11. package/package.json +17 -18
  12. package/dist/cjs/api.d.ts +0 -19
  13. package/dist/cjs/api.d.ts.map +0 -1
  14. package/dist/cjs/api.js +0 -183
  15. package/dist/cjs/api.js.map +0 -1
  16. package/dist/cjs/app.constants.d.ts +0 -80
  17. package/dist/cjs/app.constants.d.ts.map +0 -1
  18. package/dist/cjs/app.constants.js +0 -94
  19. package/dist/cjs/app.constants.js.map +0 -1
  20. package/dist/cjs/app.d.ts +0 -43
  21. package/dist/cjs/app.d.ts.map +0 -1
  22. package/dist/cjs/app.js +0 -165
  23. package/dist/cjs/app.js.map +0 -1
  24. package/dist/cjs/constants/config.constants.d.ts +0 -109
  25. package/dist/cjs/constants/config.constants.d.ts.map +0 -1
  26. package/dist/cjs/constants/config.constants.js +0 -216
  27. package/dist/cjs/constants/config.constants.js.map +0 -1
  28. package/dist/cjs/constants/error.constants.d.ts +0 -56
  29. package/dist/cjs/constants/error.constants.d.ts.map +0 -1
  30. package/dist/cjs/constants/error.constants.js +0 -89
  31. package/dist/cjs/constants/error.constants.js.map +0 -1
  32. package/dist/cjs/constants/index.d.ts +0 -5
  33. package/dist/cjs/constants/index.d.ts.map +0 -1
  34. package/dist/cjs/constants/index.js +0 -21
  35. package/dist/cjs/constants/index.js.map +0 -1
  36. package/dist/cjs/constants/performance.constants.d.ts +0 -29
  37. package/dist/cjs/constants/performance.constants.d.ts.map +0 -1
  38. package/dist/cjs/constants/performance.constants.js +0 -44
  39. package/dist/cjs/constants/performance.constants.js.map +0 -1
  40. package/dist/cjs/constants/storage.constants.d.ts +0 -11
  41. package/dist/cjs/constants/storage.constants.d.ts.map +0 -1
  42. package/dist/cjs/constants/storage.constants.js +0 -23
  43. package/dist/cjs/constants/storage.constants.js.map +0 -1
  44. package/dist/cjs/handlers/click.handler.d.ts +0 -36
  45. package/dist/cjs/handlers/click.handler.d.ts.map +0 -1
  46. package/dist/cjs/handlers/click.handler.js +0 -263
  47. package/dist/cjs/handlers/click.handler.js.map +0 -1
  48. package/dist/cjs/handlers/error.handler.d.ts +0 -28
  49. package/dist/cjs/handlers/error.handler.d.ts.map +0 -1
  50. package/dist/cjs/handlers/error.handler.js +0 -168
  51. package/dist/cjs/handlers/error.handler.js.map +0 -1
  52. package/dist/cjs/handlers/page-view.handler.d.ts +0 -17
  53. package/dist/cjs/handlers/page-view.handler.d.ts.map +0 -1
  54. package/dist/cjs/handlers/page-view.handler.js +0 -100
  55. package/dist/cjs/handlers/page-view.handler.js.map +0 -1
  56. package/dist/cjs/handlers/performance.handler.d.ts +0 -23
  57. package/dist/cjs/handlers/performance.handler.d.ts.map +0 -1
  58. package/dist/cjs/handlers/performance.handler.js +0 -274
  59. package/dist/cjs/handlers/performance.handler.js.map +0 -1
  60. package/dist/cjs/handlers/scroll.handler.d.ts +0 -40
  61. package/dist/cjs/handlers/scroll.handler.d.ts.map +0 -1
  62. package/dist/cjs/handlers/scroll.handler.js +0 -327
  63. package/dist/cjs/handlers/scroll.handler.js.map +0 -1
  64. package/dist/cjs/handlers/session.handler.d.ts +0 -16
  65. package/dist/cjs/handlers/session.handler.d.ts.map +0 -1
  66. package/dist/cjs/handlers/session.handler.js +0 -74
  67. package/dist/cjs/handlers/session.handler.js.map +0 -1
  68. package/dist/cjs/handlers/viewport.handler.d.ts +0 -44
  69. package/dist/cjs/handlers/viewport.handler.d.ts.map +0 -1
  70. package/dist/cjs/handlers/viewport.handler.js +0 -286
  71. package/dist/cjs/handlers/viewport.handler.js.map +0 -1
  72. package/dist/cjs/integrations/google-analytics.integration.d.ts +0 -18
  73. package/dist/cjs/integrations/google-analytics.integration.d.ts.map +0 -1
  74. package/dist/cjs/integrations/google-analytics.integration.js +0 -90
  75. package/dist/cjs/integrations/google-analytics.integration.js.map +0 -1
  76. package/dist/cjs/listeners/activity-listener-manager.d.ts +0 -9
  77. package/dist/cjs/listeners/activity-listener-manager.d.ts.map +0 -1
  78. package/dist/cjs/listeners/activity-listener-manager.js +0 -33
  79. package/dist/cjs/listeners/activity-listener-manager.js.map +0 -1
  80. package/dist/cjs/listeners/index.d.ts +0 -7
  81. package/dist/cjs/listeners/index.d.ts.map +0 -1
  82. package/dist/cjs/listeners/index.js +0 -15
  83. package/dist/cjs/listeners/index.js.map +0 -1
  84. package/dist/cjs/listeners/input-listener-managers.d.ts +0 -25
  85. package/dist/cjs/listeners/input-listener-managers.d.ts.map +0 -1
  86. package/dist/cjs/listeners/input-listener-managers.js +0 -50
  87. package/dist/cjs/listeners/input-listener-managers.js.map +0 -1
  88. package/dist/cjs/listeners/listeners.types.d.ts +0 -5
  89. package/dist/cjs/listeners/listeners.types.d.ts.map +0 -1
  90. package/dist/cjs/listeners/listeners.types.js +0 -3
  91. package/dist/cjs/listeners/listeners.types.js.map +0 -1
  92. package/dist/cjs/listeners/touch-listener-manager.d.ts +0 -9
  93. package/dist/cjs/listeners/touch-listener-manager.d.ts.map +0 -1
  94. package/dist/cjs/listeners/touch-listener-manager.js +0 -35
  95. package/dist/cjs/listeners/touch-listener-manager.js.map +0 -1
  96. package/dist/cjs/listeners/unload-listener-manager.d.ts +0 -9
  97. package/dist/cjs/listeners/unload-listener-manager.d.ts.map +0 -1
  98. package/dist/cjs/listeners/unload-listener-manager.js +0 -31
  99. package/dist/cjs/listeners/unload-listener-manager.js.map +0 -1
  100. package/dist/cjs/listeners/visibility-listener-manager.d.ts +0 -10
  101. package/dist/cjs/listeners/visibility-listener-manager.d.ts.map +0 -1
  102. package/dist/cjs/listeners/visibility-listener-manager.js +0 -48
  103. package/dist/cjs/listeners/visibility-listener-manager.js.map +0 -1
  104. package/dist/cjs/managers/event.manager.d.ts +0 -62
  105. package/dist/cjs/managers/event.manager.d.ts.map +0 -1
  106. package/dist/cjs/managers/event.manager.js +0 -508
  107. package/dist/cjs/managers/event.manager.js.map +0 -1
  108. package/dist/cjs/managers/sender.manager.d.ts +0 -32
  109. package/dist/cjs/managers/sender.manager.d.ts.map +0 -1
  110. package/dist/cjs/managers/sender.manager.js +0 -271
  111. package/dist/cjs/managers/sender.manager.js.map +0 -1
  112. package/dist/cjs/managers/session.manager.d.ts +0 -40
  113. package/dist/cjs/managers/session.manager.d.ts.map +0 -1
  114. package/dist/cjs/managers/session.manager.js +0 -282
  115. package/dist/cjs/managers/session.manager.js.map +0 -1
  116. package/dist/cjs/managers/state.manager.d.ts +0 -9
  117. package/dist/cjs/managers/state.manager.d.ts.map +0 -1
  118. package/dist/cjs/managers/state.manager.js +0 -27
  119. package/dist/cjs/managers/state.manager.js.map +0 -1
  120. package/dist/cjs/managers/storage.manager.d.ts +0 -60
  121. package/dist/cjs/managers/storage.manager.d.ts.map +0 -1
  122. package/dist/cjs/managers/storage.manager.js +0 -277
  123. package/dist/cjs/managers/storage.manager.js.map +0 -1
  124. package/dist/cjs/managers/user.manager.d.ts +0 -17
  125. package/dist/cjs/managers/user.manager.d.ts.map +0 -1
  126. package/dist/cjs/managers/user.manager.js +0 -31
  127. package/dist/cjs/managers/user.manager.js.map +0 -1
  128. package/dist/cjs/public-api.d.ts +0 -11
  129. package/dist/cjs/public-api.d.ts.map +0 -1
  130. package/dist/cjs/public-api.js +0 -32
  131. package/dist/cjs/public-api.js.map +0 -1
  132. package/dist/cjs/test-bridge.d.ts +0 -47
  133. package/dist/cjs/test-bridge.d.ts.map +0 -1
  134. package/dist/cjs/test-bridge.js +0 -165
  135. package/dist/cjs/test-bridge.js.map +0 -1
  136. package/dist/cjs/types/common.types.d.ts +0 -6
  137. package/dist/cjs/types/common.types.d.ts.map +0 -1
  138. package/dist/cjs/types/common.types.js +0 -3
  139. package/dist/cjs/types/common.types.js.map +0 -1
  140. package/dist/cjs/types/config.types.d.ts +0 -49
  141. package/dist/cjs/types/config.types.d.ts.map +0 -1
  142. package/dist/cjs/types/config.types.js +0 -9
  143. package/dist/cjs/types/config.types.js.map +0 -1
  144. package/dist/cjs/types/device.types.d.ts +0 -7
  145. package/dist/cjs/types/device.types.d.ts.map +0 -1
  146. package/dist/cjs/types/device.types.js +0 -11
  147. package/dist/cjs/types/device.types.js.map +0 -1
  148. package/dist/cjs/types/emitter.types.d.ts +0 -12
  149. package/dist/cjs/types/emitter.types.d.ts.map +0 -1
  150. package/dist/cjs/types/emitter.types.js +0 -9
  151. package/dist/cjs/types/emitter.types.js.map +0 -1
  152. package/dist/cjs/types/error.types.d.ts +0 -12
  153. package/dist/cjs/types/error.types.d.ts.map +0 -1
  154. package/dist/cjs/types/error.types.js +0 -23
  155. package/dist/cjs/types/error.types.js.map +0 -1
  156. package/dist/cjs/types/event.types.d.ts +0 -235
  157. package/dist/cjs/types/event.types.d.ts.map +0 -1
  158. package/dist/cjs/types/event.types.js +0 -48
  159. package/dist/cjs/types/event.types.js.map +0 -1
  160. package/dist/cjs/types/index.d.ts +0 -17
  161. package/dist/cjs/types/index.d.ts.map +0 -1
  162. package/dist/cjs/types/index.js +0 -33
  163. package/dist/cjs/types/index.js.map +0 -1
  164. package/dist/cjs/types/log.types.d.ts +0 -5
  165. package/dist/cjs/types/log.types.d.ts.map +0 -1
  166. package/dist/cjs/types/log.types.js +0 -3
  167. package/dist/cjs/types/log.types.js.map +0 -1
  168. package/dist/cjs/types/mode.types.d.ts +0 -7
  169. package/dist/cjs/types/mode.types.d.ts.map +0 -1
  170. package/dist/cjs/types/mode.types.js +0 -11
  171. package/dist/cjs/types/mode.types.js.map +0 -1
  172. package/dist/cjs/types/queue.types.d.ts +0 -19
  173. package/dist/cjs/types/queue.types.d.ts.map +0 -1
  174. package/dist/cjs/types/queue.types.js +0 -3
  175. package/dist/cjs/types/queue.types.js.map +0 -1
  176. package/dist/cjs/types/scroll.types.d.ts +0 -16
  177. package/dist/cjs/types/scroll.types.d.ts.map +0 -1
  178. package/dist/cjs/types/scroll.types.js +0 -12
  179. package/dist/cjs/types/scroll.types.js.map +0 -1
  180. package/dist/cjs/types/session.types.d.ts +0 -2
  181. package/dist/cjs/types/session.types.d.ts.map +0 -1
  182. package/dist/cjs/types/session.types.js +0 -3
  183. package/dist/cjs/types/session.types.js.map +0 -1
  184. package/dist/cjs/types/state.types.d.ts +0 -16
  185. package/dist/cjs/types/state.types.d.ts.map +0 -1
  186. package/dist/cjs/types/state.types.js +0 -3
  187. package/dist/cjs/types/state.types.js.map +0 -1
  188. package/dist/cjs/types/test-bridge.types.d.ts +0 -40
  189. package/dist/cjs/types/test-bridge.types.d.ts.map +0 -1
  190. package/dist/cjs/types/test-bridge.types.js +0 -3
  191. package/dist/cjs/types/test-bridge.types.js.map +0 -1
  192. package/dist/cjs/types/validation-error.types.d.ts +0 -44
  193. package/dist/cjs/types/validation-error.types.d.ts.map +0 -1
  194. package/dist/cjs/types/validation-error.types.js +0 -70
  195. package/dist/cjs/types/validation-error.types.js.map +0 -1
  196. package/dist/cjs/types/viewport.types.d.ts +0 -55
  197. package/dist/cjs/types/viewport.types.d.ts.map +0 -1
  198. package/dist/cjs/types/viewport.types.js +0 -3
  199. package/dist/cjs/types/viewport.types.js.map +0 -1
  200. package/dist/cjs/types/window.types.d.ts +0 -16
  201. package/dist/cjs/types/window.types.d.ts.map +0 -1
  202. package/dist/cjs/types/window.types.js +0 -3
  203. package/dist/cjs/types/window.types.js.map +0 -1
  204. package/dist/cjs/utils/browser/device-detector.utils.d.ts +0 -7
  205. package/dist/cjs/utils/browser/device-detector.utils.d.ts.map +0 -1
  206. package/dist/cjs/utils/browser/device-detector.utils.js +0 -50
  207. package/dist/cjs/utils/browser/device-detector.utils.js.map +0 -1
  208. package/dist/cjs/utils/browser/index.d.ts +0 -4
  209. package/dist/cjs/utils/browser/index.d.ts.map +0 -1
  210. package/dist/cjs/utils/browser/index.js +0 -20
  211. package/dist/cjs/utils/browser/index.js.map +0 -1
  212. package/dist/cjs/utils/browser/qa-mode.utils.d.ts +0 -14
  213. package/dist/cjs/utils/browser/qa-mode.utils.d.ts.map +0 -1
  214. package/dist/cjs/utils/browser/qa-mode.utils.js +0 -44
  215. package/dist/cjs/utils/browser/qa-mode.utils.js.map +0 -1
  216. package/dist/cjs/utils/browser/utm-params.utils.d.ts +0 -7
  217. package/dist/cjs/utils/browser/utm-params.utils.d.ts.map +0 -1
  218. package/dist/cjs/utils/browser/utm-params.utils.js +0 -23
  219. package/dist/cjs/utils/browser/utm-params.utils.js.map +0 -1
  220. package/dist/cjs/utils/data/index.d.ts +0 -2
  221. package/dist/cjs/utils/data/index.d.ts.map +0 -1
  222. package/dist/cjs/utils/data/index.js +0 -18
  223. package/dist/cjs/utils/data/index.js.map +0 -1
  224. package/dist/cjs/utils/data/uuid.utils.d.ts +0 -19
  225. package/dist/cjs/utils/data/uuid.utils.d.ts.map +0 -1
  226. package/dist/cjs/utils/data/uuid.utils.js +0 -57
  227. package/dist/cjs/utils/data/uuid.utils.js.map +0 -1
  228. package/dist/cjs/utils/emitter.utils.d.ts +0 -9
  229. package/dist/cjs/utils/emitter.utils.d.ts.map +0 -1
  230. package/dist/cjs/utils/emitter.utils.js +0 -36
  231. package/dist/cjs/utils/emitter.utils.js.map +0 -1
  232. package/dist/cjs/utils/index.d.ts +0 -8
  233. package/dist/cjs/utils/index.d.ts.map +0 -1
  234. package/dist/cjs/utils/index.js +0 -24
  235. package/dist/cjs/utils/index.js.map +0 -1
  236. package/dist/cjs/utils/logging.utils.d.ts +0 -22
  237. package/dist/cjs/utils/logging.utils.d.ts.map +0 -1
  238. package/dist/cjs/utils/logging.utils.js +0 -87
  239. package/dist/cjs/utils/logging.utils.js.map +0 -1
  240. package/dist/cjs/utils/network/index.d.ts +0 -2
  241. package/dist/cjs/utils/network/index.d.ts.map +0 -1
  242. package/dist/cjs/utils/network/index.js +0 -18
  243. package/dist/cjs/utils/network/index.js.map +0 -1
  244. package/dist/cjs/utils/network/url.utils.d.ts +0 -16
  245. package/dist/cjs/utils/network/url.utils.d.ts.map +0 -1
  246. package/dist/cjs/utils/network/url.utils.js +0 -92
  247. package/dist/cjs/utils/network/url.utils.js.map +0 -1
  248. package/dist/cjs/utils/security/index.d.ts +0 -2
  249. package/dist/cjs/utils/security/index.d.ts.map +0 -1
  250. package/dist/cjs/utils/security/index.js +0 -18
  251. package/dist/cjs/utils/security/index.js.map +0 -1
  252. package/dist/cjs/utils/security/sanitize.utils.d.ts +0 -14
  253. package/dist/cjs/utils/security/sanitize.utils.d.ts.map +0 -1
  254. package/dist/cjs/utils/security/sanitize.utils.js +0 -123
  255. package/dist/cjs/utils/security/sanitize.utils.js.map +0 -1
  256. package/dist/cjs/utils/validations/config-validations.utils.d.ts +0 -19
  257. package/dist/cjs/utils/validations/config-validations.utils.d.ts.map +0 -1
  258. package/dist/cjs/utils/validations/config-validations.utils.js +0 -236
  259. package/dist/cjs/utils/validations/config-validations.utils.js.map +0 -1
  260. package/dist/cjs/utils/validations/event-validations.utils.d.ts +0 -13
  261. package/dist/cjs/utils/validations/event-validations.utils.d.ts.map +0 -1
  262. package/dist/cjs/utils/validations/event-validations.utils.js +0 -37
  263. package/dist/cjs/utils/validations/event-validations.utils.js.map +0 -1
  264. package/dist/cjs/utils/validations/index.d.ts +0 -5
  265. package/dist/cjs/utils/validations/index.d.ts.map +0 -1
  266. package/dist/cjs/utils/validations/index.js +0 -21
  267. package/dist/cjs/utils/validations/index.js.map +0 -1
  268. package/dist/cjs/utils/validations/metadata-validations.utils.d.ts +0 -23
  269. package/dist/cjs/utils/validations/metadata-validations.utils.d.ts.map +0 -1
  270. package/dist/cjs/utils/validations/metadata-validations.utils.js +0 -153
  271. package/dist/cjs/utils/validations/metadata-validations.utils.js.map +0 -1
  272. package/dist/cjs/utils/validations/type-guards.utils.d.ts +0 -9
  273. package/dist/cjs/utils/validations/type-guards.utils.d.ts.map +0 -1
  274. package/dist/cjs/utils/validations/type-guards.utils.js +0 -90
  275. package/dist/cjs/utils/validations/type-guards.utils.js.map +0 -1
  276. package/dist/esm/api.d.ts +0 -19
  277. package/dist/esm/api.d.ts.map +0 -1
  278. package/dist/esm/api.js +0 -173
  279. package/dist/esm/api.js.map +0 -1
  280. package/dist/esm/app.constants.d.ts +0 -80
  281. package/dist/esm/app.constants.d.ts.map +0 -1
  282. package/dist/esm/app.constants.js +0 -82
  283. package/dist/esm/app.constants.js.map +0 -1
  284. package/dist/esm/app.d.ts +0 -43
  285. package/dist/esm/app.d.ts.map +0 -1
  286. package/dist/esm/app.js +0 -161
  287. package/dist/esm/app.js.map +0 -1
  288. package/dist/esm/constants/config.constants.d.ts +0 -109
  289. package/dist/esm/constants/config.constants.d.ts.map +0 -1
  290. package/dist/esm/constants/config.constants.js +0 -212
  291. package/dist/esm/constants/config.constants.js.map +0 -1
  292. package/dist/esm/constants/error.constants.d.ts +0 -56
  293. package/dist/esm/constants/error.constants.d.ts.map +0 -1
  294. package/dist/esm/constants/error.constants.js +0 -86
  295. package/dist/esm/constants/error.constants.js.map +0 -1
  296. package/dist/esm/constants/index.d.ts +0 -5
  297. package/dist/esm/constants/index.d.ts.map +0 -1
  298. package/dist/esm/constants/index.js +0 -5
  299. package/dist/esm/constants/index.js.map +0 -1
  300. package/dist/esm/constants/performance.constants.d.ts +0 -29
  301. package/dist/esm/constants/performance.constants.d.ts.map +0 -1
  302. package/dist/esm/constants/performance.constants.js +0 -41
  303. package/dist/esm/constants/performance.constants.js.map +0 -1
  304. package/dist/esm/constants/storage.constants.d.ts +0 -11
  305. package/dist/esm/constants/storage.constants.d.ts.map +0 -1
  306. package/dist/esm/constants/storage.constants.js +0 -13
  307. package/dist/esm/constants/storage.constants.js.map +0 -1
  308. package/dist/esm/handlers/click.handler.d.ts +0 -36
  309. package/dist/esm/handlers/click.handler.d.ts.map +0 -1
  310. package/dist/esm/handlers/click.handler.js +0 -259
  311. package/dist/esm/handlers/click.handler.js.map +0 -1
  312. package/dist/esm/handlers/error.handler.d.ts +0 -28
  313. package/dist/esm/handlers/error.handler.d.ts.map +0 -1
  314. package/dist/esm/handlers/error.handler.js +0 -164
  315. package/dist/esm/handlers/error.handler.js.map +0 -1
  316. package/dist/esm/handlers/page-view.handler.d.ts +0 -17
  317. package/dist/esm/handlers/page-view.handler.d.ts.map +0 -1
  318. package/dist/esm/handlers/page-view.handler.js +0 -96
  319. package/dist/esm/handlers/page-view.handler.js.map +0 -1
  320. package/dist/esm/handlers/performance.handler.d.ts +0 -23
  321. package/dist/esm/handlers/performance.handler.d.ts.map +0 -1
  322. package/dist/esm/handlers/performance.handler.js +0 -237
  323. package/dist/esm/handlers/performance.handler.js.map +0 -1
  324. package/dist/esm/handlers/scroll.handler.d.ts +0 -40
  325. package/dist/esm/handlers/scroll.handler.d.ts.map +0 -1
  326. package/dist/esm/handlers/scroll.handler.js +0 -323
  327. package/dist/esm/handlers/scroll.handler.js.map +0 -1
  328. package/dist/esm/handlers/session.handler.d.ts +0 -16
  329. package/dist/esm/handlers/session.handler.d.ts.map +0 -1
  330. package/dist/esm/handlers/session.handler.js +0 -70
  331. package/dist/esm/handlers/session.handler.js.map +0 -1
  332. package/dist/esm/handlers/viewport.handler.d.ts +0 -44
  333. package/dist/esm/handlers/viewport.handler.d.ts.map +0 -1
  334. package/dist/esm/handlers/viewport.handler.js +0 -282
  335. package/dist/esm/handlers/viewport.handler.js.map +0 -1
  336. package/dist/esm/integrations/google-analytics.integration.d.ts +0 -18
  337. package/dist/esm/integrations/google-analytics.integration.d.ts.map +0 -1
  338. package/dist/esm/integrations/google-analytics.integration.js +0 -86
  339. package/dist/esm/integrations/google-analytics.integration.js.map +0 -1
  340. package/dist/esm/listeners/activity-listener-manager.d.ts +0 -9
  341. package/dist/esm/listeners/activity-listener-manager.d.ts.map +0 -1
  342. package/dist/esm/listeners/activity-listener-manager.js +0 -29
  343. package/dist/esm/listeners/activity-listener-manager.js.map +0 -1
  344. package/dist/esm/listeners/index.d.ts +0 -7
  345. package/dist/esm/listeners/index.d.ts.map +0 -1
  346. package/dist/esm/listeners/index.js +0 -6
  347. package/dist/esm/listeners/index.js.map +0 -1
  348. package/dist/esm/listeners/input-listener-managers.d.ts +0 -25
  349. package/dist/esm/listeners/input-listener-managers.d.ts.map +0 -1
  350. package/dist/esm/listeners/input-listener-managers.js +0 -45
  351. package/dist/esm/listeners/input-listener-managers.js.map +0 -1
  352. package/dist/esm/listeners/listeners.types.d.ts +0 -5
  353. package/dist/esm/listeners/listeners.types.d.ts.map +0 -1
  354. package/dist/esm/listeners/listeners.types.js +0 -2
  355. package/dist/esm/listeners/listeners.types.js.map +0 -1
  356. package/dist/esm/listeners/touch-listener-manager.d.ts +0 -9
  357. package/dist/esm/listeners/touch-listener-manager.d.ts.map +0 -1
  358. package/dist/esm/listeners/touch-listener-manager.js +0 -31
  359. package/dist/esm/listeners/touch-listener-manager.js.map +0 -1
  360. package/dist/esm/listeners/unload-listener-manager.d.ts +0 -9
  361. package/dist/esm/listeners/unload-listener-manager.d.ts.map +0 -1
  362. package/dist/esm/listeners/unload-listener-manager.js +0 -27
  363. package/dist/esm/listeners/unload-listener-manager.js.map +0 -1
  364. package/dist/esm/listeners/visibility-listener-manager.d.ts +0 -10
  365. package/dist/esm/listeners/visibility-listener-manager.d.ts.map +0 -1
  366. package/dist/esm/listeners/visibility-listener-manager.js +0 -44
  367. package/dist/esm/listeners/visibility-listener-manager.js.map +0 -1
  368. package/dist/esm/managers/event.manager.d.ts +0 -62
  369. package/dist/esm/managers/event.manager.d.ts.map +0 -1
  370. package/dist/esm/managers/event.manager.js +0 -504
  371. package/dist/esm/managers/event.manager.js.map +0 -1
  372. package/dist/esm/managers/sender.manager.d.ts +0 -32
  373. package/dist/esm/managers/sender.manager.d.ts.map +0 -1
  374. package/dist/esm/managers/sender.manager.js +0 -267
  375. package/dist/esm/managers/sender.manager.js.map +0 -1
  376. package/dist/esm/managers/session.manager.d.ts +0 -40
  377. package/dist/esm/managers/session.manager.d.ts.map +0 -1
  378. package/dist/esm/managers/session.manager.js +0 -278
  379. package/dist/esm/managers/session.manager.js.map +0 -1
  380. package/dist/esm/managers/state.manager.d.ts +0 -9
  381. package/dist/esm/managers/state.manager.d.ts.map +0 -1
  382. package/dist/esm/managers/state.manager.js +0 -21
  383. package/dist/esm/managers/state.manager.js.map +0 -1
  384. package/dist/esm/managers/storage.manager.d.ts +0 -60
  385. package/dist/esm/managers/storage.manager.d.ts.map +0 -1
  386. package/dist/esm/managers/storage.manager.js +0 -273
  387. package/dist/esm/managers/storage.manager.js.map +0 -1
  388. package/dist/esm/managers/user.manager.d.ts +0 -17
  389. package/dist/esm/managers/user.manager.d.ts.map +0 -1
  390. package/dist/esm/managers/user.manager.js +0 -27
  391. package/dist/esm/managers/user.manager.js.map +0 -1
  392. package/dist/esm/public-api.d.ts +0 -11
  393. package/dist/esm/public-api.d.ts.map +0 -1
  394. package/dist/esm/public-api.js +0 -15
  395. package/dist/esm/public-api.js.map +0 -1
  396. package/dist/esm/test-bridge.d.ts +0 -47
  397. package/dist/esm/test-bridge.d.ts.map +0 -1
  398. package/dist/esm/test-bridge.js +0 -161
  399. package/dist/esm/test-bridge.js.map +0 -1
  400. package/dist/esm/types/common.types.d.ts +0 -6
  401. package/dist/esm/types/common.types.d.ts.map +0 -1
  402. package/dist/esm/types/common.types.js +0 -2
  403. package/dist/esm/types/common.types.js.map +0 -1
  404. package/dist/esm/types/config.types.d.ts +0 -49
  405. package/dist/esm/types/config.types.d.ts.map +0 -1
  406. package/dist/esm/types/config.types.js +0 -6
  407. package/dist/esm/types/config.types.js.map +0 -1
  408. package/dist/esm/types/device.types.d.ts +0 -7
  409. package/dist/esm/types/device.types.d.ts.map +0 -1
  410. package/dist/esm/types/device.types.js +0 -8
  411. package/dist/esm/types/device.types.js.map +0 -1
  412. package/dist/esm/types/emitter.types.d.ts +0 -12
  413. package/dist/esm/types/emitter.types.d.ts.map +0 -1
  414. package/dist/esm/types/emitter.types.js +0 -6
  415. package/dist/esm/types/emitter.types.js.map +0 -1
  416. package/dist/esm/types/error.types.d.ts +0 -12
  417. package/dist/esm/types/error.types.d.ts.map +0 -1
  418. package/dist/esm/types/error.types.js +0 -19
  419. package/dist/esm/types/error.types.js.map +0 -1
  420. package/dist/esm/types/event.types.d.ts +0 -235
  421. package/dist/esm/types/event.types.d.ts.map +0 -1
  422. package/dist/esm/types/event.types.js +0 -45
  423. package/dist/esm/types/event.types.js.map +0 -1
  424. package/dist/esm/types/index.d.ts +0 -17
  425. package/dist/esm/types/index.d.ts.map +0 -1
  426. package/dist/esm/types/index.js +0 -17
  427. package/dist/esm/types/index.js.map +0 -1
  428. package/dist/esm/types/log.types.d.ts +0 -5
  429. package/dist/esm/types/log.types.d.ts.map +0 -1
  430. package/dist/esm/types/log.types.js +0 -2
  431. package/dist/esm/types/log.types.js.map +0 -1
  432. package/dist/esm/types/mode.types.d.ts +0 -7
  433. package/dist/esm/types/mode.types.d.ts.map +0 -1
  434. package/dist/esm/types/mode.types.js +0 -8
  435. package/dist/esm/types/mode.types.js.map +0 -1
  436. package/dist/esm/types/queue.types.d.ts +0 -19
  437. package/dist/esm/types/queue.types.d.ts.map +0 -1
  438. package/dist/esm/types/queue.types.js +0 -2
  439. package/dist/esm/types/queue.types.js.map +0 -1
  440. package/dist/esm/types/scroll.types.d.ts +0 -16
  441. package/dist/esm/types/scroll.types.d.ts.map +0 -1
  442. package/dist/esm/types/scroll.types.js +0 -8
  443. package/dist/esm/types/scroll.types.js.map +0 -1
  444. package/dist/esm/types/session.types.d.ts +0 -2
  445. package/dist/esm/types/session.types.d.ts.map +0 -1
  446. package/dist/esm/types/session.types.js +0 -2
  447. package/dist/esm/types/session.types.js.map +0 -1
  448. package/dist/esm/types/state.types.d.ts +0 -16
  449. package/dist/esm/types/state.types.d.ts.map +0 -1
  450. package/dist/esm/types/state.types.js +0 -2
  451. package/dist/esm/types/state.types.js.map +0 -1
  452. package/dist/esm/types/test-bridge.types.d.ts +0 -40
  453. package/dist/esm/types/test-bridge.types.d.ts.map +0 -1
  454. package/dist/esm/types/test-bridge.types.js +0 -2
  455. package/dist/esm/types/test-bridge.types.js.map +0 -1
  456. package/dist/esm/types/validation-error.types.d.ts +0 -44
  457. package/dist/esm/types/validation-error.types.d.ts.map +0 -1
  458. package/dist/esm/types/validation-error.types.js +0 -61
  459. package/dist/esm/types/validation-error.types.js.map +0 -1
  460. package/dist/esm/types/viewport.types.d.ts +0 -55
  461. package/dist/esm/types/viewport.types.d.ts.map +0 -1
  462. package/dist/esm/types/viewport.types.js +0 -2
  463. package/dist/esm/types/viewport.types.js.map +0 -1
  464. package/dist/esm/types/window.types.d.ts +0 -16
  465. package/dist/esm/types/window.types.d.ts.map +0 -1
  466. package/dist/esm/types/window.types.js +0 -2
  467. package/dist/esm/types/window.types.js.map +0 -1
  468. package/dist/esm/utils/browser/device-detector.utils.d.ts +0 -7
  469. package/dist/esm/utils/browser/device-detector.utils.d.ts.map +0 -1
  470. package/dist/esm/utils/browser/device-detector.utils.js +0 -46
  471. package/dist/esm/utils/browser/device-detector.utils.js.map +0 -1
  472. package/dist/esm/utils/browser/index.d.ts +0 -4
  473. package/dist/esm/utils/browser/index.d.ts.map +0 -1
  474. package/dist/esm/utils/browser/index.js +0 -4
  475. package/dist/esm/utils/browser/index.js.map +0 -1
  476. package/dist/esm/utils/browser/qa-mode.utils.d.ts +0 -14
  477. package/dist/esm/utils/browser/qa-mode.utils.d.ts.map +0 -1
  478. package/dist/esm/utils/browser/qa-mode.utils.js +0 -40
  479. package/dist/esm/utils/browser/qa-mode.utils.js.map +0 -1
  480. package/dist/esm/utils/browser/utm-params.utils.d.ts +0 -7
  481. package/dist/esm/utils/browser/utm-params.utils.d.ts.map +0 -1
  482. package/dist/esm/utils/browser/utm-params.utils.js +0 -19
  483. package/dist/esm/utils/browser/utm-params.utils.js.map +0 -1
  484. package/dist/esm/utils/data/index.d.ts +0 -2
  485. package/dist/esm/utils/data/index.d.ts.map +0 -1
  486. package/dist/esm/utils/data/index.js +0 -2
  487. package/dist/esm/utils/data/index.js.map +0 -1
  488. package/dist/esm/utils/data/uuid.utils.d.ts +0 -19
  489. package/dist/esm/utils/data/uuid.utils.d.ts.map +0 -1
  490. package/dist/esm/utils/data/uuid.utils.js +0 -52
  491. package/dist/esm/utils/data/uuid.utils.js.map +0 -1
  492. package/dist/esm/utils/emitter.utils.d.ts +0 -9
  493. package/dist/esm/utils/emitter.utils.d.ts.map +0 -1
  494. package/dist/esm/utils/emitter.utils.js +0 -32
  495. package/dist/esm/utils/emitter.utils.js.map +0 -1
  496. package/dist/esm/utils/index.d.ts +0 -8
  497. package/dist/esm/utils/index.d.ts.map +0 -1
  498. package/dist/esm/utils/index.js +0 -8
  499. package/dist/esm/utils/index.js.map +0 -1
  500. package/dist/esm/utils/logging.utils.d.ts +0 -22
  501. package/dist/esm/utils/logging.utils.d.ts.map +0 -1
  502. package/dist/esm/utils/logging.utils.js +0 -82
  503. package/dist/esm/utils/logging.utils.js.map +0 -1
  504. package/dist/esm/utils/network/index.d.ts +0 -2
  505. package/dist/esm/utils/network/index.d.ts.map +0 -1
  506. package/dist/esm/utils/network/index.js +0 -2
  507. package/dist/esm/utils/network/index.js.map +0 -1
  508. package/dist/esm/utils/network/url.utils.d.ts +0 -16
  509. package/dist/esm/utils/network/url.utils.d.ts.map +0 -1
  510. package/dist/esm/utils/network/url.utils.js +0 -87
  511. package/dist/esm/utils/network/url.utils.js.map +0 -1
  512. package/dist/esm/utils/security/index.d.ts +0 -2
  513. package/dist/esm/utils/security/index.d.ts.map +0 -1
  514. package/dist/esm/utils/security/index.js +0 -2
  515. package/dist/esm/utils/security/index.js.map +0 -1
  516. package/dist/esm/utils/security/sanitize.utils.d.ts +0 -14
  517. package/dist/esm/utils/security/sanitize.utils.d.ts.map +0 -1
  518. package/dist/esm/utils/security/sanitize.utils.js +0 -118
  519. package/dist/esm/utils/security/sanitize.utils.js.map +0 -1
  520. package/dist/esm/utils/validations/config-validations.utils.d.ts +0 -19
  521. package/dist/esm/utils/validations/config-validations.utils.d.ts.map +0 -1
  522. package/dist/esm/utils/validations/config-validations.utils.js +0 -231
  523. package/dist/esm/utils/validations/config-validations.utils.js.map +0 -1
  524. package/dist/esm/utils/validations/event-validations.utils.d.ts +0 -13
  525. package/dist/esm/utils/validations/event-validations.utils.d.ts.map +0 -1
  526. package/dist/esm/utils/validations/event-validations.utils.js +0 -33
  527. package/dist/esm/utils/validations/event-validations.utils.js.map +0 -1
  528. package/dist/esm/utils/validations/index.d.ts +0 -5
  529. package/dist/esm/utils/validations/index.d.ts.map +0 -1
  530. package/dist/esm/utils/validations/index.js +0 -5
  531. package/dist/esm/utils/validations/index.js.map +0 -1
  532. package/dist/esm/utils/validations/metadata-validations.utils.d.ts +0 -23
  533. package/dist/esm/utils/validations/metadata-validations.utils.d.ts.map +0 -1
  534. package/dist/esm/utils/validations/metadata-validations.utils.js +0 -148
  535. package/dist/esm/utils/validations/metadata-validations.utils.js.map +0 -1
  536. package/dist/esm/utils/validations/type-guards.utils.d.ts +0 -9
  537. package/dist/esm/utils/validations/type-guards.utils.d.ts.map +0 -1
  538. package/dist/esm/utils/validations/type-guards.utils.js +0 -86
  539. package/dist/esm/utils/validations/type-guards.utils.js.map +0 -1
@@ -1,6 +1,6 @@
1
- const jt = 120, Yt = 8192, Kt = 10, qt = 10, Zt = 20, Jt = 1;
2
- const er = 1e3, tr = 500, rr = 100;
3
- const v = "data-tlog", Ue = [
1
+ const Yt = 120, Kt = 8192, qt = 10, Zt = 10, Jt = 20, er = 1;
2
+ const tr = 1e3, rr = 500, nr = 100;
3
+ const A = "data-tlog", He = [
4
4
  "button",
5
5
  "a",
6
6
  'input[type="button"]',
@@ -32,7 +32,7 @@ const v = "data-tlog", Ue = [
32
32
  ".menu-item",
33
33
  "[data-testid]",
34
34
  '[tabindex="0"]'
35
- ], He = ["utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content"], xe = [
35
+ ], Ue = ["utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content"], xe = [
36
36
  "token",
37
37
  "auth",
38
38
  "key",
@@ -79,17 +79,17 @@ const h = {
79
79
  /<embed\b[^>]*>/gi,
80
80
  /<object\b[^<]*(?:(?!<\/object>)<[^<]*)*<\/object>/gi
81
81
  ];
82
- var q = /* @__PURE__ */ ((n) => (n.Localhost = "localhost:8080", n.Fail = "localhost:9999", n))(q || {}), w = /* @__PURE__ */ ((n) => (n.Mobile = "mobile", n.Tablet = "tablet", n.Desktop = "desktop", n.Unknown = "unknown", n))(w || {}), Z = /* @__PURE__ */ ((n) => (n.EVENT = "event", n.QUEUE = "queue", n))(Z || {});
82
+ var q = /* @__PURE__ */ ((n) => (n.Localhost = "localhost:8080", n.Fail = "localhost:9999", n))(q || {}), y = /* @__PURE__ */ ((n) => (n.Mobile = "mobile", n.Tablet = "tablet", n.Desktop = "desktop", n.Unknown = "unknown", n))(y || {}), Z = /* @__PURE__ */ ((n) => (n.EVENT = "event", n.QUEUE = "queue", n))(Z || {});
83
83
  class R extends Error {
84
84
  constructor(e, t) {
85
85
  super(e), this.statusCode = t, this.name = "PermanentError", Error.captureStackTrace && Error.captureStackTrace(this, R);
86
86
  }
87
87
  }
88
- var u = /* @__PURE__ */ ((n) => (n.PAGE_VIEW = "page_view", n.CLICK = "click", n.SCROLL = "scroll", n.SESSION_START = "session_start", n.SESSION_END = "session_end", n.CUSTOM = "custom", n.WEB_VITALS = "web_vitals", n.ERROR = "error", n.VIEWPORT_VISIBLE = "viewport_visible", n))(u || {}), H = /* @__PURE__ */ ((n) => (n.UP = "up", n.DOWN = "down", n))(H || {}), P = /* @__PURE__ */ ((n) => (n.JS_ERROR = "js_error", n.PROMISE_REJECTION = "promise_rejection", n))(P || {}), D = /* @__PURE__ */ ((n) => (n.QA = "qa", n))(D || {});
89
- function nr(n) {
88
+ var u = /* @__PURE__ */ ((n) => (n.PAGE_VIEW = "page_view", n.CLICK = "click", n.SCROLL = "scroll", n.SESSION_START = "session_start", n.SESSION_END = "session_end", n.CUSTOM = "custom", n.WEB_VITALS = "web_vitals", n.ERROR = "error", n.VIEWPORT_VISIBLE = "viewport_visible", n))(u || {}), U = /* @__PURE__ */ ((n) => (n.UP = "up", n.DOWN = "down", n))(U || {}), P = /* @__PURE__ */ ((n) => (n.JS_ERROR = "js_error", n.PROMISE_REJECTION = "promise_rejection", n))(P || {}), D = /* @__PURE__ */ ((n) => (n.QA = "qa", n))(D || {});
89
+ function sr(n) {
90
90
  return n.type === u.SCROLL && "scroll_data" in n && n.scroll_data.is_primary === !0;
91
91
  }
92
- function sr(n) {
92
+ function ir(n) {
93
93
  return n.type === u.SCROLL && "scroll_data" in n && n.scroll_data.is_primary === !1;
94
94
  }
95
95
  class V extends Error {
@@ -117,7 +117,7 @@ class M extends V {
117
117
  super(e, "INTEGRATION_INVALID", t);
118
118
  }
119
119
  }
120
- class ir extends V {
120
+ class or extends V {
121
121
  constructor(e, t, r = "runtime") {
122
122
  super(e, "INITIALIZATION_TIMEOUT", r), this.timeoutMs = t;
123
123
  }
@@ -153,21 +153,21 @@ const Xe = () => {
153
153
  try {
154
154
  const n = navigator;
155
155
  if (n.userAgentData && typeof n.userAgentData.mobile == "boolean")
156
- return n.userAgentData.platform && /ipad|tablet/i.test(n.userAgentData.platform) ? w.Tablet : n.userAgentData.mobile ? w.Mobile : w.Desktop;
156
+ return n.userAgentData.platform && /ipad|tablet/i.test(n.userAgentData.platform) ? y.Tablet : n.userAgentData.mobile ? y.Mobile : y.Desktop;
157
157
  Xe();
158
158
  const e = window.innerWidth, t = J?.matches ?? !1, r = we?.matches ?? !1, s = "ontouchstart" in window || navigator.maxTouchPoints > 0, i = navigator.userAgent.toLowerCase(), o = /mobile|android|iphone|ipod|blackberry|iemobile|opera mini/.test(i), l = /tablet|ipad|android(?!.*mobile)/.test(i);
159
- return e <= 767 || o && s ? w.Mobile : e >= 768 && e <= 1024 || l || t && r && s ? w.Tablet : w.Desktop;
159
+ return e <= 767 || o && s ? y.Mobile : e >= 768 && e <= 1024 || l || t && r && s ? y.Tablet : y.Desktop;
160
160
  } catch (n) {
161
- return a("warn", "Device detection failed, defaulting to desktop", { error: n }), w.Desktop;
161
+ return a("warn", "Device detection failed, defaulting to desktop", { error: n }), y.Desktop;
162
162
  }
163
- }, y = "tlog", fe = `${y}:qa_mode`, ze = `${y}:uid`, Qe = (n) => n ? `${y}:${n}:queue` : `${y}:queue`, je = (n) => n ? `${y}:${n}:session` : `${y}:session`, Ye = (n) => n ? `${y}:${n}:broadcast` : `${y}:broadcast`, ye = {
163
+ }, L = "tlog", fe = `${L}:qa_mode`, ze = `${L}:uid`, Qe = (n) => n ? `${L}:${n}:queue` : `${L}:queue`, je = (n) => n ? `${L}:${n}:session` : `${L}:session`, Ye = (n) => n ? `${L}:${n}:broadcast` : `${L}:broadcast`, ye = {
164
164
  LCP: 4e3,
165
165
  FCP: 1800,
166
166
  CLS: 0.25,
167
167
  INP: 200,
168
168
  TTFB: 800,
169
169
  LONG_TASK: 50
170
- }, Ke = 1e3, le = [
170
+ }, Ke = 1e3, qe = 50, le = [
171
171
  // Email addresses
172
172
  /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/gi,
173
173
  // US Phone numbers (various formats)
@@ -182,10 +182,10 @@ const Xe = () => {
182
182
  /Bearer\s+[A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)?(?:\.[A-Za-z0-9_-]+)?/gi,
183
183
  // Passwords in connection strings (protocol://user:password@host)
184
184
  /:\/\/[^:/]+:([^@]+)@/gi
185
- ], Ee = 500, ge = 5e3, x = 50, qe = x * 2, Le = 1, Ze = 1e3, Je = 10, me = 5e3, et = 6e4, Se = "tlog_mode", tt = "qa", rt = () => {
185
+ ], Ee = 500, ge = 5e3, x = 50, Ze = x * 2, Le = 1, Je = 1e3, et = 10, me = 5e3, tt = 6e4, Se = "tlog_mode", rt = "qa", nt = () => {
186
186
  if (sessionStorage.getItem(fe) === "true")
187
187
  return !0;
188
- const e = new URLSearchParams(window.location.search), r = e.get(Se) === tt;
188
+ const e = new URLSearchParams(window.location.search), r = e.get(Se) === rt;
189
189
  if (r) {
190
190
  sessionStorage.setItem(fe, "true"), e.delete(Se);
191
191
  const s = e.toString(), i = `${window.location.pathname}${s ? "?" + s : ""}${window.location.hash}`;
@@ -200,19 +200,19 @@ const Xe = () => {
200
200
  );
201
201
  }
202
202
  return r;
203
- }, _e = () => {
203
+ }, Te = () => {
204
204
  const n = new URLSearchParams(window.location.search), e = {};
205
- return He.forEach((r) => {
205
+ return Ue.forEach((r) => {
206
206
  const s = n.get(r);
207
207
  if (s) {
208
208
  const i = r.split("utm_")[1];
209
209
  e[i] = s;
210
210
  }
211
211
  }), Object.keys(e).length ? e : void 0;
212
- }, nt = () => typeof crypto < "u" && crypto.randomUUID ? crypto.randomUUID() : "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (n) => {
212
+ }, st = () => typeof crypto < "u" && crypto.randomUUID ? crypto.randomUUID() : "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (n) => {
213
213
  const e = Math.random() * 16 | 0;
214
214
  return (n === "x" ? e : e & 3 | 8).toString(16);
215
- }), st = () => {
215
+ }), it = () => {
216
216
  const n = Date.now();
217
217
  let e = "";
218
218
  try {
@@ -223,32 +223,43 @@ const Xe = () => {
223
223
  } catch {
224
224
  }
225
225
  return e || (e = Math.floor(Math.random() * 4294967295).toString(16).padStart(8, "0")), `${n}-${e}`;
226
- }, Te = (n, e = !1) => {
226
+ }, _e = (n, e = !1) => {
227
227
  try {
228
228
  const t = new URL(n), r = t.protocol === "https:", s = t.protocol === "http:";
229
229
  return r || e && s;
230
230
  } catch {
231
231
  return !1;
232
232
  }
233
- }, it = (n) => {
234
- if (n.integrations?.tracelog?.projectId) {
235
- const s = new URL(window.location.href).hostname.split(".");
236
- if (s.length === 0)
237
- throw new Error("Invalid URL");
238
- const i = n.integrations.tracelog.projectId, o = s.slice(-2).join("."), l = `https://${i}.${o}/collect`;
239
- if (!Te(l))
240
- throw new Error("Invalid URL");
241
- return l;
242
- }
233
+ }, ot = (n) => {
234
+ if (n.integrations?.tracelog?.projectId)
235
+ try {
236
+ const r = new URL(window.location.href).hostname;
237
+ if (!r || typeof r != "string")
238
+ throw new Error("Invalid hostname");
239
+ const s = r.split(".");
240
+ if (!s || !Array.isArray(s) || s.length === 0 || s.length === 1 && s[0] === "")
241
+ throw new Error("Invalid hostname structure");
242
+ const i = n.integrations.tracelog.projectId, o = s.slice(-2).join(".");
243
+ if (!o)
244
+ throw new Error("Invalid domain");
245
+ const l = `https://${i}.${o}/collect`;
246
+ if (!_e(l))
247
+ throw new Error("Invalid URL");
248
+ return l;
249
+ } catch (t) {
250
+ throw new Error(`Invalid URL configuration: ${t instanceof Error ? t.message : String(t)}`);
251
+ }
243
252
  const e = n.integrations?.custom?.collectApiUrl;
244
253
  if (e) {
245
254
  const t = n.integrations?.custom?.allowHttp ?? !1;
246
- if (!Te(e, t))
255
+ if (!_e(e, t))
247
256
  throw new Error("Invalid URL");
248
257
  return e;
249
258
  }
250
259
  return "";
251
260
  }, ee = (n, e = []) => {
261
+ if (!n || typeof n != "string")
262
+ return a("warn", "Invalid URL provided to normalizeUrl", { data: { url: String(n) } }), n || "";
252
263
  try {
253
264
  const t = new URL(n), r = t.searchParams, s = [.../* @__PURE__ */ new Set([...xe, ...e])];
254
265
  let i = !1;
@@ -257,7 +268,8 @@ const Xe = () => {
257
268
  r.has(c) && (r.delete(c), i = !0, o.push(c));
258
269
  }), !i && n.includes("?") ? n : (t.search = r.toString(), t.toString());
259
270
  } catch (t) {
260
- return a("warn", "URL normalization failed, returning original", { error: t, data: { url: n.slice(0, 100) } }), n;
271
+ const r = n && typeof n == "string" ? n.slice(0, 100) : String(n);
272
+ return a("warn", "URL normalization failed, returning original", { error: t, data: { url: r } }), n;
261
273
  }
262
274
  }, pe = (n) => {
263
275
  if (!n || typeof n != "string" || n.trim().length === 0)
@@ -298,7 +310,7 @@ const Xe = () => {
298
310
  return t;
299
311
  }
300
312
  return null;
301
- }, ot = (n) => {
313
+ }, at = (n) => {
302
314
  if (typeof n != "object" || n === null)
303
315
  return {};
304
316
  try {
@@ -308,7 +320,7 @@ const Xe = () => {
308
320
  const t = e instanceof Error ? e.message : String(e);
309
321
  throw new Error(`[TraceLog] Metadata sanitization failed: ${t}`);
310
322
  }
311
- }, at = (n) => {
323
+ }, lt = (n) => {
312
324
  if (n !== void 0 && (n === null || typeof n != "object"))
313
325
  throw new f("Configuration must be an object", "config");
314
326
  if (n) {
@@ -316,7 +328,7 @@ const Xe = () => {
316
328
  throw new Ge(h.INVALID_SESSION_TIMEOUT, "config");
317
329
  if (n.globalMetadata !== void 0 && (typeof n.globalMetadata != "object" || n.globalMetadata === null))
318
330
  throw new f(h.INVALID_GLOBAL_METADATA, "config");
319
- if (n.integrations && ct(n.integrations), n.sensitiveQueryParams !== void 0) {
331
+ if (n.integrations && ut(n.integrations), n.sensitiveQueryParams !== void 0) {
320
332
  if (!Array.isArray(n.sensitiveQueryParams))
321
333
  throw new f(h.INVALID_SENSITIVE_QUERY_PARAMS, "config");
322
334
  for (const e of n.sensitiveQueryParams)
@@ -346,9 +358,9 @@ const Xe = () => {
346
358
  throw new f(h.INVALID_CLICK_THROTTLE, "config");
347
359
  if (n.maxSameEventPerMinute !== void 0 && (typeof n.maxSameEventPerMinute != "number" || n.maxSameEventPerMinute <= 0))
348
360
  throw new f(h.INVALID_MAX_SAME_EVENT_PER_MINUTE, "config");
349
- n.viewport !== void 0 && lt(n.viewport);
361
+ n.viewport !== void 0 && ct(n.viewport);
350
362
  }
351
- }, lt = (n) => {
363
+ }, ct = (n) => {
352
364
  if (typeof n != "object" || n === null)
353
365
  throw new f(h.INVALID_VIEWPORT_CONFIG, "config");
354
366
  if (!n.elements || !Array.isArray(n.elements))
@@ -378,7 +390,7 @@ const Xe = () => {
378
390
  throw new f(h.INVALID_VIEWPORT_COOLDOWN_PERIOD, "config");
379
391
  if (n.maxTrackedElements !== void 0 && (typeof n.maxTrackedElements != "number" || n.maxTrackedElements <= 0))
380
392
  throw new f(h.INVALID_VIEWPORT_MAX_TRACKED_ELEMENTS, "config");
381
- }, ct = (n) => {
393
+ }, ut = (n) => {
382
394
  if (n) {
383
395
  if (n.tracelog && (!n.tracelog.projectId || typeof n.tracelog.projectId != "string" || n.tracelog.projectId.trim() === ""))
384
396
  throw new M(h.INVALID_TRACELOG_PROJECT_ID, "config");
@@ -403,8 +415,8 @@ const Xe = () => {
403
415
  throw new M('Google Analytics measurement ID must start with "G-" or "UA-"', "config");
404
416
  }
405
417
  }
406
- }, ut = (n) => {
407
- at(n);
418
+ }, dt = (n) => {
419
+ lt(n);
408
420
  const e = {
409
421
  ...n ?? {},
410
422
  sessionTimeout: n?.sessionTimeout ?? 9e5,
@@ -426,7 +438,7 @@ const Xe = () => {
426
438
  cooldownPeriod: e.viewport.cooldownPeriod ?? 6e4,
427
439
  maxTrackedElements: e.viewport.maxTrackedElements ?? 100
428
440
  }), e;
429
- }, dt = (n) => {
441
+ }, ht = (n) => {
430
442
  if (typeof n == "string")
431
443
  return !0;
432
444
  if (typeof n == "object" && n !== null && !Array.isArray(n)) {
@@ -457,7 +469,7 @@ const Xe = () => {
457
469
  if (typeof t[0] == "string") {
458
470
  if (!t.every((o) => typeof o == "string"))
459
471
  return !1;
460
- } else if (!t.every((o) => dt(o)))
472
+ } else if (!t.every((o) => ht(o)))
461
473
  return !1;
462
474
  continue;
463
475
  }
@@ -470,7 +482,7 @@ const Xe = () => {
470
482
  }
471
483
  }
472
484
  return !0;
473
- }, ht = (n) => typeof n != "string" ? {
485
+ }, ft = (n) => typeof n != "string" ? {
474
486
  valid: !1,
475
487
  error: "Event name must be a string"
476
488
  } : n.length === 0 ? {
@@ -486,7 +498,7 @@ const Xe = () => {
486
498
  valid: !1,
487
499
  error: "Event name cannot be a reserved word"
488
500
  } : { valid: !0 }, Ie = (n, e, t) => {
489
- const r = ot(e), s = `${t} "${n}" metadata error`;
501
+ const r = at(e), s = `${t} "${n}" metadata error`;
490
502
  if (!Me(r))
491
503
  return {
492
504
  valid: !1,
@@ -535,7 +547,7 @@ const Xe = () => {
535
547
  valid: !0,
536
548
  sanitizedMetadata: r
537
549
  };
538
- }, ft = (n, e, t) => {
550
+ }, Et = (n, e, t) => {
539
551
  if (Array.isArray(e)) {
540
552
  const r = [], s = `${t} "${n}" metadata error`;
541
553
  for (let i = 0; i < e.length; i++) {
@@ -559,8 +571,8 @@ const Xe = () => {
559
571
  };
560
572
  }
561
573
  return Ie(n, e, t);
562
- }, Et = (n, e) => {
563
- const t = ht(n);
574
+ }, gt = (n, e) => {
575
+ const t = ft(n);
564
576
  if (!t.valid)
565
577
  return a("error", "Event name validation failed", {
566
578
  showToClient: !0,
@@ -568,7 +580,7 @@ const Xe = () => {
568
580
  }), t;
569
581
  if (!e)
570
582
  return { valid: !0 };
571
- const r = ft(n, e, "customEvent");
583
+ const r = Et(n, e, "customEvent");
572
584
  return r.valid || a("error", "Event metadata validation failed", {
573
585
  showToClient: !0,
574
586
  data: {
@@ -577,7 +589,7 @@ const Xe = () => {
577
589
  }
578
590
  }), r;
579
591
  };
580
- class gt {
592
+ class mt {
581
593
  listeners = /* @__PURE__ */ new Map();
582
594
  on(e, t) {
583
595
  this.listeners.has(e) || this.listeners.set(e, []), this.listeners.get(e).push(t);
@@ -611,9 +623,10 @@ class S {
611
623
  return { ...j };
612
624
  }
613
625
  }
614
- class mt extends S {
626
+ class St extends S {
615
627
  storeManager;
616
628
  lastPermanentErrorLog = null;
629
+ recoveryInProgress = !1;
617
630
  constructor(e) {
618
631
  super(), this.storeManager = e;
619
632
  }
@@ -635,6 +648,11 @@ class mt extends S {
635
648
  }
636
649
  }
637
650
  async recoverPersistedEvents(e) {
651
+ if (this.recoveryInProgress) {
652
+ a("debug", "Recovery already in progress, skipping duplicate attempt");
653
+ return;
654
+ }
655
+ this.recoveryInProgress = !0;
638
656
  try {
639
657
  const t = this.getPersistedData();
640
658
  if (!t || !this.isDataRecent(t) || t.events.length === 0) {
@@ -649,6 +667,8 @@ class mt extends S {
649
667
  return;
650
668
  }
651
669
  a("error", "Failed to recover persisted events", { error: t });
670
+ } finally {
671
+ this.recoveryInProgress = !1;
652
672
  }
653
673
  }
654
674
  stop() {
@@ -740,25 +760,24 @@ class mt extends S {
740
760
  return !e.timestamp || typeof e.timestamp != "number" ? !1 : (Date.now() - e.timestamp) / (1e3 * 60 * 60) < 2;
741
761
  }
742
762
  createRecoveryBody(e) {
743
- return {
744
- user_id: e.userId,
745
- session_id: e.sessionId,
746
- device: e.device,
747
- events: e.events,
748
- ...e.global_metadata && { global_metadata: e.global_metadata }
749
- };
763
+ const { timestamp: t, ...r } = e;
764
+ return r;
750
765
  }
751
766
  persistEvents(e) {
752
767
  try {
753
- const t = {
754
- userId: e.user_id,
755
- sessionId: e.session_id,
756
- device: e.device,
757
- events: e.events,
758
- timestamp: Date.now(),
759
- ...e.global_metadata && { global_metadata: e.global_metadata }
760
- }, r = this.getQueueStorageKey();
761
- return this.storeManager.setItem(r, JSON.stringify(t)), !!this.storeManager.getItem(r);
768
+ const t = this.getPersistedData();
769
+ if (t && t.timestamp) {
770
+ const i = Date.now() - t.timestamp;
771
+ if (i < 1e3)
772
+ return a("debug", "Skipping persistence, another tab recently persisted events", {
773
+ data: { timeSinceExisting: i }
774
+ }), !0;
775
+ }
776
+ const r = {
777
+ ...e,
778
+ timestamp: Date.now()
779
+ }, s = this.getQueueStorageKey();
780
+ return this.storeManager.setItem(s, JSON.stringify(r)), !!this.storeManager.getItem(s);
762
781
  } catch (t) {
763
782
  return a("warn", "Failed to persist events", { error: t }), !1;
764
783
  }
@@ -783,12 +802,12 @@ class mt extends S {
783
802
  }
784
803
  logPermanentError(e, t) {
785
804
  const r = Date.now();
786
- (!this.lastPermanentErrorLog || this.lastPermanentErrorLog.statusCode !== t.statusCode || r - this.lastPermanentErrorLog.timestamp >= et) && (a("error", e, {
805
+ (!this.lastPermanentErrorLog || this.lastPermanentErrorLog.statusCode !== t.statusCode || r - this.lastPermanentErrorLog.timestamp >= tt) && (a("error", e, {
787
806
  data: { status: t.statusCode, message: t.message }
788
807
  }), this.lastPermanentErrorLog = { statusCode: t.statusCode, timestamp: r });
789
808
  }
790
809
  }
791
- class St extends S {
810
+ class Tt extends S {
792
811
  googleAnalytics;
793
812
  dataSender;
794
813
  emitter;
@@ -810,7 +829,7 @@ class St extends S {
810
829
  };
811
830
  lastSessionId = null;
812
831
  constructor(e, t = null, r = null) {
813
- super(), this.googleAnalytics = t, this.dataSender = new mt(e), this.emitter = r;
832
+ super(), this.googleAnalytics = t, this.dataSender = new St(e), this.emitter = r;
814
833
  }
815
834
  async recoverPersistedEvents() {
816
835
  await this.dataSender.recoverPersistedEvents({
@@ -835,7 +854,7 @@ class St extends S {
835
854
  web_vitals: l,
836
855
  error_data: c,
837
856
  session_end_reason: d,
838
- viewport_data: _
857
+ viewport_data: T
839
858
  }) {
840
859
  if (!e) {
841
860
  a("error", "Event type is required - event will be ignored");
@@ -855,7 +874,7 @@ class St extends S {
855
874
  web_vitals: l,
856
875
  error_data: c,
857
876
  session_end_reason: d,
858
- viewport_data: _
877
+ viewport_data: T
859
878
  });
860
879
  return;
861
880
  }
@@ -867,11 +886,11 @@ class St extends S {
867
886
  [u.VIEWPORT_VISIBLE]: 0,
868
887
  [u.SCROLL]: 0
869
888
  });
870
- const L = e === u.SESSION_START || e === u.SESSION_END;
871
- if (!L && !this.checkRateLimit())
889
+ const v = e === u.SESSION_START || e === u.SESSION_END;
890
+ if (!v && !this.checkRateLimit())
872
891
  return;
873
892
  const m = e;
874
- if (!L) {
893
+ if (!v) {
875
894
  if (this.sessionEventCounts.total >= 1e3) {
876
895
  a("warn", "Session event limit reached", {
877
896
  data: {
@@ -882,15 +901,15 @@ class St extends S {
882
901
  });
883
902
  return;
884
903
  }
885
- const A = this.getTypeLimitForEvent(m);
886
- if (A) {
904
+ const w = this.getTypeLimitForEvent(m);
905
+ if (w) {
887
906
  const Q = this.sessionEventCounts[m];
888
- if (Q !== void 0 && Q >= A) {
907
+ if (Q !== void 0 && Q >= w) {
889
908
  a("warn", "Session event type limit reached", {
890
909
  data: {
891
910
  type: m,
892
911
  count: Q,
893
- limit: A
912
+ limit: w
894
913
  }
895
914
  });
896
915
  return;
@@ -898,8 +917,8 @@ class St extends S {
898
917
  }
899
918
  }
900
919
  if (m === u.CUSTOM && o?.name) {
901
- const A = this.get("config")?.maxSameEventPerMinute ?? 60;
902
- if (!this.checkPerEventRateLimit(o.name, A))
920
+ const w = this.get("config")?.maxSameEventPerMinute ?? 60;
921
+ if (!this.checkPerEventRateLimit(o.name, w))
903
922
  return;
904
923
  }
905
924
  const Ve = m === u.SESSION_START, ke = t || this.get("pageUrl"), z = this.buildEventPayload({
@@ -912,18 +931,18 @@ class St extends S {
912
931
  web_vitals: l,
913
932
  error_data: c,
914
933
  session_end_reason: d,
915
- viewport_data: _
934
+ viewport_data: T
916
935
  });
917
- if (!(!L && !this.shouldSample())) {
936
+ if (!(!v && !this.shouldSample())) {
918
937
  if (Ve) {
919
- const A = this.get("sessionId");
920
- if (!A) {
938
+ const w = this.get("sessionId");
939
+ if (!w) {
921
940
  a("error", "Session start event requires sessionId - event will be ignored");
922
941
  return;
923
942
  }
924
943
  if (this.get("hasStartSession")) {
925
944
  a("warn", "Duplicate session_start detected", {
926
- data: { sessionId: A }
945
+ data: { sessionId: w }
927
946
  });
928
947
  return;
929
948
  }
@@ -937,7 +956,7 @@ class St extends S {
937
956
  }), this.emitEvent(z);
938
957
  return;
939
958
  }
940
- this.addToQueue(z), L || (this.sessionEventCounts.total++, this.sessionEventCounts[m] !== void 0 && this.sessionEventCounts[m]++);
959
+ this.addToQueue(z), v || (this.sessionEventCounts.total++, this.sessionEventCounts[m] !== void 0 && this.sessionEventCounts[m]++);
941
960
  }
942
961
  }
943
962
  }
@@ -983,14 +1002,14 @@ class St extends S {
983
1002
  const t = this.buildEventsPayload(), r = [...this.eventsQueue], s = r.map((i) => i.id);
984
1003
  if (e) {
985
1004
  const i = this.dataSender.sendEventsQueueSync(t);
986
- return i && (this.removeProcessedEvents(s), this.clearSendInterval(), this.emitEventsQueue(t)), i;
1005
+ return i ? (this.removeProcessedEvents(s), this.clearSendInterval(), this.emitEventsQueue(t)) : (this.removeProcessedEvents(s), this.clearSendInterval()), i;
987
1006
  } else
988
1007
  return this.dataSender.sendEventsQueue(t, {
989
1008
  onSuccess: () => {
990
1009
  this.removeProcessedEvents(s), this.clearSendInterval(), this.emitEventsQueue(t);
991
1010
  },
992
1011
  onFailure: () => {
993
- a("warn", "Async flush failed", {
1012
+ this.removeProcessedEvents(s), this.eventsQueue.length === 0 && this.clearSendInterval(), a("warn", "Async flush failed, removed from queue and persisted for recovery on next page load", {
994
1013
  data: { eventCount: r.length }
995
1014
  });
996
1015
  }
@@ -1005,7 +1024,7 @@ class St extends S {
1005
1024
  this.removeProcessedEvents(r), this.emitEventsQueue(e);
1006
1025
  },
1007
1026
  onFailure: () => {
1008
- a("warn", "Events send failed, keeping in queue", {
1027
+ this.removeProcessedEvents(r), this.eventsQueue.length === 0 && this.clearSendInterval(), a("warn", "Events send failed, removed from queue and persisted for recovery on next page load", {
1009
1028
  data: { eventCount: t.length }
1010
1029
  });
1011
1030
  }
@@ -1029,7 +1048,7 @@ class St extends S {
1029
1048
  buildEventPayload(e) {
1030
1049
  const t = e.type === u.SESSION_START, r = e.page_url ?? this.get("pageUrl");
1031
1050
  return {
1032
- id: st(),
1051
+ id: it(),
1033
1052
  type: e.type,
1034
1053
  page_url: r,
1035
1054
  timestamp: Date.now(),
@@ -1042,7 +1061,7 @@ class St extends S {
1042
1061
  ...e.error_data && { error_data: e.error_data },
1043
1062
  ...e.session_end_reason && { session_end_reason: e.session_end_reason },
1044
1063
  ...e.viewport_data && { viewport_data: e.viewport_data },
1045
- ...t && _e() && { utm: _e() }
1064
+ ...t && Te() && { utm: Te() }
1046
1065
  };
1047
1066
  }
1048
1067
  /**
@@ -1167,11 +1186,11 @@ class _t {
1167
1186
  const t = ze, r = e.getItem(t);
1168
1187
  if (r)
1169
1188
  return r;
1170
- const s = nt();
1189
+ const s = st();
1171
1190
  return e.setItem(t, s), s;
1172
1191
  }
1173
1192
  }
1174
- class Tt extends S {
1193
+ class pt extends S {
1175
1194
  storageManager;
1176
1195
  eventManager;
1177
1196
  projectId;
@@ -1338,7 +1357,7 @@ class Tt extends S {
1338
1357
  this.clearSessionTimeout(), this.cleanupActivityListeners(), this.cleanupCrossTabSync(), this.cleanupLifecycleListeners(), this.isTracking = !1, this.set("hasStartSession", !1);
1339
1358
  }
1340
1359
  }
1341
- class pt extends S {
1360
+ class It extends S {
1342
1361
  eventManager;
1343
1362
  storageManager;
1344
1363
  sessionManager = null;
@@ -1357,7 +1376,7 @@ class pt extends S {
1357
1376
  if (!t)
1358
1377
  throw new Error("Cannot start session tracking: config not available");
1359
1378
  try {
1360
- this.sessionManager = new Tt(this.storageManager, this.eventManager, t), this.sessionManager.startTracking(), this.eventManager.flushPendingEvents();
1379
+ this.sessionManager = new pt(this.storageManager, this.eventManager, t), this.sessionManager.startTracking(), this.eventManager.flushPendingEvents();
1361
1380
  } catch (r) {
1362
1381
  if (this.sessionManager) {
1363
1382
  try {
@@ -1382,7 +1401,7 @@ class pt extends S {
1382
1401
  this.destroyed || (this.sessionManager && (this.sessionManager.destroy(), this.sessionManager = null), this.destroyed = !0, this.set("hasStartSession", !1));
1383
1402
  }
1384
1403
  }
1385
- class It extends S {
1404
+ class vt extends S {
1386
1405
  eventManager;
1387
1406
  onTrack;
1388
1407
  originalPushState;
@@ -1440,10 +1459,11 @@ class It extends S {
1440
1459
  };
1441
1460
  }
1442
1461
  }
1443
- class vt extends S {
1462
+ class At extends S {
1444
1463
  eventManager;
1445
- clickHandler;
1446
1464
  lastClickTimes = /* @__PURE__ */ new Map();
1465
+ clickHandler;
1466
+ lastPruneTime = 0;
1447
1467
  constructor(e) {
1448
1468
  super(), this.eventManager = e;
1449
1469
  }
@@ -1461,9 +1481,9 @@ class vt extends S {
1461
1481
  return;
1462
1482
  const o = this.findTrackingElement(s), l = this.getRelevantClickElement(s), c = this.calculateClickCoordinates(t, s);
1463
1483
  if (o) {
1464
- const _ = this.extractTrackingData(o);
1465
- if (_) {
1466
- const g = this.createCustomEventData(_);
1484
+ const T = this.extractTrackingData(o);
1485
+ if (T) {
1486
+ const g = this.createCustomEventData(T);
1467
1487
  this.eventManager.track({
1468
1488
  type: u.CUSTOM,
1469
1489
  custom_event: {
@@ -1481,17 +1501,19 @@ class vt extends S {
1481
1501
  }, window.addEventListener("click", this.clickHandler, !0));
1482
1502
  }
1483
1503
  stopTracking() {
1484
- this.clickHandler && (window.removeEventListener("click", this.clickHandler, !0), this.clickHandler = void 0), this.lastClickTimes.clear();
1504
+ this.clickHandler && (window.removeEventListener("click", this.clickHandler, !0), this.clickHandler = void 0), this.lastClickTimes.clear(), this.lastPruneTime = 0;
1485
1505
  }
1486
1506
  shouldIgnoreElement(e) {
1487
- return e.hasAttribute(`${v}-ignore`) ? !0 : e.closest(`[${v}-ignore]`) !== null;
1507
+ return e.hasAttribute(`${A}-ignore`) ? !0 : e.closest(`[${A}-ignore]`) !== null;
1488
1508
  }
1489
1509
  /**
1490
1510
  * Checks per-element click throttling to prevent double-clicks and rapid spam
1491
1511
  * Returns true if the click should be tracked, false if throttled
1492
1512
  */
1493
1513
  checkClickThrottle(e, t) {
1494
- const r = this.getElementSignature(e), s = Date.now(), i = this.lastClickTimes.get(r);
1514
+ const r = this.getElementSignature(e), s = Date.now();
1515
+ this.pruneThrottleCache(s);
1516
+ const i = this.lastClickTimes.get(r);
1495
1517
  return i !== void 0 && s - i < t ? (a("debug", "ClickHandler: Click suppressed by throttle", {
1496
1518
  data: {
1497
1519
  signature: r,
@@ -1499,6 +1521,30 @@ class vt extends S {
1499
1521
  }
1500
1522
  }), !1) : (this.lastClickTimes.set(r, s), !0);
1501
1523
  }
1524
+ /**
1525
+ * Prunes stale entries from the throttle cache to prevent memory leaks
1526
+ * Uses TTL-based eviction (5 minutes) and enforces max size limit
1527
+ * Called during checkClickThrottle with built-in rate limiting (every 30 seconds)
1528
+ */
1529
+ pruneThrottleCache(e) {
1530
+ if (e - this.lastPruneTime < 3e4)
1531
+ return;
1532
+ this.lastPruneTime = e;
1533
+ const t = e - 3e5;
1534
+ for (const [r, s] of this.lastClickTimes.entries())
1535
+ s < t && this.lastClickTimes.delete(r);
1536
+ if (this.lastClickTimes.size > 1e3) {
1537
+ const r = Array.from(this.lastClickTimes.entries()).sort((o, l) => o[1] - l[1]), s = this.lastClickTimes.size - 1e3, i = r.slice(0, s);
1538
+ for (const [o] of i)
1539
+ this.lastClickTimes.delete(o);
1540
+ a("debug", "ClickHandler: Pruned throttle cache", {
1541
+ data: {
1542
+ removed: i.length,
1543
+ remaining: this.lastClickTimes.size
1544
+ }
1545
+ });
1546
+ }
1547
+ }
1502
1548
  /**
1503
1549
  * Creates a stable signature for an element to track throttling
1504
1550
  * Priority: id > data-testid > data-tlog-name > DOM path
@@ -1509,8 +1555,8 @@ class vt extends S {
1509
1555
  const t = e.getAttribute("data-testid");
1510
1556
  if (t)
1511
1557
  return `[data-testid="${t}"]`;
1512
- const r = e.getAttribute(`${v}-name`);
1513
- return r ? `[${v}-name="${r}"]` : this.getElementPath(e);
1558
+ const r = e.getAttribute(`${A}-name`);
1559
+ return r ? `[${A}-name="${r}"]` : this.getElementPath(e);
1514
1560
  }
1515
1561
  /**
1516
1562
  * Generates a DOM path for an element (e.g., "body>div>button")
@@ -1529,10 +1575,10 @@ class vt extends S {
1529
1575
  return t.join(">") || "unknown";
1530
1576
  }
1531
1577
  findTrackingElement(e) {
1532
- return e.hasAttribute(`${v}-name`) ? e : e.closest(`[${v}-name]`);
1578
+ return e.hasAttribute(`${A}-name`) ? e : e.closest(`[${A}-name]`);
1533
1579
  }
1534
1580
  getRelevantClickElement(e) {
1535
- for (const t of Ue)
1581
+ for (const t of He)
1536
1582
  try {
1537
1583
  if (e.matches(t))
1538
1584
  return e;
@@ -1553,7 +1599,7 @@ class vt extends S {
1553
1599
  return { x: s, y: i, relativeX: o, relativeY: l };
1554
1600
  }
1555
1601
  extractTrackingData(e) {
1556
- const t = e.getAttribute(`${v}-name`), r = e.getAttribute(`${v}-value`);
1602
+ const t = e.getAttribute(`${A}-name`), r = e.getAttribute(`${A}-value`);
1557
1603
  if (t)
1558
1604
  return {
1559
1605
  element: e,
@@ -1621,15 +1667,14 @@ class vt extends S {
1621
1667
  };
1622
1668
  }
1623
1669
  }
1624
- class At extends S {
1670
+ class wt extends S {
1625
1671
  eventManager;
1626
1672
  containers = [];
1627
1673
  limitWarningLogged = !1;
1628
1674
  minDepthChange = 5;
1629
1675
  minIntervalMs = 500;
1630
1676
  maxEventsPerSession = 120;
1631
- windowScrollableCache = null;
1632
- retryTimeoutId = null;
1677
+ containerDiscoveryTimeoutId = null;
1633
1678
  constructor(e) {
1634
1679
  super(), this.eventManager = e;
1635
1680
  }
@@ -1637,14 +1682,14 @@ class At extends S {
1637
1682
  this.limitWarningLogged = !1, this.applyConfigOverrides(), this.set("scrollEventCount", 0), this.tryDetectScrollContainers(0);
1638
1683
  }
1639
1684
  stopTracking() {
1640
- this.retryTimeoutId !== null && (clearTimeout(this.retryTimeoutId), this.retryTimeoutId = null);
1685
+ this.containerDiscoveryTimeoutId !== null && (clearTimeout(this.containerDiscoveryTimeoutId), this.containerDiscoveryTimeoutId = null);
1641
1686
  for (const e of this.containers)
1642
- this.clearContainerTimer(e), e.element instanceof Window ? window.removeEventListener("scroll", e.listener) : e.element.removeEventListener("scroll", e.listener);
1643
- this.containers.length = 0, this.set("scrollEventCount", 0), this.limitWarningLogged = !1, this.windowScrollableCache = null;
1687
+ this.clearContainerTimer(e), e.element === window ? window.removeEventListener("scroll", e.listener) : e.element.removeEventListener("scroll", e.listener);
1688
+ this.containers.length = 0, this.set("scrollEventCount", 0), this.limitWarningLogged = !1;
1644
1689
  }
1645
1690
  tryDetectScrollContainers(e) {
1646
1691
  const t = this.findScrollableElements();
1647
- if (t.length > 0) {
1692
+ if (this.isWindowScrollable() && this.setupScrollContainer(window, "window"), t.length > 0) {
1648
1693
  for (const r of t) {
1649
1694
  const s = this.getElementSelector(r);
1650
1695
  this.setupScrollContainer(r, s);
@@ -1653,8 +1698,8 @@ class At extends S {
1653
1698
  return;
1654
1699
  }
1655
1700
  if (e < 5) {
1656
- this.retryTimeoutId = window.setTimeout(() => {
1657
- this.retryTimeoutId = null, this.tryDetectScrollContainers(e + 1);
1701
+ this.containerDiscoveryTimeoutId = window.setTimeout(() => {
1702
+ this.containerDiscoveryTimeoutId = null, this.tryDetectScrollContainers(e + 1);
1658
1703
  }, 200);
1659
1704
  return;
1660
1705
  }
@@ -1702,32 +1747,33 @@ class At extends S {
1702
1747
  setupScrollContainer(e, t) {
1703
1748
  if (this.containers.some((d) => d.element === e) || e !== window && !this.isElementScrollable(e))
1704
1749
  return;
1705
- const s = () => {
1706
- this.get("suppressNextScroll") || (this.clearContainerTimer(c), c.debounceTimer = window.setTimeout(() => {
1707
- const d = this.calculateScrollData(c);
1708
- if (d) {
1709
- const _ = Date.now();
1710
- this.processScrollEvent(c, d, _);
1711
- }
1712
- c.debounceTimer = null;
1713
- }, 250));
1714
- }, i = this.getScrollTop(e), o = this.calculateScrollDepth(
1715
- i,
1750
+ const s = this.getScrollTop(e), i = this.calculateScrollDepth(
1751
+ s,
1716
1752
  this.getScrollHeight(e),
1717
1753
  this.getViewportHeight(e)
1718
- ), l = this.determineIfPrimary(e), c = {
1754
+ ), o = this.determineIfPrimary(e), l = {
1719
1755
  element: e,
1720
1756
  selector: t,
1721
- isPrimary: l,
1722
- lastScrollPos: i,
1723
- lastDepth: o,
1724
- lastDirection: H.DOWN,
1757
+ isPrimary: o,
1758
+ lastScrollPos: s,
1759
+ lastDepth: i,
1760
+ lastDirection: U.DOWN,
1725
1761
  lastEventTime: 0,
1726
- maxDepthReached: o,
1762
+ firstScrollEventTime: null,
1763
+ maxDepthReached: i,
1727
1764
  debounceTimer: null,
1728
- listener: s
1765
+ listener: null
1766
+ }, c = () => {
1767
+ this.get("suppressNextScroll") || (l.firstScrollEventTime === null && (l.firstScrollEventTime = Date.now()), this.clearContainerTimer(l), l.debounceTimer = window.setTimeout(() => {
1768
+ const d = this.calculateScrollData(l);
1769
+ if (d) {
1770
+ const T = Date.now();
1771
+ this.processScrollEvent(l, d, T);
1772
+ }
1773
+ l.debounceTimer = null;
1774
+ }, 250));
1729
1775
  };
1730
- this.containers.push(c), e instanceof Window ? window.addEventListener("scroll", s, { passive: !0 }) : e.addEventListener("scroll", s, { passive: !0 });
1776
+ l.listener = c, this.containers.push(l), e === window ? window.addEventListener("scroll", c, { passive: !0 }) : e.addEventListener("scroll", c, { passive: !0 });
1731
1777
  }
1732
1778
  processScrollEvent(e, t, r) {
1733
1779
  if (!this.shouldEmitScrollEvent(e, t, r))
@@ -1764,13 +1810,13 @@ class At extends S {
1764
1810
  this.minDepthChange = 5, this.minIntervalMs = 500, this.maxEventsPerSession = 120;
1765
1811
  }
1766
1812
  isWindowScrollable() {
1767
- return this.windowScrollableCache !== null ? this.windowScrollableCache : (this.windowScrollableCache = document.documentElement.scrollHeight > window.innerHeight, this.windowScrollableCache);
1813
+ return document.documentElement.scrollHeight > window.innerHeight;
1768
1814
  }
1769
1815
  clearContainerTimer(e) {
1770
1816
  e.debounceTimer !== null && (clearTimeout(e.debounceTimer), e.debounceTimer = null);
1771
1817
  }
1772
1818
  getScrollDirection(e, t) {
1773
- return e > t ? H.DOWN : H.UP;
1819
+ return e > t ? U.DOWN : U.UP;
1774
1820
  }
1775
1821
  calculateScrollDepth(e, t, r) {
1776
1822
  if (t <= r)
@@ -1782,25 +1828,28 @@ class At extends S {
1782
1828
  const { element: t, lastScrollPos: r, lastEventTime: s } = e, i = this.getScrollTop(t), o = Date.now(), l = Math.abs(i - r);
1783
1829
  if (l < 10 || t === window && !this.isWindowScrollable())
1784
1830
  return null;
1785
- const c = this.getViewportHeight(t), d = this.getScrollHeight(t), _ = this.getScrollDirection(i, r), g = this.calculateScrollDepth(i, d, c), L = s > 0 ? o - s : 0, m = L > 0 ? Math.round(l / L * 1e3) : 0;
1831
+ const c = this.getViewportHeight(t), d = this.getScrollHeight(t), T = this.getScrollDirection(i, r), g = this.calculateScrollDepth(i, d, c);
1832
+ let v;
1833
+ s > 0 ? v = o - s : e.firstScrollEventTime !== null ? v = o - e.firstScrollEventTime : v = 250;
1834
+ const m = Math.round(l / v * 1e3);
1786
1835
  return g > e.maxDepthReached && (e.maxDepthReached = g), e.lastScrollPos = i, {
1787
1836
  depth: g,
1788
- direction: _,
1837
+ direction: T,
1789
1838
  velocity: m,
1790
1839
  max_depth_reached: e.maxDepthReached
1791
1840
  };
1792
1841
  }
1793
1842
  getScrollTop(e) {
1794
- return e instanceof Window ? window.scrollY : e.scrollTop;
1843
+ return e === window ? window.scrollY : e.scrollTop;
1795
1844
  }
1796
1845
  getViewportHeight(e) {
1797
- return e instanceof Window ? window.innerHeight : e.clientHeight;
1846
+ return e === window ? window.innerHeight : e.clientHeight;
1798
1847
  }
1799
1848
  getScrollHeight(e) {
1800
- return e instanceof Window ? document.documentElement.scrollHeight : e.scrollHeight;
1849
+ return e === window ? document.documentElement.scrollHeight : e.scrollHeight;
1801
1850
  }
1802
1851
  isElementScrollable(e) {
1803
- const t = getComputedStyle(e), r = t.overflowY === "auto" || t.overflowY === "scroll" || t.overflowX === "auto" || t.overflowX === "scroll" || t.overflow === "auto" || t.overflow === "scroll", s = e.scrollHeight > e.clientHeight || e.scrollWidth > e.clientWidth;
1852
+ const t = getComputedStyle(e), r = t.overflowY === "auto" || t.overflowY === "scroll" || t.overflow === "auto" || t.overflow === "scroll", s = e.scrollHeight > e.clientHeight;
1804
1853
  return r && s;
1805
1854
  }
1806
1855
  applyPrimaryScrollSelector(e) {
@@ -1823,7 +1872,7 @@ class At extends S {
1823
1872
  e.isPrimary = t;
1824
1873
  }
1825
1874
  }
1826
- class wt extends S {
1875
+ class yt extends S {
1827
1876
  eventManager;
1828
1877
  trackedElements = /* @__PURE__ */ new Map();
1829
1878
  observer = null;
@@ -1887,7 +1936,7 @@ class wt extends S {
1887
1936
  });
1888
1937
  return;
1889
1938
  }
1890
- i.hasAttribute(`${v}-ignore`) || this.trackedElements.has(i) || (this.trackedElements.set(i, {
1939
+ i.hasAttribute(`${A}-ignore`) || this.trackedElements.has(i) || (this.trackedElements.set(i, {
1891
1940
  element: i,
1892
1941
  selector: r.selector,
1893
1942
  id: r.id,
@@ -1913,7 +1962,8 @@ class wt extends S {
1913
1962
  for (const r of e) {
1914
1963
  const s = this.trackedElements.get(r.target);
1915
1964
  s && (r.isIntersecting ? s.startTime === null && (s.startTime = performance.now(), s.timeoutId = window.setTimeout(() => {
1916
- this.fireViewportEvent(s, r.intersectionRatio);
1965
+ const i = Math.round(r.intersectionRatio * 100) / 100;
1966
+ this.fireViewportEvent(s, i);
1917
1967
  }, t)) : s.startTime !== null && (s.timeoutId !== null && (window.clearTimeout(s.timeoutId), s.timeoutId = null), s.startTime = null));
1918
1968
  }
1919
1969
  };
@@ -1983,7 +2033,7 @@ class wt extends S {
1983
2033
  });
1984
2034
  }
1985
2035
  }
1986
- class yt extends S {
2036
+ class Lt extends S {
1987
2037
  isInitialized = !1;
1988
2038
  async initialize() {
1989
2039
  if (this.isInitialized)
@@ -2039,7 +2089,7 @@ class yt extends S {
2039
2089
  `, document.head.appendChild(r);
2040
2090
  }
2041
2091
  }
2042
- class Lt {
2092
+ class Mt {
2043
2093
  storage;
2044
2094
  sessionStorageRef;
2045
2095
  fallbackStorage = /* @__PURE__ */ new Map();
@@ -2217,12 +2267,14 @@ class Lt {
2217
2267
  this.fallbackSessionStorage.delete(e);
2218
2268
  }
2219
2269
  }
2220
- class Mt extends S {
2270
+ class Nt extends S {
2221
2271
  eventManager;
2222
2272
  reportedByNav = /* @__PURE__ */ new Map();
2273
+ navigationHistory = [];
2274
+ // FIFO queue for tracking navigation order
2223
2275
  observers = [];
2224
- lastLongTaskSentAt = 0;
2225
2276
  vitalThresholds = ye;
2277
+ lastLongTaskSentAt = 0;
2226
2278
  constructor(e) {
2227
2279
  super(), this.eventManager = e;
2228
2280
  }
@@ -2236,7 +2288,7 @@ class Mt extends S {
2236
2288
  } catch (r) {
2237
2289
  a("warn", "Failed to disconnect performance observer", { error: r, data: { observerIndex: t } });
2238
2290
  }
2239
- }), this.observers.length = 0, this.reportedByNav.clear();
2291
+ }), this.observers.length = 0, this.reportedByNav.clear(), this.navigationHistory.length = 0;
2240
2292
  }
2241
2293
  observeWebVitalsFallback() {
2242
2294
  this.reportTTFB(), this.safeObserve(
@@ -2288,7 +2340,7 @@ class Mt extends S {
2288
2340
  }
2289
2341
  async initWebVitals() {
2290
2342
  try {
2291
- const { onLCP: e, onCLS: t, onFCP: r, onTTFB: s, onINP: i } = await Promise.resolve().then(() => Qt), o = (l) => (c) => {
2343
+ const { onLCP: e, onCLS: t, onFCP: r, onTTFB: s, onINP: i } = await Promise.resolve().then(() => jt), o = (l) => (c) => {
2292
2344
  const d = Number(c.value.toFixed(2));
2293
2345
  this.sendVital({ type: l, value: d });
2294
2346
  };
@@ -2329,7 +2381,12 @@ class Mt extends S {
2329
2381
  const r = this.reportedByNav.get(t);
2330
2382
  if (r?.has(e.type))
2331
2383
  return;
2332
- r ? r.add(e.type) : this.reportedByNav.set(t, /* @__PURE__ */ new Set([e.type]));
2384
+ if (r)
2385
+ r.add(e.type);
2386
+ else if (this.reportedByNav.set(t, /* @__PURE__ */ new Set([e.type])), this.navigationHistory.push(t), this.navigationHistory.length > qe) {
2387
+ const i = this.navigationHistory.shift();
2388
+ i && this.reportedByNav.delete(i);
2389
+ }
2333
2390
  }
2334
2391
  this.trackWebVital(e.type, e.value);
2335
2392
  }
@@ -2396,7 +2453,7 @@ class Mt extends S {
2396
2453
  return !(typeof r == "number" && t <= r);
2397
2454
  }
2398
2455
  }
2399
- class Nt extends S {
2456
+ class Rt extends S {
2400
2457
  eventManager;
2401
2458
  recentErrors = /* @__PURE__ */ new Map();
2402
2459
  errorBurstCounter = 0;
@@ -2419,7 +2476,7 @@ class Nt extends S {
2419
2476
  const e = Date.now();
2420
2477
  if (e < this.burstBackoffUntil)
2421
2478
  return !1;
2422
- if (e - this.burstWindowStart > Ze && (this.errorBurstCounter = 0, this.burstWindowStart = e), this.errorBurstCounter++, this.errorBurstCounter > Je)
2479
+ if (e - this.burstWindowStart > Je && (this.errorBurstCounter = 0, this.burstWindowStart = e), this.errorBurstCounter++, this.errorBurstCounter > et)
2423
2480
  return this.burstBackoffUntil = e + me, a("warn", "Error burst detected - entering cooldown", {
2424
2481
  data: {
2425
2482
  errorsInWindow: this.errorBurstCounter,
@@ -2479,7 +2536,7 @@ class Nt extends S {
2479
2536
  }
2480
2537
  shouldSuppressError(e, t) {
2481
2538
  const r = Date.now(), s = `${e}:${t}`, i = this.recentErrors.get(s);
2482
- return i && r - i < ge ? (this.recentErrors.set(s, r), !0) : (this.recentErrors.set(s, r), this.recentErrors.size > qe ? (this.recentErrors.clear(), this.recentErrors.set(s, r), !1) : (this.recentErrors.size > x && this.pruneOldErrors(), !1));
2539
+ return i && r - i < ge ? (this.recentErrors.set(s, r), !0) : (this.recentErrors.set(s, r), this.recentErrors.size > Ze ? (this.recentErrors.clear(), this.recentErrors.set(s, r), !1) : (this.recentErrors.size > x && this.pruneOldErrors(), !1));
2483
2540
  }
2484
2541
  pruneOldErrors() {
2485
2542
  const e = Date.now();
@@ -2494,10 +2551,10 @@ class Nt extends S {
2494
2551
  }
2495
2552
  }
2496
2553
  }
2497
- class Rt extends S {
2554
+ class Ot extends S {
2498
2555
  isInitialized = !1;
2499
2556
  suppressNextScrollTimer = null;
2500
- emitter = new gt();
2557
+ emitter = new mt();
2501
2558
  managers = {};
2502
2559
  handlers = {};
2503
2560
  integrations = {};
@@ -2506,9 +2563,9 @@ class Rt extends S {
2506
2563
  }
2507
2564
  async init(e = {}) {
2508
2565
  if (!this.isInitialized) {
2509
- this.managers.storage = new Lt();
2566
+ this.managers.storage = new Mt();
2510
2567
  try {
2511
- this.setupState(e), await this.setupIntegrations(), this.managers.event = new St(this.managers.storage, this.integrations.googleAnalytics, this.emitter), this.initializeHandlers(), await this.managers.event.recoverPersistedEvents().catch((t) => {
2568
+ this.setupState(e), await this.setupIntegrations(), this.managers.event = new Tt(this.managers.storage, this.integrations.googleAnalytics, this.emitter), this.initializeHandlers(), await this.managers.event.recoverPersistedEvents().catch((t) => {
2512
2569
  a("warn", "Failed to recover persisted events", { error: t });
2513
2570
  }), this.isInitialized = !0;
2514
2571
  } catch (t) {
@@ -2521,7 +2578,7 @@ class Rt extends S {
2521
2578
  sendCustomEvent(e, t) {
2522
2579
  if (!this.managers.event)
2523
2580
  return;
2524
- const { valid: r, error: s, sanitizedMetadata: i } = Et(e, t);
2581
+ const { valid: r, error: s, sanitizedMetadata: i } = gt(e, t);
2525
2582
  if (!r) {
2526
2583
  if (this.get("mode") === D.QA)
2527
2584
  throw new Error(`[TraceLog] Custom event "${e}" validation failed: ${s}`);
@@ -2554,25 +2611,25 @@ class Rt extends S {
2554
2611
  this.set("config", e);
2555
2612
  const t = _t.getId(this.managers.storage);
2556
2613
  this.set("userId", t);
2557
- const r = it(e);
2614
+ const r = ot(e);
2558
2615
  this.set("collectApiUrl", r);
2559
2616
  const s = $e();
2560
2617
  this.set("device", s);
2561
2618
  const i = ee(window.location.href, e.sensitiveQueryParams);
2562
2619
  this.set("pageUrl", i);
2563
- const o = rt() ? D.QA : void 0;
2620
+ const o = nt() ? D.QA : void 0;
2564
2621
  o && this.set("mode", o);
2565
2622
  }
2566
2623
  async setupIntegrations() {
2567
2624
  if (this.get("config").integrations?.googleAnalytics?.measurementId?.trim())
2568
2625
  try {
2569
- this.integrations.googleAnalytics = new yt(), await this.integrations.googleAnalytics.initialize();
2626
+ this.integrations.googleAnalytics = new Lt(), await this.integrations.googleAnalytics.initialize();
2570
2627
  } catch {
2571
2628
  this.integrations.googleAnalytics = void 0;
2572
2629
  }
2573
2630
  }
2574
2631
  initializeHandlers() {
2575
- this.handlers.session = new pt(
2632
+ this.handlers.session = new It(
2576
2633
  this.managers.storage,
2577
2634
  this.managers.event
2578
2635
  ), this.handlers.session.startTracking();
@@ -2581,18 +2638,18 @@ class Rt extends S {
2581
2638
  this.set("suppressNextScroll", !1);
2582
2639
  }, 500);
2583
2640
  };
2584
- this.handlers.pageView = new It(this.managers.event, e), this.handlers.pageView.startTracking(), this.handlers.click = new vt(this.managers.event), this.handlers.click.startTracking(), this.handlers.scroll = new At(this.managers.event), this.handlers.scroll.startTracking(), this.handlers.performance = new Mt(this.managers.event), this.handlers.performance.startTracking().catch((t) => {
2641
+ this.handlers.pageView = new vt(this.managers.event, e), this.handlers.pageView.startTracking(), this.handlers.click = new At(this.managers.event), this.handlers.click.startTracking(), this.handlers.scroll = new wt(this.managers.event), this.handlers.scroll.startTracking(), this.handlers.performance = new Nt(this.managers.event), this.handlers.performance.startTracking().catch((t) => {
2585
2642
  a("warn", "Failed to start performance tracking", { error: t });
2586
- }), this.handlers.error = new Nt(this.managers.event), this.handlers.error.startTracking(), this.get("config").viewport && (this.handlers.viewport = new wt(this.managers.event), this.handlers.viewport.startTracking());
2643
+ }), this.handlers.error = new Rt(this.managers.event), this.handlers.error.startTracking(), this.get("config").viewport && (this.handlers.viewport = new yt(this.managers.event), this.handlers.viewport.startTracking());
2587
2644
  }
2588
2645
  }
2589
2646
  const N = [];
2590
2647
  let E = null, C = !1, F = !1;
2591
- const Ot = async (n) => {
2648
+ const Ct = async (n) => {
2592
2649
  if (!(typeof window > "u" || typeof document > "u") && !window.__traceLogDisabled && !E && !C) {
2593
2650
  C = !0;
2594
2651
  try {
2595
- const e = ut(n ?? {}), t = new Rt();
2652
+ const e = dt(n ?? {}), t = new Ot();
2596
2653
  try {
2597
2654
  N.forEach(({ event: i, callback: o }) => {
2598
2655
  t.on(i, o);
@@ -2617,7 +2674,7 @@ const Ot = async (n) => {
2617
2674
  C = !1;
2618
2675
  }
2619
2676
  }
2620
- }, Ct = (n, e) => {
2677
+ }, bt = (n, e) => {
2621
2678
  if (!(typeof window > "u" || typeof document > "u")) {
2622
2679
  if (!E)
2623
2680
  throw new Error("[TraceLog] TraceLog not initialized. Please call init() first.");
@@ -2625,7 +2682,7 @@ const Ot = async (n) => {
2625
2682
  throw new Error("[TraceLog] Cannot send events while TraceLog is being destroyed");
2626
2683
  E.sendCustomEvent(n, e);
2627
2684
  }
2628
- }, bt = (n, e) => {
2685
+ }, Pt = (n, e) => {
2629
2686
  if (!(typeof window > "u" || typeof document > "u")) {
2630
2687
  if (!E || C) {
2631
2688
  N.push({ event: n, callback: e });
@@ -2633,7 +2690,7 @@ const Ot = async (n) => {
2633
2690
  }
2634
2691
  E.on(n, e);
2635
2692
  }
2636
- }, Pt = (n, e) => {
2693
+ }, Dt = (n, e) => {
2637
2694
  if (!(typeof window > "u" || typeof document > "u")) {
2638
2695
  if (!E) {
2639
2696
  const t = N.findIndex((r) => r.event === n && r.callback === e);
@@ -2642,7 +2699,7 @@ const Ot = async (n) => {
2642
2699
  }
2643
2700
  E.off(n, e);
2644
2701
  }
2645
- }, Dt = () => typeof window > "u" || typeof document > "u" ? !1 : E !== null, Vt = () => {
2702
+ }, Vt = () => typeof window > "u" || typeof document > "u" ? !1 : E !== null, kt = () => {
2646
2703
  if (!(typeof window > "u" || typeof document > "u")) {
2647
2704
  if (F)
2648
2705
  throw new Error("[TraceLog] Destroy operation already in progress");
@@ -2657,13 +2714,13 @@ const Ot = async (n) => {
2657
2714
  F = !1;
2658
2715
  }
2659
2716
  }
2660
- }, or = {
2717
+ }, ar = {
2661
2718
  WEB_VITALS_THRESHOLDS: ye
2662
2719
  // Business thresholds for performance analysis
2663
- }, ar = {
2720
+ }, lr = {
2664
2721
  PII_PATTERNS: le
2665
2722
  // Patterns for sensitive data protection
2666
- }, lr = {
2723
+ }, cr = {
2667
2724
  LOW_ACTIVITY_EVENT_COUNT: 50,
2668
2725
  HIGH_ACTIVITY_EVENT_COUNT: 1e3,
2669
2726
  MIN_EVENTS_FOR_DYNAMIC_CALCULATION: 100,
@@ -2673,7 +2730,7 @@ const Ot = async (n) => {
2673
2730
  MIN_ENGAGED_SESSION_DURATION_MS: 30 * 1e3,
2674
2731
  MIN_SCROLL_DEPTH_ENGAGEMENT: 25
2675
2732
  // 25% scroll depth for engagement
2676
- }, cr = {
2733
+ }, ur = {
2677
2734
  INACTIVITY_TIMEOUT_MS: 1800 * 1e3,
2678
2735
  // 30min for analytics (vs 15min client)
2679
2736
  SHORT_SESSION_THRESHOLD_MS: 30 * 1e3,
@@ -2681,20 +2738,20 @@ const Ot = async (n) => {
2681
2738
  LONG_SESSION_THRESHOLD_MS: 1800 * 1e3,
2682
2739
  MAX_REALISTIC_SESSION_DURATION_MS: 480 * 60 * 1e3
2683
2740
  // Filter outliers
2684
- }, ur = {
2741
+ }, dr = {
2685
2742
  MOBILE_MAX_WIDTH: 768,
2686
2743
  TABLET_MAX_WIDTH: 1024,
2687
2744
  MOBILE_PERFORMANCE_FACTOR: 1.5,
2688
2745
  // Mobile typically 1.5x slower
2689
2746
  TABLET_PERFORMANCE_FACTOR: 1.2
2690
- }, dr = {
2747
+ }, hr = {
2691
2748
  MIN_TEXT_LENGTH_FOR_ANALYSIS: 10,
2692
2749
  MIN_CLICKS_FOR_HOT_ELEMENT: 10,
2693
2750
  // Popular element threshold
2694
2751
  MIN_SCROLL_COMPLETION_PERCENT: 80,
2695
2752
  // Page consumption threshold
2696
2753
  MIN_TIME_ON_PAGE_FOR_READ_MS: 15 * 1e3
2697
- }, hr = {
2754
+ }, fr = {
2698
2755
  SIGNIFICANT_CHANGE_PERCENT: 20,
2699
2756
  MAJOR_CHANGE_PERCENT: 50,
2700
2757
  MIN_EVENTS_FOR_INSIGHT: 100,
@@ -2704,19 +2761,19 @@ const Ot = async (n) => {
2704
2761
  LOW_ERROR_RATE_PERCENT: 1,
2705
2762
  HIGH_ERROR_RATE_PERCENT: 5,
2706
2763
  CRITICAL_ERROR_RATE_PERCENT: 10
2707
- }, fr = {
2764
+ }, Er = {
2708
2765
  SHORT_TERM_TREND_HOURS: 24,
2709
2766
  MEDIUM_TERM_TREND_DAYS: 7,
2710
2767
  LONG_TERM_TREND_DAYS: 30,
2711
2768
  MIN_DATA_POINTS_FOR_TREND: 5,
2712
2769
  WEEKLY_PATTERN_MIN_WEEKS: 4,
2713
2770
  DAILY_PATTERN_MIN_DAYS: 14
2714
- }, Er = {
2771
+ }, gr = {
2715
2772
  MIN_SEGMENT_SIZE: 10,
2716
2773
  MIN_COHORT_SIZE: 5,
2717
2774
  COHORT_ANALYSIS_DAYS: [1, 3, 7, 14, 30],
2718
2775
  MIN_FUNNEL_EVENTS: 20
2719
- }, gr = {
2776
+ }, mr = {
2720
2777
  DEFAULT_EVENTS_LIMIT: 5,
2721
2778
  DEFAULT_SESSIONS_LIMIT: 5,
2722
2779
  DEFAULT_PAGES_LIMIT: 5,
@@ -2724,23 +2781,23 @@ const Ot = async (n) => {
2724
2781
  MAX_TIME_RANGE_DAYS: 365,
2725
2782
  ANALYTICS_BATCH_SIZE: 1e3
2726
2783
  // For historical analysis
2727
- }, mr = {
2784
+ }, Sr = {
2728
2785
  ANOMALY_THRESHOLD_SIGMA: 2.5,
2729
2786
  STRONG_ANOMALY_THRESHOLD_SIGMA: 3,
2730
2787
  TRAFFIC_DROP_ALERT_PERCENT: -30,
2731
2788
  TRAFFIC_SPIKE_ALERT_PERCENT: 200,
2732
2789
  MIN_BASELINE_DAYS: 7,
2733
2790
  MIN_EVENTS_FOR_ANOMALY_DETECTION: 50
2734
- }, Sr = {
2791
+ }, Tr = {
2735
2792
  PAGE_URL_EXCLUDED: "excluded",
2736
2793
  PAGE_URL_UNKNOWN: "unknown"
2737
2794
  }, _r = {
2738
- init: Ot,
2739
- event: Ct,
2740
- on: bt,
2741
- off: Pt,
2742
- isInitialized: Dt,
2743
- destroy: Vt
2795
+ init: Ct,
2796
+ event: bt,
2797
+ on: Pt,
2798
+ off: Dt,
2799
+ isInitialized: Vt,
2800
+ destroy: kt
2744
2801
  };
2745
2802
  var re, Ne = -1, b = function(n) {
2746
2803
  addEventListener("pageshow", (function(e) {
@@ -2792,10 +2849,10 @@ var re, Ne = -1, b = function(n) {
2792
2849
  }, O = -1, ve = function() {
2793
2850
  return document.visibilityState !== "hidden" || document.prerendering ? 1 / 0 : 0;
2794
2851
  }, W = function(n) {
2795
- document.visibilityState === "hidden" && O > -1 && (O = n.type === "visibilitychange" ? n.timeStamp : 0, kt());
2852
+ document.visibilityState === "hidden" && O > -1 && (O = n.type === "visibilitychange" ? n.timeStamp : 0, Ht());
2796
2853
  }, Ae = function() {
2797
2854
  addEventListener("visibilitychange", W, !0), addEventListener("prerenderingchange", W, !0);
2798
- }, kt = function() {
2855
+ }, Ht = function() {
2799
2856
  removeEventListener("visibilitychange", W, !0), removeEventListener("prerenderingchange", W, !0);
2800
2857
  }, Re = function() {
2801
2858
  return O < 0 && (O = ve(), Ae(), b((function() {
@@ -2827,8 +2884,8 @@ var re, Ne = -1, b = function(n) {
2827
2884
  var t, r = p("CLS", 0), s = 0, i = [], o = function(c) {
2828
2885
  c.forEach((function(d) {
2829
2886
  if (!d.hadRecentInput) {
2830
- var _ = i[0], g = i[i.length - 1];
2831
- s && d.startTime - g.startTime < 1e3 && d.startTime - _.startTime < 5e3 ? (s += d.value, i.push(d)) : (s = d.value, i = [d]);
2887
+ var T = i[0], g = i[i.length - 1];
2888
+ s && d.startTime - g.startTime < 1e3 && d.startTime - T.startTime < 5e3 ? (s += d.value, i.push(d)) : (s = d.value, i = [d]);
2832
2889
  }
2833
2890
  })), s > r.value && (r.value = s, r.entries = i, t());
2834
2891
  }, l = k("layout-shift", o);
@@ -2840,31 +2897,31 @@ var re, Ne = -1, b = function(n) {
2840
2897
  }));
2841
2898
  })), setTimeout(t, 0));
2842
2899
  })));
2843
- }, Ce = 0, Y = 1 / 0, U = 0, Ht = function(n) {
2900
+ }, Ce = 0, Y = 1 / 0, H = 0, xt = function(n) {
2844
2901
  n.forEach((function(e) {
2845
- e.interactionId && (Y = Math.min(Y, e.interactionId), U = Math.max(U, e.interactionId), Ce = U ? (U - Y) / 7 + 1 : 0);
2902
+ e.interactionId && (Y = Math.min(Y, e.interactionId), H = Math.max(H, e.interactionId), Ce = H ? (H - Y) / 7 + 1 : 0);
2846
2903
  }));
2847
2904
  }, be = function() {
2848
2905
  return re ? Ce : performance.interactionCount || 0;
2849
- }, xt = function() {
2850
- "interactionCount" in performance || re || (re = k("event", Ht, { type: "event", buffered: !0, durationThreshold: 0 }));
2851
- }, T = [], G = /* @__PURE__ */ new Map(), Pe = 0, Ft = function() {
2852
- var n = Math.min(T.length - 1, Math.floor((be() - Pe) / 50));
2853
- return T[n];
2854
- }, Gt = [], Wt = function(n) {
2855
- if (Gt.forEach((function(s) {
2906
+ }, Ft = function() {
2907
+ "interactionCount" in performance || re || (re = k("event", xt, { type: "event", buffered: !0, durationThreshold: 0 }));
2908
+ }, _ = [], G = /* @__PURE__ */ new Map(), Pe = 0, Gt = function() {
2909
+ var n = Math.min(_.length - 1, Math.floor((be() - Pe) / 50));
2910
+ return _[n];
2911
+ }, Wt = [], Bt = function(n) {
2912
+ if (Wt.forEach((function(s) {
2856
2913
  return s(n);
2857
2914
  })), n.interactionId || n.entryType === "first-input") {
2858
- var e = T[T.length - 1], t = G.get(n.interactionId);
2859
- if (t || T.length < 10 || n.duration > e.latency) {
2915
+ var e = _[_.length - 1], t = G.get(n.interactionId);
2916
+ if (t || _.length < 10 || n.duration > e.latency) {
2860
2917
  if (t) n.duration > t.latency ? (t.entries = [n], t.latency = n.duration) : n.duration === t.latency && n.startTime === t.entries[0].startTime && t.entries.push(n);
2861
2918
  else {
2862
2919
  var r = { id: n.interactionId, latency: n.duration, entries: [n] };
2863
- G.set(r.id, r), T.push(r);
2920
+ G.set(r.id, r), _.push(r);
2864
2921
  }
2865
- T.sort((function(s, i) {
2922
+ _.sort((function(s, i) {
2866
2923
  return i.latency - s.latency;
2867
- })), T.length > 10 && T.splice(10).forEach((function(s) {
2924
+ })), _.length > 10 && _.splice(10).forEach((function(s) {
2868
2925
  return G.delete(s.id);
2869
2926
  }));
2870
2927
  }
@@ -2872,24 +2929,24 @@ var re, Ne = -1, b = function(n) {
2872
2929
  }, De = function(n) {
2873
2930
  var e = self.requestIdleCallback || self.setTimeout, t = -1;
2874
2931
  return n = de(n), document.visibilityState === "hidden" ? n() : (t = e(n), X(n)), t;
2875
- }, ie = [200, 500], Bt = function(n, e) {
2932
+ }, ie = [200, 500], Xt = function(n, e) {
2876
2933
  "PerformanceEventTiming" in self && "interactionId" in PerformanceEventTiming.prototype && (e = e || {}, $((function() {
2877
2934
  var t;
2878
- xt();
2935
+ Ft();
2879
2936
  var r, s = p("INP"), i = function(l) {
2880
2937
  De((function() {
2881
- l.forEach(Wt);
2882
- var c = Ft();
2938
+ l.forEach(Bt);
2939
+ var c = Gt();
2883
2940
  c && c.latency !== s.value && (s.value = c.latency, s.entries = c.entries, r());
2884
2941
  }));
2885
2942
  }, o = k("event", i, { durationThreshold: (t = e.durationThreshold) !== null && t !== void 0 ? t : 40 });
2886
2943
  r = I(n, s, ie, e.reportAllChanges), o && (o.observe({ type: "first-input", buffered: !0 }), X((function() {
2887
2944
  i(o.takeRecords()), r(!0);
2888
2945
  })), b((function() {
2889
- Pe = be(), T.length = 0, G.clear(), s = p("INP"), r = I(n, s, ie, e.reportAllChanges);
2946
+ Pe = be(), _.length = 0, G.clear(), s = p("INP"), r = I(n, s, ie, e.reportAllChanges);
2890
2947
  })));
2891
2948
  })));
2892
- }, oe = [2500, 4e3], K = {}, Xt = function(n, e) {
2949
+ }, oe = [2500, 4e3], K = {}, $t = function(n, e) {
2893
2950
  e = e || {}, $((function() {
2894
2951
  var t, r = Re(), s = p("LCP"), i = function(c) {
2895
2952
  e.reportAllChanges || (c = c.slice(-1)), c.forEach((function(d) {
@@ -2912,23 +2969,23 @@ var re, Ne = -1, b = function(n) {
2912
2969
  }));
2913
2970
  }
2914
2971
  }));
2915
- }, ae = [800, 1800], $t = function n(e) {
2972
+ }, ae = [800, 1800], zt = function n(e) {
2916
2973
  document.prerendering ? $((function() {
2917
2974
  return n(e);
2918
2975
  })) : document.readyState !== "complete" ? addEventListener("load", (function() {
2919
2976
  return n(e);
2920
2977
  }), !0) : setTimeout(e, 0);
2921
- }, zt = function(n, e) {
2978
+ }, Qt = function(n, e) {
2922
2979
  e = e || {};
2923
2980
  var t = p("TTFB"), r = I(n, t, ae, e.reportAllChanges);
2924
- $t((function() {
2981
+ zt((function() {
2925
2982
  var s = ce();
2926
2983
  s && (t.value = Math.max(s.responseStart - B(), 0), t.entries = [s], r(!0), b((function() {
2927
2984
  t = p("TTFB", 0), (r = I(n, t, ae, e.reportAllChanges))(!0);
2928
2985
  })));
2929
2986
  }));
2930
2987
  };
2931
- const Qt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2988
+ const jt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2932
2989
  __proto__: null,
2933
2990
  CLSThresholds: se,
2934
2991
  FCPThresholds: ne,
@@ -2937,47 +2994,47 @@ const Qt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2937
2994
  TTFBThresholds: ae,
2938
2995
  onCLS: Ut,
2939
2996
  onFCP: Oe,
2940
- onINP: Bt,
2941
- onLCP: Xt,
2942
- onTTFB: zt
2997
+ onINP: Xt,
2998
+ onLCP: $t,
2999
+ onTTFB: Qt
2943
3000
  }, Symbol.toStringTag, { value: "Module" }));
2944
3001
  export {
2945
- gr as ANALYTICS_QUERY_LIMITS,
2946
- mr as ANOMALY_DETECTION,
3002
+ mr as ANALYTICS_QUERY_LIMITS,
3003
+ Sr as ANOMALY_DETECTION,
2947
3004
  f as AppConfigValidationError,
2948
- dr as CONTENT_ANALYTICS,
2949
- ar as DATA_PROTECTION,
2950
- ur as DEVICE_ANALYTICS,
2951
- w as DeviceType,
2952
- lr as ENGAGEMENT_THRESHOLDS,
3005
+ hr as CONTENT_ANALYTICS,
3006
+ lr as DATA_PROTECTION,
3007
+ dr as DEVICE_ANALYTICS,
3008
+ y as DeviceType,
3009
+ cr as ENGAGEMENT_THRESHOLDS,
2953
3010
  Z as EmitterEvent,
2954
3011
  P as ErrorType,
2955
3012
  u as EventType,
2956
- hr as INSIGHT_THRESHOLDS,
2957
- ir as InitializationTimeoutError,
3013
+ fr as INSIGHT_THRESHOLDS,
3014
+ or as InitializationTimeoutError,
2958
3015
  M as IntegrationValidationError,
2959
- rr as MAX_ARRAY_LENGTH,
2960
- qt as MAX_CUSTOM_EVENT_ARRAY_SIZE,
2961
- Kt as MAX_CUSTOM_EVENT_KEYS,
2962
- jt as MAX_CUSTOM_EVENT_NAME_LENGTH,
2963
- Yt as MAX_CUSTOM_EVENT_STRING_SIZE,
2964
- Jt as MAX_METADATA_NESTING_DEPTH,
2965
- Zt as MAX_NESTED_OBJECT_KEYS,
2966
- er as MAX_STRING_LENGTH,
2967
- tr as MAX_STRING_LENGTH_IN_ARRAY,
3016
+ nr as MAX_ARRAY_LENGTH,
3017
+ Zt as MAX_CUSTOM_EVENT_ARRAY_SIZE,
3018
+ qt as MAX_CUSTOM_EVENT_KEYS,
3019
+ Yt as MAX_CUSTOM_EVENT_NAME_LENGTH,
3020
+ Kt as MAX_CUSTOM_EVENT_STRING_SIZE,
3021
+ er as MAX_METADATA_NESTING_DEPTH,
3022
+ Jt as MAX_NESTED_OBJECT_KEYS,
3023
+ tr as MAX_STRING_LENGTH,
3024
+ rr as MAX_STRING_LENGTH_IN_ARRAY,
2968
3025
  D as Mode,
2969
- or as PERFORMANCE_CONFIG,
3026
+ ar as PERFORMANCE_CONFIG,
2970
3027
  R as PermanentError,
2971
- Er as SEGMENTATION_ANALYTICS,
2972
- cr as SESSION_ANALYTICS,
2973
- Sr as SPECIAL_PAGE_URLS,
3028
+ gr as SEGMENTATION_ANALYTICS,
3029
+ ur as SESSION_ANALYTICS,
3030
+ Tr as SPECIAL_PAGE_URLS,
2974
3031
  he as SamplingRateValidationError,
2975
- H as ScrollDirection,
3032
+ U as ScrollDirection,
2976
3033
  Ge as SessionTimeoutValidationError,
2977
3034
  q as SpecialApiUrl,
2978
- fr as TEMPORAL_ANALYSIS,
3035
+ Er as TEMPORAL_ANALYSIS,
2979
3036
  V as TraceLogValidationError,
2980
- nr as isPrimaryScrollEvent,
2981
- sr as isSecondaryScrollEvent,
3037
+ sr as isPrimaryScrollEvent,
3038
+ ir as isSecondaryScrollEvent,
2982
3039
  _r as tracelog
2983
3040
  };