@formo/analytics 1.24.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -74
  3. package/dist/cjs/src/FormoAnalytics.d.ts +24 -14
  4. package/dist/cjs/src/FormoAnalytics.js +195 -255
  5. package/dist/cjs/src/FormoAnalyticsProvider.js +71 -13
  6. package/dist/cjs/src/{lib/consent.d.ts → consent/index.d.ts} +1 -1
  7. package/dist/cjs/src/{lib/consent.js → consent/index.js} +1 -1
  8. package/dist/cjs/src/constants/base.d.ts +0 -2
  9. package/dist/cjs/src/constants/base.js +3 -3
  10. package/dist/cjs/src/constants/config.js +1 -1
  11. package/dist/cjs/src/{lib/event → event}/EventFactory.d.ts +1 -1
  12. package/dist/cjs/src/{lib/event → event}/EventFactory.js +30 -13
  13. package/dist/cjs/src/{lib/event → event}/EventManager.d.ts +1 -1
  14. package/dist/cjs/src/{lib/event → event}/EventManager.js +1 -1
  15. package/dist/cjs/src/event/constants.d.ts +11 -0
  16. package/dist/cjs/src/event/constants.js +34 -0
  17. package/dist/cjs/src/{lib/event → event}/type.d.ts +1 -1
  18. package/dist/cjs/src/{lib/event → event}/utils.d.ts +1 -1
  19. package/dist/cjs/src/{lib/event → event}/utils.js +1 -1
  20. package/dist/cjs/src/{lib/fetch.d.ts → fetch/index.d.ts} +1 -1
  21. package/dist/cjs/src/{lib/fetch.js → fetch/index.js} +1 -1
  22. package/dist/cjs/src/provider/detection.d.ts +58 -0
  23. package/dist/cjs/src/provider/detection.js +103 -0
  24. package/dist/cjs/src/provider/index.d.ts +6 -0
  25. package/dist/cjs/src/provider/index.js +11 -0
  26. package/dist/{esm/src/lib → cjs/src}/queue/EventQueue.d.ts +1 -1
  27. package/dist/cjs/src/{lib/queue → queue}/EventQueue.js +3 -3
  28. package/dist/{esm/src/lib → cjs/src}/queue/type.d.ts +1 -1
  29. package/dist/cjs/src/session/index.d.ts +91 -0
  30. package/dist/cjs/src/session/index.js +126 -0
  31. package/dist/cjs/src/{lib/storage → storage}/built-in/blueprint.js +1 -1
  32. package/dist/cjs/src/types/base.d.ts +27 -1
  33. package/dist/cjs/src/validators/object.js +0 -2
  34. package/dist/cjs/src/version.d.ts +1 -1
  35. package/dist/cjs/src/version.js +1 -1
  36. package/dist/cjs/src/wagmi/WagmiEventHandler.d.ts +69 -0
  37. package/dist/cjs/src/wagmi/WagmiEventHandler.js +449 -0
  38. package/dist/cjs/src/wagmi/index.d.ts +9 -0
  39. package/dist/cjs/src/wagmi/index.js +12 -0
  40. package/dist/cjs/src/wagmi/types.d.ts +115 -0
  41. package/dist/cjs/src/wagmi/types.js +10 -0
  42. package/dist/esm/src/FormoAnalytics.d.ts +24 -14
  43. package/dist/esm/src/FormoAnalytics.js +85 -145
  44. package/dist/esm/src/FormoAnalyticsProvider.js +68 -10
  45. package/dist/esm/src/{lib/consent.d.ts → consent/index.d.ts} +1 -1
  46. package/dist/esm/src/{lib/consent.js → consent/index.js} +1 -1
  47. package/dist/esm/src/constants/base.d.ts +0 -2
  48. package/dist/esm/src/constants/base.js +2 -2
  49. package/dist/esm/src/constants/config.js +1 -1
  50. package/dist/esm/src/{lib/event → event}/EventFactory.d.ts +1 -1
  51. package/dist/esm/src/{lib/event → event}/EventFactory.js +31 -14
  52. package/dist/esm/src/{lib/event → event}/EventManager.d.ts +1 -1
  53. package/dist/esm/src/{lib/event → event}/EventManager.js +1 -1
  54. package/dist/esm/src/event/constants.d.ts +11 -0
  55. package/dist/esm/src/event/constants.js +29 -0
  56. package/dist/esm/src/{lib/event → event}/type.d.ts +1 -1
  57. package/dist/esm/src/{lib/event → event}/utils.d.ts +1 -1
  58. package/dist/esm/src/{lib/event → event}/utils.js +1 -1
  59. package/dist/esm/src/{lib/fetch.d.ts → fetch/index.d.ts} +1 -1
  60. package/dist/esm/src/{lib/fetch.js → fetch/index.js} +1 -1
  61. package/dist/esm/src/provider/detection.d.ts +58 -0
  62. package/dist/esm/src/provider/detection.js +98 -0
  63. package/dist/esm/src/provider/index.d.ts +6 -0
  64. package/dist/esm/src/provider/index.js +5 -0
  65. package/dist/{cjs/src/lib → esm/src}/queue/EventQueue.d.ts +1 -1
  66. package/dist/esm/src/{lib/queue → queue}/EventQueue.js +3 -3
  67. package/dist/{cjs/src/lib → esm/src}/queue/type.d.ts +1 -1
  68. package/dist/esm/src/session/index.d.ts +91 -0
  69. package/dist/esm/src/session/index.js +123 -0
  70. package/dist/esm/src/{lib/storage → storage}/built-in/blueprint.js +1 -1
  71. package/dist/esm/src/types/base.d.ts +27 -1
  72. package/dist/esm/src/validators/object.js +0 -2
  73. package/dist/esm/src/version.d.ts +1 -1
  74. package/dist/esm/src/version.js +1 -1
  75. package/dist/esm/src/wagmi/WagmiEventHandler.d.ts +69 -0
  76. package/dist/esm/src/wagmi/WagmiEventHandler.js +446 -0
  77. package/dist/esm/src/wagmi/index.d.ts +9 -0
  78. package/dist/esm/src/wagmi/index.js +8 -0
  79. package/dist/esm/src/wagmi/types.d.ts +115 -0
  80. package/dist/esm/src/wagmi/types.js +9 -0
  81. package/dist/index.umd.min.js +1 -1
  82. package/package.json +19 -4
  83. package/dist/cjs/src/lib/event/constants.d.ts +0 -4
  84. package/dist/cjs/src/lib/event/constants.js +0 -8
  85. package/dist/cjs/src/lib/index.d.ts +0 -7
  86. package/dist/cjs/src/lib/index.js +0 -28
  87. package/dist/esm/src/lib/event/constants.d.ts +0 -4
  88. package/dist/esm/src/lib/event/constants.js +0 -4
  89. package/dist/esm/src/lib/index.d.ts +0 -7
  90. package/dist/esm/src/lib/index.js +0 -7
  91. /package/dist/cjs/src/{lib/browser → browser}/browsers.d.ts +0 -0
  92. /package/dist/cjs/src/{lib/browser → browser}/browsers.js +0 -0
  93. /package/dist/cjs/src/{lib/event → event}/index.d.ts +0 -0
  94. /package/dist/cjs/src/{lib/event → event}/index.js +0 -0
  95. /package/dist/cjs/src/{lib/event → event}/type.js +0 -0
  96. /package/dist/cjs/src/{lib/logger → logger}/Logger.d.ts +0 -0
  97. /package/dist/cjs/src/{lib/logger → logger}/Logger.js +0 -0
  98. /package/dist/cjs/src/{lib/logger → logger}/index.d.ts +0 -0
  99. /package/dist/cjs/src/{lib/logger → logger}/index.js +0 -0
  100. /package/dist/cjs/src/{lib/logger → logger}/type.d.ts +0 -0
  101. /package/dist/cjs/src/{lib/logger → logger}/type.js +0 -0
  102. /package/dist/cjs/src/{lib/queue → queue}/index.d.ts +0 -0
  103. /package/dist/cjs/src/{lib/queue → queue}/index.js +0 -0
  104. /package/dist/cjs/src/{lib/queue → queue}/type.js +0 -0
  105. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry1.d.ts +0 -0
  106. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry1.js +0 -0
  107. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry2.d.ts +0 -0
  108. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry2.js +0 -0
  109. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry3.d.ts +0 -0
  110. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry3.js +0 -0
  111. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_has.d.ts +0 -0
  112. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_has.js +0 -0
  113. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_isObject.d.ts +0 -0
  114. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_isObject.js +0 -0
  115. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_isPlaceholder.d.ts +0 -0
  116. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_isPlaceholder.js +0 -0
  117. /package/dist/cjs/src/{lib/ramda → ramda}/mergeDeepRight.d.ts +0 -0
  118. /package/dist/cjs/src/{lib/ramda → ramda}/mergeDeepRight.js +0 -0
  119. /package/dist/cjs/src/{lib/ramda → ramda}/mergeDeepWithKey.d.ts +0 -0
  120. /package/dist/cjs/src/{lib/ramda → ramda}/mergeDeepWithKey.js +0 -0
  121. /package/dist/cjs/src/{lib/ramda → ramda}/mergeWithKey.d.ts +0 -0
  122. /package/dist/cjs/src/{lib/ramda → ramda}/mergeWithKey.js +0 -0
  123. /package/dist/cjs/src/{lib/storage → storage}/StorageManager.d.ts +0 -0
  124. /package/dist/cjs/src/{lib/storage → storage}/StorageManager.js +0 -0
  125. /package/dist/cjs/src/{lib/storage → storage}/built-in/blueprint.d.ts +0 -0
  126. /package/dist/cjs/src/{lib/storage → storage}/built-in/cookie.d.ts +0 -0
  127. /package/dist/cjs/src/{lib/storage → storage}/built-in/cookie.js +0 -0
  128. /package/dist/cjs/src/{lib/storage → storage}/built-in/memory.d.ts +0 -0
  129. /package/dist/cjs/src/{lib/storage → storage}/built-in/memory.js +0 -0
  130. /package/dist/cjs/src/{lib/storage → storage}/built-in/web.d.ts +0 -0
  131. /package/dist/cjs/src/{lib/storage → storage}/built-in/web.js +0 -0
  132. /package/dist/cjs/src/{lib/storage → storage}/constant.d.ts +0 -0
  133. /package/dist/cjs/src/{lib/storage → storage}/constant.js +0 -0
  134. /package/dist/cjs/src/{lib/storage → storage}/index.d.ts +0 -0
  135. /package/dist/cjs/src/{lib/storage → storage}/index.js +0 -0
  136. /package/dist/cjs/src/{lib/storage → storage}/type.d.ts +0 -0
  137. /package/dist/cjs/src/{lib/storage → storage}/type.js +0 -0
  138. /package/dist/esm/src/{lib/browser → browser}/browsers.d.ts +0 -0
  139. /package/dist/esm/src/{lib/browser → browser}/browsers.js +0 -0
  140. /package/dist/esm/src/{lib/event → event}/index.d.ts +0 -0
  141. /package/dist/esm/src/{lib/event → event}/index.js +0 -0
  142. /package/dist/esm/src/{lib/event → event}/type.js +0 -0
  143. /package/dist/esm/src/{lib/logger → logger}/Logger.d.ts +0 -0
  144. /package/dist/esm/src/{lib/logger → logger}/Logger.js +0 -0
  145. /package/dist/esm/src/{lib/logger → logger}/index.d.ts +0 -0
  146. /package/dist/esm/src/{lib/logger → logger}/index.js +0 -0
  147. /package/dist/esm/src/{lib/logger → logger}/type.d.ts +0 -0
  148. /package/dist/esm/src/{lib/logger → logger}/type.js +0 -0
  149. /package/dist/esm/src/{lib/queue → queue}/index.d.ts +0 -0
  150. /package/dist/esm/src/{lib/queue → queue}/index.js +0 -0
  151. /package/dist/esm/src/{lib/queue → queue}/type.js +0 -0
  152. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry1.d.ts +0 -0
  153. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry1.js +0 -0
  154. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry2.d.ts +0 -0
  155. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry2.js +0 -0
  156. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry3.d.ts +0 -0
  157. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry3.js +0 -0
  158. /package/dist/esm/src/{lib/ramda → ramda}/internal/_has.d.ts +0 -0
  159. /package/dist/esm/src/{lib/ramda → ramda}/internal/_has.js +0 -0
  160. /package/dist/esm/src/{lib/ramda → ramda}/internal/_isObject.d.ts +0 -0
  161. /package/dist/esm/src/{lib/ramda → ramda}/internal/_isObject.js +0 -0
  162. /package/dist/esm/src/{lib/ramda → ramda}/internal/_isPlaceholder.d.ts +0 -0
  163. /package/dist/esm/src/{lib/ramda → ramda}/internal/_isPlaceholder.js +0 -0
  164. /package/dist/esm/src/{lib/ramda → ramda}/mergeDeepRight.d.ts +0 -0
  165. /package/dist/esm/src/{lib/ramda → ramda}/mergeDeepRight.js +0 -0
  166. /package/dist/esm/src/{lib/ramda → ramda}/mergeDeepWithKey.d.ts +0 -0
  167. /package/dist/esm/src/{lib/ramda → ramda}/mergeDeepWithKey.js +0 -0
  168. /package/dist/esm/src/{lib/ramda → ramda}/mergeWithKey.d.ts +0 -0
  169. /package/dist/esm/src/{lib/ramda → ramda}/mergeWithKey.js +0 -0
  170. /package/dist/esm/src/{lib/storage → storage}/StorageManager.d.ts +0 -0
  171. /package/dist/esm/src/{lib/storage → storage}/StorageManager.js +0 -0
  172. /package/dist/esm/src/{lib/storage → storage}/built-in/blueprint.d.ts +0 -0
  173. /package/dist/esm/src/{lib/storage → storage}/built-in/cookie.d.ts +0 -0
  174. /package/dist/esm/src/{lib/storage → storage}/built-in/cookie.js +0 -0
  175. /package/dist/esm/src/{lib/storage → storage}/built-in/memory.d.ts +0 -0
  176. /package/dist/esm/src/{lib/storage → storage}/built-in/memory.js +0 -0
  177. /package/dist/esm/src/{lib/storage → storage}/built-in/web.d.ts +0 -0
  178. /package/dist/esm/src/{lib/storage → storage}/built-in/web.js +0 -0
  179. /package/dist/esm/src/{lib/storage → storage}/constant.d.ts +0 -0
  180. /package/dist/esm/src/{lib/storage → storage}/constant.js +0 -0
  181. /package/dist/esm/src/{lib/storage → storage}/index.d.ts +0 -0
  182. /package/dist/esm/src/{lib/storage → storage}/index.js +0 -0
  183. /package/dist/esm/src/{lib/storage → storage}/type.d.ts +0 -0
  184. /package/dist/esm/src/{lib/storage → storage}/type.js +0 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Session management for Formo Analytics
3
+ *
4
+ * Handles tracking of detected wallets and identified wallet-address pairs
5
+ * using cookies to maintain state across page loads within a session.
6
+ */
7
+ /**
8
+ * Cookie keys for session tracking
9
+ * NOTE: These values must match the original constants in constants/base.ts
10
+ * to maintain backward compatibility with existing user sessions
11
+ */
12
+ export declare const SESSION_WALLET_DETECTED_KEY = "wallet-detected";
13
+ export declare const SESSION_WALLET_IDENTIFIED_KEY = "wallet-identified";
14
+ /**
15
+ * Interface for session management operations
16
+ */
17
+ export interface IFormoAnalyticsSession {
18
+ /**
19
+ * Check if a wallet has been detected in this session
20
+ * @param rdns The reverse domain name (RDNS) of the wallet provider
21
+ */
22
+ isWalletDetected(rdns: string): boolean;
23
+ /**
24
+ * Mark a wallet as detected in this session
25
+ * @param rdns The reverse domain name (RDNS) of the wallet provider
26
+ */
27
+ markWalletDetected(rdns: string): void;
28
+ /**
29
+ * Check if a wallet-address pair has been identified in this session
30
+ * @param address The wallet address
31
+ * @param rdns The reverse domain name (RDNS) of the wallet provider
32
+ */
33
+ isWalletIdentified(address: string, rdns: string): boolean;
34
+ /**
35
+ * Mark a wallet-address pair as identified in this session
36
+ * @param address The wallet address
37
+ * @param rdns The reverse domain name (RDNS) of the wallet provider
38
+ */
39
+ markWalletIdentified(address: string, rdns: string): void;
40
+ }
41
+ /**
42
+ * Implementation of session management using cookies
43
+ *
44
+ * Tracks:
45
+ * - Detected wallets (by RDNS) - to prevent duplicate detection events
46
+ * - Identified wallet-address pairs - to prevent duplicate identification events
47
+ *
48
+ * Session data expires at end of day (86400 seconds).
49
+ */
50
+ export declare class FormoAnalyticsSession implements IFormoAnalyticsSession {
51
+ /**
52
+ * Generate a unique key for wallet identification tracking
53
+ * Combines address and RDNS to track specific wallet-address combinations
54
+ *
55
+ * @param address The wallet address
56
+ * @param rdns The reverse domain name of the wallet provider
57
+ * @returns A unique identification key
58
+ */
59
+ private generateIdentificationKey;
60
+ /**
61
+ * Check if a wallet provider has been detected in this session
62
+ *
63
+ * @param rdns The reverse domain name of the wallet provider
64
+ * @returns true if the wallet has been detected
65
+ */
66
+ isWalletDetected(rdns: string): boolean;
67
+ /**
68
+ * Mark a wallet provider as detected in this session
69
+ * Prevents duplicate detection events from being emitted
70
+ *
71
+ * @param rdns The reverse domain name of the wallet provider
72
+ */
73
+ markWalletDetected(rdns: string): void;
74
+ /**
75
+ * Check if a specific wallet-address combination has been identified
76
+ *
77
+ * @param address The wallet address
78
+ * @param rdns The reverse domain name of the wallet provider
79
+ * @returns true if this wallet-address pair has been identified
80
+ */
81
+ isWalletIdentified(address: string, rdns: string): boolean;
82
+ /**
83
+ * Mark a wallet-address combination as identified in this session
84
+ * Prevents duplicate identification events from being emitted
85
+ *
86
+ * @param address The wallet address
87
+ * @param rdns The reverse domain name of the wallet provider
88
+ */
89
+ markWalletIdentified(address: string, rdns: string): void;
90
+ }
91
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ /**
3
+ * Session management for Formo Analytics
4
+ *
5
+ * Handles tracking of detected wallets and identified wallet-address pairs
6
+ * using cookies to maintain state across page loads within a session.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.FormoAnalyticsSession = exports.SESSION_WALLET_IDENTIFIED_KEY = exports.SESSION_WALLET_DETECTED_KEY = void 0;
10
+ var storage_1 = require("../storage");
11
+ var logger_1 = require("../logger");
12
+ /**
13
+ * Cookie keys for session tracking
14
+ * NOTE: These values must match the original constants in constants/base.ts
15
+ * to maintain backward compatibility with existing user sessions
16
+ */
17
+ exports.SESSION_WALLET_DETECTED_KEY = "wallet-detected";
18
+ exports.SESSION_WALLET_IDENTIFIED_KEY = "wallet-identified";
19
+ /**
20
+ * Implementation of session management using cookies
21
+ *
22
+ * Tracks:
23
+ * - Detected wallets (by RDNS) - to prevent duplicate detection events
24
+ * - Identified wallet-address pairs - to prevent duplicate identification events
25
+ *
26
+ * Session data expires at end of day (86400 seconds).
27
+ */
28
+ var FormoAnalyticsSession = /** @class */ (function () {
29
+ function FormoAnalyticsSession() {
30
+ }
31
+ /**
32
+ * Generate a unique key for wallet identification tracking
33
+ * Combines address and RDNS to track specific wallet-address combinations
34
+ *
35
+ * @param address The wallet address
36
+ * @param rdns The reverse domain name of the wallet provider
37
+ * @returns A unique identification key
38
+ */
39
+ FormoAnalyticsSession.prototype.generateIdentificationKey = function (address, rdns) {
40
+ // If rdns is missing, use address-only key as fallback for empty identifies
41
+ return rdns ? "".concat(address, ":").concat(rdns) : address;
42
+ };
43
+ /**
44
+ * Check if a wallet provider has been detected in this session
45
+ *
46
+ * @param rdns The reverse domain name of the wallet provider
47
+ * @returns true if the wallet has been detected
48
+ */
49
+ FormoAnalyticsSession.prototype.isWalletDetected = function (rdns) {
50
+ var _a;
51
+ var rdnses = ((_a = (0, storage_1.cookie)().get(exports.SESSION_WALLET_DETECTED_KEY)) === null || _a === void 0 ? void 0 : _a.split(",")) || [];
52
+ return rdnses.includes(rdns);
53
+ };
54
+ /**
55
+ * Mark a wallet provider as detected in this session
56
+ * Prevents duplicate detection events from being emitted
57
+ *
58
+ * @param rdns The reverse domain name of the wallet provider
59
+ */
60
+ FormoAnalyticsSession.prototype.markWalletDetected = function (rdns) {
61
+ var _a;
62
+ var rdnses = ((_a = (0, storage_1.cookie)().get(exports.SESSION_WALLET_DETECTED_KEY)) === null || _a === void 0 ? void 0 : _a.split(",")) || [];
63
+ if (!rdnses.includes(rdns)) {
64
+ rdnses.push(rdns);
65
+ (0, storage_1.cookie)().set(exports.SESSION_WALLET_DETECTED_KEY, rdnses.join(","), {
66
+ // Expires by the end of the day
67
+ expires: new Date(Date.now() + 86400 * 1000).toUTCString(),
68
+ path: "/",
69
+ });
70
+ }
71
+ };
72
+ /**
73
+ * Check if a specific wallet-address combination has been identified
74
+ *
75
+ * @param address The wallet address
76
+ * @param rdns The reverse domain name of the wallet provider
77
+ * @returns true if this wallet-address pair has been identified
78
+ */
79
+ FormoAnalyticsSession.prototype.isWalletIdentified = function (address, rdns) {
80
+ var identifiedKey = this.generateIdentificationKey(address, rdns);
81
+ var cookieValue = (0, storage_1.cookie)().get(exports.SESSION_WALLET_IDENTIFIED_KEY);
82
+ var identifiedWallets = (cookieValue === null || cookieValue === void 0 ? void 0 : cookieValue.split(",")) || [];
83
+ var isIdentified = identifiedWallets.includes(identifiedKey);
84
+ logger_1.logger.debug("Session: Checking wallet identification", {
85
+ identifiedKey: identifiedKey,
86
+ isIdentified: isIdentified,
87
+ hasRdns: !!rdns,
88
+ });
89
+ return isIdentified;
90
+ };
91
+ /**
92
+ * Mark a wallet-address combination as identified in this session
93
+ * Prevents duplicate identification events from being emitted
94
+ *
95
+ * @param address The wallet address
96
+ * @param rdns The reverse domain name of the wallet provider
97
+ */
98
+ FormoAnalyticsSession.prototype.markWalletIdentified = function (address, rdns) {
99
+ var _a;
100
+ var identifiedKey = this.generateIdentificationKey(address, rdns);
101
+ var identifiedWallets = ((_a = (0, storage_1.cookie)().get(exports.SESSION_WALLET_IDENTIFIED_KEY)) === null || _a === void 0 ? void 0 : _a.split(",")) || [];
102
+ if (!identifiedWallets.includes(identifiedKey)) {
103
+ identifiedWallets.push(identifiedKey);
104
+ var newValue = identifiedWallets.join(",");
105
+ (0, storage_1.cookie)().set(exports.SESSION_WALLET_IDENTIFIED_KEY, newValue, {
106
+ // Expires by the end of the day
107
+ expires: new Date(Date.now() + 86400 * 1000).toUTCString(),
108
+ path: "/",
109
+ });
110
+ logger_1.logger.debug("Session: Marked wallet as identified", {
111
+ identifiedKey: identifiedKey,
112
+ hasRdns: !!rdns,
113
+ });
114
+ }
115
+ else {
116
+ logger_1.logger.info("Session: Wallet already marked as identified", {
117
+ identifiedKey: identifiedKey,
118
+ existingWallets: identifiedWallets,
119
+ hasRdns: !!rdns,
120
+ });
121
+ }
122
+ };
123
+ return FormoAnalyticsSession;
124
+ }());
125
+ exports.FormoAnalyticsSession = FormoAnalyticsSession;
126
+ //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var constant_1 = require("../constant");
4
- var hash_1 = require("../../../utils/hash");
4
+ var hash_1 = require("../../utils/hash");
5
5
  var StorageBlueprint = /** @class */ (function () {
6
6
  function StorageBlueprint(writeKey) {
7
7
  this.writeKey = writeKey;
@@ -1,4 +1,4 @@
1
- import { LogLevel } from "../lib";
1
+ import { LogLevel } from "../logger";
2
2
  import { IFormoEventContext, IFormoEventProperties, SignatureStatus, TransactionStatus } from "./events";
3
3
  import { EIP1193Provider } from "./provider";
4
4
  import { ReactNode } from "react";
@@ -9,6 +9,7 @@ export type ValidInputTypes = Uint8Array | bigint | string | number | boolean;
9
9
  export interface IFormoAnalytics {
10
10
  page(category?: string, name?: string, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
11
11
  reset(): void;
12
+ cleanup(): void;
12
13
  detect(params: {
13
14
  rdns: string;
14
15
  providerName: string;
@@ -112,6 +113,23 @@ export interface ReferralOptions {
112
113
  */
113
114
  pathPattern?: string;
114
115
  }
116
+ /**
117
+ * Configuration options for Wagmi integration
118
+ * Allows the SDK to hook into Wagmi v2 wallet events instead of wrapping EIP-1193 providers
119
+ */
120
+ export interface WagmiOptions {
121
+ /**
122
+ * Wagmi config instance from createConfig()
123
+ * The SDK will subscribe to this config's state changes to track wallet events
124
+ */
125
+ config: any;
126
+ /**
127
+ * Optional QueryClient instance from @tanstack/react-query
128
+ * Required for tracking signature and transaction events via mutation cache
129
+ * If not provided, only connection/disconnection/chain events will be tracked
130
+ */
131
+ queryClient?: any;
132
+ }
115
133
  export interface Options {
116
134
  provider?: EIP1193Provider;
117
135
  tracking?: boolean | TrackingOptions;
@@ -123,6 +141,14 @@ export interface Options {
123
141
  * @default true
124
142
  */
125
143
  autocapture?: boolean | AutocaptureOptions;
144
+ /**
145
+ * Wagmi integration configuration
146
+ * When provided, the SDK will hook into Wagmi's event system instead of wrapping EIP-1193 providers
147
+ * This replaces the default provider tracking with Wagmi's config.subscribe() and MutationCache
148
+ * @requires wagmi@>=2.0.0
149
+ * @requires @tanstack/react-query@>=5.0.0 (for mutation tracking)
150
+ */
151
+ wagmi?: WagmiOptions;
126
152
  /**
127
153
  * Custom API host for sending events through your own domain to bypass ad blockers
128
154
  * - If not provided, events are sent directly to events.formo.so
@@ -2,8 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isNullish = void 0;
4
4
  var isNullish = function (item) {
5
- // Using "null" value intentionally for validation
6
- // eslint-disable-next-line no-null/no-null
7
5
  return item === undefined || item === null;
8
6
  };
9
7
  exports.isNullish = isNullish;
@@ -1,2 +1,2 @@
1
- export declare const version = "1.24.0";
1
+ export declare const version = "1.26.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -3,5 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
4
  // This file is auto-generated by scripts/update-version.js during npm version
5
5
  // Do not edit manually - it will be overwritten
6
- exports.version = '1.24.0';
6
+ exports.version = '1.26.0';
7
7
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,69 @@
1
+ /**
2
+ * WagmiEventHandler
3
+ *
4
+ * Handles wallet event tracking by hooking into Wagmi v2's config.subscribe()
5
+ * and TanStack Query's MutationCache. This replaces the EIP-1193 provider
6
+ * wrapping approach when Wagmi mode is enabled.
7
+ */
8
+ import { FormoAnalytics } from "../FormoAnalytics";
9
+ import { WagmiConfig, QueryClient } from "./types";
10
+ export declare class WagmiEventHandler {
11
+ private formo;
12
+ private wagmiConfig;
13
+ private queryClient?;
14
+ private unsubscribers;
15
+ private trackingState;
16
+ /**
17
+ * Track processed mutation states to prevent duplicate event emissions
18
+ * Key format: `${mutationId}:${status}`
19
+ */
20
+ private processedMutations;
21
+ constructor(formoAnalytics: FormoAnalytics, wagmiConfig: WagmiConfig, queryClient?: QueryClient);
22
+ /**
23
+ * Set up listeners for wallet connection, disconnection, and chain changes
24
+ */
25
+ private setupConnectionListeners;
26
+ /**
27
+ * Handle status changes (connect/disconnect)
28
+ */
29
+ private handleStatusChange;
30
+ /**
31
+ * Handle chain ID changes
32
+ */
33
+ private handleChainChange;
34
+ /**
35
+ * Set up mutation tracking for signatures and transactions
36
+ */
37
+ private setupMutationTracking;
38
+ /**
39
+ * Handle mutation cache events (signatures, transactions)
40
+ */
41
+ private handleMutationEvent;
42
+ /**
43
+ * Handle signature mutations (signMessage, signTypedData)
44
+ */
45
+ private handleSignatureMutation;
46
+ /**
47
+ * Handle transaction mutations (sendTransaction, writeContract)
48
+ */
49
+ private handleTransactionMutation;
50
+ /**
51
+ * Get the current Wagmi state
52
+ * Supports both getState() method and direct state property access
53
+ * for compatibility with different Wagmi wrappers (RainbowKit, etc.)
54
+ */
55
+ private getState;
56
+ /**
57
+ * Get the currently connected address from Wagmi state
58
+ */
59
+ private getConnectedAddress;
60
+ /**
61
+ * Get the connector name from Wagmi state
62
+ */
63
+ private getConnectorName;
64
+ /**
65
+ * Clean up all subscriptions
66
+ */
67
+ cleanup(): void;
68
+ }
69
+ //# sourceMappingURL=WagmiEventHandler.d.ts.map