@formo/analytics-react-native 0.1.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 (247) hide show
  1. package/README.md +302 -0
  2. package/lib/commonjs/FormoAnalytics.js +526 -0
  3. package/lib/commonjs/FormoAnalytics.js.map +1 -0
  4. package/lib/commonjs/FormoAnalyticsProvider.js +265 -0
  5. package/lib/commonjs/FormoAnalyticsProvider.js.map +1 -0
  6. package/lib/commonjs/constants/config.js +69 -0
  7. package/lib/commonjs/constants/config.js.map +1 -0
  8. package/lib/commonjs/constants/events.js +30 -0
  9. package/lib/commonjs/constants/events.js.map +1 -0
  10. package/lib/commonjs/constants/index.js +39 -0
  11. package/lib/commonjs/constants/index.js.map +1 -0
  12. package/lib/commonjs/constants/storage.js +23 -0
  13. package/lib/commonjs/constants/storage.js.map +1 -0
  14. package/lib/commonjs/index.js +65 -0
  15. package/lib/commonjs/index.js.map +1 -0
  16. package/lib/commonjs/lib/consent/index.js +56 -0
  17. package/lib/commonjs/lib/consent/index.js.map +1 -0
  18. package/lib/commonjs/lib/event/EventFactory.js +493 -0
  19. package/lib/commonjs/lib/event/EventFactory.js.map +1 -0
  20. package/lib/commonjs/lib/event/EventManager.js +46 -0
  21. package/lib/commonjs/lib/event/EventManager.js.map +1 -0
  22. package/lib/commonjs/lib/event/EventQueue.js +290 -0
  23. package/lib/commonjs/lib/event/EventQueue.js.map +1 -0
  24. package/lib/commonjs/lib/event/index.js +50 -0
  25. package/lib/commonjs/lib/event/index.js.map +1 -0
  26. package/lib/commonjs/lib/event/types.js +6 -0
  27. package/lib/commonjs/lib/event/types.js.map +1 -0
  28. package/lib/commonjs/lib/lifecycle/index.js +196 -0
  29. package/lib/commonjs/lib/lifecycle/index.js.map +1 -0
  30. package/lib/commonjs/lib/logger/index.js +48 -0
  31. package/lib/commonjs/lib/logger/index.js.map +1 -0
  32. package/lib/commonjs/lib/session/index.js +109 -0
  33. package/lib/commonjs/lib/session/index.js.map +1 -0
  34. package/lib/commonjs/lib/storage/AsyncStorageAdapter.js +164 -0
  35. package/lib/commonjs/lib/storage/AsyncStorageAdapter.js.map +1 -0
  36. package/lib/commonjs/lib/storage/MemoryStorage.js +41 -0
  37. package/lib/commonjs/lib/storage/MemoryStorage.js.map +1 -0
  38. package/lib/commonjs/lib/storage/StorageBlueprint.js +24 -0
  39. package/lib/commonjs/lib/storage/StorageBlueprint.js.map +1 -0
  40. package/lib/commonjs/lib/storage/StorageManager.js +126 -0
  41. package/lib/commonjs/lib/storage/StorageManager.js.map +1 -0
  42. package/lib/commonjs/lib/storage/index.js +49 -0
  43. package/lib/commonjs/lib/storage/index.js.map +1 -0
  44. package/lib/commonjs/lib/storage/types.js +2 -0
  45. package/lib/commonjs/lib/storage/types.js.map +1 -0
  46. package/lib/commonjs/lib/wagmi/WagmiEventHandler.js +445 -0
  47. package/lib/commonjs/lib/wagmi/WagmiEventHandler.js.map +1 -0
  48. package/lib/commonjs/lib/wagmi/index.js +28 -0
  49. package/lib/commonjs/lib/wagmi/index.js.map +1 -0
  50. package/lib/commonjs/lib/wagmi/types.js +2 -0
  51. package/lib/commonjs/lib/wagmi/types.js.map +1 -0
  52. package/lib/commonjs/types/base.js +6 -0
  53. package/lib/commonjs/types/base.js.map +1 -0
  54. package/lib/commonjs/types/events.js +22 -0
  55. package/lib/commonjs/types/events.js.map +1 -0
  56. package/lib/commonjs/types/index.js +28 -0
  57. package/lib/commonjs/types/index.js.map +1 -0
  58. package/lib/commonjs/utils/address.js +82 -0
  59. package/lib/commonjs/utils/address.js.map +1 -0
  60. package/lib/commonjs/utils/hash.js +30 -0
  61. package/lib/commonjs/utils/hash.js.map +1 -0
  62. package/lib/commonjs/utils/helpers.js +116 -0
  63. package/lib/commonjs/utils/helpers.js.map +1 -0
  64. package/lib/commonjs/utils/index.js +61 -0
  65. package/lib/commonjs/utils/index.js.map +1 -0
  66. package/lib/commonjs/utils/timestamp.js +34 -0
  67. package/lib/commonjs/utils/timestamp.js.map +1 -0
  68. package/lib/commonjs/utils/trafficSource.js +147 -0
  69. package/lib/commonjs/utils/trafficSource.js.map +1 -0
  70. package/lib/commonjs/version.js +10 -0
  71. package/lib/commonjs/version.js.map +1 -0
  72. package/lib/module/FormoAnalytics.js +519 -0
  73. package/lib/module/FormoAnalytics.js.map +1 -0
  74. package/lib/module/FormoAnalyticsProvider.js +256 -0
  75. package/lib/module/FormoAnalyticsProvider.js.map +1 -0
  76. package/lib/module/constants/config.js +62 -0
  77. package/lib/module/constants/config.js.map +1 -0
  78. package/lib/module/constants/events.js +24 -0
  79. package/lib/module/constants/events.js.map +1 -0
  80. package/lib/module/constants/index.js +4 -0
  81. package/lib/module/constants/index.js.map +1 -0
  82. package/lib/module/constants/storage.js +17 -0
  83. package/lib/module/constants/storage.js.map +1 -0
  84. package/lib/module/index.js +51 -0
  85. package/lib/module/index.js.map +1 -0
  86. package/lib/module/lib/consent/index.js +49 -0
  87. package/lib/module/lib/consent/index.js.map +1 -0
  88. package/lib/module/lib/event/EventFactory.js +488 -0
  89. package/lib/module/lib/event/EventFactory.js.map +1 -0
  90. package/lib/module/lib/event/EventManager.js +41 -0
  91. package/lib/module/lib/event/EventManager.js.map +1 -0
  92. package/lib/module/lib/event/EventQueue.js +283 -0
  93. package/lib/module/lib/event/EventQueue.js.map +1 -0
  94. package/lib/module/lib/event/index.js +5 -0
  95. package/lib/module/lib/event/index.js.map +1 -0
  96. package/lib/module/lib/event/types.js +2 -0
  97. package/lib/module/lib/event/types.js.map +1 -0
  98. package/lib/module/lib/lifecycle/index.js +190 -0
  99. package/lib/module/lib/lifecycle/index.js.map +1 -0
  100. package/lib/module/lib/logger/index.js +42 -0
  101. package/lib/module/lib/logger/index.js.map +1 -0
  102. package/lib/module/lib/session/index.js +92 -0
  103. package/lib/module/lib/session/index.js.map +1 -0
  104. package/lib/module/lib/storage/AsyncStorageAdapter.js +158 -0
  105. package/lib/module/lib/storage/AsyncStorageAdapter.js.map +1 -0
  106. package/lib/module/lib/storage/MemoryStorage.js +35 -0
  107. package/lib/module/lib/storage/MemoryStorage.js.map +1 -0
  108. package/lib/module/lib/storage/StorageBlueprint.js +18 -0
  109. package/lib/module/lib/storage/StorageBlueprint.js.map +1 -0
  110. package/lib/module/lib/storage/StorageManager.js +115 -0
  111. package/lib/module/lib/storage/StorageManager.js.map +1 -0
  112. package/lib/module/lib/storage/index.js +5 -0
  113. package/lib/module/lib/storage/index.js.map +1 -0
  114. package/lib/module/lib/storage/types.js +2 -0
  115. package/lib/module/lib/storage/types.js.map +1 -0
  116. package/lib/module/lib/wagmi/WagmiEventHandler.js +439 -0
  117. package/lib/module/lib/wagmi/WagmiEventHandler.js.map +1 -0
  118. package/lib/module/lib/wagmi/index.js +3 -0
  119. package/lib/module/lib/wagmi/index.js.map +1 -0
  120. package/lib/module/lib/wagmi/types.js +2 -0
  121. package/lib/module/lib/wagmi/types.js.map +1 -0
  122. package/lib/module/types/base.js +2 -0
  123. package/lib/module/types/base.js.map +1 -0
  124. package/lib/module/types/events.js +17 -0
  125. package/lib/module/types/events.js.map +1 -0
  126. package/lib/module/types/index.js +3 -0
  127. package/lib/module/types/index.js.map +1 -0
  128. package/lib/module/utils/address.js +74 -0
  129. package/lib/module/utils/address.js.map +1 -0
  130. package/lib/module/utils/hash.js +24 -0
  131. package/lib/module/utils/hash.js.map +1 -0
  132. package/lib/module/utils/helpers.js +105 -0
  133. package/lib/module/utils/helpers.js.map +1 -0
  134. package/lib/module/utils/index.js +6 -0
  135. package/lib/module/utils/index.js.map +1 -0
  136. package/lib/module/utils/timestamp.js +26 -0
  137. package/lib/module/utils/timestamp.js.map +1 -0
  138. package/lib/module/utils/trafficSource.js +137 -0
  139. package/lib/module/utils/trafficSource.js.map +1 -0
  140. package/lib/module/version.js +4 -0
  141. package/lib/module/version.js.map +1 -0
  142. package/lib/typescript/FormoAnalytics.d.ts +163 -0
  143. package/lib/typescript/FormoAnalytics.d.ts.map +1 -0
  144. package/lib/typescript/FormoAnalyticsProvider.d.ts +29 -0
  145. package/lib/typescript/FormoAnalyticsProvider.d.ts.map +1 -0
  146. package/lib/typescript/constants/config.d.ts +8 -0
  147. package/lib/typescript/constants/config.d.ts.map +1 -0
  148. package/lib/typescript/constants/events.d.ts +23 -0
  149. package/lib/typescript/constants/events.d.ts.map +1 -0
  150. package/lib/typescript/constants/index.d.ts +4 -0
  151. package/lib/typescript/constants/index.d.ts.map +1 -0
  152. package/lib/typescript/constants/storage.d.ts +10 -0
  153. package/lib/typescript/constants/storage.d.ts.map +1 -0
  154. package/lib/typescript/index.d.ts +44 -0
  155. package/lib/typescript/index.d.ts.map +1 -0
  156. package/lib/typescript/lib/consent/index.d.ts +13 -0
  157. package/lib/typescript/lib/consent/index.d.ts.map +1 -0
  158. package/lib/typescript/lib/event/EventFactory.d.ts +61 -0
  159. package/lib/typescript/lib/event/EventFactory.d.ts.map +1 -0
  160. package/lib/typescript/lib/event/EventManager.d.ts +17 -0
  161. package/lib/typescript/lib/event/EventManager.d.ts.map +1 -0
  162. package/lib/typescript/lib/event/EventQueue.d.ts +74 -0
  163. package/lib/typescript/lib/event/EventQueue.d.ts.map +1 -0
  164. package/lib/typescript/lib/event/index.d.ts +5 -0
  165. package/lib/typescript/lib/event/index.d.ts.map +1 -0
  166. package/lib/typescript/lib/event/types.d.ts +23 -0
  167. package/lib/typescript/lib/event/types.d.ts.map +1 -0
  168. package/lib/typescript/lib/lifecycle/index.d.ts +46 -0
  169. package/lib/typescript/lib/lifecycle/index.d.ts.map +1 -0
  170. package/lib/typescript/lib/logger/index.d.ts +19 -0
  171. package/lib/typescript/lib/logger/index.d.ts.map +1 -0
  172. package/lib/typescript/lib/session/index.d.ts +41 -0
  173. package/lib/typescript/lib/session/index.d.ts.map +1 -0
  174. package/lib/typescript/lib/storage/AsyncStorageAdapter.d.ts +48 -0
  175. package/lib/typescript/lib/storage/AsyncStorageAdapter.d.ts.map +1 -0
  176. package/lib/typescript/lib/storage/MemoryStorage.d.ts +18 -0
  177. package/lib/typescript/lib/storage/MemoryStorage.d.ts.map +1 -0
  178. package/lib/typescript/lib/storage/StorageBlueprint.d.ts +21 -0
  179. package/lib/typescript/lib/storage/StorageBlueprint.d.ts.map +1 -0
  180. package/lib/typescript/lib/storage/StorageManager.d.ts +45 -0
  181. package/lib/typescript/lib/storage/StorageManager.d.ts.map +1 -0
  182. package/lib/typescript/lib/storage/index.d.ts +5 -0
  183. package/lib/typescript/lib/storage/index.d.ts.map +1 -0
  184. package/lib/typescript/lib/storage/types.d.ts +22 -0
  185. package/lib/typescript/lib/storage/types.d.ts.map +1 -0
  186. package/lib/typescript/lib/wagmi/WagmiEventHandler.d.ts +104 -0
  187. package/lib/typescript/lib/wagmi/WagmiEventHandler.d.ts.map +1 -0
  188. package/lib/typescript/lib/wagmi/index.d.ts +3 -0
  189. package/lib/typescript/lib/wagmi/index.d.ts.map +1 -0
  190. package/lib/typescript/lib/wagmi/types.d.ts +54 -0
  191. package/lib/typescript/lib/wagmi/types.d.ts.map +1 -0
  192. package/lib/typescript/types/base.d.ts +219 -0
  193. package/lib/typescript/types/base.d.ts.map +1 -0
  194. package/lib/typescript/types/events.d.ts +111 -0
  195. package/lib/typescript/types/events.d.ts.map +1 -0
  196. package/lib/typescript/types/index.d.ts +3 -0
  197. package/lib/typescript/types/index.d.ts.map +1 -0
  198. package/lib/typescript/utils/address.d.ts +25 -0
  199. package/lib/typescript/utils/address.d.ts.map +1 -0
  200. package/lib/typescript/utils/hash.d.ts +10 -0
  201. package/lib/typescript/utils/hash.d.ts.map +1 -0
  202. package/lib/typescript/utils/helpers.d.ts +26 -0
  203. package/lib/typescript/utils/helpers.d.ts.map +1 -0
  204. package/lib/typescript/utils/index.d.ts +6 -0
  205. package/lib/typescript/utils/index.d.ts.map +1 -0
  206. package/lib/typescript/utils/timestamp.d.ts +13 -0
  207. package/lib/typescript/utils/timestamp.d.ts.map +1 -0
  208. package/lib/typescript/utils/trafficSource.d.ts +30 -0
  209. package/lib/typescript/utils/trafficSource.d.ts.map +1 -0
  210. package/lib/typescript/version.d.ts +2 -0
  211. package/lib/typescript/version.d.ts.map +1 -0
  212. package/package.json +143 -0
  213. package/src/FormoAnalytics.ts +685 -0
  214. package/src/FormoAnalyticsProvider.tsx +296 -0
  215. package/src/constants/config.ts +62 -0
  216. package/src/constants/events.ts +26 -0
  217. package/src/constants/index.ts +3 -0
  218. package/src/constants/storage.ts +16 -0
  219. package/src/index.ts +55 -0
  220. package/src/lib/consent/index.ts +52 -0
  221. package/src/lib/event/EventFactory.ts +682 -0
  222. package/src/lib/event/EventManager.ts +50 -0
  223. package/src/lib/event/EventQueue.ts +371 -0
  224. package/src/lib/event/index.ts +4 -0
  225. package/src/lib/event/types.ts +107 -0
  226. package/src/lib/lifecycle/index.ts +215 -0
  227. package/src/lib/logger/index.ts +56 -0
  228. package/src/lib/session/index.ts +103 -0
  229. package/src/lib/storage/AsyncStorageAdapter.ts +173 -0
  230. package/src/lib/storage/MemoryStorage.ts +43 -0
  231. package/src/lib/storage/StorageBlueprint.ts +30 -0
  232. package/src/lib/storage/StorageManager.ts +121 -0
  233. package/src/lib/storage/index.ts +4 -0
  234. package/src/lib/storage/types.ts +23 -0
  235. package/src/lib/wagmi/WagmiEventHandler.ts +574 -0
  236. package/src/lib/wagmi/index.ts +2 -0
  237. package/src/lib/wagmi/types.ts +71 -0
  238. package/src/types/base.ts +287 -0
  239. package/src/types/events.ts +140 -0
  240. package/src/types/index.ts +2 -0
  241. package/src/utils/address.ts +84 -0
  242. package/src/utils/hash.ts +23 -0
  243. package/src/utils/helpers.ts +139 -0
  244. package/src/utils/index.ts +5 -0
  245. package/src/utils/timestamp.ts +25 -0
  246. package/src/utils/trafficSource.ts +153 -0
  247. package/src/version.ts +3 -0
@@ -0,0 +1,445 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WagmiEventHandler = void 0;
7
+ var _events = require("../../types/events");
8
+ var _logger = require("../logger");
9
+ /**
10
+ * WagmiEventHandler for React Native
11
+ *
12
+ * Handles wallet event tracking by hooking into Wagmi v2's config.subscribe()
13
+ * and TanStack Query's MutationCache.
14
+ */
15
+
16
+ // Interface for FormoAnalytics to avoid circular dependency
17
+
18
+ class WagmiEventHandler {
19
+ unsubscribers = [];
20
+ trackingState = {
21
+ isProcessing: false
22
+ };
23
+ processedMutations = new Set();
24
+ pendingStatusChanges = [];
25
+ constructor(formoAnalytics, wagmiConfig, queryClient) {
26
+ this.formo = formoAnalytics;
27
+ this.wagmiConfig = wagmiConfig;
28
+ this.queryClient = queryClient;
29
+ _logger.logger.info("WagmiEventHandler: Initializing Wagmi integration");
30
+ this.setupConnectionListeners();
31
+ if (this.queryClient) {
32
+ this.setupMutationTracking();
33
+ } else {
34
+ _logger.logger.warn("WagmiEventHandler: QueryClient not provided, signature and transaction events will not be tracked");
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Set up listeners for wallet connection, disconnection, and chain changes
40
+ */
41
+ setupConnectionListeners() {
42
+ _logger.logger.info("WagmiEventHandler: Setting up connection listeners");
43
+
44
+ // Subscribe to status changes
45
+ const statusUnsubscribe = this.wagmiConfig.subscribe(state => state.status, (status, prevStatus) => {
46
+ this.handleStatusChange(status, prevStatus);
47
+ });
48
+ this.unsubscribers.push(statusUnsubscribe);
49
+
50
+ // Subscribe to chain ID changes
51
+ const chainIdUnsubscribe = this.wagmiConfig.subscribe(state => state.chainId, (chainId, prevChainId) => {
52
+ this.handleChainChange(chainId, prevChainId);
53
+ });
54
+ this.unsubscribers.push(chainIdUnsubscribe);
55
+ _logger.logger.info("WagmiEventHandler: Connection listeners set up successfully");
56
+ }
57
+
58
+ // Maximum pending status changes to prevent unbounded queue growth
59
+ static MAX_PENDING_STATUS_CHANGES = 10;
60
+
61
+ /**
62
+ * Handle status changes (connect/disconnect)
63
+ */
64
+ async handleStatusChange(status, prevStatus) {
65
+ if (this.trackingState.isProcessing) {
66
+ // Limit queue size to prevent unbounded growth during rapid status changes
67
+ if (this.pendingStatusChanges.length >= WagmiEventHandler.MAX_PENDING_STATUS_CHANGES) {
68
+ _logger.logger.warn("WagmiEventHandler: Pending status change queue full, dropping oldest");
69
+ this.pendingStatusChanges.shift();
70
+ }
71
+ // Queue status change to process after current one completes
72
+ this.pendingStatusChanges.push({
73
+ status,
74
+ prevStatus
75
+ });
76
+ _logger.logger.debug("WagmiEventHandler: Queuing status change for later processing");
77
+ return;
78
+ }
79
+ this.trackingState.isProcessing = true;
80
+ try {
81
+ // Process current status change
82
+ await this.processStatusChange(status, prevStatus);
83
+
84
+ // Process pending status changes iteratively (inline, no recursion)
85
+ while (this.pendingStatusChanges.length > 0) {
86
+ const pending = this.pendingStatusChanges.shift();
87
+ await this.processStatusChange(pending.status, pending.prevStatus);
88
+ }
89
+ } finally {
90
+ this.trackingState.isProcessing = false;
91
+ }
92
+ }
93
+
94
+ /**
95
+ * Process a single status change (extracted for iterative processing)
96
+ */
97
+ async processStatusChange(status, prevStatus) {
98
+ try {
99
+ const state = this.getState();
100
+ const address = this.getConnectedAddress(state);
101
+ const chainId = state.chainId;
102
+ _logger.logger.info("WagmiEventHandler: Status changed", {
103
+ status,
104
+ prevStatus,
105
+ address,
106
+ chainId
107
+ });
108
+
109
+ // Handle disconnect
110
+ if (status === "disconnected" && prevStatus === "connected") {
111
+ if (this.formo.isAutocaptureEnabled("disconnect")) {
112
+ await this.formo.disconnect({
113
+ chainId: this.trackingState.lastChainId,
114
+ address: this.trackingState.lastAddress
115
+ });
116
+ }
117
+ this.trackingState.lastAddress = undefined;
118
+ this.trackingState.lastChainId = undefined;
119
+ }
120
+
121
+ // Handle connect
122
+ if (status === "connected" && prevStatus !== "connected") {
123
+ if (address && chainId !== undefined) {
124
+ this.trackingState.lastAddress = address;
125
+ this.trackingState.lastChainId = chainId;
126
+ if (this.formo.isAutocaptureEnabled("connect")) {
127
+ const connectorName = this.getConnectorName(state);
128
+ const connectorId = this.getConnectorId(state);
129
+ await this.formo.connect({
130
+ chainId,
131
+ address
132
+ }, {
133
+ ...(connectorName && {
134
+ providerName: connectorName
135
+ }),
136
+ // Connector ID is typically the rdns for EIP-6963 wallets
137
+ ...(connectorId && {
138
+ rdns: connectorId
139
+ })
140
+ });
141
+ }
142
+ }
143
+ }
144
+ this.trackingState.lastStatus = status;
145
+ } catch (error) {
146
+ _logger.logger.error("WagmiEventHandler: Error handling status change:", error);
147
+ }
148
+ }
149
+
150
+ /**
151
+ * Handle chain ID changes
152
+ */
153
+ async handleChainChange(chainId, prevChainId) {
154
+ // Skip if no change, chainId is undefined, or this is initial connection (prevChainId undefined)
155
+ if (chainId === prevChainId || chainId === undefined || prevChainId === undefined) {
156
+ return;
157
+ }
158
+ const state = this.getState();
159
+ if (state.status !== "connected") {
160
+ return;
161
+ }
162
+ const address = this.getConnectedAddress(state);
163
+ if (!address) {
164
+ _logger.logger.warn("WagmiEventHandler: Chain changed but no address found");
165
+ return;
166
+ }
167
+ _logger.logger.info("WagmiEventHandler: Chain changed", {
168
+ chainId,
169
+ prevChainId,
170
+ address
171
+ });
172
+ this.trackingState.lastChainId = chainId;
173
+ if (this.formo.isAutocaptureEnabled("chain")) {
174
+ try {
175
+ await this.formo.chain({
176
+ chainId,
177
+ address
178
+ });
179
+ } catch (error) {
180
+ _logger.logger.error("WagmiEventHandler: Error tracking chain change:", error);
181
+ }
182
+ }
183
+ }
184
+
185
+ /**
186
+ * Set up mutation tracking for signatures and transactions
187
+ */
188
+ setupMutationTracking() {
189
+ if (!this.queryClient) {
190
+ return;
191
+ }
192
+ _logger.logger.info("WagmiEventHandler: Setting up mutation tracking");
193
+ const mutationCache = this.queryClient.getMutationCache();
194
+ const unsubscribe = mutationCache.subscribe(event => {
195
+ this.handleMutationEvent(event);
196
+ });
197
+ this.unsubscribers.push(unsubscribe);
198
+ _logger.logger.info("WagmiEventHandler: Mutation tracking set up successfully");
199
+ }
200
+
201
+ /**
202
+ * Handle mutation cache events
203
+ */
204
+ handleMutationEvent(event) {
205
+ if (event.type !== "updated") {
206
+ return;
207
+ }
208
+ const mutation = event.mutation;
209
+ const mutationKey = mutation.options.mutationKey;
210
+ if (!mutationKey || mutationKey.length === 0) {
211
+ return;
212
+ }
213
+ const mutationType = mutationKey[0];
214
+ const state = mutation.state;
215
+ const mutationStateKey = `${mutation.mutationId}:${state.status}`;
216
+ if (this.processedMutations.has(mutationStateKey)) {
217
+ return;
218
+ }
219
+ this.processedMutations.add(mutationStateKey);
220
+ _logger.logger.debug("WagmiEventHandler: Mutation event", {
221
+ mutationType,
222
+ mutationId: mutation.mutationId,
223
+ status: state.status
224
+ });
225
+ if (mutationType === "signMessage" || mutationType === "signTypedData") {
226
+ this.handleSignatureMutation(mutationType, mutation);
227
+ }
228
+ if (mutationType === "sendTransaction" || mutationType === "writeContract") {
229
+ this.handleTransactionMutation(mutationType, mutation);
230
+ }
231
+
232
+ // Cleanup old mutations
233
+ if (this.processedMutations.size > 1000) {
234
+ const entries = Array.from(this.processedMutations);
235
+ for (let i = 0; i < 500; i++) {
236
+ const entry = entries[i];
237
+ if (entry) {
238
+ this.processedMutations.delete(entry);
239
+ }
240
+ }
241
+ }
242
+ }
243
+
244
+ /**
245
+ * Handle signature mutations
246
+ */
247
+ handleSignatureMutation(mutationType, mutation) {
248
+ if (!this.formo.isAutocaptureEnabled("signature")) {
249
+ return;
250
+ }
251
+ const state = mutation.state;
252
+ const variables = state.variables || {};
253
+ const chainId = this.trackingState.lastChainId;
254
+ const address = this.trackingState.lastAddress;
255
+ if (!address) {
256
+ _logger.logger.warn("WagmiEventHandler: Signature event but no address available");
257
+ return;
258
+ }
259
+ if (!chainId || chainId === 0) {
260
+ _logger.logger.warn("WagmiEventHandler: Signature event but no valid chainId available");
261
+ return;
262
+ }
263
+ try {
264
+ let status;
265
+ let signatureHash;
266
+ if (state.status === "pending") {
267
+ status = _events.SignatureStatus.REQUESTED;
268
+ } else if (state.status === "success") {
269
+ status = _events.SignatureStatus.CONFIRMED;
270
+ signatureHash = state.data;
271
+ } else if (state.status === "error") {
272
+ status = _events.SignatureStatus.REJECTED;
273
+ } else {
274
+ return;
275
+ }
276
+ let message;
277
+ if (mutationType === "signMessage") {
278
+ message = variables.message || "";
279
+ } else {
280
+ message = JSON.stringify(variables.message || variables.types || {});
281
+ }
282
+ _logger.logger.info("WagmiEventHandler: Tracking signature event", {
283
+ status,
284
+ mutationType,
285
+ address,
286
+ chainId
287
+ });
288
+ this.formo.signature({
289
+ status,
290
+ chainId,
291
+ address,
292
+ message,
293
+ ...(signatureHash && {
294
+ signatureHash
295
+ })
296
+ }).catch(error => {
297
+ _logger.logger.error("WagmiEventHandler: Error tracking signature:", error);
298
+ });
299
+ } catch (error) {
300
+ _logger.logger.error("WagmiEventHandler: Error handling signature mutation:", error);
301
+ }
302
+ }
303
+
304
+ /**
305
+ * Handle transaction mutations
306
+ */
307
+ handleTransactionMutation(mutationType, mutation) {
308
+ if (!this.formo.isAutocaptureEnabled("transaction")) {
309
+ return;
310
+ }
311
+ const state = mutation.state;
312
+ const variables = state.variables || {};
313
+ const chainId = this.trackingState.lastChainId || variables.chainId;
314
+ // Only use variables.account as fallback, not variables.address which is the contract address
315
+ const address = this.trackingState.lastAddress || variables.account;
316
+ if (!address) {
317
+ _logger.logger.warn("WagmiEventHandler: Transaction event but no address available");
318
+ return;
319
+ }
320
+ if (!chainId || chainId === 0) {
321
+ _logger.logger.warn("WagmiEventHandler: Transaction event but no valid chainId available");
322
+ return;
323
+ }
324
+ try {
325
+ let status;
326
+ let transactionHash;
327
+ if (state.status === "pending") {
328
+ status = _events.TransactionStatus.STARTED;
329
+ } else if (state.status === "success") {
330
+ status = _events.TransactionStatus.BROADCASTED;
331
+ transactionHash = state.data;
332
+ } else if (state.status === "error") {
333
+ status = _events.TransactionStatus.REJECTED;
334
+ } else {
335
+ return;
336
+ }
337
+ const data = variables.data;
338
+ const to = variables.to || variables.address;
339
+ const value = variables.value?.toString();
340
+ _logger.logger.info("WagmiEventHandler: Tracking transaction event", {
341
+ status,
342
+ mutationType,
343
+ address,
344
+ chainId,
345
+ transactionHash
346
+ });
347
+ this.formo.transaction({
348
+ status,
349
+ chainId,
350
+ address,
351
+ ...(data && {
352
+ data
353
+ }),
354
+ ...(to && {
355
+ to
356
+ }),
357
+ ...(value && {
358
+ value
359
+ }),
360
+ ...(transactionHash && {
361
+ transactionHash
362
+ })
363
+ }).catch(error => {
364
+ _logger.logger.error("WagmiEventHandler: Error tracking transaction:", error);
365
+ });
366
+ } catch (error) {
367
+ _logger.logger.error("WagmiEventHandler: Error handling transaction mutation:", error);
368
+ }
369
+ }
370
+
371
+ /**
372
+ * Get current Wagmi state
373
+ */
374
+ getState() {
375
+ if (typeof this.wagmiConfig.getState === "function") {
376
+ return this.wagmiConfig.getState();
377
+ }
378
+ if (this.wagmiConfig.state) {
379
+ return this.wagmiConfig.state;
380
+ }
381
+ _logger.logger.warn("WagmiEventHandler: Unable to get state from config, returning default state");
382
+ return {
383
+ status: "disconnected",
384
+ connections: new Map(),
385
+ current: undefined,
386
+ chainId: undefined
387
+ };
388
+ }
389
+
390
+ /**
391
+ * Get connected address from state
392
+ */
393
+ getConnectedAddress(state) {
394
+ if (!state.current) {
395
+ return undefined;
396
+ }
397
+ const connection = state.connections.get(state.current);
398
+ if (!connection || connection.accounts.length === 0) {
399
+ return undefined;
400
+ }
401
+ return connection.accounts[0];
402
+ }
403
+
404
+ /**
405
+ * Get connector name from state
406
+ */
407
+ getConnectorName(state) {
408
+ if (!state.current) {
409
+ return undefined;
410
+ }
411
+ const connection = state.connections.get(state.current);
412
+ return connection?.connector.name;
413
+ }
414
+
415
+ /**
416
+ * Get connector ID from state (typically the rdns for EIP-6963 wallets)
417
+ */
418
+ getConnectorId(state) {
419
+ if (!state.current) {
420
+ return undefined;
421
+ }
422
+ const connection = state.connections.get(state.current);
423
+ return connection?.connector.id;
424
+ }
425
+
426
+ /**
427
+ * Clean up subscriptions
428
+ */
429
+ cleanup() {
430
+ _logger.logger.info("WagmiEventHandler: Cleaning up subscriptions");
431
+ for (const unsubscribe of this.unsubscribers) {
432
+ try {
433
+ unsubscribe();
434
+ } catch (error) {
435
+ _logger.logger.error("WagmiEventHandler: Error during cleanup:", error);
436
+ }
437
+ }
438
+ this.unsubscribers = [];
439
+ this.processedMutations.clear();
440
+ this.pendingStatusChanges = [];
441
+ _logger.logger.info("WagmiEventHandler: Cleanup complete");
442
+ }
443
+ }
444
+ exports.WagmiEventHandler = WagmiEventHandler;
445
+ //# sourceMappingURL=WagmiEventHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_events","require","_logger","WagmiEventHandler","unsubscribers","trackingState","isProcessing","processedMutations","Set","pendingStatusChanges","constructor","formoAnalytics","wagmiConfig","queryClient","formo","logger","info","setupConnectionListeners","setupMutationTracking","warn","statusUnsubscribe","subscribe","state","status","prevStatus","handleStatusChange","push","chainIdUnsubscribe","chainId","prevChainId","handleChainChange","MAX_PENDING_STATUS_CHANGES","length","shift","debug","processStatusChange","pending","getState","address","getConnectedAddress","isAutocaptureEnabled","disconnect","lastChainId","lastAddress","undefined","connectorName","getConnectorName","connectorId","getConnectorId","connect","providerName","rdns","lastStatus","error","chain","mutationCache","getMutationCache","unsubscribe","event","handleMutationEvent","type","mutation","mutationKey","options","mutationType","mutationStateKey","mutationId","has","add","handleSignatureMutation","handleTransactionMutation","size","entries","Array","from","i","entry","delete","variables","signatureHash","SignatureStatus","REQUESTED","CONFIRMED","data","REJECTED","message","JSON","stringify","types","signature","catch","account","transactionHash","TransactionStatus","STARTED","BROADCASTED","to","value","toString","transaction","connections","Map","current","connection","get","accounts","connector","name","id","cleanup","clear","exports"],"sourceRoot":"../../../../src","sources":["lib/wagmi/WagmiEventHandler.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _WagmiEventHandler = require("./WagmiEventHandler");
7
+ Object.keys(_WagmiEventHandler).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _WagmiEventHandler[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _WagmiEventHandler[key];
14
+ }
15
+ });
16
+ });
17
+ var _types = require("./types");
18
+ Object.keys(_types).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _types[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _types[key];
25
+ }
26
+ });
27
+ });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_WagmiEventHandler","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_types"],"sourceRoot":"../../../../src","sources":["lib/wagmi/index.ts"],"mappings":";;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,kBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,kBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,kBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,MAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,MAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,MAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["lib/wagmi/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/base.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TransactionStatus = exports.SignatureStatus = void 0;
7
+ //#region Specific Event Types
8
+ let SignatureStatus = exports.SignatureStatus = /*#__PURE__*/function (SignatureStatus) {
9
+ SignatureStatus["REQUESTED"] = "requested";
10
+ SignatureStatus["REJECTED"] = "rejected";
11
+ SignatureStatus["CONFIRMED"] = "confirmed";
12
+ return SignatureStatus;
13
+ }({});
14
+ let TransactionStatus = exports.TransactionStatus = /*#__PURE__*/function (TransactionStatus) {
15
+ TransactionStatus["STARTED"] = "started";
16
+ TransactionStatus["REJECTED"] = "rejected";
17
+ TransactionStatus["BROADCASTED"] = "broadcasted";
18
+ TransactionStatus["CONFIRMED"] = "confirmed";
19
+ TransactionStatus["REVERTED"] = "reverted";
20
+ return TransactionStatus;
21
+ }({});
22
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SignatureStatus","exports","TransactionStatus"],"sourceRoot":"../../../src","sources":["types/events.ts"],"mappings":";;;;;;AAyCA;AAAA,IAsFYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAMfE,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _base = require("./base");
7
+ Object.keys(_base).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _base[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _base[key];
14
+ }
15
+ });
16
+ });
17
+ var _events = require("./events");
18
+ Object.keys(_events).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _events[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _events[key];
25
+ }
26
+ });
27
+ });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_base","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_events"],"sourceRoot":"../../../src","sources":["types/index.ts"],"mappings":";;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,KAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,KAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,KAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,OAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,OAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,OAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,OAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getValidAddress = getValidAddress;
7
+ exports.isBlockedAddress = isBlockedAddress;
8
+ exports.isValidAddress = isValidAddress;
9
+ exports.toChecksumAddress = toChecksumAddress;
10
+ var _keccak = require("ethereum-cryptography/keccak.js");
11
+ var _utils = require("ethereum-cryptography/utils.js");
12
+ /**
13
+ * Address validation and checksum utilities
14
+ *
15
+ * Uses ethereum-cryptography for proper EIP-55 checksum computation
16
+ */
17
+
18
+ /**
19
+ * Convert Uint8Array to hex string
20
+ */
21
+ function toHex(bytes) {
22
+ return Array.from(bytes).map(b => b.toString(16).padStart(2, "0")).join("");
23
+ }
24
+
25
+ /**
26
+ * Check if a string is a valid Ethereum address
27
+ */
28
+ function isValidAddress(address) {
29
+ if (!address) return false;
30
+ if (typeof address !== "string") return false;
31
+
32
+ // Check if it matches basic hex address format
33
+ return /^0x[a-fA-F0-9]{40}$/.test(address);
34
+ }
35
+
36
+ /**
37
+ * Convert address to EIP-55 checksum format
38
+ *
39
+ * Uses keccak256 from ethereum-cryptography for correct checksumming
40
+ * See: https://eips.ethereum.org/EIPS/eip-55
41
+ */
42
+ function toChecksumAddress(address) {
43
+ if (!isValidAddress(address)) {
44
+ return address;
45
+ }
46
+ const lowercaseAddress = address.toLowerCase().replace("0x", "");
47
+ const hash = toHex((0, _keccak.keccak256)((0, _utils.utf8ToBytes)(lowercaseAddress)));
48
+ let checksumAddress = "0x";
49
+ for (let i = 0; i < lowercaseAddress.length; i++) {
50
+ const char = lowercaseAddress[i];
51
+ if (char && parseInt(hash[i] || "0", 16) >= 8) {
52
+ checksumAddress += char.toUpperCase();
53
+ } else {
54
+ checksumAddress += char;
55
+ }
56
+ }
57
+ return checksumAddress;
58
+ }
59
+
60
+ /**
61
+ * Get valid address or null
62
+ */
63
+ function getValidAddress(address) {
64
+ if (!address) return null;
65
+ const trimmed = typeof address === "string" ? address.trim() : address;
66
+ if (!isValidAddress(trimmed)) return null;
67
+ return trimmed;
68
+ }
69
+
70
+ /**
71
+ * Blocked addresses that should not emit events
72
+ * (zero address, dead address)
73
+ */
74
+ const BLOCKED_ADDRESSES = new Set(["0x0000000000000000000000000000000000000000", "0x000000000000000000000000000000000000dead"]);
75
+
76
+ /**
77
+ * Check if address is in blocked list
78
+ */
79
+ function isBlockedAddress(address) {
80
+ return BLOCKED_ADDRESSES.has(address.toLowerCase());
81
+ }
82
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_keccak","require","_utils","toHex","bytes","Array","from","map","b","toString","padStart","join","isValidAddress","address","test","toChecksumAddress","lowercaseAddress","toLowerCase","replace","hash","keccak256","utf8ToBytes","checksumAddress","i","length","char","parseInt","toUpperCase","getValidAddress","trimmed","trim","BLOCKED_ADDRESSES","Set","isBlockedAddress","has"],"sourceRoot":"../../../src","sources":["utils/address.ts"],"mappings":";;;;;;;;;AAMA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAPA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA,SAASE,KAAKA,CAACC,KAAiB,EAAU;EACxC,OAAOC,KAAK,CAACC,IAAI,CAACF,KAAK,CAAC,CACrBG,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAC3CC,IAAI,CAAC,EAAE,CAAC;AACb;;AAEA;AACA;AACA;AACO,SAASC,cAAcA,CAACC,OAAe,EAAW;EACvD,IAAI,CAACA,OAAO,EAAE,OAAO,KAAK;EAC1B,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE,OAAO,KAAK;;EAE7C;EACA,OAAO,qBAAqB,CAACC,IAAI,CAACD,OAAO,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,iBAAiBA,CAACF,OAAe,EAAU;EACzD,IAAI,CAACD,cAAc,CAACC,OAAO,CAAC,EAAE;IAC5B,OAAOA,OAAO;EAChB;EAEA,MAAMG,gBAAgB,GAAGH,OAAO,CAACI,WAAW,CAAC,CAAC,CAACC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;EAChE,MAAMC,IAAI,GAAGhB,KAAK,CAAC,IAAAiB,iBAAS,EAAC,IAAAC,kBAAW,EAACL,gBAAgB,CAAC,CAAC,CAAC;EAE5D,IAAIM,eAAe,GAAG,IAAI;EAE1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,gBAAgB,CAACQ,MAAM,EAAED,CAAC,EAAE,EAAE;IAChD,MAAME,IAAI,GAAGT,gBAAgB,CAACO,CAAC,CAAC;IAChC,IAAIE,IAAI,IAAIC,QAAQ,CAACP,IAAI,CAACI,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;MAC7CD,eAAe,IAAIG,IAAI,CAACE,WAAW,CAAC,CAAC;IACvC,CAAC,MAAM;MACLL,eAAe,IAAIG,IAAI;IACzB;EACF;EAEA,OAAOH,eAAe;AACxB;;AAEA;AACA;AACA;AACO,SAASM,eAAeA,CAC7Bf,OAAkC,EACnB;EACf,IAAI,CAACA,OAAO,EAAE,OAAO,IAAI;EACzB,MAAMgB,OAAO,GAAG,OAAOhB,OAAO,KAAK,QAAQ,GAAGA,OAAO,CAACiB,IAAI,CAAC,CAAC,GAAGjB,OAAO;EACtE,IAAI,CAACD,cAAc,CAACiB,OAAO,CAAC,EAAE,OAAO,IAAI;EACzC,OAAOA,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA,MAAME,iBAAiB,GAAG,IAAIC,GAAG,CAAS,CACxC,4CAA4C,EAC5C,4CAA4C,CAC7C,CAAC;;AAEF;AACA;AACA;AACO,SAASC,gBAAgBA,CAACpB,OAAe,EAAW;EACzD,OAAOkB,iBAAiB,CAACG,GAAG,CAACrB,OAAO,CAACI,WAAW,CAAC,CAAC,CAAC;AACrD","ignoreList":[]}