@formo/analytics 1.19.3 → 1.19.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 (286) hide show
  1. package/README.md +5 -0
  2. package/dist/cjs/src/FormoAnalytics.js +42 -25
  3. package/dist/cjs/src/lib/event/EventFactory.js +11 -4
  4. package/dist/cjs/src/lib/version.d.ts +1 -1
  5. package/dist/cjs/src/lib/version.js +1 -1
  6. package/dist/cjs/src/utils/address.d.ts +19 -0
  7. package/dist/cjs/src/utils/address.js +37 -1
  8. package/dist/esm/src/FormoAnalytics.js +39 -22
  9. package/dist/esm/src/lib/event/EventFactory.js +11 -4
  10. package/dist/esm/src/lib/version.d.ts +1 -1
  11. package/dist/esm/src/lib/version.js +1 -1
  12. package/dist/esm/src/utils/address.d.ts +19 -0
  13. package/dist/esm/src/utils/address.js +34 -0
  14. package/dist/index.umd.min.js +1 -1
  15. package/package.json +8 -4
  16. package/dist/cjs/src/FormoAnalytics.d.ts.map +0 -1
  17. package/dist/cjs/src/FormoAnalytics.js.map +0 -1
  18. package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +0 -1
  19. package/dist/cjs/src/FormoAnalyticsProvider.js.map +0 -1
  20. package/dist/cjs/src/constants/base.d.ts.map +0 -1
  21. package/dist/cjs/src/constants/base.js.map +0 -1
  22. package/dist/cjs/src/constants/config.d.ts.map +0 -1
  23. package/dist/cjs/src/constants/config.js.map +0 -1
  24. package/dist/cjs/src/constants/events.d.ts.map +0 -1
  25. package/dist/cjs/src/constants/events.js.map +0 -1
  26. package/dist/cjs/src/constants/index.d.ts.map +0 -1
  27. package/dist/cjs/src/constants/index.js.map +0 -1
  28. package/dist/cjs/src/index.d.ts.map +0 -1
  29. package/dist/cjs/src/index.js.map +0 -1
  30. package/dist/cjs/src/initialization.d.ts.map +0 -1
  31. package/dist/cjs/src/initialization.js.map +0 -1
  32. package/dist/cjs/src/lib/event/EventFactory.d.ts.map +0 -1
  33. package/dist/cjs/src/lib/event/EventFactory.js.map +0 -1
  34. package/dist/cjs/src/lib/event/EventManager.d.ts.map +0 -1
  35. package/dist/cjs/src/lib/event/EventManager.js.map +0 -1
  36. package/dist/cjs/src/lib/event/constants.d.ts.map +0 -1
  37. package/dist/cjs/src/lib/event/constants.js.map +0 -1
  38. package/dist/cjs/src/lib/event/index.d.ts.map +0 -1
  39. package/dist/cjs/src/lib/event/index.js.map +0 -1
  40. package/dist/cjs/src/lib/event/type.d.ts.map +0 -1
  41. package/dist/cjs/src/lib/event/type.js.map +0 -1
  42. package/dist/cjs/src/lib/event/utils.d.ts.map +0 -1
  43. package/dist/cjs/src/lib/event/utils.js.map +0 -1
  44. package/dist/cjs/src/lib/fetch.d.ts.map +0 -1
  45. package/dist/cjs/src/lib/fetch.js.map +0 -1
  46. package/dist/cjs/src/lib/index.d.ts.map +0 -1
  47. package/dist/cjs/src/lib/index.js.map +0 -1
  48. package/dist/cjs/src/lib/logger/Logger.d.ts.map +0 -1
  49. package/dist/cjs/src/lib/logger/Logger.js.map +0 -1
  50. package/dist/cjs/src/lib/logger/index.d.ts.map +0 -1
  51. package/dist/cjs/src/lib/logger/index.js.map +0 -1
  52. package/dist/cjs/src/lib/logger/type.d.ts.map +0 -1
  53. package/dist/cjs/src/lib/logger/type.js.map +0 -1
  54. package/dist/cjs/src/lib/queue/EventQueue.d.ts.map +0 -1
  55. package/dist/cjs/src/lib/queue/EventQueue.js.map +0 -1
  56. package/dist/cjs/src/lib/queue/index.d.ts.map +0 -1
  57. package/dist/cjs/src/lib/queue/index.js.map +0 -1
  58. package/dist/cjs/src/lib/queue/type.d.ts.map +0 -1
  59. package/dist/cjs/src/lib/queue/type.js.map +0 -1
  60. package/dist/cjs/src/lib/ramda/internal/_curry1.d.ts.map +0 -1
  61. package/dist/cjs/src/lib/ramda/internal/_curry1.js.map +0 -1
  62. package/dist/cjs/src/lib/ramda/internal/_curry2.d.ts.map +0 -1
  63. package/dist/cjs/src/lib/ramda/internal/_curry2.js.map +0 -1
  64. package/dist/cjs/src/lib/ramda/internal/_curry3.d.ts.map +0 -1
  65. package/dist/cjs/src/lib/ramda/internal/_curry3.js.map +0 -1
  66. package/dist/cjs/src/lib/ramda/internal/_has.d.ts.map +0 -1
  67. package/dist/cjs/src/lib/ramda/internal/_has.js.map +0 -1
  68. package/dist/cjs/src/lib/ramda/internal/_isObject.d.ts.map +0 -1
  69. package/dist/cjs/src/lib/ramda/internal/_isObject.js.map +0 -1
  70. package/dist/cjs/src/lib/ramda/internal/_isPlaceholder.d.ts.map +0 -1
  71. package/dist/cjs/src/lib/ramda/internal/_isPlaceholder.js.map +0 -1
  72. package/dist/cjs/src/lib/ramda/mergeDeepRight.d.ts.map +0 -1
  73. package/dist/cjs/src/lib/ramda/mergeDeepRight.js.map +0 -1
  74. package/dist/cjs/src/lib/ramda/mergeDeepWithKey.d.ts.map +0 -1
  75. package/dist/cjs/src/lib/ramda/mergeDeepWithKey.js.map +0 -1
  76. package/dist/cjs/src/lib/ramda/mergeWithKey.d.ts.map +0 -1
  77. package/dist/cjs/src/lib/ramda/mergeWithKey.js.map +0 -1
  78. package/dist/cjs/src/lib/storage/StorageManager.d.ts.map +0 -1
  79. package/dist/cjs/src/lib/storage/StorageManager.js.map +0 -1
  80. package/dist/cjs/src/lib/storage/built-in/blueprint.d.ts.map +0 -1
  81. package/dist/cjs/src/lib/storage/built-in/blueprint.js.map +0 -1
  82. package/dist/cjs/src/lib/storage/built-in/cookie.d.ts.map +0 -1
  83. package/dist/cjs/src/lib/storage/built-in/cookie.js.map +0 -1
  84. package/dist/cjs/src/lib/storage/built-in/memory.d.ts.map +0 -1
  85. package/dist/cjs/src/lib/storage/built-in/memory.js.map +0 -1
  86. package/dist/cjs/src/lib/storage/built-in/web.d.ts.map +0 -1
  87. package/dist/cjs/src/lib/storage/built-in/web.js.map +0 -1
  88. package/dist/cjs/src/lib/storage/constant.d.ts.map +0 -1
  89. package/dist/cjs/src/lib/storage/constant.js.map +0 -1
  90. package/dist/cjs/src/lib/storage/index.d.ts.map +0 -1
  91. package/dist/cjs/src/lib/storage/index.js.map +0 -1
  92. package/dist/cjs/src/lib/storage/type.d.ts.map +0 -1
  93. package/dist/cjs/src/lib/storage/type.js.map +0 -1
  94. package/dist/cjs/src/lib/version.d.ts.map +0 -1
  95. package/dist/cjs/src/lib/version.js.map +0 -1
  96. package/dist/cjs/src/types/base.d.ts.map +0 -1
  97. package/dist/cjs/src/types/base.js.map +0 -1
  98. package/dist/cjs/src/types/events.d.ts.map +0 -1
  99. package/dist/cjs/src/types/events.js.map +0 -1
  100. package/dist/cjs/src/types/index.d.ts.map +0 -1
  101. package/dist/cjs/src/types/index.js.map +0 -1
  102. package/dist/cjs/src/types/provider.d.ts.map +0 -1
  103. package/dist/cjs/src/types/provider.js.map +0 -1
  104. package/dist/cjs/src/utils/address.d.ts.map +0 -1
  105. package/dist/cjs/src/utils/address.js.map +0 -1
  106. package/dist/cjs/src/utils/base.d.ts.map +0 -1
  107. package/dist/cjs/src/utils/base.js.map +0 -1
  108. package/dist/cjs/src/utils/chain.d.ts.map +0 -1
  109. package/dist/cjs/src/utils/chain.js.map +0 -1
  110. package/dist/cjs/src/utils/converter.d.ts.map +0 -1
  111. package/dist/cjs/src/utils/converter.js.map +0 -1
  112. package/dist/cjs/src/utils/generate.d.ts.map +0 -1
  113. package/dist/cjs/src/utils/generate.js.map +0 -1
  114. package/dist/cjs/src/utils/index.d.ts.map +0 -1
  115. package/dist/cjs/src/utils/index.js.map +0 -1
  116. package/dist/cjs/src/utils/timestamp.d.ts.map +0 -1
  117. package/dist/cjs/src/utils/timestamp.js.map +0 -1
  118. package/dist/cjs/src/validators/address.d.ts.map +0 -1
  119. package/dist/cjs/src/validators/address.js.map +0 -1
  120. package/dist/cjs/src/validators/agent.d.ts.map +0 -1
  121. package/dist/cjs/src/validators/agent.js.map +0 -1
  122. package/dist/cjs/src/validators/checks.d.ts.map +0 -1
  123. package/dist/cjs/src/validators/checks.js.map +0 -1
  124. package/dist/cjs/src/validators/index.d.ts.map +0 -1
  125. package/dist/cjs/src/validators/index.js.map +0 -1
  126. package/dist/cjs/src/validators/network.d.ts.map +0 -1
  127. package/dist/cjs/src/validators/network.js.map +0 -1
  128. package/dist/cjs/src/validators/object.d.ts.map +0 -1
  129. package/dist/cjs/src/validators/object.js.map +0 -1
  130. package/dist/cjs/src/validators/string.d.ts.map +0 -1
  131. package/dist/cjs/src/validators/string.js.map +0 -1
  132. package/dist/cjs/src/validators/uint8array.d.ts.map +0 -1
  133. package/dist/cjs/src/validators/uint8array.js.map +0 -1
  134. package/dist/cjs/test/lib/events.spec.d.ts +0 -2
  135. package/dist/cjs/test/lib/events.spec.d.ts.map +0 -1
  136. package/dist/cjs/test/lib/events.spec.js +0 -14
  137. package/dist/cjs/test/lib/events.spec.js.map +0 -1
  138. package/dist/cjs/test/utils/address.spec.d.ts +0 -2
  139. package/dist/cjs/test/utils/address.spec.d.ts.map +0 -1
  140. package/dist/cjs/test/utils/address.spec.js +0 -40
  141. package/dist/cjs/test/utils/address.spec.js.map +0 -1
  142. package/dist/cjs/test/utils/converter.spec.d.ts +0 -2
  143. package/dist/cjs/test/utils/converter.spec.d.ts.map +0 -1
  144. package/dist/cjs/test/utils/converter.spec.js +0 -25
  145. package/dist/cjs/test/utils/converter.spec.js.map +0 -1
  146. package/dist/cjs/test/validators/address.spec.d.ts +0 -2
  147. package/dist/cjs/test/validators/address.spec.d.ts.map +0 -1
  148. package/dist/cjs/test/validators/address.spec.js +0 -14
  149. package/dist/cjs/test/validators/address.spec.js.map +0 -1
  150. package/dist/cjs/tsconfig.tsbuildinfo +0 -1
  151. package/dist/esm/src/FormoAnalytics.d.ts.map +0 -1
  152. package/dist/esm/src/FormoAnalytics.js.map +0 -1
  153. package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +0 -1
  154. package/dist/esm/src/FormoAnalyticsProvider.js.map +0 -1
  155. package/dist/esm/src/constants/base.d.ts.map +0 -1
  156. package/dist/esm/src/constants/base.js.map +0 -1
  157. package/dist/esm/src/constants/config.d.ts.map +0 -1
  158. package/dist/esm/src/constants/config.js.map +0 -1
  159. package/dist/esm/src/constants/events.d.ts.map +0 -1
  160. package/dist/esm/src/constants/events.js.map +0 -1
  161. package/dist/esm/src/constants/index.d.ts.map +0 -1
  162. package/dist/esm/src/constants/index.js.map +0 -1
  163. package/dist/esm/src/index.d.ts.map +0 -1
  164. package/dist/esm/src/index.js.map +0 -1
  165. package/dist/esm/src/initialization.d.ts.map +0 -1
  166. package/dist/esm/src/initialization.js.map +0 -1
  167. package/dist/esm/src/lib/event/EventFactory.d.ts.map +0 -1
  168. package/dist/esm/src/lib/event/EventFactory.js.map +0 -1
  169. package/dist/esm/src/lib/event/EventManager.d.ts.map +0 -1
  170. package/dist/esm/src/lib/event/EventManager.js.map +0 -1
  171. package/dist/esm/src/lib/event/constants.d.ts.map +0 -1
  172. package/dist/esm/src/lib/event/constants.js.map +0 -1
  173. package/dist/esm/src/lib/event/index.d.ts.map +0 -1
  174. package/dist/esm/src/lib/event/index.js.map +0 -1
  175. package/dist/esm/src/lib/event/type.d.ts.map +0 -1
  176. package/dist/esm/src/lib/event/type.js.map +0 -1
  177. package/dist/esm/src/lib/event/utils.d.ts.map +0 -1
  178. package/dist/esm/src/lib/event/utils.js.map +0 -1
  179. package/dist/esm/src/lib/fetch.d.ts.map +0 -1
  180. package/dist/esm/src/lib/fetch.js.map +0 -1
  181. package/dist/esm/src/lib/index.d.ts.map +0 -1
  182. package/dist/esm/src/lib/index.js.map +0 -1
  183. package/dist/esm/src/lib/logger/Logger.d.ts.map +0 -1
  184. package/dist/esm/src/lib/logger/Logger.js.map +0 -1
  185. package/dist/esm/src/lib/logger/index.d.ts.map +0 -1
  186. package/dist/esm/src/lib/logger/index.js.map +0 -1
  187. package/dist/esm/src/lib/logger/type.d.ts.map +0 -1
  188. package/dist/esm/src/lib/logger/type.js.map +0 -1
  189. package/dist/esm/src/lib/queue/EventQueue.d.ts.map +0 -1
  190. package/dist/esm/src/lib/queue/EventQueue.js.map +0 -1
  191. package/dist/esm/src/lib/queue/index.d.ts.map +0 -1
  192. package/dist/esm/src/lib/queue/index.js.map +0 -1
  193. package/dist/esm/src/lib/queue/type.d.ts.map +0 -1
  194. package/dist/esm/src/lib/queue/type.js.map +0 -1
  195. package/dist/esm/src/lib/ramda/internal/_curry1.d.ts.map +0 -1
  196. package/dist/esm/src/lib/ramda/internal/_curry1.js.map +0 -1
  197. package/dist/esm/src/lib/ramda/internal/_curry2.d.ts.map +0 -1
  198. package/dist/esm/src/lib/ramda/internal/_curry2.js.map +0 -1
  199. package/dist/esm/src/lib/ramda/internal/_curry3.d.ts.map +0 -1
  200. package/dist/esm/src/lib/ramda/internal/_curry3.js.map +0 -1
  201. package/dist/esm/src/lib/ramda/internal/_has.d.ts.map +0 -1
  202. package/dist/esm/src/lib/ramda/internal/_has.js.map +0 -1
  203. package/dist/esm/src/lib/ramda/internal/_isObject.d.ts.map +0 -1
  204. package/dist/esm/src/lib/ramda/internal/_isObject.js.map +0 -1
  205. package/dist/esm/src/lib/ramda/internal/_isPlaceholder.d.ts.map +0 -1
  206. package/dist/esm/src/lib/ramda/internal/_isPlaceholder.js.map +0 -1
  207. package/dist/esm/src/lib/ramda/mergeDeepRight.d.ts.map +0 -1
  208. package/dist/esm/src/lib/ramda/mergeDeepRight.js.map +0 -1
  209. package/dist/esm/src/lib/ramda/mergeDeepWithKey.d.ts.map +0 -1
  210. package/dist/esm/src/lib/ramda/mergeDeepWithKey.js.map +0 -1
  211. package/dist/esm/src/lib/ramda/mergeWithKey.d.ts.map +0 -1
  212. package/dist/esm/src/lib/ramda/mergeWithKey.js.map +0 -1
  213. package/dist/esm/src/lib/storage/StorageManager.d.ts.map +0 -1
  214. package/dist/esm/src/lib/storage/StorageManager.js.map +0 -1
  215. package/dist/esm/src/lib/storage/built-in/blueprint.d.ts.map +0 -1
  216. package/dist/esm/src/lib/storage/built-in/blueprint.js.map +0 -1
  217. package/dist/esm/src/lib/storage/built-in/cookie.d.ts.map +0 -1
  218. package/dist/esm/src/lib/storage/built-in/cookie.js.map +0 -1
  219. package/dist/esm/src/lib/storage/built-in/memory.d.ts.map +0 -1
  220. package/dist/esm/src/lib/storage/built-in/memory.js.map +0 -1
  221. package/dist/esm/src/lib/storage/built-in/web.d.ts.map +0 -1
  222. package/dist/esm/src/lib/storage/built-in/web.js.map +0 -1
  223. package/dist/esm/src/lib/storage/constant.d.ts.map +0 -1
  224. package/dist/esm/src/lib/storage/constant.js.map +0 -1
  225. package/dist/esm/src/lib/storage/index.d.ts.map +0 -1
  226. package/dist/esm/src/lib/storage/index.js.map +0 -1
  227. package/dist/esm/src/lib/storage/type.d.ts.map +0 -1
  228. package/dist/esm/src/lib/storage/type.js.map +0 -1
  229. package/dist/esm/src/lib/version.d.ts.map +0 -1
  230. package/dist/esm/src/lib/version.js.map +0 -1
  231. package/dist/esm/src/types/base.d.ts.map +0 -1
  232. package/dist/esm/src/types/base.js.map +0 -1
  233. package/dist/esm/src/types/events.d.ts.map +0 -1
  234. package/dist/esm/src/types/events.js.map +0 -1
  235. package/dist/esm/src/types/index.d.ts.map +0 -1
  236. package/dist/esm/src/types/index.js.map +0 -1
  237. package/dist/esm/src/types/provider.d.ts.map +0 -1
  238. package/dist/esm/src/types/provider.js.map +0 -1
  239. package/dist/esm/src/utils/address.d.ts.map +0 -1
  240. package/dist/esm/src/utils/address.js.map +0 -1
  241. package/dist/esm/src/utils/base.d.ts.map +0 -1
  242. package/dist/esm/src/utils/base.js.map +0 -1
  243. package/dist/esm/src/utils/chain.d.ts.map +0 -1
  244. package/dist/esm/src/utils/chain.js.map +0 -1
  245. package/dist/esm/src/utils/converter.d.ts.map +0 -1
  246. package/dist/esm/src/utils/converter.js.map +0 -1
  247. package/dist/esm/src/utils/generate.d.ts.map +0 -1
  248. package/dist/esm/src/utils/generate.js.map +0 -1
  249. package/dist/esm/src/utils/index.d.ts.map +0 -1
  250. package/dist/esm/src/utils/index.js.map +0 -1
  251. package/dist/esm/src/utils/timestamp.d.ts.map +0 -1
  252. package/dist/esm/src/utils/timestamp.js.map +0 -1
  253. package/dist/esm/src/validators/address.d.ts.map +0 -1
  254. package/dist/esm/src/validators/address.js.map +0 -1
  255. package/dist/esm/src/validators/agent.d.ts.map +0 -1
  256. package/dist/esm/src/validators/agent.js.map +0 -1
  257. package/dist/esm/src/validators/checks.d.ts.map +0 -1
  258. package/dist/esm/src/validators/checks.js.map +0 -1
  259. package/dist/esm/src/validators/index.d.ts.map +0 -1
  260. package/dist/esm/src/validators/index.js.map +0 -1
  261. package/dist/esm/src/validators/network.d.ts.map +0 -1
  262. package/dist/esm/src/validators/network.js.map +0 -1
  263. package/dist/esm/src/validators/object.d.ts.map +0 -1
  264. package/dist/esm/src/validators/object.js.map +0 -1
  265. package/dist/esm/src/validators/string.d.ts.map +0 -1
  266. package/dist/esm/src/validators/string.js.map +0 -1
  267. package/dist/esm/src/validators/uint8array.d.ts.map +0 -1
  268. package/dist/esm/src/validators/uint8array.js.map +0 -1
  269. package/dist/esm/test/lib/events.spec.d.ts +0 -2
  270. package/dist/esm/test/lib/events.spec.d.ts.map +0 -1
  271. package/dist/esm/test/lib/events.spec.js +0 -12
  272. package/dist/esm/test/lib/events.spec.js.map +0 -1
  273. package/dist/esm/test/utils/address.spec.d.ts +0 -2
  274. package/dist/esm/test/utils/address.spec.d.ts.map +0 -1
  275. package/dist/esm/test/utils/address.spec.js +0 -38
  276. package/dist/esm/test/utils/address.spec.js.map +0 -1
  277. package/dist/esm/test/utils/converter.spec.d.ts +0 -2
  278. package/dist/esm/test/utils/converter.spec.d.ts.map +0 -1
  279. package/dist/esm/test/utils/converter.spec.js +0 -23
  280. package/dist/esm/test/utils/converter.spec.js.map +0 -1
  281. package/dist/esm/test/validators/address.spec.d.ts +0 -2
  282. package/dist/esm/test/validators/address.spec.d.ts.map +0 -1
  283. package/dist/esm/test/validators/address.spec.js +0 -12
  284. package/dist/esm/test/validators/address.spec.js.map +0 -1
  285. package/dist/esm/tsconfig.tsbuildinfo +0 -1
  286. package/dist/index.umd.min.js.map +0 -1
package/README.md CHANGED
@@ -30,6 +30,11 @@ Visit Formo's [Developer Docs](https://docs.formo.so) for detailed guides and in
30
30
 
31
31
  Learn how Formo handles [onchain attribution](https://docs.formo.so/data/attribution) and [data collection](https://docs.formo.so/data/what-we-collect).
32
32
 
33
+ ## Support
34
+
35
+ Join the [Formo community Slack channel](https://formo.so/slack) for help and questions.
36
+
33
37
  ## Contributing
34
38
 
35
39
  [Contributions](https://github.com/getformo/sdk/blob/main/CONTRIBUTING.md) are welcome! Feel free to open fixes and feature suggestions.
40
+
@@ -53,6 +53,7 @@ var constants_1 = require("./constants");
53
53
  var lib_1 = require("./lib");
54
54
  var types_1 = require("./types");
55
55
  var utils_1 = require("./utils");
56
+ var address_1 = require("./utils/address");
56
57
  var validators_1 = require("./validators");
57
58
  var chain_1 = require("./utils/chain");
58
59
  var FormoAnalytics = /** @class */ (function () {
@@ -63,7 +64,6 @@ var FormoAnalytics = /** @class */ (function () {
63
64
  this.options = options;
64
65
  this._providerListeners = {};
65
66
  this._providers = [];
66
- this.currentAddress = "";
67
67
  this.currentUserId = "";
68
68
  this.config = {
69
69
  writeKey: writeKey,
@@ -167,6 +167,7 @@ var FormoAnalytics = /** @class */ (function () {
167
167
  */
168
168
  FormoAnalytics.prototype.connect = function (_a, properties_1, context_1, callback_1) {
169
169
  return __awaiter(this, arguments, void 0, function (_b, properties, context, callback) {
170
+ var validAddress;
170
171
  var chainId = _b.chainId, address = _b.address;
171
172
  return __generator(this, function (_c) {
172
173
  switch (_c.label) {
@@ -178,7 +179,8 @@ var FormoAnalytics = /** @class */ (function () {
178
179
  lib_1.logger.warn("Connect: Address cannot be empty");
179
180
  }
180
181
  this.currentChainId = chainId;
181
- this.currentAddress = address ? (0, utils_1.toChecksumAddress)(address) : undefined;
182
+ validAddress = (0, address_1.getValidAddress)(address);
183
+ this.currentAddress = validAddress ? (0, utils_1.toChecksumAddress)(validAddress) : undefined;
182
184
  return [4 /*yield*/, this.trackEvent(constants_1.EventType.CONNECT, {
183
185
  chainId: chainId,
184
186
  address: this.currentAddress,
@@ -324,7 +326,7 @@ var FormoAnalytics = /** @class */ (function () {
324
326
  */
325
327
  FormoAnalytics.prototype.identify = function (params, properties, context, callback) {
326
328
  return __awaiter(this, void 0, void 0, function () {
327
- var _i, _a, providerDetail, provider, address_1, err_1, userId, address, providerName, rdns, e_1;
329
+ var _i, _a, providerDetail, provider, address_2, err_1, userId, address, providerName, rdns, validAddress, e_1;
328
330
  return __generator(this, function (_b) {
329
331
  switch (_b.label) {
330
332
  case 0:
@@ -345,12 +347,12 @@ var FormoAnalytics = /** @class */ (function () {
345
347
  _b.trys.push([2, 6, , 7]);
346
348
  return [4 /*yield*/, this.getAddress(provider)];
347
349
  case 3:
348
- address_1 = _b.sent();
349
- if (!address_1) return [3 /*break*/, 5];
350
- lib_1.logger.info("Auto-identifying", address_1, providerDetail.info.name, providerDetail.info.rdns);
350
+ address_2 = _b.sent();
351
+ if (!address_2) return [3 /*break*/, 5];
352
+ lib_1.logger.info("Auto-identifying", address_2, providerDetail.info.name, providerDetail.info.rdns);
351
353
  // NOTE: do not set this.currentAddress without explicit connect or identify
352
354
  return [4 /*yield*/, this.identify({
353
- address: address_1,
355
+ address: address_2,
354
356
  providerName: providerDetail.info.name,
355
357
  rdns: providerDetail.info.rdns,
356
358
  }, properties, context, callback)];
@@ -370,14 +372,15 @@ var FormoAnalytics = /** @class */ (function () {
370
372
  case 9:
371
373
  userId = params.userId, address = params.address, providerName = params.providerName, rdns = params.rdns;
372
374
  lib_1.logger.info("Identify", address, userId, providerName, rdns);
373
- if (address)
374
- this.currentAddress = (0, utils_1.toChecksumAddress)(address);
375
+ validAddress = (0, address_1.getValidAddress)(address);
376
+ if (validAddress)
377
+ this.currentAddress = (0, utils_1.toChecksumAddress)(validAddress);
375
378
  if (userId) {
376
379
  this.currentUserId = userId;
377
380
  (0, lib_1.cookie)().set(constants_1.SESSION_USER_ID_KEY, userId);
378
381
  }
379
382
  return [4 /*yield*/, this.trackEvent(constants_1.EventType.IDENTIFY, {
380
- address: address ? (0, utils_1.toChecksumAddress)(address) : undefined,
383
+ address: validAddress ? (0, utils_1.toChecksumAddress)(validAddress) : undefined,
381
384
  providerName: providerName,
382
385
  userId: userId,
383
386
  rdns: rdns,
@@ -490,7 +493,7 @@ var FormoAnalytics = /** @class */ (function () {
490
493
  };
491
494
  FormoAnalytics.prototype.onAccountsChanged = function (accounts) {
492
495
  return __awaiter(this, void 0, void 0, function () {
493
- var address, _a;
496
+ var validAddress, address, _a;
494
497
  return __generator(this, function (_b) {
495
498
  switch (_b.label) {
496
499
  case 0:
@@ -503,12 +506,12 @@ var FormoAnalytics = /** @class */ (function () {
503
506
  _b.sent();
504
507
  return [2 /*return*/];
505
508
  case 2:
506
- // Validate the first account is a valid address before processing
507
- if (!(0, validators_1.isAddress)(accounts[0])) {
509
+ validAddress = (0, address_1.getValidAddress)(accounts[0]);
510
+ if (!validAddress) {
508
511
  lib_1.logger.warn("onAccountsChanged: Invalid address received", accounts[0]);
509
512
  return [2 /*return*/];
510
513
  }
511
- address = (0, utils_1.toChecksumAddress)(accounts[0]);
514
+ address = (0, utils_1.toChecksumAddress)(validAddress);
512
515
  if (address === this.currentAddress) {
513
516
  // We have already reported this address
514
517
  return [2 /*return*/];
@@ -541,7 +544,7 @@ var FormoAnalytics = /** @class */ (function () {
541
544
  };
542
545
  FormoAnalytics.prototype.onChainChanged = function (chainIdHex) {
543
546
  return __awaiter(this, void 0, void 0, function () {
544
- var address;
547
+ var address, validAddress;
545
548
  return __generator(this, function (_a) {
546
549
  switch (_a.label) {
547
550
  case 0:
@@ -559,7 +562,8 @@ var FormoAnalytics = /** @class */ (function () {
559
562
  lib_1.logger.info("OnChainChanged: Unable to fetch or store connected address");
560
563
  return [2 /*return*/, Promise.resolve()];
561
564
  }
562
- this.currentAddress = (0, utils_1.toChecksumAddress)(address);
565
+ validAddress = (0, address_1.getValidAddress)(address);
566
+ this.currentAddress = validAddress ? (0, utils_1.toChecksumAddress)(validAddress) : undefined;
563
567
  _a.label = 2;
564
568
  case 2:
565
569
  // Proceed only if the address exists
@@ -972,7 +976,7 @@ var FormoAnalytics = /** @class */ (function () {
972
976
  });
973
977
  FormoAnalytics.prototype.getAddress = function (provider) {
974
978
  return __awaiter(this, void 0, void 0, function () {
975
- var p, accounts, err_3;
979
+ var p, accounts, validAddress, err_3;
976
980
  return __generator(this, function (_a) {
977
981
  switch (_a.label) {
978
982
  case 0:
@@ -990,8 +994,9 @@ var FormoAnalytics = /** @class */ (function () {
990
994
  case 2:
991
995
  accounts = _a.sent();
992
996
  if (accounts && accounts.length > 0) {
993
- if ((0, validators_1.isAddress)(accounts[0])) {
994
- return [2 /*return*/, (0, utils_1.toChecksumAddress)(accounts[0])];
997
+ validAddress = (0, address_1.getValidAddress)(accounts[0]);
998
+ if (validAddress) {
999
+ return [2 /*return*/, (0, utils_1.toChecksumAddress)(validAddress)];
995
1000
  }
996
1001
  }
997
1002
  return [3 /*break*/, 4];
@@ -1021,7 +1026,10 @@ var FormoAnalytics = /** @class */ (function () {
1021
1026
  res = _a.sent();
1022
1027
  if (!res || res.length === 0)
1023
1028
  return [2 /*return*/, null];
1024
- return [2 /*return*/, res.filter(function (e) { return (0, validators_1.isAddress)(e); }).map(utils_1.toChecksumAddress)];
1029
+ return [2 /*return*/, res
1030
+ .map(function (e) { return (0, address_1.getValidAddress)(e); })
1031
+ .filter(function (e) { return e !== null; })
1032
+ .map(utils_1.toChecksumAddress)];
1025
1033
  case 3:
1026
1034
  err_4 = _a.sent();
1027
1035
  if (err_4.code !== 4001) {
@@ -1066,11 +1074,16 @@ var FormoAnalytics = /** @class */ (function () {
1066
1074
  });
1067
1075
  };
1068
1076
  FormoAnalytics.prototype.buildSignatureEventPayload = function (method, params, response) {
1077
+ var rawAddress = method === "personal_sign"
1078
+ ? params[1]
1079
+ : params[0];
1080
+ var validAddress = (0, address_1.getValidAddress)(rawAddress);
1081
+ if (!validAddress) {
1082
+ throw new Error("Invalid address in signature payload: ".concat(rawAddress));
1083
+ }
1069
1084
  var basePayload = {
1070
1085
  chainId: this.currentChainId,
1071
- address: method === "personal_sign"
1072
- ? params[1]
1073
- : params[0],
1086
+ address: (0, utils_1.toChecksumAddress)(validAddress),
1074
1087
  };
1075
1088
  if (method === "personal_sign") {
1076
1089
  var message = Buffer.from(params[0].slice(2), "hex").toString("utf8");
@@ -1080,12 +1093,16 @@ var FormoAnalytics = /** @class */ (function () {
1080
1093
  };
1081
1094
  FormoAnalytics.prototype.buildTransactionEventPayload = function (params) {
1082
1095
  return __awaiter(this, void 0, void 0, function () {
1083
- var _a, data, from, to, value, _b;
1096
+ var _a, data, from, to, value, validAddress, _b;
1084
1097
  var _c;
1085
1098
  return __generator(this, function (_d) {
1086
1099
  switch (_d.label) {
1087
1100
  case 0:
1088
1101
  _a = params[0], data = _a.data, from = _a.from, to = _a.to, value = _a.value;
1102
+ validAddress = (0, address_1.getValidAddress)(from);
1103
+ if (!validAddress) {
1104
+ throw new Error("Invalid address in transaction payload: ".concat(from));
1105
+ }
1089
1106
  _c = {};
1090
1107
  _b = this.currentChainId;
1091
1108
  if (_b) return [3 /*break*/, 2];
@@ -1095,7 +1112,7 @@ var FormoAnalytics = /** @class */ (function () {
1095
1112
  _d.label = 2;
1096
1113
  case 2: return [2 /*return*/, (_c.chainId = _b,
1097
1114
  _c.data = data,
1098
- _c.address = from,
1115
+ _c.address = (0, utils_1.toChecksumAddress)(validAddress),
1099
1116
  _c.to = to,
1100
1117
  _c.value = value,
1101
1118
  _c)];
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.EventFactory = void 0;
18
18
  var constants_1 = require("../../constants");
19
19
  var utils_1 = require("../../utils");
20
+ var address_1 = require("../../utils/address");
20
21
  var timestamp_1 = require("../../utils/timestamp");
21
22
  var validators_1 = require("../../validators");
22
23
  var logger_1 = require("../logger");
@@ -120,11 +121,13 @@ var EventFactory = /** @class */ (function () {
120
121
  version: constants_2.VERSION,
121
122
  };
122
123
  commonEventData.anonymous_id = (0, utils_2.generateAnonymousId)(constants_1.LOCAL_ANONYMOUS_ID_KEY);
123
- if (formoEvent.address) {
124
- commonEventData.address = (0, utils_1.toChecksumAddress)(formoEvent.address);
124
+ // Handle address - convert undefined to null for consistency
125
+ var validAddress = (0, address_1.getValidAddress)(formoEvent.address);
126
+ if (validAddress) {
127
+ commonEventData.address = (0, utils_1.toChecksumAddress)(validAddress);
125
128
  }
126
129
  else {
127
- commonEventData.address = formoEvent.address;
130
+ commonEventData.address = null;
128
131
  }
129
132
  var processedEvent = (0, mergeDeepRight_1.default)(formoEvent, commonEventData);
130
133
  if (processedEvent.event === undefined) {
@@ -300,7 +303,11 @@ var EventFactory = /** @class */ (function () {
300
303
  formoEvent = this.generateTrackEvent(event.event, event.properties, event.context);
301
304
  break;
302
305
  }
303
- !formoEvent.address && (formoEvent.address = address ? (0, utils_1.toChecksumAddress)(address) : null);
306
+ // Set address if not already set by the specific event generator
307
+ if (formoEvent.address === undefined || formoEvent.address === null) {
308
+ var validAddress = (0, address_1.getValidAddress)(address);
309
+ formoEvent.address = validAddress ? (0, utils_1.toChecksumAddress)(validAddress) : null;
310
+ }
304
311
  formoEvent.user_id = userId || null;
305
312
  return formoEvent;
306
313
  };
@@ -1,2 +1,2 @@
1
- export declare const version = "1.19.2";
1
+ export declare const version = "1.19.5";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
4
  // Generated by genversion.
5
- exports.version = '1.19.2';
5
+ exports.version = '1.19.5';
6
6
  //# sourceMappingURL=version.js.map
@@ -1,3 +1,22 @@
1
1
  import { Address } from "../types";
2
+ /**
3
+ * Type guard to check if an address is valid and non-empty after trimming.
4
+ * Note: This function checks if the trimmed value of the address is valid, but does not guarantee that the input address itself is trimmed.
5
+ * If you require a trimmed address, use `getValidAddress(address)` to obtain the trimmed value.
6
+ * @param address The address to validate
7
+ * @returns true if the trimmed address is valid and non-empty, false otherwise.
8
+ * @remarks
9
+ * This type guard only ensures that the trimmed value is a valid Address. The original input may still contain leading or trailing whitespace.
10
+ */
11
+ export declare const isValidAddress: (address: Address | null | undefined) => address is Address;
12
+ /**
13
+ * Validates and returns a trimmed valid address.
14
+ * This function trims the input address and validates it, returning the trimmed value if valid.
15
+ * @param address The address to validate and trim
16
+ * @returns The trimmed address if valid, null otherwise
17
+ * @remarks
18
+ * This function is the preferred way to get a validated, trimmed address for use in your application.
19
+ */
20
+ export declare const getValidAddress: (address: Address | null | undefined) => string | null;
2
21
  export declare const toChecksumAddress: (address: Address) => string;
3
22
  //# sourceMappingURL=address.d.ts.map
@@ -1,10 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toChecksumAddress = void 0;
3
+ exports.toChecksumAddress = exports.getValidAddress = exports.isValidAddress = void 0;
4
4
  var keccak_js_1 = require("ethereum-cryptography/keccak.js");
5
5
  var utils_js_1 = require("ethereum-cryptography/utils.js");
6
6
  var validators_1 = require("../validators");
7
7
  var object_1 = require("../validators/object");
8
+ /**
9
+ * Private helper function to validate and trim an address
10
+ * @param address The address to validate and trim
11
+ * @returns The trimmed address if valid, null otherwise
12
+ */
13
+ var _validateAndTrimAddress = function (address) {
14
+ if (typeof address === "string" && address.trim() !== "" && (0, validators_1.isAddress)(address.trim())) {
15
+ return address.trim();
16
+ }
17
+ return null;
18
+ };
19
+ /**
20
+ * Type guard to check if an address is valid and non-empty after trimming.
21
+ * Note: This function checks if the trimmed value of the address is valid, but does not guarantee that the input address itself is trimmed.
22
+ * If you require a trimmed address, use `getValidAddress(address)` to obtain the trimmed value.
23
+ * @param address The address to validate
24
+ * @returns true if the trimmed address is valid and non-empty, false otherwise.
25
+ * @remarks
26
+ * This type guard only ensures that the trimmed value is a valid Address. The original input may still contain leading or trailing whitespace.
27
+ */
28
+ var isValidAddress = function (address) {
29
+ return _validateAndTrimAddress(address) !== null;
30
+ };
31
+ exports.isValidAddress = isValidAddress;
32
+ /**
33
+ * Validates and returns a trimmed valid address.
34
+ * This function trims the input address and validates it, returning the trimmed value if valid.
35
+ * @param address The address to validate and trim
36
+ * @returns The trimmed address if valid, null otherwise
37
+ * @remarks
38
+ * This function is the preferred way to get a validated, trimmed address for use in your application.
39
+ */
40
+ var getValidAddress = function (address) {
41
+ return _validateAndTrimAddress(address);
42
+ };
43
+ exports.getValidAddress = getValidAddress;
8
44
  var toChecksumAddress = function (address) {
9
45
  if (!(0, validators_1.isAddress)(address, false)) {
10
46
  throw new Error("Invalid address " + address);
@@ -50,7 +50,8 @@ import { EVENTS_API_URL, EventType, LOCAL_ANONYMOUS_ID_KEY, SESSION_CURRENT_URL_
50
50
  import { cookie, EventManager, EventQueue, initStorageManager, logger, Logger, } from "./lib";
51
51
  import { SignatureStatus, TransactionStatus, } from "./types";
52
52
  import { toChecksumAddress } from "./utils";
53
- import { isAddress, isLocalhost } from "./validators";
53
+ import { getValidAddress } from "./utils/address";
54
+ import { isLocalhost } from "./validators";
54
55
  import { parseChainId } from "./utils/chain";
55
56
  var FormoAnalytics = /** @class */ (function () {
56
57
  function FormoAnalytics(writeKey, options) {
@@ -60,7 +61,6 @@ var FormoAnalytics = /** @class */ (function () {
60
61
  this.options = options;
61
62
  this._providerListeners = {};
62
63
  this._providers = [];
63
- this.currentAddress = "";
64
64
  this.currentUserId = "";
65
65
  this.config = {
66
66
  writeKey: writeKey,
@@ -164,6 +164,7 @@ var FormoAnalytics = /** @class */ (function () {
164
164
  */
165
165
  FormoAnalytics.prototype.connect = function (_a, properties_1, context_1, callback_1) {
166
166
  return __awaiter(this, arguments, void 0, function (_b, properties, context, callback) {
167
+ var validAddress;
167
168
  var chainId = _b.chainId, address = _b.address;
168
169
  return __generator(this, function (_c) {
169
170
  switch (_c.label) {
@@ -175,7 +176,8 @@ var FormoAnalytics = /** @class */ (function () {
175
176
  logger.warn("Connect: Address cannot be empty");
176
177
  }
177
178
  this.currentChainId = chainId;
178
- this.currentAddress = address ? toChecksumAddress(address) : undefined;
179
+ validAddress = getValidAddress(address);
180
+ this.currentAddress = validAddress ? toChecksumAddress(validAddress) : undefined;
179
181
  return [4 /*yield*/, this.trackEvent(EventType.CONNECT, {
180
182
  chainId: chainId,
181
183
  address: this.currentAddress,
@@ -321,7 +323,7 @@ var FormoAnalytics = /** @class */ (function () {
321
323
  */
322
324
  FormoAnalytics.prototype.identify = function (params, properties, context, callback) {
323
325
  return __awaiter(this, void 0, void 0, function () {
324
- var _i, _a, providerDetail, provider, address_1, err_1, userId, address, providerName, rdns, e_1;
326
+ var _i, _a, providerDetail, provider, address_1, err_1, userId, address, providerName, rdns, validAddress, e_1;
325
327
  return __generator(this, function (_b) {
326
328
  switch (_b.label) {
327
329
  case 0:
@@ -367,14 +369,15 @@ var FormoAnalytics = /** @class */ (function () {
367
369
  case 9:
368
370
  userId = params.userId, address = params.address, providerName = params.providerName, rdns = params.rdns;
369
371
  logger.info("Identify", address, userId, providerName, rdns);
370
- if (address)
371
- this.currentAddress = toChecksumAddress(address);
372
+ validAddress = getValidAddress(address);
373
+ if (validAddress)
374
+ this.currentAddress = toChecksumAddress(validAddress);
372
375
  if (userId) {
373
376
  this.currentUserId = userId;
374
377
  cookie().set(SESSION_USER_ID_KEY, userId);
375
378
  }
376
379
  return [4 /*yield*/, this.trackEvent(EventType.IDENTIFY, {
377
- address: address ? toChecksumAddress(address) : undefined,
380
+ address: validAddress ? toChecksumAddress(validAddress) : undefined,
378
381
  providerName: providerName,
379
382
  userId: userId,
380
383
  rdns: rdns,
@@ -487,7 +490,7 @@ var FormoAnalytics = /** @class */ (function () {
487
490
  };
488
491
  FormoAnalytics.prototype.onAccountsChanged = function (accounts) {
489
492
  return __awaiter(this, void 0, void 0, function () {
490
- var address, _a;
493
+ var validAddress, address, _a;
491
494
  return __generator(this, function (_b) {
492
495
  switch (_b.label) {
493
496
  case 0:
@@ -500,12 +503,12 @@ var FormoAnalytics = /** @class */ (function () {
500
503
  _b.sent();
501
504
  return [2 /*return*/];
502
505
  case 2:
503
- // Validate the first account is a valid address before processing
504
- if (!isAddress(accounts[0])) {
506
+ validAddress = getValidAddress(accounts[0]);
507
+ if (!validAddress) {
505
508
  logger.warn("onAccountsChanged: Invalid address received", accounts[0]);
506
509
  return [2 /*return*/];
507
510
  }
508
- address = toChecksumAddress(accounts[0]);
511
+ address = toChecksumAddress(validAddress);
509
512
  if (address === this.currentAddress) {
510
513
  // We have already reported this address
511
514
  return [2 /*return*/];
@@ -538,7 +541,7 @@ var FormoAnalytics = /** @class */ (function () {
538
541
  };
539
542
  FormoAnalytics.prototype.onChainChanged = function (chainIdHex) {
540
543
  return __awaiter(this, void 0, void 0, function () {
541
- var address;
544
+ var address, validAddress;
542
545
  return __generator(this, function (_a) {
543
546
  switch (_a.label) {
544
547
  case 0:
@@ -556,7 +559,8 @@ var FormoAnalytics = /** @class */ (function () {
556
559
  logger.info("OnChainChanged: Unable to fetch or store connected address");
557
560
  return [2 /*return*/, Promise.resolve()];
558
561
  }
559
- this.currentAddress = toChecksumAddress(address);
562
+ validAddress = getValidAddress(address);
563
+ this.currentAddress = validAddress ? toChecksumAddress(validAddress) : undefined;
560
564
  _a.label = 2;
561
565
  case 2:
562
566
  // Proceed only if the address exists
@@ -969,7 +973,7 @@ var FormoAnalytics = /** @class */ (function () {
969
973
  });
970
974
  FormoAnalytics.prototype.getAddress = function (provider) {
971
975
  return __awaiter(this, void 0, void 0, function () {
972
- var p, accounts, err_3;
976
+ var p, accounts, validAddress, err_3;
973
977
  return __generator(this, function (_a) {
974
978
  switch (_a.label) {
975
979
  case 0:
@@ -987,8 +991,9 @@ var FormoAnalytics = /** @class */ (function () {
987
991
  case 2:
988
992
  accounts = _a.sent();
989
993
  if (accounts && accounts.length > 0) {
990
- if (isAddress(accounts[0])) {
991
- return [2 /*return*/, toChecksumAddress(accounts[0])];
994
+ validAddress = getValidAddress(accounts[0]);
995
+ if (validAddress) {
996
+ return [2 /*return*/, toChecksumAddress(validAddress)];
992
997
  }
993
998
  }
994
999
  return [3 /*break*/, 4];
@@ -1018,7 +1023,10 @@ var FormoAnalytics = /** @class */ (function () {
1018
1023
  res = _a.sent();
1019
1024
  if (!res || res.length === 0)
1020
1025
  return [2 /*return*/, null];
1021
- return [2 /*return*/, res.filter(function (e) { return isAddress(e); }).map(toChecksumAddress)];
1026
+ return [2 /*return*/, res
1027
+ .map(function (e) { return getValidAddress(e); })
1028
+ .filter(function (e) { return e !== null; })
1029
+ .map(toChecksumAddress)];
1022
1030
  case 3:
1023
1031
  err_4 = _a.sent();
1024
1032
  if (err_4.code !== 4001) {
@@ -1063,11 +1071,16 @@ var FormoAnalytics = /** @class */ (function () {
1063
1071
  });
1064
1072
  };
1065
1073
  FormoAnalytics.prototype.buildSignatureEventPayload = function (method, params, response) {
1074
+ var rawAddress = method === "personal_sign"
1075
+ ? params[1]
1076
+ : params[0];
1077
+ var validAddress = getValidAddress(rawAddress);
1078
+ if (!validAddress) {
1079
+ throw new Error("Invalid address in signature payload: ".concat(rawAddress));
1080
+ }
1066
1081
  var basePayload = {
1067
1082
  chainId: this.currentChainId,
1068
- address: method === "personal_sign"
1069
- ? params[1]
1070
- : params[0],
1083
+ address: toChecksumAddress(validAddress),
1071
1084
  };
1072
1085
  if (method === "personal_sign") {
1073
1086
  var message = Buffer.from(params[0].slice(2), "hex").toString("utf8");
@@ -1077,12 +1090,16 @@ var FormoAnalytics = /** @class */ (function () {
1077
1090
  };
1078
1091
  FormoAnalytics.prototype.buildTransactionEventPayload = function (params) {
1079
1092
  return __awaiter(this, void 0, void 0, function () {
1080
- var _a, data, from, to, value, _b;
1093
+ var _a, data, from, to, value, validAddress, _b;
1081
1094
  var _c;
1082
1095
  return __generator(this, function (_d) {
1083
1096
  switch (_d.label) {
1084
1097
  case 0:
1085
1098
  _a = params[0], data = _a.data, from = _a.from, to = _a.to, value = _a.value;
1099
+ validAddress = getValidAddress(from);
1100
+ if (!validAddress) {
1101
+ throw new Error("Invalid address in transaction payload: ".concat(from));
1102
+ }
1086
1103
  _c = {};
1087
1104
  _b = this.currentChainId;
1088
1105
  if (_b) return [3 /*break*/, 2];
@@ -1092,7 +1109,7 @@ var FormoAnalytics = /** @class */ (function () {
1092
1109
  _d.label = 2;
1093
1110
  case 2: return [2 /*return*/, (_c.chainId = _b,
1094
1111
  _c.data = data,
1095
- _c.address = from,
1112
+ _c.address = toChecksumAddress(validAddress),
1096
1113
  _c.to = to,
1097
1114
  _c.value = value,
1098
1115
  _c)];
@@ -11,6 +11,7 @@ var __assign = (this && this.__assign) || function () {
11
11
  };
12
12
  import { COUNTRY_LIST, LOCAL_ANONYMOUS_ID_KEY, SESSION_TRAFFIC_SOURCE_KEY, } from "../../constants";
13
13
  import { toChecksumAddress, toSnakeCase } from "../../utils";
14
+ import { getValidAddress } from "../../utils/address";
14
15
  import { getCurrentTimeFormatted } from "../../utils/timestamp";
15
16
  import { isUndefined } from "../../validators";
16
17
  import { logger } from "../logger";
@@ -114,11 +115,13 @@ var EventFactory = /** @class */ (function () {
114
115
  version: VERSION,
115
116
  };
116
117
  commonEventData.anonymous_id = generateAnonymousId(LOCAL_ANONYMOUS_ID_KEY);
117
- if (formoEvent.address) {
118
- commonEventData.address = toChecksumAddress(formoEvent.address);
118
+ // Handle address - convert undefined to null for consistency
119
+ var validAddress = getValidAddress(formoEvent.address);
120
+ if (validAddress) {
121
+ commonEventData.address = toChecksumAddress(validAddress);
119
122
  }
120
123
  else {
121
- commonEventData.address = formoEvent.address;
124
+ commonEventData.address = null;
122
125
  }
123
126
  var processedEvent = mergeDeepRight(formoEvent, commonEventData);
124
127
  if (processedEvent.event === undefined) {
@@ -294,7 +297,11 @@ var EventFactory = /** @class */ (function () {
294
297
  formoEvent = this.generateTrackEvent(event.event, event.properties, event.context);
295
298
  break;
296
299
  }
297
- !formoEvent.address && (formoEvent.address = address ? toChecksumAddress(address) : null);
300
+ // Set address if not already set by the specific event generator
301
+ if (formoEvent.address === undefined || formoEvent.address === null) {
302
+ var validAddress = getValidAddress(address);
303
+ formoEvent.address = validAddress ? toChecksumAddress(validAddress) : null;
304
+ }
298
305
  formoEvent.user_id = userId || null;
299
306
  return formoEvent;
300
307
  };
@@ -1,2 +1,2 @@
1
- export declare const version = "1.19.2";
1
+ export declare const version = "1.19.5";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Generated by genversion.
2
- export var version = '1.19.2';
2
+ export var version = '1.19.5';
3
3
  //# sourceMappingURL=version.js.map
@@ -1,3 +1,22 @@
1
1
  import { Address } from "../types";
2
+ /**
3
+ * Type guard to check if an address is valid and non-empty after trimming.
4
+ * Note: This function checks if the trimmed value of the address is valid, but does not guarantee that the input address itself is trimmed.
5
+ * If you require a trimmed address, use `getValidAddress(address)` to obtain the trimmed value.
6
+ * @param address The address to validate
7
+ * @returns true if the trimmed address is valid and non-empty, false otherwise.
8
+ * @remarks
9
+ * This type guard only ensures that the trimmed value is a valid Address. The original input may still contain leading or trailing whitespace.
10
+ */
11
+ export declare const isValidAddress: (address: Address | null | undefined) => address is Address;
12
+ /**
13
+ * Validates and returns a trimmed valid address.
14
+ * This function trims the input address and validates it, returning the trimmed value if valid.
15
+ * @param address The address to validate and trim
16
+ * @returns The trimmed address if valid, null otherwise
17
+ * @remarks
18
+ * This function is the preferred way to get a validated, trimmed address for use in your application.
19
+ */
20
+ export declare const getValidAddress: (address: Address | null | undefined) => string | null;
2
21
  export declare const toChecksumAddress: (address: Address) => string;
3
22
  //# sourceMappingURL=address.d.ts.map
@@ -2,6 +2,40 @@ import { keccak256 } from "ethereum-cryptography/keccak.js";
2
2
  import { utf8ToBytes } from "ethereum-cryptography/utils.js";
3
3
  import { ensureIfUint8Array, isAddress, uint8ArrayToHexString, } from "../validators";
4
4
  import { isNullish } from "../validators/object";
5
+ /**
6
+ * Private helper function to validate and trim an address
7
+ * @param address The address to validate and trim
8
+ * @returns The trimmed address if valid, null otherwise
9
+ */
10
+ var _validateAndTrimAddress = function (address) {
11
+ if (typeof address === "string" && address.trim() !== "" && isAddress(address.trim())) {
12
+ return address.trim();
13
+ }
14
+ return null;
15
+ };
16
+ /**
17
+ * Type guard to check if an address is valid and non-empty after trimming.
18
+ * Note: This function checks if the trimmed value of the address is valid, but does not guarantee that the input address itself is trimmed.
19
+ * If you require a trimmed address, use `getValidAddress(address)` to obtain the trimmed value.
20
+ * @param address The address to validate
21
+ * @returns true if the trimmed address is valid and non-empty, false otherwise.
22
+ * @remarks
23
+ * This type guard only ensures that the trimmed value is a valid Address. The original input may still contain leading or trailing whitespace.
24
+ */
25
+ export var isValidAddress = function (address) {
26
+ return _validateAndTrimAddress(address) !== null;
27
+ };
28
+ /**
29
+ * Validates and returns a trimmed valid address.
30
+ * This function trims the input address and validates it, returning the trimmed value if valid.
31
+ * @param address The address to validate and trim
32
+ * @returns The trimmed address if valid, null otherwise
33
+ * @remarks
34
+ * This function is the preferred way to get a validated, trimmed address for use in your application.
35
+ */
36
+ export var getValidAddress = function (address) {
37
+ return _validateAndTrimAddress(address);
38
+ };
5
39
  export var toChecksumAddress = function (address) {
6
40
  if (!isAddress(address, false)) {
7
41
  throw new Error("Invalid address " + address);