@kheopskit/core 0.1.0 → 0.1.2
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.
- package/dist/index.d.mts +36 -1
- package/dist/index.d.ts +36 -1
- package/dist/index.js +209 -99
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +200 -100
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -119,6 +119,7 @@ var hydrateAccount = (cached) => {
|
|
|
119
119
|
id: cached.id,
|
|
120
120
|
platform: "ethereum",
|
|
121
121
|
address: cached.address,
|
|
122
|
+
chainId: cached.chainId,
|
|
122
123
|
walletId: cached.walletId,
|
|
123
124
|
walletName: cached.walletName,
|
|
124
125
|
isWalletDefault: false,
|
|
@@ -141,6 +142,7 @@ var serializeAccount = (account) => ({
|
|
|
141
142
|
platform: account.platform,
|
|
142
143
|
address: account.address,
|
|
143
144
|
name: "name" in account ? account.name : void 0,
|
|
145
|
+
chainId: account.platform === "ethereum" ? account.chainId : void 0,
|
|
144
146
|
walletId: account.walletId,
|
|
145
147
|
walletName: account.walletName
|
|
146
148
|
});
|
|
@@ -153,7 +155,8 @@ var noopStorage = {
|
|
|
153
155
|
removeItem: () => {
|
|
154
156
|
}
|
|
155
157
|
};
|
|
156
|
-
var
|
|
158
|
+
var _safeLocalStorage = null;
|
|
159
|
+
var createSafeLocalStorage = () => {
|
|
157
160
|
if (typeof window === "undefined") return noopStorage;
|
|
158
161
|
try {
|
|
159
162
|
const testKey = "__kheopskit_test__";
|
|
@@ -176,7 +179,23 @@ var safeLocalStorage = (() => {
|
|
|
176
179
|
} catch {
|
|
177
180
|
return noopStorage;
|
|
178
181
|
}
|
|
179
|
-
}
|
|
182
|
+
};
|
|
183
|
+
var getSafeLocalStorage = () => {
|
|
184
|
+
if (_safeLocalStorage === null) {
|
|
185
|
+
_safeLocalStorage = createSafeLocalStorage();
|
|
186
|
+
}
|
|
187
|
+
return _safeLocalStorage;
|
|
188
|
+
};
|
|
189
|
+
var safeLocalStorage = {
|
|
190
|
+
getItem: (key) => getSafeLocalStorage().getItem(key),
|
|
191
|
+
setItem: (key, value) => getSafeLocalStorage().setItem(key, value),
|
|
192
|
+
removeItem: (key) => getSafeLocalStorage().removeItem(key),
|
|
193
|
+
subscribe: (key, callback) => {
|
|
194
|
+
const storage = getSafeLocalStorage();
|
|
195
|
+
return storage.subscribe?.(key, callback) ?? (() => {
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
};
|
|
180
199
|
var parseCookie = (cookieString, key) => {
|
|
181
200
|
if (!cookieString) return null;
|
|
182
201
|
for (const cookie of cookieString.split(";")) {
|
|
@@ -298,16 +317,21 @@ var setCachedIcons = (icons) => {
|
|
|
298
317
|
};
|
|
299
318
|
|
|
300
319
|
// src/api/appKit.ts
|
|
301
|
-
import { createAppKit } from "@reown/appkit/core";
|
|
302
320
|
import {
|
|
303
321
|
BehaviorSubject,
|
|
304
322
|
combineLatest,
|
|
305
323
|
distinctUntilChanged,
|
|
324
|
+
from,
|
|
306
325
|
map,
|
|
307
326
|
Observable,
|
|
308
327
|
of,
|
|
309
|
-
shareReplay
|
|
328
|
+
shareReplay,
|
|
329
|
+
switchMap
|
|
310
330
|
} from "rxjs";
|
|
331
|
+
var loadAppKit = async () => {
|
|
332
|
+
const { createAppKit } = await import("@reown/appkit/core");
|
|
333
|
+
return createAppKit;
|
|
334
|
+
};
|
|
311
335
|
var WALLET_CONNECT_ICON = "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZD0ibTAgMGg0MDB2NDAwaC00MDB6Ii8+PC9jbGlwUGF0aD48ZyBjbGlwLXBhdGg9InVybCgjYSkiPjxjaXJjbGUgY3g9IjIwMCIgY3k9IjIwMCIgZmlsbD0iIzMzOTZmZiIgcj0iMTk5LjUiIHN0cm9rZT0iIzY2YjFmZiIvPjxwYXRoIGQ9Im0xMjIuNTE5IDE0OC45NjVjNDIuNzkxLTQxLjcyOSAxMTIuMTcxLTQxLjcyOSAxNTQuOTYyIDBsNS4xNSA1LjAyMmMyLjE0IDIuMDg2IDIuMTQgNS40NjkgMCA3LjU1NWwtMTcuNjE3IDE3LjE4Yy0xLjA3IDEuMDQzLTIuODA0IDEuMDQzLTMuODc0IDBsLTcuMDg3LTYuOTExYy0yOS44NTMtMjkuMTExLTc4LjI1My0yOS4xMTEtMTA4LjEwNiAwbC03LjU5IDcuNDAxYy0xLjA3IDEuMDQzLTIuODA0IDEuMDQzLTMuODc0IDBsLTE3LjYxNy0xNy4xOGMtMi4xNC0yLjA4Ni0yLjE0LTUuNDY5IDAtNy41NTV6bTE5MS4zOTcgMzUuNTI5IDE1LjY3OSAxNS4yOWMyLjE0IDIuMDg2IDIuMTQgNS40NjkgMCA3LjU1NWwtNzAuNyA2OC45NDRjLTIuMTM5IDIuMDg3LTUuNjA4IDIuMDg3LTcuNzQ4IDBsLTUwLjE3OC00OC45MzFjLS41MzUtLjUyMi0xLjQwMi0uNTIyLTEuOTM3IDBsLTUwLjE3OCA0OC45MzFjLTIuMTM5IDIuMDg3LTUuNjA4IDIuMDg3LTcuNzQ4IDBsLTcwLjcwMTUtNjguOTQ1Yy0yLjEzOTYtMi4wODYtMi4xMzk2LTUuNDY5IDAtNy41NTVsMTUuNjc5NS0xNS4yOWMyLjEzOTYtMi4wODYgNS42MDg1LTIuMDg2IDcuNzQ4MSAwbDUwLjE3ODkgNDguOTMyYy41MzUuNTIyIDEuNDAyLjUyMiAxLjkzNyAwbDUwLjE3Ny00OC45MzJjMi4xMzktMi4wODcgNS42MDgtMi4wODcgNy43NDggMGw1MC4xNzkgNDguOTMyYy41MzUuNTIyIDEuNDAyLjUyMiAxLjkzNyAwbDUwLjE3OS00OC45MzFjMi4xMzktMi4wODcgNS42MDgtMi4wODcgNy43NDggMHoiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+";
|
|
312
336
|
var cachedAppKit = null;
|
|
313
337
|
var resetAppKitCache = () => {
|
|
@@ -315,84 +339,90 @@ var resetAppKitCache = () => {
|
|
|
315
339
|
};
|
|
316
340
|
var getAppKitWallets$ = (config) => {
|
|
317
341
|
if (!config.walletConnect) return of({});
|
|
342
|
+
if (typeof window === "undefined") return of({});
|
|
318
343
|
const walletConnect = config.walletConnect;
|
|
319
344
|
if (!cachedAppKit) {
|
|
320
|
-
cachedAppKit =
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
debug: config.debug,
|
|
334
|
-
allowUnsupportedChain: true
|
|
335
|
-
});
|
|
336
|
-
const status$ = new BehaviorSubject({
|
|
337
|
-
isPolkadotConnected: false,
|
|
338
|
-
isEthereumConnected: false
|
|
339
|
-
});
|
|
340
|
-
const unsubProviders = appKit.subscribeProviders((providers) => {
|
|
341
|
-
status$.next({
|
|
342
|
-
isPolkadotConnected: !!providers.polkadot,
|
|
343
|
-
isEthereumConnected: !!providers.eip155
|
|
344
|
-
});
|
|
345
|
-
});
|
|
346
|
-
const polkadotWallet$ = appKit.chainNamespaces.includes("polkadot") ? status$.pipe(
|
|
347
|
-
map((s) => s.isPolkadotConnected),
|
|
348
|
-
distinctUntilChanged(),
|
|
349
|
-
map((isConnected) => {
|
|
350
|
-
const walletInfo = appKit.getWalletInfo();
|
|
351
|
-
return {
|
|
352
|
-
id: getWalletId("polkadot", "walletconnect"),
|
|
353
|
-
platform: "polkadot",
|
|
354
|
-
type: "appKit",
|
|
355
|
-
appKit,
|
|
356
|
-
// todo maybe we dont want to expose the appKit instance
|
|
357
|
-
name: walletInfo?.name ?? "WalletConnect",
|
|
358
|
-
icon: walletInfo?.icon ?? WALLET_CONNECT_ICON,
|
|
359
|
-
connect: async () => {
|
|
360
|
-
if (!isConnected) await appKit.open();
|
|
345
|
+
cachedAppKit = from(loadAppKit()).pipe(
|
|
346
|
+
switchMap((createAppKit) => {
|
|
347
|
+
return new Observable((subscriber) => {
|
|
348
|
+
const appKit = createAppKit({
|
|
349
|
+
projectId: walletConnect.projectId,
|
|
350
|
+
metadata: walletConnect.metadata,
|
|
351
|
+
networks: walletConnect.networks,
|
|
352
|
+
themeMode: walletConnect.themeMode,
|
|
353
|
+
themeVariables: walletConnect.themeVariables,
|
|
354
|
+
universalProviderConfigOverride: {
|
|
355
|
+
methods: {
|
|
356
|
+
polkadot: ["polkadot_signTransaction", "polkadot_signMessage"]
|
|
357
|
+
}
|
|
361
358
|
},
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
359
|
+
allWallets: "HIDE",
|
|
360
|
+
debug: config.debug,
|
|
361
|
+
allowUnsupportedChain: true
|
|
362
|
+
});
|
|
363
|
+
const status$ = new BehaviorSubject({
|
|
364
|
+
isPolkadotConnected: false,
|
|
365
|
+
isEthereumConnected: false
|
|
366
|
+
});
|
|
367
|
+
const unsubProviders = appKit.subscribeProviders((providers) => {
|
|
368
|
+
status$.next({
|
|
369
|
+
isPolkadotConnected: !!providers.polkadot,
|
|
370
|
+
isEthereumConnected: !!providers.eip155
|
|
371
|
+
});
|
|
372
|
+
});
|
|
373
|
+
const polkadotWallet$ = appKit.chainNamespaces.includes("polkadot") ? status$.pipe(
|
|
374
|
+
map((s) => s.isPolkadotConnected),
|
|
375
|
+
distinctUntilChanged(),
|
|
376
|
+
map((isConnected) => {
|
|
377
|
+
const walletInfo = appKit.getWalletInfo();
|
|
378
|
+
return {
|
|
379
|
+
id: getWalletId("polkadot", "walletconnect"),
|
|
380
|
+
platform: "polkadot",
|
|
381
|
+
type: "appKit",
|
|
382
|
+
appKit,
|
|
383
|
+
// todo maybe we dont want to expose the appKit instance
|
|
384
|
+
name: walletInfo?.name ?? "WalletConnect",
|
|
385
|
+
icon: walletInfo?.icon ?? WALLET_CONNECT_ICON,
|
|
386
|
+
connect: async () => {
|
|
387
|
+
if (!isConnected) await appKit.open();
|
|
388
|
+
},
|
|
389
|
+
disconnect: () => {
|
|
390
|
+
if (isConnected) appKit.disconnect();
|
|
391
|
+
},
|
|
392
|
+
isConnected
|
|
393
|
+
};
|
|
394
|
+
})
|
|
395
|
+
) : of(void 0);
|
|
396
|
+
const ethereumWallet$ = appKit.chainNamespaces.includes("eip155") ? status$.pipe(
|
|
397
|
+
map((s) => s.isEthereumConnected),
|
|
398
|
+
distinctUntilChanged(),
|
|
399
|
+
map((isConnected) => {
|
|
400
|
+
const walletInfo = appKit.getWalletInfo();
|
|
401
|
+
return {
|
|
402
|
+
id: getWalletId("ethereum", "walletconnect"),
|
|
403
|
+
platform: "ethereum",
|
|
404
|
+
type: "appKit",
|
|
405
|
+
appKit,
|
|
406
|
+
name: walletInfo?.name ?? "WalletConnect",
|
|
407
|
+
icon: walletInfo?.icon ?? WALLET_CONNECT_ICON,
|
|
408
|
+
connect: () => appKit.open(),
|
|
409
|
+
disconnect: () => appKit.disconnect(),
|
|
410
|
+
isConnected
|
|
411
|
+
};
|
|
412
|
+
})
|
|
413
|
+
) : of(void 0);
|
|
414
|
+
const sub = combineLatest({
|
|
415
|
+
polkadot: polkadotWallet$,
|
|
416
|
+
ethereum: ethereumWallet$
|
|
417
|
+
}).subscribe(subscriber);
|
|
418
|
+
return () => {
|
|
419
|
+
sub.unsubscribe();
|
|
420
|
+
unsubProviders();
|
|
384
421
|
};
|
|
385
|
-
})
|
|
386
|
-
)
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
ethereum: ethereumWallet$
|
|
390
|
-
}).subscribe(subscriber);
|
|
391
|
-
return () => {
|
|
392
|
-
sub.unsubscribe();
|
|
393
|
-
unsubProviders();
|
|
394
|
-
};
|
|
395
|
-
}).pipe(shareReplay({ refCount: true, bufferSize: 1 }));
|
|
422
|
+
});
|
|
423
|
+
}),
|
|
424
|
+
shareReplay({ refCount: true, bufferSize: 1 })
|
|
425
|
+
);
|
|
396
426
|
}
|
|
397
427
|
return cachedAppKit;
|
|
398
428
|
};
|
|
@@ -581,7 +611,7 @@ import {
|
|
|
581
611
|
of as of2,
|
|
582
612
|
ReplaySubject,
|
|
583
613
|
shareReplay as shareReplay3,
|
|
584
|
-
switchMap
|
|
614
|
+
switchMap as switchMap2
|
|
585
615
|
} from "rxjs";
|
|
586
616
|
import {
|
|
587
617
|
createWalletClient,
|
|
@@ -665,12 +695,37 @@ var getWalletAccountId = (walletId, address) => {
|
|
|
665
695
|
};
|
|
666
696
|
|
|
667
697
|
// src/api/ethereum/accounts.ts
|
|
698
|
+
var normalizeEvmChainId = (value) => {
|
|
699
|
+
let raw = value;
|
|
700
|
+
if (typeof raw === "string" && raw.startsWith("eip155:")) {
|
|
701
|
+
raw = raw.slice("eip155:".length);
|
|
702
|
+
}
|
|
703
|
+
if (typeof raw === "bigint") {
|
|
704
|
+
return raw >= 0n ? Number(raw) : void 0;
|
|
705
|
+
}
|
|
706
|
+
if (typeof raw === "number") {
|
|
707
|
+
return Number.isInteger(raw) && raw >= 0 ? raw : void 0;
|
|
708
|
+
}
|
|
709
|
+
if (typeof raw === "string") {
|
|
710
|
+
const normalized = raw.trim().toLowerCase();
|
|
711
|
+
if (!normalized) return void 0;
|
|
712
|
+
const parsed = normalized.startsWith("0x") ? Number.parseInt(normalized, 16) : Number.parseInt(normalized, 10);
|
|
713
|
+
return Number.isNaN(parsed) ? void 0 : parsed;
|
|
714
|
+
}
|
|
715
|
+
return void 0;
|
|
716
|
+
};
|
|
717
|
+
var toCaipNetworkId = (value) => {
|
|
718
|
+
const chainId = normalizeEvmChainId(value);
|
|
719
|
+
return chainId === void 0 ? void 0 : `eip155:${chainId}`;
|
|
720
|
+
};
|
|
668
721
|
var getInjectedWalletAccounts$ = (wallet) => {
|
|
669
722
|
if (!wallet.isConnected) return of2([]);
|
|
670
723
|
return getCachedObservable$(
|
|
671
724
|
`accounts:${wallet.id}`,
|
|
672
725
|
() => new Observable3((subscriber) => {
|
|
673
|
-
const
|
|
726
|
+
const addresses$ = new ReplaySubject(1);
|
|
727
|
+
const chainId$ = new ReplaySubject(1);
|
|
728
|
+
const getAccount = (address, i, chainId) => {
|
|
674
729
|
const client = createWalletClient({
|
|
675
730
|
account: address,
|
|
676
731
|
transport: custom(wallet.provider)
|
|
@@ -680,26 +735,42 @@ var getInjectedWalletAccounts$ = (wallet) => {
|
|
|
680
735
|
platform: "ethereum",
|
|
681
736
|
client,
|
|
682
737
|
address: getAddress(address),
|
|
738
|
+
chainId,
|
|
683
739
|
walletName: wallet.name,
|
|
684
740
|
walletId: wallet.id,
|
|
685
741
|
isWalletDefault: i === 0
|
|
686
742
|
};
|
|
687
743
|
};
|
|
688
|
-
const handleAccountsChanged = (
|
|
689
|
-
|
|
744
|
+
const handleAccountsChanged = (addrs) => {
|
|
745
|
+
addresses$.next(addrs);
|
|
746
|
+
};
|
|
747
|
+
const handleChainChanged = (chainIdHex) => {
|
|
748
|
+
chainId$.next(normalizeEvmChainId(chainIdHex));
|
|
749
|
+
};
|
|
750
|
+
const handleDisconnect = () => {
|
|
751
|
+
chainId$.next(void 0);
|
|
690
752
|
};
|
|
691
753
|
wallet.provider.on("accountsChanged", handleAccountsChanged);
|
|
692
|
-
wallet.provider.
|
|
693
|
-
|
|
694
|
-
}).catch((err) => {
|
|
754
|
+
wallet.provider.on("chainChanged", handleChainChanged);
|
|
755
|
+
wallet.provider.on("disconnect", handleDisconnect);
|
|
756
|
+
wallet.provider.request({ method: "eth_accounts" }).then((addrs) => addresses$.next(addrs)).catch((err) => {
|
|
695
757
|
console.error("Failed to get accounts", err);
|
|
696
|
-
|
|
758
|
+
addresses$.next([]);
|
|
697
759
|
});
|
|
760
|
+
wallet.provider.request({ method: "eth_chainId" }).then(handleChainChanged).catch(() => chainId$.next(void 0));
|
|
761
|
+
const sub = combineLatest3([addresses$, chainId$]).pipe(
|
|
762
|
+
map3(
|
|
763
|
+
([addresses, chainId]) => addresses.map((addr, i) => getAccount(addr, i, chainId))
|
|
764
|
+
)
|
|
765
|
+
).subscribe(subscriber);
|
|
698
766
|
return () => {
|
|
699
767
|
wallet.provider.removeListener(
|
|
700
768
|
"accountsChanged",
|
|
701
769
|
handleAccountsChanged
|
|
702
770
|
);
|
|
771
|
+
wallet.provider.removeListener("chainChanged", handleChainChanged);
|
|
772
|
+
wallet.provider.removeListener("disconnect", handleDisconnect);
|
|
773
|
+
sub.unsubscribe();
|
|
703
774
|
};
|
|
704
775
|
}).pipe(shareReplay3({ refCount: true, bufferSize: 1 }))
|
|
705
776
|
);
|
|
@@ -728,24 +799,29 @@ var getAppKitAccounts$ = (wallet) => {
|
|
|
728
799
|
() => new Observable3((subscriber) => {
|
|
729
800
|
const caipNetworkId$ = new ReplaySubject(1);
|
|
730
801
|
const handleChainChanged = (chainId) => {
|
|
731
|
-
caipNetworkId
|
|
802
|
+
const caipNetworkId = toCaipNetworkId(chainId);
|
|
803
|
+
if (caipNetworkId) {
|
|
804
|
+
caipNetworkId$.next(caipNetworkId);
|
|
805
|
+
}
|
|
732
806
|
};
|
|
733
807
|
provider.on("chainChanged", handleChainChanged);
|
|
734
808
|
provider.request({ method: "eth_chainId" }).then(handleChainChanged);
|
|
735
809
|
const sub = caipNetworkId$.pipe(
|
|
736
810
|
distinctUntilChanged2(),
|
|
737
|
-
map3(
|
|
738
|
-
(caipNetworkId)
|
|
811
|
+
map3((caipNetworkId) => {
|
|
812
|
+
const chainId = normalizeEvmChainId(caipNetworkId);
|
|
813
|
+
const transport = custom(
|
|
739
814
|
wrapWalletConnectProvider(
|
|
740
815
|
provider,
|
|
741
816
|
// biome-ignore lint/style/noNonNullAssertion: legacy
|
|
742
817
|
provider.session.topic,
|
|
743
818
|
caipNetworkId
|
|
744
819
|
)
|
|
745
|
-
)
|
|
746
|
-
|
|
820
|
+
);
|
|
821
|
+
return { transport, chainId };
|
|
822
|
+
}),
|
|
747
823
|
map3(
|
|
748
|
-
(transport) => account.allAccounts.map((acc, i) => {
|
|
824
|
+
({ transport, chainId }) => account.allAccounts.map((acc, i) => {
|
|
749
825
|
const client = createWalletClient({
|
|
750
826
|
account: acc.address,
|
|
751
827
|
transport
|
|
@@ -757,6 +833,7 @@ var getAppKitAccounts$ = (wallet) => {
|
|
|
757
833
|
walletId: wallet.id,
|
|
758
834
|
address: acc.address,
|
|
759
835
|
client,
|
|
836
|
+
chainId,
|
|
760
837
|
isWalletDefault: i === 0
|
|
761
838
|
};
|
|
762
839
|
})
|
|
@@ -772,7 +849,7 @@ var getAppKitAccounts$ = (wallet) => {
|
|
|
772
849
|
var getEthereumAccounts$ = (ethereumWallets) => new Observable3((subscriber) => {
|
|
773
850
|
const sub = ethereumWallets.pipe(
|
|
774
851
|
map3((wallets) => wallets.filter((w) => w.isConnected)),
|
|
775
|
-
|
|
852
|
+
switchMap2((wallets) => {
|
|
776
853
|
return wallets.length ? combineLatest3([
|
|
777
854
|
...wallets.filter((w) => w.type === "injected").map(getInjectedWalletAccounts$),
|
|
778
855
|
...wallets.filter((w) => w.type === "appKit").map(getAppKitAccounts$)
|
|
@@ -791,7 +868,9 @@ var getEthereumAccounts$ = (ethereumWallets) => new Observable3((subscriber) =>
|
|
|
791
868
|
);
|
|
792
869
|
var isSameAccountsList = (a, b) => {
|
|
793
870
|
if (a.length !== b.length) return false;
|
|
794
|
-
return a.every(
|
|
871
|
+
return a.every(
|
|
872
|
+
(account, i) => account.id === b[i]?.id && account.chainId === b[i]?.chainId
|
|
873
|
+
);
|
|
795
874
|
};
|
|
796
875
|
|
|
797
876
|
// src/api/polkadot/accounts.ts
|
|
@@ -805,7 +884,7 @@ import {
|
|
|
805
884
|
Observable as Observable4,
|
|
806
885
|
of as of3,
|
|
807
886
|
shareReplay as shareReplay4,
|
|
808
|
-
switchMap as
|
|
887
|
+
switchMap as switchMap3
|
|
809
888
|
} from "rxjs";
|
|
810
889
|
var getInjectedWalletAccounts$2 = (wallet) => {
|
|
811
890
|
if (!wallet.isConnected) return of3([]);
|
|
@@ -890,7 +969,7 @@ var getAppKitAccounts$2 = (wallet) => {
|
|
|
890
969
|
var getPolkadotAccounts$ = (polkadotWallets$) => new Observable4((subscriber) => {
|
|
891
970
|
const sub = polkadotWallets$.pipe(
|
|
892
971
|
map4((wallets) => wallets.filter((w) => w.isConnected)),
|
|
893
|
-
|
|
972
|
+
switchMap3(
|
|
894
973
|
(wallets) => wallets.length ? combineLatest4([
|
|
895
974
|
...wallets.filter((w) => w.type === "injected").map(getInjectedWalletAccounts$2),
|
|
896
975
|
...wallets.filter((w) => w.type === "appKit").map(getAppKitAccounts$2)
|
|
@@ -983,7 +1062,22 @@ var createKheopskitStore = (options = {}) => {
|
|
|
983
1062
|
setCachedState
|
|
984
1063
|
};
|
|
985
1064
|
};
|
|
986
|
-
var
|
|
1065
|
+
var _defaultStore = null;
|
|
1066
|
+
var getDefaultStore = () => {
|
|
1067
|
+
if (_defaultStore === null) {
|
|
1068
|
+
_defaultStore = createKheopskitStore();
|
|
1069
|
+
}
|
|
1070
|
+
return _defaultStore;
|
|
1071
|
+
};
|
|
1072
|
+
var store = {
|
|
1073
|
+
get observable() {
|
|
1074
|
+
return getDefaultStore().observable;
|
|
1075
|
+
},
|
|
1076
|
+
addEnabledWalletId: (walletId) => getDefaultStore().addEnabledWalletId(walletId),
|
|
1077
|
+
removeEnabledWalletId: (walletId) => getDefaultStore().removeEnabledWalletId(walletId),
|
|
1078
|
+
getCachedState: () => getDefaultStore().getCachedState(),
|
|
1079
|
+
setCachedState: (wallets, accounts) => getDefaultStore().setCachedState(wallets, accounts)
|
|
1080
|
+
};
|
|
987
1081
|
var isCompactStore = (value) => {
|
|
988
1082
|
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
989
1083
|
if ("cachedWallets" in value || "cachedAccounts" in value) return false;
|
|
@@ -1002,7 +1096,8 @@ var toCompactStore = (data) => {
|
|
|
1002
1096
|
(account) => [
|
|
1003
1097
|
account.walletId,
|
|
1004
1098
|
account.address,
|
|
1005
|
-
account.name ?? null
|
|
1099
|
+
account.name ?? null,
|
|
1100
|
+
account.chainId ?? null
|
|
1006
1101
|
]
|
|
1007
1102
|
);
|
|
1008
1103
|
return {
|
|
@@ -1027,13 +1122,14 @@ var fromCompactStore = (data) => {
|
|
|
1027
1122
|
};
|
|
1028
1123
|
});
|
|
1029
1124
|
const accounts = (data.a ?? []).map((item) => {
|
|
1030
|
-
const [walletId, address, name] = item;
|
|
1125
|
+
const [walletId, address, name, chainId] = item;
|
|
1031
1126
|
const { platform } = parseWalletId(walletId);
|
|
1032
1127
|
return {
|
|
1033
1128
|
id: getWalletAccountId(walletId, address),
|
|
1034
1129
|
platform,
|
|
1035
1130
|
address,
|
|
1036
1131
|
name: name ?? void 0,
|
|
1132
|
+
chainId: chainId ?? void 0,
|
|
1037
1133
|
walletId,
|
|
1038
1134
|
walletName: walletNameMap.get(walletId) ?? walletId
|
|
1039
1135
|
};
|
|
@@ -1524,14 +1620,18 @@ var getKheopskit$ = (config, ssrCookies, existingStore) => {
|
|
|
1524
1620
|
var arraysEqual = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
|
|
1525
1621
|
var statesEqual = (a, b) => a.isHydrating === b.isHydrating && a.wallets.length === b.wallets.length && a.accounts.length === b.accounts.length && a.wallets.every(
|
|
1526
1622
|
(w, i) => w.id === b.wallets[i]?.id && w.isConnected === b.wallets[i]?.isConnected
|
|
1527
|
-
) && a.accounts.every(
|
|
1623
|
+
) && a.accounts.every(
|
|
1624
|
+
(acc, i) => acc.id === b.accounts[i]?.id && (acc.platform !== "ethereum" || acc.chainId === b.accounts[i]?.chainId)
|
|
1625
|
+
);
|
|
1528
1626
|
export {
|
|
1529
1627
|
DEFAULT_STORAGE_KEY,
|
|
1530
1628
|
clearAllCachedObservables,
|
|
1531
1629
|
clearCachedObservable,
|
|
1532
1630
|
createKheopskitStore,
|
|
1533
1631
|
getCachedIcon,
|
|
1632
|
+
getDefaultStore,
|
|
1534
1633
|
getKheopskit$,
|
|
1634
|
+
getSafeLocalStorage,
|
|
1535
1635
|
hydrateAccount,
|
|
1536
1636
|
hydrateWallet,
|
|
1537
1637
|
resetAppKitCache,
|