@xylabs/pixel 1.4.14 → 1.5.0

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 (327) hide show
  1. package/dist/browser/Api/Api.d.cts.map +1 -0
  2. package/dist/browser/Api/Api.d.mts +7 -0
  3. package/dist/browser/Api/Api.d.mts.map +1 -0
  4. package/dist/browser/Api/Api.d.ts +7 -0
  5. package/dist/{types → browser}/Api/Api.d.ts.map +1 -1
  6. package/dist/browser/Api/UserEvent.d.cts +25 -0
  7. package/dist/browser/Api/UserEvent.d.cts.map +1 -0
  8. package/dist/browser/Api/UserEvent.d.mts +25 -0
  9. package/dist/browser/Api/UserEvent.d.mts.map +1 -0
  10. package/dist/{types → browser}/Api/UserEvent.d.ts +6 -0
  11. package/dist/browser/Api/UserEvent.d.ts.map +1 -0
  12. package/dist/browser/Api/UserEventSystem.d.mts +3 -0
  13. package/dist/browser/Api/UserEventSystem.d.mts.map +1 -0
  14. package/dist/browser/Api/UserEventSystem.d.ts +3 -0
  15. package/dist/browser/Api/UserEventSystem.d.ts.map +1 -0
  16. package/dist/{esm/Api/index.js → browser/Api/index.d.mts} +1 -1
  17. package/dist/browser/Api/index.d.mts.map +1 -0
  18. package/dist/browser/Api/index.d.ts +4 -0
  19. package/dist/browser/Api/index.d.ts.map +1 -0
  20. package/dist/browser/CommonFields.d.mts +5 -0
  21. package/dist/browser/CommonFields.d.mts.map +1 -0
  22. package/dist/browser/CommonFields.d.ts +5 -0
  23. package/dist/browser/CommonFields.d.ts.map +1 -0
  24. package/dist/browser/ExIds.d.mts +10 -0
  25. package/dist/browser/ExIds.d.mts.map +1 -0
  26. package/dist/browser/ExIds.d.ts +10 -0
  27. package/dist/browser/ExIds.d.ts.map +1 -0
  28. package/dist/browser/FunnelStartedFields.d.mts +5 -0
  29. package/dist/browser/FunnelStartedFields.d.mts.map +1 -0
  30. package/dist/browser/FunnelStartedFields.d.ts +5 -0
  31. package/dist/browser/FunnelStartedFields.d.ts.map +1 -0
  32. package/dist/browser/Pixel.d.cts.map +1 -0
  33. package/dist/browser/Pixel.d.mts +24 -0
  34. package/dist/browser/Pixel.d.mts.map +1 -0
  35. package/dist/browser/Pixel.d.ts +24 -0
  36. package/dist/browser/Pixel.d.ts.map +1 -0
  37. package/dist/browser/Referrer.d.cts.map +1 -0
  38. package/dist/browser/Referrer.d.mts +13 -0
  39. package/dist/browser/Referrer.d.mts.map +1 -0
  40. package/dist/browser/Referrer.d.ts +13 -0
  41. package/dist/browser/Referrer.d.ts.map +1 -0
  42. package/dist/browser/TestStartedFields.d.mts +5 -0
  43. package/dist/browser/TestStartedFields.d.mts.map +1 -0
  44. package/dist/browser/TestStartedFields.d.ts +5 -0
  45. package/dist/browser/TestStartedFields.d.ts.map +1 -0
  46. package/dist/browser/UniqueUserId.d.cts.map +1 -0
  47. package/dist/browser/UniqueUserId.d.mts +8 -0
  48. package/dist/browser/UniqueUserId.d.mts.map +1 -0
  49. package/dist/browser/UniqueUserId.d.ts +8 -0
  50. package/dist/{types → browser}/UniqueUserId.d.ts.map +1 -1
  51. package/dist/browser/UserClickFields.d.mts +6 -0
  52. package/dist/browser/UserClickFields.d.mts.map +1 -0
  53. package/dist/browser/UserClickFields.d.ts +6 -0
  54. package/dist/browser/UserClickFields.d.ts.map +1 -0
  55. package/dist/browser/UserEventHandler.d.mts +11 -0
  56. package/dist/browser/UserEventHandler.d.mts.map +1 -0
  57. package/dist/browser/UserEventHandler.d.ts +11 -0
  58. package/dist/browser/UserEventHandler.d.ts.map +1 -0
  59. package/dist/browser/UtmFields.d.cts.map +1 -0
  60. package/dist/browser/UtmFields.d.mts +9 -0
  61. package/dist/browser/UtmFields.d.mts.map +1 -0
  62. package/dist/browser/UtmFields.d.ts +9 -0
  63. package/dist/browser/UtmFields.d.ts.map +1 -0
  64. package/dist/browser/ViewContentFields.d.mts +6 -0
  65. package/dist/browser/ViewContentFields.d.mts.map +1 -0
  66. package/dist/browser/ViewContentFields.d.ts +6 -0
  67. package/dist/browser/ViewContentFields.d.ts.map +1 -0
  68. package/dist/browser/XyLabsTrackingEventJson.d.mts +21 -0
  69. package/dist/browser/XyLabsTrackingEventJson.d.mts.map +1 -0
  70. package/dist/browser/XyLabsTrackingEventJson.d.ts +21 -0
  71. package/dist/browser/XyLabsTrackingEventJson.d.ts.map +1 -0
  72. package/dist/browser/XyUserEventHandler.d.cts.map +1 -0
  73. package/dist/browser/XyUserEventHandler.d.mts +13 -0
  74. package/dist/browser/XyUserEventHandler.d.mts.map +1 -0
  75. package/dist/browser/XyUserEventHandler.d.ts +13 -0
  76. package/dist/{types → browser}/XyUserEventHandler.d.ts.map +1 -1
  77. package/dist/browser/getSystemInfo.d.mts +2 -0
  78. package/dist/browser/getSystemInfo.d.mts.map +1 -0
  79. package/dist/browser/getSystemInfo.d.ts +2 -0
  80. package/dist/browser/getSystemInfo.d.ts.map +1 -0
  81. package/dist/browser/index.cjs +287 -0
  82. package/dist/browser/index.cjs.map +1 -0
  83. package/dist/{esm/index.js → browser/index.d.mts} +1 -1
  84. package/dist/browser/index.d.mts.map +1 -0
  85. package/dist/browser/index.d.ts +13 -0
  86. package/dist/browser/index.d.ts.map +1 -0
  87. package/dist/browser/index.js +254 -0
  88. package/dist/browser/index.js.map +1 -0
  89. package/dist/node/Api/Api.d.cts +7 -0
  90. package/dist/node/Api/Api.d.cts.map +1 -0
  91. package/dist/node/Api/Api.d.mts +7 -0
  92. package/dist/node/Api/Api.d.mts.map +1 -0
  93. package/dist/node/Api/Api.d.ts +7 -0
  94. package/dist/node/Api/Api.d.ts.map +1 -0
  95. package/dist/node/Api/UserEvent.d.cts +25 -0
  96. package/dist/node/Api/UserEvent.d.cts.map +1 -0
  97. package/dist/node/Api/UserEvent.d.mts +25 -0
  98. package/dist/node/Api/UserEvent.d.mts.map +1 -0
  99. package/dist/node/Api/UserEvent.d.ts +25 -0
  100. package/dist/node/Api/UserEvent.d.ts.map +1 -0
  101. package/dist/node/Api/UserEventSystem.d.cts +3 -0
  102. package/dist/node/Api/UserEventSystem.d.cts.map +1 -0
  103. package/dist/node/Api/UserEventSystem.d.mts +3 -0
  104. package/dist/node/Api/UserEventSystem.d.mts.map +1 -0
  105. package/dist/node/Api/UserEventSystem.d.ts +3 -0
  106. package/dist/node/Api/UserEventSystem.d.ts.map +1 -0
  107. package/dist/node/Api/index.d.cts +4 -0
  108. package/dist/node/Api/index.d.cts.map +1 -0
  109. package/dist/node/Api/index.d.mts +4 -0
  110. package/dist/node/Api/index.d.mts.map +1 -0
  111. package/dist/node/Api/index.d.ts +4 -0
  112. package/dist/node/Api/index.d.ts.map +1 -0
  113. package/dist/node/CommonFields.d.cts +5 -0
  114. package/dist/node/CommonFields.d.cts.map +1 -0
  115. package/dist/node/CommonFields.d.mts +5 -0
  116. package/dist/node/CommonFields.d.mts.map +1 -0
  117. package/dist/node/CommonFields.d.ts +5 -0
  118. package/dist/node/CommonFields.d.ts.map +1 -0
  119. package/dist/node/ExIds.d.cts +10 -0
  120. package/dist/node/ExIds.d.cts.map +1 -0
  121. package/dist/node/ExIds.d.mts +10 -0
  122. package/dist/node/ExIds.d.mts.map +1 -0
  123. package/dist/node/ExIds.d.ts +10 -0
  124. package/dist/node/ExIds.d.ts.map +1 -0
  125. package/dist/node/FunnelStartedFields.d.cts +5 -0
  126. package/dist/node/FunnelStartedFields.d.cts.map +1 -0
  127. package/dist/node/FunnelStartedFields.d.mts +5 -0
  128. package/dist/node/FunnelStartedFields.d.mts.map +1 -0
  129. package/dist/node/FunnelStartedFields.d.ts +5 -0
  130. package/dist/node/FunnelStartedFields.d.ts.map +1 -0
  131. package/dist/node/Pixel.d.cts +24 -0
  132. package/dist/node/Pixel.d.cts.map +1 -0
  133. package/dist/node/Pixel.d.mts +24 -0
  134. package/dist/node/Pixel.d.mts.map +1 -0
  135. package/dist/node/Pixel.d.ts +24 -0
  136. package/dist/node/Pixel.d.ts.map +1 -0
  137. package/dist/node/Referrer.d.cts +13 -0
  138. package/dist/node/Referrer.d.cts.map +1 -0
  139. package/dist/node/Referrer.d.mts +13 -0
  140. package/dist/node/Referrer.d.mts.map +1 -0
  141. package/dist/node/Referrer.d.ts +13 -0
  142. package/dist/node/Referrer.d.ts.map +1 -0
  143. package/dist/node/TestStartedFields.d.cts +5 -0
  144. package/dist/node/TestStartedFields.d.cts.map +1 -0
  145. package/dist/node/TestStartedFields.d.mts +5 -0
  146. package/dist/node/TestStartedFields.d.mts.map +1 -0
  147. package/dist/node/TestStartedFields.d.ts +5 -0
  148. package/dist/node/TestStartedFields.d.ts.map +1 -0
  149. package/dist/node/UniqueUserId.d.cts +8 -0
  150. package/dist/node/UniqueUserId.d.cts.map +1 -0
  151. package/dist/node/UniqueUserId.d.mts +8 -0
  152. package/dist/node/UniqueUserId.d.mts.map +1 -0
  153. package/dist/node/UniqueUserId.d.ts +8 -0
  154. package/dist/node/UniqueUserId.d.ts.map +1 -0
  155. package/dist/node/UserClickFields.d.cts +6 -0
  156. package/dist/node/UserClickFields.d.cts.map +1 -0
  157. package/dist/node/UserClickFields.d.mts +6 -0
  158. package/dist/node/UserClickFields.d.mts.map +1 -0
  159. package/dist/node/UserClickFields.d.ts +6 -0
  160. package/dist/node/UserClickFields.d.ts.map +1 -0
  161. package/dist/node/UserEventHandler.d.cts +11 -0
  162. package/dist/node/UserEventHandler.d.cts.map +1 -0
  163. package/dist/node/UserEventHandler.d.mts +11 -0
  164. package/dist/node/UserEventHandler.d.mts.map +1 -0
  165. package/dist/node/UserEventHandler.d.ts +11 -0
  166. package/dist/node/UserEventHandler.d.ts.map +1 -0
  167. package/dist/node/UtmFields.d.cts +9 -0
  168. package/dist/node/UtmFields.d.cts.map +1 -0
  169. package/dist/node/UtmFields.d.mts +9 -0
  170. package/dist/node/UtmFields.d.mts.map +1 -0
  171. package/dist/node/UtmFields.d.ts +9 -0
  172. package/dist/node/UtmFields.d.ts.map +1 -0
  173. package/dist/node/ViewContentFields.d.cts +6 -0
  174. package/dist/node/ViewContentFields.d.cts.map +1 -0
  175. package/dist/node/ViewContentFields.d.mts +6 -0
  176. package/dist/node/ViewContentFields.d.mts.map +1 -0
  177. package/dist/node/ViewContentFields.d.ts +6 -0
  178. package/dist/node/ViewContentFields.d.ts.map +1 -0
  179. package/dist/node/XyLabsTrackingEventJson.d.cts +21 -0
  180. package/dist/node/XyLabsTrackingEventJson.d.cts.map +1 -0
  181. package/dist/node/XyLabsTrackingEventJson.d.mts +21 -0
  182. package/dist/node/XyLabsTrackingEventJson.d.mts.map +1 -0
  183. package/dist/node/XyLabsTrackingEventJson.d.ts +21 -0
  184. package/dist/node/XyLabsTrackingEventJson.d.ts.map +1 -0
  185. package/dist/node/XyUserEventHandler.d.cts +13 -0
  186. package/dist/node/XyUserEventHandler.d.cts.map +1 -0
  187. package/dist/node/XyUserEventHandler.d.mts +13 -0
  188. package/dist/node/XyUserEventHandler.d.mts.map +1 -0
  189. package/dist/node/XyUserEventHandler.d.ts +13 -0
  190. package/dist/node/XyUserEventHandler.d.ts.map +1 -0
  191. package/dist/node/getSystemInfo.d.cts +2 -0
  192. package/dist/node/getSystemInfo.d.cts.map +1 -0
  193. package/dist/node/getSystemInfo.d.mts +2 -0
  194. package/dist/node/getSystemInfo.d.mts.map +1 -0
  195. package/dist/node/getSystemInfo.d.ts +2 -0
  196. package/dist/node/getSystemInfo.d.ts.map +1 -0
  197. package/dist/node/index.cjs +298 -0
  198. package/dist/node/index.cjs.map +1 -0
  199. package/dist/node/index.d.cts +13 -0
  200. package/dist/node/index.d.cts.map +1 -0
  201. package/dist/node/index.d.mts +13 -0
  202. package/dist/node/index.d.mts.map +1 -0
  203. package/dist/node/index.d.ts +13 -0
  204. package/dist/node/index.d.ts.map +1 -0
  205. package/dist/node/index.js +255 -0
  206. package/dist/node/index.js.map +1 -0
  207. package/package.json +48 -33
  208. package/src/Api/Api.ts +1 -1
  209. package/src/Api/UserEvent.ts +3 -0
  210. package/src/Pixel.ts +33 -37
  211. package/src/Referrer.ts +3 -3
  212. package/src/UniqueUserId.ts +2 -2
  213. package/src/UtmFields.ts +7 -9
  214. package/src/XyUserEventHandler.ts +4 -4
  215. package/src/getSystemInfo.ts +1 -1
  216. package/src/{Pixel.spec.ts → spec/Pixel.spec.ts} +3 -3
  217. package/dist/cjs/Api/Api.js +0 -23
  218. package/dist/cjs/Api/Api.js.map +0 -1
  219. package/dist/cjs/Api/UserEvent.js +0 -3
  220. package/dist/cjs/Api/UserEvent.js.map +0 -1
  221. package/dist/cjs/Api/UserEventSystem.js +0 -3
  222. package/dist/cjs/Api/UserEventSystem.js.map +0 -1
  223. package/dist/cjs/Api/index.js +0 -7
  224. package/dist/cjs/Api/index.js.map +0 -1
  225. package/dist/cjs/CommonFields.js +0 -3
  226. package/dist/cjs/CommonFields.js.map +0 -1
  227. package/dist/cjs/ExIds.js +0 -3
  228. package/dist/cjs/ExIds.js.map +0 -1
  229. package/dist/cjs/FunnelStartedFields.js +0 -3
  230. package/dist/cjs/FunnelStartedFields.js.map +0 -1
  231. package/dist/cjs/Pixel.js +0 -108
  232. package/dist/cjs/Pixel.js.map +0 -1
  233. package/dist/cjs/Referrer.js +0 -35
  234. package/dist/cjs/Referrer.js.map +0 -1
  235. package/dist/cjs/TestStartedFields.js +0 -3
  236. package/dist/cjs/TestStartedFields.js.map +0 -1
  237. package/dist/cjs/UniqueUserId.js +0 -21
  238. package/dist/cjs/UniqueUserId.js.map +0 -1
  239. package/dist/cjs/UserClickFields.js +0 -3
  240. package/dist/cjs/UserClickFields.js.map +0 -1
  241. package/dist/cjs/UserEventHandler.js +0 -7
  242. package/dist/cjs/UserEventHandler.js.map +0 -1
  243. package/dist/cjs/UtmFields.js +0 -53
  244. package/dist/cjs/UtmFields.js.map +0 -1
  245. package/dist/cjs/ViewContentFields.js +0 -3
  246. package/dist/cjs/ViewContentFields.js.map +0 -1
  247. package/dist/cjs/XyLabsTrackingEventJson.js +0 -3
  248. package/dist/cjs/XyLabsTrackingEventJson.js.map +0 -1
  249. package/dist/cjs/XyUserEventHandler.js +0 -33
  250. package/dist/cjs/XyUserEventHandler.js.map +0 -1
  251. package/dist/cjs/getSystemInfo.js +0 -16
  252. package/dist/cjs/getSystemInfo.js.map +0 -1
  253. package/dist/cjs/index.js +0 -16
  254. package/dist/cjs/index.js.map +0 -1
  255. package/dist/docs.json +0 -3781
  256. package/dist/esm/Api/Api.js +0 -17
  257. package/dist/esm/Api/Api.js.map +0 -1
  258. package/dist/esm/Api/UserEvent.js +0 -2
  259. package/dist/esm/Api/UserEvent.js.map +0 -1
  260. package/dist/esm/Api/UserEventSystem.js +0 -2
  261. package/dist/esm/Api/UserEventSystem.js.map +0 -1
  262. package/dist/esm/Api/index.js.map +0 -1
  263. package/dist/esm/CommonFields.js +0 -2
  264. package/dist/esm/CommonFields.js.map +0 -1
  265. package/dist/esm/ExIds.js +0 -2
  266. package/dist/esm/ExIds.js.map +0 -1
  267. package/dist/esm/FunnelStartedFields.js +0 -2
  268. package/dist/esm/FunnelStartedFields.js.map +0 -1
  269. package/dist/esm/Pixel.js +0 -107
  270. package/dist/esm/Pixel.js.map +0 -1
  271. package/dist/esm/Referrer.js +0 -32
  272. package/dist/esm/Referrer.js.map +0 -1
  273. package/dist/esm/TestStartedFields.js +0 -2
  274. package/dist/esm/TestStartedFields.js.map +0 -1
  275. package/dist/esm/UniqueUserId.js +0 -16
  276. package/dist/esm/UniqueUserId.js.map +0 -1
  277. package/dist/esm/UserClickFields.js +0 -2
  278. package/dist/esm/UserClickFields.js.map +0 -1
  279. package/dist/esm/UserEventHandler.js +0 -3
  280. package/dist/esm/UserEventHandler.js.map +0 -1
  281. package/dist/esm/UtmFields.js +0 -46
  282. package/dist/esm/UtmFields.js.map +0 -1
  283. package/dist/esm/ViewContentFields.js +0 -2
  284. package/dist/esm/ViewContentFields.js.map +0 -1
  285. package/dist/esm/XyLabsTrackingEventJson.js +0 -2
  286. package/dist/esm/XyLabsTrackingEventJson.js.map +0 -1
  287. package/dist/esm/XyUserEventHandler.js +0 -20
  288. package/dist/esm/XyUserEventHandler.js.map +0 -1
  289. package/dist/esm/getSystemInfo.js +0 -12
  290. package/dist/esm/getSystemInfo.js.map +0 -1
  291. package/dist/esm/index.js.map +0 -1
  292. package/dist/types/Api/UserEvent.d.ts.map +0 -1
  293. package/dist/types/Pixel.d.ts.map +0 -1
  294. package/dist/types/Referrer.d.ts.map +0 -1
  295. package/dist/types/UtmFields.d.ts.map +0 -1
  296. package/src/types/async-mutex.d.ts +0 -1
  297. package/yarn-error.log +0 -8403
  298. /package/dist/{types/Api/Api.d.ts → browser/Api/Api.d.cts} +0 -0
  299. /package/dist/{types/Api/UserEventSystem.d.ts → browser/Api/UserEventSystem.d.cts} +0 -0
  300. /package/dist/{types/Api/UserEventSystem.d.ts.map → browser/Api/UserEventSystem.d.cts.map} +0 -0
  301. /package/dist/{types/Api/index.d.ts → browser/Api/index.d.cts} +0 -0
  302. /package/dist/{types/Api/index.d.ts.map → browser/Api/index.d.cts.map} +0 -0
  303. /package/dist/{types/CommonFields.d.ts → browser/CommonFields.d.cts} +0 -0
  304. /package/dist/{types/CommonFields.d.ts.map → browser/CommonFields.d.cts.map} +0 -0
  305. /package/dist/{types/ExIds.d.ts → browser/ExIds.d.cts} +0 -0
  306. /package/dist/{types/ExIds.d.ts.map → browser/ExIds.d.cts.map} +0 -0
  307. /package/dist/{types/FunnelStartedFields.d.ts → browser/FunnelStartedFields.d.cts} +0 -0
  308. /package/dist/{types/FunnelStartedFields.d.ts.map → browser/FunnelStartedFields.d.cts.map} +0 -0
  309. /package/dist/{types/Pixel.d.ts → browser/Pixel.d.cts} +0 -0
  310. /package/dist/{types/Referrer.d.ts → browser/Referrer.d.cts} +0 -0
  311. /package/dist/{types/TestStartedFields.d.ts → browser/TestStartedFields.d.cts} +0 -0
  312. /package/dist/{types/TestStartedFields.d.ts.map → browser/TestStartedFields.d.cts.map} +0 -0
  313. /package/dist/{types/UniqueUserId.d.ts → browser/UniqueUserId.d.cts} +0 -0
  314. /package/dist/{types/UserClickFields.d.ts → browser/UserClickFields.d.cts} +0 -0
  315. /package/dist/{types/UserClickFields.d.ts.map → browser/UserClickFields.d.cts.map} +0 -0
  316. /package/dist/{types/UserEventHandler.d.ts → browser/UserEventHandler.d.cts} +0 -0
  317. /package/dist/{types/UserEventHandler.d.ts.map → browser/UserEventHandler.d.cts.map} +0 -0
  318. /package/dist/{types/UtmFields.d.ts → browser/UtmFields.d.cts} +0 -0
  319. /package/dist/{types/ViewContentFields.d.ts → browser/ViewContentFields.d.cts} +0 -0
  320. /package/dist/{types/ViewContentFields.d.ts.map → browser/ViewContentFields.d.cts.map} +0 -0
  321. /package/dist/{types/XyLabsTrackingEventJson.d.ts → browser/XyLabsTrackingEventJson.d.cts} +0 -0
  322. /package/dist/{types/XyLabsTrackingEventJson.d.ts.map → browser/XyLabsTrackingEventJson.d.cts.map} +0 -0
  323. /package/dist/{types/XyUserEventHandler.d.ts → browser/XyUserEventHandler.d.cts} +0 -0
  324. /package/dist/{types/getSystemInfo.d.ts → browser/getSystemInfo.d.cts} +0 -0
  325. /package/dist/{types/getSystemInfo.d.ts.map → browser/getSystemInfo.d.cts.map} +0 -0
  326. /package/dist/{types/index.d.ts → browser/index.d.cts} +0 -0
  327. /package/dist/{types/index.d.ts.map → browser/index.d.cts.map} +0 -0
@@ -0,0 +1,255 @@
1
+ // src/Api/Api.ts
2
+ import axios from "axios";
3
+ var apiBaseUri = {
4
+ beta: "https://pixel.xylabs.com",
5
+ local: "http://localhost:3030",
6
+ prod: "https://pixel.xylabs.com"
7
+ };
8
+ var PixelApi = class {
9
+ endPoint;
10
+ /* baseUri can either be a preset (prod, beta, local), or a specific uri */
11
+ constructor(baseUri = "prod") {
12
+ this.endPoint = apiBaseUri[baseUri] ? `${apiBaseUri[baseUri]}/t/event/queue` : baseUri;
13
+ }
14
+ async trackEvents(events) {
15
+ return (await axios.post(this.endPoint, events)).data;
16
+ }
17
+ };
18
+
19
+ // src/Pixel.ts
20
+ import { assertEx } from "@xylabs/assert";
21
+ import { Mutex } from "async-mutex";
22
+ import Cookies from "js-cookie";
23
+ import md5 from "md5";
24
+
25
+ // src/getSystemInfo.ts
26
+ import { parse } from "bowser";
27
+ var systemInfo;
28
+ var getSystemInfo = () => {
29
+ try {
30
+ systemInfo = systemInfo || parse(window.navigator.userAgent);
31
+ } catch (ex) {
32
+ console.log(`getSystemInfo Error: ${ex}`);
33
+ }
34
+ return systemInfo;
35
+ };
36
+
37
+ // src/Referrer.ts
38
+ var Referrer = class _Referrer {
39
+ static storageId = "_coin_referrer";
40
+ local;
41
+ session;
42
+ constructor() {
43
+ this.session = this.getFromSession() ?? document.referrer;
44
+ sessionStorage.setItem(_Referrer.storageId, this.session);
45
+ this.local = this.getFromLocal() ?? document.referrer;
46
+ window.localStorage.setItem(_Referrer.storageId, this.local);
47
+ }
48
+ toJson() {
49
+ if (this.local && this.local.length > 0 || this.session && this.session.length > 0) {
50
+ return {
51
+ local: this.local,
52
+ session: this.session
53
+ };
54
+ }
55
+ }
56
+ getFromLocal() {
57
+ const value = window.localStorage.getItem(_Referrer.storageId);
58
+ if (value && value.length > 0) {
59
+ return value;
60
+ }
61
+ }
62
+ getFromSession() {
63
+ const value = sessionStorage.getItem(_Referrer.storageId);
64
+ if (value && value.length > 0) {
65
+ return value;
66
+ }
67
+ }
68
+ };
69
+
70
+ // src/UniqueUserId.ts
71
+ import randomBytes from "randombytes";
72
+ var UniqueUserId = class _UniqueUserId {
73
+ static localStorageId = "_coin_cid";
74
+ id;
75
+ constructor() {
76
+ this.id = window.localStorage.getItem(_UniqueUserId.localStorageId) ?? this.generateId();
77
+ window.localStorage.setItem(_UniqueUserId.localStorageId, this.id);
78
+ }
79
+ toString() {
80
+ return this.id;
81
+ }
82
+ generateId() {
83
+ return randomBytes(16).toString("base64");
84
+ }
85
+ };
86
+
87
+ // src/UtmFields.ts
88
+ import { isEqual } from "@xylabs/lodash";
89
+ var UtmFields = class _UtmFields {
90
+ static localStorageId = "_coin_utm";
91
+ fields = [];
92
+ constructor() {
93
+ const storedString = window.localStorage.getItem(_UtmFields.localStorageId) ?? "[]";
94
+ try {
95
+ this.fields = JSON.parse(storedString);
96
+ } catch {
97
+ this.fields = [];
98
+ }
99
+ if (!Array.isArray(this.fields)) {
100
+ this.fields = [];
101
+ }
102
+ this.update();
103
+ window.localStorage.setItem(_UtmFields.localStorageId, JSON.stringify(this.fields));
104
+ }
105
+ getUtmRecord = () => {
106
+ var _a;
107
+ const record = {};
108
+ const parsedQueryString = ((_a = document.location.search.split("?")[1]) == null ? void 0 : _a.split("&")) ?? [];
109
+ parsedQueryString.map((item) => {
110
+ const [fullKey, value] = item.split("=");
111
+ const [keyCategory, keyName] = fullKey.split("_");
112
+ if (keyCategory === "utm") {
113
+ record[keyName] = value;
114
+ }
115
+ });
116
+ return Object.keys(record).length > 0 ? record : null;
117
+ };
118
+ toString() {
119
+ return JSON.stringify(this.fields);
120
+ }
121
+ //check the query string and if there an new/updated utm values, add them to the fields
122
+ update() {
123
+ const record = this.getUtmRecord();
124
+ if (record && !isEqual(this.fields.at(-1), record)) {
125
+ this.fields.push(record);
126
+ }
127
+ return this.fields ?? void 0;
128
+ }
129
+ };
130
+
131
+ // src/Pixel.ts
132
+ var emailHashLocalStorageName = "xy_email_hash";
133
+ var XyPixel = class _XyPixel {
134
+ static api = new PixelApi();
135
+ static _instance;
136
+ static utmFieldsObj;
137
+ cid = new UniqueUserId().id;
138
+ email;
139
+ email_hash;
140
+ exids;
141
+ pixelId;
142
+ queue = [];
143
+ queueMutex = new Mutex();
144
+ constructor(pixelId) {
145
+ this.pixelId = pixelId;
146
+ this.email_hash = localStorage.getItem(emailHashLocalStorageName);
147
+ }
148
+ static get instance() {
149
+ return assertEx(this._instance, "XyPixel uninitialized");
150
+ }
151
+ static init(pixelId) {
152
+ this._instance = new _XyPixel(pixelId);
153
+ return this._instance;
154
+ }
155
+ static selectApi(api) {
156
+ this.api = api;
157
+ }
158
+ static utmFields = () => {
159
+ if (_XyPixel.utmFieldsObj === void 0) {
160
+ _XyPixel.utmFieldsObj = new UtmFields();
161
+ }
162
+ return _XyPixel.utmFieldsObj;
163
+ };
164
+ identify(email) {
165
+ this.email = email;
166
+ this.email_hash = email ? md5(email) : void 0;
167
+ if (this.email_hash) {
168
+ localStorage.setItem(emailHashLocalStorageName, this.email_hash);
169
+ }
170
+ }
171
+ async send(event, fields, eventId) {
172
+ this.updateFbId();
173
+ const utm = _XyPixel.utmFields().update();
174
+ const referrer = new Referrer();
175
+ this.queue.push({
176
+ cid: this.cid,
177
+ create_time: Date.now(),
178
+ email_hash: this.email_hash ?? void 0,
179
+ event,
180
+ event_id: eventId,
181
+ exids: this.exids,
182
+ fields,
183
+ host: document.location.host,
184
+ pathname: document.location.pathname,
185
+ pixel: this.pixelId,
186
+ referrer: referrer.toJson(),
187
+ system: getSystemInfo(),
188
+ utm
189
+ });
190
+ await this.tryFlushQueue();
191
+ }
192
+ async tryFlushQueue() {
193
+ await this.queueMutex.runExclusive(async () => {
194
+ if (this.queue.length === 0)
195
+ return;
196
+ const api = _XyPixel.api;
197
+ if (api) {
198
+ const events = this.queue;
199
+ this.queue = [];
200
+ try {
201
+ await api.trackEvents(events);
202
+ } catch (ex) {
203
+ if (events) {
204
+ this.queue = [...this.queue, ...events];
205
+ }
206
+ console.error(ex);
207
+ }
208
+ }
209
+ });
210
+ }
211
+ updateFbId() {
212
+ this.exids = {
213
+ fbc: Cookies.get("_fbc"),
214
+ fbp: Cookies.get("_fbp"),
215
+ ga: Cookies.get("_ga"),
216
+ gclid: Cookies.get("_gcl_aw"),
217
+ rdt_uid: Cookies.get("rdt_uid"),
218
+ scid: Cookies.get("_scid"),
219
+ tt_sessionId: sessionStorage.getItem("tt_sessionId") ?? void 0
220
+ };
221
+ }
222
+ };
223
+
224
+ // src/UserEventHandler.ts
225
+ var UserEventHandler = class {
226
+ };
227
+
228
+ // src/XyUserEventHandler.ts
229
+ var XyUserEventHandler = class extends UserEventHandler {
230
+ constructor() {
231
+ super();
232
+ }
233
+ async funnelStarted(fields) {
234
+ return await XyPixel.instance.send("FunnelStarted", fields);
235
+ }
236
+ async testStarted(fields) {
237
+ return await XyPixel.instance.send("TestStarted", fields);
238
+ }
239
+ async userClick(fields) {
240
+ return await XyPixel.instance.send("ViewPage", fields);
241
+ }
242
+ async viewContent(fields) {
243
+ return await XyPixel.instance.send("ViewContent", fields);
244
+ }
245
+ };
246
+ export {
247
+ PixelApi,
248
+ Referrer,
249
+ UniqueUserId,
250
+ UserEventHandler,
251
+ UtmFields,
252
+ XyPixel,
253
+ XyUserEventHandler
254
+ };
255
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Api/Api.ts","../../src/Pixel.ts","../../src/getSystemInfo.ts","../../src/Referrer.ts","../../src/UniqueUserId.ts","../../src/UtmFields.ts","../../src/UserEventHandler.ts","../../src/XyUserEventHandler.ts"],"sourcesContent":["import axios from 'axios'\n\nimport { UserEvent } from './UserEvent'\n\nconst apiBaseUri: Record<string, string> = {\n beta: 'https://pixel.xylabs.com',\n local: 'http://localhost:3030',\n prod: 'https://pixel.xylabs.com',\n}\n\nexport class PixelApi {\n private endPoint: string\n\n /* baseUri can either be a preset (prod, beta, local), or a specific uri */\n constructor(baseUri = 'prod') {\n this.endPoint = apiBaseUri[baseUri] ? `${apiBaseUri[baseUri]}/t/event/queue` : baseUri\n }\n\n async trackEvents(events: UserEvent[]) {\n return (await axios.post(this.endPoint, events)).data\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Mutex } from 'async-mutex'\nimport Cookies from 'js-cookie'\nimport md5 from 'md5'\n\nimport { PixelApi, UserEvent } from './Api'\nimport { ExIds } from './ExIds'\nimport { getSystemInfo } from './getSystemInfo'\nimport { Referrer } from './Referrer'\nimport { UniqueUserId } from './UniqueUserId'\nimport { UtmFields } from './UtmFields'\n\nconst emailHashLocalStorageName = 'xy_email_hash'\n\nexport class XyPixel {\n static api = new PixelApi()\n\n private static _instance?: XyPixel\n private static utmFieldsObj: UtmFields\n\n cid = new UniqueUserId().id\n email?: string\n email_hash?: string | null\n exids?: ExIds\n pixelId?: string\n\n queue: UserEvent[] = []\n\n private queueMutex = new Mutex()\n\n private constructor(pixelId: string) {\n this.pixelId = pixelId\n this.email_hash = localStorage.getItem(emailHashLocalStorageName)\n }\n\n static get instance(): XyPixel {\n return assertEx(this._instance, 'XyPixel uninitialized')\n }\n\n static init(pixelId: string) {\n this._instance = new XyPixel(pixelId)\n return this._instance\n }\n\n static selectApi(api: PixelApi) {\n this.api = api\n }\n\n private static utmFields = () => {\n if (XyPixel.utmFieldsObj === undefined) {\n XyPixel.utmFieldsObj = new UtmFields()\n }\n return XyPixel.utmFieldsObj\n }\n\n identify(email?: string) {\n this.email = email\n this.email_hash = email ? md5(email) : undefined\n if (this.email_hash) {\n localStorage.setItem(emailHashLocalStorageName, this.email_hash)\n }\n }\n\n async send<T extends Record<string, unknown>>(event: string, fields?: T, eventId?: string) {\n this.updateFbId()\n const utm = XyPixel.utmFields().update()\n const referrer = new Referrer()\n this.queue.push({\n cid: this.cid,\n create_time: Date.now(),\n email_hash: this.email_hash ?? undefined,\n event,\n event_id: eventId,\n exids: this.exids,\n fields,\n host: document.location.host,\n pathname: document.location.pathname,\n pixel: this.pixelId,\n referrer: referrer.toJson(),\n system: getSystemInfo(),\n utm,\n })\n await this.tryFlushQueue()\n }\n\n private async tryFlushQueue() {\n await this.queueMutex.runExclusive(async () => {\n if (this.queue.length === 0) return\n const api = XyPixel.api\n if (api) {\n const events = this.queue\n this.queue = []\n try {\n await api.trackEvents(events)\n } catch (ex) {\n if (events) {\n //put it back since it failed\n this.queue = [...this.queue, ...events]\n }\n console.error(ex)\n }\n }\n })\n }\n\n private updateFbId() {\n this.exids = {\n fbc: Cookies.get('_fbc'),\n fbp: Cookies.get('_fbp'),\n ga: Cookies.get('_ga'),\n gclid: Cookies.get('_gcl_aw'),\n rdt_uid: Cookies.get('rdt_uid'),\n scid: Cookies.get('_scid'),\n tt_sessionId: sessionStorage.getItem('tt_sessionId') ?? undefined,\n }\n }\n}\n","import { parse } from 'bowser'\n\nimport { UserEventSystem } from './Api'\n\nlet systemInfo: UserEventSystem | undefined\n\nexport const getSystemInfo = () => {\n try {\n systemInfo = systemInfo || parse(window.navigator.userAgent)\n } catch (ex) {\n console.log(`getSystemInfo Error: ${ex}`)\n }\n return systemInfo\n}\n","export class Referrer {\n private static storageId = '_coin_referrer'\n local: string\n session: string\n constructor() {\n this.session = this.getFromSession() ?? document.referrer\n sessionStorage.setItem(Referrer.storageId, this.session)\n this.local = this.getFromLocal() ?? document.referrer\n window.localStorage.setItem(Referrer.storageId, this.local)\n }\n\n toJson() {\n if ((this.local && this.local.length > 0) || (this.session && this.session.length > 0)) {\n return {\n local: this.local,\n session: this.session,\n }\n }\n }\n\n private getFromLocal() {\n const value = window.localStorage.getItem(Referrer.storageId)\n if (value && value.length > 0) {\n return value\n }\n }\n\n private getFromSession() {\n const value = sessionStorage.getItem(Referrer.storageId)\n if (value && value.length > 0) {\n return value\n }\n }\n}\n","import randomBytes from 'randombytes'\n\nexport class UniqueUserId {\n private static localStorageId = '_coin_cid'\n id: string\n\n constructor() {\n this.id = window.localStorage.getItem(UniqueUserId.localStorageId) ?? this.generateId()\n window.localStorage.setItem(UniqueUserId.localStorageId, this.id)\n }\n\n toString() {\n return this.id\n }\n\n private generateId() {\n return randomBytes(16).toString('base64')\n }\n}\n","import { isEqual } from '@xylabs/lodash'\n\nexport class UtmFields {\n private static localStorageId = '_coin_utm'\n fields: Record<string, string>[] = []\n constructor() {\n const storedString = window.localStorage.getItem(UtmFields.localStorageId) ?? '[]'\n try {\n this.fields = JSON.parse(storedString)\n } catch {\n this.fields = []\n }\n //this clears the old object version if needed\n if (!Array.isArray(this.fields)) {\n this.fields = []\n }\n this.update()\n window.localStorage.setItem(UtmFields.localStorageId, JSON.stringify(this.fields))\n }\n\n getUtmRecord = () => {\n const record: Record<string, string> = {}\n const parsedQueryString = document.location.search.split('?')[1]?.split('&') ?? []\n parsedQueryString.map((item) => {\n const [fullKey, value] = item.split('=')\n const [keyCategory, keyName] = fullKey.split('_')\n if (keyCategory === 'utm') {\n record[keyName] = value\n }\n })\n return Object.keys(record).length > 0 ? record : null\n }\n\n toString() {\n return JSON.stringify(this.fields)\n }\n\n //check the query string and if there an new/updated utm values, add them to the fields\n update() {\n const record = this.getUtmRecord()\n if (record && !isEqual(this.fields.at(-1), record)) {\n this.fields.push(record)\n }\n return this.fields ?? undefined\n }\n}\n","import { FunnelStartedFields } from './FunnelStartedFields'\nimport { TestStartedFields } from './TestStartedFields'\nimport { UserClickFields } from './UserClickFields'\nimport { ViewContentFields } from './ViewContentFields'\n\nexport abstract class UserEventHandler<T> {\n abstract funnelStarted(fields: T | FunnelStartedFields): Promise<void>\n abstract testStarted(fields: T | TestStartedFields): Promise<void>\n abstract userClick(fields: T | UserClickFields): Promise<void>\n abstract viewContent(fields: T | ViewContentFields): Promise<void>\n}\n","import { FunnelStartedFields } from './FunnelStartedFields'\nimport { XyPixel } from './Pixel'\nimport { TestStartedFields } from './TestStartedFields'\nimport { UserClickFields } from './UserClickFields'\nimport { UserEventHandler } from './UserEventHandler'\nimport { ViewContentFields } from './ViewContentFields'\n\nexport class XyUserEventHandler<T extends Record<string, unknown>> extends UserEventHandler<T> {\n constructor() {\n super()\n }\n\n async funnelStarted(fields: T | FunnelStartedFields) {\n return await XyPixel.instance.send('FunnelStarted', fields)\n }\n\n async testStarted(fields: T | TestStartedFields) {\n return await XyPixel.instance.send('TestStarted', fields)\n }\n\n async userClick(fields: T | UserClickFields) {\n return await XyPixel.instance.send('ViewPage', fields)\n }\n\n async viewContent(fields: T | ViewContentFields) {\n return await XyPixel.instance.send('ViewContent', fields)\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -9,10 +9,11 @@
9
9
  "url": "https://github.com/xylabs/sdk-pixel-js/issues"
10
10
  },
11
11
  "dependencies": {
12
- "@xylabs/assert": "^2.7.1",
13
- "async-mutex": "^0.4.0",
12
+ "@xylabs/assert": "^3.0.6",
13
+ "@xylabs/lodash": "^3.0.6",
14
+ "async-mutex": "^0.4.1",
14
15
  "bowser": "^2.11.0",
15
- "js-cookie": "^3.0.1",
16
+ "js-cookie": "^3.0.5",
16
17
  "lodash-es": "^4.17.21",
17
18
  "md5": "^2.3.0",
18
19
  "randombytes": "^2.1.0"
@@ -22,44 +23,57 @@
22
23
  },
23
24
  "description": "Event Client for xylabs ESB",
24
25
  "devDependencies": {
25
- "@types/jest": "^29.4.0",
26
- "@types/js-cookie": "^3.0.2",
27
- "@types/jsdom": "^21.1.0",
28
- "@types/lodash-es": "^4.17.6",
29
- "@types/md5": "^2.3.2",
30
- "@types/node": "^18.13.0",
31
- "@types/randombytes": "^2.0.0",
32
- "@xylabs/eslint-config": "^2.13.11",
33
- "@xylabs/ts-scripts-yarn3": "^2.13.11",
34
- "@xylabs/tsconfig-dom": "^2.13.11",
35
- "axios": "^1.3.2",
36
- "eslint": "^8.33.0",
37
- "jest": "^29.4.2",
38
- "jest-environment-jsdom": "^29.4.2",
39
- "jsdom": "^21.1.0",
40
- "npm-package-json-lint": "^6.4.0",
41
- "reflect-metadata": "^0.1.13",
42
- "ts-jest": "^29.0.5",
43
- "ts-node": "^10.9.1",
44
- "typescript": "^4.9.5"
26
+ "@types/jest": "^29.5.12",
27
+ "@types/js-cookie": "^3.0.6",
28
+ "@types/jsdom": "^21.1.6",
29
+ "@types/lodash-es": "^4.17.12",
30
+ "@types/md5": "^2.3.5",
31
+ "@types/node": "^20.11.24",
32
+ "@types/randombytes": "^2.0.3",
33
+ "@xylabs/eslint-config": "^3.4.1",
34
+ "@xylabs/ts-scripts-yarn3": "^3.4.1",
35
+ "@xylabs/tsconfig-dom": "^3.4.1",
36
+ "@xylabs/tsconfig-jest": "^3.4.1",
37
+ "axios": "^1.6.7",
38
+ "eslint": "^8.57.0",
39
+ "jest": "^29.7.0",
40
+ "jest-environment-jsdom": "^29.7.0",
41
+ "jsdom": "^24.0.0",
42
+ "npm-package-json-lint": "^7.1.0",
43
+ "reflect-metadata": "^0.2.1",
44
+ "ts-jest": "^29.1.2",
45
+ "ts-node": "^10.9.2",
46
+ "typescript": "^5.3.3"
45
47
  },
46
- "main": "dist/cjs/index.js",
47
- "module": "dist/esm/index.js",
48
- "types": "dist/types/index.d.ts",
48
+ "types": "dist/browser/index.d.ts",
49
49
  "exports": {
50
50
  ".": {
51
51
  "node": {
52
- "import": "./dist/esm/index.js",
53
- "require": "./dist/cjs/index.js"
52
+ "import": {
53
+ "types": "./dist/node/index.d.mts",
54
+ "default": "./dist/node/index.js"
55
+ },
56
+ "require": {
57
+ "types": "./dist/node/index.d.cts",
58
+ "default": "./dist/node/index.cjs"
59
+ }
54
60
  },
55
61
  "browser": {
56
- "import": "./dist/esm/index.js",
57
- "require": "./dist/cjs/index.js"
62
+ "import": {
63
+ "types": "./dist/browser/index.d.mts",
64
+ "default": "./dist/browser/index.js"
65
+ },
66
+ "require": {
67
+ "types": "./dist/browser/index.d.cts",
68
+ "default": "./dist/browser/index.cjs"
69
+ }
58
70
  },
59
- "default": "./dist/esm/index.js"
71
+ "default": "./dist/browser/index.js"
60
72
  },
61
73
  "./package.json": "./package.json"
62
74
  },
75
+ "main": "dist/browser/index.cjs",
76
+ "module": "dist/browser/index.js",
63
77
  "homepage": "https://xylabs.com",
64
78
  "license": "LGPL-3.0-or-later",
65
79
  "name": "@xylabs/pixel",
@@ -71,6 +85,7 @@
71
85
  "url": "https://github.com/xylabs/sdk-pixel-js.git"
72
86
  },
73
87
  "sideEffects": false,
74
- "version": "1.4.14",
75
- "packageManager": "yarn@3.3.1"
88
+ "version": "1.5.0",
89
+ "packageManager": "yarn@4.1.1",
90
+ "type": "module"
76
91
  }
package/src/Api/Api.ts CHANGED
@@ -16,7 +16,7 @@ export class PixelApi {
16
16
  this.endPoint = apiBaseUri[baseUri] ? `${apiBaseUri[baseUri]}/t/event/queue` : baseUri
17
17
  }
18
18
 
19
- public async trackEvents(events: UserEvent[]) {
19
+ async trackEvents(events: UserEvent[]) {
20
20
  return (await axios.post(this.endPoint, events)).data
21
21
  }
22
22
  }
@@ -1,3 +1,4 @@
1
+ import { ExIds } from '../ExIds'
1
2
  import { UserEventSystem } from './UserEventSystem'
2
3
 
3
4
  export interface UserEvent {
@@ -7,11 +8,13 @@ export interface UserEvent {
7
8
  email_hash?: string
8
9
  event?: string
9
10
  event_id?: string
11
+ exids?: ExIds
10
12
  fields?: Record<string, unknown>
11
13
  host?: string
12
14
  pathname?: string
13
15
  pixel?: string
14
16
  receive_time?: number
17
+ referrer?: { local: string; session: string }
15
18
  rid?: string
16
19
  system?: UserEventSystem
17
20
  uid?: string
package/src/Pixel.ts CHANGED
@@ -13,18 +13,18 @@ import { UtmFields } from './UtmFields'
13
13
  const emailHashLocalStorageName = 'xy_email_hash'
14
14
 
15
15
  export class XyPixel {
16
- public static api = new PixelApi()
16
+ static api = new PixelApi()
17
17
 
18
18
  private static _instance?: XyPixel
19
19
  private static utmFieldsObj: UtmFields
20
20
 
21
- public cid = new UniqueUserId().id
22
- public email?: string
23
- public email_hash?: string | null
24
- public exids?: ExIds
25
- public pixelId?: string
21
+ cid = new UniqueUserId().id
22
+ email?: string
23
+ email_hash?: string | null
24
+ exids?: ExIds
25
+ pixelId?: string
26
26
 
27
- public queue: UserEvent[] = []
27
+ queue: UserEvent[] = []
28
28
 
29
29
  private queueMutex = new Mutex()
30
30
 
@@ -33,16 +33,16 @@ export class XyPixel {
33
33
  this.email_hash = localStorage.getItem(emailHashLocalStorageName)
34
34
  }
35
35
 
36
- public static get instance(): XyPixel {
36
+ static get instance(): XyPixel {
37
37
  return assertEx(this._instance, 'XyPixel uninitialized')
38
38
  }
39
39
 
40
- public static init(pixelId: string) {
40
+ static init(pixelId: string) {
41
41
  this._instance = new XyPixel(pixelId)
42
42
  return this._instance
43
43
  }
44
44
 
45
- public static selectApi(api: PixelApi) {
45
+ static selectApi(api: PixelApi) {
46
46
  this.api = api
47
47
  }
48
48
 
@@ -53,7 +53,7 @@ export class XyPixel {
53
53
  return XyPixel.utmFieldsObj
54
54
  }
55
55
 
56
- public identify(email?: string) {
56
+ identify(email?: string) {
57
57
  this.email = email
58
58
  this.email_hash = email ? md5(email) : undefined
59
59
  if (this.email_hash) {
@@ -61,26 +61,24 @@ export class XyPixel {
61
61
  }
62
62
  }
63
63
 
64
- public async send<T extends Record<string, unknown>>(event: string, fields?: T, eventId?: string) {
64
+ async send<T extends Record<string, unknown>>(event: string, fields?: T, eventId?: string) {
65
65
  this.updateFbId()
66
66
  const utm = XyPixel.utmFields().update()
67
67
  const referrer = new Referrer()
68
68
  this.queue.push({
69
- ...{
70
- cid: this.cid,
71
- create_time: Date.now(),
72
- email_hash: this.email_hash ?? undefined,
73
- event,
74
- event_id: eventId,
75
- exids: this.exids,
76
- fields,
77
- host: document.location.host,
78
- pathname: document.location.pathname,
79
- pixel: this.pixelId,
80
- referrer: referrer.toJson(),
81
- system: getSystemInfo(),
82
- utm,
83
- },
69
+ cid: this.cid,
70
+ create_time: Date.now(),
71
+ email_hash: this.email_hash ?? undefined,
72
+ event,
73
+ event_id: eventId,
74
+ exids: this.exids,
75
+ fields,
76
+ host: document.location.host,
77
+ pathname: document.location.pathname,
78
+ pixel: this.pixelId,
79
+ referrer: referrer.toJson(),
80
+ system: getSystemInfo(),
81
+ utm,
84
82
  })
85
83
  await this.tryFlushQueue()
86
84
  }
@@ -97,7 +95,7 @@ export class XyPixel {
97
95
  } catch (ex) {
98
96
  if (events) {
99
97
  //put it back since it failed
100
- this.queue = this.queue.concat(events)
98
+ this.queue = [...this.queue, ...events]
101
99
  }
102
100
  console.error(ex)
103
101
  }
@@ -107,15 +105,13 @@ export class XyPixel {
107
105
 
108
106
  private updateFbId() {
109
107
  this.exids = {
110
- ...{
111
- fbc: Cookies.get('_fbc'),
112
- fbp: Cookies.get('_fbp'),
113
- ga: Cookies.get('_ga'),
114
- gclid: Cookies.get('_gcl_aw'),
115
- rdt_uid: Cookies.get('rdt_uid'),
116
- scid: Cookies.get('_scid'),
117
- tt_sessionId: sessionStorage.getItem('tt_sessionId') ?? undefined,
118
- },
108
+ fbc: Cookies.get('_fbc'),
109
+ fbp: Cookies.get('_fbp'),
110
+ ga: Cookies.get('_ga'),
111
+ gclid: Cookies.get('_gcl_aw'),
112
+ rdt_uid: Cookies.get('rdt_uid'),
113
+ scid: Cookies.get('_scid'),
114
+ tt_sessionId: sessionStorage.getItem('tt_sessionId') ?? undefined,
119
115
  }
120
116
  }
121
117
  }
package/src/Referrer.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export class Referrer {
2
2
  private static storageId = '_coin_referrer'
3
- public local: string
4
- public session: string
3
+ local: string
4
+ session: string
5
5
  constructor() {
6
6
  this.session = this.getFromSession() ?? document.referrer
7
7
  sessionStorage.setItem(Referrer.storageId, this.session)
@@ -9,7 +9,7 @@ export class Referrer {
9
9
  window.localStorage.setItem(Referrer.storageId, this.local)
10
10
  }
11
11
 
12
- public toJson() {
12
+ toJson() {
13
13
  if ((this.local && this.local.length > 0) || (this.session && this.session.length > 0)) {
14
14
  return {
15
15
  local: this.local,
@@ -2,14 +2,14 @@ import randomBytes from 'randombytes'
2
2
 
3
3
  export class UniqueUserId {
4
4
  private static localStorageId = '_coin_cid'
5
- public id: string
5
+ id: string
6
6
 
7
7
  constructor() {
8
8
  this.id = window.localStorage.getItem(UniqueUserId.localStorageId) ?? this.generateId()
9
9
  window.localStorage.setItem(UniqueUserId.localStorageId, this.id)
10
10
  }
11
11
 
12
- public toString() {
12
+ toString() {
13
13
  return this.id
14
14
  }
15
15
 
package/src/UtmFields.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { isEqual } from 'lodash-es'
1
+ import { isEqual } from '@xylabs/lodash'
2
2
 
3
3
  export class UtmFields {
4
4
  private static localStorageId = '_coin_utm'
5
- public fields: Record<string, string>[] = []
5
+ fields: Record<string, string>[] = []
6
6
  constructor() {
7
7
  const storedString = window.localStorage.getItem(UtmFields.localStorageId) ?? '[]'
8
8
  try {
@@ -18,7 +18,7 @@ export class UtmFields {
18
18
  window.localStorage.setItem(UtmFields.localStorageId, JSON.stringify(this.fields))
19
19
  }
20
20
 
21
- public getUtmRecord = () => {
21
+ getUtmRecord = () => {
22
22
  const record: Record<string, string> = {}
23
23
  const parsedQueryString = document.location.search.split('?')[1]?.split('&') ?? []
24
24
  parsedQueryString.map((item) => {
@@ -31,17 +31,15 @@ export class UtmFields {
31
31
  return Object.keys(record).length > 0 ? record : null
32
32
  }
33
33
 
34
- public toString() {
34
+ toString() {
35
35
  return JSON.stringify(this.fields)
36
36
  }
37
37
 
38
38
  //check the query string and if there an new/updated utm values, add them to the fields
39
- public update() {
39
+ update() {
40
40
  const record = this.getUtmRecord()
41
- if (record) {
42
- if (!isEqual(this.fields[this.fields.length - 1], record)) {
43
- this.fields.push(record)
44
- }
41
+ if (record && !isEqual(this.fields.at(-1), record)) {
42
+ this.fields.push(record)
45
43
  }
46
44
  return this.fields ?? undefined
47
45
  }
@@ -10,19 +10,19 @@ export class XyUserEventHandler<T extends Record<string, unknown>> extends UserE
10
10
  super()
11
11
  }
12
12
 
13
- public async funnelStarted(fields: T | FunnelStartedFields) {
13
+ async funnelStarted(fields: T | FunnelStartedFields) {
14
14
  return await XyPixel.instance.send('FunnelStarted', fields)
15
15
  }
16
16
 
17
- public async testStarted(fields: T | TestStartedFields) {
17
+ async testStarted(fields: T | TestStartedFields) {
18
18
  return await XyPixel.instance.send('TestStarted', fields)
19
19
  }
20
20
 
21
- public async userClick(fields: T | UserClickFields) {
21
+ async userClick(fields: T | UserClickFields) {
22
22
  return await XyPixel.instance.send('ViewPage', fields)
23
23
  }
24
24
 
25
- public async viewContent(fields: T | ViewContentFields) {
25
+ async viewContent(fields: T | ViewContentFields) {
26
26
  return await XyPixel.instance.send('ViewContent', fields)
27
27
  }
28
28
  }
@@ -2,7 +2,7 @@ import { parse } from 'bowser'
2
2
 
3
3
  import { UserEventSystem } from './Api'
4
4
 
5
- let systemInfo: UserEventSystem | undefined = undefined
5
+ let systemInfo: UserEventSystem | undefined
6
6
 
7
7
  export const getSystemInfo = () => {
8
8
  try {