@kheopskit/core 5.0.1 → 5.1.1
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/errors-Caq2csKx.mjs +181 -0
- package/dist/errors-Caq2csKx.mjs.map +1 -0
- package/dist/errors-DPw6pc2H.js +222 -0
- package/dist/errors-DPw6pc2H.js.map +1 -0
- package/dist/ethereum.d.mts +39 -38
- package/dist/ethereum.d.ts +39 -38
- package/dist/ethereum.js +216 -343
- package/dist/ethereum.js.map +1 -1
- package/dist/ethereum.mjs +213 -344
- package/dist/ethereum.mjs.map +1 -1
- package/dist/{getCachedObservable-C4E8dfMp.d.ts → getCachedObservable-LUq9IfEx.d.mts} +5 -2
- package/dist/{getCachedObservable-C4E8dfMp.d.mts → getCachedObservable-LUq9IfEx.d.ts} +5 -2
- package/dist/iconCache-BSa42Sui.mjs +343 -0
- package/dist/iconCache-BSa42Sui.mjs.map +1 -0
- package/dist/iconCache-DS4zNiP1.js +396 -0
- package/dist/iconCache-DS4zNiP1.js.map +1 -0
- package/dist/index.d.mts +98 -36
- package/dist/index.d.ts +98 -36
- package/dist/index.js +897 -630
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +881 -631
- package/dist/index.mjs.map +1 -1
- package/dist/injectedWallets-B1MCxAE9.js +148 -0
- package/dist/injectedWallets-B1MCxAE9.js.map +1 -0
- package/dist/injectedWallets-B3Vysfvr.mjs +119 -0
- package/dist/injectedWallets-B3Vysfvr.mjs.map +1 -0
- package/dist/internal.d.mts +18 -53
- package/dist/internal.d.ts +18 -53
- package/dist/internal.js +9 -32
- package/dist/internal.mjs +3 -32
- package/dist/polkadot.d.mts +37 -36
- package/dist/polkadot.d.ts +37 -36
- package/dist/polkadot.js +179 -294
- package/dist/polkadot.js.map +1 -1
- package/dist/polkadot.mjs +176 -295
- package/dist/polkadot.mjs.map +1 -1
- package/dist/polkadotExtensions-BoVKhNU_.mjs +23 -0
- package/dist/polkadotExtensions-BoVKhNU_.mjs.map +1 -0
- package/dist/polkadotExtensions-y4J9UzYl.js +28 -0
- package/dist/polkadotExtensions-y4J9UzYl.js.map +1 -0
- package/dist/solana.d.mts +50 -48
- package/dist/solana.d.ts +50 -48
- package/dist/solana.js +323 -449
- package/dist/solana.js.map +1 -1
- package/dist/solana.mjs +316 -449
- package/dist/solana.mjs.map +1 -1
- package/dist/types-Cb-vuEru.d.mts +330 -0
- package/dist/types-Cb-vuEru.d.ts +330 -0
- package/dist/types-DKU-SNio.js +169 -0
- package/dist/types-DKU-SNio.js.map +1 -0
- package/dist/types-jnifAAA0.mjs +104 -0
- package/dist/types-jnifAAA0.mjs.map +1 -0
- package/package.json +12 -12
- package/dist/chunk-4ENHC7G4.js +0 -210
- package/dist/chunk-4ENHC7G4.js.map +0 -1
- package/dist/chunk-6XAZANB5.mjs +0 -450
- package/dist/chunk-6XAZANB5.mjs.map +0 -1
- package/dist/chunk-7QSGAJ4A.mjs +0 -210
- package/dist/chunk-7QSGAJ4A.mjs.map +0 -1
- package/dist/chunk-B4L6GAYD.js +0 -179
- package/dist/chunk-B4L6GAYD.js.map +0 -1
- package/dist/chunk-BWUUHUDK.mjs +0 -24
- package/dist/chunk-BWUUHUDK.mjs.map +0 -1
- package/dist/chunk-D3EQMFZ2.js +0 -24
- package/dist/chunk-D3EQMFZ2.js.map +0 -1
- package/dist/chunk-XQWJM3KC.js +0 -450
- package/dist/chunk-XQWJM3KC.js.map +0 -1
- package/dist/chunk-YDLCHYHH.mjs +0 -179
- package/dist/chunk-YDLCHYHH.mjs.map +0 -1
- package/dist/internal.js.map +0 -1
- package/dist/internal.mjs.map +0 -1
- package/dist/types-C7V7DGlg.d.mts +0 -349
- package/dist/types-C7V7DGlg.d.ts +0 -349
package/dist/ethereum.js
CHANGED
|
@@ -1,351 +1,224 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var _rxjs = require('rxjs');
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
var _viem = require('viem');
|
|
31
|
-
var normalizeEvmChainId = (value) => {
|
|
32
|
-
let raw = value;
|
|
33
|
-
if (typeof raw === "string" && raw.startsWith("eip155:")) {
|
|
34
|
-
raw = raw.slice("eip155:".length);
|
|
35
|
-
}
|
|
36
|
-
if (typeof raw === "bigint") {
|
|
37
|
-
return raw >= 0n ? Number(raw) : void 0;
|
|
38
|
-
}
|
|
39
|
-
if (typeof raw === "number") {
|
|
40
|
-
return Number.isInteger(raw) && raw >= 0 ? raw : void 0;
|
|
41
|
-
}
|
|
42
|
-
if (typeof raw === "string") {
|
|
43
|
-
const normalized = raw.trim().toLowerCase();
|
|
44
|
-
if (!normalized) return void 0;
|
|
45
|
-
const parsed = normalized.startsWith("0x") ? Number.parseInt(normalized, 16) : Number.parseInt(normalized, 10);
|
|
46
|
-
return Number.isNaN(parsed) ? void 0 : parsed;
|
|
47
|
-
}
|
|
48
|
-
return void 0;
|
|
49
|
-
};
|
|
50
|
-
var toCaipNetworkId = (value) => {
|
|
51
|
-
const chainId = normalizeEvmChainId(value);
|
|
52
|
-
return chainId === void 0 ? void 0 : `eip155:${chainId}`;
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_types = require("./types-DKU-SNio.js");
|
|
3
|
+
const require_errors = require("./errors-DPw6pc2H.js");
|
|
4
|
+
const require_injectedWallets = require("./injectedWallets-B1MCxAE9.js");
|
|
5
|
+
let rxjs = require("rxjs");
|
|
6
|
+
let viem = require("viem");
|
|
7
|
+
let mipd = require("mipd");
|
|
8
|
+
//#region src/api/ethereum/accounts.ts
|
|
9
|
+
const normalizeEvmChainId = (value) => {
|
|
10
|
+
let raw = value;
|
|
11
|
+
if (typeof raw === "string" && raw.startsWith("eip155:")) raw = raw.slice(7);
|
|
12
|
+
if (typeof raw === "bigint") return raw >= 0n ? Number(raw) : void 0;
|
|
13
|
+
if (typeof raw === "number") return Number.isInteger(raw) && raw >= 0 ? raw : void 0;
|
|
14
|
+
if (typeof raw === "string") {
|
|
15
|
+
const normalized = raw.trim().toLowerCase();
|
|
16
|
+
if (!normalized) return void 0;
|
|
17
|
+
const parsed = normalized.startsWith("0x") ? Number.parseInt(normalized, 16) : Number.parseInt(normalized, 10);
|
|
18
|
+
return Number.isNaN(parsed) ? void 0 : parsed;
|
|
19
|
+
}
|
|
53
20
|
};
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
`accounts:${wallet.id}`,
|
|
58
|
-
() => new (0, _rxjs.Observable)((subscriber) => {
|
|
59
|
-
const addresses$ = new (0, _rxjs.ReplaySubject)(1);
|
|
60
|
-
const chainId$ = new (0, _rxjs.ReplaySubject)(1);
|
|
61
|
-
const getAccount = (address, chainId) => {
|
|
62
|
-
const client = _viem.createWalletClient.call(void 0, {
|
|
63
|
-
account: address,
|
|
64
|
-
transport: _viem.custom.call(void 0, wallet.provider)
|
|
65
|
-
});
|
|
66
|
-
return {
|
|
67
|
-
id: _chunkXQWJM3KCjs.getWalletAccountId.call(void 0, wallet.id, address),
|
|
68
|
-
platform: "ethereum",
|
|
69
|
-
client,
|
|
70
|
-
address: _viem.getAddress.call(void 0, address),
|
|
71
|
-
chainId,
|
|
72
|
-
walletName: wallet.name,
|
|
73
|
-
walletId: wallet.id
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
const handleAccountsChanged = (addrs) => {
|
|
77
|
-
addresses$.next(addrs);
|
|
78
|
-
};
|
|
79
|
-
const handleChainChanged = (chainIdHex) => {
|
|
80
|
-
chainId$.next(normalizeEvmChainId(chainIdHex));
|
|
81
|
-
};
|
|
82
|
-
const handleDisconnect = () => {
|
|
83
|
-
chainId$.next(void 0);
|
|
84
|
-
};
|
|
85
|
-
wallet.provider.on("accountsChanged", handleAccountsChanged);
|
|
86
|
-
wallet.provider.on("chainChanged", handleChainChanged);
|
|
87
|
-
wallet.provider.on("disconnect", handleDisconnect);
|
|
88
|
-
wallet.provider.request({ method: "eth_accounts" }).then((addrs) => addresses$.next(addrs)).catch((err) => {
|
|
89
|
-
console.error("Failed to get accounts", err);
|
|
90
|
-
addresses$.next([]);
|
|
91
|
-
});
|
|
92
|
-
wallet.provider.request({ method: "eth_chainId" }).then(handleChainChanged).catch(() => chainId$.next(void 0));
|
|
93
|
-
const sub = _rxjs.combineLatest.call(void 0, [addresses$, chainId$]).pipe(
|
|
94
|
-
_rxjs.map.call(void 0,
|
|
95
|
-
([addresses, chainId]) => addresses.map((addr) => getAccount(addr, chainId))
|
|
96
|
-
)
|
|
97
|
-
).subscribe(subscriber);
|
|
98
|
-
return () => {
|
|
99
|
-
wallet.provider.removeListener(
|
|
100
|
-
"accountsChanged",
|
|
101
|
-
handleAccountsChanged
|
|
102
|
-
);
|
|
103
|
-
wallet.provider.removeListener("chainChanged", handleChainChanged);
|
|
104
|
-
wallet.provider.removeListener("disconnect", handleDisconnect);
|
|
105
|
-
sub.unsubscribe();
|
|
106
|
-
};
|
|
107
|
-
}).pipe(_rxjs.shareReplay.call(void 0, { refCount: true, bufferSize: 1 }))
|
|
108
|
-
);
|
|
21
|
+
const toCaipNetworkId = (value) => {
|
|
22
|
+
const chainId = normalizeEvmChainId(value);
|
|
23
|
+
return chainId === void 0 ? void 0 : `eip155:${chainId}`;
|
|
109
24
|
};
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
25
|
+
const getInjectedWalletAccounts$ = (wallet) => {
|
|
26
|
+
if (!wallet.isConnected) return (0, rxjs.of)([]);
|
|
27
|
+
return require_types.getCachedObservable$(`accounts:${wallet.id}`, () => new rxjs.Observable((subscriber) => {
|
|
28
|
+
const addresses$ = new rxjs.ReplaySubject(1);
|
|
29
|
+
const chainId$ = new rxjs.ReplaySubject(1);
|
|
30
|
+
const getAccount = (address, chainId) => {
|
|
31
|
+
const client = (0, viem.createWalletClient)({
|
|
32
|
+
account: address,
|
|
33
|
+
transport: (0, viem.custom)(wallet.provider)
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
id: require_errors.getWalletAccountId(wallet.id, address),
|
|
37
|
+
platform: "ethereum",
|
|
38
|
+
client,
|
|
39
|
+
address: (0, viem.getAddress)(address),
|
|
40
|
+
chainId,
|
|
41
|
+
walletName: wallet.name,
|
|
42
|
+
walletId: wallet.id
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
const handleAccountsChanged = (addrs) => {
|
|
46
|
+
addresses$.next(addrs);
|
|
47
|
+
};
|
|
48
|
+
const handleChainChanged = (chainIdHex) => {
|
|
49
|
+
chainId$.next(normalizeEvmChainId(chainIdHex));
|
|
50
|
+
};
|
|
51
|
+
const handleDisconnect = () => {
|
|
52
|
+
chainId$.next(void 0);
|
|
53
|
+
};
|
|
54
|
+
wallet.provider.on("accountsChanged", handleAccountsChanged);
|
|
55
|
+
wallet.provider.on("chainChanged", handleChainChanged);
|
|
56
|
+
wallet.provider.on("disconnect", handleDisconnect);
|
|
57
|
+
wallet.provider.request({ method: "eth_accounts" }).then((addrs) => addresses$.next(addrs)).catch((err) => {
|
|
58
|
+
console.error("Failed to get accounts", err);
|
|
59
|
+
addresses$.next([]);
|
|
60
|
+
});
|
|
61
|
+
wallet.provider.request({ method: "eth_chainId" }).then(handleChainChanged).catch(() => chainId$.next(void 0));
|
|
62
|
+
const sub = (0, rxjs.combineLatest)([addresses$, chainId$]).pipe((0, rxjs.map)(([addresses, chainId]) => addresses.map((addr) => getAccount(addr, chainId)))).subscribe(subscriber);
|
|
63
|
+
return () => {
|
|
64
|
+
wallet.provider.removeListener("accountsChanged", handleAccountsChanged);
|
|
65
|
+
wallet.provider.removeListener("chainChanged", handleChainChanged);
|
|
66
|
+
wallet.provider.removeListener("disconnect", handleDisconnect);
|
|
67
|
+
sub.unsubscribe();
|
|
68
|
+
};
|
|
69
|
+
}).pipe((0, rxjs.shareReplay)({
|
|
70
|
+
refCount: true,
|
|
71
|
+
bufferSize: 1
|
|
72
|
+
})));
|
|
125
73
|
};
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const session = provider.session;
|
|
138
|
-
if (!session) return [];
|
|
139
|
-
const addresses = /* @__PURE__ */ new Set();
|
|
140
|
-
for (const namespace of Object.values(session.namespaces)) {
|
|
141
|
-
for (const account of _nullishCoalesce(namespace.accounts, () => ( []))) {
|
|
142
|
-
if (!account.startsWith("eip155:")) continue;
|
|
143
|
-
const raw = account.split(":")[2];
|
|
144
|
-
if (!raw) continue;
|
|
145
|
-
try {
|
|
146
|
-
addresses.add(_viem.getAddress.call(void 0, raw));
|
|
147
|
-
} catch (e) {
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return [...addresses];
|
|
152
|
-
};
|
|
153
|
-
const readCaipNetworkId = () => {
|
|
154
|
-
const session = provider.session;
|
|
155
|
-
if (!session) return void 0;
|
|
156
|
-
for (const namespace of Object.values(session.namespaces)) {
|
|
157
|
-
for (const account of _nullishCoalesce(namespace.accounts, () => ( []))) {
|
|
158
|
-
if (!account.startsWith("eip155:")) continue;
|
|
159
|
-
const ref = account.split(":")[1];
|
|
160
|
-
if (ref) return `eip155:${ref}`;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return void 0;
|
|
164
|
-
};
|
|
165
|
-
const handleChainChanged = (chainId) => {
|
|
166
|
-
const caipNetworkId = toCaipNetworkId(chainId);
|
|
167
|
-
if (caipNetworkId) {
|
|
168
|
-
caipNetworkId$.next(caipNetworkId);
|
|
169
|
-
}
|
|
170
|
-
};
|
|
171
|
-
const handleAccountsChanged = () => addresses$.next(readAddresses());
|
|
172
|
-
provider.on("chainChanged", handleChainChanged);
|
|
173
|
-
provider.on("accountsChanged", handleAccountsChanged);
|
|
174
|
-
provider.on("session_update", handleAccountsChanged);
|
|
175
|
-
caipNetworkId$.next(readCaipNetworkId());
|
|
176
|
-
provider.request({ method: "eth_chainId" }).then(handleChainChanged).catch(() => {
|
|
177
|
-
});
|
|
178
|
-
addresses$.next(readAddresses());
|
|
179
|
-
const sub = _rxjs.combineLatest.call(void 0, [
|
|
180
|
-
caipNetworkId$.pipe(_rxjs.distinctUntilChanged.call(void 0, )),
|
|
181
|
-
addresses$.pipe(_rxjs.distinctUntilChanged.call(void 0, sameAddresses))
|
|
182
|
-
]).pipe(
|
|
183
|
-
_rxjs.map.call(void 0, ([caipNetworkId, addresses]) => {
|
|
184
|
-
const chainId = normalizeEvmChainId(caipNetworkId);
|
|
185
|
-
const transport = _viem.custom.call(void 0,
|
|
186
|
-
wrapWalletConnectProvider(
|
|
187
|
-
provider,
|
|
188
|
-
// biome-ignore lint/style/noNonNullAssertion: legacy
|
|
189
|
-
provider.session.topic,
|
|
190
|
-
caipNetworkId
|
|
191
|
-
)
|
|
192
|
-
);
|
|
193
|
-
return addresses.map((addr) => {
|
|
194
|
-
const client = _viem.createWalletClient.call(void 0, {
|
|
195
|
-
account: addr,
|
|
196
|
-
transport
|
|
197
|
-
});
|
|
198
|
-
return {
|
|
199
|
-
id: _chunkXQWJM3KCjs.getWalletAccountId.call(void 0, wallet.id, addr),
|
|
200
|
-
platform: "ethereum",
|
|
201
|
-
walletName: wallet.name,
|
|
202
|
-
walletId: wallet.id,
|
|
203
|
-
address: addr,
|
|
204
|
-
client,
|
|
205
|
-
chainId
|
|
206
|
-
};
|
|
207
|
-
});
|
|
208
|
-
})
|
|
209
|
-
).subscribe(subscriber);
|
|
210
|
-
return () => {
|
|
211
|
-
provider.off("chainChanged", handleChainChanged);
|
|
212
|
-
provider.off("accountsChanged", handleAccountsChanged);
|
|
213
|
-
provider.off("session_update", handleAccountsChanged);
|
|
214
|
-
sub.unsubscribe();
|
|
215
|
-
};
|
|
216
|
-
}).pipe(_rxjs.shareReplay.call(void 0, { refCount: true, bufferSize: 1 }))
|
|
217
|
-
);
|
|
74
|
+
const wrapWalletConnectProvider = (provider, sessionTopic, caipNetworkId) => {
|
|
75
|
+
return new Proxy(provider, { get(target, prop, receiver) {
|
|
76
|
+
if (prop !== "request") return Reflect.get(target, prop, receiver);
|
|
77
|
+
return (args) => {
|
|
78
|
+
if (!args || typeof args !== "object" || !args.method) return target.request(args);
|
|
79
|
+
const next = { ...args };
|
|
80
|
+
if (next.topic === void 0) next.topic = sessionTopic;
|
|
81
|
+
if (next.chainId === void 0 && caipNetworkId !== void 0) next.chainId = caipNetworkId;
|
|
82
|
+
return target.request(next, caipNetworkId);
|
|
83
|
+
};
|
|
84
|
+
} });
|
|
218
85
|
};
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
);
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
{ walletId }
|
|
284
|
-
);
|
|
285
|
-
await provider.request({
|
|
286
|
-
method: "eth_requestAccounts"
|
|
287
|
-
});
|
|
288
|
-
const newSet = new Set(enabledWalletIds$.value);
|
|
289
|
-
newSet.add(walletId);
|
|
290
|
-
enabledWalletIds$.next(newSet);
|
|
291
|
-
store2.addEnabledWalletId(walletId);
|
|
292
|
-
};
|
|
293
|
-
const disconnectWallet = async (walletId) => {
|
|
294
|
-
if (!enabledWalletIds$.value.has(walletId))
|
|
295
|
-
throw new (0, _chunkXQWJM3KCjs.KheopskitError)(
|
|
296
|
-
"WALLET_NOT_CONNECTED",
|
|
297
|
-
`wallet ${walletId} is not connected`,
|
|
298
|
-
{ walletId }
|
|
299
|
-
);
|
|
300
|
-
const newSet = new Set(enabledWalletIds$.value);
|
|
301
|
-
newSet.delete(walletId);
|
|
302
|
-
enabledWalletIds$.next(newSet);
|
|
303
|
-
store2.removeEnabledWalletId(walletId);
|
|
304
|
-
_chunk4ENHC7G4js.clearCachedObservable.call(void 0, `accounts:${walletId}`);
|
|
305
|
-
};
|
|
306
|
-
const sub = _rxjs.combineLatest.call(void 0, [providersDetails$, enabledWalletIds$]).pipe(
|
|
307
|
-
_rxjs.map.call(void 0, ([providerDetails, enabledWalletIds]) => {
|
|
308
|
-
return providerDetails.map((pd) => {
|
|
309
|
-
const walletId = _chunk4ENHC7G4js.getWalletId.call(void 0, "ethereum", pd.info.rdns);
|
|
310
|
-
const provider = pd.provider;
|
|
311
|
-
return {
|
|
312
|
-
platform: "ethereum",
|
|
313
|
-
type: "injected",
|
|
314
|
-
id: walletId,
|
|
315
|
-
name: pd.info.name,
|
|
316
|
-
icon: pd.info.icon,
|
|
317
|
-
provider,
|
|
318
|
-
isConnected: enabledWalletIds.has(walletId),
|
|
319
|
-
sourceId: pd.info.rdns,
|
|
320
|
-
connect: () => connectWallet(walletId, provider),
|
|
321
|
-
disconnect: () => disconnectWallet(walletId)
|
|
322
|
-
};
|
|
323
|
-
});
|
|
324
|
-
}),
|
|
325
|
-
_rxjs.distinctUntilChanged.call(void 0, walletsEqual)
|
|
326
|
-
).subscribe(subscriber);
|
|
327
|
-
return () => {
|
|
328
|
-
sub.unsubscribe();
|
|
329
|
-
};
|
|
330
|
-
}).pipe(_rxjs.shareReplay.call(void 0, { refCount: true, bufferSize: 1 }));
|
|
331
|
-
var getEthereumWallets$ = (store2 = _chunkXQWJM3KCjs.store) => createEthereumInjectedWallets$(store2);
|
|
332
|
-
var walletsEqual = (a, b) => {
|
|
333
|
-
if (a.length !== b.length) return false;
|
|
334
|
-
return a.every(
|
|
335
|
-
(w, i) => w.id === _optionalChain([b, 'access', _6 => _6[i], 'optionalAccess', _7 => _7.id]) && w.isConnected === _optionalChain([b, 'access', _8 => _8[i], 'optionalAccess', _9 => _9.isConnected]) && w.name === _optionalChain([b, 'access', _10 => _10[i], 'optionalAccess', _11 => _11.name])
|
|
336
|
-
);
|
|
86
|
+
const sameAddresses = (a, b) => a.length === b.length && a.every((addr, i) => addr === b[i]);
|
|
87
|
+
const getWalletConnectAccounts$ = (wallet) => {
|
|
88
|
+
const provider = wallet.appKit.getProvider("eip155");
|
|
89
|
+
if (!wallet.platforms.includes("ethereum") || !provider?.session) return (0, rxjs.of)([]);
|
|
90
|
+
return require_types.getCachedObservable$(`accounts:${wallet.id}:ethereum:`, () => new rxjs.Observable((subscriber) => {
|
|
91
|
+
const caipNetworkId$ = new rxjs.ReplaySubject(1);
|
|
92
|
+
const addresses$ = new rxjs.ReplaySubject(1);
|
|
93
|
+
const readAddresses = () => {
|
|
94
|
+
const session = provider.session;
|
|
95
|
+
if (!session) return [];
|
|
96
|
+
const addresses = /* @__PURE__ */ new Set();
|
|
97
|
+
for (const raw of require_injectedWallets.getCaip10Addresses(require_injectedWallets.getSessionCaip10s(session, "eip155"))) try {
|
|
98
|
+
addresses.add((0, viem.getAddress)(raw));
|
|
99
|
+
} catch {}
|
|
100
|
+
return [...addresses];
|
|
101
|
+
};
|
|
102
|
+
const readCaipNetworkId = () => {
|
|
103
|
+
const session = provider.session;
|
|
104
|
+
if (!session) return void 0;
|
|
105
|
+
for (const account of require_injectedWallets.getSessionCaip10s(session, "eip155")) {
|
|
106
|
+
const ref = account.split(":")[1];
|
|
107
|
+
if (ref) return `eip155:${ref}`;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const handleChainChanged = (chainId) => {
|
|
111
|
+
const caipNetworkId = toCaipNetworkId(chainId);
|
|
112
|
+
if (caipNetworkId) caipNetworkId$.next(caipNetworkId);
|
|
113
|
+
};
|
|
114
|
+
const handleAccountsChanged = () => addresses$.next(readAddresses());
|
|
115
|
+
provider.on("chainChanged", handleChainChanged);
|
|
116
|
+
provider.on("accountsChanged", handleAccountsChanged);
|
|
117
|
+
provider.on("session_update", handleAccountsChanged);
|
|
118
|
+
caipNetworkId$.next(readCaipNetworkId());
|
|
119
|
+
provider.request({ method: "eth_chainId" }).then(handleChainChanged).catch(() => {});
|
|
120
|
+
addresses$.next(readAddresses());
|
|
121
|
+
const sub = (0, rxjs.combineLatest)([caipNetworkId$.pipe((0, rxjs.distinctUntilChanged)()), addresses$.pipe((0, rxjs.distinctUntilChanged)(sameAddresses))]).pipe((0, rxjs.map)(([caipNetworkId, addresses]) => {
|
|
122
|
+
const chainId = normalizeEvmChainId(caipNetworkId);
|
|
123
|
+
const transport = (0, viem.custom)(wrapWalletConnectProvider(provider, provider.session.topic, caipNetworkId));
|
|
124
|
+
return addresses.map((addr) => {
|
|
125
|
+
const client = (0, viem.createWalletClient)({
|
|
126
|
+
account: addr,
|
|
127
|
+
transport
|
|
128
|
+
});
|
|
129
|
+
return {
|
|
130
|
+
id: require_errors.getWalletAccountId(wallet.id, addr),
|
|
131
|
+
platform: "ethereum",
|
|
132
|
+
walletName: wallet.name,
|
|
133
|
+
walletId: wallet.id,
|
|
134
|
+
address: addr,
|
|
135
|
+
client,
|
|
136
|
+
chainId
|
|
137
|
+
};
|
|
138
|
+
});
|
|
139
|
+
})).subscribe(subscriber);
|
|
140
|
+
return () => {
|
|
141
|
+
provider.off("chainChanged", handleChainChanged);
|
|
142
|
+
provider.off("accountsChanged", handleAccountsChanged);
|
|
143
|
+
provider.off("session_update", handleAccountsChanged);
|
|
144
|
+
sub.unsubscribe();
|
|
145
|
+
};
|
|
146
|
+
}).pipe((0, rxjs.shareReplay)({
|
|
147
|
+
refCount: true,
|
|
148
|
+
bufferSize: 1
|
|
149
|
+
})));
|
|
337
150
|
};
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
getAccounts$: (wallets$) => getEthereumAccounts$(wallets$)
|
|
151
|
+
const getEthereumAccounts$ = (ethereumWallets) => require_injectedWallets.createPlatformAccounts$({
|
|
152
|
+
wallets$: ethereumWallets,
|
|
153
|
+
getInjectedAccounts$: getInjectedWalletAccounts$,
|
|
154
|
+
getWalletConnectAccounts$,
|
|
155
|
+
accountChangeKey: (account) => `${account.id}|${account.chainId ?? ""}`
|
|
344
156
|
});
|
|
157
|
+
//#endregion
|
|
158
|
+
//#region src/api/ethereum/wallets.ts
|
|
159
|
+
/**
|
|
160
|
+
* Observable that emits EIP-6963 provider details from injected wallets.
|
|
161
|
+
* Returns empty array during SSR since browser wallet APIs are not available.
|
|
162
|
+
*/
|
|
163
|
+
const providersDetails$ = new rxjs.Observable((subscriber) => {
|
|
164
|
+
if (typeof window === "undefined") {
|
|
165
|
+
subscriber.next([]);
|
|
166
|
+
return () => {};
|
|
167
|
+
}
|
|
168
|
+
const mipdStore = (0, mipd.createStore)();
|
|
169
|
+
const unsubscribe = mipdStore.subscribe((providerDetails) => {
|
|
170
|
+
subscriber.next(providerDetails);
|
|
171
|
+
});
|
|
172
|
+
const providerDetails = mipdStore.getProviders();
|
|
173
|
+
subscriber.next(providerDetails);
|
|
174
|
+
return () => {
|
|
175
|
+
unsubscribe();
|
|
176
|
+
mipdStore.destroy();
|
|
177
|
+
};
|
|
178
|
+
}).pipe((0, rxjs.shareReplay)({
|
|
179
|
+
refCount: true,
|
|
180
|
+
bufferSize: 1
|
|
181
|
+
}));
|
|
182
|
+
const getEthereumWallets$ = (store) => require_injectedWallets.createInjectedWallets$(store, {
|
|
183
|
+
sources$: providersDetails$,
|
|
184
|
+
getWalletId: (pd) => require_types.getWalletId("ethereum", pd.info.rdns),
|
|
185
|
+
connect: async (pd) => {
|
|
186
|
+
await pd.provider.request({ method: "eth_requestAccounts" });
|
|
187
|
+
},
|
|
188
|
+
onDisconnected: (walletId) => require_types.clearCachedObservable(`accounts:${walletId}`),
|
|
189
|
+
buildWallet: ({ source: pd, walletId, isConnected, connect, disconnect }) => ({
|
|
190
|
+
platform: "ethereum",
|
|
191
|
+
type: "injected",
|
|
192
|
+
id: walletId,
|
|
193
|
+
name: pd.info.name,
|
|
194
|
+
icon: pd.info.icon,
|
|
195
|
+
provider: pd.provider,
|
|
196
|
+
isConnected,
|
|
197
|
+
sourceId: pd.info.rdns,
|
|
198
|
+
connect,
|
|
199
|
+
disconnect
|
|
200
|
+
})
|
|
201
|
+
});
|
|
202
|
+
//#endregion
|
|
203
|
+
//#region src/api/ethereum/plugin.ts
|
|
204
|
+
/**
|
|
205
|
+
* Ethereum platform plugin. Pass to `getKheopskit$({ platforms: [ethereum()] })`.
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* ```ts
|
|
209
|
+
* import { ethereum } from "@kheopskit/core/ethereum";
|
|
210
|
+
* ethereum();
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
const ethereum = () => ({
|
|
214
|
+
platform: "ethereum",
|
|
215
|
+
getWallets$: (ctx) => getEthereumWallets$(ctx.store),
|
|
216
|
+
getAccounts$: (wallets$) => getEthereumAccounts$(wallets$)
|
|
217
|
+
});
|
|
218
|
+
//#endregion
|
|
219
|
+
exports.ethereum = ethereum;
|
|
220
|
+
exports.isEthereumAddress = require_errors.isEthereumAddress;
|
|
221
|
+
exports.isInjectedWallet = require_types.isInjectedWallet;
|
|
222
|
+
exports.isWalletConnectWallet = require_types.isWalletConnectWallet;
|
|
345
223
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
exports.ethereum = ethereum; exports.isEthereumAddress = _chunkXQWJM3KCjs.isEthereumAddress; exports.isInjectedWallet = _chunk4ENHC7G4js.isInjectedWallet; exports.isWalletConnectWallet = _chunk4ENHC7G4js.isWalletConnectWallet;
|
|
351
224
|
//# sourceMappingURL=ethereum.js.map
|