@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,329 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FederatedManifestManager = exports.DEFAULT_MANIFEST_SOURCES = void 0;
4
+ exports.validateManifest = validateManifest;
5
+ exports.mergeManifests = mergeManifests;
6
+ /**
7
+ * Default manifest sources
8
+ */
9
+ exports.DEFAULT_MANIFEST_SOURCES = [
10
+ {
11
+ id: "hot-dao-official",
12
+ name: "HOT DAO Official",
13
+ url: "https://raw.githubusercontent.com/hot-dao/near-selector/refs/heads/main/repository/manifest.json",
14
+ priority: 1,
15
+ trusted: true,
16
+ enabled: true,
17
+ networks: ["mainnet", "testnet"],
18
+ },
19
+ {
20
+ id: "hot-connector-cdn",
21
+ name: "HOT Connector CDN",
22
+ url: "https://cdn.jsdelivr.net/gh/azbang/hot-connector/repository/manifest.json",
23
+ priority: 2,
24
+ trusted: true,
25
+ enabled: true,
26
+ networks: ["mainnet", "testnet"],
27
+ },
28
+ ];
29
+ /**
30
+ * Federated Manifest Manager
31
+ *
32
+ * Aggregates wallet manifests from multiple sources with:
33
+ * - Priority-based merging (higher priority sources override lower)
34
+ * - Caching with TTL
35
+ * - Automatic retries
36
+ * - Health tracking per source
37
+ */
38
+ class FederatedManifestManager {
39
+ sources;
40
+ cache = new Map();
41
+ cacheDuration;
42
+ timeout;
43
+ maxRetries;
44
+ retryDelay;
45
+ network;
46
+ onUpdate;
47
+ onError;
48
+ constructor(options = {}) {
49
+ const defaultSources = options.useDefaults !== false ? exports.DEFAULT_MANIFEST_SOURCES : [];
50
+ this.sources = [...defaultSources, ...(options.sources ?? [])];
51
+ this.cacheDuration = options.cacheDuration ?? 5 * 60 * 1000; // 5 minutes
52
+ this.timeout = options.timeout ?? 10000; // 10 seconds
53
+ this.maxRetries = options.maxRetries ?? 2;
54
+ this.retryDelay = options.retryDelay ?? 1000;
55
+ this.network = options.network ?? "mainnet";
56
+ this.onUpdate = options.onUpdate;
57
+ this.onError = options.onError;
58
+ // Sort by priority
59
+ this.sources.sort((a, b) => a.priority - b.priority);
60
+ }
61
+ /**
62
+ * Add a new manifest source
63
+ */
64
+ addSource(source) {
65
+ // Remove existing source with same ID
66
+ this.sources = this.sources.filter((s) => s.id !== source.id);
67
+ this.sources.push(source);
68
+ this.sources.sort((a, b) => a.priority - b.priority);
69
+ }
70
+ /**
71
+ * Remove a manifest source
72
+ */
73
+ removeSource(sourceId) {
74
+ this.sources = this.sources.filter((s) => s.id !== sourceId);
75
+ this.cache.delete(sourceId);
76
+ }
77
+ /**
78
+ * Enable/disable a source
79
+ */
80
+ setSourceEnabled(sourceId, enabled) {
81
+ const source = this.sources.find((s) => s.id === sourceId);
82
+ if (source) {
83
+ source.enabled = enabled;
84
+ }
85
+ }
86
+ /**
87
+ * Get all sources
88
+ */
89
+ getSources() {
90
+ return [...this.sources];
91
+ }
92
+ /**
93
+ * Fetch manifest from a single source
94
+ */
95
+ async fetchFromSource(source) {
96
+ // Check cache first
97
+ const cached = this.cache.get(source.id);
98
+ if (cached && cached.expiresAt > Date.now()) {
99
+ return cached.manifest;
100
+ }
101
+ // Fetch with retries
102
+ let lastError = null;
103
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
104
+ try {
105
+ const controller = new AbortController();
106
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
107
+ const response = await fetch(source.url, {
108
+ signal: controller.signal,
109
+ headers: {
110
+ Accept: "application/json",
111
+ },
112
+ });
113
+ clearTimeout(timeoutId);
114
+ if (!response.ok) {
115
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
116
+ }
117
+ const data = await response.json();
118
+ // Validate manifest structure
119
+ if (!data.wallets || !Array.isArray(data.wallets)) {
120
+ throw new Error("Invalid manifest: missing wallets array");
121
+ }
122
+ const manifest = {
123
+ source,
124
+ wallets: data.wallets,
125
+ version: data.version ?? "1.0.0",
126
+ fetchedAt: Date.now(),
127
+ };
128
+ // Update source metadata
129
+ source.lastFetched = Date.now();
130
+ // Cache the result
131
+ this.cache.set(source.id, {
132
+ manifest,
133
+ expiresAt: Date.now() + this.cacheDuration,
134
+ });
135
+ return manifest;
136
+ }
137
+ catch (e) {
138
+ lastError = e instanceof Error ? e : new Error(String(e));
139
+ if (attempt < this.maxRetries) {
140
+ await new Promise((resolve) => setTimeout(resolve, this.retryDelay));
141
+ }
142
+ }
143
+ }
144
+ // All retries failed
145
+ if (lastError) {
146
+ this.onError?.(source, lastError);
147
+ }
148
+ return null;
149
+ }
150
+ /**
151
+ * Fetch and combine manifests from all enabled sources
152
+ */
153
+ async fetchAll() {
154
+ const enabledSources = this.sources.filter((s) => s.enabled);
155
+ // Fetch from all sources in parallel
156
+ const results = await Promise.all(enabledSources.map((source) => this.fetchFromSource(source)));
157
+ // Combine wallets (higher priority sources win on conflicts)
158
+ const walletMap = new Map();
159
+ const successfulSources = [];
160
+ let latestVersion = "1.0.0";
161
+ // Process in reverse priority order so higher priority overwrites
162
+ for (let i = results.length - 1; i >= 0; i--) {
163
+ const result = results[i];
164
+ if (!result)
165
+ continue;
166
+ successfulSources.push(result.source);
167
+ if (result.version > latestVersion) {
168
+ latestVersion = result.version;
169
+ }
170
+ for (const wallet of result.wallets) {
171
+ // Filter by network if applicable
172
+ if (this.network === "testnet" && !wallet.features?.testnet) {
173
+ continue;
174
+ }
175
+ // Add source metadata to wallet
176
+ const enrichedWallet = {
177
+ ...wallet,
178
+ _source: result.source.id,
179
+ _trusted: result.source.trusted,
180
+ };
181
+ walletMap.set(wallet.id, enrichedWallet);
182
+ }
183
+ }
184
+ const combined = {
185
+ wallets: Array.from(walletMap.values()),
186
+ version: latestVersion,
187
+ sources: successfulSources,
188
+ lastUpdated: Date.now(),
189
+ };
190
+ this.onUpdate?.(combined);
191
+ return combined;
192
+ }
193
+ /**
194
+ * Clear the cache
195
+ */
196
+ clearCache() {
197
+ this.cache.clear();
198
+ }
199
+ /**
200
+ * Clear cache for a specific source
201
+ */
202
+ clearSourceCache(sourceId) {
203
+ this.cache.delete(sourceId);
204
+ }
205
+ /**
206
+ * Set the network filter
207
+ */
208
+ setNetwork(network) {
209
+ this.network = network;
210
+ }
211
+ /**
212
+ * Get cache status for all sources
213
+ */
214
+ getCacheStatus() {
215
+ const status = {};
216
+ for (const source of this.sources) {
217
+ const cached = this.cache.get(source.id);
218
+ status[source.id] = {
219
+ cached: !!cached && cached.expiresAt > Date.now(),
220
+ expiresAt: cached?.expiresAt,
221
+ };
222
+ }
223
+ return status;
224
+ }
225
+ /**
226
+ * Register a custom wallet manifest (for debug/development)
227
+ */
228
+ registerCustomWallet(wallet) {
229
+ // Create a virtual "custom" source if not exists
230
+ let customSource = this.sources.find((s) => s.id === "custom");
231
+ if (!customSource) {
232
+ customSource = {
233
+ id: "custom",
234
+ name: "Custom Wallets",
235
+ url: "",
236
+ priority: 0, // Highest priority
237
+ trusted: false,
238
+ enabled: true,
239
+ };
240
+ this.sources.unshift(customSource);
241
+ }
242
+ // Add to cache
243
+ const cached = this.cache.get("custom");
244
+ const existingWallets = cached?.manifest.wallets ?? [];
245
+ // Remove existing wallet with same ID
246
+ const wallets = existingWallets.filter((w) => w.id !== wallet.id);
247
+ wallets.push({ ...wallet, debug: true });
248
+ this.cache.set("custom", {
249
+ manifest: {
250
+ source: customSource,
251
+ wallets,
252
+ version: "custom",
253
+ fetchedAt: Date.now(),
254
+ },
255
+ expiresAt: Date.now() + 365 * 24 * 60 * 60 * 1000, // 1 year
256
+ });
257
+ }
258
+ /**
259
+ * Remove a custom wallet
260
+ */
261
+ removeCustomWallet(walletId) {
262
+ const cached = this.cache.get("custom");
263
+ if (!cached)
264
+ return;
265
+ cached.manifest.wallets = cached.manifest.wallets.filter((w) => w.id !== walletId);
266
+ }
267
+ }
268
+ exports.FederatedManifestManager = FederatedManifestManager;
269
+ /**
270
+ * Validate a wallet manifest
271
+ */
272
+ function validateManifest(manifest) {
273
+ if (!manifest || typeof manifest !== "object")
274
+ return false;
275
+ const m = manifest;
276
+ // Required fields
277
+ if (typeof m.id !== "string" || !m.id)
278
+ return false;
279
+ if (typeof m.name !== "string" || !m.name)
280
+ return false;
281
+ if (typeof m.icon !== "string" || !m.icon)
282
+ return false;
283
+ if (typeof m.website !== "string" || !m.website)
284
+ return false;
285
+ if (typeof m.version !== "string" || !m.version)
286
+ return false;
287
+ if (typeof m.type !== "string")
288
+ return false;
289
+ // Type must be valid
290
+ if (!["sandbox", "injected", "privileged"].includes(m.type))
291
+ return false;
292
+ // Sandbox wallets need executor
293
+ if (m.type === "sandbox" && typeof m.executor !== "string")
294
+ return false;
295
+ return true;
296
+ }
297
+ /**
298
+ * Merge wallet manifests with conflict resolution
299
+ */
300
+ function mergeManifests(base, override, strategy = "override") {
301
+ const walletMap = new Map();
302
+ // Add base wallets
303
+ for (const wallet of base) {
304
+ walletMap.set(wallet.id, wallet);
305
+ }
306
+ // Apply override wallets
307
+ for (const wallet of override) {
308
+ if (strategy === "override") {
309
+ walletMap.set(wallet.id, wallet);
310
+ }
311
+ else {
312
+ const existing = walletMap.get(wallet.id);
313
+ if (existing) {
314
+ // Merge features and permissions
315
+ walletMap.set(wallet.id, {
316
+ ...existing,
317
+ ...wallet,
318
+ features: { ...existing.features, ...wallet.features },
319
+ permissions: { ...existing.permissions, ...wallet.permissions },
320
+ });
321
+ }
322
+ else {
323
+ walletMap.set(wallet.id, wallet);
324
+ }
325
+ }
326
+ }
327
+ return Array.from(walletMap.values());
328
+ }
329
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/helpers/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class Queue {
2
+ _items: any[];
3
+ enqueue(item: any): void;
4
+ dequeue(): any;
5
+ get size(): number;
6
+ }
7
+ export declare class AutoQueue extends Queue {
8
+ _pendingPromise: boolean;
9
+ enqueue<T>(action: () => Promise<T>): Promise<T>;
10
+ dequeue(): Promise<boolean>;
11
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AutoQueue = exports.Queue = void 0;
4
+ class Queue {
5
+ _items = [];
6
+ enqueue(item) {
7
+ this._items.push(item);
8
+ }
9
+ dequeue() {
10
+ return this._items.shift();
11
+ }
12
+ get size() {
13
+ return this._items.length;
14
+ }
15
+ }
16
+ exports.Queue = Queue;
17
+ class AutoQueue extends Queue {
18
+ _pendingPromise = false;
19
+ enqueue(action) {
20
+ return new Promise((resolve, reject) => {
21
+ super.enqueue({ action, resolve, reject });
22
+ this.dequeue();
23
+ });
24
+ }
25
+ async dequeue() {
26
+ if (this._pendingPromise)
27
+ return false;
28
+ const item = super.dequeue();
29
+ if (!item)
30
+ return false;
31
+ try {
32
+ this._pendingPromise = true;
33
+ const payload = await item.action(this);
34
+ this._pendingPromise = false;
35
+ item.resolve(payload);
36
+ }
37
+ catch (e) {
38
+ this._pendingPromise = false;
39
+ item.reject(e);
40
+ }
41
+ finally {
42
+ void this.dequeue();
43
+ }
44
+ return true;
45
+ }
46
+ }
47
+ exports.AutoQueue = AutoQueue;
48
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/helpers/queue.ts"],"names":[],"mappings":";;;AAAA,MAAa,KAAK;IAChB,MAAM,GAAU,EAAE,CAAC;IACnB,OAAO,CAAC,IAAS;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF;AAbD,sBAaC;AAED,MAAa,SAAU,SAAQ,KAAK;IAClC,eAAe,GAAG,KAAK,CAAC;IACxB,OAAO,CAAI,MAAwB;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,IAAI,CAAC;YACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;gBAAS,CAAC;YACT,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA5BD,8BA4BC"}
@@ -0,0 +1,119 @@
1
+ import { DataStorage } from "./storage";
2
+ import { Session } from "../types";
3
+ export type { Session };
4
+ /**
5
+ * Session validation result
6
+ */
7
+ export type SessionValidationResult = {
8
+ valid: true;
9
+ session: Session;
10
+ } | {
11
+ valid: false;
12
+ reason: "expired" | "invalid" | "missing";
13
+ };
14
+ export interface SessionManagerOptions {
15
+ storage?: DataStorage;
16
+ storageKey?: string;
17
+ maxAge?: number;
18
+ idleTimeout?: number;
19
+ autoReconnect?: boolean;
20
+ enableMultiTabSync?: boolean;
21
+ onSessionRestored?: (session: Session) => void;
22
+ onSessionExpired?: (session: Session) => void;
23
+ onSessionInvalid?: (session: Session) => void;
24
+ onSessionCleared?: () => void;
25
+ onSessionSynced?: (session: Session) => void;
26
+ onIdleTimeout?: (session: Session) => void;
27
+ }
28
+ export declare class SessionManager {
29
+ private storage;
30
+ private storageKey;
31
+ private maxAge;
32
+ private idleTimeout;
33
+ private autoReconnect;
34
+ private enableMultiTabSync;
35
+ private cachedSession;
36
+ private broadcastChannel;
37
+ private idleTimer;
38
+ private activityHandler;
39
+ private onSessionRestored?;
40
+ private onSessionExpired?;
41
+ private onSessionInvalid?;
42
+ private onSessionCleared?;
43
+ private onSessionSynced?;
44
+ private onIdleTimeout?;
45
+ constructor(options?: SessionManagerOptions);
46
+ /**
47
+ * Initialize multi-tab synchronization via BroadcastChannel
48
+ */
49
+ private initMultiTabSync;
50
+ /**
51
+ * Handle incoming sync messages from other tabs
52
+ */
53
+ private handleSyncMessage;
54
+ /**
55
+ * Broadcast session change to other tabs
56
+ */
57
+ private broadcast;
58
+ /**
59
+ * Start idle timeout tracking
60
+ */
61
+ private startIdleTracking;
62
+ /**
63
+ * Stop idle timeout tracking
64
+ */
65
+ private stopIdleTracking;
66
+ /**
67
+ * Cleanup resources
68
+ */
69
+ destroy(): void;
70
+ /**
71
+ * Save a new session
72
+ */
73
+ save(session: Omit<Session, "connectedAt" | "lastActiveAt">): Promise<Session>;
74
+ /**
75
+ * Get the current session if valid
76
+ */
77
+ get(): Promise<Session | null>;
78
+ /**
79
+ * Validate a session and return detailed result
80
+ */
81
+ validate(session: Session): SessionValidationResult;
82
+ /**
83
+ * Update the last active timestamp
84
+ */
85
+ touch(): Promise<void>;
86
+ /**
87
+ * Update session data (e.g., accounts changed)
88
+ */
89
+ update(updates: Partial<Pick<Session, "accounts" | "network" | "metadata">>): Promise<Session | null>;
90
+ /**
91
+ * Clear the session
92
+ */
93
+ clear(): Promise<void>;
94
+ /**
95
+ * Check if a session is still valid (simple boolean check)
96
+ */
97
+ isValid(session: Session): boolean;
98
+ /**
99
+ * Check if we should auto-reconnect
100
+ */
101
+ shouldAutoReconnect(): boolean;
102
+ /**
103
+ * Try to restore a previous session
104
+ * Returns the session if valid and autoReconnect is enabled
105
+ */
106
+ tryRestore(): Promise<Session | null>;
107
+ /**
108
+ * Get session age in milliseconds
109
+ */
110
+ getAge(): Promise<number | null>;
111
+ /**
112
+ * Get time since last activity
113
+ */
114
+ getIdleTime(): Promise<number | null>;
115
+ /**
116
+ * Check if session exists (without full validation)
117
+ */
118
+ exists(): Promise<boolean>;
119
+ }