@tracelog/lib 0.0.1

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 (301) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +217 -0
  3. package/dist/browser/tracelog.js +4040 -0
  4. package/dist/browser/web-vitals-CCnqwnC8.mjs +198 -0
  5. package/dist/cjs/api.d.ts +46 -0
  6. package/dist/cjs/api.js +224 -0
  7. package/dist/cjs/app.constants.d.ts +1 -0
  8. package/dist/cjs/app.constants.js +5 -0
  9. package/dist/cjs/app.d.ts +59 -0
  10. package/dist/cjs/app.js +272 -0
  11. package/dist/cjs/app.types.d.ts +6 -0
  12. package/dist/cjs/app.types.js +22 -0
  13. package/dist/cjs/constants/api.constants.d.ts +4 -0
  14. package/dist/cjs/constants/api.constants.js +18 -0
  15. package/dist/cjs/constants/browser.constants.d.ts +3 -0
  16. package/dist/cjs/constants/browser.constants.js +41 -0
  17. package/dist/cjs/constants/index.d.ts +8 -0
  18. package/dist/cjs/constants/index.js +24 -0
  19. package/dist/cjs/constants/initialization.constants.d.ts +40 -0
  20. package/dist/cjs/constants/initialization.constants.js +48 -0
  21. package/dist/cjs/constants/limits.constants.d.ts +25 -0
  22. package/dist/cjs/constants/limits.constants.js +40 -0
  23. package/dist/cjs/constants/security.constants.d.ts +1 -0
  24. package/dist/cjs/constants/security.constants.js +12 -0
  25. package/dist/cjs/constants/storage.constants.d.ts +9 -0
  26. package/dist/cjs/constants/storage.constants.js +22 -0
  27. package/dist/cjs/constants/timing.constants.d.ts +22 -0
  28. package/dist/cjs/constants/timing.constants.js +34 -0
  29. package/dist/cjs/constants/validation.constants.d.ts +13 -0
  30. package/dist/cjs/constants/validation.constants.js +31 -0
  31. package/dist/cjs/handlers/click.handler.d.ts +17 -0
  32. package/dist/cjs/handlers/click.handler.js +199 -0
  33. package/dist/cjs/handlers/error.handler.d.ts +15 -0
  34. package/dist/cjs/handlers/error.handler.js +97 -0
  35. package/dist/cjs/handlers/network.handler.d.ts +16 -0
  36. package/dist/cjs/handlers/network.handler.js +136 -0
  37. package/dist/cjs/handlers/page-view.handler.d.ts +15 -0
  38. package/dist/cjs/handlers/page-view.handler.js +83 -0
  39. package/dist/cjs/handlers/performance.handler.d.ts +19 -0
  40. package/dist/cjs/handlers/performance.handler.js +255 -0
  41. package/dist/cjs/handlers/scroll.handler.d.ts +16 -0
  42. package/dist/cjs/handlers/scroll.handler.js +138 -0
  43. package/dist/cjs/handlers/session.handler.d.ts +29 -0
  44. package/dist/cjs/handlers/session.handler.js +357 -0
  45. package/dist/cjs/integrations/google-analytics.integration.d.ts +18 -0
  46. package/dist/cjs/integrations/google-analytics.integration.js +159 -0
  47. package/dist/cjs/listeners/activity-listener-manager.d.ts +8 -0
  48. package/dist/cjs/listeners/activity-listener-manager.js +32 -0
  49. package/dist/cjs/listeners/index.d.ts +6 -0
  50. package/dist/cjs/listeners/index.js +14 -0
  51. package/dist/cjs/listeners/input-listener-managers.d.ts +15 -0
  52. package/dist/cjs/listeners/input-listener-managers.js +58 -0
  53. package/dist/cjs/listeners/listeners.types.d.ts +4 -0
  54. package/dist/cjs/listeners/listeners.types.js +2 -0
  55. package/dist/cjs/listeners/touch-listener-manager.d.ts +10 -0
  56. package/dist/cjs/listeners/touch-listener-manager.js +56 -0
  57. package/dist/cjs/listeners/unload-listener-manager.d.ts +8 -0
  58. package/dist/cjs/listeners/unload-listener-manager.js +30 -0
  59. package/dist/cjs/listeners/visibility-listener-manager.d.ts +12 -0
  60. package/dist/cjs/listeners/visibility-listener-manager.js +83 -0
  61. package/dist/cjs/managers/api.manager.d.ts +3 -0
  62. package/dist/cjs/managers/api.manager.js +14 -0
  63. package/dist/cjs/managers/config.manager.d.ts +7 -0
  64. package/dist/cjs/managers/config.manager.js +94 -0
  65. package/dist/cjs/managers/cross-tab-session.manager.d.ts +170 -0
  66. package/dist/cjs/managers/cross-tab-session.manager.js +730 -0
  67. package/dist/cjs/managers/event.manager.d.ts +61 -0
  68. package/dist/cjs/managers/event.manager.js +508 -0
  69. package/dist/cjs/managers/sampling.manager.d.ts +8 -0
  70. package/dist/cjs/managers/sampling.manager.js +53 -0
  71. package/dist/cjs/managers/sender.manager.d.ts +46 -0
  72. package/dist/cjs/managers/sender.manager.js +304 -0
  73. package/dist/cjs/managers/session-recovery.manager.d.ts +65 -0
  74. package/dist/cjs/managers/session-recovery.manager.js +237 -0
  75. package/dist/cjs/managers/session.manager.d.ts +72 -0
  76. package/dist/cjs/managers/session.manager.js +587 -0
  77. package/dist/cjs/managers/state.manager.d.ts +5 -0
  78. package/dist/cjs/managers/state.manager.js +23 -0
  79. package/dist/cjs/managers/storage.manager.d.ts +10 -0
  80. package/dist/cjs/managers/storage.manager.js +81 -0
  81. package/dist/cjs/managers/tags.manager.d.ts +12 -0
  82. package/dist/cjs/managers/tags.manager.js +289 -0
  83. package/dist/cjs/managers/user.manager.d.ts +7 -0
  84. package/dist/cjs/managers/user.manager.js +22 -0
  85. package/dist/cjs/public-api.d.ts +1 -0
  86. package/dist/cjs/public-api.js +37 -0
  87. package/dist/cjs/types/api.types.d.ts +21 -0
  88. package/dist/cjs/types/api.types.js +25 -0
  89. package/dist/cjs/types/common.types.d.ts +1 -0
  90. package/dist/cjs/types/common.types.js +2 -0
  91. package/dist/cjs/types/config.types.d.ts +104 -0
  92. package/dist/cjs/types/config.types.js +2 -0
  93. package/dist/cjs/types/device.types.d.ts +6 -0
  94. package/dist/cjs/types/device.types.js +10 -0
  95. package/dist/cjs/types/event.types.d.ts +104 -0
  96. package/dist/cjs/types/event.types.js +25 -0
  97. package/dist/cjs/types/index.d.ts +13 -0
  98. package/dist/cjs/types/index.js +29 -0
  99. package/dist/cjs/types/log.types.d.ts +4 -0
  100. package/dist/cjs/types/log.types.js +2 -0
  101. package/dist/cjs/types/mode.types.d.ts +7 -0
  102. package/dist/cjs/types/mode.types.js +11 -0
  103. package/dist/cjs/types/queue.types.d.ts +23 -0
  104. package/dist/cjs/types/queue.types.js +2 -0
  105. package/dist/cjs/types/session.types.d.ts +65 -0
  106. package/dist/cjs/types/session.types.js +2 -0
  107. package/dist/cjs/types/state.types.d.ts +12 -0
  108. package/dist/cjs/types/state.types.js +2 -0
  109. package/dist/cjs/types/tag.types.d.ts +43 -0
  110. package/dist/cjs/types/tag.types.js +31 -0
  111. package/dist/cjs/types/validation-error.types.d.ts +42 -0
  112. package/dist/cjs/types/validation-error.types.js +68 -0
  113. package/dist/cjs/types/web-vitals.types.d.ts +6 -0
  114. package/dist/cjs/types/web-vitals.types.js +2 -0
  115. package/dist/cjs/types/window.types.d.ts +17 -0
  116. package/dist/cjs/types/window.types.js +2 -0
  117. package/dist/cjs/utils/browser/device-detector.utils.d.ts +6 -0
  118. package/dist/cjs/utils/browser/device-detector.utils.js +71 -0
  119. package/dist/cjs/utils/browser/index.d.ts +2 -0
  120. package/dist/cjs/utils/browser/index.js +18 -0
  121. package/dist/cjs/utils/browser/utm-params.utils.d.ts +6 -0
  122. package/dist/cjs/utils/browser/utm-params.utils.js +37 -0
  123. package/dist/cjs/utils/data/index.d.ts +1 -0
  124. package/dist/cjs/utils/data/index.js +17 -0
  125. package/dist/cjs/utils/data/uuid.utils.d.ts +5 -0
  126. package/dist/cjs/utils/data/uuid.utils.js +18 -0
  127. package/dist/cjs/utils/index.d.ts +6 -0
  128. package/dist/cjs/utils/index.js +22 -0
  129. package/dist/cjs/utils/logging/debug-logger.utils.d.ts +56 -0
  130. package/dist/cjs/utils/logging/debug-logger.utils.js +139 -0
  131. package/dist/cjs/utils/logging/index.d.ts +1 -0
  132. package/dist/cjs/utils/logging/index.js +5 -0
  133. package/dist/cjs/utils/network/index.d.ts +1 -0
  134. package/dist/cjs/utils/network/index.js +17 -0
  135. package/dist/cjs/utils/network/url.utils.d.ts +20 -0
  136. package/dist/cjs/utils/network/url.utils.js +172 -0
  137. package/dist/cjs/utils/security/index.d.ts +1 -0
  138. package/dist/cjs/utils/security/index.js +17 -0
  139. package/dist/cjs/utils/security/sanitize.utils.d.ts +32 -0
  140. package/dist/cjs/utils/security/sanitize.utils.js +319 -0
  141. package/dist/cjs/utils/validations/config-validations.utils.d.ts +42 -0
  142. package/dist/cjs/utils/validations/config-validations.utils.js +297 -0
  143. package/dist/cjs/utils/validations/event-validations.utils.d.ts +12 -0
  144. package/dist/cjs/utils/validations/event-validations.utils.js +30 -0
  145. package/dist/cjs/utils/validations/index.d.ts +5 -0
  146. package/dist/cjs/utils/validations/index.js +21 -0
  147. package/dist/cjs/utils/validations/metadata-validations.utils.d.ts +22 -0
  148. package/dist/cjs/utils/validations/metadata-validations.utils.js +115 -0
  149. package/dist/cjs/utils/validations/type-guards.utils.d.ts +6 -0
  150. package/dist/cjs/utils/validations/type-guards.utils.js +31 -0
  151. package/dist/cjs/utils/validations/url-validations.utils.d.ts +15 -0
  152. package/dist/cjs/utils/validations/url-validations.utils.js +47 -0
  153. package/dist/esm/api.d.ts +46 -0
  154. package/dist/esm/api.js +183 -0
  155. package/dist/esm/app.constants.d.ts +1 -0
  156. package/dist/esm/app.constants.js +1 -0
  157. package/dist/esm/app.d.ts +59 -0
  158. package/dist/esm/app.js +268 -0
  159. package/dist/esm/app.types.d.ts +6 -0
  160. package/dist/esm/app.types.js +6 -0
  161. package/dist/esm/constants/api.constants.d.ts +4 -0
  162. package/dist/esm/constants/api.constants.js +14 -0
  163. package/dist/esm/constants/browser.constants.d.ts +3 -0
  164. package/dist/esm/constants/browser.constants.js +38 -0
  165. package/dist/esm/constants/index.d.ts +8 -0
  166. package/dist/esm/constants/index.js +8 -0
  167. package/dist/esm/constants/initialization.constants.d.ts +40 -0
  168. package/dist/esm/constants/initialization.constants.js +45 -0
  169. package/dist/esm/constants/limits.constants.d.ts +25 -0
  170. package/dist/esm/constants/limits.constants.js +37 -0
  171. package/dist/esm/constants/security.constants.d.ts +1 -0
  172. package/dist/esm/constants/security.constants.js +9 -0
  173. package/dist/esm/constants/storage.constants.d.ts +9 -0
  174. package/dist/esm/constants/storage.constants.js +11 -0
  175. package/dist/esm/constants/timing.constants.d.ts +22 -0
  176. package/dist/esm/constants/timing.constants.js +31 -0
  177. package/dist/esm/constants/validation.constants.d.ts +13 -0
  178. package/dist/esm/constants/validation.constants.js +28 -0
  179. package/dist/esm/handlers/click.handler.d.ts +17 -0
  180. package/dist/esm/handlers/click.handler.js +195 -0
  181. package/dist/esm/handlers/error.handler.d.ts +15 -0
  182. package/dist/esm/handlers/error.handler.js +93 -0
  183. package/dist/esm/handlers/network.handler.d.ts +16 -0
  184. package/dist/esm/handlers/network.handler.js +132 -0
  185. package/dist/esm/handlers/page-view.handler.d.ts +15 -0
  186. package/dist/esm/handlers/page-view.handler.js +79 -0
  187. package/dist/esm/handlers/performance.handler.d.ts +19 -0
  188. package/dist/esm/handlers/performance.handler.js +218 -0
  189. package/dist/esm/handlers/scroll.handler.d.ts +16 -0
  190. package/dist/esm/handlers/scroll.handler.js +134 -0
  191. package/dist/esm/handlers/session.handler.d.ts +29 -0
  192. package/dist/esm/handlers/session.handler.js +353 -0
  193. package/dist/esm/integrations/google-analytics.integration.d.ts +18 -0
  194. package/dist/esm/integrations/google-analytics.integration.js +155 -0
  195. package/dist/esm/listeners/activity-listener-manager.d.ts +8 -0
  196. package/dist/esm/listeners/activity-listener-manager.js +28 -0
  197. package/dist/esm/listeners/index.d.ts +6 -0
  198. package/dist/esm/listeners/index.js +5 -0
  199. package/dist/esm/listeners/input-listener-managers.d.ts +15 -0
  200. package/dist/esm/listeners/input-listener-managers.js +53 -0
  201. package/dist/esm/listeners/listeners.types.d.ts +4 -0
  202. package/dist/esm/listeners/listeners.types.js +1 -0
  203. package/dist/esm/listeners/touch-listener-manager.d.ts +10 -0
  204. package/dist/esm/listeners/touch-listener-manager.js +52 -0
  205. package/dist/esm/listeners/unload-listener-manager.d.ts +8 -0
  206. package/dist/esm/listeners/unload-listener-manager.js +26 -0
  207. package/dist/esm/listeners/visibility-listener-manager.d.ts +12 -0
  208. package/dist/esm/listeners/visibility-listener-manager.js +79 -0
  209. package/dist/esm/managers/api.manager.d.ts +3 -0
  210. package/dist/esm/managers/api.manager.js +10 -0
  211. package/dist/esm/managers/config.manager.d.ts +7 -0
  212. package/dist/esm/managers/config.manager.js +90 -0
  213. package/dist/esm/managers/cross-tab-session.manager.d.ts +170 -0
  214. package/dist/esm/managers/cross-tab-session.manager.js +726 -0
  215. package/dist/esm/managers/event.manager.d.ts +61 -0
  216. package/dist/esm/managers/event.manager.js +504 -0
  217. package/dist/esm/managers/sampling.manager.d.ts +8 -0
  218. package/dist/esm/managers/sampling.manager.js +49 -0
  219. package/dist/esm/managers/sender.manager.d.ts +46 -0
  220. package/dist/esm/managers/sender.manager.js +300 -0
  221. package/dist/esm/managers/session-recovery.manager.d.ts +65 -0
  222. package/dist/esm/managers/session-recovery.manager.js +233 -0
  223. package/dist/esm/managers/session.manager.d.ts +72 -0
  224. package/dist/esm/managers/session.manager.js +583 -0
  225. package/dist/esm/managers/state.manager.d.ts +5 -0
  226. package/dist/esm/managers/state.manager.js +19 -0
  227. package/dist/esm/managers/storage.manager.d.ts +10 -0
  228. package/dist/esm/managers/storage.manager.js +77 -0
  229. package/dist/esm/managers/tags.manager.d.ts +12 -0
  230. package/dist/esm/managers/tags.manager.js +285 -0
  231. package/dist/esm/managers/user.manager.d.ts +7 -0
  232. package/dist/esm/managers/user.manager.js +18 -0
  233. package/dist/esm/public-api.d.ts +1 -0
  234. package/dist/esm/public-api.js +1 -0
  235. package/dist/esm/types/api.types.d.ts +21 -0
  236. package/dist/esm/types/api.types.js +22 -0
  237. package/dist/esm/types/common.types.d.ts +1 -0
  238. package/dist/esm/types/common.types.js +1 -0
  239. package/dist/esm/types/config.types.d.ts +104 -0
  240. package/dist/esm/types/config.types.js +1 -0
  241. package/dist/esm/types/device.types.d.ts +6 -0
  242. package/dist/esm/types/device.types.js +7 -0
  243. package/dist/esm/types/event.types.d.ts +104 -0
  244. package/dist/esm/types/event.types.js +22 -0
  245. package/dist/esm/types/index.d.ts +13 -0
  246. package/dist/esm/types/index.js +13 -0
  247. package/dist/esm/types/log.types.d.ts +4 -0
  248. package/dist/esm/types/log.types.js +1 -0
  249. package/dist/esm/types/mode.types.d.ts +7 -0
  250. package/dist/esm/types/mode.types.js +8 -0
  251. package/dist/esm/types/queue.types.d.ts +23 -0
  252. package/dist/esm/types/queue.types.js +1 -0
  253. package/dist/esm/types/session.types.d.ts +65 -0
  254. package/dist/esm/types/session.types.js +1 -0
  255. package/dist/esm/types/state.types.d.ts +12 -0
  256. package/dist/esm/types/state.types.js +1 -0
  257. package/dist/esm/types/tag.types.d.ts +43 -0
  258. package/dist/esm/types/tag.types.js +28 -0
  259. package/dist/esm/types/validation-error.types.d.ts +42 -0
  260. package/dist/esm/types/validation-error.types.js +59 -0
  261. package/dist/esm/types/web-vitals.types.d.ts +6 -0
  262. package/dist/esm/types/web-vitals.types.js +1 -0
  263. package/dist/esm/types/window.types.d.ts +17 -0
  264. package/dist/esm/types/window.types.js +1 -0
  265. package/dist/esm/utils/browser/device-detector.utils.d.ts +6 -0
  266. package/dist/esm/utils/browser/device-detector.utils.js +67 -0
  267. package/dist/esm/utils/browser/index.d.ts +2 -0
  268. package/dist/esm/utils/browser/index.js +2 -0
  269. package/dist/esm/utils/browser/utm-params.utils.d.ts +6 -0
  270. package/dist/esm/utils/browser/utm-params.utils.js +33 -0
  271. package/dist/esm/utils/data/index.d.ts +1 -0
  272. package/dist/esm/utils/data/index.js +1 -0
  273. package/dist/esm/utils/data/uuid.utils.d.ts +5 -0
  274. package/dist/esm/utils/data/uuid.utils.js +14 -0
  275. package/dist/esm/utils/index.d.ts +6 -0
  276. package/dist/esm/utils/index.js +6 -0
  277. package/dist/esm/utils/logging/debug-logger.utils.d.ts +56 -0
  278. package/dist/esm/utils/logging/debug-logger.utils.js +136 -0
  279. package/dist/esm/utils/logging/index.d.ts +1 -0
  280. package/dist/esm/utils/logging/index.js +1 -0
  281. package/dist/esm/utils/network/index.d.ts +1 -0
  282. package/dist/esm/utils/network/index.js +1 -0
  283. package/dist/esm/utils/network/url.utils.d.ts +20 -0
  284. package/dist/esm/utils/network/url.utils.js +166 -0
  285. package/dist/esm/utils/security/index.d.ts +1 -0
  286. package/dist/esm/utils/security/index.js +1 -0
  287. package/dist/esm/utils/security/sanitize.utils.d.ts +32 -0
  288. package/dist/esm/utils/security/sanitize.utils.js +311 -0
  289. package/dist/esm/utils/validations/config-validations.utils.d.ts +42 -0
  290. package/dist/esm/utils/validations/config-validations.utils.js +289 -0
  291. package/dist/esm/utils/validations/event-validations.utils.d.ts +12 -0
  292. package/dist/esm/utils/validations/event-validations.utils.js +26 -0
  293. package/dist/esm/utils/validations/index.d.ts +5 -0
  294. package/dist/esm/utils/validations/index.js +5 -0
  295. package/dist/esm/utils/validations/metadata-validations.utils.d.ts +22 -0
  296. package/dist/esm/utils/validations/metadata-validations.utils.js +110 -0
  297. package/dist/esm/utils/validations/type-guards.utils.d.ts +6 -0
  298. package/dist/esm/utils/validations/type-guards.utils.js +27 -0
  299. package/dist/esm/utils/validations/url-validations.utils.d.ts +15 -0
  300. package/dist/esm/utils/validations/url-validations.utils.js +42 -0
  301. package/package.json +80 -0
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUTMParameters = void 0;
4
+ const constants_1 = require("../../constants");
5
+ const logging_1 = require("../logging");
6
+ /**
7
+ * Extracts UTM parameters from the current URL
8
+ * @returns UTM parameters object or undefined if none found
9
+ */
10
+ const getUTMParameters = () => {
11
+ logging_1.debugLog.debug('UTMParams', 'Extracting UTM parameters from URL', {
12
+ url: window.location.href,
13
+ search: window.location.search,
14
+ });
15
+ const urlParams = new URLSearchParams(window.location.search);
16
+ const utmParams = {};
17
+ constants_1.UTM_PARAMS.forEach((param) => {
18
+ const value = urlParams.get(param);
19
+ if (value) {
20
+ const key = param.split('utm_')[1];
21
+ utmParams[key] = value;
22
+ logging_1.debugLog.debug('UTMParams', 'Found UTM parameter', { param, key, value });
23
+ }
24
+ });
25
+ const result = Object.keys(utmParams).length ? utmParams : undefined;
26
+ if (result) {
27
+ logging_1.debugLog.debug('UTMParams', 'UTM parameters extracted successfully', {
28
+ parameterCount: Object.keys(result).length,
29
+ parameters: Object.keys(result),
30
+ });
31
+ }
32
+ else {
33
+ logging_1.debugLog.debug('UTMParams', 'No UTM parameters found in URL');
34
+ }
35
+ return result;
36
+ };
37
+ exports.getUTMParameters = getUTMParameters;
@@ -0,0 +1 @@
1
+ export * from './uuid.utils';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./uuid.utils"), exports);
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generates a RFC4122 compliant UUID v4
3
+ * @returns A UUID string
4
+ */
5
+ export declare const generateUUID: () => string;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateUUID = void 0;
4
+ const logging_1 = require("../logging");
5
+ /**
6
+ * Generates a RFC4122 compliant UUID v4
7
+ * @returns A UUID string
8
+ */
9
+ const generateUUID = () => {
10
+ const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
11
+ const r = (Math.random() * 16) | 0;
12
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
13
+ return v.toString(16);
14
+ });
15
+ logging_1.debugLog.verbose('UUIDUtils', 'Generated new UUID', { uuid });
16
+ return uuid;
17
+ };
18
+ exports.generateUUID = generateUUID;
@@ -0,0 +1,6 @@
1
+ export * from './browser';
2
+ export * from './data';
3
+ export * from './logging';
4
+ export * from './network';
5
+ export * from './security';
6
+ export * from './validations';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./browser"), exports);
18
+ __exportStar(require("./data"), exports);
19
+ __exportStar(require("./logging"), exports);
20
+ __exportStar(require("./network"), exports);
21
+ __exportStar(require("./security"), exports);
22
+ __exportStar(require("./validations"), exports);
@@ -0,0 +1,56 @@
1
+ import { StateManager } from '../../managers/state.manager';
2
+ /**
3
+ * Debug logger class that extends StateManager for clean access to global state
4
+ */
5
+ declare class DebugLogger extends StateManager {
6
+ /**
7
+ * Client-facing error - Configuration/usage errors by the client
8
+ * Console: qa and debug modes | Events: NODE_ENV=dev
9
+ */
10
+ clientError(namespace: string, message: string, data?: unknown): void;
11
+ /**
12
+ * Client-facing warning - Configuration/usage warnings by the client
13
+ * Console: qa and debug modes | Events: NODE_ENV=dev
14
+ */
15
+ clientWarn(namespace: string, message: string, data?: unknown): void;
16
+ /**
17
+ * General operational information
18
+ * Console: qa and debug modes | Events: NODE_ENV=dev
19
+ */
20
+ info(namespace: string, message: string, data?: unknown): void;
21
+ /**
22
+ * Internal library errors
23
+ * Console: debug mode only | Events: NODE_ENV=dev
24
+ */
25
+ error(namespace: string, message: string, data?: unknown): void;
26
+ /**
27
+ * Internal library warnings
28
+ * Console: debug mode only | Events: NODE_ENV=dev
29
+ */
30
+ warn(namespace: string, message: string, data?: unknown): void;
31
+ /**
32
+ * Strategic debug information
33
+ * Console: debug mode only | Events: NODE_ENV=dev
34
+ */
35
+ debug(namespace: string, message: string, data?: unknown): void;
36
+ /**
37
+ * Detailed trace information
38
+ * Console: debug mode only | Events: NODE_ENV=dev
39
+ */
40
+ verbose(namespace: string, message: string, data?: unknown): void;
41
+ private getCurrentMode;
42
+ private shouldShowLog;
43
+ private formatMessage;
44
+ private getConsoleMethod;
45
+ private logMessage;
46
+ /**
47
+ * Dispatches tracelog:log events for E2E testing and development debugging
48
+ */
49
+ private dispatchEvent;
50
+ }
51
+ /**
52
+ * Singleton debug logger instance
53
+ * Provides the same API as before: debugLog.clientError(), debugLog.info(), etc.
54
+ */
55
+ export declare const debugLog: DebugLogger;
56
+ export {};
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.debugLog = void 0;
4
+ const state_manager_1 = require("../../managers/state.manager");
5
+ /**
6
+ * Debug logger class that extends StateManager for clean access to global state
7
+ */
8
+ class DebugLogger extends state_manager_1.StateManager {
9
+ /**
10
+ * Client-facing error - Configuration/usage errors by the client
11
+ * Console: qa and debug modes | Events: NODE_ENV=dev
12
+ */
13
+ clientError(namespace, message, data) {
14
+ this.logMessage('CLIENT_ERROR', namespace, message, data);
15
+ }
16
+ /**
17
+ * Client-facing warning - Configuration/usage warnings by the client
18
+ * Console: qa and debug modes | Events: NODE_ENV=dev
19
+ */
20
+ clientWarn(namespace, message, data) {
21
+ this.logMessage('CLIENT_WARN', namespace, message, data);
22
+ }
23
+ /**
24
+ * General operational information
25
+ * Console: qa and debug modes | Events: NODE_ENV=dev
26
+ */
27
+ info(namespace, message, data) {
28
+ this.logMessage('INFO', namespace, message, data);
29
+ }
30
+ /**
31
+ * Internal library errors
32
+ * Console: debug mode only | Events: NODE_ENV=dev
33
+ */
34
+ error(namespace, message, data) {
35
+ this.logMessage('ERROR', namespace, message, data);
36
+ }
37
+ /**
38
+ * Internal library warnings
39
+ * Console: debug mode only | Events: NODE_ENV=dev
40
+ */
41
+ warn(namespace, message, data) {
42
+ this.logMessage('WARN', namespace, message, data);
43
+ }
44
+ /**
45
+ * Strategic debug information
46
+ * Console: debug mode only | Events: NODE_ENV=dev
47
+ */
48
+ debug(namespace, message, data) {
49
+ this.logMessage('DEBUG', namespace, message, data);
50
+ }
51
+ /**
52
+ * Detailed trace information
53
+ * Console: debug mode only | Events: NODE_ENV=dev
54
+ */
55
+ verbose(namespace, message, data) {
56
+ this.logMessage('VERBOSE', namespace, message, data);
57
+ }
58
+ getCurrentMode() {
59
+ try {
60
+ return this.get('config')?.mode;
61
+ }
62
+ catch {
63
+ return undefined;
64
+ }
65
+ }
66
+ shouldShowLog(level) {
67
+ const mode = this.getCurrentMode();
68
+ switch (mode) {
69
+ case 'qa':
70
+ return ['INFO', 'CLIENT_ERROR', 'CLIENT_WARN'].includes(level);
71
+ case 'debug':
72
+ return true;
73
+ default:
74
+ return false;
75
+ }
76
+ }
77
+ formatMessage(namespace, message) {
78
+ return `[TraceLog:${namespace}] ${message}`;
79
+ }
80
+ getConsoleMethod(level) {
81
+ switch (level) {
82
+ case 'CLIENT_ERROR':
83
+ case 'ERROR':
84
+ return 'error';
85
+ case 'CLIENT_WARN':
86
+ case 'WARN':
87
+ return 'warn';
88
+ case 'INFO':
89
+ case 'DEBUG':
90
+ case 'VERBOSE':
91
+ default:
92
+ return 'log';
93
+ }
94
+ }
95
+ logMessage(level, namespace, message, data) {
96
+ if (!this.shouldShowLog(level)) {
97
+ return;
98
+ }
99
+ const formattedMessage = this.formatMessage(namespace, message);
100
+ const consoleMethod = this.getConsoleMethod(level);
101
+ if (data !== undefined) {
102
+ console[consoleMethod](formattedMessage, data);
103
+ }
104
+ else {
105
+ console[consoleMethod](formattedMessage);
106
+ }
107
+ if (process.env.NODE_ENV === 'dev') {
108
+ this.dispatchEvent(level, namespace, message, data);
109
+ }
110
+ }
111
+ /**
112
+ * Dispatches tracelog:log events for E2E testing and development debugging
113
+ */
114
+ dispatchEvent(level, namespace, message, data) {
115
+ if (typeof window === 'undefined' || typeof CustomEvent === 'undefined') {
116
+ return;
117
+ }
118
+ try {
119
+ const event = new CustomEvent('tracelog:log', {
120
+ detail: {
121
+ timestamp: new Date().toISOString(),
122
+ level,
123
+ namespace,
124
+ message,
125
+ data,
126
+ },
127
+ });
128
+ window.dispatchEvent(event);
129
+ }
130
+ catch {
131
+ console.log(`[TraceLog:${namespace}] ${message}`, data);
132
+ }
133
+ }
134
+ }
135
+ /**
136
+ * Singleton debug logger instance
137
+ * Provides the same API as before: debugLog.clientError(), debugLog.info(), etc.
138
+ */
139
+ exports.debugLog = new DebugLogger();
@@ -0,0 +1 @@
1
+ export { debugLog } from './debug-logger.utils';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.debugLog = void 0;
4
+ var debug_logger_utils_1 = require("./debug-logger.utils");
5
+ Object.defineProperty(exports, "debugLog", { enumerable: true, get: function () { return debug_logger_utils_1.debugLog; } });
@@ -0,0 +1 @@
1
+ export * from './url.utils';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./url.utils"), exports);
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Generates an API URL based on project ID and current domain
3
+ * @param id - The project ID
4
+ * @returns The generated API URL
5
+ */
6
+ export declare const getApiUrl: (id: string, allowHttp?: boolean) => string;
7
+ /**
8
+ * Normalizes a URL by removing sensitive query parameters
9
+ * @param url - The URL to normalize
10
+ * @param sensitiveQueryParams - Array of parameter names to remove
11
+ * @returns The normalized URL
12
+ */
13
+ export declare const normalizeUrl: (url: string, sensitiveQueryParams?: string[]) => string;
14
+ /**
15
+ * Checks if a URL path should be excluded from tracking
16
+ * @param url - The URL to check
17
+ * @param excludedPaths - Array of patterns to match against
18
+ * @returns True if the URL should be excluded
19
+ */
20
+ export declare const isUrlPathExcluded: (url: string, excludedPaths?: string[]) => boolean;
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUrlPathExcluded = exports.normalizeUrl = exports.getApiUrl = void 0;
4
+ const validations_1 = require("../validations");
5
+ const logging_1 = require("../logging");
6
+ /**
7
+ * Generates an API URL based on project ID and current domain
8
+ * @param id - The project ID
9
+ * @returns The generated API URL
10
+ */
11
+ const getApiUrl = (id, allowHttp = false) => {
12
+ logging_1.debugLog.debug('URLUtils', 'Generating API URL', { projectId: id, allowHttp });
13
+ const url = new URL(window.location.href);
14
+ const host = url.hostname;
15
+ const parts = host.split('.');
16
+ if (parts.length === 0) {
17
+ logging_1.debugLog.clientError('URLUtils', 'Invalid hostname - no domain parts found', { hostname: host });
18
+ throw new Error('Invalid URL');
19
+ }
20
+ const cleanDomain = parts.slice(-2).join('.');
21
+ const protocol = allowHttp && url.protocol === 'http:' ? 'http' : 'https';
22
+ const apiUrl = `${protocol}://${id}.${cleanDomain}`;
23
+ logging_1.debugLog.debug('URLUtils', 'Generated API URL', {
24
+ originalUrl: window.location.href,
25
+ hostname: host,
26
+ domainParts: parts.length,
27
+ cleanDomain,
28
+ protocol,
29
+ generatedUrl: apiUrl,
30
+ });
31
+ const isValid = (0, validations_1.isValidUrl)(apiUrl, allowHttp);
32
+ if (!isValid) {
33
+ logging_1.debugLog.clientError('URLUtils', 'Generated API URL failed validation', {
34
+ apiUrl,
35
+ allowHttp,
36
+ });
37
+ throw new Error('Invalid URL');
38
+ }
39
+ logging_1.debugLog.debug('URLUtils', 'API URL generation completed successfully', { apiUrl });
40
+ return apiUrl;
41
+ };
42
+ exports.getApiUrl = getApiUrl;
43
+ /**
44
+ * Normalizes a URL by removing sensitive query parameters
45
+ * @param url - The URL to normalize
46
+ * @param sensitiveQueryParams - Array of parameter names to remove
47
+ * @returns The normalized URL
48
+ */
49
+ const normalizeUrl = (url, sensitiveQueryParams = []) => {
50
+ logging_1.debugLog.debug('URLUtils', 'Normalizing URL', {
51
+ urlLength: url.length,
52
+ sensitiveParamsCount: sensitiveQueryParams.length,
53
+ });
54
+ try {
55
+ const urlObject = new URL(url);
56
+ const searchParams = urlObject.searchParams;
57
+ const originalParamCount = Array.from(searchParams.keys()).length;
58
+ let hasChanged = false;
59
+ const removedParams = [];
60
+ sensitiveQueryParams.forEach((param) => {
61
+ if (searchParams.has(param)) {
62
+ searchParams.delete(param);
63
+ hasChanged = true;
64
+ removedParams.push(param);
65
+ }
66
+ });
67
+ if (hasChanged) {
68
+ logging_1.debugLog.debug('URLUtils', 'Sensitive parameters removed from URL', {
69
+ removedParams,
70
+ originalParamCount,
71
+ finalParamCount: Array.from(searchParams.keys()).length,
72
+ });
73
+ }
74
+ if (!hasChanged && url.includes('?')) {
75
+ logging_1.debugLog.debug('URLUtils', 'URL normalization - no changes needed');
76
+ return url;
77
+ }
78
+ urlObject.search = searchParams.toString();
79
+ const result = urlObject.toString();
80
+ logging_1.debugLog.debug('URLUtils', 'URL normalization completed', {
81
+ hasChanged,
82
+ originalLength: url.length,
83
+ normalizedLength: result.length,
84
+ });
85
+ return result;
86
+ }
87
+ catch (error) {
88
+ logging_1.debugLog.warn('URLUtils', 'URL normalization failed, returning original', {
89
+ url: url.slice(0, 100),
90
+ error: error instanceof Error ? error.message : error,
91
+ });
92
+ return url;
93
+ }
94
+ };
95
+ exports.normalizeUrl = normalizeUrl;
96
+ /**
97
+ * Checks if a URL path should be excluded from tracking
98
+ * @param url - The URL to check
99
+ * @param excludedPaths - Array of patterns to match against
100
+ * @returns True if the URL should be excluded
101
+ */
102
+ const isUrlPathExcluded = (url, excludedPaths = []) => {
103
+ logging_1.debugLog.debug('URLUtils', 'Checking if URL path is excluded', {
104
+ urlLength: url.length,
105
+ excludedPathsCount: excludedPaths.length,
106
+ });
107
+ if (excludedPaths.length === 0) {
108
+ logging_1.debugLog.debug('URLUtils', 'No excluded paths configured');
109
+ return false;
110
+ }
111
+ let path;
112
+ try {
113
+ path = new URL(url, window.location.origin).pathname;
114
+ logging_1.debugLog.debug('URLUtils', 'Extracted path from URL', { path });
115
+ }
116
+ catch (error) {
117
+ logging_1.debugLog.warn('URLUtils', 'Failed to parse URL for path exclusion check', {
118
+ url: url.slice(0, 100),
119
+ error: error instanceof Error ? error.message : error,
120
+ });
121
+ return false;
122
+ }
123
+ const isRegularExpression = (value) => typeof value === 'object' && value !== undefined && typeof value.test === 'function';
124
+ const escapeRegexString = (string_) => string_.replaceAll(/[$()*+.?[\\\]^{|}]/g, '\\$&');
125
+ const wildcardToRegex = (string_) => new RegExp('^' +
126
+ string_
127
+ .split('*')
128
+ .map((element) => escapeRegexString(element))
129
+ .join('.+') +
130
+ '$');
131
+ const matchedPattern = excludedPaths.find((pattern) => {
132
+ try {
133
+ if (isRegularExpression(pattern)) {
134
+ const matches = pattern.test(path);
135
+ if (matches) {
136
+ logging_1.debugLog.debug('URLUtils', 'Path matched regex pattern', { path, pattern: pattern.toString() });
137
+ }
138
+ return matches;
139
+ }
140
+ if (pattern.includes('*')) {
141
+ const regex = wildcardToRegex(pattern);
142
+ const matches = regex.test(path);
143
+ if (matches) {
144
+ logging_1.debugLog.debug('URLUtils', 'Path matched wildcard pattern', { path, pattern, regex: regex.toString() });
145
+ }
146
+ return matches;
147
+ }
148
+ const matches = pattern === path;
149
+ if (matches) {
150
+ logging_1.debugLog.debug('URLUtils', 'Path matched exact pattern', { path, pattern });
151
+ }
152
+ return matches;
153
+ }
154
+ catch (error) {
155
+ logging_1.debugLog.warn('URLUtils', 'Error testing exclusion pattern', {
156
+ pattern,
157
+ path,
158
+ error: error instanceof Error ? error.message : error,
159
+ });
160
+ return false;
161
+ }
162
+ });
163
+ const isExcluded = !!matchedPattern;
164
+ logging_1.debugLog.debug('URLUtils', 'URL path exclusion check completed', {
165
+ path,
166
+ isExcluded,
167
+ matchedPattern: matchedPattern ?? null,
168
+ totalPatternsChecked: excludedPaths.length,
169
+ });
170
+ return isExcluded;
171
+ };
172
+ exports.isUrlPathExcluded = isUrlPathExcluded;
@@ -0,0 +1 @@
1
+ export * from './sanitize.utils';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./sanitize.utils"), exports);
@@ -0,0 +1,32 @@
1
+ import { MetadataType } from '../../types/common.types';
2
+ import { ApiConfig } from '../../types/config.types';
3
+ /**
4
+ * Sanitizes a string value to prevent XSS attacks
5
+ * @param value - The string to sanitize
6
+ * @returns The sanitized string
7
+ */
8
+ export declare const sanitizeString: (value: string) => string;
9
+ /**
10
+ * Sanitizes a path string for route exclusion checks
11
+ * @param value - The path string to sanitize
12
+ * @returns The sanitized path string
13
+ */
14
+ export declare const sanitizePathString: (value: string) => string;
15
+ /**
16
+ * Sanitizes API configuration data with strict validation
17
+ * @param data - The API config data to sanitize
18
+ * @returns The sanitized API config
19
+ */
20
+ export declare const sanitizeApiConfig: (data: unknown) => ApiConfig;
21
+ /**
22
+ * Sanitizes user metadata for custom events
23
+ * @param metadata - The metadata to sanitize
24
+ * @returns The sanitized metadata
25
+ */
26
+ export declare const sanitizeMetadata: (metadata: unknown) => Record<string, MetadataType>;
27
+ /**
28
+ * Sanitizes URL strings for tracking
29
+ * @param url - The URL to sanitize
30
+ * @returns The sanitized URL
31
+ */
32
+ export declare const sanitizeUrl: (url: string) => string;