@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.
- package/dist/cjs/src/FormoAnalytics.d.ts +17 -11
- package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/cjs/src/FormoAnalytics.js +99 -127
- package/dist/cjs/src/FormoAnalytics.js.map +1 -1
- package/dist/cjs/src/FormoAnalyticsProvider.d.ts +1 -1
- package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +1 -1
- package/dist/cjs/src/FormoAnalyticsProvider.js +4 -4
- package/dist/cjs/src/FormoAnalyticsProvider.js.map +1 -1
- package/dist/cjs/src/constants/config.d.ts +597 -597
- package/dist/cjs/src/constants/config.d.ts.map +1 -1
- package/dist/cjs/src/constants/config.js.map +1 -1
- package/dist/cjs/src/constants/index.d.ts +0 -1
- package/dist/cjs/src/constants/index.d.ts.map +1 -1
- package/dist/cjs/src/constants/index.js +0 -1
- package/dist/cjs/src/constants/index.js.map +1 -1
- package/dist/cjs/src/lib/event/EventFactory.d.ts +62 -0
- package/dist/cjs/src/lib/event/EventFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/event/EventFactory.js +188 -0
- package/dist/cjs/src/lib/event/EventFactory.js.map +1 -0
- package/dist/cjs/src/lib/event/index.d.ts +3 -0
- package/dist/cjs/src/lib/event/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/event/index.js +19 -0
- package/dist/cjs/src/lib/event/index.js.map +1 -0
- package/dist/cjs/src/lib/event/type.d.ts +6 -0
- package/dist/cjs/src/lib/event/type.d.ts.map +1 -0
- package/dist/cjs/src/lib/event/type.js +3 -0
- package/dist/cjs/src/lib/event/type.js.map +1 -0
- package/dist/cjs/src/lib/index.d.ts +1 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -1
- package/dist/cjs/src/lib/index.js +1 -0
- package/dist/cjs/src/lib/index.js.map +1 -1
- package/dist/cjs/src/lib/{logger.d.ts → logger/Logger.d.ts} +5 -5
- package/dist/cjs/src/lib/logger/Logger.d.ts.map +1 -0
- package/dist/cjs/src/lib/{logger.js → logger/Logger.js} +1 -1
- package/dist/cjs/src/lib/logger/Logger.js.map +1 -0
- package/dist/cjs/src/lib/logger/index.d.ts +3 -0
- package/dist/cjs/src/lib/logger/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/logger/index.js +19 -0
- package/dist/cjs/src/lib/logger/index.js.map +1 -0
- package/dist/cjs/src/lib/logger/type.d.ts +14 -0
- package/dist/cjs/src/lib/logger/type.d.ts.map +1 -0
- package/dist/cjs/src/lib/logger/type.js +3 -0
- package/dist/cjs/src/lib/logger/type.js.map +1 -0
- package/dist/{esm/src/lib/queue.d.ts → cjs/src/lib/queue/EventQueue.d.ts} +5 -4
- package/dist/cjs/src/lib/queue/EventQueue.d.ts.map +1 -0
- package/dist/cjs/src/lib/{queue.js → queue/EventQueue.js} +9 -6
- package/dist/cjs/src/lib/queue/EventQueue.js.map +1 -0
- package/dist/cjs/src/lib/queue/index.d.ts +3 -0
- package/dist/cjs/src/lib/queue/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/queue/index.js +19 -0
- package/dist/cjs/src/lib/queue/index.js.map +1 -0
- package/dist/cjs/src/lib/queue/type.d.ts +6 -0
- package/dist/cjs/src/lib/queue/type.d.ts.map +1 -0
- package/dist/cjs/src/lib/queue/type.js +3 -0
- package/dist/cjs/src/lib/queue/type.js.map +1 -0
- package/dist/cjs/src/types/base.d.ts +1 -0
- package/dist/cjs/src/types/base.d.ts.map +1 -1
- package/dist/cjs/src/types/events.d.ts +44 -2
- package/dist/cjs/src/types/events.d.ts.map +1 -1
- package/dist/cjs/src/types/events.js.map +1 -1
- package/dist/cjs/src/utils/address.d.ts +3 -0
- package/dist/cjs/src/utils/address.d.ts.map +1 -0
- package/dist/cjs/src/utils/address.js +32 -0
- package/dist/cjs/src/utils/address.js.map +1 -0
- package/dist/cjs/src/utils/base.d.ts +0 -7
- package/dist/cjs/src/utils/base.d.ts.map +1 -1
- package/dist/cjs/src/utils/base.js +1 -106
- package/dist/cjs/src/utils/base.js.map +1 -1
- package/dist/cjs/src/utils/converter.d.ts +5 -0
- package/dist/cjs/src/utils/converter.d.ts.map +1 -0
- package/dist/cjs/src/utils/converter.js +52 -0
- package/dist/cjs/src/utils/converter.js.map +1 -0
- package/dist/cjs/src/utils/generate.d.ts +4 -0
- package/dist/cjs/src/utils/generate.d.ts.map +1 -0
- package/dist/cjs/src/utils/generate.js +60 -0
- package/dist/cjs/src/utils/generate.js.map +1 -0
- package/dist/cjs/src/utils/index.d.ts +3 -1
- package/dist/cjs/src/utils/index.d.ts.map +1 -1
- package/dist/cjs/src/utils/index.js +3 -1
- package/dist/cjs/src/utils/index.js.map +1 -1
- package/dist/cjs/src/validators/address.d.ts +5 -0
- package/dist/cjs/src/validators/address.d.ts.map +1 -0
- package/dist/cjs/src/validators/address.js +64 -0
- package/dist/cjs/src/validators/address.js.map +1 -0
- package/dist/cjs/src/validators/agent.d.ts +2 -0
- package/dist/cjs/src/validators/agent.d.ts.map +1 -0
- package/dist/cjs/src/{utils/is.js → validators/agent.js} +2 -5
- package/dist/cjs/src/validators/agent.js.map +1 -0
- package/dist/cjs/src/validators/index.d.ts +7 -0
- package/dist/cjs/src/validators/index.d.ts.map +1 -0
- package/dist/cjs/src/validators/index.js +23 -0
- package/dist/cjs/src/validators/index.js.map +1 -0
- package/dist/cjs/src/validators/object.d.ts +2 -0
- package/dist/cjs/src/validators/object.d.ts.map +1 -0
- package/dist/cjs/src/validators/object.js +10 -0
- package/dist/cjs/src/validators/object.js.map +1 -0
- package/dist/cjs/src/validators/string.d.ts +3 -0
- package/dist/cjs/src/validators/string.d.ts.map +1 -0
- package/dist/cjs/src/validators/string.js +8 -0
- package/dist/cjs/src/validators/string.js.map +1 -0
- package/dist/cjs/src/validators/type-check.d.ts +14 -0
- package/dist/cjs/src/validators/type-check.d.ts.map +1 -0
- package/dist/cjs/src/validators/type-check.js +61 -0
- package/dist/cjs/src/validators/type-check.js.map +1 -0
- package/dist/cjs/src/validators/uint8array.d.ts +3 -0
- package/dist/cjs/src/validators/uint8array.d.ts.map +1 -0
- package/dist/cjs/src/validators/uint8array.js +21 -0
- package/dist/cjs/src/validators/uint8array.js.map +1 -0
- package/dist/cjs/test/lib.spec.js +9 -2
- package/dist/cjs/test/lib.spec.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/src/FormoAnalytics.d.ts +17 -11
- package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/esm/src/FormoAnalytics.js +96 -124
- package/dist/esm/src/FormoAnalytics.js.map +1 -1
- package/dist/esm/src/FormoAnalyticsProvider.d.ts +1 -1
- package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +1 -1
- package/dist/esm/src/FormoAnalyticsProvider.js +2 -2
- package/dist/esm/src/FormoAnalyticsProvider.js.map +1 -1
- package/dist/esm/src/constants/config.d.ts +597 -597
- package/dist/esm/src/constants/config.d.ts.map +1 -1
- package/dist/esm/src/constants/config.js.map +1 -1
- package/dist/esm/src/constants/index.d.ts +0 -1
- package/dist/esm/src/constants/index.d.ts.map +1 -1
- package/dist/esm/src/constants/index.js +0 -1
- package/dist/esm/src/constants/index.js.map +1 -1
- package/dist/esm/src/lib/event/EventFactory.d.ts +62 -0
- package/dist/esm/src/lib/event/EventFactory.d.ts.map +1 -0
- package/dist/esm/src/lib/event/EventFactory.js +185 -0
- package/dist/esm/src/lib/event/EventFactory.js.map +1 -0
- package/dist/esm/src/lib/event/index.d.ts +3 -0
- package/dist/esm/src/lib/event/index.d.ts.map +1 -0
- package/dist/esm/src/lib/event/index.js +3 -0
- package/dist/esm/src/lib/event/index.js.map +1 -0
- package/dist/esm/src/lib/event/type.d.ts +6 -0
- package/dist/esm/src/lib/event/type.d.ts.map +1 -0
- package/dist/esm/src/lib/event/type.js +2 -0
- package/dist/esm/src/lib/event/type.js.map +1 -0
- package/dist/esm/src/lib/fetch.d.ts +1 -1
- package/dist/esm/src/lib/index.d.ts +1 -0
- package/dist/esm/src/lib/index.d.ts.map +1 -1
- package/dist/esm/src/lib/index.js +1 -0
- package/dist/esm/src/lib/index.js.map +1 -1
- package/dist/esm/src/lib/{logger.d.ts → logger/Logger.d.ts} +5 -5
- package/dist/esm/src/lib/logger/Logger.d.ts.map +1 -0
- package/dist/esm/src/lib/{logger.js → logger/Logger.js} +1 -1
- package/dist/esm/src/lib/logger/Logger.js.map +1 -0
- package/dist/esm/src/lib/logger/index.d.ts +3 -0
- package/dist/esm/src/lib/logger/index.d.ts.map +1 -0
- package/dist/esm/src/lib/logger/index.js +3 -0
- package/dist/esm/src/lib/logger/index.js.map +1 -0
- package/dist/esm/src/lib/logger/type.d.ts +14 -0
- package/dist/esm/src/lib/logger/type.d.ts.map +1 -0
- package/dist/esm/src/lib/logger/type.js +2 -0
- package/dist/esm/src/lib/logger/type.js.map +1 -0
- package/dist/{cjs/src/lib/queue.d.ts → esm/src/lib/queue/EventQueue.d.ts} +5 -4
- package/dist/esm/src/lib/queue/EventQueue.d.ts.map +1 -0
- package/dist/esm/src/lib/{queue.js → queue/EventQueue.js} +9 -6
- package/dist/esm/src/lib/queue/EventQueue.js.map +1 -0
- package/dist/esm/src/lib/queue/index.d.ts +3 -0
- package/dist/esm/src/lib/queue/index.d.ts.map +1 -0
- package/dist/esm/src/lib/queue/index.js +3 -0
- package/dist/esm/src/lib/queue/index.js.map +1 -0
- package/dist/esm/src/lib/queue/type.d.ts +6 -0
- package/dist/esm/src/lib/queue/type.d.ts.map +1 -0
- package/dist/esm/src/lib/queue/type.js +2 -0
- package/dist/esm/src/lib/queue/type.js.map +1 -0
- package/dist/esm/src/types/base.d.ts +1 -0
- package/dist/esm/src/types/base.d.ts.map +1 -1
- package/dist/esm/src/types/events.d.ts +44 -2
- package/dist/esm/src/types/events.d.ts.map +1 -1
- package/dist/esm/src/types/events.js.map +1 -1
- package/dist/esm/src/utils/address.d.ts +3 -0
- package/dist/esm/src/utils/address.d.ts.map +1 -0
- package/dist/esm/src/utils/address.js +28 -0
- package/dist/esm/src/utils/address.js.map +1 -0
- package/dist/esm/src/utils/base.d.ts +0 -7
- package/dist/esm/src/utils/base.d.ts.map +1 -1
- package/dist/esm/src/utils/base.js +0 -99
- package/dist/esm/src/utils/base.js.map +1 -1
- package/dist/esm/src/utils/converter.d.ts +5 -0
- package/dist/esm/src/utils/converter.d.ts.map +1 -0
- package/dist/esm/src/utils/converter.js +45 -0
- package/dist/esm/src/utils/converter.js.map +1 -0
- package/dist/esm/src/utils/generate.d.ts +4 -0
- package/dist/esm/src/utils/generate.d.ts.map +1 -0
- package/dist/esm/src/utils/generate.js +56 -0
- package/dist/esm/src/utils/generate.js.map +1 -0
- package/dist/esm/src/utils/index.d.ts +3 -1
- package/dist/esm/src/utils/index.d.ts.map +1 -1
- package/dist/esm/src/utils/index.js +3 -1
- package/dist/esm/src/utils/index.js.map +1 -1
- package/dist/esm/src/validators/address.d.ts +5 -0
- package/dist/esm/src/validators/address.d.ts.map +1 -0
- package/dist/esm/src/validators/address.js +58 -0
- package/dist/esm/src/validators/address.js.map +1 -0
- package/dist/esm/src/validators/agent.d.ts +2 -0
- package/dist/esm/src/validators/agent.d.ts.map +1 -0
- package/dist/esm/src/{utils/is.js → validators/agent.js} +1 -3
- package/dist/esm/src/validators/agent.js.map +1 -0
- package/dist/esm/src/validators/index.d.ts +7 -0
- package/dist/esm/src/validators/index.d.ts.map +1 -0
- package/dist/esm/src/validators/index.js +7 -0
- package/dist/esm/src/validators/index.js.map +1 -0
- package/dist/esm/src/validators/object.d.ts +2 -0
- package/dist/esm/src/validators/object.d.ts.map +1 -0
- package/dist/esm/src/validators/object.js +6 -0
- package/dist/esm/src/validators/object.js.map +1 -0
- package/dist/esm/src/validators/string.d.ts +3 -0
- package/dist/esm/src/validators/string.d.ts.map +1 -0
- package/dist/esm/src/validators/string.js +4 -0
- package/dist/esm/src/validators/string.js.map +1 -0
- package/dist/esm/src/validators/type-check.d.ts +14 -0
- package/dist/esm/src/validators/type-check.d.ts.map +1 -0
- package/dist/esm/src/validators/type-check.js +46 -0
- package/dist/esm/src/validators/type-check.js.map +1 -0
- package/dist/esm/src/validators/uint8array.d.ts +3 -0
- package/dist/esm/src/validators/uint8array.d.ts.map +1 -0
- package/dist/esm/src/validators/uint8array.js +17 -0
- package/dist/esm/src/validators/uint8array.js.map +1 -0
- package/dist/esm/test/lib.spec.js +8 -1
- package/dist/esm/test/lib.spec.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.LICENSE.txt +4 -0
- package/dist/index.umd.min.js.map +1 -1
- package/package.json +14 -3
- package/src/FormoAnalytics.ts +99 -151
- package/src/FormoAnalyticsProvider.tsx +2 -2
- package/src/constants/config.ts +1 -1
- package/src/constants/index.ts +0 -1
- package/src/global.d.ts +4 -4
- package/src/lib/event/EventFactory.ts +263 -0
- package/src/lib/event/index.ts +2 -0
- package/src/lib/event/type.ts +11 -0
- package/src/lib/index.ts +1 -0
- package/src/lib/{logger.ts → logger/Logger.ts} +4 -4
- package/src/lib/logger/index.ts +2 -0
- package/src/lib/logger/type.ts +14 -0
- package/src/lib/{queue.ts → queue/EventQueue.ts} +13 -9
- package/src/lib/queue/index.ts +2 -0
- package/src/lib/queue/type.ts +6 -0
- package/src/types/base.ts +2 -0
- package/src/types/events.ts +53 -2
- package/src/utils/address.ts +43 -0
- package/src/utils/base.ts +0 -62
- package/src/utils/converter.ts +44 -0
- package/src/utils/generate.ts +16 -0
- package/src/utils/index.ts +3 -1
- package/src/validators/address.ts +69 -0
- package/src/{utils/is.ts → validators/agent.ts} +0 -4
- package/src/validators/index.ts +6 -0
- package/src/validators/object.ts +4 -0
- package/src/validators/string.ts +4 -0
- package/src/validators/type-check.ts +61 -0
- package/src/validators/uint8array.ts +17 -0
- package/test/lib.spec.ts +13 -1
- package/webpack.config.ts +12 -12
- package/dist/cjs/src/constants/regex.d.ts +0 -4
- package/dist/cjs/src/constants/regex.d.ts.map +0 -1
- package/dist/cjs/src/constants/regex.js +0 -7
- package/dist/cjs/src/constants/regex.js.map +0 -1
- package/dist/cjs/src/lib/logger.d.ts.map +0 -1
- package/dist/cjs/src/lib/logger.js.map +0 -1
- package/dist/cjs/src/lib/queue.d.ts.map +0 -1
- package/dist/cjs/src/lib/queue.js.map +0 -1
- package/dist/cjs/src/utils/is.d.ts +0 -3
- package/dist/cjs/src/utils/is.d.ts.map +0 -1
- package/dist/cjs/src/utils/is.js.map +0 -1
- package/dist/esm/src/constants/regex.d.ts +0 -4
- package/dist/esm/src/constants/regex.d.ts.map +0 -1
- package/dist/esm/src/constants/regex.js +0 -4
- package/dist/esm/src/constants/regex.js.map +0 -1
- package/dist/esm/src/lib/logger.d.ts.map +0 -1
- package/dist/esm/src/lib/logger.js.map +0 -1
- package/dist/esm/src/lib/queue.d.ts.map +0 -1
- package/dist/esm/src/lib/queue.js.map +0 -1
- package/dist/esm/src/utils/is.d.ts +0 -3
- package/dist/esm/src/utils/is.d.ts.map +0 -1
- package/dist/esm/src/utils/is.js.map +0 -1
- 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.
|
|
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"
|
package/src/FormoAnalytics.ts
CHANGED
|
@@ -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
|
-
|
|
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 {
|
|
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(
|
|
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 {
|
|
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
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
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
|
|
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
|
|
672
|
-
|
|
704
|
+
const requestData = this.eventFactory.create(
|
|
705
|
+
this.anonymousId as UUID,
|
|
673
706
|
user_id,
|
|
674
707
|
address,
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
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
|
|
63
|
+
export const useFormo = () => {
|
|
64
64
|
const context = useContext(FormoAnalyticsContext);
|
|
65
65
|
|
|
66
66
|
if (!context) {
|
|
67
|
-
logger.warn("
|
|
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
|
package/src/constants/config.ts
CHANGED
package/src/constants/index.ts
CHANGED
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
|
|