@formo/analytics 1.16.1 → 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 +17 -11
  2. package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
  3. package/dist/cjs/src/FormoAnalytics.js +99 -127
  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 +17 -11
  113. package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
  114. package/dist/esm/src/FormoAnalytics.js +96 -124
  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 +99 -151
  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.1",
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,
@@ -310,26 +310,65 @@ export class FormoAnalytics implements IFormoAnalytics {
310
310
 
311
311
  /**
312
312
  * Emits an detect event with current wallet provider info.
313
- * @param {Address} params.address
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
  /**
@@ -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,27 +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
- const requestData: RequestEvent = {
672
- anonymous_id: this.anonymousId as UUID,
704
+ const requestData = this.eventFactory.create(
705
+ this.anonymousId as UUID,
673
706
  user_id,
674
707
  address,
675
- timestamp: new Date().toISOString(),
676
- action,
677
- version: "1",
678
- payload: await this.buildEventPayload(toSnakeCase(payload)),
679
- };
708
+ {
709
+ action,
710
+ ...payload,
711
+ }
712
+ );
680
713
 
681
714
  await this.eventQueue.enqueue(requestData, (err, _, data) => {
682
715
  if (err) {
@@ -720,39 +753,6 @@ export class FormoAnalytics implements IFormoAnalytics {
720
753
  }
721
754
  }
722
755
 
723
- // TODO: Refactoring => public this function as API
724
- // private async identifyAll(
725
- // providers: readonly EIP6963ProviderDetail[]
726
- // ): Promise<void> {
727
- // try {
728
- // for (const eip6963ProviderDetail of providers) {
729
- // if (!eip6963ProviderDetail) continue;
730
- // const accounts = await this.getAccounts(
731
- // eip6963ProviderDetail?.provider
732
- // );
733
- // // Identify with accounts
734
- // if (accounts && accounts.length > 0) {
735
- // for (const address of accounts) {
736
- // await this.identify({
737
- // address,
738
- // providerName: eip6963ProviderDetail?.info.name,
739
- // rdns: eip6963ProviderDetail?.info.rdns,
740
- // });
741
- // }
742
- // } else {
743
- // // Identify without accounts
744
- // await this.identify({
745
- // address: null,
746
- // providerName: eip6963ProviderDetail?.info.name,
747
- // rdns: eip6963ProviderDetail?.info.rdns,
748
- // });
749
- // }
750
- // }
751
- // } catch (err) {
752
- // logger.error("Error identifying all:", err);
753
- // }
754
- // }
755
-
756
756
  get provider(): EIP1193Provider | undefined {
757
757
  return this._provider;
758
758
  }
@@ -796,7 +796,7 @@ export class FormoAnalytics implements IFormoAnalytics {
796
796
  method: "eth_accounts",
797
797
  });
798
798
  if (!res || res.length === 0) return null;
799
- return res.filter(isAddress);
799
+ return res.filter((e) => isAddress(e));
800
800
  } catch (err) {
801
801
  if ((err as any).code !== 4001) {
802
802
  logger.error(
@@ -829,58 +829,6 @@ export class FormoAnalytics implements IFormoAnalytics {
829
829
  }
830
830
  }
831
831
 
832
- private getLocation(): string | undefined {
833
- try {
834
- const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
835
- if (timezone in COUNTRY_LIST)
836
- return COUNTRY_LIST[timezone as keyof typeof COUNTRY_LIST];
837
- return timezone;
838
- } catch (error) {
839
- logger.error("Error resolving timezone:", error);
840
- return "";
841
- }
842
- }
843
-
844
- private getLanguage(): string {
845
- try {
846
- return (
847
- (navigator.languages && navigator.languages.length
848
- ? navigator.languages[0]
849
- : navigator.language) || "en"
850
- );
851
- } catch (error) {
852
- logger.error("Error resolving language:", error);
853
- return "en";
854
- }
855
- }
856
-
857
- // Adds browser properties to the user-supplied payload
858
- private async buildEventPayload(
859
- eventSpecificPayload: Record<string, unknown> = {}
860
- ): Promise<Record<string, unknown>> {
861
- const url = new URL(window.location.href);
862
- const params = new URLSearchParams(url.search);
863
-
864
- const location = this.getLocation();
865
- const language = this.getLanguage();
866
-
867
- // common browser properties
868
- return {
869
- "user-agent": window.navigator.userAgent,
870
- href: url.href,
871
- locale: language,
872
- location,
873
- referrer: document.referrer,
874
- utm_source: params.get("utm_source")?.trim() || "",
875
- utm_medium: params.get("utm_medium")?.trim() || "",
876
- utm_campaign: params.get("utm_campaign")?.trim() || "",
877
- utm_content: params.get("utm_content")?.trim() || "",
878
- utm_term: params.get("utm_term")?.trim() || "",
879
- ref: params.get("ref")?.trim() || "",
880
- ...eventSpecificPayload,
881
- };
882
- }
883
-
884
832
  private buildSignatureEventPayload(
885
833
  method: string,
886
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