@formo/analytics 1.19.3 → 1.19.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/cjs/src/FormoAnalytics.js +42 -25
- package/dist/cjs/src/lib/event/EventFactory.js +11 -4
- package/dist/cjs/src/lib/version.d.ts +1 -1
- package/dist/cjs/src/lib/version.js +1 -1
- package/dist/cjs/src/utils/address.d.ts +19 -0
- package/dist/cjs/src/utils/address.js +37 -1
- package/dist/esm/src/FormoAnalytics.js +39 -22
- package/dist/esm/src/lib/event/EventFactory.js +11 -4
- package/dist/esm/src/lib/version.d.ts +1 -1
- package/dist/esm/src/lib/version.js +1 -1
- package/dist/esm/src/utils/address.d.ts +19 -0
- package/dist/esm/src/utils/address.js +34 -0
- package/dist/index.umd.min.js +1 -1
- package/package.json +8 -4
- package/dist/cjs/src/FormoAnalytics.d.ts.map +0 -1
- package/dist/cjs/src/FormoAnalytics.js.map +0 -1
- package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +0 -1
- package/dist/cjs/src/FormoAnalyticsProvider.js.map +0 -1
- package/dist/cjs/src/constants/base.d.ts.map +0 -1
- package/dist/cjs/src/constants/base.js.map +0 -1
- package/dist/cjs/src/constants/config.d.ts.map +0 -1
- package/dist/cjs/src/constants/config.js.map +0 -1
- package/dist/cjs/src/constants/events.d.ts.map +0 -1
- package/dist/cjs/src/constants/events.js.map +0 -1
- package/dist/cjs/src/constants/index.d.ts.map +0 -1
- package/dist/cjs/src/constants/index.js.map +0 -1
- package/dist/cjs/src/index.d.ts.map +0 -1
- package/dist/cjs/src/index.js.map +0 -1
- package/dist/cjs/src/initialization.d.ts.map +0 -1
- package/dist/cjs/src/initialization.js.map +0 -1
- package/dist/cjs/src/lib/event/EventFactory.d.ts.map +0 -1
- package/dist/cjs/src/lib/event/EventFactory.js.map +0 -1
- package/dist/cjs/src/lib/event/EventManager.d.ts.map +0 -1
- package/dist/cjs/src/lib/event/EventManager.js.map +0 -1
- package/dist/cjs/src/lib/event/constants.d.ts.map +0 -1
- package/dist/cjs/src/lib/event/constants.js.map +0 -1
- package/dist/cjs/src/lib/event/index.d.ts.map +0 -1
- package/dist/cjs/src/lib/event/index.js.map +0 -1
- package/dist/cjs/src/lib/event/type.d.ts.map +0 -1
- package/dist/cjs/src/lib/event/type.js.map +0 -1
- package/dist/cjs/src/lib/event/utils.d.ts.map +0 -1
- package/dist/cjs/src/lib/event/utils.js.map +0 -1
- package/dist/cjs/src/lib/fetch.d.ts.map +0 -1
- package/dist/cjs/src/lib/fetch.js.map +0 -1
- package/dist/cjs/src/lib/index.d.ts.map +0 -1
- package/dist/cjs/src/lib/index.js.map +0 -1
- package/dist/cjs/src/lib/logger/Logger.d.ts.map +0 -1
- package/dist/cjs/src/lib/logger/Logger.js.map +0 -1
- package/dist/cjs/src/lib/logger/index.d.ts.map +0 -1
- package/dist/cjs/src/lib/logger/index.js.map +0 -1
- package/dist/cjs/src/lib/logger/type.d.ts.map +0 -1
- package/dist/cjs/src/lib/logger/type.js.map +0 -1
- package/dist/cjs/src/lib/queue/EventQueue.d.ts.map +0 -1
- package/dist/cjs/src/lib/queue/EventQueue.js.map +0 -1
- package/dist/cjs/src/lib/queue/index.d.ts.map +0 -1
- package/dist/cjs/src/lib/queue/index.js.map +0 -1
- package/dist/cjs/src/lib/queue/type.d.ts.map +0 -1
- package/dist/cjs/src/lib/queue/type.js.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_curry1.d.ts.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_curry1.js.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_curry2.d.ts.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_curry2.js.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_curry3.d.ts.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_curry3.js.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_has.d.ts.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_has.js.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_isObject.d.ts.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_isObject.js.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_isPlaceholder.d.ts.map +0 -1
- package/dist/cjs/src/lib/ramda/internal/_isPlaceholder.js.map +0 -1
- package/dist/cjs/src/lib/ramda/mergeDeepRight.d.ts.map +0 -1
- package/dist/cjs/src/lib/ramda/mergeDeepRight.js.map +0 -1
- package/dist/cjs/src/lib/ramda/mergeDeepWithKey.d.ts.map +0 -1
- package/dist/cjs/src/lib/ramda/mergeDeepWithKey.js.map +0 -1
- package/dist/cjs/src/lib/ramda/mergeWithKey.d.ts.map +0 -1
- package/dist/cjs/src/lib/ramda/mergeWithKey.js.map +0 -1
- package/dist/cjs/src/lib/storage/StorageManager.d.ts.map +0 -1
- package/dist/cjs/src/lib/storage/StorageManager.js.map +0 -1
- package/dist/cjs/src/lib/storage/built-in/blueprint.d.ts.map +0 -1
- package/dist/cjs/src/lib/storage/built-in/blueprint.js.map +0 -1
- package/dist/cjs/src/lib/storage/built-in/cookie.d.ts.map +0 -1
- package/dist/cjs/src/lib/storage/built-in/cookie.js.map +0 -1
- package/dist/cjs/src/lib/storage/built-in/memory.d.ts.map +0 -1
- package/dist/cjs/src/lib/storage/built-in/memory.js.map +0 -1
- package/dist/cjs/src/lib/storage/built-in/web.d.ts.map +0 -1
- package/dist/cjs/src/lib/storage/built-in/web.js.map +0 -1
- package/dist/cjs/src/lib/storage/constant.d.ts.map +0 -1
- package/dist/cjs/src/lib/storage/constant.js.map +0 -1
- package/dist/cjs/src/lib/storage/index.d.ts.map +0 -1
- package/dist/cjs/src/lib/storage/index.js.map +0 -1
- package/dist/cjs/src/lib/storage/type.d.ts.map +0 -1
- package/dist/cjs/src/lib/storage/type.js.map +0 -1
- package/dist/cjs/src/lib/version.d.ts.map +0 -1
- package/dist/cjs/src/lib/version.js.map +0 -1
- package/dist/cjs/src/types/base.d.ts.map +0 -1
- package/dist/cjs/src/types/base.js.map +0 -1
- package/dist/cjs/src/types/events.d.ts.map +0 -1
- package/dist/cjs/src/types/events.js.map +0 -1
- package/dist/cjs/src/types/index.d.ts.map +0 -1
- package/dist/cjs/src/types/index.js.map +0 -1
- package/dist/cjs/src/types/provider.d.ts.map +0 -1
- package/dist/cjs/src/types/provider.js.map +0 -1
- package/dist/cjs/src/utils/address.d.ts.map +0 -1
- package/dist/cjs/src/utils/address.js.map +0 -1
- package/dist/cjs/src/utils/base.d.ts.map +0 -1
- package/dist/cjs/src/utils/base.js.map +0 -1
- package/dist/cjs/src/utils/chain.d.ts.map +0 -1
- package/dist/cjs/src/utils/chain.js.map +0 -1
- package/dist/cjs/src/utils/converter.d.ts.map +0 -1
- package/dist/cjs/src/utils/converter.js.map +0 -1
- package/dist/cjs/src/utils/generate.d.ts.map +0 -1
- package/dist/cjs/src/utils/generate.js.map +0 -1
- package/dist/cjs/src/utils/index.d.ts.map +0 -1
- package/dist/cjs/src/utils/index.js.map +0 -1
- package/dist/cjs/src/utils/timestamp.d.ts.map +0 -1
- package/dist/cjs/src/utils/timestamp.js.map +0 -1
- package/dist/cjs/src/validators/address.d.ts.map +0 -1
- package/dist/cjs/src/validators/address.js.map +0 -1
- package/dist/cjs/src/validators/agent.d.ts.map +0 -1
- package/dist/cjs/src/validators/agent.js.map +0 -1
- package/dist/cjs/src/validators/checks.d.ts.map +0 -1
- package/dist/cjs/src/validators/checks.js.map +0 -1
- package/dist/cjs/src/validators/index.d.ts.map +0 -1
- package/dist/cjs/src/validators/index.js.map +0 -1
- package/dist/cjs/src/validators/network.d.ts.map +0 -1
- package/dist/cjs/src/validators/network.js.map +0 -1
- package/dist/cjs/src/validators/object.d.ts.map +0 -1
- package/dist/cjs/src/validators/object.js.map +0 -1
- package/dist/cjs/src/validators/string.d.ts.map +0 -1
- package/dist/cjs/src/validators/string.js.map +0 -1
- package/dist/cjs/src/validators/uint8array.d.ts.map +0 -1
- package/dist/cjs/src/validators/uint8array.js.map +0 -1
- package/dist/cjs/test/lib/events.spec.d.ts +0 -2
- package/dist/cjs/test/lib/events.spec.d.ts.map +0 -1
- package/dist/cjs/test/lib/events.spec.js +0 -14
- package/dist/cjs/test/lib/events.spec.js.map +0 -1
- package/dist/cjs/test/utils/address.spec.d.ts +0 -2
- package/dist/cjs/test/utils/address.spec.d.ts.map +0 -1
- package/dist/cjs/test/utils/address.spec.js +0 -40
- package/dist/cjs/test/utils/address.spec.js.map +0 -1
- package/dist/cjs/test/utils/converter.spec.d.ts +0 -2
- package/dist/cjs/test/utils/converter.spec.d.ts.map +0 -1
- package/dist/cjs/test/utils/converter.spec.js +0 -25
- package/dist/cjs/test/utils/converter.spec.js.map +0 -1
- package/dist/cjs/test/validators/address.spec.d.ts +0 -2
- package/dist/cjs/test/validators/address.spec.d.ts.map +0 -1
- package/dist/cjs/test/validators/address.spec.js +0 -14
- package/dist/cjs/test/validators/address.spec.js.map +0 -1
- package/dist/cjs/tsconfig.tsbuildinfo +0 -1
- package/dist/esm/src/FormoAnalytics.d.ts.map +0 -1
- package/dist/esm/src/FormoAnalytics.js.map +0 -1
- package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +0 -1
- package/dist/esm/src/FormoAnalyticsProvider.js.map +0 -1
- package/dist/esm/src/constants/base.d.ts.map +0 -1
- package/dist/esm/src/constants/base.js.map +0 -1
- package/dist/esm/src/constants/config.d.ts.map +0 -1
- package/dist/esm/src/constants/config.js.map +0 -1
- package/dist/esm/src/constants/events.d.ts.map +0 -1
- package/dist/esm/src/constants/events.js.map +0 -1
- package/dist/esm/src/constants/index.d.ts.map +0 -1
- package/dist/esm/src/constants/index.js.map +0 -1
- package/dist/esm/src/index.d.ts.map +0 -1
- package/dist/esm/src/index.js.map +0 -1
- package/dist/esm/src/initialization.d.ts.map +0 -1
- package/dist/esm/src/initialization.js.map +0 -1
- package/dist/esm/src/lib/event/EventFactory.d.ts.map +0 -1
- package/dist/esm/src/lib/event/EventFactory.js.map +0 -1
- package/dist/esm/src/lib/event/EventManager.d.ts.map +0 -1
- package/dist/esm/src/lib/event/EventManager.js.map +0 -1
- package/dist/esm/src/lib/event/constants.d.ts.map +0 -1
- package/dist/esm/src/lib/event/constants.js.map +0 -1
- package/dist/esm/src/lib/event/index.d.ts.map +0 -1
- package/dist/esm/src/lib/event/index.js.map +0 -1
- package/dist/esm/src/lib/event/type.d.ts.map +0 -1
- package/dist/esm/src/lib/event/type.js.map +0 -1
- package/dist/esm/src/lib/event/utils.d.ts.map +0 -1
- package/dist/esm/src/lib/event/utils.js.map +0 -1
- package/dist/esm/src/lib/fetch.d.ts.map +0 -1
- package/dist/esm/src/lib/fetch.js.map +0 -1
- package/dist/esm/src/lib/index.d.ts.map +0 -1
- package/dist/esm/src/lib/index.js.map +0 -1
- package/dist/esm/src/lib/logger/Logger.d.ts.map +0 -1
- package/dist/esm/src/lib/logger/Logger.js.map +0 -1
- package/dist/esm/src/lib/logger/index.d.ts.map +0 -1
- package/dist/esm/src/lib/logger/index.js.map +0 -1
- package/dist/esm/src/lib/logger/type.d.ts.map +0 -1
- package/dist/esm/src/lib/logger/type.js.map +0 -1
- package/dist/esm/src/lib/queue/EventQueue.d.ts.map +0 -1
- package/dist/esm/src/lib/queue/EventQueue.js.map +0 -1
- package/dist/esm/src/lib/queue/index.d.ts.map +0 -1
- package/dist/esm/src/lib/queue/index.js.map +0 -1
- package/dist/esm/src/lib/queue/type.d.ts.map +0 -1
- package/dist/esm/src/lib/queue/type.js.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_curry1.d.ts.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_curry1.js.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_curry2.d.ts.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_curry2.js.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_curry3.d.ts.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_curry3.js.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_has.d.ts.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_has.js.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_isObject.d.ts.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_isObject.js.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_isPlaceholder.d.ts.map +0 -1
- package/dist/esm/src/lib/ramda/internal/_isPlaceholder.js.map +0 -1
- package/dist/esm/src/lib/ramda/mergeDeepRight.d.ts.map +0 -1
- package/dist/esm/src/lib/ramda/mergeDeepRight.js.map +0 -1
- package/dist/esm/src/lib/ramda/mergeDeepWithKey.d.ts.map +0 -1
- package/dist/esm/src/lib/ramda/mergeDeepWithKey.js.map +0 -1
- package/dist/esm/src/lib/ramda/mergeWithKey.d.ts.map +0 -1
- package/dist/esm/src/lib/ramda/mergeWithKey.js.map +0 -1
- package/dist/esm/src/lib/storage/StorageManager.d.ts.map +0 -1
- package/dist/esm/src/lib/storage/StorageManager.js.map +0 -1
- package/dist/esm/src/lib/storage/built-in/blueprint.d.ts.map +0 -1
- package/dist/esm/src/lib/storage/built-in/blueprint.js.map +0 -1
- package/dist/esm/src/lib/storage/built-in/cookie.d.ts.map +0 -1
- package/dist/esm/src/lib/storage/built-in/cookie.js.map +0 -1
- package/dist/esm/src/lib/storage/built-in/memory.d.ts.map +0 -1
- package/dist/esm/src/lib/storage/built-in/memory.js.map +0 -1
- package/dist/esm/src/lib/storage/built-in/web.d.ts.map +0 -1
- package/dist/esm/src/lib/storage/built-in/web.js.map +0 -1
- package/dist/esm/src/lib/storage/constant.d.ts.map +0 -1
- package/dist/esm/src/lib/storage/constant.js.map +0 -1
- package/dist/esm/src/lib/storage/index.d.ts.map +0 -1
- package/dist/esm/src/lib/storage/index.js.map +0 -1
- package/dist/esm/src/lib/storage/type.d.ts.map +0 -1
- package/dist/esm/src/lib/storage/type.js.map +0 -1
- package/dist/esm/src/lib/version.d.ts.map +0 -1
- package/dist/esm/src/lib/version.js.map +0 -1
- package/dist/esm/src/types/base.d.ts.map +0 -1
- package/dist/esm/src/types/base.js.map +0 -1
- package/dist/esm/src/types/events.d.ts.map +0 -1
- package/dist/esm/src/types/events.js.map +0 -1
- package/dist/esm/src/types/index.d.ts.map +0 -1
- package/dist/esm/src/types/index.js.map +0 -1
- package/dist/esm/src/types/provider.d.ts.map +0 -1
- package/dist/esm/src/types/provider.js.map +0 -1
- package/dist/esm/src/utils/address.d.ts.map +0 -1
- package/dist/esm/src/utils/address.js.map +0 -1
- package/dist/esm/src/utils/base.d.ts.map +0 -1
- package/dist/esm/src/utils/base.js.map +0 -1
- package/dist/esm/src/utils/chain.d.ts.map +0 -1
- package/dist/esm/src/utils/chain.js.map +0 -1
- package/dist/esm/src/utils/converter.d.ts.map +0 -1
- package/dist/esm/src/utils/converter.js.map +0 -1
- package/dist/esm/src/utils/generate.d.ts.map +0 -1
- package/dist/esm/src/utils/generate.js.map +0 -1
- package/dist/esm/src/utils/index.d.ts.map +0 -1
- package/dist/esm/src/utils/index.js.map +0 -1
- package/dist/esm/src/utils/timestamp.d.ts.map +0 -1
- package/dist/esm/src/utils/timestamp.js.map +0 -1
- package/dist/esm/src/validators/address.d.ts.map +0 -1
- package/dist/esm/src/validators/address.js.map +0 -1
- package/dist/esm/src/validators/agent.d.ts.map +0 -1
- package/dist/esm/src/validators/agent.js.map +0 -1
- package/dist/esm/src/validators/checks.d.ts.map +0 -1
- package/dist/esm/src/validators/checks.js.map +0 -1
- package/dist/esm/src/validators/index.d.ts.map +0 -1
- package/dist/esm/src/validators/index.js.map +0 -1
- package/dist/esm/src/validators/network.d.ts.map +0 -1
- package/dist/esm/src/validators/network.js.map +0 -1
- package/dist/esm/src/validators/object.d.ts.map +0 -1
- package/dist/esm/src/validators/object.js.map +0 -1
- package/dist/esm/src/validators/string.d.ts.map +0 -1
- package/dist/esm/src/validators/string.js.map +0 -1
- package/dist/esm/src/validators/uint8array.d.ts.map +0 -1
- package/dist/esm/src/validators/uint8array.js.map +0 -1
- package/dist/esm/test/lib/events.spec.d.ts +0 -2
- package/dist/esm/test/lib/events.spec.d.ts.map +0 -1
- package/dist/esm/test/lib/events.spec.js +0 -12
- package/dist/esm/test/lib/events.spec.js.map +0 -1
- package/dist/esm/test/utils/address.spec.d.ts +0 -2
- package/dist/esm/test/utils/address.spec.d.ts.map +0 -1
- package/dist/esm/test/utils/address.spec.js +0 -38
- package/dist/esm/test/utils/address.spec.js.map +0 -1
- package/dist/esm/test/utils/converter.spec.d.ts +0 -2
- package/dist/esm/test/utils/converter.spec.d.ts.map +0 -1
- package/dist/esm/test/utils/converter.spec.js +0 -23
- package/dist/esm/test/utils/converter.spec.js.map +0 -1
- package/dist/esm/test/validators/address.spec.d.ts +0 -2
- package/dist/esm/test/validators/address.spec.d.ts.map +0 -1
- package/dist/esm/test/validators/address.spec.js +0 -12
- package/dist/esm/test/validators/address.spec.js.map +0 -1
- package/dist/esm/tsconfig.tsbuildinfo +0 -1
- package/dist/index.umd.min.js.map +0 -1
package/README.md
CHANGED
|
@@ -30,6 +30,11 @@ Visit Formo's [Developer Docs](https://docs.formo.so) for detailed guides and in
|
|
|
30
30
|
|
|
31
31
|
Learn how Formo handles [onchain attribution](https://docs.formo.so/data/attribution) and [data collection](https://docs.formo.so/data/what-we-collect).
|
|
32
32
|
|
|
33
|
+
## Support
|
|
34
|
+
|
|
35
|
+
Join the [Formo community Slack channel](https://formo.so/slack) for help and questions.
|
|
36
|
+
|
|
33
37
|
## Contributing
|
|
34
38
|
|
|
35
39
|
[Contributions](https://github.com/getformo/sdk/blob/main/CONTRIBUTING.md) are welcome! Feel free to open fixes and feature suggestions.
|
|
40
|
+
|
|
@@ -53,6 +53,7 @@ var constants_1 = require("./constants");
|
|
|
53
53
|
var lib_1 = require("./lib");
|
|
54
54
|
var types_1 = require("./types");
|
|
55
55
|
var utils_1 = require("./utils");
|
|
56
|
+
var address_1 = require("./utils/address");
|
|
56
57
|
var validators_1 = require("./validators");
|
|
57
58
|
var chain_1 = require("./utils/chain");
|
|
58
59
|
var FormoAnalytics = /** @class */ (function () {
|
|
@@ -63,7 +64,6 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
63
64
|
this.options = options;
|
|
64
65
|
this._providerListeners = {};
|
|
65
66
|
this._providers = [];
|
|
66
|
-
this.currentAddress = "";
|
|
67
67
|
this.currentUserId = "";
|
|
68
68
|
this.config = {
|
|
69
69
|
writeKey: writeKey,
|
|
@@ -167,6 +167,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
167
167
|
*/
|
|
168
168
|
FormoAnalytics.prototype.connect = function (_a, properties_1, context_1, callback_1) {
|
|
169
169
|
return __awaiter(this, arguments, void 0, function (_b, properties, context, callback) {
|
|
170
|
+
var validAddress;
|
|
170
171
|
var chainId = _b.chainId, address = _b.address;
|
|
171
172
|
return __generator(this, function (_c) {
|
|
172
173
|
switch (_c.label) {
|
|
@@ -178,7 +179,8 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
178
179
|
lib_1.logger.warn("Connect: Address cannot be empty");
|
|
179
180
|
}
|
|
180
181
|
this.currentChainId = chainId;
|
|
181
|
-
|
|
182
|
+
validAddress = (0, address_1.getValidAddress)(address);
|
|
183
|
+
this.currentAddress = validAddress ? (0, utils_1.toChecksumAddress)(validAddress) : undefined;
|
|
182
184
|
return [4 /*yield*/, this.trackEvent(constants_1.EventType.CONNECT, {
|
|
183
185
|
chainId: chainId,
|
|
184
186
|
address: this.currentAddress,
|
|
@@ -324,7 +326,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
324
326
|
*/
|
|
325
327
|
FormoAnalytics.prototype.identify = function (params, properties, context, callback) {
|
|
326
328
|
return __awaiter(this, void 0, void 0, function () {
|
|
327
|
-
var _i, _a, providerDetail, provider,
|
|
329
|
+
var _i, _a, providerDetail, provider, address_2, err_1, userId, address, providerName, rdns, validAddress, e_1;
|
|
328
330
|
return __generator(this, function (_b) {
|
|
329
331
|
switch (_b.label) {
|
|
330
332
|
case 0:
|
|
@@ -345,12 +347,12 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
345
347
|
_b.trys.push([2, 6, , 7]);
|
|
346
348
|
return [4 /*yield*/, this.getAddress(provider)];
|
|
347
349
|
case 3:
|
|
348
|
-
|
|
349
|
-
if (!
|
|
350
|
-
lib_1.logger.info("Auto-identifying",
|
|
350
|
+
address_2 = _b.sent();
|
|
351
|
+
if (!address_2) return [3 /*break*/, 5];
|
|
352
|
+
lib_1.logger.info("Auto-identifying", address_2, providerDetail.info.name, providerDetail.info.rdns);
|
|
351
353
|
// NOTE: do not set this.currentAddress without explicit connect or identify
|
|
352
354
|
return [4 /*yield*/, this.identify({
|
|
353
|
-
address:
|
|
355
|
+
address: address_2,
|
|
354
356
|
providerName: providerDetail.info.name,
|
|
355
357
|
rdns: providerDetail.info.rdns,
|
|
356
358
|
}, properties, context, callback)];
|
|
@@ -370,14 +372,15 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
370
372
|
case 9:
|
|
371
373
|
userId = params.userId, address = params.address, providerName = params.providerName, rdns = params.rdns;
|
|
372
374
|
lib_1.logger.info("Identify", address, userId, providerName, rdns);
|
|
373
|
-
|
|
374
|
-
|
|
375
|
+
validAddress = (0, address_1.getValidAddress)(address);
|
|
376
|
+
if (validAddress)
|
|
377
|
+
this.currentAddress = (0, utils_1.toChecksumAddress)(validAddress);
|
|
375
378
|
if (userId) {
|
|
376
379
|
this.currentUserId = userId;
|
|
377
380
|
(0, lib_1.cookie)().set(constants_1.SESSION_USER_ID_KEY, userId);
|
|
378
381
|
}
|
|
379
382
|
return [4 /*yield*/, this.trackEvent(constants_1.EventType.IDENTIFY, {
|
|
380
|
-
address:
|
|
383
|
+
address: validAddress ? (0, utils_1.toChecksumAddress)(validAddress) : undefined,
|
|
381
384
|
providerName: providerName,
|
|
382
385
|
userId: userId,
|
|
383
386
|
rdns: rdns,
|
|
@@ -490,7 +493,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
490
493
|
};
|
|
491
494
|
FormoAnalytics.prototype.onAccountsChanged = function (accounts) {
|
|
492
495
|
return __awaiter(this, void 0, void 0, function () {
|
|
493
|
-
var address, _a;
|
|
496
|
+
var validAddress, address, _a;
|
|
494
497
|
return __generator(this, function (_b) {
|
|
495
498
|
switch (_b.label) {
|
|
496
499
|
case 0:
|
|
@@ -503,12 +506,12 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
503
506
|
_b.sent();
|
|
504
507
|
return [2 /*return*/];
|
|
505
508
|
case 2:
|
|
506
|
-
|
|
507
|
-
if (!
|
|
509
|
+
validAddress = (0, address_1.getValidAddress)(accounts[0]);
|
|
510
|
+
if (!validAddress) {
|
|
508
511
|
lib_1.logger.warn("onAccountsChanged: Invalid address received", accounts[0]);
|
|
509
512
|
return [2 /*return*/];
|
|
510
513
|
}
|
|
511
|
-
address = (0, utils_1.toChecksumAddress)(
|
|
514
|
+
address = (0, utils_1.toChecksumAddress)(validAddress);
|
|
512
515
|
if (address === this.currentAddress) {
|
|
513
516
|
// We have already reported this address
|
|
514
517
|
return [2 /*return*/];
|
|
@@ -541,7 +544,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
541
544
|
};
|
|
542
545
|
FormoAnalytics.prototype.onChainChanged = function (chainIdHex) {
|
|
543
546
|
return __awaiter(this, void 0, void 0, function () {
|
|
544
|
-
var address;
|
|
547
|
+
var address, validAddress;
|
|
545
548
|
return __generator(this, function (_a) {
|
|
546
549
|
switch (_a.label) {
|
|
547
550
|
case 0:
|
|
@@ -559,7 +562,8 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
559
562
|
lib_1.logger.info("OnChainChanged: Unable to fetch or store connected address");
|
|
560
563
|
return [2 /*return*/, Promise.resolve()];
|
|
561
564
|
}
|
|
562
|
-
|
|
565
|
+
validAddress = (0, address_1.getValidAddress)(address);
|
|
566
|
+
this.currentAddress = validAddress ? (0, utils_1.toChecksumAddress)(validAddress) : undefined;
|
|
563
567
|
_a.label = 2;
|
|
564
568
|
case 2:
|
|
565
569
|
// Proceed only if the address exists
|
|
@@ -972,7 +976,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
972
976
|
});
|
|
973
977
|
FormoAnalytics.prototype.getAddress = function (provider) {
|
|
974
978
|
return __awaiter(this, void 0, void 0, function () {
|
|
975
|
-
var p, accounts, err_3;
|
|
979
|
+
var p, accounts, validAddress, err_3;
|
|
976
980
|
return __generator(this, function (_a) {
|
|
977
981
|
switch (_a.label) {
|
|
978
982
|
case 0:
|
|
@@ -990,8 +994,9 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
990
994
|
case 2:
|
|
991
995
|
accounts = _a.sent();
|
|
992
996
|
if (accounts && accounts.length > 0) {
|
|
993
|
-
|
|
994
|
-
|
|
997
|
+
validAddress = (0, address_1.getValidAddress)(accounts[0]);
|
|
998
|
+
if (validAddress) {
|
|
999
|
+
return [2 /*return*/, (0, utils_1.toChecksumAddress)(validAddress)];
|
|
995
1000
|
}
|
|
996
1001
|
}
|
|
997
1002
|
return [3 /*break*/, 4];
|
|
@@ -1021,7 +1026,10 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
1021
1026
|
res = _a.sent();
|
|
1022
1027
|
if (!res || res.length === 0)
|
|
1023
1028
|
return [2 /*return*/, null];
|
|
1024
|
-
return [2 /*return*/, res
|
|
1029
|
+
return [2 /*return*/, res
|
|
1030
|
+
.map(function (e) { return (0, address_1.getValidAddress)(e); })
|
|
1031
|
+
.filter(function (e) { return e !== null; })
|
|
1032
|
+
.map(utils_1.toChecksumAddress)];
|
|
1025
1033
|
case 3:
|
|
1026
1034
|
err_4 = _a.sent();
|
|
1027
1035
|
if (err_4.code !== 4001) {
|
|
@@ -1066,11 +1074,16 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
1066
1074
|
});
|
|
1067
1075
|
};
|
|
1068
1076
|
FormoAnalytics.prototype.buildSignatureEventPayload = function (method, params, response) {
|
|
1077
|
+
var rawAddress = method === "personal_sign"
|
|
1078
|
+
? params[1]
|
|
1079
|
+
: params[0];
|
|
1080
|
+
var validAddress = (0, address_1.getValidAddress)(rawAddress);
|
|
1081
|
+
if (!validAddress) {
|
|
1082
|
+
throw new Error("Invalid address in signature payload: ".concat(rawAddress));
|
|
1083
|
+
}
|
|
1069
1084
|
var basePayload = {
|
|
1070
1085
|
chainId: this.currentChainId,
|
|
1071
|
-
address:
|
|
1072
|
-
? params[1]
|
|
1073
|
-
: params[0],
|
|
1086
|
+
address: (0, utils_1.toChecksumAddress)(validAddress),
|
|
1074
1087
|
};
|
|
1075
1088
|
if (method === "personal_sign") {
|
|
1076
1089
|
var message = Buffer.from(params[0].slice(2), "hex").toString("utf8");
|
|
@@ -1080,12 +1093,16 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
1080
1093
|
};
|
|
1081
1094
|
FormoAnalytics.prototype.buildTransactionEventPayload = function (params) {
|
|
1082
1095
|
return __awaiter(this, void 0, void 0, function () {
|
|
1083
|
-
var _a, data, from, to, value, _b;
|
|
1096
|
+
var _a, data, from, to, value, validAddress, _b;
|
|
1084
1097
|
var _c;
|
|
1085
1098
|
return __generator(this, function (_d) {
|
|
1086
1099
|
switch (_d.label) {
|
|
1087
1100
|
case 0:
|
|
1088
1101
|
_a = params[0], data = _a.data, from = _a.from, to = _a.to, value = _a.value;
|
|
1102
|
+
validAddress = (0, address_1.getValidAddress)(from);
|
|
1103
|
+
if (!validAddress) {
|
|
1104
|
+
throw new Error("Invalid address in transaction payload: ".concat(from));
|
|
1105
|
+
}
|
|
1089
1106
|
_c = {};
|
|
1090
1107
|
_b = this.currentChainId;
|
|
1091
1108
|
if (_b) return [3 /*break*/, 2];
|
|
@@ -1095,7 +1112,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
1095
1112
|
_d.label = 2;
|
|
1096
1113
|
case 2: return [2 /*return*/, (_c.chainId = _b,
|
|
1097
1114
|
_c.data = data,
|
|
1098
|
-
_c.address =
|
|
1115
|
+
_c.address = (0, utils_1.toChecksumAddress)(validAddress),
|
|
1099
1116
|
_c.to = to,
|
|
1100
1117
|
_c.value = value,
|
|
1101
1118
|
_c)];
|
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.EventFactory = void 0;
|
|
18
18
|
var constants_1 = require("../../constants");
|
|
19
19
|
var utils_1 = require("../../utils");
|
|
20
|
+
var address_1 = require("../../utils/address");
|
|
20
21
|
var timestamp_1 = require("../../utils/timestamp");
|
|
21
22
|
var validators_1 = require("../../validators");
|
|
22
23
|
var logger_1 = require("../logger");
|
|
@@ -120,11 +121,13 @@ var EventFactory = /** @class */ (function () {
|
|
|
120
121
|
version: constants_2.VERSION,
|
|
121
122
|
};
|
|
122
123
|
commonEventData.anonymous_id = (0, utils_2.generateAnonymousId)(constants_1.LOCAL_ANONYMOUS_ID_KEY);
|
|
123
|
-
|
|
124
|
-
|
|
124
|
+
// Handle address - convert undefined to null for consistency
|
|
125
|
+
var validAddress = (0, address_1.getValidAddress)(formoEvent.address);
|
|
126
|
+
if (validAddress) {
|
|
127
|
+
commonEventData.address = (0, utils_1.toChecksumAddress)(validAddress);
|
|
125
128
|
}
|
|
126
129
|
else {
|
|
127
|
-
commonEventData.address =
|
|
130
|
+
commonEventData.address = null;
|
|
128
131
|
}
|
|
129
132
|
var processedEvent = (0, mergeDeepRight_1.default)(formoEvent, commonEventData);
|
|
130
133
|
if (processedEvent.event === undefined) {
|
|
@@ -300,7 +303,11 @@ var EventFactory = /** @class */ (function () {
|
|
|
300
303
|
formoEvent = this.generateTrackEvent(event.event, event.properties, event.context);
|
|
301
304
|
break;
|
|
302
305
|
}
|
|
303
|
-
|
|
306
|
+
// Set address if not already set by the specific event generator
|
|
307
|
+
if (formoEvent.address === undefined || formoEvent.address === null) {
|
|
308
|
+
var validAddress = (0, address_1.getValidAddress)(address);
|
|
309
|
+
formoEvent.address = validAddress ? (0, utils_1.toChecksumAddress)(validAddress) : null;
|
|
310
|
+
}
|
|
304
311
|
formoEvent.user_id = userId || null;
|
|
305
312
|
return formoEvent;
|
|
306
313
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.19.
|
|
1
|
+
export declare const version = "1.19.5";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1,3 +1,22 @@
|
|
|
1
1
|
import { Address } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Type guard to check if an address is valid and non-empty after trimming.
|
|
4
|
+
* Note: This function checks if the trimmed value of the address is valid, but does not guarantee that the input address itself is trimmed.
|
|
5
|
+
* If you require a trimmed address, use `getValidAddress(address)` to obtain the trimmed value.
|
|
6
|
+
* @param address The address to validate
|
|
7
|
+
* @returns true if the trimmed address is valid and non-empty, false otherwise.
|
|
8
|
+
* @remarks
|
|
9
|
+
* This type guard only ensures that the trimmed value is a valid Address. The original input may still contain leading or trailing whitespace.
|
|
10
|
+
*/
|
|
11
|
+
export declare const isValidAddress: (address: Address | null | undefined) => address is Address;
|
|
12
|
+
/**
|
|
13
|
+
* Validates and returns a trimmed valid address.
|
|
14
|
+
* This function trims the input address and validates it, returning the trimmed value if valid.
|
|
15
|
+
* @param address The address to validate and trim
|
|
16
|
+
* @returns The trimmed address if valid, null otherwise
|
|
17
|
+
* @remarks
|
|
18
|
+
* This function is the preferred way to get a validated, trimmed address for use in your application.
|
|
19
|
+
*/
|
|
20
|
+
export declare const getValidAddress: (address: Address | null | undefined) => string | null;
|
|
2
21
|
export declare const toChecksumAddress: (address: Address) => string;
|
|
3
22
|
//# sourceMappingURL=address.d.ts.map
|
|
@@ -1,10 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toChecksumAddress = void 0;
|
|
3
|
+
exports.toChecksumAddress = exports.getValidAddress = exports.isValidAddress = void 0;
|
|
4
4
|
var keccak_js_1 = require("ethereum-cryptography/keccak.js");
|
|
5
5
|
var utils_js_1 = require("ethereum-cryptography/utils.js");
|
|
6
6
|
var validators_1 = require("../validators");
|
|
7
7
|
var object_1 = require("../validators/object");
|
|
8
|
+
/**
|
|
9
|
+
* Private helper function to validate and trim an address
|
|
10
|
+
* @param address The address to validate and trim
|
|
11
|
+
* @returns The trimmed address if valid, null otherwise
|
|
12
|
+
*/
|
|
13
|
+
var _validateAndTrimAddress = function (address) {
|
|
14
|
+
if (typeof address === "string" && address.trim() !== "" && (0, validators_1.isAddress)(address.trim())) {
|
|
15
|
+
return address.trim();
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Type guard to check if an address is valid and non-empty after trimming.
|
|
21
|
+
* Note: This function checks if the trimmed value of the address is valid, but does not guarantee that the input address itself is trimmed.
|
|
22
|
+
* If you require a trimmed address, use `getValidAddress(address)` to obtain the trimmed value.
|
|
23
|
+
* @param address The address to validate
|
|
24
|
+
* @returns true if the trimmed address is valid and non-empty, false otherwise.
|
|
25
|
+
* @remarks
|
|
26
|
+
* This type guard only ensures that the trimmed value is a valid Address. The original input may still contain leading or trailing whitespace.
|
|
27
|
+
*/
|
|
28
|
+
var isValidAddress = function (address) {
|
|
29
|
+
return _validateAndTrimAddress(address) !== null;
|
|
30
|
+
};
|
|
31
|
+
exports.isValidAddress = isValidAddress;
|
|
32
|
+
/**
|
|
33
|
+
* Validates and returns a trimmed valid address.
|
|
34
|
+
* This function trims the input address and validates it, returning the trimmed value if valid.
|
|
35
|
+
* @param address The address to validate and trim
|
|
36
|
+
* @returns The trimmed address if valid, null otherwise
|
|
37
|
+
* @remarks
|
|
38
|
+
* This function is the preferred way to get a validated, trimmed address for use in your application.
|
|
39
|
+
*/
|
|
40
|
+
var getValidAddress = function (address) {
|
|
41
|
+
return _validateAndTrimAddress(address);
|
|
42
|
+
};
|
|
43
|
+
exports.getValidAddress = getValidAddress;
|
|
8
44
|
var toChecksumAddress = function (address) {
|
|
9
45
|
if (!(0, validators_1.isAddress)(address, false)) {
|
|
10
46
|
throw new Error("Invalid address " + address);
|
|
@@ -50,7 +50,8 @@ import { EVENTS_API_URL, EventType, LOCAL_ANONYMOUS_ID_KEY, SESSION_CURRENT_URL_
|
|
|
50
50
|
import { cookie, EventManager, EventQueue, initStorageManager, logger, Logger, } from "./lib";
|
|
51
51
|
import { SignatureStatus, TransactionStatus, } from "./types";
|
|
52
52
|
import { toChecksumAddress } from "./utils";
|
|
53
|
-
import {
|
|
53
|
+
import { getValidAddress } from "./utils/address";
|
|
54
|
+
import { isLocalhost } from "./validators";
|
|
54
55
|
import { parseChainId } from "./utils/chain";
|
|
55
56
|
var FormoAnalytics = /** @class */ (function () {
|
|
56
57
|
function FormoAnalytics(writeKey, options) {
|
|
@@ -60,7 +61,6 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
60
61
|
this.options = options;
|
|
61
62
|
this._providerListeners = {};
|
|
62
63
|
this._providers = [];
|
|
63
|
-
this.currentAddress = "";
|
|
64
64
|
this.currentUserId = "";
|
|
65
65
|
this.config = {
|
|
66
66
|
writeKey: writeKey,
|
|
@@ -164,6 +164,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
164
164
|
*/
|
|
165
165
|
FormoAnalytics.prototype.connect = function (_a, properties_1, context_1, callback_1) {
|
|
166
166
|
return __awaiter(this, arguments, void 0, function (_b, properties, context, callback) {
|
|
167
|
+
var validAddress;
|
|
167
168
|
var chainId = _b.chainId, address = _b.address;
|
|
168
169
|
return __generator(this, function (_c) {
|
|
169
170
|
switch (_c.label) {
|
|
@@ -175,7 +176,8 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
175
176
|
logger.warn("Connect: Address cannot be empty");
|
|
176
177
|
}
|
|
177
178
|
this.currentChainId = chainId;
|
|
178
|
-
|
|
179
|
+
validAddress = getValidAddress(address);
|
|
180
|
+
this.currentAddress = validAddress ? toChecksumAddress(validAddress) : undefined;
|
|
179
181
|
return [4 /*yield*/, this.trackEvent(EventType.CONNECT, {
|
|
180
182
|
chainId: chainId,
|
|
181
183
|
address: this.currentAddress,
|
|
@@ -321,7 +323,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
321
323
|
*/
|
|
322
324
|
FormoAnalytics.prototype.identify = function (params, properties, context, callback) {
|
|
323
325
|
return __awaiter(this, void 0, void 0, function () {
|
|
324
|
-
var _i, _a, providerDetail, provider, address_1, err_1, userId, address, providerName, rdns, e_1;
|
|
326
|
+
var _i, _a, providerDetail, provider, address_1, err_1, userId, address, providerName, rdns, validAddress, e_1;
|
|
325
327
|
return __generator(this, function (_b) {
|
|
326
328
|
switch (_b.label) {
|
|
327
329
|
case 0:
|
|
@@ -367,14 +369,15 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
367
369
|
case 9:
|
|
368
370
|
userId = params.userId, address = params.address, providerName = params.providerName, rdns = params.rdns;
|
|
369
371
|
logger.info("Identify", address, userId, providerName, rdns);
|
|
370
|
-
|
|
371
|
-
|
|
372
|
+
validAddress = getValidAddress(address);
|
|
373
|
+
if (validAddress)
|
|
374
|
+
this.currentAddress = toChecksumAddress(validAddress);
|
|
372
375
|
if (userId) {
|
|
373
376
|
this.currentUserId = userId;
|
|
374
377
|
cookie().set(SESSION_USER_ID_KEY, userId);
|
|
375
378
|
}
|
|
376
379
|
return [4 /*yield*/, this.trackEvent(EventType.IDENTIFY, {
|
|
377
|
-
address:
|
|
380
|
+
address: validAddress ? toChecksumAddress(validAddress) : undefined,
|
|
378
381
|
providerName: providerName,
|
|
379
382
|
userId: userId,
|
|
380
383
|
rdns: rdns,
|
|
@@ -487,7 +490,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
487
490
|
};
|
|
488
491
|
FormoAnalytics.prototype.onAccountsChanged = function (accounts) {
|
|
489
492
|
return __awaiter(this, void 0, void 0, function () {
|
|
490
|
-
var address, _a;
|
|
493
|
+
var validAddress, address, _a;
|
|
491
494
|
return __generator(this, function (_b) {
|
|
492
495
|
switch (_b.label) {
|
|
493
496
|
case 0:
|
|
@@ -500,12 +503,12 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
500
503
|
_b.sent();
|
|
501
504
|
return [2 /*return*/];
|
|
502
505
|
case 2:
|
|
503
|
-
|
|
504
|
-
if (!
|
|
506
|
+
validAddress = getValidAddress(accounts[0]);
|
|
507
|
+
if (!validAddress) {
|
|
505
508
|
logger.warn("onAccountsChanged: Invalid address received", accounts[0]);
|
|
506
509
|
return [2 /*return*/];
|
|
507
510
|
}
|
|
508
|
-
address = toChecksumAddress(
|
|
511
|
+
address = toChecksumAddress(validAddress);
|
|
509
512
|
if (address === this.currentAddress) {
|
|
510
513
|
// We have already reported this address
|
|
511
514
|
return [2 /*return*/];
|
|
@@ -538,7 +541,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
538
541
|
};
|
|
539
542
|
FormoAnalytics.prototype.onChainChanged = function (chainIdHex) {
|
|
540
543
|
return __awaiter(this, void 0, void 0, function () {
|
|
541
|
-
var address;
|
|
544
|
+
var address, validAddress;
|
|
542
545
|
return __generator(this, function (_a) {
|
|
543
546
|
switch (_a.label) {
|
|
544
547
|
case 0:
|
|
@@ -556,7 +559,8 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
556
559
|
logger.info("OnChainChanged: Unable to fetch or store connected address");
|
|
557
560
|
return [2 /*return*/, Promise.resolve()];
|
|
558
561
|
}
|
|
559
|
-
|
|
562
|
+
validAddress = getValidAddress(address);
|
|
563
|
+
this.currentAddress = validAddress ? toChecksumAddress(validAddress) : undefined;
|
|
560
564
|
_a.label = 2;
|
|
561
565
|
case 2:
|
|
562
566
|
// Proceed only if the address exists
|
|
@@ -969,7 +973,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
969
973
|
});
|
|
970
974
|
FormoAnalytics.prototype.getAddress = function (provider) {
|
|
971
975
|
return __awaiter(this, void 0, void 0, function () {
|
|
972
|
-
var p, accounts, err_3;
|
|
976
|
+
var p, accounts, validAddress, err_3;
|
|
973
977
|
return __generator(this, function (_a) {
|
|
974
978
|
switch (_a.label) {
|
|
975
979
|
case 0:
|
|
@@ -987,8 +991,9 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
987
991
|
case 2:
|
|
988
992
|
accounts = _a.sent();
|
|
989
993
|
if (accounts && accounts.length > 0) {
|
|
990
|
-
|
|
991
|
-
|
|
994
|
+
validAddress = getValidAddress(accounts[0]);
|
|
995
|
+
if (validAddress) {
|
|
996
|
+
return [2 /*return*/, toChecksumAddress(validAddress)];
|
|
992
997
|
}
|
|
993
998
|
}
|
|
994
999
|
return [3 /*break*/, 4];
|
|
@@ -1018,7 +1023,10 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
1018
1023
|
res = _a.sent();
|
|
1019
1024
|
if (!res || res.length === 0)
|
|
1020
1025
|
return [2 /*return*/, null];
|
|
1021
|
-
return [2 /*return*/, res
|
|
1026
|
+
return [2 /*return*/, res
|
|
1027
|
+
.map(function (e) { return getValidAddress(e); })
|
|
1028
|
+
.filter(function (e) { return e !== null; })
|
|
1029
|
+
.map(toChecksumAddress)];
|
|
1022
1030
|
case 3:
|
|
1023
1031
|
err_4 = _a.sent();
|
|
1024
1032
|
if (err_4.code !== 4001) {
|
|
@@ -1063,11 +1071,16 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
1063
1071
|
});
|
|
1064
1072
|
};
|
|
1065
1073
|
FormoAnalytics.prototype.buildSignatureEventPayload = function (method, params, response) {
|
|
1074
|
+
var rawAddress = method === "personal_sign"
|
|
1075
|
+
? params[1]
|
|
1076
|
+
: params[0];
|
|
1077
|
+
var validAddress = getValidAddress(rawAddress);
|
|
1078
|
+
if (!validAddress) {
|
|
1079
|
+
throw new Error("Invalid address in signature payload: ".concat(rawAddress));
|
|
1080
|
+
}
|
|
1066
1081
|
var basePayload = {
|
|
1067
1082
|
chainId: this.currentChainId,
|
|
1068
|
-
address:
|
|
1069
|
-
? params[1]
|
|
1070
|
-
: params[0],
|
|
1083
|
+
address: toChecksumAddress(validAddress),
|
|
1071
1084
|
};
|
|
1072
1085
|
if (method === "personal_sign") {
|
|
1073
1086
|
var message = Buffer.from(params[0].slice(2), "hex").toString("utf8");
|
|
@@ -1077,12 +1090,16 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
1077
1090
|
};
|
|
1078
1091
|
FormoAnalytics.prototype.buildTransactionEventPayload = function (params) {
|
|
1079
1092
|
return __awaiter(this, void 0, void 0, function () {
|
|
1080
|
-
var _a, data, from, to, value, _b;
|
|
1093
|
+
var _a, data, from, to, value, validAddress, _b;
|
|
1081
1094
|
var _c;
|
|
1082
1095
|
return __generator(this, function (_d) {
|
|
1083
1096
|
switch (_d.label) {
|
|
1084
1097
|
case 0:
|
|
1085
1098
|
_a = params[0], data = _a.data, from = _a.from, to = _a.to, value = _a.value;
|
|
1099
|
+
validAddress = getValidAddress(from);
|
|
1100
|
+
if (!validAddress) {
|
|
1101
|
+
throw new Error("Invalid address in transaction payload: ".concat(from));
|
|
1102
|
+
}
|
|
1086
1103
|
_c = {};
|
|
1087
1104
|
_b = this.currentChainId;
|
|
1088
1105
|
if (_b) return [3 /*break*/, 2];
|
|
@@ -1092,7 +1109,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
1092
1109
|
_d.label = 2;
|
|
1093
1110
|
case 2: return [2 /*return*/, (_c.chainId = _b,
|
|
1094
1111
|
_c.data = data,
|
|
1095
|
-
_c.address =
|
|
1112
|
+
_c.address = toChecksumAddress(validAddress),
|
|
1096
1113
|
_c.to = to,
|
|
1097
1114
|
_c.value = value,
|
|
1098
1115
|
_c)];
|
|
@@ -11,6 +11,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import { COUNTRY_LIST, LOCAL_ANONYMOUS_ID_KEY, SESSION_TRAFFIC_SOURCE_KEY, } from "../../constants";
|
|
13
13
|
import { toChecksumAddress, toSnakeCase } from "../../utils";
|
|
14
|
+
import { getValidAddress } from "../../utils/address";
|
|
14
15
|
import { getCurrentTimeFormatted } from "../../utils/timestamp";
|
|
15
16
|
import { isUndefined } from "../../validators";
|
|
16
17
|
import { logger } from "../logger";
|
|
@@ -114,11 +115,13 @@ var EventFactory = /** @class */ (function () {
|
|
|
114
115
|
version: VERSION,
|
|
115
116
|
};
|
|
116
117
|
commonEventData.anonymous_id = generateAnonymousId(LOCAL_ANONYMOUS_ID_KEY);
|
|
117
|
-
|
|
118
|
-
|
|
118
|
+
// Handle address - convert undefined to null for consistency
|
|
119
|
+
var validAddress = getValidAddress(formoEvent.address);
|
|
120
|
+
if (validAddress) {
|
|
121
|
+
commonEventData.address = toChecksumAddress(validAddress);
|
|
119
122
|
}
|
|
120
123
|
else {
|
|
121
|
-
commonEventData.address =
|
|
124
|
+
commonEventData.address = null;
|
|
122
125
|
}
|
|
123
126
|
var processedEvent = mergeDeepRight(formoEvent, commonEventData);
|
|
124
127
|
if (processedEvent.event === undefined) {
|
|
@@ -294,7 +297,11 @@ var EventFactory = /** @class */ (function () {
|
|
|
294
297
|
formoEvent = this.generateTrackEvent(event.event, event.properties, event.context);
|
|
295
298
|
break;
|
|
296
299
|
}
|
|
297
|
-
|
|
300
|
+
// Set address if not already set by the specific event generator
|
|
301
|
+
if (formoEvent.address === undefined || formoEvent.address === null) {
|
|
302
|
+
var validAddress = getValidAddress(address);
|
|
303
|
+
formoEvent.address = validAddress ? toChecksumAddress(validAddress) : null;
|
|
304
|
+
}
|
|
298
305
|
formoEvent.user_id = userId || null;
|
|
299
306
|
return formoEvent;
|
|
300
307
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.19.
|
|
1
|
+
export declare const version = "1.19.5";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1,3 +1,22 @@
|
|
|
1
1
|
import { Address } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Type guard to check if an address is valid and non-empty after trimming.
|
|
4
|
+
* Note: This function checks if the trimmed value of the address is valid, but does not guarantee that the input address itself is trimmed.
|
|
5
|
+
* If you require a trimmed address, use `getValidAddress(address)` to obtain the trimmed value.
|
|
6
|
+
* @param address The address to validate
|
|
7
|
+
* @returns true if the trimmed address is valid and non-empty, false otherwise.
|
|
8
|
+
* @remarks
|
|
9
|
+
* This type guard only ensures that the trimmed value is a valid Address. The original input may still contain leading or trailing whitespace.
|
|
10
|
+
*/
|
|
11
|
+
export declare const isValidAddress: (address: Address | null | undefined) => address is Address;
|
|
12
|
+
/**
|
|
13
|
+
* Validates and returns a trimmed valid address.
|
|
14
|
+
* This function trims the input address and validates it, returning the trimmed value if valid.
|
|
15
|
+
* @param address The address to validate and trim
|
|
16
|
+
* @returns The trimmed address if valid, null otherwise
|
|
17
|
+
* @remarks
|
|
18
|
+
* This function is the preferred way to get a validated, trimmed address for use in your application.
|
|
19
|
+
*/
|
|
20
|
+
export declare const getValidAddress: (address: Address | null | undefined) => string | null;
|
|
2
21
|
export declare const toChecksumAddress: (address: Address) => string;
|
|
3
22
|
//# sourceMappingURL=address.d.ts.map
|
|
@@ -2,6 +2,40 @@ import { keccak256 } from "ethereum-cryptography/keccak.js";
|
|
|
2
2
|
import { utf8ToBytes } from "ethereum-cryptography/utils.js";
|
|
3
3
|
import { ensureIfUint8Array, isAddress, uint8ArrayToHexString, } from "../validators";
|
|
4
4
|
import { isNullish } from "../validators/object";
|
|
5
|
+
/**
|
|
6
|
+
* Private helper function to validate and trim an address
|
|
7
|
+
* @param address The address to validate and trim
|
|
8
|
+
* @returns The trimmed address if valid, null otherwise
|
|
9
|
+
*/
|
|
10
|
+
var _validateAndTrimAddress = function (address) {
|
|
11
|
+
if (typeof address === "string" && address.trim() !== "" && isAddress(address.trim())) {
|
|
12
|
+
return address.trim();
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Type guard to check if an address is valid and non-empty after trimming.
|
|
18
|
+
* Note: This function checks if the trimmed value of the address is valid, but does not guarantee that the input address itself is trimmed.
|
|
19
|
+
* If you require a trimmed address, use `getValidAddress(address)` to obtain the trimmed value.
|
|
20
|
+
* @param address The address to validate
|
|
21
|
+
* @returns true if the trimmed address is valid and non-empty, false otherwise.
|
|
22
|
+
* @remarks
|
|
23
|
+
* This type guard only ensures that the trimmed value is a valid Address. The original input may still contain leading or trailing whitespace.
|
|
24
|
+
*/
|
|
25
|
+
export var isValidAddress = function (address) {
|
|
26
|
+
return _validateAndTrimAddress(address) !== null;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Validates and returns a trimmed valid address.
|
|
30
|
+
* This function trims the input address and validates it, returning the trimmed value if valid.
|
|
31
|
+
* @param address The address to validate and trim
|
|
32
|
+
* @returns The trimmed address if valid, null otherwise
|
|
33
|
+
* @remarks
|
|
34
|
+
* This function is the preferred way to get a validated, trimmed address for use in your application.
|
|
35
|
+
*/
|
|
36
|
+
export var getValidAddress = function (address) {
|
|
37
|
+
return _validateAndTrimAddress(address);
|
|
38
|
+
};
|
|
5
39
|
export var toChecksumAddress = function (address) {
|
|
6
40
|
if (!isAddress(address, false)) {
|
|
7
41
|
throw new Error("Invalid address " + address);
|