@kheopskit/core 0.1.1 → 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 +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +72 -17
- 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
|
});
|
|
@@ -693,12 +695,37 @@ var getWalletAccountId = (walletId, address) => {
|
|
|
693
695
|
};
|
|
694
696
|
|
|
695
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
|
+
};
|
|
696
721
|
var getInjectedWalletAccounts$ = (wallet) => {
|
|
697
722
|
if (!wallet.isConnected) return of2([]);
|
|
698
723
|
return getCachedObservable$(
|
|
699
724
|
`accounts:${wallet.id}`,
|
|
700
725
|
() => new Observable3((subscriber) => {
|
|
701
|
-
const
|
|
726
|
+
const addresses$ = new ReplaySubject(1);
|
|
727
|
+
const chainId$ = new ReplaySubject(1);
|
|
728
|
+
const getAccount = (address, i, chainId) => {
|
|
702
729
|
const client = createWalletClient({
|
|
703
730
|
account: address,
|
|
704
731
|
transport: custom(wallet.provider)
|
|
@@ -708,26 +735,42 @@ var getInjectedWalletAccounts$ = (wallet) => {
|
|
|
708
735
|
platform: "ethereum",
|
|
709
736
|
client,
|
|
710
737
|
address: getAddress(address),
|
|
738
|
+
chainId,
|
|
711
739
|
walletName: wallet.name,
|
|
712
740
|
walletId: wallet.id,
|
|
713
741
|
isWalletDefault: i === 0
|
|
714
742
|
};
|
|
715
743
|
};
|
|
716
|
-
const handleAccountsChanged = (
|
|
717
|
-
|
|
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);
|
|
718
752
|
};
|
|
719
753
|
wallet.provider.on("accountsChanged", handleAccountsChanged);
|
|
720
|
-
wallet.provider.
|
|
721
|
-
|
|
722
|
-
}).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) => {
|
|
723
757
|
console.error("Failed to get accounts", err);
|
|
724
|
-
|
|
758
|
+
addresses$.next([]);
|
|
725
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);
|
|
726
766
|
return () => {
|
|
727
767
|
wallet.provider.removeListener(
|
|
728
768
|
"accountsChanged",
|
|
729
769
|
handleAccountsChanged
|
|
730
770
|
);
|
|
771
|
+
wallet.provider.removeListener("chainChanged", handleChainChanged);
|
|
772
|
+
wallet.provider.removeListener("disconnect", handleDisconnect);
|
|
773
|
+
sub.unsubscribe();
|
|
731
774
|
};
|
|
732
775
|
}).pipe(shareReplay3({ refCount: true, bufferSize: 1 }))
|
|
733
776
|
);
|
|
@@ -756,24 +799,29 @@ var getAppKitAccounts$ = (wallet) => {
|
|
|
756
799
|
() => new Observable3((subscriber) => {
|
|
757
800
|
const caipNetworkId$ = new ReplaySubject(1);
|
|
758
801
|
const handleChainChanged = (chainId) => {
|
|
759
|
-
caipNetworkId
|
|
802
|
+
const caipNetworkId = toCaipNetworkId(chainId);
|
|
803
|
+
if (caipNetworkId) {
|
|
804
|
+
caipNetworkId$.next(caipNetworkId);
|
|
805
|
+
}
|
|
760
806
|
};
|
|
761
807
|
provider.on("chainChanged", handleChainChanged);
|
|
762
808
|
provider.request({ method: "eth_chainId" }).then(handleChainChanged);
|
|
763
809
|
const sub = caipNetworkId$.pipe(
|
|
764
810
|
distinctUntilChanged2(),
|
|
765
|
-
map3(
|
|
766
|
-
(caipNetworkId)
|
|
811
|
+
map3((caipNetworkId) => {
|
|
812
|
+
const chainId = normalizeEvmChainId(caipNetworkId);
|
|
813
|
+
const transport = custom(
|
|
767
814
|
wrapWalletConnectProvider(
|
|
768
815
|
provider,
|
|
769
816
|
// biome-ignore lint/style/noNonNullAssertion: legacy
|
|
770
817
|
provider.session.topic,
|
|
771
818
|
caipNetworkId
|
|
772
819
|
)
|
|
773
|
-
)
|
|
774
|
-
|
|
820
|
+
);
|
|
821
|
+
return { transport, chainId };
|
|
822
|
+
}),
|
|
775
823
|
map3(
|
|
776
|
-
(transport) => account.allAccounts.map((acc, i) => {
|
|
824
|
+
({ transport, chainId }) => account.allAccounts.map((acc, i) => {
|
|
777
825
|
const client = createWalletClient({
|
|
778
826
|
account: acc.address,
|
|
779
827
|
transport
|
|
@@ -785,6 +833,7 @@ var getAppKitAccounts$ = (wallet) => {
|
|
|
785
833
|
walletId: wallet.id,
|
|
786
834
|
address: acc.address,
|
|
787
835
|
client,
|
|
836
|
+
chainId,
|
|
788
837
|
isWalletDefault: i === 0
|
|
789
838
|
};
|
|
790
839
|
})
|
|
@@ -819,7 +868,9 @@ var getEthereumAccounts$ = (ethereumWallets) => new Observable3((subscriber) =>
|
|
|
819
868
|
);
|
|
820
869
|
var isSameAccountsList = (a, b) => {
|
|
821
870
|
if (a.length !== b.length) return false;
|
|
822
|
-
return a.every(
|
|
871
|
+
return a.every(
|
|
872
|
+
(account, i) => account.id === b[i]?.id && account.chainId === b[i]?.chainId
|
|
873
|
+
);
|
|
823
874
|
};
|
|
824
875
|
|
|
825
876
|
// src/api/polkadot/accounts.ts
|
|
@@ -1045,7 +1096,8 @@ var toCompactStore = (data) => {
|
|
|
1045
1096
|
(account) => [
|
|
1046
1097
|
account.walletId,
|
|
1047
1098
|
account.address,
|
|
1048
|
-
account.name ?? null
|
|
1099
|
+
account.name ?? null,
|
|
1100
|
+
account.chainId ?? null
|
|
1049
1101
|
]
|
|
1050
1102
|
);
|
|
1051
1103
|
return {
|
|
@@ -1070,13 +1122,14 @@ var fromCompactStore = (data) => {
|
|
|
1070
1122
|
};
|
|
1071
1123
|
});
|
|
1072
1124
|
const accounts = (data.a ?? []).map((item) => {
|
|
1073
|
-
const [walletId, address, name] = item;
|
|
1125
|
+
const [walletId, address, name, chainId] = item;
|
|
1074
1126
|
const { platform } = parseWalletId(walletId);
|
|
1075
1127
|
return {
|
|
1076
1128
|
id: getWalletAccountId(walletId, address),
|
|
1077
1129
|
platform,
|
|
1078
1130
|
address,
|
|
1079
1131
|
name: name ?? void 0,
|
|
1132
|
+
chainId: chainId ?? void 0,
|
|
1080
1133
|
walletId,
|
|
1081
1134
|
walletName: walletNameMap.get(walletId) ?? walletId
|
|
1082
1135
|
};
|
|
@@ -1567,7 +1620,9 @@ var getKheopskit$ = (config, ssrCookies, existingStore) => {
|
|
|
1567
1620
|
var arraysEqual = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
|
|
1568
1621
|
var statesEqual = (a, b) => a.isHydrating === b.isHydrating && a.wallets.length === b.wallets.length && a.accounts.length === b.accounts.length && a.wallets.every(
|
|
1569
1622
|
(w, i) => w.id === b.wallets[i]?.id && w.isConnected === b.wallets[i]?.isConnected
|
|
1570
|
-
) && 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
|
+
);
|
|
1571
1626
|
export {
|
|
1572
1627
|
DEFAULT_STORAGE_KEY,
|
|
1573
1628
|
clearAllCachedObservables,
|