@gearbox-protocol/sdk 8.18.1 → 8.18.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.
|
@@ -28,19 +28,16 @@ var import_viem = require("viem");
|
|
|
28
28
|
var import_sdk = require("../sdk/index.js");
|
|
29
29
|
function createTransport(config) {
|
|
30
30
|
const { rpcProviders = [], protocol, network, ...rest } = config;
|
|
31
|
-
const
|
|
32
|
-
const rpcUrls = config.rpcUrls.filter((url) => {
|
|
33
|
-
return url.startsWith(protocol) && !allKeys.some((key) => url.includes(key));
|
|
34
|
-
});
|
|
31
|
+
const rpcUrls = /* @__PURE__ */ new Set();
|
|
35
32
|
for (const { provider, keys } of rpcProviders) {
|
|
36
33
|
for (const key of keys) {
|
|
37
34
|
const url = getProviderUrl(provider, network, key, protocol);
|
|
38
35
|
if (url) {
|
|
39
|
-
rpcUrls.
|
|
36
|
+
rpcUrls.add(url);
|
|
40
37
|
}
|
|
41
38
|
}
|
|
42
39
|
}
|
|
43
|
-
const transports = rpcUrls.map(
|
|
40
|
+
const transports = Array.from(rpcUrls).map(
|
|
44
41
|
(url) => protocol === "http" ? (0, import_viem.http)(url, rest) : (0, import_viem.webSocket)(url, rest)
|
|
45
42
|
);
|
|
46
43
|
if (transports.length === 0) {
|
|
@@ -54,6 +51,12 @@ function getProviderUrl(provider, network, apiKey, protocol) {
|
|
|
54
51
|
return getAlchemyUrl(network, apiKey, protocol);
|
|
55
52
|
case "drpc":
|
|
56
53
|
return getDrpcUrl(network, apiKey, protocol);
|
|
54
|
+
case "custom": {
|
|
55
|
+
if (!apiKey.startsWith(protocol)) {
|
|
56
|
+
throw new Error(`Custom RPC URL must start with ${protocol}`);
|
|
57
|
+
}
|
|
58
|
+
return apiKey;
|
|
59
|
+
}
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
62
|
function getAlchemyUrl(network, apiKey, protocol) {
|
|
@@ -74,11 +77,11 @@ const DRPC_NETS = {
|
|
|
74
77
|
Berachain: "berachain",
|
|
75
78
|
Avalanche: "avalanche",
|
|
76
79
|
Monad: "monad-testnet",
|
|
80
|
+
Hemi: "hemi",
|
|
81
|
+
Lisk: "lisk",
|
|
77
82
|
// TODO: no drpc
|
|
78
83
|
MegaETH: "",
|
|
79
|
-
Etherlink: ""
|
|
80
|
-
Hemi: "hemi",
|
|
81
|
-
Lisk: "lisk"
|
|
84
|
+
Etherlink: ""
|
|
82
85
|
};
|
|
83
86
|
function getDrpcUrl(network, apiKey, protocol) {
|
|
84
87
|
const net = DRPC_NETS[network];
|
|
@@ -2,19 +2,16 @@ import { fallback, http, webSocket } from "viem";
|
|
|
2
2
|
import { getChain } from "../sdk/index.js";
|
|
3
3
|
function createTransport(config) {
|
|
4
4
|
const { rpcProviders = [], protocol, network, ...rest } = config;
|
|
5
|
-
const
|
|
6
|
-
const rpcUrls = config.rpcUrls.filter((url) => {
|
|
7
|
-
return url.startsWith(protocol) && !allKeys.some((key) => url.includes(key));
|
|
8
|
-
});
|
|
5
|
+
const rpcUrls = /* @__PURE__ */ new Set();
|
|
9
6
|
for (const { provider, keys } of rpcProviders) {
|
|
10
7
|
for (const key of keys) {
|
|
11
8
|
const url = getProviderUrl(provider, network, key, protocol);
|
|
12
9
|
if (url) {
|
|
13
|
-
rpcUrls.
|
|
10
|
+
rpcUrls.add(url);
|
|
14
11
|
}
|
|
15
12
|
}
|
|
16
13
|
}
|
|
17
|
-
const transports = rpcUrls.map(
|
|
14
|
+
const transports = Array.from(rpcUrls).map(
|
|
18
15
|
(url) => protocol === "http" ? http(url, rest) : webSocket(url, rest)
|
|
19
16
|
);
|
|
20
17
|
if (transports.length === 0) {
|
|
@@ -28,6 +25,12 @@ function getProviderUrl(provider, network, apiKey, protocol) {
|
|
|
28
25
|
return getAlchemyUrl(network, apiKey, protocol);
|
|
29
26
|
case "drpc":
|
|
30
27
|
return getDrpcUrl(network, apiKey, protocol);
|
|
28
|
+
case "custom": {
|
|
29
|
+
if (!apiKey.startsWith(protocol)) {
|
|
30
|
+
throw new Error(`Custom RPC URL must start with ${protocol}`);
|
|
31
|
+
}
|
|
32
|
+
return apiKey;
|
|
33
|
+
}
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
function getAlchemyUrl(network, apiKey, protocol) {
|
|
@@ -48,11 +51,11 @@ const DRPC_NETS = {
|
|
|
48
51
|
Berachain: "berachain",
|
|
49
52
|
Avalanche: "avalanche",
|
|
50
53
|
Monad: "monad-testnet",
|
|
54
|
+
Hemi: "hemi",
|
|
55
|
+
Lisk: "lisk",
|
|
51
56
|
// TODO: no drpc
|
|
52
57
|
MegaETH: "",
|
|
53
|
-
Etherlink: ""
|
|
54
|
-
Hemi: "hemi",
|
|
55
|
-
Lisk: "lisk"
|
|
58
|
+
Etherlink: ""
|
|
56
59
|
};
|
|
57
60
|
function getDrpcUrl(network, apiKey, protocol) {
|
|
58
61
|
const net = DRPC_NETS[network];
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import type { HttpTransportConfig, Transport, WebSocketTransportConfig } from "viem";
|
|
2
2
|
import type { NetworkType } from "../sdk/index.js";
|
|
3
|
-
export type RpcProvider = "alchemy" | "drpc";
|
|
3
|
+
export type RpcProvider = "alchemy" | "drpc" | "custom";
|
|
4
4
|
export interface ProviderConfig {
|
|
5
5
|
provider: RpcProvider;
|
|
6
6
|
keys: string[];
|
|
7
7
|
}
|
|
8
8
|
export interface CreateTransportURLOptions {
|
|
9
|
-
/**
|
|
10
|
-
* Explicitly provided RPC URLs, like anvil
|
|
11
|
-
* Have highest priority
|
|
12
|
-
*/
|
|
13
|
-
rpcUrls: string[];
|
|
14
9
|
/**
|
|
15
10
|
* Known providers, first has highest priority
|
|
16
11
|
*/
|