@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.
- package/dist/cjs/src/FormoAnalytics.d.ts +20 -14
- package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/cjs/src/FormoAnalytics.js +105 -136
- 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 +20 -14
- package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/esm/src/FormoAnalytics.js +102 -133
- 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 +106 -162
- 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,
|
|
@@ -127,7 +127,7 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
127
127
|
|
|
128
128
|
// Detect
|
|
129
129
|
const providers = await analytics.getProviders();
|
|
130
|
-
await analytics.
|
|
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
|
|
313
|
-
* @param {
|
|
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
|
-
|
|
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
|
/**
|
|
@@ -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
|
|
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
|
-
`
|
|
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
|
|
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
|
-
|
|
672
|
-
|
|
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
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
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
|
|
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.
|
|
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
|
|
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
|
|