@formo/analytics 1.16.0 → 1.16.2

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 (281) hide show
  1. package/dist/cjs/src/FormoAnalytics.d.ts +20 -14
  2. package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
  3. package/dist/cjs/src/FormoAnalytics.js +105 -136
  4. package/dist/cjs/src/FormoAnalytics.js.map +1 -1
  5. package/dist/cjs/src/FormoAnalyticsProvider.d.ts +1 -1
  6. package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +1 -1
  7. package/dist/cjs/src/FormoAnalyticsProvider.js +4 -4
  8. package/dist/cjs/src/FormoAnalyticsProvider.js.map +1 -1
  9. package/dist/cjs/src/constants/config.d.ts +597 -597
  10. package/dist/cjs/src/constants/config.d.ts.map +1 -1
  11. package/dist/cjs/src/constants/config.js.map +1 -1
  12. package/dist/cjs/src/constants/index.d.ts +0 -1
  13. package/dist/cjs/src/constants/index.d.ts.map +1 -1
  14. package/dist/cjs/src/constants/index.js +0 -1
  15. package/dist/cjs/src/constants/index.js.map +1 -1
  16. package/dist/cjs/src/lib/event/EventFactory.d.ts +62 -0
  17. package/dist/cjs/src/lib/event/EventFactory.d.ts.map +1 -0
  18. package/dist/cjs/src/lib/event/EventFactory.js +188 -0
  19. package/dist/cjs/src/lib/event/EventFactory.js.map +1 -0
  20. package/dist/cjs/src/lib/event/index.d.ts +3 -0
  21. package/dist/cjs/src/lib/event/index.d.ts.map +1 -0
  22. package/dist/cjs/src/lib/event/index.js +19 -0
  23. package/dist/cjs/src/lib/event/index.js.map +1 -0
  24. package/dist/cjs/src/lib/event/type.d.ts +6 -0
  25. package/dist/cjs/src/lib/event/type.d.ts.map +1 -0
  26. package/dist/cjs/src/lib/event/type.js +3 -0
  27. package/dist/cjs/src/lib/event/type.js.map +1 -0
  28. package/dist/cjs/src/lib/index.d.ts +1 -0
  29. package/dist/cjs/src/lib/index.d.ts.map +1 -1
  30. package/dist/cjs/src/lib/index.js +1 -0
  31. package/dist/cjs/src/lib/index.js.map +1 -1
  32. package/dist/cjs/src/lib/{logger.d.ts → logger/Logger.d.ts} +5 -5
  33. package/dist/cjs/src/lib/logger/Logger.d.ts.map +1 -0
  34. package/dist/cjs/src/lib/{logger.js → logger/Logger.js} +1 -1
  35. package/dist/cjs/src/lib/logger/Logger.js.map +1 -0
  36. package/dist/cjs/src/lib/logger/index.d.ts +3 -0
  37. package/dist/cjs/src/lib/logger/index.d.ts.map +1 -0
  38. package/dist/cjs/src/lib/logger/index.js +19 -0
  39. package/dist/cjs/src/lib/logger/index.js.map +1 -0
  40. package/dist/cjs/src/lib/logger/type.d.ts +14 -0
  41. package/dist/cjs/src/lib/logger/type.d.ts.map +1 -0
  42. package/dist/cjs/src/lib/logger/type.js +3 -0
  43. package/dist/cjs/src/lib/logger/type.js.map +1 -0
  44. package/dist/{esm/src/lib/queue.d.ts → cjs/src/lib/queue/EventQueue.d.ts} +5 -4
  45. package/dist/cjs/src/lib/queue/EventQueue.d.ts.map +1 -0
  46. package/dist/cjs/src/lib/{queue.js → queue/EventQueue.js} +9 -6
  47. package/dist/cjs/src/lib/queue/EventQueue.js.map +1 -0
  48. package/dist/cjs/src/lib/queue/index.d.ts +3 -0
  49. package/dist/cjs/src/lib/queue/index.d.ts.map +1 -0
  50. package/dist/cjs/src/lib/queue/index.js +19 -0
  51. package/dist/cjs/src/lib/queue/index.js.map +1 -0
  52. package/dist/cjs/src/lib/queue/type.d.ts +6 -0
  53. package/dist/cjs/src/lib/queue/type.d.ts.map +1 -0
  54. package/dist/cjs/src/lib/queue/type.js +3 -0
  55. package/dist/cjs/src/lib/queue/type.js.map +1 -0
  56. package/dist/cjs/src/types/base.d.ts +1 -0
  57. package/dist/cjs/src/types/base.d.ts.map +1 -1
  58. package/dist/cjs/src/types/events.d.ts +44 -2
  59. package/dist/cjs/src/types/events.d.ts.map +1 -1
  60. package/dist/cjs/src/types/events.js.map +1 -1
  61. package/dist/cjs/src/utils/address.d.ts +3 -0
  62. package/dist/cjs/src/utils/address.d.ts.map +1 -0
  63. package/dist/cjs/src/utils/address.js +32 -0
  64. package/dist/cjs/src/utils/address.js.map +1 -0
  65. package/dist/cjs/src/utils/base.d.ts +0 -7
  66. package/dist/cjs/src/utils/base.d.ts.map +1 -1
  67. package/dist/cjs/src/utils/base.js +1 -106
  68. package/dist/cjs/src/utils/base.js.map +1 -1
  69. package/dist/cjs/src/utils/converter.d.ts +5 -0
  70. package/dist/cjs/src/utils/converter.d.ts.map +1 -0
  71. package/dist/cjs/src/utils/converter.js +52 -0
  72. package/dist/cjs/src/utils/converter.js.map +1 -0
  73. package/dist/cjs/src/utils/generate.d.ts +4 -0
  74. package/dist/cjs/src/utils/generate.d.ts.map +1 -0
  75. package/dist/cjs/src/utils/generate.js +60 -0
  76. package/dist/cjs/src/utils/generate.js.map +1 -0
  77. package/dist/cjs/src/utils/index.d.ts +3 -1
  78. package/dist/cjs/src/utils/index.d.ts.map +1 -1
  79. package/dist/cjs/src/utils/index.js +3 -1
  80. package/dist/cjs/src/utils/index.js.map +1 -1
  81. package/dist/cjs/src/validators/address.d.ts +5 -0
  82. package/dist/cjs/src/validators/address.d.ts.map +1 -0
  83. package/dist/cjs/src/validators/address.js +64 -0
  84. package/dist/cjs/src/validators/address.js.map +1 -0
  85. package/dist/cjs/src/validators/agent.d.ts +2 -0
  86. package/dist/cjs/src/validators/agent.d.ts.map +1 -0
  87. package/dist/cjs/src/{utils/is.js → validators/agent.js} +2 -5
  88. package/dist/cjs/src/validators/agent.js.map +1 -0
  89. package/dist/cjs/src/validators/index.d.ts +7 -0
  90. package/dist/cjs/src/validators/index.d.ts.map +1 -0
  91. package/dist/cjs/src/validators/index.js +23 -0
  92. package/dist/cjs/src/validators/index.js.map +1 -0
  93. package/dist/cjs/src/validators/object.d.ts +2 -0
  94. package/dist/cjs/src/validators/object.d.ts.map +1 -0
  95. package/dist/cjs/src/validators/object.js +10 -0
  96. package/dist/cjs/src/validators/object.js.map +1 -0
  97. package/dist/cjs/src/validators/string.d.ts +3 -0
  98. package/dist/cjs/src/validators/string.d.ts.map +1 -0
  99. package/dist/cjs/src/validators/string.js +8 -0
  100. package/dist/cjs/src/validators/string.js.map +1 -0
  101. package/dist/cjs/src/validators/type-check.d.ts +14 -0
  102. package/dist/cjs/src/validators/type-check.d.ts.map +1 -0
  103. package/dist/cjs/src/validators/type-check.js +61 -0
  104. package/dist/cjs/src/validators/type-check.js.map +1 -0
  105. package/dist/cjs/src/validators/uint8array.d.ts +3 -0
  106. package/dist/cjs/src/validators/uint8array.d.ts.map +1 -0
  107. package/dist/cjs/src/validators/uint8array.js +21 -0
  108. package/dist/cjs/src/validators/uint8array.js.map +1 -0
  109. package/dist/cjs/test/lib.spec.js +9 -2
  110. package/dist/cjs/test/lib.spec.js.map +1 -1
  111. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  112. package/dist/esm/src/FormoAnalytics.d.ts +20 -14
  113. package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
  114. package/dist/esm/src/FormoAnalytics.js +102 -133
  115. package/dist/esm/src/FormoAnalytics.js.map +1 -1
  116. package/dist/esm/src/FormoAnalyticsProvider.d.ts +1 -1
  117. package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +1 -1
  118. package/dist/esm/src/FormoAnalyticsProvider.js +2 -2
  119. package/dist/esm/src/FormoAnalyticsProvider.js.map +1 -1
  120. package/dist/esm/src/constants/config.d.ts +597 -597
  121. package/dist/esm/src/constants/config.d.ts.map +1 -1
  122. package/dist/esm/src/constants/config.js.map +1 -1
  123. package/dist/esm/src/constants/index.d.ts +0 -1
  124. package/dist/esm/src/constants/index.d.ts.map +1 -1
  125. package/dist/esm/src/constants/index.js +0 -1
  126. package/dist/esm/src/constants/index.js.map +1 -1
  127. package/dist/esm/src/lib/event/EventFactory.d.ts +62 -0
  128. package/dist/esm/src/lib/event/EventFactory.d.ts.map +1 -0
  129. package/dist/esm/src/lib/event/EventFactory.js +185 -0
  130. package/dist/esm/src/lib/event/EventFactory.js.map +1 -0
  131. package/dist/esm/src/lib/event/index.d.ts +3 -0
  132. package/dist/esm/src/lib/event/index.d.ts.map +1 -0
  133. package/dist/esm/src/lib/event/index.js +3 -0
  134. package/dist/esm/src/lib/event/index.js.map +1 -0
  135. package/dist/esm/src/lib/event/type.d.ts +6 -0
  136. package/dist/esm/src/lib/event/type.d.ts.map +1 -0
  137. package/dist/esm/src/lib/event/type.js +2 -0
  138. package/dist/esm/src/lib/event/type.js.map +1 -0
  139. package/dist/esm/src/lib/fetch.d.ts +1 -1
  140. package/dist/esm/src/lib/index.d.ts +1 -0
  141. package/dist/esm/src/lib/index.d.ts.map +1 -1
  142. package/dist/esm/src/lib/index.js +1 -0
  143. package/dist/esm/src/lib/index.js.map +1 -1
  144. package/dist/esm/src/lib/{logger.d.ts → logger/Logger.d.ts} +5 -5
  145. package/dist/esm/src/lib/logger/Logger.d.ts.map +1 -0
  146. package/dist/esm/src/lib/{logger.js → logger/Logger.js} +1 -1
  147. package/dist/esm/src/lib/logger/Logger.js.map +1 -0
  148. package/dist/esm/src/lib/logger/index.d.ts +3 -0
  149. package/dist/esm/src/lib/logger/index.d.ts.map +1 -0
  150. package/dist/esm/src/lib/logger/index.js +3 -0
  151. package/dist/esm/src/lib/logger/index.js.map +1 -0
  152. package/dist/esm/src/lib/logger/type.d.ts +14 -0
  153. package/dist/esm/src/lib/logger/type.d.ts.map +1 -0
  154. package/dist/esm/src/lib/logger/type.js +2 -0
  155. package/dist/esm/src/lib/logger/type.js.map +1 -0
  156. package/dist/{cjs/src/lib/queue.d.ts → esm/src/lib/queue/EventQueue.d.ts} +5 -4
  157. package/dist/esm/src/lib/queue/EventQueue.d.ts.map +1 -0
  158. package/dist/esm/src/lib/{queue.js → queue/EventQueue.js} +9 -6
  159. package/dist/esm/src/lib/queue/EventQueue.js.map +1 -0
  160. package/dist/esm/src/lib/queue/index.d.ts +3 -0
  161. package/dist/esm/src/lib/queue/index.d.ts.map +1 -0
  162. package/dist/esm/src/lib/queue/index.js +3 -0
  163. package/dist/esm/src/lib/queue/index.js.map +1 -0
  164. package/dist/esm/src/lib/queue/type.d.ts +6 -0
  165. package/dist/esm/src/lib/queue/type.d.ts.map +1 -0
  166. package/dist/esm/src/lib/queue/type.js +2 -0
  167. package/dist/esm/src/lib/queue/type.js.map +1 -0
  168. package/dist/esm/src/types/base.d.ts +1 -0
  169. package/dist/esm/src/types/base.d.ts.map +1 -1
  170. package/dist/esm/src/types/events.d.ts +44 -2
  171. package/dist/esm/src/types/events.d.ts.map +1 -1
  172. package/dist/esm/src/types/events.js.map +1 -1
  173. package/dist/esm/src/utils/address.d.ts +3 -0
  174. package/dist/esm/src/utils/address.d.ts.map +1 -0
  175. package/dist/esm/src/utils/address.js +28 -0
  176. package/dist/esm/src/utils/address.js.map +1 -0
  177. package/dist/esm/src/utils/base.d.ts +0 -7
  178. package/dist/esm/src/utils/base.d.ts.map +1 -1
  179. package/dist/esm/src/utils/base.js +0 -99
  180. package/dist/esm/src/utils/base.js.map +1 -1
  181. package/dist/esm/src/utils/converter.d.ts +5 -0
  182. package/dist/esm/src/utils/converter.d.ts.map +1 -0
  183. package/dist/esm/src/utils/converter.js +45 -0
  184. package/dist/esm/src/utils/converter.js.map +1 -0
  185. package/dist/esm/src/utils/generate.d.ts +4 -0
  186. package/dist/esm/src/utils/generate.d.ts.map +1 -0
  187. package/dist/esm/src/utils/generate.js +56 -0
  188. package/dist/esm/src/utils/generate.js.map +1 -0
  189. package/dist/esm/src/utils/index.d.ts +3 -1
  190. package/dist/esm/src/utils/index.d.ts.map +1 -1
  191. package/dist/esm/src/utils/index.js +3 -1
  192. package/dist/esm/src/utils/index.js.map +1 -1
  193. package/dist/esm/src/validators/address.d.ts +5 -0
  194. package/dist/esm/src/validators/address.d.ts.map +1 -0
  195. package/dist/esm/src/validators/address.js +58 -0
  196. package/dist/esm/src/validators/address.js.map +1 -0
  197. package/dist/esm/src/validators/agent.d.ts +2 -0
  198. package/dist/esm/src/validators/agent.d.ts.map +1 -0
  199. package/dist/esm/src/{utils/is.js → validators/agent.js} +1 -3
  200. package/dist/esm/src/validators/agent.js.map +1 -0
  201. package/dist/esm/src/validators/index.d.ts +7 -0
  202. package/dist/esm/src/validators/index.d.ts.map +1 -0
  203. package/dist/esm/src/validators/index.js +7 -0
  204. package/dist/esm/src/validators/index.js.map +1 -0
  205. package/dist/esm/src/validators/object.d.ts +2 -0
  206. package/dist/esm/src/validators/object.d.ts.map +1 -0
  207. package/dist/esm/src/validators/object.js +6 -0
  208. package/dist/esm/src/validators/object.js.map +1 -0
  209. package/dist/esm/src/validators/string.d.ts +3 -0
  210. package/dist/esm/src/validators/string.d.ts.map +1 -0
  211. package/dist/esm/src/validators/string.js +4 -0
  212. package/dist/esm/src/validators/string.js.map +1 -0
  213. package/dist/esm/src/validators/type-check.d.ts +14 -0
  214. package/dist/esm/src/validators/type-check.d.ts.map +1 -0
  215. package/dist/esm/src/validators/type-check.js +46 -0
  216. package/dist/esm/src/validators/type-check.js.map +1 -0
  217. package/dist/esm/src/validators/uint8array.d.ts +3 -0
  218. package/dist/esm/src/validators/uint8array.d.ts.map +1 -0
  219. package/dist/esm/src/validators/uint8array.js +17 -0
  220. package/dist/esm/src/validators/uint8array.js.map +1 -0
  221. package/dist/esm/test/lib.spec.js +8 -1
  222. package/dist/esm/test/lib.spec.js.map +1 -1
  223. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  224. package/dist/index.umd.min.js +1 -1
  225. package/dist/index.umd.min.js.LICENSE.txt +4 -0
  226. package/dist/index.umd.min.js.map +1 -1
  227. package/package.json +14 -3
  228. package/src/FormoAnalytics.ts +106 -162
  229. package/src/FormoAnalyticsProvider.tsx +2 -2
  230. package/src/constants/config.ts +1 -1
  231. package/src/constants/index.ts +0 -1
  232. package/src/global.d.ts +4 -4
  233. package/src/lib/event/EventFactory.ts +263 -0
  234. package/src/lib/event/index.ts +2 -0
  235. package/src/lib/event/type.ts +11 -0
  236. package/src/lib/index.ts +1 -0
  237. package/src/lib/{logger.ts → logger/Logger.ts} +4 -4
  238. package/src/lib/logger/index.ts +2 -0
  239. package/src/lib/logger/type.ts +14 -0
  240. package/src/lib/{queue.ts → queue/EventQueue.ts} +13 -9
  241. package/src/lib/queue/index.ts +2 -0
  242. package/src/lib/queue/type.ts +6 -0
  243. package/src/types/base.ts +2 -0
  244. package/src/types/events.ts +53 -2
  245. package/src/utils/address.ts +43 -0
  246. package/src/utils/base.ts +0 -62
  247. package/src/utils/converter.ts +44 -0
  248. package/src/utils/generate.ts +16 -0
  249. package/src/utils/index.ts +3 -1
  250. package/src/validators/address.ts +69 -0
  251. package/src/{utils/is.ts → validators/agent.ts} +0 -4
  252. package/src/validators/index.ts +6 -0
  253. package/src/validators/object.ts +4 -0
  254. package/src/validators/string.ts +4 -0
  255. package/src/validators/type-check.ts +61 -0
  256. package/src/validators/uint8array.ts +17 -0
  257. package/test/lib.spec.ts +13 -1
  258. package/webpack.config.ts +12 -12
  259. package/dist/cjs/src/constants/regex.d.ts +0 -4
  260. package/dist/cjs/src/constants/regex.d.ts.map +0 -1
  261. package/dist/cjs/src/constants/regex.js +0 -7
  262. package/dist/cjs/src/constants/regex.js.map +0 -1
  263. package/dist/cjs/src/lib/logger.d.ts.map +0 -1
  264. package/dist/cjs/src/lib/logger.js.map +0 -1
  265. package/dist/cjs/src/lib/queue.d.ts.map +0 -1
  266. package/dist/cjs/src/lib/queue.js.map +0 -1
  267. package/dist/cjs/src/utils/is.d.ts +0 -3
  268. package/dist/cjs/src/utils/is.d.ts.map +0 -1
  269. package/dist/cjs/src/utils/is.js.map +0 -1
  270. package/dist/esm/src/constants/regex.d.ts +0 -4
  271. package/dist/esm/src/constants/regex.d.ts.map +0 -1
  272. package/dist/esm/src/constants/regex.js +0 -4
  273. package/dist/esm/src/constants/regex.js.map +0 -1
  274. package/dist/esm/src/lib/logger.d.ts.map +0 -1
  275. package/dist/esm/src/lib/logger.js.map +0 -1
  276. package/dist/esm/src/lib/queue.d.ts.map +0 -1
  277. package/dist/esm/src/lib/queue.js.map +0 -1
  278. package/dist/esm/src/utils/is.d.ts +0 -3
  279. package/dist/esm/src/utils/is.d.ts.map +0 -1
  280. package/dist/esm/src/utils/is.js.map +0 -1
  281. package/src/constants/regex.ts +0 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formo/analytics",
3
- "version": "1.16.0",
3
+ "version": "1.16.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/getformo/sdk.git"
@@ -21,6 +21,7 @@
21
21
  },
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
+ "ethereum-cryptography": "^3.1.0",
24
25
  "fetch-retry": "^6.0.0",
25
26
  "is-network-error": "^1.1.0",
26
27
  "mipd": "^0.0.7"
@@ -32,6 +33,8 @@
32
33
  "@commitlint/cli": "^17.3.0",
33
34
  "@commitlint/config-conventional": "^17.3.0",
34
35
  "@semantic-release/github": "^8.0.7",
36
+ "@size-limit/esbuild": "^11.2.0",
37
+ "@size-limit/file": "^11.2.0",
35
38
  "@testing-library/react": "^13.4.0",
36
39
  "@types/chai": "^4.3.1",
37
40
  "@types/jsdom": "^20.0.1",
@@ -60,6 +63,7 @@
60
63
  "semantic-release-export-data": "^1.0.1",
61
64
  "sinon": "^14.0.0",
62
65
  "sinon-chai": "^3.7.0",
66
+ "size-limit": "^11.2.0",
63
67
  "ts-loader": "^9.3.1",
64
68
  "ts-node": "^10.8.2",
65
69
  "typescript": "^5.7.3",
@@ -68,7 +72,7 @@
68
72
  },
69
73
  "scripts": {
70
74
  "prebuild": "yarn clean",
71
- "build": "yarn test && yarn build-cjs && yarn build-esm && yarn webpack --mode=production",
75
+ "build": "yarn test && yarn build-cjs && yarn build-esm && yarn webpack --mode=production && yarn size",
72
76
  "build-cjs": "yarn tsc --build",
73
77
  "build-esm": "yarn tsc -m es6 --outdir dist/esm",
74
78
  "clean": "rm -rf dist",
@@ -77,8 +81,15 @@
77
81
  "test-watch": "nodemon --config test.nodemon.json",
78
82
  "prepare": "husky install",
79
83
  "commit": "git add . && cz",
80
- "pub": "yarn build && npm publish"
84
+ "pub": "yarn build && npm publish",
85
+ "size": "size-limit"
81
86
  },
87
+ "size-limit": [
88
+ {
89
+ "path": "dist/index.umd.min.js",
90
+ "limit": "50 KB"
91
+ }
92
+ ],
82
93
  "peerDependencies": {
83
94
  "@types/react": ">=16.14.34",
84
95
  "react": ">=16.14.0"
@@ -1,33 +1,35 @@
1
+ import { UUID } from "crypto";
1
2
  import { createStore, EIP6963ProviderDetail } from "mipd";
2
3
  import {
4
+ Event,
5
+ EVENTS_API_URL,
3
6
  LOCAL_ANONYMOUS_ID_KEY,
4
- COUNTRY_LIST,
5
7
  SESSION_CURRENT_URL_KEY,
6
- EVENTS_API_URL,
7
- Event,
8
8
  SESSION_USER_ID_KEY,
9
+ SESSION_WALLET_DETECTED_KEY,
9
10
  } from "./constants";
10
11
  import {
11
- ChainID,
12
+ EventFactory,
13
+ EventQueue,
14
+ IEventFactory,
15
+ local,
16
+ logger,
17
+ Logger,
18
+ session,
19
+ } from "./lib";
20
+ import {
12
21
  Address,
22
+ ChainID,
23
+ Config,
13
24
  EIP1193Provider,
14
25
  Options,
15
- Config,
16
26
  RequestArguments,
17
27
  RPCError,
18
28
  SignatureStatus,
19
29
  TransactionStatus,
20
- RequestEvent,
21
30
  } from "./types";
22
- import { session, local, logger, EventQueue, Logger } from "./lib";
23
- import {
24
- isLocalhost,
25
- isAddress,
26
- toSnakeCase,
27
- generateNativeUUID,
28
- } from "./utils";
29
- import { SESSION_WALLET_DETECTED_KEY } from "./constants";
30
- import { UUID } from "crypto";
31
+ import { generateNativeUUID } from "./utils";
32
+ import { isAddress, isArray, isLocalhost } from "./validators";
31
33
 
32
34
  interface IFormoAnalytics {
33
35
  page(): void;
@@ -35,28 +37,14 @@ interface IFormoAnalytics {
35
37
  connect(params: { chainId: ChainID; address: Address }): Promise<void>;
36
38
  disconnect(params?: { chainId?: ChainID; address?: Address }): Promise<void>;
37
39
  chain(params: { chainId: ChainID; address?: Address }): Promise<void>;
38
- signature({
39
- status,
40
- chainId,
41
- address,
42
- message,
43
- signatureHash,
44
- }: {
40
+ signature(params: {
45
41
  status: SignatureStatus;
46
42
  chainId?: ChainID;
47
43
  address: Address;
48
44
  message: string;
49
45
  signatureHash?: string;
50
46
  }): Promise<void>;
51
- transaction({
52
- status,
53
- chainId,
54
- address,
55
- data,
56
- to,
57
- value,
58
- transactionHash,
59
- }: {
47
+ transaction(params: {
60
48
  status: TransactionStatus;
61
49
  chainId: ChainID;
62
50
  address: Address;
@@ -65,7 +53,16 @@ interface IFormoAnalytics {
65
53
  value?: string;
66
54
  transactionHash?: string;
67
55
  }): Promise<void>;
68
- identify(params: { address: Address }): Promise<void>;
56
+ identify(
57
+ params:
58
+ | {
59
+ address: Address | null;
60
+ providerName?: string;
61
+ userId?: string;
62
+ rdns?: string;
63
+ }
64
+ | readonly EIP6963ProviderDetail[]
65
+ ): Promise<void>;
69
66
  track(action: string, payload: Record<string, any>): Promise<void>;
70
67
  }
71
68
 
@@ -76,6 +73,7 @@ export class FormoAnalytics implements IFormoAnalytics {
76
73
  private eventQueue: EventQueue;
77
74
  private anonymousId: UUID | null = null;
78
75
  private userId: string | null = null;
76
+ private eventFactory: IEventFactory;
79
77
 
80
78
  config: Config;
81
79
  currentChainId?: ChainID;
@@ -98,6 +96,8 @@ export class FormoAnalytics implements IFormoAnalytics {
98
96
  enabledLevels: options.logger?.levels || [],
99
97
  });
100
98
 
99
+ this.eventFactory = new EventFactory();
100
+
101
101
  this.eventQueue = new EventQueue(this.config.writeKey, {
102
102
  url: EVENTS_API_URL,
103
103
  flushAt: options.flushAt,
@@ -127,7 +127,7 @@ export class FormoAnalytics implements IFormoAnalytics {
127
127
 
128
128
  // Detect
129
129
  const providers = await analytics.getProviders();
130
- await analytics.detectWallets(providers);
130
+ await analytics.detects(providers);
131
131
 
132
132
  return analytics;
133
133
  }
@@ -309,27 +309,66 @@ export class FormoAnalytics implements IFormoAnalytics {
309
309
  }
310
310
 
311
311
  /**
312
- * Emits an identify event with current wallet address.
313
- * @param {Address} params.address
312
+ * Emits an detect event with current wallet provider info.
313
+ * @param {string} params.providerName
314
+ * @param {string} params.rdns
315
+ * @param {string} params.userId
316
+ * @param {string} params.address
317
+ *
314
318
  * @returns {Promise<void>}
315
319
  */
316
- public async identify({
317
- address,
318
- providerName,
319
- userId,
320
- rdns,
321
- }: {
322
- address: Address | null;
323
- providerName?: string;
324
- userId?: string;
325
- rdns?: string;
326
- }): Promise<void> {
327
- if (userId) this.userId = userId || null;
328
- await this.trackEvent(Event.IDENTIFY, {
329
- address,
330
- providerName,
331
- rdns,
332
- });
320
+ public async identify(
321
+ params:
322
+ | {
323
+ address: Address | null;
324
+ providerName?: string;
325
+ userId?: string;
326
+ rdns?: string;
327
+ }
328
+ | readonly EIP6963ProviderDetail[]
329
+ ): Promise<void> {
330
+ if (isArray(params)) {
331
+ try {
332
+ for (const eip6963ProviderDetail of params) {
333
+ if (!eip6963ProviderDetail) continue;
334
+ const accounts = await this.getAccounts(
335
+ eip6963ProviderDetail?.provider
336
+ );
337
+ // Identify with accounts
338
+ if (accounts && accounts.length > 0) {
339
+ for (const address of accounts) {
340
+ await this.identify({
341
+ address,
342
+ providerName: eip6963ProviderDetail?.info.name,
343
+ rdns: eip6963ProviderDetail?.info.rdns,
344
+ });
345
+ }
346
+ } else {
347
+ // Identify without accounts
348
+ await this.identify({
349
+ address: null,
350
+ providerName: eip6963ProviderDetail?.info.name,
351
+ rdns: eip6963ProviderDetail?.info.rdns,
352
+ });
353
+ }
354
+ }
355
+ } catch (err) {
356
+ logger.error("Error identifying all:", err);
357
+ }
358
+ } else {
359
+ const { userId, address, providerName, rdns } = params as {
360
+ address: Address | null;
361
+ providerName?: string;
362
+ userId?: string;
363
+ rdns?: string;
364
+ };
365
+ if (userId) this.userId = userId || null;
366
+ await this.trackEvent(Event.IDENTIFY, {
367
+ address,
368
+ providerName,
369
+ rdns,
370
+ });
371
+ }
333
372
  }
334
373
 
335
374
  /**
@@ -337,7 +376,7 @@ export class FormoAnalytics implements IFormoAnalytics {
337
376
  * @param {Address} params.address
338
377
  * @returns {Promise<void>}
339
378
  */
340
- private async detectWallet({
379
+ private async detect({
341
380
  providerName,
342
381
  rdns,
343
382
  }: {
@@ -346,7 +385,7 @@ export class FormoAnalytics implements IFormoAnalytics {
346
385
  }): Promise<void> {
347
386
  if (this.session.isWalletDetected(rdns))
348
387
  return logger.warn(
349
- `detectWallet: Wallet ${providerName} already detected in this session`
388
+ `detect: Wallet ${providerName} already detected in this session`
350
389
  );
351
390
 
352
391
  this.session.markWalletdetected(rdns);
@@ -646,9 +685,6 @@ export class FormoAnalytics implements IFormoAnalytics {
646
685
  }
647
686
 
648
687
  private trackPageHit(): void {
649
- const pathname = window.location.pathname;
650
- const hash = window.location.hash;
651
-
652
688
  if (!this.config.trackLocalhost && isLocalhost()) {
653
689
  return logger.warn(
654
690
  "Track page hit: Ignoring event because website is running locally"
@@ -656,31 +692,24 @@ export class FormoAnalytics implements IFormoAnalytics {
656
692
  }
657
693
 
658
694
  setTimeout(async () => {
659
- this.trackEvent(Event.PAGE, {
660
- pathname,
661
- hash,
662
- });
695
+ this.trackEvent(Event.PAGE);
663
696
  }, 300);
664
697
  }
665
698
 
666
- private async trackEvent(action: string, payload: any): Promise<void> {
699
+ private async trackEvent(action: string, payload?: any): Promise<void> {
667
700
  try {
668
701
  const address = await this.getAddress();
669
702
  const user_id = this.userId;
670
703
 
671
- if (payload?.userId) {
672
- delete payload.userId;
673
- }
674
-
675
- const requestData: RequestEvent = {
676
- anonymous_id: this.anonymousId as UUID,
704
+ const requestData = this.eventFactory.create(
705
+ this.anonymousId as UUID,
677
706
  user_id,
678
- address: address?.toLowerCase() || null,
679
- timestamp: new Date().toISOString(),
680
- action,
681
- version: "1",
682
- payload: await this.buildEventPayload(toSnakeCase(payload)),
683
- };
707
+ address,
708
+ {
709
+ action,
710
+ ...payload,
711
+ }
712
+ );
684
713
 
685
714
  await this.eventQueue.enqueue(requestData, (err, _, data) => {
686
715
  if (err) {
@@ -709,12 +738,12 @@ export class FormoAnalytics implements IFormoAnalytics {
709
738
  return providers;
710
739
  }
711
740
 
712
- private async detectWallets(
741
+ private async detects(
713
742
  providers: readonly EIP6963ProviderDetail[]
714
743
  ): Promise<void> {
715
744
  try {
716
745
  for (const eip6963ProviderDetail of providers) {
717
- await this.detectWallet({
746
+ await this.detect({
718
747
  providerName: eip6963ProviderDetail?.info.name,
719
748
  rdns: eip6963ProviderDetail?.info.rdns,
720
749
  });
@@ -724,39 +753,6 @@ export class FormoAnalytics implements IFormoAnalytics {
724
753
  }
725
754
  }
726
755
 
727
- // TODO: Refactoring => public this function as API
728
- // private async identifyAll(
729
- // providers: readonly EIP6963ProviderDetail[]
730
- // ): Promise<void> {
731
- // try {
732
- // for (const eip6963ProviderDetail of providers) {
733
- // if (!eip6963ProviderDetail) continue;
734
- // const accounts = await this.getAccounts(
735
- // eip6963ProviderDetail?.provider
736
- // );
737
- // // Identify with accounts
738
- // if (accounts && accounts.length > 0) {
739
- // for (const address of accounts) {
740
- // await this.identify({
741
- // address,
742
- // providerName: eip6963ProviderDetail?.info.name,
743
- // rdns: eip6963ProviderDetail?.info.rdns,
744
- // });
745
- // }
746
- // } else {
747
- // // Identify without accounts
748
- // await this.identify({
749
- // address: null,
750
- // providerName: eip6963ProviderDetail?.info.name,
751
- // rdns: eip6963ProviderDetail?.info.rdns,
752
- // });
753
- // }
754
- // }
755
- // } catch (err) {
756
- // logger.error("Error identifying all:", err);
757
- // }
758
- // }
759
-
760
756
  get provider(): EIP1193Provider | undefined {
761
757
  return this._provider;
762
758
  }
@@ -800,7 +796,7 @@ export class FormoAnalytics implements IFormoAnalytics {
800
796
  method: "eth_accounts",
801
797
  });
802
798
  if (!res || res.length === 0) return null;
803
- return res.filter(isAddress);
799
+ return res.filter((e) => isAddress(e));
804
800
  } catch (err) {
805
801
  if ((err as any).code !== 4001) {
806
802
  logger.error(
@@ -833,58 +829,6 @@ export class FormoAnalytics implements IFormoAnalytics {
833
829
  }
834
830
  }
835
831
 
836
- private getLocation(): string | undefined {
837
- try {
838
- const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
839
- if (timezone in COUNTRY_LIST)
840
- return COUNTRY_LIST[timezone as keyof typeof COUNTRY_LIST];
841
- return timezone;
842
- } catch (error) {
843
- logger.error("Error resolving timezone:", error);
844
- return "";
845
- }
846
- }
847
-
848
- private getLanguage(): string {
849
- try {
850
- return (
851
- (navigator.languages && navigator.languages.length
852
- ? navigator.languages[0]
853
- : navigator.language) || "en"
854
- );
855
- } catch (error) {
856
- logger.error("Error resolving language:", error);
857
- return "en";
858
- }
859
- }
860
-
861
- // Adds browser properties to the user-supplied payload
862
- private async buildEventPayload(
863
- eventSpecificPayload: Record<string, unknown> = {}
864
- ): Promise<Record<string, unknown>> {
865
- const url = new URL(window.location.href);
866
- const params = new URLSearchParams(url.search);
867
-
868
- const location = this.getLocation();
869
- const language = this.getLanguage();
870
-
871
- // common browser properties
872
- return {
873
- "user-agent": window.navigator.userAgent,
874
- href: url.href,
875
- locale: language,
876
- location,
877
- referrer: document.referrer,
878
- utm_source: params.get("utm_source")?.trim() || "",
879
- utm_medium: params.get("utm_medium")?.trim() || "",
880
- utm_campaign: params.get("utm_campaign")?.trim() || "",
881
- utm_content: params.get("utm_content")?.trim() || "",
882
- utm_term: params.get("utm_term")?.trim() || "",
883
- ref: params.get("ref")?.trim() || "",
884
- ...eventSpecificPayload,
885
- };
886
- }
887
-
888
832
  private buildSignatureEventPayload(
889
833
  method: string,
890
834
  params: unknown[],
@@ -60,11 +60,11 @@ const InitializedAnalytics = ({
60
60
  );
61
61
  };
62
62
 
63
- export const useFormoAnalytics = () => {
63
+ export const useFormo = () => {
64
64
  const context = useContext(FormoAnalyticsContext);
65
65
 
66
66
  if (!context) {
67
- logger.warn("useFormoAnalytics called without a valid context");
67
+ logger.warn("useFormo called without a valid context");
68
68
  }
69
69
 
70
70
  return context; // Return undefined if SDK is not initialized, handle accordingly in consumer
@@ -657,4 +657,4 @@ export const COUNTRY_LIST = {
657
657
  WET: "WET",
658
658
  // Zulu
659
659
  Zulu: "Zulu",
660
- };
660
+ } as const;
@@ -1,4 +1,3 @@
1
1
  export * from "./base";
2
2
  export * from "./config";
3
3
  export * from "./events";
4
- export * from "./regex";
package/src/global.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  declare global {
2
2
  interface Window {
3
3
  __nightmare?: boolean;
4
- Cypress?: any;
5
- ethereum?: EIP1193Provider
4
+ Cypress?: any;
5
+ ethereum?: EIP1193Provider;
6
6
  web3?: {
7
- currentProvider?: EIP1193Provider
8
- }
7
+ currentProvider?: EIP1193Provider;
8
+ };
9
9
  }
10
10
  }
11
11