@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.d.mts
CHANGED
|
@@ -148,6 +148,8 @@ type EthereumAccount = {
|
|
|
148
148
|
platform: "ethereum";
|
|
149
149
|
client: WalletClient<CustomTransport, undefined, Account, undefined>;
|
|
150
150
|
address: `0x${string}`;
|
|
151
|
+
/** Current chain ID the wallet is connected to. `undefined` while loading or after provider disconnect. */
|
|
152
|
+
chainId: number | undefined;
|
|
151
153
|
walletName: string;
|
|
152
154
|
walletId: string;
|
|
153
155
|
isWalletDefault: boolean;
|
|
@@ -174,6 +176,8 @@ type CachedAccount = {
|
|
|
174
176
|
platform: WalletPlatform;
|
|
175
177
|
address: string;
|
|
176
178
|
name?: string;
|
|
179
|
+
/** Cached chain ID for Ethereum accounts. */
|
|
180
|
+
chainId?: number;
|
|
177
181
|
walletId: WalletId;
|
|
178
182
|
walletName: string;
|
|
179
183
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -148,6 +148,8 @@ type EthereumAccount = {
|
|
|
148
148
|
platform: "ethereum";
|
|
149
149
|
client: WalletClient<CustomTransport, undefined, Account, undefined>;
|
|
150
150
|
address: `0x${string}`;
|
|
151
|
+
/** Current chain ID the wallet is connected to. `undefined` while loading or after provider disconnect. */
|
|
152
|
+
chainId: number | undefined;
|
|
151
153
|
walletName: string;
|
|
152
154
|
walletId: string;
|
|
153
155
|
isWalletDefault: boolean;
|
|
@@ -174,6 +176,8 @@ type CachedAccount = {
|
|
|
174
176
|
platform: WalletPlatform;
|
|
175
177
|
address: string;
|
|
176
178
|
name?: string;
|
|
179
|
+
/** Cached chain ID for Ethereum accounts. */
|
|
180
|
+
chainId?: number;
|
|
177
181
|
walletId: WalletId;
|
|
178
182
|
walletName: string;
|
|
179
183
|
};
|
package/dist/index.js
CHANGED
|
@@ -166,6 +166,7 @@ var hydrateAccount = (cached) => {
|
|
|
166
166
|
id: cached.id,
|
|
167
167
|
platform: "ethereum",
|
|
168
168
|
address: cached.address,
|
|
169
|
+
chainId: cached.chainId,
|
|
169
170
|
walletId: cached.walletId,
|
|
170
171
|
walletName: cached.walletName,
|
|
171
172
|
isWalletDefault: false,
|
|
@@ -188,6 +189,7 @@ var serializeAccount = (account) => ({
|
|
|
188
189
|
platform: account.platform,
|
|
189
190
|
address: account.address,
|
|
190
191
|
name: "name" in account ? account.name : void 0,
|
|
192
|
+
chainId: account.platform === "ethereum" ? account.chainId : void 0,
|
|
191
193
|
walletId: account.walletId,
|
|
192
194
|
walletName: account.walletName
|
|
193
195
|
});
|
|
@@ -697,12 +699,37 @@ var getWalletAccountId = (walletId, address) => {
|
|
|
697
699
|
};
|
|
698
700
|
|
|
699
701
|
// src/api/ethereum/accounts.ts
|
|
702
|
+
var normalizeEvmChainId = (value) => {
|
|
703
|
+
let raw = value;
|
|
704
|
+
if (typeof raw === "string" && raw.startsWith("eip155:")) {
|
|
705
|
+
raw = raw.slice("eip155:".length);
|
|
706
|
+
}
|
|
707
|
+
if (typeof raw === "bigint") {
|
|
708
|
+
return raw >= 0n ? Number(raw) : void 0;
|
|
709
|
+
}
|
|
710
|
+
if (typeof raw === "number") {
|
|
711
|
+
return Number.isInteger(raw) && raw >= 0 ? raw : void 0;
|
|
712
|
+
}
|
|
713
|
+
if (typeof raw === "string") {
|
|
714
|
+
const normalized = raw.trim().toLowerCase();
|
|
715
|
+
if (!normalized) return void 0;
|
|
716
|
+
const parsed = normalized.startsWith("0x") ? Number.parseInt(normalized, 16) : Number.parseInt(normalized, 10);
|
|
717
|
+
return Number.isNaN(parsed) ? void 0 : parsed;
|
|
718
|
+
}
|
|
719
|
+
return void 0;
|
|
720
|
+
};
|
|
721
|
+
var toCaipNetworkId = (value) => {
|
|
722
|
+
const chainId = normalizeEvmChainId(value);
|
|
723
|
+
return chainId === void 0 ? void 0 : `eip155:${chainId}`;
|
|
724
|
+
};
|
|
700
725
|
var getInjectedWalletAccounts$ = (wallet) => {
|
|
701
726
|
if (!wallet.isConnected) return (0, import_rxjs5.of)([]);
|
|
702
727
|
return getCachedObservable$(
|
|
703
728
|
`accounts:${wallet.id}`,
|
|
704
729
|
() => new import_rxjs5.Observable((subscriber) => {
|
|
705
|
-
const
|
|
730
|
+
const addresses$ = new import_rxjs5.ReplaySubject(1);
|
|
731
|
+
const chainId$ = new import_rxjs5.ReplaySubject(1);
|
|
732
|
+
const getAccount = (address, i, chainId) => {
|
|
706
733
|
const client = (0, import_viem2.createWalletClient)({
|
|
707
734
|
account: address,
|
|
708
735
|
transport: (0, import_viem2.custom)(wallet.provider)
|
|
@@ -712,26 +739,42 @@ var getInjectedWalletAccounts$ = (wallet) => {
|
|
|
712
739
|
platform: "ethereum",
|
|
713
740
|
client,
|
|
714
741
|
address: (0, import_viem2.getAddress)(address),
|
|
742
|
+
chainId,
|
|
715
743
|
walletName: wallet.name,
|
|
716
744
|
walletId: wallet.id,
|
|
717
745
|
isWalletDefault: i === 0
|
|
718
746
|
};
|
|
719
747
|
};
|
|
720
|
-
const handleAccountsChanged = (
|
|
721
|
-
|
|
748
|
+
const handleAccountsChanged = (addrs) => {
|
|
749
|
+
addresses$.next(addrs);
|
|
750
|
+
};
|
|
751
|
+
const handleChainChanged = (chainIdHex) => {
|
|
752
|
+
chainId$.next(normalizeEvmChainId(chainIdHex));
|
|
753
|
+
};
|
|
754
|
+
const handleDisconnect = () => {
|
|
755
|
+
chainId$.next(void 0);
|
|
722
756
|
};
|
|
723
757
|
wallet.provider.on("accountsChanged", handleAccountsChanged);
|
|
724
|
-
wallet.provider.
|
|
725
|
-
|
|
726
|
-
}).catch((err) => {
|
|
758
|
+
wallet.provider.on("chainChanged", handleChainChanged);
|
|
759
|
+
wallet.provider.on("disconnect", handleDisconnect);
|
|
760
|
+
wallet.provider.request({ method: "eth_accounts" }).then((addrs) => addresses$.next(addrs)).catch((err) => {
|
|
727
761
|
console.error("Failed to get accounts", err);
|
|
728
|
-
|
|
762
|
+
addresses$.next([]);
|
|
729
763
|
});
|
|
764
|
+
wallet.provider.request({ method: "eth_chainId" }).then(handleChainChanged).catch(() => chainId$.next(void 0));
|
|
765
|
+
const sub = (0, import_rxjs5.combineLatest)([addresses$, chainId$]).pipe(
|
|
766
|
+
(0, import_rxjs5.map)(
|
|
767
|
+
([addresses, chainId]) => addresses.map((addr, i) => getAccount(addr, i, chainId))
|
|
768
|
+
)
|
|
769
|
+
).subscribe(subscriber);
|
|
730
770
|
return () => {
|
|
731
771
|
wallet.provider.removeListener(
|
|
732
772
|
"accountsChanged",
|
|
733
773
|
handleAccountsChanged
|
|
734
774
|
);
|
|
775
|
+
wallet.provider.removeListener("chainChanged", handleChainChanged);
|
|
776
|
+
wallet.provider.removeListener("disconnect", handleDisconnect);
|
|
777
|
+
sub.unsubscribe();
|
|
735
778
|
};
|
|
736
779
|
}).pipe((0, import_rxjs5.shareReplay)({ refCount: true, bufferSize: 1 }))
|
|
737
780
|
);
|
|
@@ -760,24 +803,29 @@ var getAppKitAccounts$ = (wallet) => {
|
|
|
760
803
|
() => new import_rxjs5.Observable((subscriber) => {
|
|
761
804
|
const caipNetworkId$ = new import_rxjs5.ReplaySubject(1);
|
|
762
805
|
const handleChainChanged = (chainId) => {
|
|
763
|
-
caipNetworkId
|
|
806
|
+
const caipNetworkId = toCaipNetworkId(chainId);
|
|
807
|
+
if (caipNetworkId) {
|
|
808
|
+
caipNetworkId$.next(caipNetworkId);
|
|
809
|
+
}
|
|
764
810
|
};
|
|
765
811
|
provider.on("chainChanged", handleChainChanged);
|
|
766
812
|
provider.request({ method: "eth_chainId" }).then(handleChainChanged);
|
|
767
813
|
const sub = caipNetworkId$.pipe(
|
|
768
814
|
(0, import_rxjs5.distinctUntilChanged)(),
|
|
769
|
-
(0, import_rxjs5.map)(
|
|
770
|
-
|
|
815
|
+
(0, import_rxjs5.map)((caipNetworkId) => {
|
|
816
|
+
const chainId = normalizeEvmChainId(caipNetworkId);
|
|
817
|
+
const transport = (0, import_viem2.custom)(
|
|
771
818
|
wrapWalletConnectProvider(
|
|
772
819
|
provider,
|
|
773
820
|
// biome-ignore lint/style/noNonNullAssertion: legacy
|
|
774
821
|
provider.session.topic,
|
|
775
822
|
caipNetworkId
|
|
776
823
|
)
|
|
777
|
-
)
|
|
778
|
-
|
|
824
|
+
);
|
|
825
|
+
return { transport, chainId };
|
|
826
|
+
}),
|
|
779
827
|
(0, import_rxjs5.map)(
|
|
780
|
-
(transport) => account.allAccounts.map((acc, i) => {
|
|
828
|
+
({ transport, chainId }) => account.allAccounts.map((acc, i) => {
|
|
781
829
|
const client = (0, import_viem2.createWalletClient)({
|
|
782
830
|
account: acc.address,
|
|
783
831
|
transport
|
|
@@ -789,6 +837,7 @@ var getAppKitAccounts$ = (wallet) => {
|
|
|
789
837
|
walletId: wallet.id,
|
|
790
838
|
address: acc.address,
|
|
791
839
|
client,
|
|
840
|
+
chainId,
|
|
792
841
|
isWalletDefault: i === 0
|
|
793
842
|
};
|
|
794
843
|
})
|
|
@@ -823,7 +872,9 @@ var getEthereumAccounts$ = (ethereumWallets) => new import_rxjs5.Observable((sub
|
|
|
823
872
|
);
|
|
824
873
|
var isSameAccountsList = (a, b) => {
|
|
825
874
|
if (a.length !== b.length) return false;
|
|
826
|
-
return a.every(
|
|
875
|
+
return a.every(
|
|
876
|
+
(account, i) => account.id === b[i]?.id && account.chainId === b[i]?.chainId
|
|
877
|
+
);
|
|
827
878
|
};
|
|
828
879
|
|
|
829
880
|
// src/api/polkadot/accounts.ts
|
|
@@ -1039,7 +1090,8 @@ var toCompactStore = (data) => {
|
|
|
1039
1090
|
(account) => [
|
|
1040
1091
|
account.walletId,
|
|
1041
1092
|
account.address,
|
|
1042
|
-
account.name ?? null
|
|
1093
|
+
account.name ?? null,
|
|
1094
|
+
account.chainId ?? null
|
|
1043
1095
|
]
|
|
1044
1096
|
);
|
|
1045
1097
|
return {
|
|
@@ -1064,13 +1116,14 @@ var fromCompactStore = (data) => {
|
|
|
1064
1116
|
};
|
|
1065
1117
|
});
|
|
1066
1118
|
const accounts = (data.a ?? []).map((item) => {
|
|
1067
|
-
const [walletId, address, name] = item;
|
|
1119
|
+
const [walletId, address, name, chainId] = item;
|
|
1068
1120
|
const { platform } = parseWalletId(walletId);
|
|
1069
1121
|
return {
|
|
1070
1122
|
id: getWalletAccountId(walletId, address),
|
|
1071
1123
|
platform,
|
|
1072
1124
|
address,
|
|
1073
1125
|
name: name ?? void 0,
|
|
1126
|
+
chainId: chainId ?? void 0,
|
|
1074
1127
|
walletId,
|
|
1075
1128
|
walletName: walletNameMap.get(walletId) ?? walletId
|
|
1076
1129
|
};
|
|
@@ -1532,7 +1585,9 @@ var getKheopskit$ = (config, ssrCookies, existingStore) => {
|
|
|
1532
1585
|
var arraysEqual = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
|
|
1533
1586
|
var statesEqual = (a, b) => a.isHydrating === b.isHydrating && a.wallets.length === b.wallets.length && a.accounts.length === b.accounts.length && a.wallets.every(
|
|
1534
1587
|
(w, i) => w.id === b.wallets[i]?.id && w.isConnected === b.wallets[i]?.isConnected
|
|
1535
|
-
) && a.accounts.every(
|
|
1588
|
+
) && a.accounts.every(
|
|
1589
|
+
(acc, i) => acc.id === b.accounts[i]?.id && (acc.platform !== "ethereum" || acc.chainId === b.accounts[i]?.chainId)
|
|
1590
|
+
);
|
|
1536
1591
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1537
1592
|
0 && (module.exports = {
|
|
1538
1593
|
DEFAULT_STORAGE_KEY,
|