@formo/analytics 1.16.3 → 1.16.5

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 (263) hide show
  1. package/dist/cjs/src/FormoAnalytics.d.ts +69 -38
  2. package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
  3. package/dist/cjs/src/FormoAnalytics.js +143 -198
  4. package/dist/cjs/src/FormoAnalytics.js.map +1 -1
  5. package/dist/cjs/src/FormoAnalyticsProvider.js +5 -5
  6. package/dist/cjs/src/FormoAnalyticsProvider.js.map +1 -1
  7. package/dist/cjs/src/constants/config.d.ts +1 -1
  8. package/dist/cjs/src/constants/config.d.ts.map +1 -1
  9. package/dist/cjs/src/constants/config.js +1 -1
  10. package/dist/cjs/src/constants/config.js.map +1 -1
  11. package/dist/cjs/src/constants/events.d.ts +14 -5
  12. package/dist/cjs/src/constants/events.d.ts.map +1 -1
  13. package/dist/cjs/src/constants/events.js +20 -12
  14. package/dist/cjs/src/constants/events.js.map +1 -1
  15. package/dist/cjs/src/lib/event/EventFactory.d.ts +22 -54
  16. package/dist/cjs/src/lib/event/EventFactory.d.ts.map +1 -1
  17. package/dist/cjs/src/lib/event/EventFactory.js +187 -116
  18. package/dist/cjs/src/lib/event/EventFactory.js.map +1 -1
  19. package/dist/cjs/src/lib/event/EventManager.d.ts +22 -0
  20. package/dist/cjs/src/lib/event/EventManager.d.ts.map +1 -0
  21. package/dist/cjs/src/lib/event/EventManager.js +48 -0
  22. package/dist/cjs/src/lib/event/EventManager.js.map +1 -0
  23. package/dist/cjs/src/lib/event/constants.d.ts +4 -0
  24. package/dist/cjs/src/lib/event/constants.d.ts.map +1 -0
  25. package/dist/cjs/src/lib/event/constants.js +8 -0
  26. package/dist/cjs/src/lib/event/constants.js.map +1 -0
  27. package/dist/cjs/src/lib/event/index.d.ts +1 -0
  28. package/dist/cjs/src/lib/event/index.d.ts.map +1 -1
  29. package/dist/cjs/src/lib/event/index.js +1 -0
  30. package/dist/cjs/src/lib/event/index.js.map +1 -1
  31. package/dist/cjs/src/lib/event/type.d.ts +5 -3
  32. package/dist/cjs/src/lib/event/type.d.ts.map +1 -1
  33. package/dist/cjs/src/lib/event/utils.d.ts +4 -0
  34. package/dist/cjs/src/lib/event/utils.d.ts.map +1 -0
  35. package/dist/cjs/src/lib/event/utils.js +16 -0
  36. package/dist/cjs/src/lib/event/utils.js.map +1 -0
  37. package/dist/cjs/src/lib/fetch.d.ts +1 -1
  38. package/dist/cjs/src/lib/queue/EventQueue.d.ts +1 -0
  39. package/dist/cjs/src/lib/queue/EventQueue.d.ts.map +1 -1
  40. package/dist/cjs/src/lib/queue/EventQueue.js +22 -14
  41. package/dist/cjs/src/lib/queue/EventQueue.js.map +1 -1
  42. package/dist/cjs/src/lib/ramda/internal/_curry1.d.ts +10 -0
  43. package/dist/cjs/src/lib/ramda/internal/_curry1.d.ts.map +1 -0
  44. package/dist/cjs/src/lib/ramda/internal/_curry1.js +26 -0
  45. package/dist/cjs/src/lib/ramda/internal/_curry1.js.map +1 -0
  46. package/dist/cjs/src/lib/ramda/internal/_curry2.d.ts +10 -0
  47. package/dist/cjs/src/lib/ramda/internal/_curry2.d.ts.map +1 -0
  48. package/dist/cjs/src/lib/ramda/internal/_curry2.js +43 -0
  49. package/dist/cjs/src/lib/ramda/internal/_curry2.js.map +1 -0
  50. package/dist/cjs/src/lib/ramda/internal/_curry3.d.ts +10 -0
  51. package/dist/cjs/src/lib/ramda/internal/_curry3.d.ts.map +1 -0
  52. package/dist/cjs/src/lib/ramda/internal/_curry3.js +74 -0
  53. package/dist/cjs/src/lib/ramda/internal/_curry3.js.map +1 -0
  54. package/dist/cjs/src/lib/ramda/internal/_has.d.ts +2 -0
  55. package/dist/cjs/src/lib/ramda/internal/_has.d.ts.map +1 -0
  56. package/dist/cjs/src/lib/ramda/internal/_has.js +7 -0
  57. package/dist/cjs/src/lib/ramda/internal/_has.js.map +1 -0
  58. package/dist/cjs/src/lib/ramda/internal/_isObject.d.ts +2 -0
  59. package/dist/cjs/src/lib/ramda/internal/_isObject.d.ts.map +1 -0
  60. package/dist/cjs/src/lib/ramda/internal/_isObject.js +7 -0
  61. package/dist/cjs/src/lib/ramda/internal/_isObject.js.map +1 -0
  62. package/dist/cjs/src/lib/ramda/internal/_isPlaceholder.d.ts +2 -0
  63. package/dist/cjs/src/lib/ramda/internal/_isPlaceholder.d.ts.map +1 -0
  64. package/dist/cjs/src/lib/ramda/internal/_isPlaceholder.js +7 -0
  65. package/dist/cjs/src/lib/ramda/internal/_isPlaceholder.js.map +1 -0
  66. package/dist/cjs/src/lib/ramda/mergeDeepRight.d.ts +3 -0
  67. package/dist/cjs/src/lib/ramda/mergeDeepRight.d.ts.map +1 -0
  68. package/dist/cjs/src/lib/ramda/mergeDeepRight.js +14 -0
  69. package/dist/cjs/src/lib/ramda/mergeDeepRight.js.map +1 -0
  70. package/dist/cjs/src/lib/ramda/mergeDeepWithKey.d.ts +3 -0
  71. package/dist/cjs/src/lib/ramda/mergeDeepWithKey.d.ts.map +1 -0
  72. package/dist/cjs/src/lib/ramda/mergeDeepWithKey.js +20 -0
  73. package/dist/cjs/src/lib/ramda/mergeDeepWithKey.js.map +1 -0
  74. package/dist/cjs/src/lib/ramda/mergeWithKey.d.ts +3 -0
  75. package/dist/cjs/src/lib/ramda/mergeWithKey.d.ts.map +1 -0
  76. package/dist/cjs/src/lib/ramda/mergeWithKey.js +26 -0
  77. package/dist/cjs/src/lib/ramda/mergeWithKey.js.map +1 -0
  78. package/dist/cjs/src/lib/storage/native.d.ts +1 -0
  79. package/dist/cjs/src/lib/storage/native.d.ts.map +1 -1
  80. package/dist/cjs/src/lib/storage/native.js +3 -0
  81. package/dist/cjs/src/lib/storage/native.js.map +1 -1
  82. package/dist/cjs/src/lib/version.d.ts +2 -0
  83. package/dist/cjs/src/lib/version.d.ts.map +1 -0
  84. package/dist/cjs/src/lib/version.js +6 -0
  85. package/dist/cjs/src/lib/version.js.map +1 -0
  86. package/dist/cjs/src/types/base.d.ts +1 -0
  87. package/dist/cjs/src/types/base.d.ts.map +1 -1
  88. package/dist/cjs/src/types/events.d.ts +55 -27
  89. package/dist/cjs/src/types/events.d.ts.map +1 -1
  90. package/dist/cjs/src/types/events.js.map +1 -1
  91. package/dist/cjs/src/utils/base.d.ts +1 -1
  92. package/dist/cjs/src/utils/base.d.ts.map +1 -1
  93. package/dist/cjs/src/utils/base.js +2 -2
  94. package/dist/cjs/src/utils/base.js.map +1 -1
  95. package/dist/cjs/src/utils/timestamp.d.ts +8 -0
  96. package/dist/cjs/src/utils/timestamp.d.ts.map +1 -0
  97. package/dist/cjs/src/utils/timestamp.js +12 -0
  98. package/dist/cjs/src/utils/timestamp.js.map +1 -0
  99. package/dist/cjs/src/validators/checks.d.ts +77 -0
  100. package/dist/cjs/src/validators/checks.d.ts.map +1 -0
  101. package/dist/cjs/src/validators/checks.js +141 -0
  102. package/dist/cjs/src/validators/checks.js.map +1 -0
  103. package/dist/cjs/src/validators/index.d.ts +2 -1
  104. package/dist/cjs/src/validators/index.d.ts.map +1 -1
  105. package/dist/cjs/src/validators/index.js +2 -1
  106. package/dist/cjs/src/validators/index.js.map +1 -1
  107. package/dist/cjs/src/validators/network.d.ts +2 -0
  108. package/dist/cjs/src/validators/network.d.ts.map +1 -0
  109. package/dist/cjs/src/validators/network.js +31 -0
  110. package/dist/cjs/src/validators/network.js.map +1 -0
  111. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  112. package/dist/esm/src/FormoAnalytics.d.ts +69 -38
  113. package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
  114. package/dist/esm/src/FormoAnalytics.js +146 -201
  115. package/dist/esm/src/FormoAnalytics.js.map +1 -1
  116. package/dist/esm/src/FormoAnalyticsProvider.js +5 -5
  117. package/dist/esm/src/FormoAnalyticsProvider.js.map +1 -1
  118. package/dist/esm/src/constants/config.d.ts +1 -1
  119. package/dist/esm/src/constants/config.d.ts.map +1 -1
  120. package/dist/esm/src/constants/config.js +1 -1
  121. package/dist/esm/src/constants/config.js.map +1 -1
  122. package/dist/esm/src/constants/events.d.ts +14 -5
  123. package/dist/esm/src/constants/events.d.ts.map +1 -1
  124. package/dist/esm/src/constants/events.js +19 -11
  125. package/dist/esm/src/constants/events.js.map +1 -1
  126. package/dist/esm/src/lib/event/EventFactory.d.ts +22 -54
  127. package/dist/esm/src/lib/event/EventFactory.d.ts.map +1 -1
  128. package/dist/esm/src/lib/event/EventFactory.js +185 -117
  129. package/dist/esm/src/lib/event/EventFactory.js.map +1 -1
  130. package/dist/esm/src/lib/event/EventManager.d.ts +22 -0
  131. package/dist/esm/src/lib/event/EventManager.d.ts.map +1 -0
  132. package/dist/esm/src/lib/event/EventManager.js +45 -0
  133. package/dist/esm/src/lib/event/EventManager.js.map +1 -0
  134. package/dist/esm/src/lib/event/constants.d.ts +4 -0
  135. package/dist/esm/src/lib/event/constants.d.ts.map +1 -0
  136. package/dist/esm/src/lib/event/constants.js +4 -0
  137. package/dist/esm/src/lib/event/constants.js.map +1 -0
  138. package/dist/esm/src/lib/event/index.d.ts +1 -0
  139. package/dist/esm/src/lib/event/index.d.ts.map +1 -1
  140. package/dist/esm/src/lib/event/index.js +1 -0
  141. package/dist/esm/src/lib/event/index.js.map +1 -1
  142. package/dist/esm/src/lib/event/type.d.ts +5 -3
  143. package/dist/esm/src/lib/event/type.d.ts.map +1 -1
  144. package/dist/esm/src/lib/event/utils.d.ts +4 -0
  145. package/dist/esm/src/lib/event/utils.d.ts.map +1 -0
  146. package/dist/esm/src/lib/event/utils.js +13 -0
  147. package/dist/esm/src/lib/event/utils.js.map +1 -0
  148. package/dist/esm/src/lib/queue/EventQueue.d.ts +1 -0
  149. package/dist/esm/src/lib/queue/EventQueue.d.ts.map +1 -1
  150. package/dist/esm/src/lib/queue/EventQueue.js +21 -13
  151. package/dist/esm/src/lib/queue/EventQueue.js.map +1 -1
  152. package/dist/esm/src/lib/ramda/internal/_curry1.d.ts +10 -0
  153. package/dist/esm/src/lib/ramda/internal/_curry1.d.ts.map +1 -0
  154. package/dist/esm/src/lib/ramda/internal/_curry1.js +20 -0
  155. package/dist/esm/src/lib/ramda/internal/_curry1.js.map +1 -0
  156. package/dist/esm/src/lib/ramda/internal/_curry2.d.ts +10 -0
  157. package/dist/esm/src/lib/ramda/internal/_curry2.d.ts.map +1 -0
  158. package/dist/esm/src/lib/ramda/internal/_curry2.js +37 -0
  159. package/dist/esm/src/lib/ramda/internal/_curry2.js.map +1 -0
  160. package/dist/esm/src/lib/ramda/internal/_curry3.d.ts +10 -0
  161. package/dist/esm/src/lib/ramda/internal/_curry3.d.ts.map +1 -0
  162. package/dist/esm/src/lib/ramda/internal/_curry3.js +68 -0
  163. package/dist/esm/src/lib/ramda/internal/_curry3.js.map +1 -0
  164. package/dist/esm/src/lib/ramda/internal/_has.d.ts +2 -0
  165. package/dist/esm/src/lib/ramda/internal/_has.d.ts.map +1 -0
  166. package/dist/esm/src/lib/ramda/internal/_has.js +4 -0
  167. package/dist/esm/src/lib/ramda/internal/_has.js.map +1 -0
  168. package/dist/esm/src/lib/ramda/internal/_isObject.d.ts +2 -0
  169. package/dist/esm/src/lib/ramda/internal/_isObject.d.ts.map +1 -0
  170. package/dist/esm/src/lib/ramda/internal/_isObject.js +4 -0
  171. package/dist/esm/src/lib/ramda/internal/_isObject.js.map +1 -0
  172. package/dist/esm/src/lib/ramda/internal/_isPlaceholder.d.ts +2 -0
  173. package/dist/esm/src/lib/ramda/internal/_isPlaceholder.d.ts.map +1 -0
  174. package/dist/esm/src/lib/ramda/internal/_isPlaceholder.js +4 -0
  175. package/dist/esm/src/lib/ramda/internal/_isPlaceholder.js.map +1 -0
  176. package/dist/esm/src/lib/ramda/mergeDeepRight.d.ts +3 -0
  177. package/dist/esm/src/lib/ramda/mergeDeepRight.d.ts.map +1 -0
  178. package/dist/esm/src/lib/ramda/mergeDeepRight.js +9 -0
  179. package/dist/esm/src/lib/ramda/mergeDeepRight.js.map +1 -0
  180. package/dist/esm/src/lib/ramda/mergeDeepWithKey.d.ts +3 -0
  181. package/dist/esm/src/lib/ramda/mergeDeepWithKey.d.ts.map +1 -0
  182. package/dist/esm/src/lib/ramda/mergeDeepWithKey.js +15 -0
  183. package/dist/esm/src/lib/ramda/mergeDeepWithKey.js.map +1 -0
  184. package/dist/esm/src/lib/ramda/mergeWithKey.d.ts +3 -0
  185. package/dist/esm/src/lib/ramda/mergeWithKey.d.ts.map +1 -0
  186. package/dist/esm/src/lib/ramda/mergeWithKey.js +21 -0
  187. package/dist/esm/src/lib/ramda/mergeWithKey.js.map +1 -0
  188. package/dist/esm/src/lib/storage/native.d.ts +1 -0
  189. package/dist/esm/src/lib/storage/native.d.ts.map +1 -1
  190. package/dist/esm/src/lib/storage/native.js +3 -0
  191. package/dist/esm/src/lib/storage/native.js.map +1 -1
  192. package/dist/esm/src/lib/version.d.ts +2 -0
  193. package/dist/esm/src/lib/version.d.ts.map +1 -0
  194. package/dist/esm/src/lib/version.js +3 -0
  195. package/dist/esm/src/lib/version.js.map +1 -0
  196. package/dist/esm/src/types/base.d.ts +1 -0
  197. package/dist/esm/src/types/base.d.ts.map +1 -1
  198. package/dist/esm/src/types/events.d.ts +55 -27
  199. package/dist/esm/src/types/events.d.ts.map +1 -1
  200. package/dist/esm/src/types/events.js.map +1 -1
  201. package/dist/esm/src/utils/base.d.ts +1 -1
  202. package/dist/esm/src/utils/base.d.ts.map +1 -1
  203. package/dist/esm/src/utils/base.js +2 -2
  204. package/dist/esm/src/utils/base.js.map +1 -1
  205. package/dist/esm/src/utils/timestamp.d.ts +8 -0
  206. package/dist/esm/src/utils/timestamp.d.ts.map +1 -0
  207. package/dist/esm/src/utils/timestamp.js +8 -0
  208. package/dist/esm/src/utils/timestamp.js.map +1 -0
  209. package/dist/esm/src/validators/checks.d.ts +77 -0
  210. package/dist/esm/src/validators/checks.d.ts.map +1 -0
  211. package/dist/esm/src/validators/checks.js +119 -0
  212. package/dist/esm/src/validators/checks.js.map +1 -0
  213. package/dist/esm/src/validators/index.d.ts +2 -1
  214. package/dist/esm/src/validators/index.d.ts.map +1 -1
  215. package/dist/esm/src/validators/index.js +2 -1
  216. package/dist/esm/src/validators/index.js.map +1 -1
  217. package/dist/esm/src/validators/network.d.ts +2 -0
  218. package/dist/esm/src/validators/network.d.ts.map +1 -0
  219. package/dist/esm/src/validators/network.js +28 -0
  220. package/dist/esm/src/validators/network.js.map +1 -0
  221. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  222. package/dist/index.umd.min.js +1 -1
  223. package/dist/index.umd.min.js.map +1 -1
  224. package/package.json +3 -3
  225. package/src/FormoAnalytics.ts +380 -242
  226. package/src/FormoAnalyticsProvider.tsx +5 -5
  227. package/src/constants/config.ts +1 -1
  228. package/src/constants/events.ts +15 -4
  229. package/src/lib/event/EventFactory.ts +358 -162
  230. package/src/lib/event/EventManager.ts +39 -0
  231. package/src/lib/event/constants.ts +4 -0
  232. package/src/lib/event/index.ts +1 -0
  233. package/src/lib/event/type.ts +6 -8
  234. package/src/lib/event/utils.ts +15 -0
  235. package/src/lib/queue/EventQueue.ts +23 -11
  236. package/src/lib/ramda/internal/_curry1.ts +19 -0
  237. package/src/lib/ramda/internal/_curry2.ts +37 -0
  238. package/src/lib/ramda/internal/_curry3.ts +68 -0
  239. package/src/lib/ramda/internal/_has.ts +3 -0
  240. package/src/lib/ramda/internal/_isObject.ts +3 -0
  241. package/src/lib/ramda/internal/_isPlaceholder.ts +5 -0
  242. package/src/lib/ramda/mergeDeepRight.ts +13 -0
  243. package/src/lib/ramda/mergeDeepWithKey.ts +22 -0
  244. package/src/lib/ramda/mergeWithKey.ts +28 -0
  245. package/src/lib/storage/native.ts +4 -0
  246. package/src/lib/version.ts +2 -0
  247. package/src/types/base.ts +1 -0
  248. package/src/types/events.ts +93 -58
  249. package/src/utils/base.ts +2 -2
  250. package/src/utils/timestamp.ts +9 -0
  251. package/src/validators/checks.ts +160 -0
  252. package/src/validators/index.ts +2 -1
  253. package/src/validators/network.ts +34 -0
  254. package/tsconfig.json +1 -1
  255. package/dist/cjs/src/validators/type-check.d.ts +0 -14
  256. package/dist/cjs/src/validators/type-check.d.ts.map +0 -1
  257. package/dist/cjs/src/validators/type-check.js +0 -61
  258. package/dist/cjs/src/validators/type-check.js.map +0 -1
  259. package/dist/esm/src/validators/type-check.d.ts +0 -14
  260. package/dist/esm/src/validators/type-check.d.ts.map +0 -1
  261. package/dist/esm/src/validators/type-check.js +0 -46
  262. package/dist/esm/src/validators/type-check.js.map +0 -1
  263. package/src/validators/type-check.ts +0 -61
@@ -1,17 +1,17 @@
1
- import { UUID } from "crypto";
2
1
  import { createStore, EIP6963ProviderDetail } from "mipd";
3
2
  import {
4
- Event,
5
3
  EVENTS_API_URL,
4
+ EventType,
6
5
  LOCAL_ANONYMOUS_ID_KEY,
7
6
  SESSION_CURRENT_URL_KEY,
8
7
  SESSION_USER_ID_KEY,
9
8
  SESSION_WALLET_DETECTED_KEY,
9
+ TEventType,
10
10
  } from "./constants";
11
11
  import {
12
- EventFactory,
12
+ EventManager,
13
13
  EventQueue,
14
- IEventFactory,
14
+ IEventManager,
15
15
  local,
16
16
  logger,
17
17
  Logger,
@@ -22,62 +22,104 @@ import {
22
22
  ChainID,
23
23
  Config,
24
24
  EIP1193Provider,
25
+ IFormoEventContext,
26
+ IFormoEventProperties,
25
27
  Options,
26
28
  RequestArguments,
27
29
  RPCError,
28
30
  SignatureStatus,
29
31
  TransactionStatus,
30
32
  } from "./types";
31
- import { generateNativeUUID } from "./utils";
32
- import { isAddress, isArray, isLocalhost } from "./validators";
33
+ import { isAddress, isLocalhost } from "./validators";
33
34
 
34
35
  interface IFormoAnalytics {
35
- page(): void;
36
+ page(
37
+ category?: string,
38
+ name?: string,
39
+ properties?: IFormoEventProperties,
40
+ context?: IFormoEventContext,
41
+ callback?: (...args: unknown[]) => void
42
+ ): void;
36
43
  reset(): void;
37
- connect(params: { chainId: ChainID; address: Address }): Promise<void>;
38
- disconnect(params?: { chainId?: ChainID; address?: Address }): Promise<void>;
39
- chain(params: { chainId: ChainID; address?: Address }): Promise<void>;
40
- signature(params: {
41
- status: SignatureStatus;
42
- chainId?: ChainID;
43
- address: Address;
44
- message: string;
45
- signatureHash?: string;
46
- }): Promise<void>;
47
- transaction(params: {
48
- status: TransactionStatus;
49
- chainId: ChainID;
50
- address: Address;
51
- data?: string;
52
- to?: string;
53
- value?: string;
54
- transactionHash?: string;
55
- }): Promise<void>;
44
+ detect(
45
+ params: { rdns: string; providerName: string },
46
+ properties?: IFormoEventProperties,
47
+ context?: IFormoEventContext,
48
+ callback?: (...args: unknown[]) => void
49
+ ): Promise<void>;
50
+ connect(
51
+ params: { chainId: ChainID; address: Address },
52
+ properties?: IFormoEventProperties,
53
+ context?: IFormoEventContext,
54
+ callback?: (...args: unknown[]) => void
55
+ ): Promise<void>;
56
+ disconnect(
57
+ params?: { chainId?: ChainID; address?: Address },
58
+ properties?: IFormoEventProperties,
59
+ context?: IFormoEventContext,
60
+ callback?: (...args: unknown[]) => void
61
+ ): Promise<void>;
62
+ chain(
63
+ params: { chainId: ChainID; address?: Address },
64
+ properties?: IFormoEventProperties,
65
+ context?: IFormoEventContext,
66
+ callback?: (...args: unknown[]) => void
67
+ ): Promise<void>;
68
+ signature(
69
+ params: {
70
+ status: SignatureStatus;
71
+ chainId?: ChainID;
72
+ address: Address;
73
+ message: string;
74
+ signatureHash?: string;
75
+ },
76
+ properties?: IFormoEventProperties,
77
+ context?: IFormoEventContext,
78
+ callback?: (...args: unknown[]) => void
79
+ ): Promise<void>;
80
+ transaction(
81
+ params: {
82
+ status: TransactionStatus;
83
+ chainId: ChainID;
84
+ address: Address;
85
+ data?: string;
86
+ to?: string;
87
+ value?: string;
88
+ transactionHash?: string;
89
+ },
90
+ properties?: IFormoEventProperties,
91
+ context?: IFormoEventContext,
92
+ callback?: (...args: unknown[]) => void
93
+ ): Promise<void>;
56
94
  identify(
57
- params?:
58
- | {
59
- address: Address | null;
60
- providerName?: string;
61
- userId?: string;
62
- rdns?: string;
63
- }
64
- | readonly EIP6963ProviderDetail[]
95
+ params: {
96
+ address: Address;
97
+ providerName?: string;
98
+ userId?: string;
99
+ rdns?: string;
100
+ },
101
+ properties?: IFormoEventProperties,
102
+ context?: IFormoEventContext,
103
+ callback?: (...args: unknown[]) => void
104
+ ): Promise<void>;
105
+ track(
106
+ event: string,
107
+ properties?: IFormoEventProperties,
108
+ context?: IFormoEventContext,
109
+ callback?: (...args: unknown[]) => void
65
110
  ): Promise<void>;
66
- track(action: string, payload: Record<string, any>): Promise<void>;
67
111
  }
68
112
 
69
113
  export class FormoAnalytics implements IFormoAnalytics {
70
114
  private _provider?: EIP1193Provider;
71
115
  private _providerListeners: Record<string, (...args: unknown[]) => void> = {};
72
116
  private session: FormoAnalyticsSession;
73
- private eventQueue: EventQueue;
74
- private anonymousId: UUID | null = null;
75
- private userId: string | null = null;
76
- private eventFactory: IEventFactory;
117
+ private eventManager: IEventManager;
77
118
 
78
119
  config: Config;
79
120
  currentChainId?: ChainID;
80
- currentConnectedAddress?: Address;
121
+ currentAddress?: Address;
122
+ currentUserId?: string;
81
123
 
82
124
  private constructor(
83
125
  public readonly writeKey: string,
@@ -89,6 +131,8 @@ export class FormoAnalytics implements IFormoAnalytics {
89
131
  };
90
132
 
91
133
  this.session = new FormoAnalyticsSession();
134
+ this.currentUserId =
135
+ (session.get(SESSION_USER_ID_KEY) as string) || undefined;
92
136
 
93
137
  // Initialize logger with configuration from options
94
138
  Logger.init({
@@ -96,18 +140,15 @@ export class FormoAnalytics implements IFormoAnalytics {
96
140
  enabledLevels: options.logger?.levels || [],
97
141
  });
98
142
 
99
- this.eventFactory = new EventFactory();
100
-
101
- this.eventQueue = new EventQueue(this.config.writeKey, {
102
- url: EVENTS_API_URL,
103
- flushAt: options.flushAt,
104
- retryCount: options.retryCount,
105
- maxQueueSize: options.maxQueueSize,
106
- flushInterval: options.flushInterval,
107
- });
108
-
109
- this.anonymousId = this.getAnonymousId();
110
- this.userId = session.get(SESSION_USER_ID_KEY) as string | null;
143
+ this.eventManager = new EventManager(
144
+ new EventQueue(this.config.writeKey, {
145
+ url: EVENTS_API_URL,
146
+ flushAt: options.flushAt,
147
+ retryCount: options.retryCount,
148
+ maxQueueSize: options.maxQueueSize,
149
+ flushInterval: options.flushInterval,
150
+ })
151
+ );
111
152
 
112
153
  // TODO: replace with eip6963
113
154
  const provider = options.provider || window?.ethereum;
@@ -125,9 +166,9 @@ export class FormoAnalytics implements IFormoAnalytics {
125
166
  ): Promise<FormoAnalytics> {
126
167
  const analytics = new FormoAnalytics(writeKey, options);
127
168
 
128
- // Detect
169
+ // Auto-detect wallet provider
129
170
  const providers = await analytics.getProviders();
130
- await analytics.detects(providers);
171
+ await analytics.detectWallets(providers);
131
172
 
132
173
  return analytics;
133
174
  }
@@ -138,10 +179,19 @@ export class FormoAnalytics implements IFormoAnalytics {
138
179
 
139
180
  /**
140
181
  * Emits a page visit event with the current URL information, fire on page change.
182
+ * @param {string} category - The category of the page
183
+ * @param {string} name - The name of the page
184
+ * @param {Record<string, any>} properties - Additional properties to include
185
+ * @param {Record<string, any>} context - Additional context to include
141
186
  * @returns {Promise<void>}
142
187
  */
143
- public async page(): Promise<void> {
144
- await this.trackPageHit();
188
+ public async page(
189
+ category?: string,
190
+ name?: string,
191
+ properties?: IFormoEventProperties,
192
+ context?: IFormoEventContext
193
+ ): Promise<void> {
194
+ await this.trackPageHit(category, name, properties, context);
145
195
  }
146
196
 
147
197
  /**
@@ -149,26 +199,33 @@ export class FormoAnalytics implements IFormoAnalytics {
149
199
  * @returns {void}
150
200
  */
151
201
  public reset(): void {
152
- this.anonymousId = this.getAnonymousId();
153
- this.userId = null;
202
+ this.currentUserId = undefined;
154
203
  local.remove(LOCAL_ANONYMOUS_ID_KEY);
155
204
  session.remove(SESSION_USER_ID_KEY);
156
205
  }
157
206
 
158
207
  /**
159
- * Emits a wallet connect event.
208
+ * Emits a connect wallet event.
160
209
  * @param {ChainID} params.chainId
161
210
  * @param {Address} params.address
211
+ * @param {IFormoEventProperties} properties
212
+ * @param {IFormoEventContext} context
213
+ * @param {(...args: unknown[]) => void} callback
162
214
  * @throws {Error} If chainId or address is empty
163
215
  * @returns {Promise<void>}
164
216
  */
165
- async connect({
166
- chainId,
167
- address,
168
- }: {
169
- chainId: ChainID;
170
- address: Address;
171
- }): Promise<void> {
217
+ async connect(
218
+ {
219
+ chainId,
220
+ address,
221
+ }: {
222
+ chainId: ChainID;
223
+ address: Address;
224
+ },
225
+ properties?: IFormoEventProperties,
226
+ context?: IFormoEventContext,
227
+ callback?: (...args: unknown[]) => void
228
+ ): Promise<void> {
172
229
  if (!chainId) {
173
230
  logger.warn("Connect: Chain ID cannot be empty");
174
231
  }
@@ -177,45 +234,73 @@ export class FormoAnalytics implements IFormoAnalytics {
177
234
  }
178
235
 
179
236
  this.currentChainId = chainId;
180
- this.currentConnectedAddress = address;
237
+ this.currentAddress = address;
181
238
 
182
- await this.trackEvent(Event.CONNECT, {
183
- chainId,
184
- address,
185
- });
239
+ await this.trackEvent(
240
+ EventType.CONNECT,
241
+ {
242
+ chainId,
243
+ address,
244
+ },
245
+ properties,
246
+ context,
247
+ callback
248
+ );
186
249
  }
187
250
 
188
251
  /**
189
252
  * Emits a wallet disconnect event.
190
253
  * @param {ChainID} params.chainId
191
254
  * @param {Address} params.address
255
+ * @param {IFormoEventProperties} properties
256
+ * @param {IFormoEventContext} context
257
+ * @param {(...args: unknown[]) => void} callback
192
258
  * @returns {Promise<void>}
193
259
  */
194
- async disconnect(params?: {
195
- chainId?: ChainID;
196
- address?: Address;
197
- }): Promise<void> {
198
- const address = params?.address || this.currentConnectedAddress;
260
+ async disconnect(
261
+ params?: {
262
+ chainId?: ChainID;
263
+ address?: Address;
264
+ },
265
+ properties?: IFormoEventProperties,
266
+ context?: IFormoEventContext,
267
+ callback?: (...args: unknown[]) => void
268
+ ): Promise<void> {
269
+ const address = params?.address || this.currentAddress;
199
270
  const chainId = params?.chainId || this.currentChainId;
200
271
 
201
- await this.handleDisconnect(chainId, address);
272
+ await this.handleDisconnect(
273
+ chainId,
274
+ address,
275
+ properties,
276
+ context,
277
+ callback
278
+ );
202
279
  }
203
280
 
204
281
  /**
205
282
  * Emits a chain network change event.
206
283
  * @param {ChainID} params.chainId
207
284
  * @param {Address} params.address
285
+ * @param {IFormoEventProperties} properties
286
+ * @param {IFormoEventContext} context
287
+ * @param {(...args: unknown[]) => void} callback
208
288
  * @throws {Error} If chainId is empty, zero, or not a valid number
209
289
  * @throws {Error} If no address is provided and no previous address is recorded
210
290
  * @returns {Promise<void>}
211
291
  */
212
- async chain({
213
- chainId,
214
- address,
215
- }: {
216
- chainId: ChainID;
217
- address?: Address;
218
- }): Promise<void> {
292
+ async chain(
293
+ {
294
+ chainId,
295
+ address,
296
+ }: {
297
+ chainId: ChainID;
298
+ address?: Address;
299
+ },
300
+ properties?: IFormoEventProperties,
301
+ context?: IFormoEventContext,
302
+ callback?: (...args: unknown[]) => void
303
+ ): Promise<void> {
219
304
  if (!chainId || Number(chainId) === 0) {
220
305
  throw new Error("FormoAnalytics::chain: chainId cannot be empty or 0");
221
306
  }
@@ -224,7 +309,7 @@ export class FormoAnalytics implements IFormoAnalytics {
224
309
  "FormoAnalytics::chain: chainId must be a valid decimal number"
225
310
  );
226
311
  }
227
- if (!address && !this.currentConnectedAddress) {
312
+ if (!address && !this.currentAddress) {
228
313
  throw new Error(
229
314
  "FormoAnalytics::chain: address was empty and no previous address has been recorded"
230
315
  );
@@ -232,10 +317,16 @@ export class FormoAnalytics implements IFormoAnalytics {
232
317
 
233
318
  this.currentChainId = chainId;
234
319
 
235
- await this.trackEvent(Event.CHAIN_CHANGED, {
236
- chainId,
237
- address: address || this.currentConnectedAddress,
238
- });
320
+ await this.trackEvent(
321
+ EventType.CHAIN,
322
+ {
323
+ chainId,
324
+ address: address || this.currentAddress,
325
+ },
326
+ properties,
327
+ context,
328
+ callback
329
+ );
239
330
  }
240
331
 
241
332
  /**
@@ -245,28 +336,42 @@ export class FormoAnalytics implements IFormoAnalytics {
245
336
  * @param {Address} params.address
246
337
  * @param {string} params.message
247
338
  * @param {string} params.signatureHash - only provided if status is confirmed
339
+ * @param {IFormoEventProperties} properties
340
+ * @param {IFormoEventContext} context
341
+ * @param {(...args: unknown[]) => void} callback
248
342
  * @returns {Promise<void>}
249
343
  */
250
- async signature({
251
- status,
252
- chainId,
253
- address,
254
- message,
255
- signatureHash,
256
- }: {
257
- status: SignatureStatus;
258
- chainId?: ChainID;
259
- address: Address;
260
- message: string;
261
- signatureHash?: string;
262
- }): Promise<void> {
263
- await this.trackEvent(Event.SIGNATURE, {
344
+ async signature(
345
+ {
264
346
  status,
265
347
  chainId,
266
348
  address,
267
349
  message,
268
- ...(signatureHash && { signatureHash }),
269
- });
350
+ signatureHash,
351
+ }: {
352
+ status: SignatureStatus;
353
+ chainId?: ChainID;
354
+ address: Address;
355
+ message: string;
356
+ signatureHash?: string;
357
+ },
358
+ properties?: IFormoEventProperties,
359
+ context?: IFormoEventContext,
360
+ callback?: (...args: unknown[]) => void
361
+ ): Promise<void> {
362
+ await this.trackEvent(
363
+ EventType.SIGNATURE,
364
+ {
365
+ status,
366
+ chainId,
367
+ address,
368
+ message,
369
+ ...(signatureHash && { signatureHash }),
370
+ },
371
+ properties,
372
+ context,
373
+ callback
374
+ );
270
375
  }
271
376
 
272
377
  /**
@@ -278,132 +383,154 @@ export class FormoAnalytics implements IFormoAnalytics {
278
383
  * @param {string} params.to
279
384
  * @param {string} params.value
280
385
  * @param {string} params.transactionHash - only provided if status is broadcasted
386
+ * @param {IFormoEventProperties} properties
387
+ * @param {IFormoEventContext} context
388
+ * @param {(...args: unknown[]) => void} callback
281
389
  * @returns {Promise<void>}
282
390
  */
283
- async transaction({
284
- status,
285
- chainId,
286
- address,
287
- data,
288
- to,
289
- value,
290
- transactionHash,
291
- }: {
292
- status: TransactionStatus;
293
- chainId: ChainID;
294
- address: Address;
295
- data?: string;
296
- to?: string;
297
- value?: string;
298
- transactionHash?: string;
299
- }): Promise<void> {
300
- await this.trackEvent(Event.TRANSACTION, {
391
+ async transaction(
392
+ {
301
393
  status,
302
394
  chainId,
303
395
  address,
304
396
  data,
305
397
  to,
306
398
  value,
307
- ...(transactionHash && { transactionHash }),
308
- });
399
+ transactionHash,
400
+ }: {
401
+ status: TransactionStatus;
402
+ chainId: ChainID;
403
+ address: Address;
404
+ data?: string;
405
+ to?: string;
406
+ value?: string;
407
+ transactionHash?: string;
408
+ },
409
+ properties?: IFormoEventProperties,
410
+ context?: IFormoEventContext,
411
+ callback?: (...args: unknown[]) => void
412
+ ): Promise<void> {
413
+ await this.trackEvent(
414
+ EventType.TRANSACTION,
415
+ {
416
+ status,
417
+ chainId,
418
+ address,
419
+ data,
420
+ to,
421
+ value,
422
+ ...(transactionHash && { transactionHash }),
423
+ },
424
+ properties,
425
+ context,
426
+ callback
427
+ );
309
428
  }
310
429
 
311
430
  /**
312
- * Emits an detect event with current wallet provider info.
431
+ * Emits an identify event with current wallet address and provider info.
313
432
  * @param {string} params.providerName
314
433
  * @param {string} params.rdns
315
434
  * @param {string} params.userId
316
435
  * @param {string} params.address
317
- *
436
+ * @param {IFormoEventProperties} properties
437
+ * @param {IFormoEventContext} context
438
+ * @param {(...args: unknown[]) => void} callback
318
439
  * @returns {Promise<void>}
319
440
  */
320
441
  public async identify(
321
- params?:
322
- | {
323
- address: Address | null;
324
- providerName?: string;
325
- userId?: string;
326
- rdns?: string;
327
- }
328
- | readonly EIP6963ProviderDetail[]
442
+ params: {
443
+ address?: Address;
444
+ providerName?: string;
445
+ userId?: string;
446
+ rdns?: string;
447
+ },
448
+ properties?: IFormoEventProperties,
449
+ context?: IFormoEventContext,
450
+ callback?: (...args: unknown[]) => void
329
451
  ): Promise<void> {
330
- if (isArray(params) || !params) {
331
- const providers = isArray(params) ? params : await this.getProviders();
332
- try {
333
- for (const eip6963ProviderDetail of providers) {
334
- if (!eip6963ProviderDetail) continue;
335
- const accounts = await this.getAccounts(
336
- eip6963ProviderDetail?.provider
337
- );
338
- // Identify with accounts
339
- if (accounts && accounts.length > 0) {
340
- for (const address of accounts) {
341
- await this.identify({
342
- address,
343
- providerName: eip6963ProviderDetail?.info.name,
344
- rdns: eip6963ProviderDetail?.info.rdns,
345
- });
346
- }
347
- } else {
348
- // Identify without accounts
349
- await this.identify({
350
- address: null,
351
- providerName: eip6963ProviderDetail?.info.name,
352
- rdns: eip6963ProviderDetail?.info.rdns,
353
- });
354
- }
355
- }
356
- } catch (err) {
357
- logger.error("Error identifying all:", err);
358
- }
359
- } else {
360
- const { userId, address, providerName, rdns } = params as {
361
- address: Address | null;
362
- providerName?: string;
363
- userId?: string;
364
- rdns?: string;
365
- };
366
- if (userId) this.userId = userId || null;
367
- await this.trackEvent(Event.IDENTIFY, {
452
+ const { userId, address, providerName, rdns } = params;
453
+
454
+ this.currentAddress = address;
455
+ if (userId) {
456
+ this.currentUserId = userId;
457
+ session.set(SESSION_USER_ID_KEY, userId);
458
+ }
459
+
460
+ await this.trackEvent(
461
+ EventType.IDENTIFY,
462
+ {
368
463
  address,
369
464
  providerName,
465
+ userId,
370
466
  rdns,
371
- });
372
- }
467
+ },
468
+ properties,
469
+ context,
470
+ callback
471
+ );
373
472
  }
374
473
 
375
474
  /**
376
- * Emits an identify event with current wallet address.
377
- * @param {Address} params.address
475
+ * Emits a detect wallet event with current wallet provider info.
476
+ * @param {string} params.providerName
477
+ * @param {string} params.rdns
478
+ * @param {IFormoEventProperties} properties
479
+ * @param {IFormoEventContext} context
480
+ * @param {(...args: unknown[]) => void} callback
378
481
  * @returns {Promise<void>}
379
482
  */
380
- private async detect({
381
- providerName,
382
- rdns,
383
- }: {
384
- providerName: string;
385
- rdns: string;
386
- }): Promise<void> {
483
+ async detect(
484
+ {
485
+ providerName,
486
+ rdns,
487
+ }: {
488
+ providerName: string;
489
+ rdns: string;
490
+ },
491
+ properties?: IFormoEventProperties,
492
+ context?: IFormoEventContext,
493
+ callback?: (...args: unknown[]) => void
494
+ ): Promise<void> {
387
495
  if (this.session.isWalletDetected(rdns))
388
496
  return logger.warn(
389
- `detect: Wallet ${providerName} already detected in this session`
497
+ `Detect: Wallet ${providerName} already detected in this session`
390
498
  );
391
499
 
392
- this.session.markWalletdetected(rdns);
393
- await this.trackEvent(Event.DETECT_WALLET, {
394
- providerName,
395
- rdns,
396
- });
500
+ this.session.markWalletDetected(rdns);
501
+ await this.trackEvent(
502
+ EventType.DETECT,
503
+ {
504
+ providerName,
505
+ rdns,
506
+ },
507
+ properties,
508
+ context,
509
+ callback
510
+ );
397
511
  }
398
512
 
399
513
  /**
400
- * Emits a custom event with custom data.
401
- * @param {string} action
402
- * @param {Record<string, any>} payload
514
+ * Emits a custom user event with custom properties.
515
+ * @param {string} event The name of the tracked event
516
+ * @param {IFormoEventProperties} properties
517
+ * @param {IFormoEventContext} context
518
+ * @param {(...args: unknown[]) => void} callback
403
519
  * @returns {Promise<void>}
404
520
  */
405
- async track(action: string, payload: Record<string, any>): Promise<void> {
406
- await this.trackEvent(action, payload);
521
+ async track(
522
+ event: EventType,
523
+ properties?: IFormoEventProperties,
524
+ context?: IFormoEventContext,
525
+ callback?: (...args: unknown[]) => void
526
+ ): Promise<void> {
527
+ await this.trackEvent(
528
+ EventType.TRACK,
529
+ { event },
530
+ properties,
531
+ context,
532
+ callback
533
+ );
407
534
  }
408
535
 
409
536
  /*
@@ -418,7 +545,7 @@ export class FormoAnalytics implements IFormoAnalytics {
418
545
  }
419
546
 
420
547
  this.currentChainId = undefined;
421
- this.currentConnectedAddress = undefined;
548
+ this.currentAddress = undefined;
422
549
 
423
550
  if (this._provider) {
424
551
  const actions = Object.keys(this._providerListeners);
@@ -584,11 +711,11 @@ export class FormoAnalytics implements IFormoAnalytics {
584
711
  }
585
712
 
586
713
  private async onAddressConnected(address: Address): Promise<void> {
587
- if (address === this.currentConnectedAddress)
714
+ if (address === this.currentAddress)
588
715
  // We have already reported this address
589
716
  return;
590
717
 
591
- this.currentConnectedAddress = address;
718
+ this.currentAddress = address;
592
719
 
593
720
  this.currentChainId = await this.getCurrentChainId();
594
721
  this.connect({ chainId: this.currentChainId, address });
@@ -596,29 +723,35 @@ export class FormoAnalytics implements IFormoAnalytics {
596
723
 
597
724
  private async handleDisconnect(
598
725
  chainId?: ChainID,
599
- address?: Address
726
+ address?: Address,
727
+ properties?: IFormoEventProperties,
728
+ context?: IFormoEventContext,
729
+ callback?: (...args: unknown[]) => void
600
730
  ): Promise<void> {
601
731
  const payload = {
602
- chain_id: chainId || this.currentChainId,
603
- address: address || this.currentConnectedAddress,
732
+ chainId: chainId || this.currentChainId,
733
+ address: address || this.currentAddress,
604
734
  };
605
735
  this.currentChainId = undefined;
606
- this.currentConnectedAddress = undefined;
736
+ this.currentAddress = undefined;
607
737
  session.remove(SESSION_USER_ID_KEY);
608
738
 
609
- await this.trackEvent(Event.DISCONNECT, payload);
739
+ await this.trackEvent(
740
+ EventType.DISCONNECT,
741
+ payload,
742
+ properties,
743
+ context,
744
+ callback
745
+ );
610
746
  }
611
747
 
612
748
  private async onAddressDisconnected(): Promise<void> {
613
- await this.handleDisconnect(
614
- this.currentChainId,
615
- this.currentConnectedAddress
616
- );
749
+ await this.handleDisconnect(this.currentChainId, this.currentAddress);
617
750
  }
618
751
 
619
752
  private async onChainChanged(chainIdHex: string): Promise<void> {
620
753
  this.currentChainId = parseInt(chainIdHex);
621
- if (!this.currentConnectedAddress) {
754
+ if (!this.currentAddress) {
622
755
  if (!this.provider) {
623
756
  logger.info(
624
757
  "OnChainChanged: Provider not found. CHAIN_CHANGED not reported"
@@ -633,14 +766,14 @@ export class FormoAnalytics implements IFormoAnalytics {
633
766
  );
634
767
  return Promise.resolve();
635
768
  }
636
- this.currentConnectedAddress = address;
769
+ this.currentAddress = address;
637
770
  }
638
771
 
639
772
  // Proceed only if the address exists
640
- if (this.currentConnectedAddress) {
773
+ if (this.currentAddress) {
641
774
  return this.chain({
642
775
  chainId: this.currentChainId,
643
- address: this.currentConnectedAddress,
776
+ address: this.currentAddress,
644
777
  });
645
778
  } else {
646
779
  logger.info(
@@ -685,7 +818,13 @@ export class FormoAnalytics implements IFormoAnalytics {
685
818
  }
686
819
  }
687
820
 
688
- private trackPageHit(): void {
821
+ private async trackPageHit(
822
+ category?: string,
823
+ name?: string,
824
+ properties?: IFormoEventProperties,
825
+ context?: IFormoEventContext,
826
+ callback?: (...args: unknown[]) => void
827
+ ): Promise<void> {
689
828
  if (!this.config.trackLocalhost && isLocalhost()) {
690
829
  return logger.warn(
691
830
  "Track page hit: Ignoring event because website is running locally"
@@ -693,30 +832,38 @@ export class FormoAnalytics implements IFormoAnalytics {
693
832
  }
694
833
 
695
834
  setTimeout(async () => {
696
- this.trackEvent(Event.PAGE);
835
+ this.trackEvent(
836
+ EventType.PAGE,
837
+ {
838
+ category,
839
+ name,
840
+ },
841
+ properties,
842
+ context,
843
+ callback
844
+ );
697
845
  }, 300);
698
846
  }
699
847
 
700
- private async trackEvent(action: string, payload?: any): Promise<void> {
848
+ private async trackEvent(
849
+ type: TEventType,
850
+ payload?: any,
851
+ properties?: IFormoEventProperties,
852
+ context?: IFormoEventContext,
853
+ callback?: (...args: unknown[]) => void
854
+ ): Promise<void> {
701
855
  try {
702
- const address = await this.getAddress();
703
- const user_id = this.userId;
704
-
705
- const requestData = this.eventFactory.create(
706
- this.anonymousId as UUID,
707
- user_id,
708
- address,
856
+ this.eventManager.addEvent(
709
857
  {
710
- action,
858
+ type,
711
859
  ...payload,
712
- }
860
+ properties,
861
+ context,
862
+ callback,
863
+ },
864
+ this.currentAddress,
865
+ this.currentUserId
713
866
  );
714
-
715
- await this.eventQueue.enqueue(requestData, (err, _, data) => {
716
- if (err) {
717
- logger.error("Error sending events:", err);
718
- } else logger.info(`Events sent successfully: ${data.length} events`);
719
- });
720
867
  } catch (error) {
721
868
  logger.error("Error tracking event:", error);
722
869
  }
@@ -739,7 +886,7 @@ export class FormoAnalytics implements IFormoAnalytics {
739
886
  return providers;
740
887
  }
741
888
 
742
- private async detects(
889
+ private async detectWallets(
743
890
  providers: readonly EIP6963ProviderDetail[]
744
891
  ): Promise<void> {
745
892
  try {
@@ -758,17 +905,8 @@ export class FormoAnalytics implements IFormoAnalytics {
758
905
  return this._provider;
759
906
  }
760
907
 
761
- private getAnonymousId(): UUID {
762
- const storedAnonymousId = local.get(LOCAL_ANONYMOUS_ID_KEY);
763
- if (storedAnonymousId && typeof storedAnonymousId === "string")
764
- return storedAnonymousId as UUID;
765
- const newAnonymousId = generateNativeUUID();
766
- local.set(LOCAL_ANONYMOUS_ID_KEY, newAnonymousId);
767
- return newAnonymousId;
768
- }
769
-
770
908
  private async getAddress(): Promise<Address | null> {
771
- if (this.currentConnectedAddress) return this.currentConnectedAddress;
909
+ if (this.currentAddress) return this.currentAddress;
772
910
  if (!this?.provider) {
773
911
  logger.info("The provider is not set");
774
912
  return null;
@@ -881,7 +1019,7 @@ export class FormoAnalytics implements IFormoAnalytics {
881
1019
 
882
1020
  interface IFormoAnalyticsSession {
883
1021
  isWalletDetected(rdns: string): boolean;
884
- markWalletdetected(rdns: string): void;
1022
+ markWalletDetected(rdns: string): void;
885
1023
  }
886
1024
 
887
1025
  class FormoAnalyticsSession implements IFormoAnalyticsSession {
@@ -892,7 +1030,7 @@ class FormoAnalyticsSession implements IFormoAnalyticsSession {
892
1030
  return rdnses.includes(rdns);
893
1031
  }
894
1032
 
895
- public markWalletdetected(rdns: string): void {
1033
+ public markWalletDetected(rdns: string): void {
896
1034
  const rdnses = (session.get(SESSION_WALLET_DETECTED_KEY) as string[]) || [];
897
1035
  rdnses.push(rdns);
898
1036
  session.set(SESSION_WALLET_DETECTED_KEY, rdnses);