@shadow-corp/nearconnect 1.0.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/README.md +546 -0
  2. package/build/InjectedWallet.d.ts +22 -0
  3. package/build/InjectedWallet.js +58 -0
  4. package/build/InjectedWallet.js.map +1 -0
  5. package/build/NearConnector.d.ts +151 -0
  6. package/build/NearConnector.js +536 -0
  7. package/build/NearConnector.js.map +1 -0
  8. package/build/ParentFrameWallet.d.ts +22 -0
  9. package/build/ParentFrameWallet.js +66 -0
  10. package/build/ParentFrameWallet.js.map +1 -0
  11. package/build/SandboxedWallet/code.d.ts +7 -0
  12. package/build/SandboxedWallet/code.js +324 -0
  13. package/build/SandboxedWallet/code.js.map +1 -0
  14. package/build/SandboxedWallet/executor.d.ts +23 -0
  15. package/build/SandboxedWallet/executor.js +338 -0
  16. package/build/SandboxedWallet/executor.js.map +1 -0
  17. package/build/SandboxedWallet/iframe.d.ts +18 -0
  18. package/build/SandboxedWallet/iframe.js +78 -0
  19. package/build/SandboxedWallet/iframe.js.map +1 -0
  20. package/build/SandboxedWallet/index.d.ts +24 -0
  21. package/build/SandboxedWallet/index.js +54 -0
  22. package/build/SandboxedWallet/index.js.map +1 -0
  23. package/build/actions/index.d.ts +3 -0
  24. package/build/actions/index.js +105 -0
  25. package/build/actions/index.js.map +1 -0
  26. package/build/actions/types.d.ts +76 -0
  27. package/build/actions/types.js +3 -0
  28. package/build/actions/types.js.map +1 -0
  29. package/build/connection/health.d.ts +213 -0
  30. package/build/connection/health.js +391 -0
  31. package/build/connection/health.js.map +1 -0
  32. package/build/connection/index.d.ts +4 -0
  33. package/build/connection/index.js +48 -0
  34. package/build/connection/index.js.map +1 -0
  35. package/build/connection/reconnect.d.ts +261 -0
  36. package/build/connection/reconnect.js +454 -0
  37. package/build/connection/reconnect.js.map +1 -0
  38. package/build/connection/retry.d.ts +187 -0
  39. package/build/connection/retry.js +427 -0
  40. package/build/connection/retry.js.map +1 -0
  41. package/build/connection/state.d.ts +222 -0
  42. package/build/connection/state.js +431 -0
  43. package/build/connection/state.js.map +1 -0
  44. package/build/errors.d.ts +177 -0
  45. package/build/errors.js +546 -0
  46. package/build/errors.js.map +1 -0
  47. package/build/hardware/errors.d.ts +36 -0
  48. package/build/hardware/errors.js +127 -0
  49. package/build/hardware/errors.js.map +1 -0
  50. package/build/hardware/index.d.ts +7 -0
  51. package/build/hardware/index.js +39 -0
  52. package/build/hardware/index.js.map +1 -0
  53. package/build/hardware/near-app.d.ts +95 -0
  54. package/build/hardware/near-app.js +291 -0
  55. package/build/hardware/near-app.js.map +1 -0
  56. package/build/hardware/transport.d.ts +94 -0
  57. package/build/hardware/transport.js +267 -0
  58. package/build/hardware/transport.js.map +1 -0
  59. package/build/hardware/types.d.ts +98 -0
  60. package/build/hardware/types.js +72 -0
  61. package/build/hardware/types.js.map +1 -0
  62. package/build/helpers/analytics.d.ts +191 -0
  63. package/build/helpers/analytics.js +304 -0
  64. package/build/helpers/analytics.js.map +1 -0
  65. package/build/helpers/base58.d.ts +6 -0
  66. package/build/helpers/base58.js +47 -0
  67. package/build/helpers/base58.js.map +1 -0
  68. package/build/helpers/events.d.ts +42 -0
  69. package/build/helpers/events.js +68 -0
  70. package/build/helpers/events.js.map +1 -0
  71. package/build/helpers/html.d.ts +8 -0
  72. package/build/helpers/html.js +30 -0
  73. package/build/helpers/html.js.map +1 -0
  74. package/build/helpers/indexdb.d.ts +14 -0
  75. package/build/helpers/indexdb.js +166 -0
  76. package/build/helpers/indexdb.js.map +1 -0
  77. package/build/helpers/manifest.d.ts +147 -0
  78. package/build/helpers/manifest.js +329 -0
  79. package/build/helpers/manifest.js.map +1 -0
  80. package/build/helpers/queue.d.ts +11 -0
  81. package/build/helpers/queue.js +48 -0
  82. package/build/helpers/queue.js.map +1 -0
  83. package/build/helpers/session.d.ts +119 -0
  84. package/build/helpers/session.js +289 -0
  85. package/build/helpers/session.js.map +1 -0
  86. package/build/helpers/simulation.d.ts +128 -0
  87. package/build/helpers/simulation.js +441 -0
  88. package/build/helpers/simulation.js.map +1 -0
  89. package/build/helpers/storage.d.ts +58 -0
  90. package/build/helpers/storage.js +190 -0
  91. package/build/helpers/storage.js.map +1 -0
  92. package/build/helpers/trust.d.ts +157 -0
  93. package/build/helpers/trust.js +340 -0
  94. package/build/helpers/trust.js.map +1 -0
  95. package/build/helpers/url.d.ts +1 -0
  96. package/build/helpers/url.js +13 -0
  97. package/build/helpers/url.js.map +1 -0
  98. package/build/helpers/uuid.d.ts +1 -0
  99. package/build/helpers/uuid.js +14 -0
  100. package/build/helpers/uuid.js.map +1 -0
  101. package/build/index.d.ts +21 -0
  102. package/build/index.js +167 -0
  103. package/build/index.js.map +1 -0
  104. package/build/popups/IframeWalletPopup.d.ts +16 -0
  105. package/build/popups/IframeWalletPopup.js +38 -0
  106. package/build/popups/IframeWalletPopup.js.map +1 -0
  107. package/build/popups/NearWalletsPopup.d.ts +25 -0
  108. package/build/popups/NearWalletsPopup.js +153 -0
  109. package/build/popups/NearWalletsPopup.js.map +1 -0
  110. package/build/popups/Popup.d.ts +22 -0
  111. package/build/popups/Popup.js +94 -0
  112. package/build/popups/Popup.js.map +1 -0
  113. package/build/popups/styles.d.ts +1 -0
  114. package/build/popups/styles.js +257 -0
  115. package/build/popups/styles.js.map +1 -0
  116. package/build/security/audit-log.d.ts +123 -0
  117. package/build/security/audit-log.js +268 -0
  118. package/build/security/audit-log.js.map +1 -0
  119. package/build/security/csp.d.ts +68 -0
  120. package/build/security/csp.js +328 -0
  121. package/build/security/csp.js.map +1 -0
  122. package/build/security/index.d.ts +10 -0
  123. package/build/security/index.js +42 -0
  124. package/build/security/index.js.map +1 -0
  125. package/build/security/origin-guard.d.ts +90 -0
  126. package/build/security/origin-guard.js +244 -0
  127. package/build/security/origin-guard.js.map +1 -0
  128. package/build/security/rate-limiter.d.ts +84 -0
  129. package/build/security/rate-limiter.js +212 -0
  130. package/build/security/rate-limiter.js.map +1 -0
  131. package/build/security/secure-storage.d.ts +77 -0
  132. package/build/security/secure-storage.js +242 -0
  133. package/build/security/secure-storage.js.map +1 -0
  134. package/build/security/transaction-guard.d.ts +71 -0
  135. package/build/security/transaction-guard.js +239 -0
  136. package/build/security/transaction-guard.js.map +1 -0
  137. package/build/types.d.ts +508 -0
  138. package/build/types.js +3 -0
  139. package/build/types.js.map +1 -0
  140. package/build/ui/AccountSwitcherModal.d.ts +53 -0
  141. package/build/ui/AccountSwitcherModal.js +239 -0
  142. package/build/ui/AccountSwitcherModal.js.map +1 -0
  143. package/build/ui/Modal.d.ts +84 -0
  144. package/build/ui/Modal.js +278 -0
  145. package/build/ui/Modal.js.map +1 -0
  146. package/build/ui/TransactionModal.d.ts +84 -0
  147. package/build/ui/TransactionModal.js +406 -0
  148. package/build/ui/TransactionModal.js.map +1 -0
  149. package/build/ui/WalletSelectorModal.d.ts +97 -0
  150. package/build/ui/WalletSelectorModal.js +481 -0
  151. package/build/ui/WalletSelectorModal.js.map +1 -0
  152. package/build/ui/icons.d.ts +19 -0
  153. package/build/ui/icons.js +65 -0
  154. package/build/ui/icons.js.map +1 -0
  155. package/build/ui/index.d.ts +10 -0
  156. package/build/ui/index.js +31 -0
  157. package/build/ui/index.js.map +1 -0
  158. package/build/ui/styles.d.ts +5 -0
  159. package/build/ui/styles.js +973 -0
  160. package/build/ui/styles.js.map +1 -0
  161. package/build/ui/theme.d.ts +133 -0
  162. package/build/ui/theme.js +204 -0
  163. package/build/ui/theme.js.map +1 -0
  164. package/build/wallets/external/index.d.ts +4 -0
  165. package/build/wallets/external/index.js +9 -0
  166. package/build/wallets/external/index.js.map +1 -0
  167. package/build/wallets/external/manager.d.ts +152 -0
  168. package/build/wallets/external/manager.js +586 -0
  169. package/build/wallets/external/manager.js.map +1 -0
  170. package/build/wallets/privileged/index.d.ts +5 -0
  171. package/build/wallets/privileged/index.js +12 -0
  172. package/build/wallets/privileged/index.js.map +1 -0
  173. package/build/wallets/privileged/ledger.d.ts +132 -0
  174. package/build/wallets/privileged/ledger.js +563 -0
  175. package/build/wallets/privileged/ledger.js.map +1 -0
  176. package/build/wallets/privileged/manager.d.ts +54 -0
  177. package/build/wallets/privileged/manager.js +174 -0
  178. package/build/wallets/privileged/manager.js.map +1 -0
  179. package/package.json +33 -0
@@ -0,0 +1,191 @@
1
+ import { EventMap, Account, Network } from "../types";
2
+ import { WalletError } from "../errors";
3
+ /**
4
+ * Analytics event types that can be tracked
5
+ */
6
+ export type AnalyticsEventType = "wallet_connect_started" | "wallet_connect_success" | "wallet_connect_failed" | "wallet_disconnect" | "transaction_started" | "transaction_success" | "transaction_failed" | "transaction_rejected" | "message_sign_started" | "message_sign_success" | "message_sign_failed" | "account_switched" | "account_added" | "account_removed" | "network_switched" | "session_restored" | "session_expired" | "modal_opened" | "modal_closed" | "error";
7
+ /**
8
+ * Base analytics event payload
9
+ */
10
+ export interface AnalyticsEvent {
11
+ type: AnalyticsEventType;
12
+ timestamp: number;
13
+ sessionId?: string;
14
+ network?: Network;
15
+ walletId?: string;
16
+ walletName?: string;
17
+ accountId?: string;
18
+ metadata?: Record<string, unknown>;
19
+ }
20
+ /**
21
+ * Wallet connect event
22
+ */
23
+ export interface WalletConnectEvent extends AnalyticsEvent {
24
+ type: "wallet_connect_started" | "wallet_connect_success" | "wallet_connect_failed";
25
+ accounts?: Account[];
26
+ duration?: number;
27
+ error?: string;
28
+ }
29
+ /**
30
+ * Transaction event
31
+ */
32
+ export interface TransactionEvent extends AnalyticsEvent {
33
+ type: "transaction_started" | "transaction_success" | "transaction_failed" | "transaction_rejected";
34
+ receiverId?: string;
35
+ methodName?: string;
36
+ txHash?: string;
37
+ gasUsed?: string;
38
+ deposit?: string;
39
+ duration?: number;
40
+ error?: string;
41
+ }
42
+ /**
43
+ * Analytics adapter interface - implement to send events to your analytics service
44
+ */
45
+ export interface AnalyticsAdapter {
46
+ /**
47
+ * Track an analytics event
48
+ */
49
+ track(event: AnalyticsEvent): void | Promise<void>;
50
+ /**
51
+ * Identify a user (optional)
52
+ */
53
+ identify?(userId: string, traits?: Record<string, unknown>): void | Promise<void>;
54
+ /**
55
+ * Flush any pending events (optional)
56
+ */
57
+ flush?(): void | Promise<void>;
58
+ }
59
+ /**
60
+ * Console adapter for debugging
61
+ */
62
+ export declare class ConsoleAnalyticsAdapter implements AnalyticsAdapter {
63
+ private prefix;
64
+ constructor(prefix?: string);
65
+ track(event: AnalyticsEvent): void;
66
+ identify(userId: string, traits?: Record<string, unknown>): void;
67
+ }
68
+ /**
69
+ * No-op adapter (default)
70
+ */
71
+ export declare class NoopAnalyticsAdapter implements AnalyticsAdapter {
72
+ track(): void;
73
+ identify(): void;
74
+ flush(): void;
75
+ }
76
+ /**
77
+ * Batching adapter that collects events and sends them in batches
78
+ */
79
+ export declare class BatchingAnalyticsAdapter implements AnalyticsAdapter {
80
+ private adapter;
81
+ private queue;
82
+ private batchSize;
83
+ private flushInterval;
84
+ private timer;
85
+ constructor(adapter: AnalyticsAdapter, options?: {
86
+ batchSize?: number;
87
+ flushInterval?: number;
88
+ });
89
+ track(event: AnalyticsEvent): void;
90
+ flush(): Promise<void>;
91
+ destroy(): void;
92
+ }
93
+ /**
94
+ * Analytics options
95
+ */
96
+ export interface AnalyticsOptions {
97
+ adapter?: AnalyticsAdapter;
98
+ sessionId?: string;
99
+ defaultMetadata?: Record<string, unknown>;
100
+ enabled?: boolean;
101
+ }
102
+ /**
103
+ * Analytics manager for tracking wallet events
104
+ */
105
+ export declare class Analytics {
106
+ private adapter;
107
+ private sessionId;
108
+ private defaultMetadata;
109
+ private enabled;
110
+ private timers;
111
+ constructor(options?: AnalyticsOptions);
112
+ private generateSessionId;
113
+ /**
114
+ * Track a generic event
115
+ */
116
+ track(type: AnalyticsEventType, data?: Partial<Omit<AnalyticsEvent, "type" | "timestamp" | "sessionId">>): void;
117
+ /**
118
+ * Start a timer for duration tracking
119
+ */
120
+ startTimer(key: string): void;
121
+ /**
122
+ * Get elapsed time and clear timer
123
+ */
124
+ endTimer(key: string): number | undefined;
125
+ /**
126
+ * Track wallet connection start
127
+ */
128
+ trackConnectStarted(walletId: string, walletName?: string, network?: Network): void;
129
+ /**
130
+ * Track successful wallet connection
131
+ */
132
+ trackConnectSuccess(walletId: string, accounts: Account[], walletName?: string, network?: Network): void;
133
+ /**
134
+ * Track failed wallet connection
135
+ */
136
+ trackConnectFailed(walletId: string, error: Error | WalletError, walletName?: string): void;
137
+ /**
138
+ * Track wallet disconnect
139
+ */
140
+ trackDisconnect(walletId?: string, accountId?: string): void;
141
+ /**
142
+ * Track transaction start
143
+ */
144
+ trackTransactionStarted(walletId: string, receiverId: string, methodName?: string, deposit?: string): void;
145
+ /**
146
+ * Track successful transaction
147
+ */
148
+ trackTransactionSuccess(walletId: string, receiverId: string, txHash?: string, methodName?: string): void;
149
+ /**
150
+ * Track failed transaction
151
+ */
152
+ trackTransactionFailed(walletId: string, receiverId: string, error: Error | WalletError, methodName?: string): void;
153
+ /**
154
+ * Track rejected transaction
155
+ */
156
+ trackTransactionRejected(walletId: string, receiverId: string, methodName?: string): void;
157
+ /**
158
+ * Track account switch
159
+ */
160
+ trackAccountSwitched(accountId: string, previousAccountId?: string | null, walletId?: string): void;
161
+ /**
162
+ * Track network switch
163
+ */
164
+ trackNetworkSwitched(network: Network, previousNetwork?: Network): void;
165
+ /**
166
+ * Track error
167
+ */
168
+ trackError(error: Error | WalletError, context?: string): void;
169
+ /**
170
+ * Identify user
171
+ */
172
+ identify(accountId: string, traits?: Record<string, unknown>): void;
173
+ /**
174
+ * Flush pending events
175
+ */
176
+ flush(): void;
177
+ /**
178
+ * Set enabled state
179
+ */
180
+ setEnabled(enabled: boolean): void;
181
+ /**
182
+ * Update default metadata
183
+ */
184
+ setDefaultMetadata(metadata: Record<string, unknown>): void;
185
+ /**
186
+ * Create event handlers for NearConnector events
187
+ */
188
+ createEventHandlers(): Partial<{
189
+ [K in keyof EventMap]: (payload: EventMap[K]) => void;
190
+ }>;
191
+ }
@@ -0,0 +1,304 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Analytics = exports.BatchingAnalyticsAdapter = exports.NoopAnalyticsAdapter = exports.ConsoleAnalyticsAdapter = void 0;
4
+ const errors_1 = require("../errors");
5
+ /**
6
+ * Console adapter for debugging
7
+ */
8
+ class ConsoleAnalyticsAdapter {
9
+ prefix;
10
+ constructor(prefix = "[Analytics]") {
11
+ this.prefix = prefix;
12
+ }
13
+ track(event) {
14
+ console.log(this.prefix, event.type, event);
15
+ }
16
+ identify(userId, traits) {
17
+ console.log(this.prefix, "identify", userId, traits);
18
+ }
19
+ }
20
+ exports.ConsoleAnalyticsAdapter = ConsoleAnalyticsAdapter;
21
+ /**
22
+ * No-op adapter (default)
23
+ */
24
+ class NoopAnalyticsAdapter {
25
+ track() { }
26
+ identify() { }
27
+ flush() { }
28
+ }
29
+ exports.NoopAnalyticsAdapter = NoopAnalyticsAdapter;
30
+ /**
31
+ * Batching adapter that collects events and sends them in batches
32
+ */
33
+ class BatchingAnalyticsAdapter {
34
+ adapter;
35
+ queue = [];
36
+ batchSize;
37
+ flushInterval;
38
+ timer = null;
39
+ constructor(adapter, options = {}) {
40
+ this.adapter = adapter;
41
+ this.batchSize = options.batchSize ?? 10;
42
+ this.flushInterval = options.flushInterval ?? 5000;
43
+ if (typeof window !== "undefined") {
44
+ this.timer = setInterval(() => this.flush(), this.flushInterval);
45
+ }
46
+ }
47
+ track(event) {
48
+ this.queue.push(event);
49
+ if (this.queue.length >= this.batchSize) {
50
+ this.flush();
51
+ }
52
+ }
53
+ async flush() {
54
+ if (this.queue.length === 0)
55
+ return;
56
+ const events = [...this.queue];
57
+ this.queue = [];
58
+ for (const event of events) {
59
+ await this.adapter.track(event);
60
+ }
61
+ await this.adapter.flush?.();
62
+ }
63
+ destroy() {
64
+ if (this.timer) {
65
+ clearInterval(this.timer);
66
+ this.timer = null;
67
+ }
68
+ this.flush();
69
+ }
70
+ }
71
+ exports.BatchingAnalyticsAdapter = BatchingAnalyticsAdapter;
72
+ /**
73
+ * Analytics manager for tracking wallet events
74
+ */
75
+ class Analytics {
76
+ adapter;
77
+ sessionId;
78
+ defaultMetadata;
79
+ enabled;
80
+ timers = new Map();
81
+ constructor(options = {}) {
82
+ this.adapter = options.adapter ?? new NoopAnalyticsAdapter();
83
+ this.sessionId = options.sessionId ?? this.generateSessionId();
84
+ this.defaultMetadata = options.defaultMetadata ?? {};
85
+ this.enabled = options.enabled ?? true;
86
+ }
87
+ generateSessionId() {
88
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
89
+ }
90
+ /**
91
+ * Track a generic event
92
+ */
93
+ track(type, data = {}) {
94
+ if (!this.enabled)
95
+ return;
96
+ const event = {
97
+ type,
98
+ timestamp: Date.now(),
99
+ sessionId: this.sessionId,
100
+ metadata: { ...this.defaultMetadata, ...data.metadata },
101
+ ...data,
102
+ };
103
+ this.adapter.track(event);
104
+ }
105
+ /**
106
+ * Start a timer for duration tracking
107
+ */
108
+ startTimer(key) {
109
+ this.timers.set(key, Date.now());
110
+ }
111
+ /**
112
+ * Get elapsed time and clear timer
113
+ */
114
+ endTimer(key) {
115
+ const start = this.timers.get(key);
116
+ if (!start)
117
+ return undefined;
118
+ this.timers.delete(key);
119
+ return Date.now() - start;
120
+ }
121
+ /**
122
+ * Track wallet connection start
123
+ */
124
+ trackConnectStarted(walletId, walletName, network) {
125
+ this.startTimer(`connect:${walletId}`);
126
+ this.track("wallet_connect_started", { walletId, walletName, network });
127
+ }
128
+ /**
129
+ * Track successful wallet connection
130
+ */
131
+ trackConnectSuccess(walletId, accounts, walletName, network) {
132
+ const duration = this.endTimer(`connect:${walletId}`);
133
+ this.track("wallet_connect_success", {
134
+ walletId,
135
+ walletName,
136
+ network,
137
+ accountId: accounts[0]?.accountId,
138
+ metadata: { accountCount: accounts.length, duration },
139
+ });
140
+ }
141
+ /**
142
+ * Track failed wallet connection
143
+ */
144
+ trackConnectFailed(walletId, error, walletName) {
145
+ const duration = this.endTimer(`connect:${walletId}`);
146
+ this.track("wallet_connect_failed", {
147
+ walletId,
148
+ walletName,
149
+ metadata: {
150
+ error: error.message,
151
+ errorCode: error instanceof errors_1.WalletError ? error.code : undefined,
152
+ duration,
153
+ },
154
+ });
155
+ }
156
+ /**
157
+ * Track wallet disconnect
158
+ */
159
+ trackDisconnect(walletId, accountId) {
160
+ this.track("wallet_disconnect", { walletId, accountId });
161
+ }
162
+ /**
163
+ * Track transaction start
164
+ */
165
+ trackTransactionStarted(walletId, receiverId, methodName, deposit) {
166
+ const key = `tx:${walletId}:${receiverId}:${methodName}`;
167
+ this.startTimer(key);
168
+ this.track("transaction_started", {
169
+ walletId,
170
+ metadata: { receiverId, methodName, deposit },
171
+ });
172
+ }
173
+ /**
174
+ * Track successful transaction
175
+ */
176
+ trackTransactionSuccess(walletId, receiverId, txHash, methodName) {
177
+ const key = `tx:${walletId}:${receiverId}:${methodName}`;
178
+ const duration = this.endTimer(key);
179
+ this.track("transaction_success", {
180
+ walletId,
181
+ metadata: { receiverId, methodName, txHash, duration },
182
+ });
183
+ }
184
+ /**
185
+ * Track failed transaction
186
+ */
187
+ trackTransactionFailed(walletId, receiverId, error, methodName) {
188
+ const key = `tx:${walletId}:${receiverId}:${methodName}`;
189
+ const duration = this.endTimer(key);
190
+ this.track("transaction_failed", {
191
+ walletId,
192
+ metadata: {
193
+ receiverId,
194
+ methodName,
195
+ error: error.message,
196
+ errorCode: error instanceof errors_1.WalletError ? error.code : undefined,
197
+ duration,
198
+ },
199
+ });
200
+ }
201
+ /**
202
+ * Track rejected transaction
203
+ */
204
+ trackTransactionRejected(walletId, receiverId, methodName) {
205
+ const key = `tx:${walletId}:${receiverId}:${methodName}`;
206
+ const duration = this.endTimer(key);
207
+ this.track("transaction_rejected", {
208
+ walletId,
209
+ metadata: { receiverId, methodName, duration },
210
+ });
211
+ }
212
+ /**
213
+ * Track account switch
214
+ */
215
+ trackAccountSwitched(accountId, previousAccountId, walletId) {
216
+ this.track("account_switched", {
217
+ accountId,
218
+ walletId,
219
+ metadata: { previousAccountId },
220
+ });
221
+ }
222
+ /**
223
+ * Track network switch
224
+ */
225
+ trackNetworkSwitched(network, previousNetwork) {
226
+ this.track("network_switched", {
227
+ network,
228
+ metadata: { previousNetwork },
229
+ });
230
+ }
231
+ /**
232
+ * Track error
233
+ */
234
+ trackError(error, context) {
235
+ this.track("error", {
236
+ metadata: {
237
+ error: error.message,
238
+ errorCode: error instanceof errors_1.WalletError ? error.code : undefined,
239
+ context,
240
+ stack: error.stack,
241
+ },
242
+ });
243
+ }
244
+ /**
245
+ * Identify user
246
+ */
247
+ identify(accountId, traits) {
248
+ if (!this.enabled)
249
+ return;
250
+ this.adapter.identify?.(accountId, traits);
251
+ }
252
+ /**
253
+ * Flush pending events
254
+ */
255
+ flush() {
256
+ this.adapter.flush?.();
257
+ }
258
+ /**
259
+ * Set enabled state
260
+ */
261
+ setEnabled(enabled) {
262
+ this.enabled = enabled;
263
+ }
264
+ /**
265
+ * Update default metadata
266
+ */
267
+ setDefaultMetadata(metadata) {
268
+ this.defaultMetadata = { ...this.defaultMetadata, ...metadata };
269
+ }
270
+ /**
271
+ * Create event handlers for NearConnector events
272
+ */
273
+ createEventHandlers() {
274
+ return {
275
+ "wallet:signIn": ({ wallet, accounts }) => {
276
+ this.trackConnectSuccess(wallet.manifest.id, accounts, wallet.manifest.name);
277
+ },
278
+ "wallet:signOut": () => {
279
+ this.trackDisconnect();
280
+ },
281
+ "wallet:error": ({ error, walletId, action }) => {
282
+ this.trackError(error, `${action}:${walletId}`);
283
+ },
284
+ "account:switched": ({ account, previousAccountId }) => {
285
+ this.trackAccountSwitched(account.accountId, previousAccountId);
286
+ },
287
+ "session:restored": ({ session }) => {
288
+ this.track("session_restored", {
289
+ walletId: session.walletId,
290
+ accountId: session.accounts[0]?.accountId,
291
+ network: session.network,
292
+ });
293
+ },
294
+ "session:expired": ({ session }) => {
295
+ this.track("session_expired", {
296
+ walletId: session.walletId,
297
+ accountId: session.accounts[0]?.accountId,
298
+ });
299
+ },
300
+ };
301
+ }
302
+ }
303
+ exports.Analytics = Analytics;
304
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/helpers/analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Encodes a Uint8Array into a base58 string.
3
+ * @param {Uint8Array} bytes
4
+ * @returns {string}
5
+ */
6
+ export declare function encodeBase58(bytes: Uint8Array): string;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeBase58 = encodeBase58;
4
+ // Base58 alphabet (Bitcoin)
5
+ const BASE58_ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
6
+ /**
7
+ * Encodes a Uint8Array into a base58 string.
8
+ * @param {Uint8Array} bytes
9
+ * @returns {string}
10
+ */
11
+ function encodeBase58(bytes) {
12
+ if (bytes.length === 0)
13
+ return "";
14
+ // Count leading zeros.
15
+ let zeros = 0;
16
+ let i = 0;
17
+ while (i < bytes.length && bytes[i] === 0) {
18
+ zeros++;
19
+ i++;
20
+ }
21
+ // Convert byte array to base58 digits (big-endian).
22
+ let digits = [0];
23
+ for (; i < bytes.length; i++) {
24
+ let carry = bytes[i];
25
+ for (let j = 0; j < digits.length; ++j) {
26
+ carry += digits[j] << 8;
27
+ digits[j] = carry % 58;
28
+ carry = (carry / 58) | 0;
29
+ }
30
+ while (carry > 0) {
31
+ digits.push(carry % 58);
32
+ carry = (carry / 58) | 0;
33
+ }
34
+ }
35
+ // Add leading zeros in base58.
36
+ while (digits.length > 0 && digits[digits.length - 1] === 0)
37
+ digits.pop();
38
+ let result = "";
39
+ for (let k = 0; k < zeros; k++) {
40
+ result += BASE58_ALPHABET[0];
41
+ }
42
+ for (let q = digits.length - 1; q >= 0; --q) {
43
+ result += BASE58_ALPHABET[digits[q]];
44
+ }
45
+ return result;
46
+ }
47
+ //# sourceMappingURL=base58.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base58.js","sourceRoot":"","sources":["../../src/helpers/base58.ts"],"names":[],"mappings":";;AAQA,oCAqCC;AA7CD,4BAA4B;AAC5B,MAAM,eAAe,GAAG,4DAA4D,CAAC;AAErF;;;;GAIG;AACH,SAAgB,YAAY,CAAC,KAAiB;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,uBAAuB;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,KAAK,EAAE,CAAC;QACR,CAAC,EAAE,CAAC;IACN,CAAC;IAED,oDAAoD;IACpD,IAAI,MAAM,GAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACvC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACvB,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACxB,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IAE1E,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Generic event emitter class for handling typed events and their callbacks
3
+ * @template T Record type containing event names as keys and their payload types as values
4
+ */
5
+ export declare class EventEmitter<T extends Record<string, any>> {
6
+ /** Internal storage for event callbacks */
7
+ private events;
8
+ /**
9
+ * Subscribe to an event
10
+ * @template K Event name type
11
+ * @param event Name of the event to subscribe to
12
+ * @param callback Function to be called when event is emitted
13
+ */
14
+ on<K extends keyof T>(event: K, callback: (payload: T[K]) => void): void;
15
+ /**
16
+ * Emit an event with payload
17
+ * @template K Event name type
18
+ * @param event Name of the event to emit
19
+ * @param payload Data to pass to event handlers
20
+ */
21
+ emit<K extends keyof T>(event: K, payload: T[K]): void;
22
+ /**
23
+ * Unsubscribe from an event
24
+ * @template K Event name type
25
+ * @param event Name of the event to unsubscribe from
26
+ * @param callback Function to remove from event handlers
27
+ */
28
+ off<K extends keyof T>(event: K, callback: (payload: T[K]) => void): void;
29
+ /**
30
+ * Subscribe to an event for a single emission
31
+ * @template K Event name type
32
+ * @param event Name of the event to subscribe to
33
+ * @param callback Function to be called when event is emitted
34
+ */
35
+ once<K extends keyof T>(event: K, callback: (payload: T[K]) => void): void;
36
+ /**
37
+ * Remove all event listeners
38
+ * @template K Event name type
39
+ * @param event Optional event name to remove listeners for. If not provided, removes all listeners for all events
40
+ */
41
+ removeAllListeners<K extends keyof T>(event?: K): void;
42
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventEmitter = void 0;
4
+ /**
5
+ * Generic event emitter class for handling typed events and their callbacks
6
+ * @template T Record type containing event names as keys and their payload types as values
7
+ */
8
+ class EventEmitter {
9
+ /** Internal storage for event callbacks */
10
+ events = {};
11
+ /**
12
+ * Subscribe to an event
13
+ * @template K Event name type
14
+ * @param event Name of the event to subscribe to
15
+ * @param callback Function to be called when event is emitted
16
+ */
17
+ on(event, callback) {
18
+ if (!this.events[event])
19
+ this.events[event] = [];
20
+ this.events[event].push(callback);
21
+ }
22
+ /**
23
+ * Emit an event with payload
24
+ * @template K Event name type
25
+ * @param event Name of the event to emit
26
+ * @param payload Data to pass to event handlers
27
+ */
28
+ emit(event, payload) {
29
+ this.events[event]?.forEach((cb) => cb(payload));
30
+ }
31
+ /**
32
+ * Unsubscribe from an event
33
+ * @template K Event name type
34
+ * @param event Name of the event to unsubscribe from
35
+ * @param callback Function to remove from event handlers
36
+ */
37
+ off(event, callback) {
38
+ this.events[event] = this.events[event]?.filter((cb) => cb !== callback);
39
+ }
40
+ /**
41
+ * Subscribe to an event for a single emission
42
+ * @template K Event name type
43
+ * @param event Name of the event to subscribe to
44
+ * @param callback Function to be called when event is emitted
45
+ */
46
+ once(event, callback) {
47
+ const onceWrapper = (payload) => {
48
+ callback(payload);
49
+ this.off(event, onceWrapper);
50
+ };
51
+ this.on(event, onceWrapper);
52
+ }
53
+ /**
54
+ * Remove all event listeners
55
+ * @template K Event name type
56
+ * @param event Optional event name to remove listeners for. If not provided, removes all listeners for all events
57
+ */
58
+ removeAllListeners(event) {
59
+ if (event) {
60
+ delete this.events[event];
61
+ }
62
+ else {
63
+ this.events = {};
64
+ }
65
+ }
66
+ }
67
+ exports.EventEmitter = EventEmitter;
68
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/helpers/events.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,YAAY;IACvB,2CAA2C;IACnC,MAAM,GAA4D,EAAE,CAAC;IAE7E;;;;;OAKG;IACH,EAAE,CAAoB,KAAQ,EAAE,QAAiC;QAC/D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAoB,KAAQ,EAAE,OAAa;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAoB,KAAQ,EAAE,QAAiC;QAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAoB,KAAQ,EAAE,QAAiC;QACjE,MAAM,WAAW,GAAG,CAAC,OAAa,EAAE,EAAE;YACpC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/B,CAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAoB,KAAS;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AA7DD,oCA6DC"}