@formo/analytics 1.25.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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/src/FormoAnalytics.d.ts +24 -14
  3. package/dist/cjs/src/FormoAnalytics.js +195 -255
  4. package/dist/cjs/src/FormoAnalyticsProvider.js +71 -13
  5. package/dist/{esm/src/lib/consent.d.ts → cjs/src/consent/index.d.ts} +1 -1
  6. package/dist/cjs/src/{lib/consent.js → consent/index.js} +1 -1
  7. package/dist/cjs/src/constants/base.d.ts +0 -2
  8. package/dist/cjs/src/constants/base.js +3 -3
  9. package/dist/cjs/src/constants/config.js +1 -1
  10. package/dist/cjs/src/{lib/event → event}/EventFactory.d.ts +1 -1
  11. package/dist/cjs/src/{lib/event → event}/EventFactory.js +6 -6
  12. package/dist/cjs/src/{lib/event → event}/EventManager.d.ts +1 -1
  13. package/dist/cjs/src/{lib/event → event}/EventManager.js +1 -1
  14. package/dist/cjs/src/{lib/event → event}/type.d.ts +1 -1
  15. package/dist/cjs/src/{lib/event → event}/utils.d.ts +1 -1
  16. package/dist/cjs/src/{lib/event → event}/utils.js +1 -1
  17. package/dist/cjs/src/{lib/fetch.d.ts → fetch/index.d.ts} +1 -1
  18. package/dist/cjs/src/{lib/fetch.js → fetch/index.js} +1 -1
  19. package/dist/cjs/src/provider/detection.d.ts +58 -0
  20. package/dist/cjs/src/provider/detection.js +103 -0
  21. package/dist/cjs/src/provider/index.d.ts +6 -0
  22. package/dist/cjs/src/provider/index.js +11 -0
  23. package/dist/{esm/src/lib → cjs/src}/queue/EventQueue.d.ts +1 -1
  24. package/dist/cjs/src/{lib/queue → queue}/EventQueue.js +3 -3
  25. package/dist/{esm/src/lib → cjs/src}/queue/type.d.ts +1 -1
  26. package/dist/cjs/src/session/index.d.ts +91 -0
  27. package/dist/cjs/src/session/index.js +126 -0
  28. package/dist/cjs/src/{lib/storage → storage}/built-in/blueprint.js +1 -1
  29. package/dist/cjs/src/types/base.d.ts +27 -1
  30. package/dist/cjs/src/validators/object.js +0 -2
  31. package/dist/cjs/src/version.d.ts +1 -1
  32. package/dist/cjs/src/version.js +1 -1
  33. package/dist/cjs/src/wagmi/WagmiEventHandler.d.ts +69 -0
  34. package/dist/cjs/src/wagmi/WagmiEventHandler.js +449 -0
  35. package/dist/cjs/src/wagmi/index.d.ts +9 -0
  36. package/dist/cjs/src/wagmi/index.js +12 -0
  37. package/dist/cjs/src/wagmi/types.d.ts +115 -0
  38. package/dist/cjs/src/wagmi/types.js +10 -0
  39. package/dist/esm/src/FormoAnalytics.d.ts +24 -14
  40. package/dist/esm/src/FormoAnalytics.js +85 -145
  41. package/dist/esm/src/FormoAnalyticsProvider.js +68 -10
  42. package/dist/{cjs/src/lib/consent.d.ts → esm/src/consent/index.d.ts} +1 -1
  43. package/dist/esm/src/{lib/consent.js → consent/index.js} +1 -1
  44. package/dist/esm/src/constants/base.d.ts +0 -2
  45. package/dist/esm/src/constants/base.js +2 -2
  46. package/dist/esm/src/constants/config.js +1 -1
  47. package/dist/esm/src/{lib/event → event}/EventFactory.d.ts +1 -1
  48. package/dist/esm/src/{lib/event → event}/EventFactory.js +6 -6
  49. package/dist/esm/src/{lib/event → event}/EventManager.d.ts +1 -1
  50. package/dist/esm/src/{lib/event → event}/EventManager.js +1 -1
  51. package/dist/esm/src/{lib/event → event}/type.d.ts +1 -1
  52. package/dist/esm/src/{lib/event → event}/utils.d.ts +1 -1
  53. package/dist/esm/src/{lib/event → event}/utils.js +1 -1
  54. package/dist/esm/src/{lib/fetch.d.ts → fetch/index.d.ts} +1 -1
  55. package/dist/esm/src/{lib/fetch.js → fetch/index.js} +1 -1
  56. package/dist/esm/src/provider/detection.d.ts +58 -0
  57. package/dist/esm/src/provider/detection.js +98 -0
  58. package/dist/esm/src/provider/index.d.ts +6 -0
  59. package/dist/esm/src/provider/index.js +5 -0
  60. package/dist/{cjs/src/lib → esm/src}/queue/EventQueue.d.ts +1 -1
  61. package/dist/esm/src/{lib/queue → queue}/EventQueue.js +3 -3
  62. package/dist/{cjs/src/lib → esm/src}/queue/type.d.ts +1 -1
  63. package/dist/esm/src/session/index.d.ts +91 -0
  64. package/dist/esm/src/session/index.js +123 -0
  65. package/dist/esm/src/{lib/storage → storage}/built-in/blueprint.js +1 -1
  66. package/dist/esm/src/types/base.d.ts +27 -1
  67. package/dist/esm/src/validators/object.js +0 -2
  68. package/dist/esm/src/version.d.ts +1 -1
  69. package/dist/esm/src/version.js +1 -1
  70. package/dist/esm/src/wagmi/WagmiEventHandler.d.ts +69 -0
  71. package/dist/esm/src/wagmi/WagmiEventHandler.js +446 -0
  72. package/dist/esm/src/wagmi/index.d.ts +9 -0
  73. package/dist/esm/src/wagmi/index.js +8 -0
  74. package/dist/esm/src/wagmi/types.d.ts +115 -0
  75. package/dist/esm/src/wagmi/types.js +9 -0
  76. package/dist/index.umd.min.js +1 -1
  77. package/package.json +18 -3
  78. package/dist/cjs/src/lib/index.d.ts +0 -7
  79. package/dist/cjs/src/lib/index.js +0 -28
  80. package/dist/esm/src/lib/index.d.ts +0 -7
  81. package/dist/esm/src/lib/index.js +0 -7
  82. /package/dist/cjs/src/{lib/browser → browser}/browsers.d.ts +0 -0
  83. /package/dist/cjs/src/{lib/browser → browser}/browsers.js +0 -0
  84. /package/dist/cjs/src/{lib/event → event}/constants.d.ts +0 -0
  85. /package/dist/cjs/src/{lib/event → event}/constants.js +0 -0
  86. /package/dist/cjs/src/{lib/event → event}/index.d.ts +0 -0
  87. /package/dist/cjs/src/{lib/event → event}/index.js +0 -0
  88. /package/dist/cjs/src/{lib/event → event}/type.js +0 -0
  89. /package/dist/cjs/src/{lib/logger → logger}/Logger.d.ts +0 -0
  90. /package/dist/cjs/src/{lib/logger → logger}/Logger.js +0 -0
  91. /package/dist/cjs/src/{lib/logger → logger}/index.d.ts +0 -0
  92. /package/dist/cjs/src/{lib/logger → logger}/index.js +0 -0
  93. /package/dist/cjs/src/{lib/logger → logger}/type.d.ts +0 -0
  94. /package/dist/cjs/src/{lib/logger → logger}/type.js +0 -0
  95. /package/dist/cjs/src/{lib/queue → queue}/index.d.ts +0 -0
  96. /package/dist/cjs/src/{lib/queue → queue}/index.js +0 -0
  97. /package/dist/cjs/src/{lib/queue → queue}/type.js +0 -0
  98. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry1.d.ts +0 -0
  99. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry1.js +0 -0
  100. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry2.d.ts +0 -0
  101. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry2.js +0 -0
  102. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry3.d.ts +0 -0
  103. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_curry3.js +0 -0
  104. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_has.d.ts +0 -0
  105. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_has.js +0 -0
  106. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_isObject.d.ts +0 -0
  107. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_isObject.js +0 -0
  108. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_isPlaceholder.d.ts +0 -0
  109. /package/dist/cjs/src/{lib/ramda → ramda}/internal/_isPlaceholder.js +0 -0
  110. /package/dist/cjs/src/{lib/ramda → ramda}/mergeDeepRight.d.ts +0 -0
  111. /package/dist/cjs/src/{lib/ramda → ramda}/mergeDeepRight.js +0 -0
  112. /package/dist/cjs/src/{lib/ramda → ramda}/mergeDeepWithKey.d.ts +0 -0
  113. /package/dist/cjs/src/{lib/ramda → ramda}/mergeDeepWithKey.js +0 -0
  114. /package/dist/cjs/src/{lib/ramda → ramda}/mergeWithKey.d.ts +0 -0
  115. /package/dist/cjs/src/{lib/ramda → ramda}/mergeWithKey.js +0 -0
  116. /package/dist/cjs/src/{lib/storage → storage}/StorageManager.d.ts +0 -0
  117. /package/dist/cjs/src/{lib/storage → storage}/StorageManager.js +0 -0
  118. /package/dist/cjs/src/{lib/storage → storage}/built-in/blueprint.d.ts +0 -0
  119. /package/dist/cjs/src/{lib/storage → storage}/built-in/cookie.d.ts +0 -0
  120. /package/dist/cjs/src/{lib/storage → storage}/built-in/cookie.js +0 -0
  121. /package/dist/cjs/src/{lib/storage → storage}/built-in/memory.d.ts +0 -0
  122. /package/dist/cjs/src/{lib/storage → storage}/built-in/memory.js +0 -0
  123. /package/dist/cjs/src/{lib/storage → storage}/built-in/web.d.ts +0 -0
  124. /package/dist/cjs/src/{lib/storage → storage}/built-in/web.js +0 -0
  125. /package/dist/cjs/src/{lib/storage → storage}/constant.d.ts +0 -0
  126. /package/dist/cjs/src/{lib/storage → storage}/constant.js +0 -0
  127. /package/dist/cjs/src/{lib/storage → storage}/index.d.ts +0 -0
  128. /package/dist/cjs/src/{lib/storage → storage}/index.js +0 -0
  129. /package/dist/cjs/src/{lib/storage → storage}/type.d.ts +0 -0
  130. /package/dist/cjs/src/{lib/storage → storage}/type.js +0 -0
  131. /package/dist/esm/src/{lib/browser → browser}/browsers.d.ts +0 -0
  132. /package/dist/esm/src/{lib/browser → browser}/browsers.js +0 -0
  133. /package/dist/esm/src/{lib/event → event}/constants.d.ts +0 -0
  134. /package/dist/esm/src/{lib/event → event}/constants.js +0 -0
  135. /package/dist/esm/src/{lib/event → event}/index.d.ts +0 -0
  136. /package/dist/esm/src/{lib/event → event}/index.js +0 -0
  137. /package/dist/esm/src/{lib/event → event}/type.js +0 -0
  138. /package/dist/esm/src/{lib/logger → logger}/Logger.d.ts +0 -0
  139. /package/dist/esm/src/{lib/logger → logger}/Logger.js +0 -0
  140. /package/dist/esm/src/{lib/logger → logger}/index.d.ts +0 -0
  141. /package/dist/esm/src/{lib/logger → logger}/index.js +0 -0
  142. /package/dist/esm/src/{lib/logger → logger}/type.d.ts +0 -0
  143. /package/dist/esm/src/{lib/logger → logger}/type.js +0 -0
  144. /package/dist/esm/src/{lib/queue → queue}/index.d.ts +0 -0
  145. /package/dist/esm/src/{lib/queue → queue}/index.js +0 -0
  146. /package/dist/esm/src/{lib/queue → queue}/type.js +0 -0
  147. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry1.d.ts +0 -0
  148. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry1.js +0 -0
  149. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry2.d.ts +0 -0
  150. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry2.js +0 -0
  151. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry3.d.ts +0 -0
  152. /package/dist/esm/src/{lib/ramda → ramda}/internal/_curry3.js +0 -0
  153. /package/dist/esm/src/{lib/ramda → ramda}/internal/_has.d.ts +0 -0
  154. /package/dist/esm/src/{lib/ramda → ramda}/internal/_has.js +0 -0
  155. /package/dist/esm/src/{lib/ramda → ramda}/internal/_isObject.d.ts +0 -0
  156. /package/dist/esm/src/{lib/ramda → ramda}/internal/_isObject.js +0 -0
  157. /package/dist/esm/src/{lib/ramda → ramda}/internal/_isPlaceholder.d.ts +0 -0
  158. /package/dist/esm/src/{lib/ramda → ramda}/internal/_isPlaceholder.js +0 -0
  159. /package/dist/esm/src/{lib/ramda → ramda}/mergeDeepRight.d.ts +0 -0
  160. /package/dist/esm/src/{lib/ramda → ramda}/mergeDeepRight.js +0 -0
  161. /package/dist/esm/src/{lib/ramda → ramda}/mergeDeepWithKey.d.ts +0 -0
  162. /package/dist/esm/src/{lib/ramda → ramda}/mergeDeepWithKey.js +0 -0
  163. /package/dist/esm/src/{lib/ramda → ramda}/mergeWithKey.d.ts +0 -0
  164. /package/dist/esm/src/{lib/ramda → ramda}/mergeWithKey.js +0 -0
  165. /package/dist/esm/src/{lib/storage → storage}/StorageManager.d.ts +0 -0
  166. /package/dist/esm/src/{lib/storage → storage}/StorageManager.js +0 -0
  167. /package/dist/esm/src/{lib/storage → storage}/built-in/blueprint.d.ts +0 -0
  168. /package/dist/esm/src/{lib/storage → storage}/built-in/cookie.d.ts +0 -0
  169. /package/dist/esm/src/{lib/storage → storage}/built-in/cookie.js +0 -0
  170. /package/dist/esm/src/{lib/storage → storage}/built-in/memory.d.ts +0 -0
  171. /package/dist/esm/src/{lib/storage → storage}/built-in/memory.js +0 -0
  172. /package/dist/esm/src/{lib/storage → storage}/built-in/web.d.ts +0 -0
  173. /package/dist/esm/src/{lib/storage → storage}/built-in/web.js +0 -0
  174. /package/dist/esm/src/{lib/storage → storage}/constant.d.ts +0 -0
  175. /package/dist/esm/src/{lib/storage → storage}/constant.js +0 -0
  176. /package/dist/esm/src/{lib/storage → storage}/index.d.ts +0 -0
  177. /package/dist/esm/src/{lib/storage → storage}/index.js +0 -0
  178. /package/dist/esm/src/{lib/storage → storage}/type.d.ts +0 -0
  179. /package/dist/esm/src/{lib/storage → storage}/type.js +0 -0
@@ -59,12 +59,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
59
59
  exports.FormoAnalytics = void 0;
60
60
  var mipd_1 = require("mipd");
61
61
  var constants_1 = require("./constants");
62
- var lib_1 = require("./lib");
62
+ var storage_1 = require("./storage");
63
+ var event_1 = require("./event");
64
+ var queue_1 = require("./queue");
65
+ var logger_1 = require("./logger");
66
+ var consent_1 = require("./consent");
67
+ var provider_1 = require("./provider");
68
+ var session_1 = require("./session");
63
69
  var types_1 = require("./types");
64
70
  var utils_1 = require("./utils");
65
71
  var address_1 = require("./utils/address");
66
72
  var validators_1 = require("./validators");
67
73
  var chain_1 = require("./utils/chain");
74
+ var wagmi_1 = require("./wagmi");
68
75
  /**
69
76
  * Constants for provider switching reasons
70
77
  */
@@ -98,14 +105,21 @@ var FormoAnalytics = /** @class */ (function () {
98
105
  this._processingAccountsChanged = false;
99
106
  // Set to efficiently track seen providers for deduplication and O(1) lookup
100
107
  this._seenProviders = new Set();
108
+ /**
109
+ * Flag indicating if Wagmi mode is enabled
110
+ * When true, EIP-1193 provider wrapping is skipped
111
+ */
112
+ this.isWagmiMode = false;
101
113
  this.currentUserId = "";
102
114
  this.config = {
103
115
  writeKey: writeKey,
104
116
  };
105
117
  this.options = options;
106
- this.session = new FormoAnalyticsSession();
118
+ // Check if Wagmi mode is enabled
119
+ this.isWagmiMode = !!options.wagmi;
120
+ this.session = new session_1.FormoAnalyticsSession();
107
121
  this.currentUserId =
108
- (0, lib_1.cookie)().get(constants_1.SESSION_USER_ID_KEY) || undefined;
122
+ (0, storage_1.cookie)().get(constants_1.SESSION_USER_ID_KEY) || undefined;
109
123
  this.identify = this.identify.bind(this);
110
124
  this.connect = this.connect.bind(this);
111
125
  this.disconnect = this.disconnect.bind(this);
@@ -116,11 +130,11 @@ var FormoAnalytics = /** @class */ (function () {
116
130
  this.track = this.track.bind(this);
117
131
  this.isAutocaptureEnabled = this.isAutocaptureEnabled.bind(this);
118
132
  // Initialize logger with configuration from options
119
- lib_1.Logger.init({
133
+ logger_1.Logger.init({
120
134
  enabled: ((_a = options.logger) === null || _a === void 0 ? void 0 : _a.enabled) || false,
121
135
  enabledLevels: ((_b = options.logger) === null || _b === void 0 ? void 0 : _b.levels) || [],
122
136
  });
123
- this.eventManager = new lib_1.EventManager(new lib_1.EventQueue(this.config.writeKey, {
137
+ this.eventManager = new event_1.EventManager(new queue_1.EventQueue(this.config.writeKey, {
124
138
  apiHost: options.apiHost || constants_1.EVENTS_API_HOST,
125
139
  flushAt: options.flushAt,
126
140
  retryCount: options.retryCount,
@@ -129,19 +143,26 @@ var FormoAnalytics = /** @class */ (function () {
129
143
  }), options);
130
144
  // Check consent status on initialization
131
145
  if (this.hasOptedOutTracking()) {
132
- lib_1.logger.info("User has previously opted out of tracking");
146
+ logger_1.logger.info("User has previously opted out of tracking");
133
147
  }
134
- // Handle initial provider (injected) as fallback; listeners for EIP-6963 are added later
135
- var provider = undefined;
136
- var optProvider = options.provider;
137
- if (optProvider) {
138
- provider = optProvider;
148
+ // Initialize Wagmi handler if Wagmi mode is enabled
149
+ if (this.isWagmiMode && options.wagmi) {
150
+ logger_1.logger.info("FormoAnalytics: Initializing in Wagmi mode");
151
+ this.wagmiHandler = new wagmi_1.WagmiEventHandler(this, options.wagmi.config, options.wagmi.queryClient);
139
152
  }
140
- else if (typeof window !== "undefined" && window.ethereum) {
141
- provider = window.ethereum;
142
- }
143
- if (provider) {
144
- this.trackProvider(provider);
153
+ else {
154
+ // Handle initial provider (injected) as fallback; listeners for EIP-6963 are added later
155
+ var provider = undefined;
156
+ var optProvider = options.provider;
157
+ if (optProvider) {
158
+ provider = optProvider;
159
+ }
160
+ else if (typeof window !== "undefined" && window.ethereum) {
161
+ provider = window.ethereum;
162
+ }
163
+ if (provider) {
164
+ this.trackEIP1193Provider(provider);
165
+ }
145
166
  }
146
167
  this.trackPageHit();
147
168
  this.trackPageHits();
@@ -156,26 +177,15 @@ var FormoAnalytics = /** @class */ (function () {
156
177
  // This allows legitimate provider switching while preventing race conditions
157
178
  return this._provider != null && this._provider !== provider;
158
179
  };
159
- /**
160
- * Check if a provider is in a valid state for switching
161
- * @param provider The provider to validate
162
- * @returns true if the provider is in a valid state
163
- */
164
- FormoAnalytics.prototype.isProviderInValidState = function (provider) {
165
- // Basic validation: ensure provider exists and has required methods
166
- return (provider &&
167
- typeof provider.request === "function" &&
168
- typeof provider.on === "function" &&
169
- typeof provider.removeListener === "function");
170
- };
171
180
  FormoAnalytics.init = function (writeKey, options) {
172
181
  return __awaiter(this, void 0, void 0, function () {
173
182
  var analytics, _a;
174
183
  return __generator(this, function (_b) {
175
184
  switch (_b.label) {
176
185
  case 0:
177
- (0, lib_1.initStorageManager)(writeKey);
186
+ (0, storage_1.initStorageManager)(writeKey);
178
187
  analytics = new FormoAnalytics(writeKey, options);
188
+ if (!!analytics.isWagmiMode) return [3 /*break*/, 3];
179
189
  // Auto-detect wallet provider
180
190
  _a = analytics;
181
191
  return [4 /*yield*/, analytics.getProviders()];
@@ -186,7 +196,11 @@ var FormoAnalytics = /** @class */ (function () {
186
196
  case 2:
187
197
  _b.sent();
188
198
  analytics.trackProviders(analytics._providers);
189
- return [2 /*return*/, analytics];
199
+ return [3 /*break*/, 4];
200
+ case 3:
201
+ logger_1.logger.info("FormoAnalytics: Skipping provider detection (Wagmi mode)");
202
+ _b.label = 4;
203
+ case 4: return [2 /*return*/, analytics];
190
204
  }
191
205
  });
192
206
  });
@@ -221,10 +235,31 @@ var FormoAnalytics = /** @class */ (function () {
221
235
  */
222
236
  FormoAnalytics.prototype.reset = function () {
223
237
  this.currentUserId = undefined;
224
- (0, lib_1.cookie)().remove(constants_1.LOCAL_ANONYMOUS_ID_KEY);
225
- (0, lib_1.cookie)().remove(constants_1.SESSION_USER_ID_KEY);
226
- (0, lib_1.cookie)().remove(constants_1.SESSION_WALLET_DETECTED_KEY);
227
- (0, lib_1.cookie)().remove(constants_1.SESSION_WALLET_IDENTIFIED_KEY);
238
+ (0, storage_1.cookie)().remove(constants_1.LOCAL_ANONYMOUS_ID_KEY);
239
+ (0, storage_1.cookie)().remove(constants_1.SESSION_USER_ID_KEY);
240
+ (0, storage_1.cookie)().remove(session_1.SESSION_WALLET_DETECTED_KEY);
241
+ (0, storage_1.cookie)().remove(session_1.SESSION_WALLET_IDENTIFIED_KEY);
242
+ };
243
+ /**
244
+ * Clean up resources and event listeners
245
+ * Call this when destroying the analytics instance
246
+ * @returns {void}
247
+ */
248
+ FormoAnalytics.prototype.cleanup = function () {
249
+ logger_1.logger.info("FormoAnalytics: Cleaning up resources");
250
+ // Clean up Wagmi handler if present
251
+ if (this.wagmiHandler) {
252
+ this.wagmiHandler.cleanup();
253
+ this.wagmiHandler = undefined;
254
+ }
255
+ // Clean up EIP-1193 providers if not in Wagmi mode
256
+ if (!this.isWagmiMode) {
257
+ for (var _i = 0, _a = Array.from(this._trackedProviders); _i < _a.length; _i++) {
258
+ var provider = _a[_i];
259
+ this.untrackProvider(provider);
260
+ }
261
+ }
262
+ logger_1.logger.info("FormoAnalytics: Cleanup complete");
228
263
  };
229
264
  /**
230
265
  * Emits a connect wallet event.
@@ -243,17 +278,17 @@ var FormoAnalytics = /** @class */ (function () {
243
278
  switch (_c.label) {
244
279
  case 0:
245
280
  if (chainId === null || chainId === undefined) {
246
- lib_1.logger.warn("Connect: Chain ID cannot be null or undefined");
281
+ logger_1.logger.warn("Connect: Chain ID cannot be null or undefined");
247
282
  return [2 /*return*/];
248
283
  }
249
284
  if (!address) {
250
- lib_1.logger.warn("Connect: Address cannot be empty");
285
+ logger_1.logger.warn("Connect: Address cannot be empty");
251
286
  return [2 /*return*/];
252
287
  }
253
288
  this.currentChainId = chainId;
254
289
  checksummedAddress = this.validateAndChecksumAddress(address);
255
290
  if (!checksummedAddress) {
256
- lib_1.logger.warn("Connect: Invalid address provided (\"".concat(address, "\"). Please provide a valid Ethereum address in checksum format."));
291
+ logger_1.logger.warn("Connect: Invalid address provided (\"".concat(address, "\"). Please provide a valid Ethereum address in checksum format."));
257
292
  return [2 /*return*/];
258
293
  }
259
294
  this.currentAddress = checksummedAddress;
@@ -288,7 +323,7 @@ var FormoAnalytics = /** @class */ (function () {
288
323
  providerInfo = this._provider
289
324
  ? this.getProviderInfo(this._provider)
290
325
  : null;
291
- lib_1.logger.info("Disconnect: Emitting disconnect event with:", {
326
+ logger_1.logger.info("Disconnect: Emitting disconnect event with:", {
292
327
  chainId: chainId,
293
328
  address: address,
294
329
  providerName: providerInfo === null || providerInfo === void 0 ? void 0 : providerInfo.name,
@@ -304,7 +339,7 @@ var FormoAnalytics = /** @class */ (function () {
304
339
  this.currentAddress = undefined;
305
340
  this.currentChainId = undefined;
306
341
  this.clearActiveProvider();
307
- lib_1.logger.info("Wallet disconnected: Cleared currentAddress, currentChainId, and provider");
342
+ logger_1.logger.info("Wallet disconnected: Cleared currentAddress, currentChainId, and provider");
308
343
  return [2 /*return*/];
309
344
  }
310
345
  });
@@ -326,15 +361,15 @@ var FormoAnalytics = /** @class */ (function () {
326
361
  switch (_c.label) {
327
362
  case 0:
328
363
  if (!chainId || Number(chainId) === 0) {
329
- lib_1.logger.warn("FormoAnalytics::chain: chainId cannot be empty or 0");
364
+ logger_1.logger.warn("FormoAnalytics::chain: chainId cannot be empty or 0");
330
365
  return [2 /*return*/];
331
366
  }
332
367
  if (isNaN(Number(chainId))) {
333
- lib_1.logger.warn("FormoAnalytics::chain: chainId must be a valid decimal number");
368
+ logger_1.logger.warn("FormoAnalytics::chain: chainId must be a valid decimal number");
334
369
  return [2 /*return*/];
335
370
  }
336
371
  if (!address && !this.currentAddress) {
337
- lib_1.logger.warn("FormoAnalytics::chain: address was empty and no previous address has been recorded");
372
+ logger_1.logger.warn("FormoAnalytics::chain: address was empty and no previous address has been recorded");
338
373
  return [2 /*return*/];
339
374
  }
340
375
  this.currentChainId = chainId;
@@ -422,7 +457,7 @@ var FormoAnalytics = /** @class */ (function () {
422
457
  _c.trys.push([0, 12, , 13]);
423
458
  if (!!params) return [3 /*break*/, 10];
424
459
  // If no params provided, auto-identify
425
- lib_1.logger.info("Auto-identifying with providers:", this._providers.map(function (p) { return p.info.name; }));
460
+ logger_1.logger.info("Auto-identifying with providers:", this._providers.map(function (p) { return p.info.name; }));
426
461
  _i = 0, _a = this._providers;
427
462
  _c.label = 1;
428
463
  case 1:
@@ -439,7 +474,7 @@ var FormoAnalytics = /** @class */ (function () {
439
474
  address_2 = _c.sent();
440
475
  if (!address_2) return [3 /*break*/, 6];
441
476
  validAddress_1 = this.validateAndChecksumAddress(address_2);
442
- lib_1.logger.info("Auto-identify: Checking deduplication", {
477
+ logger_1.logger.info("Auto-identify: Checking deduplication", {
443
478
  validAddress: validAddress_1,
444
479
  rdns: providerDetail.info.rdns,
445
480
  providerName: providerDetail.info.name,
@@ -449,7 +484,7 @@ var FormoAnalytics = /** @class */ (function () {
449
484
  });
450
485
  if (!(validAddress_1 &&
451
486
  !this.session.isWalletIdentified(validAddress_1, providerDetail.info.rdns))) return [3 /*break*/, 5];
452
- lib_1.logger.info("Auto-identifying", validAddress_1, providerDetail.info.name, providerDetail.info.rdns);
487
+ logger_1.logger.info("Auto-identifying", validAddress_1, providerDetail.info.name, providerDetail.info.rdns);
453
488
  // NOTE: do not set this.currentAddress without explicit connect or identify
454
489
  return [4 /*yield*/, this.identify({
455
490
  address: validAddress_1,
@@ -462,13 +497,13 @@ var FormoAnalytics = /** @class */ (function () {
462
497
  return [3 /*break*/, 6];
463
498
  case 5:
464
499
  if (validAddress_1) {
465
- lib_1.logger.info("Auto-identify: Skipping already identified wallet", validAddress_1, providerDetail.info.name, providerDetail.info.rdns);
500
+ logger_1.logger.info("Auto-identify: Skipping already identified wallet", validAddress_1, providerDetail.info.name, providerDetail.info.rdns);
466
501
  }
467
502
  _c.label = 6;
468
503
  case 6: return [3 /*break*/, 8];
469
504
  case 7:
470
505
  err_1 = _c.sent();
471
- lib_1.logger.error("Failed to identify provider ".concat(providerDetail.info.name, ":"), err_1);
506
+ logger_1.logger.error("Failed to identify provider ".concat(providerDetail.info.name, ":"), err_1);
472
507
  return [3 /*break*/, 8];
473
508
  case 8:
474
509
  _i++;
@@ -476,13 +511,13 @@ var FormoAnalytics = /** @class */ (function () {
476
511
  case 9: return [2 /*return*/];
477
512
  case 10:
478
513
  userId = params.userId, address = params.address, providerName = params.providerName, rdns = params.rdns;
479
- lib_1.logger.info("Identify", address, userId, providerName, rdns);
514
+ logger_1.logger.info("Identify", address, userId, providerName, rdns);
480
515
  validAddress = undefined;
481
516
  if (address) {
482
517
  validAddress = this.validateAndChecksumAddress(address);
483
518
  this.currentAddress = validAddress || undefined;
484
519
  if (!validAddress) {
485
- (_b = lib_1.logger.warn) === null || _b === void 0 ? void 0 : _b.call(lib_1.logger, "Invalid address provided to identify:", address);
520
+ (_b = logger_1.logger.warn) === null || _b === void 0 ? void 0 : _b.call(logger_1.logger, "Invalid address provided to identify:", address);
486
521
  }
487
522
  }
488
523
  else {
@@ -490,12 +525,12 @@ var FormoAnalytics = /** @class */ (function () {
490
525
  }
491
526
  if (userId) {
492
527
  this.currentUserId = userId;
493
- (0, lib_1.cookie)().set(constants_1.SESSION_USER_ID_KEY, userId);
528
+ (0, storage_1.cookie)().set(constants_1.SESSION_USER_ID_KEY, userId);
494
529
  }
495
530
  isAlreadyIdentified = validAddress
496
531
  ? this.session.isWalletIdentified(validAddress, rdns || "")
497
532
  : false;
498
- lib_1.logger.debug("Identify: Checking deduplication", {
533
+ logger_1.logger.debug("Identify: Checking deduplication", {
499
534
  validAddress: validAddress,
500
535
  rdns: rdns,
501
536
  providerName: providerName,
@@ -504,7 +539,7 @@ var FormoAnalytics = /** @class */ (function () {
504
539
  isAlreadyIdentified: isAlreadyIdentified,
505
540
  });
506
541
  if (isAlreadyIdentified) {
507
- lib_1.logger.info("Identify: Wallet ".concat(providerName || "Unknown", " with address ").concat(validAddress, " already identified in this session (rdns: ").concat(rdns || "empty", ")"));
542
+ logger_1.logger.info("Identify: Wallet ".concat(providerName || "Unknown", " with address ").concat(validAddress, " already identified in this session (rdns: ").concat(rdns || "empty", ")"));
508
543
  return [2 /*return*/];
509
544
  }
510
545
  // Mark as identified before emitting the event
@@ -523,7 +558,7 @@ var FormoAnalytics = /** @class */ (function () {
523
558
  return [3 /*break*/, 13];
524
559
  case 12:
525
560
  e_1 = _c.sent();
526
- lib_1.logger.log("identify error", e_1);
561
+ logger_1.logger.log("identify error", e_1);
527
562
  return [3 /*break*/, 13];
528
563
  case 13: return [2 /*return*/];
529
564
  }
@@ -546,7 +581,7 @@ var FormoAnalytics = /** @class */ (function () {
546
581
  switch (_c.label) {
547
582
  case 0:
548
583
  if (this.session.isWalletDetected(rdns))
549
- return [2 /*return*/, lib_1.logger.warn("Detect: Wallet ".concat(providerName, " already detected in this session"))];
584
+ return [2 /*return*/, logger_1.logger.warn("Detect: Wallet ".concat(providerName, " already detected in this session"))];
550
585
  this.session.markWalletDetected(rdns);
551
586
  return [4 /*yield*/, this.trackEvent(constants_1.EventType.DETECT, {
552
587
  providerName: providerName,
@@ -587,12 +622,12 @@ var FormoAnalytics = /** @class */ (function () {
587
622
  * @returns {void}
588
623
  */
589
624
  FormoAnalytics.prototype.optOutTracking = function () {
590
- lib_1.logger.info("Opting out of tracking");
625
+ logger_1.logger.info("Opting out of tracking");
591
626
  // Set opt-out flag in persistent storage using direct cookie access
592
627
  // This must be done before switching storage to ensure persistence
593
- (0, lib_1.setConsentFlag)(this.writeKey, constants_1.CONSENT_OPT_OUT_KEY, "true");
628
+ (0, consent_1.setConsentFlag)(this.writeKey, constants_1.CONSENT_OPT_OUT_KEY, "true");
594
629
  this.reset();
595
- lib_1.logger.info("Successfully opted out of tracking");
630
+ logger_1.logger.info("Successfully opted out of tracking");
596
631
  };
597
632
  /**
598
633
  * Opt back into tracking after previously opting out. This will re-enable analytics tracking
@@ -600,28 +635,44 @@ var FormoAnalytics = /** @class */ (function () {
600
635
  * @returns {void}
601
636
  */
602
637
  FormoAnalytics.prototype.optInTracking = function () {
603
- lib_1.logger.info("Opting back into tracking");
638
+ logger_1.logger.info("Opting back into tracking");
604
639
  // Remove opt-out flag
605
- (0, lib_1.removeConsentFlag)(this.writeKey, constants_1.CONSENT_OPT_OUT_KEY);
606
- lib_1.logger.info("Successfully opted back into tracking");
640
+ (0, consent_1.removeConsentFlag)(this.writeKey, constants_1.CONSENT_OPT_OUT_KEY);
641
+ logger_1.logger.info("Successfully opted back into tracking");
607
642
  };
608
643
  /**
609
644
  * Check if the user has opted out of tracking.
610
645
  * @returns {boolean} True if the user has opted out
611
646
  */
612
647
  FormoAnalytics.prototype.hasOptedOutTracking = function () {
613
- return (0, lib_1.getConsentFlag)(this.writeKey, constants_1.CONSENT_OPT_OUT_KEY) === "true";
648
+ return (0, consent_1.getConsentFlag)(this.writeKey, constants_1.CONSENT_OPT_OUT_KEY) === "true";
614
649
  };
615
650
  /*
616
651
  SDK tracking and event listener functions
617
652
  */
618
- FormoAnalytics.prototype.trackProvider = function (provider) {
619
- lib_1.logger.info("trackProvider", provider);
653
+ /**
654
+ * Track an EIP-1193 provider by wrapping its request method and adding event listeners
655
+ * Note: This is only used in non-Wagmi mode. When Wagmi is enabled, all tracking
656
+ * happens through Wagmi's connector system instead of EIP-1193/EIP-6963.
657
+ * @param provider The EIP-1193 provider to track
658
+ */
659
+ FormoAnalytics.prototype.trackEIP1193Provider = function (provider) {
660
+ logger_1.logger.info("trackEIP1193Provider", provider);
661
+ // Defensive check: Skip provider tracking in Wagmi mode
662
+ // This should never be called in Wagmi mode due to guards in init(),
663
+ // but we check here for safety in case of future code changes
664
+ if (this.isWagmiMode) {
665
+ logger_1.logger.debug("trackEIP1193Provider: Skipping EIP-1193 provider tracking (Wagmi mode - using connector system instead)");
666
+ return;
667
+ }
620
668
  try {
621
- if (!provider)
669
+ // Validate provider exists and has required methods
670
+ if (!(0, provider_1.isValidProvider)(provider)) {
671
+ logger_1.logger.warn("trackEIP1193Provider: Invalid provider - missing required methods");
622
672
  return;
673
+ }
623
674
  if (this._trackedProviders.has(provider)) {
624
- lib_1.logger.warn("TrackProvider: Provider already tracked.");
675
+ logger_1.logger.warn("trackEIP1193Provider: Provider already tracked");
625
676
  return;
626
677
  }
627
678
  // CRITICAL: Always register accountsChanged for state management
@@ -639,7 +690,7 @@ var FormoAnalytics = /** @class */ (function () {
639
690
  this.registerRequestListeners(provider);
640
691
  }
641
692
  else {
642
- lib_1.logger.debug("TrackProvider: Skipping request wrapping (both signature and transaction autocapture disabled)");
693
+ logger_1.logger.debug("TrackProvider: Skipping request wrapping (both signature and transaction autocapture disabled)");
643
694
  }
644
695
  if (this.isAutocaptureEnabled("disconnect")) {
645
696
  this.registerDisconnectListener(provider);
@@ -648,7 +699,7 @@ var FormoAnalytics = /** @class */ (function () {
648
699
  this._trackedProviders.add(provider);
649
700
  }
650
701
  catch (error) {
651
- lib_1.logger.error("Error tracking provider:", error);
702
+ logger_1.logger.error("Error tracking provider:", error);
652
703
  }
653
704
  };
654
705
  FormoAnalytics.prototype.trackProviders = function (providers) {
@@ -657,12 +708,12 @@ var FormoAnalytics = /** @class */ (function () {
657
708
  var eip6963ProviderDetail = providers_1[_i];
658
709
  var provider = eip6963ProviderDetail === null || eip6963ProviderDetail === void 0 ? void 0 : eip6963ProviderDetail.provider;
659
710
  if (provider && !this._trackedProviders.has(provider)) {
660
- this.trackProvider(provider);
711
+ this.trackEIP1193Provider(provider);
661
712
  }
662
713
  }
663
714
  }
664
715
  catch (error) {
665
- lib_1.logger.error("Failed to track EIP-6963 providers during initialization:", error);
716
+ logger_1.logger.error("Failed to track EIP-6963 providers during initialization:", error);
666
717
  }
667
718
  };
668
719
  FormoAnalytics.prototype.addProviderListener = function (provider, event, listener) {
@@ -672,7 +723,7 @@ var FormoAnalytics = /** @class */ (function () {
672
723
  };
673
724
  FormoAnalytics.prototype.registerAccountsChangedListener = function (provider) {
674
725
  var _this = this;
675
- lib_1.logger.info("registerAccountsChangedListener");
726
+ logger_1.logger.info("registerAccountsChangedListener");
676
727
  var listener = function () {
677
728
  var args = [];
678
729
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -688,10 +739,10 @@ var FormoAnalytics = /** @class */ (function () {
688
739
  return __generator(this, function (_a) {
689
740
  switch (_a.label) {
690
741
  case 0:
691
- lib_1.logger.info("onAccountsChanged", accounts);
742
+ logger_1.logger.info("onAccountsChanged", accounts);
692
743
  // Prevent concurrent processing of accountsChanged events to avoid race conditions
693
744
  if (this._processingAccountsChanged) {
694
- lib_1.logger.debug("OnAccountsChanged: Already processing accountsChanged, skipping", {
745
+ logger_1.logger.debug("OnAccountsChanged: Already processing accountsChanged, skipping", {
695
746
  provider: this.getProviderInfo(provider).name,
696
747
  });
697
748
  return [2 /*return*/];
@@ -730,7 +781,7 @@ var FormoAnalytics = /** @class */ (function () {
730
781
  case 0:
731
782
  if (!(accounts.length === 0)) return [3 /*break*/, 9];
732
783
  if (!(this._provider === provider)) return [3 /*break*/, 7];
733
- lib_1.logger.info("OnAccountsChanged: Detecting disconnect, current state:", {
784
+ logger_1.logger.info("OnAccountsChanged: Detecting disconnect, current state:", {
734
785
  currentAddress: this.currentAddress,
735
786
  currentChainId: this.currentChainId,
736
787
  providerMatch: this._provider === provider,
@@ -750,11 +801,11 @@ var FormoAnalytics = /** @class */ (function () {
750
801
  return [3 /*break*/, 4];
751
802
  case 3:
752
803
  error_1 = _a.sent();
753
- lib_1.logger.error("Failed to disconnect provider on accountsChanged", error_1);
804
+ logger_1.logger.error("Failed to disconnect provider on accountsChanged", error_1);
754
805
  return [3 /*break*/, 4];
755
806
  case 4: return [3 /*break*/, 6];
756
807
  case 5:
757
- lib_1.logger.debug("OnAccountsChanged: Disconnect event skipped (autocapture.disconnect: false)");
808
+ logger_1.logger.debug("OnAccountsChanged: Disconnect event skipped (autocapture.disconnect: false)");
758
809
  // Still clear state even if not tracking the event
759
810
  this.currentAddress = undefined;
760
811
  this.currentChainId = undefined;
@@ -762,19 +813,19 @@ var FormoAnalytics = /** @class */ (function () {
762
813
  _a.label = 6;
763
814
  case 6: return [3 /*break*/, 8];
764
815
  case 7:
765
- lib_1.logger.info("OnAccountsChanged: Ignoring disconnect for non-active provider");
816
+ logger_1.logger.info("OnAccountsChanged: Ignoring disconnect for non-active provider");
766
817
  _a.label = 8;
767
818
  case 8: return [2 /*return*/];
768
819
  case 9:
769
820
  address = this.validateAndChecksumAddress(accounts[0]);
770
821
  if (!address) {
771
- lib_1.logger.warn("onAccountsChanged: Invalid address received", accounts[0]);
822
+ logger_1.logger.warn("onAccountsChanged: Invalid address received", accounts[0]);
772
823
  return [2 /*return*/];
773
824
  }
774
825
  if (!(this._provider && this._provider !== provider)) return [3 /*break*/, 26];
775
826
  currentStoredAddress = this.currentAddress;
776
827
  newProviderAddress = this.validateAndChecksumAddress(address);
777
- lib_1.logger.info("OnAccountsChanged: Different provider attempting to connect", {
828
+ logger_1.logger.info("OnAccountsChanged: Different provider attempting to connect", {
778
829
  activeProvider: this.getProviderInfo(this._provider).name,
779
830
  eventProvider: this.getProviderInfo(provider).name,
780
831
  currentStoredAddress: currentStoredAddress,
@@ -786,7 +837,7 @@ var FormoAnalytics = /** @class */ (function () {
786
837
  return [4 /*yield*/, this.getAccounts(this._provider)];
787
838
  case 11:
788
839
  activeProviderAccounts = _a.sent();
789
- lib_1.logger.info("OnAccountsChanged: Checking current provider accounts", {
840
+ logger_1.logger.info("OnAccountsChanged: Checking current provider accounts", {
790
841
  activeProvider: this.getProviderInfo(this._provider).name,
791
842
  accountsLength: activeProviderAccounts
792
843
  ? activeProviderAccounts.length
@@ -797,7 +848,7 @@ var FormoAnalytics = /** @class */ (function () {
797
848
  if (!(newProviderAddress &&
798
849
  currentStoredAddress &&
799
850
  newProviderAddress !== currentStoredAddress)) return [3 /*break*/, 15];
800
- lib_1.logger.info("OnAccountsChanged: Different address detected, switching providers despite current provider having accounts", {
851
+ logger_1.logger.info("OnAccountsChanged: Different address detected, switching providers despite current provider having accounts", {
801
852
  activeProvider: this.getProviderInfo(this._provider).name,
802
853
  eventProvider: this.getProviderInfo(provider).name,
803
854
  currentAddress: currentStoredAddress,
@@ -813,7 +864,7 @@ var FormoAnalytics = /** @class */ (function () {
813
864
  _a.sent();
814
865
  return [3 /*break*/, 14];
815
866
  case 13:
816
- lib_1.logger.debug("OnAccountsChanged: Disconnect event skipped during provider switch (autocapture.disconnect: false)");
867
+ logger_1.logger.debug("OnAccountsChanged: Disconnect event skipped during provider switch (autocapture.disconnect: false)");
817
868
  // Still clear state even if not tracking the event
818
869
  this.currentAddress = undefined;
819
870
  this.currentChainId = undefined;
@@ -823,7 +874,7 @@ var FormoAnalytics = /** @class */ (function () {
823
874
  this.clearActiveProvider();
824
875
  return [3 /*break*/, 16];
825
876
  case 15:
826
- lib_1.logger.info("OnAccountsChanged: Current provider still has accounts and same address, ignoring new provider", {
877
+ logger_1.logger.info("OnAccountsChanged: Current provider still has accounts and same address, ignoring new provider", {
827
878
  activeProvider: this.getProviderInfo(this._provider).name,
828
879
  eventProvider: this.getProviderInfo(provider).name,
829
880
  activeProviderAccountsCount: activeProviderAccounts.length,
@@ -833,7 +884,7 @@ var FormoAnalytics = /** @class */ (function () {
833
884
  return [2 /*return*/];
834
885
  case 16: return [3 /*break*/, 21];
835
886
  case 17:
836
- lib_1.logger.info("OnAccountsChanged: Current provider has no accounts, switching to new provider", {
887
+ logger_1.logger.info("OnAccountsChanged: Current provider has no accounts, switching to new provider", {
837
888
  oldProvider: this.getProviderInfo(this._provider).name,
838
889
  newProvider: this.getProviderInfo(provider).name,
839
890
  reason: PROVIDER_SWITCH_REASONS.NO_ACCOUNTS,
@@ -847,7 +898,7 @@ var FormoAnalytics = /** @class */ (function () {
847
898
  _a.sent();
848
899
  return [3 /*break*/, 20];
849
900
  case 19:
850
- lib_1.logger.debug("OnAccountsChanged: Disconnect event skipped for old provider (autocapture.disconnect: false)");
901
+ logger_1.logger.debug("OnAccountsChanged: Disconnect event skipped for old provider (autocapture.disconnect: false)");
851
902
  // Still clear state even if not tracking the event
852
903
  this.currentAddress = undefined;
853
904
  this.currentChainId = undefined;
@@ -859,7 +910,7 @@ var FormoAnalytics = /** @class */ (function () {
859
910
  case 21: return [3 /*break*/, 26];
860
911
  case 22:
861
912
  error_2 = _a.sent();
862
- lib_1.logger.warn("OnAccountsChanged: Could not check current provider accounts, switching to new provider", {
913
+ logger_1.logger.warn("OnAccountsChanged: Could not check current provider accounts, switching to new provider", {
863
914
  error: error_2 instanceof Error ? error_2.message : String(error_2),
864
915
  errorType: error_2 instanceof Error ? error_2.constructor.name : typeof error_2,
865
916
  oldProvider: this._provider
@@ -877,7 +928,7 @@ var FormoAnalytics = /** @class */ (function () {
877
928
  _a.sent();
878
929
  return [3 /*break*/, 25];
879
930
  case 24:
880
- lib_1.logger.debug("OnAccountsChanged: Disconnect event skipped for failed provider check (autocapture.disconnect: false)");
931
+ logger_1.logger.debug("OnAccountsChanged: Disconnect event skipped for failed provider check (autocapture.disconnect: false)");
881
932
  // Still clear state even if not tracking the event
882
933
  this.currentAddress = undefined;
883
934
  this.currentChainId = undefined;
@@ -905,7 +956,7 @@ var FormoAnalytics = /** @class */ (function () {
905
956
  providerInfo = this.getProviderInfo(provider);
906
957
  effectiveChainId = nextChainId || 0;
907
958
  if (this.isAutocaptureEnabled("connect")) {
908
- lib_1.logger.info("OnAccountsChanged: Detected wallet connection, emitting connect event", {
959
+ logger_1.logger.info("OnAccountsChanged: Detected wallet connection, emitting connect event", {
909
960
  chainId: nextChainId,
910
961
  address: address,
911
962
  wasDisconnected: wasDisconnected,
@@ -914,7 +965,7 @@ var FormoAnalytics = /** @class */ (function () {
914
965
  hasChainId: !!nextChainId,
915
966
  });
916
967
  if (effectiveChainId === 0) {
917
- lib_1.logger.info("OnAccountsChanged: Using fallback chainId 0 for connect event");
968
+ logger_1.logger.info("OnAccountsChanged: Using fallback chainId 0 for connect event");
918
969
  }
919
970
  this.connect({
920
971
  chainId: effectiveChainId,
@@ -923,11 +974,11 @@ var FormoAnalytics = /** @class */ (function () {
923
974
  providerName: providerInfo.name,
924
975
  rdns: providerInfo.rdns,
925
976
  }).catch(function (error) {
926
- lib_1.logger.error("Failed to track connect event during account change:", error);
977
+ logger_1.logger.error("Failed to track connect event during account change:", error);
927
978
  });
928
979
  }
929
980
  else {
930
- lib_1.logger.debug("OnAccountsChanged: Connect event skipped (autocapture.connect: false)", {
981
+ logger_1.logger.debug("OnAccountsChanged: Connect event skipped (autocapture.connect: false)", {
931
982
  chainId: nextChainId,
932
983
  address: address,
933
984
  providerName: providerInfo.name,
@@ -940,7 +991,7 @@ var FormoAnalytics = /** @class */ (function () {
940
991
  };
941
992
  FormoAnalytics.prototype.registerChainChangedListener = function (provider) {
942
993
  var _this = this;
943
- lib_1.logger.info("registerChainChangedListener");
994
+ logger_1.logger.info("registerChainChangedListener");
944
995
  var listener = function () {
945
996
  var args = [];
946
997
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -955,7 +1006,7 @@ var FormoAnalytics = /** @class */ (function () {
955
1006
  return __awaiter(this, void 0, void 0, function () {
956
1007
  var nextChainId;
957
1008
  return __generator(this, function (_a) {
958
- lib_1.logger.info("onChainChanged", chainIdHex);
1009
+ logger_1.logger.info("onChainChanged", chainIdHex);
959
1010
  nextChainId = (0, chain_1.parseChainId)(chainIdHex);
960
1011
  // Only handle chain changes for the active provider (or if none is set yet)
961
1012
  if (this.isProviderMismatch(provider)) {
@@ -963,7 +1014,7 @@ var FormoAnalytics = /** @class */ (function () {
963
1014
  }
964
1015
  // Chain changes only matter for connected users
965
1016
  if (!this.currentAddress) {
966
- lib_1.logger.info("OnChainChanged: No current address, user appears disconnected");
1017
+ logger_1.logger.info("OnChainChanged: No current address, user appears disconnected");
967
1018
  return [2 /*return*/, Promise.resolve()];
968
1019
  }
969
1020
  // Set provider if none exists
@@ -980,14 +1031,14 @@ var FormoAnalytics = /** @class */ (function () {
980
1031
  })];
981
1032
  }
982
1033
  else {
983
- lib_1.logger.debug("OnChainChanged: Chain event skipped (autocapture.chain: false)", {
1034
+ logger_1.logger.debug("OnChainChanged: Chain event skipped (autocapture.chain: false)", {
984
1035
  chainId: this.currentChainId,
985
1036
  address: this.currentAddress,
986
1037
  });
987
1038
  }
988
1039
  }
989
1040
  catch (error) {
990
- lib_1.logger.error("OnChainChanged: Failed to emit chain event:", error);
1041
+ logger_1.logger.error("OnChainChanged: Failed to emit chain event:", error);
991
1042
  }
992
1043
  return [2 /*return*/];
993
1044
  });
@@ -995,7 +1046,7 @@ var FormoAnalytics = /** @class */ (function () {
995
1046
  };
996
1047
  FormoAnalytics.prototype.registerConnectListener = function (provider) {
997
1048
  var _this = this;
998
- lib_1.logger.info("registerConnectListener");
1049
+ logger_1.logger.info("registerConnectListener");
999
1050
  var listener = function () {
1000
1051
  var args = [];
1001
1052
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -1009,7 +1060,7 @@ var FormoAnalytics = /** @class */ (function () {
1009
1060
  };
1010
1061
  FormoAnalytics.prototype.registerDisconnectListener = function (provider) {
1011
1062
  var _this = this;
1012
- lib_1.logger.info("registerDisconnectListener");
1063
+ logger_1.logger.info("registerDisconnectListener");
1013
1064
  var listener = function (_error) { return __awaiter(_this, void 0, void 0, function () {
1014
1065
  var e_2;
1015
1066
  return __generator(this, function (_a) {
@@ -1017,7 +1068,7 @@ var FormoAnalytics = /** @class */ (function () {
1017
1068
  case 0:
1018
1069
  if (this._provider !== provider)
1019
1070
  return [2 /*return*/];
1020
- lib_1.logger.info("OnDisconnect: Wallet disconnect event received, current state:", {
1071
+ logger_1.logger.info("OnDisconnect: Wallet disconnect event received, current state:", {
1021
1072
  currentAddress: this.currentAddress,
1022
1073
  currentChainId: this.currentChainId,
1023
1074
  });
@@ -1036,11 +1087,11 @@ var FormoAnalytics = /** @class */ (function () {
1036
1087
  return [3 /*break*/, 4];
1037
1088
  case 3:
1038
1089
  e_2 = _a.sent();
1039
- lib_1.logger.error("Error during disconnect in disconnect listener", e_2);
1090
+ logger_1.logger.error("Error during disconnect in disconnect listener", e_2);
1040
1091
  return [3 /*break*/, 4];
1041
1092
  case 4: return [3 /*break*/, 6];
1042
1093
  case 5:
1043
- lib_1.logger.debug("OnDisconnect: Disconnect event skipped (autocapture.disconnect: false)");
1094
+ logger_1.logger.debug("OnDisconnect: Disconnect event skipped (autocapture.disconnect: false)");
1044
1095
  // Still clear state even if not tracking the event
1045
1096
  this.currentAddress = undefined;
1046
1097
  this.currentChainId = undefined;
@@ -1059,7 +1110,7 @@ var FormoAnalytics = /** @class */ (function () {
1059
1110
  return __generator(this, function (_a) {
1060
1111
  switch (_a.label) {
1061
1112
  case 0:
1062
- lib_1.logger.info("onConnected", connection);
1113
+ logger_1.logger.info("onConnected", connection);
1063
1114
  _a.label = 1;
1064
1115
  case 1:
1065
1116
  _a.trys.push([1, 3, , 4]);
@@ -1088,7 +1139,7 @@ var FormoAnalytics = /** @class */ (function () {
1088
1139
  providerInfo = this.getProviderInfo(provider);
1089
1140
  effectiveChainId = chainId || 0;
1090
1141
  if (this.isAutocaptureEnabled("connect")) {
1091
- lib_1.logger.info("OnConnected: Detected wallet connection, emitting connect event", {
1142
+ logger_1.logger.info("OnConnected: Detected wallet connection, emitting connect event", {
1092
1143
  chainId: chainId,
1093
1144
  wasDisconnected: wasDisconnected,
1094
1145
  providerName: providerInfo.name,
@@ -1097,7 +1148,7 @@ var FormoAnalytics = /** @class */ (function () {
1097
1148
  isActiveProvider: isActiveProvider,
1098
1149
  });
1099
1150
  if (effectiveChainId === 0) {
1100
- lib_1.logger.info("OnConnected: Using fallback chainId 0 for connect event");
1151
+ logger_1.logger.info("OnConnected: Using fallback chainId 0 for connect event");
1101
1152
  }
1102
1153
  this.connect({
1103
1154
  chainId: effectiveChainId,
@@ -1106,11 +1157,11 @@ var FormoAnalytics = /** @class */ (function () {
1106
1157
  providerName: providerInfo.name,
1107
1158
  rdns: providerInfo.rdns,
1108
1159
  }).catch(function (error) {
1109
- lib_1.logger.error("Failed to track connect event during provider connection:", error);
1160
+ logger_1.logger.error("Failed to track connect event during provider connection:", error);
1110
1161
  });
1111
1162
  }
1112
1163
  else {
1113
- lib_1.logger.debug("OnConnected: Connect event skipped (autocapture.connect: false)", {
1164
+ logger_1.logger.debug("OnConnected: Connect event skipped (autocapture.connect: false)", {
1114
1165
  chainId: chainId,
1115
1166
  address: address,
1116
1167
  providerName: providerInfo.name,
@@ -1119,7 +1170,7 @@ var FormoAnalytics = /** @class */ (function () {
1119
1170
  }
1120
1171
  else if (address && !isActiveProvider) {
1121
1172
  providerInfo = this.getProviderInfo(provider);
1122
- lib_1.logger.debug("OnConnected: Skipping connect event for non-active provider", {
1173
+ logger_1.logger.debug("OnConnected: Skipping connect event for non-active provider", {
1123
1174
  chainId: chainId,
1124
1175
  providerName: providerInfo.name,
1125
1176
  rdns: providerInfo.rdns,
@@ -1133,7 +1184,7 @@ var FormoAnalytics = /** @class */ (function () {
1133
1184
  return [3 /*break*/, 4];
1134
1185
  case 3:
1135
1186
  e_3 = _a.sent();
1136
- lib_1.logger.error("Error handling connect event", e_3);
1187
+ logger_1.logger.error("Error handling connect event", e_3);
1137
1188
  return [3 /*break*/, 4];
1138
1189
  case 4: return [2 /*return*/];
1139
1190
  }
@@ -1142,15 +1193,15 @@ var FormoAnalytics = /** @class */ (function () {
1142
1193
  };
1143
1194
  FormoAnalytics.prototype.registerRequestListeners = function (provider) {
1144
1195
  var _this = this;
1145
- lib_1.logger.info("registerRequestListeners");
1196
+ logger_1.logger.info("registerRequestListeners");
1146
1197
  if (!provider) {
1147
- lib_1.logger.error("Provider not found for request (signature, transaction) tracking");
1198
+ logger_1.logger.error("Provider not found for request (signature, transaction) tracking");
1148
1199
  return;
1149
1200
  }
1150
1201
  // Check if the provider is already wrapped with our SDK's wrapper
1151
1202
  var currentRequest = provider.request;
1152
1203
  if (this.isProviderAlreadyWrapped(provider, currentRequest)) {
1153
- lib_1.logger.info("Provider already wrapped with our SDK; skipping request wrapping.");
1204
+ logger_1.logger.info("Provider already wrapped with our SDK; skipping request wrapping.");
1154
1205
  return;
1155
1206
  }
1156
1207
  var request = provider.request.bind(provider);
@@ -1164,7 +1215,7 @@ var FormoAnalytics = /** @class */ (function () {
1164
1215
  if (!(Array.isArray(params) &&
1165
1216
  ["eth_signTypedData_v4", "personal_sign"].includes(method))) return [3 /*break*/, 6];
1166
1217
  if (!this.isAutocaptureEnabled("signature")) {
1167
- lib_1.logger.debug("Signature event skipped (autocapture.signature: false)", { method: method });
1218
+ logger_1.logger.debug("Signature event skipped (autocapture.signature: false)", { method: method });
1168
1219
  return [2 /*return*/, request({ method: method, params: params })];
1169
1220
  }
1170
1221
  _c = this.currentChainId;
@@ -1182,7 +1233,7 @@ var FormoAnalytics = /** @class */ (function () {
1182
1233
  this.signature(__assign({ status: types_1.SignatureStatus.REQUESTED }, this.buildSignatureEventPayload(method, params, undefined, capturedChainId_1)));
1183
1234
  }
1184
1235
  catch (e) {
1185
- lib_1.logger.error("Formo: Failed to track signature request", e);
1236
+ logger_1.logger.error("Formo: Failed to track signature request", e);
1186
1237
  }
1187
1238
  return [2 /*return*/];
1188
1239
  });
@@ -1201,7 +1252,7 @@ var FormoAnalytics = /** @class */ (function () {
1201
1252
  this.signature(__assign({ status: types_1.SignatureStatus.CONFIRMED }, this.buildSignatureEventPayload(method, params, response_1, capturedChainId_1)));
1202
1253
  }
1203
1254
  catch (e) {
1204
- lib_1.logger.error("Formo: Failed to track signature confirmation", e);
1255
+ logger_1.logger.error("Formo: Failed to track signature confirmation", e);
1205
1256
  }
1206
1257
  return [2 /*return*/];
1207
1258
  });
@@ -1219,7 +1270,7 @@ var FormoAnalytics = /** @class */ (function () {
1219
1270
  this.signature(__assign({ status: types_1.SignatureStatus.REJECTED }, this.buildSignatureEventPayload(method, params, undefined, capturedChainId_1)));
1220
1271
  }
1221
1272
  catch (e) {
1222
- lib_1.logger.error("Formo: Failed to track signature rejection", e);
1273
+ logger_1.logger.error("Formo: Failed to track signature rejection", e);
1223
1274
  }
1224
1275
  return [2 /*return*/];
1225
1276
  });
@@ -1231,7 +1282,7 @@ var FormoAnalytics = /** @class */ (function () {
1231
1282
  method === "eth_sendTransaction" &&
1232
1283
  params[0])) return [3 /*break*/, 10];
1233
1284
  if (!this.isAutocaptureEnabled("transaction")) {
1234
- lib_1.logger.debug("Transaction event skipped (autocapture.transaction: false)", { method: method });
1285
+ logger_1.logger.debug("Transaction event skipped (autocapture.transaction: false)", { method: method });
1235
1286
  return [2 /*return*/, request({ method: method, params: params })];
1236
1287
  }
1237
1288
  (function () { return __awaiter(_this, void 0, void 0, function () {
@@ -1247,7 +1298,7 @@ var FormoAnalytics = /** @class */ (function () {
1247
1298
  return [3 /*break*/, 3];
1248
1299
  case 2:
1249
1300
  e_4 = _a.sent();
1250
- lib_1.logger.error("Formo: Failed to track transaction start", e_4);
1301
+ logger_1.logger.error("Formo: Failed to track transaction start", e_4);
1251
1302
  return [3 /*break*/, 3];
1252
1303
  case 3: return [2 /*return*/];
1253
1304
  }
@@ -1277,7 +1328,7 @@ var FormoAnalytics = /** @class */ (function () {
1277
1328
  return [3 /*break*/, 3];
1278
1329
  case 2:
1279
1330
  e_5 = _a.sent();
1280
- lib_1.logger.error("Formo: Failed to track transaction broadcast", e_5);
1331
+ logger_1.logger.error("Formo: Failed to track transaction broadcast", e_5);
1281
1332
  return [3 /*break*/, 3];
1282
1333
  case 3: return [2 /*return*/];
1283
1334
  }
@@ -1302,7 +1353,7 @@ var FormoAnalytics = /** @class */ (function () {
1302
1353
  return [3 /*break*/, 3];
1303
1354
  case 2:
1304
1355
  e_6 = _a.sent();
1305
- lib_1.logger.error("Formo: Failed to track transaction rejection", e_6);
1356
+ logger_1.logger.error("Formo: Failed to track transaction rejection", e_6);
1306
1357
  return [3 /*break*/, 3];
1307
1358
  case 3: return [2 /*return*/];
1308
1359
  }
@@ -1323,16 +1374,16 @@ var FormoAnalytics = /** @class */ (function () {
1323
1374
  provider.request = wrappedRequest;
1324
1375
  }
1325
1376
  catch (e) {
1326
- lib_1.logger.warn("Failed to wrap provider.request; skipping", e);
1377
+ logger_1.logger.warn("Failed to wrap provider.request; skipping", e);
1327
1378
  }
1328
1379
  };
1329
1380
  FormoAnalytics.prototype.onLocationChange = function () {
1330
1381
  return __awaiter(this, void 0, void 0, function () {
1331
1382
  var currentUrl;
1332
1383
  return __generator(this, function (_a) {
1333
- currentUrl = (0, lib_1.cookie)().get(constants_1.SESSION_CURRENT_URL_KEY);
1384
+ currentUrl = (0, storage_1.cookie)().get(constants_1.SESSION_CURRENT_URL_KEY);
1334
1385
  if (currentUrl !== window.location.href) {
1335
- (0, lib_1.cookie)().set(constants_1.SESSION_CURRENT_URL_KEY, window.location.href);
1386
+ (0, storage_1.cookie)().set(constants_1.SESSION_CURRENT_URL_KEY, window.location.href);
1336
1387
  this.trackPageHit();
1337
1388
  }
1338
1389
  return [2 /*return*/];
@@ -1375,7 +1426,7 @@ var FormoAnalytics = /** @class */ (function () {
1375
1426
  var _this = this;
1376
1427
  return __generator(this, function (_a) {
1377
1428
  if (!this.shouldTrack()) {
1378
- lib_1.logger.info("Track page hit: Skipping event due to tracking configuration");
1429
+ logger_1.logger.info("Track page hit: Skipping event due to tracking configuration");
1379
1430
  return [2 /*return*/];
1380
1431
  }
1381
1432
  setTimeout(function () {
@@ -1394,7 +1445,7 @@ var FormoAnalytics = /** @class */ (function () {
1394
1445
  return [3 /*break*/, 3];
1395
1446
  case 2:
1396
1447
  e_7 = _a.sent();
1397
- lib_1.logger.error("Formo: Failed to track page hit", e_7);
1448
+ logger_1.logger.error("Formo: Failed to track page hit", e_7);
1398
1449
  return [3 /*break*/, 3];
1399
1450
  case 3: return [2 /*return*/];
1400
1451
  }
@@ -1413,7 +1464,7 @@ var FormoAnalytics = /** @class */ (function () {
1413
1464
  case 0:
1414
1465
  _a.trys.push([0, 2, , 3]);
1415
1466
  if (!this.shouldTrack()) {
1416
- lib_1.logger.info("Skipping ".concat(type, " event due to tracking configuration"));
1467
+ logger_1.logger.info("Skipping ".concat(type, " event due to tracking configuration"));
1417
1468
  return [2 /*return*/];
1418
1469
  }
1419
1470
  return [4 /*yield*/, this.eventManager.addEvent(__assign(__assign({ type: type }, payload), { properties: properties, context: context, callback: callback }), this.currentAddress, this.currentUserId)];
@@ -1422,7 +1473,7 @@ var FormoAnalytics = /** @class */ (function () {
1422
1473
  return [3 /*break*/, 3];
1423
1474
  case 2:
1424
1475
  error_5 = _a.sent();
1425
- lib_1.logger.error("Error tracking event:", error_5);
1476
+ logger_1.logger.error("Error tracking event:", error_5);
1426
1477
  return [3 /*break*/, 3];
1427
1478
  case 3: return [2 /*return*/];
1428
1479
  }
@@ -1515,60 +1566,12 @@ var FormoAnalytics = /** @class */ (function () {
1515
1566
  };
1516
1567
  }
1517
1568
  // Fallback to injected provider detection
1518
- var injectedInfo = this.detectInjectedProviderInfo(provider);
1569
+ var injectedInfo = (0, provider_1.detectInjectedProviderInfo)(provider);
1519
1570
  return {
1520
1571
  name: injectedInfo.name,
1521
1572
  rdns: injectedInfo.rdns,
1522
1573
  };
1523
1574
  };
1524
- /**
1525
- * Attempts to detect information about an injected provider
1526
- * @param provider The injected provider to analyze
1527
- * @returns Provider information with fallback values
1528
- */
1529
- FormoAnalytics.prototype.detectInjectedProviderInfo = function (provider) {
1530
- // Try to detect provider type from common properties
1531
- var name = "Injected Provider";
1532
- var rdns = "io.injected.provider";
1533
- // Use WalletProviderFlags interface for type safety
1534
- var flags = provider;
1535
- // Check if it's MetaMask
1536
- if (flags.isMetaMask) {
1537
- name = "MetaMask";
1538
- rdns = "io.metamask";
1539
- }
1540
- // Check if it's Coinbase Wallet
1541
- else if (flags.isCoinbaseWallet) {
1542
- name = "Coinbase Wallet";
1543
- rdns = "com.coinbase.wallet";
1544
- }
1545
- // Check if it's WalletConnect
1546
- else if (flags.isWalletConnect) {
1547
- name = "WalletConnect";
1548
- rdns = "com.walletconnect";
1549
- }
1550
- // Check if it's Trust Wallet
1551
- else if (flags.isTrust) {
1552
- name = "Trust Wallet";
1553
- rdns = "com.trustwallet";
1554
- }
1555
- // Check if it's Brave Wallet
1556
- else if (flags.isBraveWallet) {
1557
- name = "Brave Wallet";
1558
- rdns = "com.brave.wallet";
1559
- }
1560
- // Check if it's Phantom
1561
- else if (flags.isPhantom) {
1562
- name = "Phantom";
1563
- rdns = "app.phantom";
1564
- }
1565
- return {
1566
- name: name,
1567
- rdns: rdns,
1568
- uuid: "injected-".concat(rdns.replace(/[^a-zA-Z0-9]/g, "-")),
1569
- icon: constants_1.DEFAULT_PROVIDER_ICON,
1570
- };
1571
- };
1572
1575
  FormoAnalytics.prototype.getProviders = function () {
1573
1576
  return __awaiter(this, void 0, void 0, function () {
1574
1577
  var store, providers, injected_1, injectedProviderInfo, injectedDetail, uniqueProviders, _i, uniqueProviders_1, detail;
@@ -1608,7 +1611,7 @@ var FormoAnalytics = /** @class */ (function () {
1608
1611
  return [3 /*break*/, 3];
1609
1612
  case 2:
1610
1613
  e_8 = _a.sent();
1611
- lib_1.logger.error("Formo: Failed to detect wallets", e_8);
1614
+ logger_1.logger.error("Formo: Failed to detect wallets", e_8);
1612
1615
  return [3 /*break*/, 3];
1613
1616
  case 3: return [2 /*return*/];
1614
1617
  }
@@ -1627,7 +1630,7 @@ var FormoAnalytics = /** @class */ (function () {
1627
1630
  this._injectedProviderDetail.provider === injected_1) {
1628
1631
  // Ensure it's tracked
1629
1632
  if (!this._trackedProviders.has(injected_1)) {
1630
- this.trackProvider(injected_1);
1633
+ this.trackEIP1193Provider(injected_1);
1631
1634
  }
1632
1635
  // Merge with existing providers instead of overwriting
1633
1636
  if (!this._providers.some(function (existing) { return existing.provider === injected_1; })) {
@@ -1639,9 +1642,9 @@ var FormoAnalytics = /** @class */ (function () {
1639
1642
  }
1640
1643
  // Re-check if the injected provider is already tracked just before tracking
1641
1644
  if (!this._trackedProviders.has(injected_1)) {
1642
- this.trackProvider(injected_1);
1645
+ this.trackEIP1193Provider(injected_1);
1643
1646
  }
1644
- injectedProviderInfo = this.detectInjectedProviderInfo(injected_1);
1647
+ injectedProviderInfo = (0, provider_1.detectInjectedProviderInfo)(injected_1);
1645
1648
  injectedDetail = {
1646
1649
  provider: injected_1,
1647
1650
  info: injectedProviderInfo,
@@ -1698,7 +1701,7 @@ var FormoAnalytics = /** @class */ (function () {
1698
1701
  case 4: return [3 /*break*/, 6];
1699
1702
  case 5:
1700
1703
  err_2 = _a.sent();
1701
- lib_1.logger.error("Error detect all wallets:", err_2);
1704
+ logger_1.logger.error("Error detect all wallets:", err_2);
1702
1705
  return [3 /*break*/, 6];
1703
1706
  case 6: return [2 /*return*/];
1704
1707
  }
@@ -1722,7 +1725,7 @@ var FormoAnalytics = /** @class */ (function () {
1722
1725
  return [2 /*return*/, this.currentAddress];
1723
1726
  p = provider || this.provider;
1724
1727
  if (!p) {
1725
- lib_1.logger.info("The provider is not set");
1728
+ logger_1.logger.info("The provider is not set");
1726
1729
  return [2 /*return*/, null];
1727
1730
  }
1728
1731
  _a.label = 1;
@@ -1739,7 +1742,7 @@ var FormoAnalytics = /** @class */ (function () {
1739
1742
  err_3 = _a.sent();
1740
1743
  code = err_3 === null || err_3 === void 0 ? void 0 : err_3.code;
1741
1744
  if (code !== 4001) {
1742
- lib_1.logger.error("FormoAnalytics::getAccounts: eth_accounts threw an error", err_3);
1745
+ logger_1.logger.error("FormoAnalytics::getAccounts: eth_accounts threw an error", err_3);
1743
1746
  }
1744
1747
  return [2 /*return*/, null];
1745
1748
  case 4: return [2 /*return*/, null];
@@ -1772,7 +1775,7 @@ var FormoAnalytics = /** @class */ (function () {
1772
1775
  err_4 = _a.sent();
1773
1776
  code = err_4 === null || err_4 === void 0 ? void 0 : err_4.code;
1774
1777
  if (code !== 4001) {
1775
- lib_1.logger.error("FormoAnalytics::getAccounts: eth_accounts threw an error", err_4);
1778
+ logger_1.logger.error("FormoAnalytics::getAccounts: eth_accounts threw an error", err_4);
1776
1779
  }
1777
1780
  return [2 /*return*/, null];
1778
1781
  case 4: return [2 /*return*/];
@@ -1788,7 +1791,7 @@ var FormoAnalytics = /** @class */ (function () {
1788
1791
  case 0:
1789
1792
  p = provider || this.provider;
1790
1793
  if (!p) {
1791
- lib_1.logger.error("Provider not set for chain ID");
1794
+ logger_1.logger.error("Provider not set for chain ID");
1792
1795
  return [2 /*return*/, 0];
1793
1796
  }
1794
1797
  _a.label = 1;
@@ -1800,13 +1803,13 @@ var FormoAnalytics = /** @class */ (function () {
1800
1803
  case 2:
1801
1804
  chainIdHex = _a.sent();
1802
1805
  if (!chainIdHex) {
1803
- lib_1.logger.info("Chain id not found");
1806
+ logger_1.logger.info("Chain id not found");
1804
1807
  return [2 /*return*/, 0];
1805
1808
  }
1806
1809
  return [2 /*return*/, (0, chain_1.parseChainId)(chainIdHex)];
1807
1810
  case 3:
1808
1811
  err_5 = _a.sent();
1809
- lib_1.logger.error("eth_chainId threw an error:", err_5);
1812
+ logger_1.logger.error("eth_chainId threw an error:", err_5);
1810
1813
  return [2 /*return*/, 0];
1811
1814
  case 4: return [2 /*return*/];
1812
1815
  }
@@ -1864,7 +1867,7 @@ var FormoAnalytics = /** @class */ (function () {
1864
1867
  /**
1865
1868
  * Polls for transaction receipt and emits tx.status = CONFIRMED or REVERTED.
1866
1869
  */
1867
- FormoAnalytics.prototype.pollTransactionReceipt = function (provider_1, transactionHash_2, payload_1) {
1870
+ FormoAnalytics.prototype.pollTransactionReceipt = function (provider_2, transactionHash_2, payload_1) {
1868
1871
  return __awaiter(this, arguments, void 0, function (provider, transactionHash, payload, maxAttempts, intervalMs) {
1869
1872
  var attempts, poll;
1870
1873
  var _this = this;
@@ -1900,7 +1903,7 @@ var FormoAnalytics = /** @class */ (function () {
1900
1903
  return [3 /*break*/, 3];
1901
1904
  case 2:
1902
1905
  e_9 = _a.sent();
1903
- lib_1.logger.error("Error polling transaction receipt", e_9);
1906
+ logger_1.logger.error("Error polling transaction receipt", e_9);
1904
1907
  return [3 /*break*/, 3];
1905
1908
  case 3:
1906
1909
  attempts++;
@@ -1921,12 +1924,12 @@ var FormoAnalytics = /** @class */ (function () {
1921
1924
  if (!listeners)
1922
1925
  return;
1923
1926
  for (var _i = 0, _a = Object.entries(listeners); _i < _a.length; _i++) {
1924
- var _b = _a[_i], event_1 = _b[0], fn = _b[1];
1927
+ var _b = _a[_i], event_2 = _b[0], fn = _b[1];
1925
1928
  try {
1926
- provider.removeListener(event_1, fn);
1929
+ provider.removeListener(event_2, fn);
1927
1930
  }
1928
1931
  catch (e) {
1929
- lib_1.logger.warn("Failed to remove listener for ".concat(String(event_1)), e);
1932
+ logger_1.logger.warn("Failed to remove listener for ".concat(String(event_2)), e);
1930
1933
  }
1931
1934
  }
1932
1935
  this._providerListenersMap.delete(provider);
@@ -1941,7 +1944,7 @@ var FormoAnalytics = /** @class */ (function () {
1941
1944
  }
1942
1945
  }
1943
1946
  catch (e) {
1944
- lib_1.logger.warn("Failed to untrack provider", e);
1947
+ logger_1.logger.warn("Failed to untrack provider", e);
1945
1948
  }
1946
1949
  };
1947
1950
  // Debug/monitoring helpers
@@ -1970,7 +1973,7 @@ var FormoAnalytics = /** @class */ (function () {
1970
1973
  for (var _i = 0, _a = Array.from(this._trackedProviders); _i < _a.length; _i++) {
1971
1974
  var provider = _a[_i];
1972
1975
  if (!currentProviderInstances.has(provider)) {
1973
- lib_1.logger.info("Cleaning up unavailable provider: ".concat(provider.constructor.name));
1976
+ logger_1.logger.info("Cleaning up unavailable provider: ".concat(provider.constructor.name));
1974
1977
  this.untrackProvider(provider);
1975
1978
  }
1976
1979
  }
@@ -2043,67 +2046,4 @@ var FormoAnalytics = /** @class */ (function () {
2043
2046
  return FormoAnalytics;
2044
2047
  }());
2045
2048
  exports.FormoAnalytics = FormoAnalytics;
2046
- var FormoAnalyticsSession = /** @class */ (function () {
2047
- function FormoAnalyticsSession() {
2048
- }
2049
- FormoAnalyticsSession.prototype.generateIdentificationKey = function (address, rdns) {
2050
- // If rdns is missing, use address-only key as fallback for empty identifies
2051
- return rdns ? "".concat(address, ":").concat(rdns) : address;
2052
- };
2053
- FormoAnalyticsSession.prototype.isWalletDetected = function (rdns) {
2054
- var _a;
2055
- var rdnses = ((_a = (0, lib_1.cookie)().get(constants_1.SESSION_WALLET_DETECTED_KEY)) === null || _a === void 0 ? void 0 : _a.split(",")) || [];
2056
- return rdnses.includes(rdns);
2057
- };
2058
- FormoAnalyticsSession.prototype.markWalletDetected = function (rdns) {
2059
- var _a;
2060
- var rdnses = ((_a = (0, lib_1.cookie)().get(constants_1.SESSION_WALLET_DETECTED_KEY)) === null || _a === void 0 ? void 0 : _a.split(",")) || [];
2061
- if (!rdnses.includes(rdns)) {
2062
- rdnses.push(rdns);
2063
- (0, lib_1.cookie)().set(constants_1.SESSION_WALLET_DETECTED_KEY, rdnses.join(","), {
2064
- // by the end of the day
2065
- expires: new Date(Date.now() + 86400 * 1000).toUTCString(),
2066
- path: "/",
2067
- });
2068
- }
2069
- };
2070
- FormoAnalyticsSession.prototype.isWalletIdentified = function (address, rdns) {
2071
- var identifiedKey = this.generateIdentificationKey(address, rdns);
2072
- var cookieValue = (0, lib_1.cookie)().get(constants_1.SESSION_WALLET_IDENTIFIED_KEY);
2073
- var identifiedWallets = (cookieValue === null || cookieValue === void 0 ? void 0 : cookieValue.split(",")) || [];
2074
- var isIdentified = identifiedWallets.includes(identifiedKey);
2075
- lib_1.logger.debug("Session: Checking wallet identification", {
2076
- identifiedKey: identifiedKey,
2077
- isIdentified: isIdentified,
2078
- hasRdns: !!rdns,
2079
- });
2080
- return isIdentified;
2081
- };
2082
- FormoAnalyticsSession.prototype.markWalletIdentified = function (address, rdns) {
2083
- var _a;
2084
- var identifiedKey = this.generateIdentificationKey(address, rdns);
2085
- var identifiedWallets = ((_a = (0, lib_1.cookie)().get(constants_1.SESSION_WALLET_IDENTIFIED_KEY)) === null || _a === void 0 ? void 0 : _a.split(",")) || [];
2086
- if (!identifiedWallets.includes(identifiedKey)) {
2087
- identifiedWallets.push(identifiedKey);
2088
- var newValue = identifiedWallets.join(",");
2089
- (0, lib_1.cookie)().set(constants_1.SESSION_WALLET_IDENTIFIED_KEY, newValue, {
2090
- // by the end of the day
2091
- expires: new Date(Date.now() + 86400 * 1000).toUTCString(),
2092
- path: "/",
2093
- });
2094
- lib_1.logger.debug("Session: Marked wallet as identified", {
2095
- identifiedKey: identifiedKey,
2096
- hasRdns: !!rdns,
2097
- });
2098
- }
2099
- else {
2100
- lib_1.logger.info("Session: Wallet already marked as identified", {
2101
- identifiedKey: identifiedKey,
2102
- existingWallets: identifiedWallets,
2103
- hasRdns: !!rdns,
2104
- });
2105
- }
2106
- };
2107
- return FormoAnalyticsSession;
2108
- }());
2109
2049
  //# sourceMappingURL=FormoAnalytics.js.map