@qevm/providers 1.0.2 → 1.0.3
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/README.md +3 -9
- package/lib/_version.d.ts +1 -1
- package/lib/_version.js +1 -1
- package/lib/base-provider.d.ts +2 -2
- package/lib/base-provider.d.ts.map +1 -1
- package/lib/base-provider.js +300 -145
- package/lib/base-provider.js.map +1 -1
- package/lib/browser-ipc-provider.d.ts.map +1 -1
- package/lib/browser-ipc-provider.js.map +1 -1
- package/lib/browser-net.d.ts.map +1 -1
- package/lib/browser-net.js.map +1 -1
- package/lib/browser-ws.d.ts.map +1 -1
- package/lib/browser-ws.js +2 -2
- package/lib/browser-ws.js.map +1 -1
- package/lib/fallback-provider.d.ts +1 -1
- package/lib/fallback-provider.d.ts.map +1 -1
- package/lib/fallback-provider.js +86 -55
- package/lib/fallback-provider.js.map +1 -1
- package/lib/formatter.d.ts.map +1 -1
- package/lib/formatter.js +35 -29
- package/lib/formatter.js.map +1 -1
- package/lib/index.d.ts +3 -10
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -28
- package/lib/index.js.map +1 -1
- package/lib/ipc-provider.d.ts +1 -1
- package/lib/ipc-provider.d.ts.map +1 -1
- package/lib/ipc-provider.js +6 -4
- package/lib/ipc-provider.js.map +1 -1
- package/lib/json-rpc-batch-provider.d.ts.map +1 -1
- package/lib/json-rpc-batch-provider.js +6 -6
- package/lib/json-rpc-batch-provider.js.map +1 -1
- package/lib/json-rpc-provider.d.ts +2 -2
- package/lib/json-rpc-provider.d.ts.map +1 -1
- package/lib/json-rpc-provider.js +167 -69
- package/lib/json-rpc-provider.js.map +1 -1
- package/lib/url-json-rpc-provider.d.ts +1 -1
- package/lib/url-json-rpc-provider.d.ts.map +1 -1
- package/lib/url-json-rpc-provider.js +4 -4
- package/lib/url-json-rpc-provider.js.map +1 -1
- package/lib/web3-provider.d.ts +1 -2
- package/lib/web3-provider.d.ts.map +1 -1
- package/lib/web3-provider.js +11 -14
- package/lib/web3-provider.js.map +1 -1
- package/lib/websocket-provider.d.ts +1 -1
- package/lib/websocket-provider.d.ts.map +1 -1
- package/lib/websocket-provider.js +21 -17
- package/lib/websocket-provider.js.map +1 -1
- package/lib/ws.d.ts.map +1 -1
- package/package.json +61 -58
- package/src.ts/_version.ts +1 -1
- package/src.ts/base-provider.ts +1418 -645
- package/src.ts/browser-ipc-provider.ts +1 -3
- package/src.ts/browser-net.ts +1 -1
- package/src.ts/browser-ws.ts +14 -8
- package/src.ts/fallback-provider.ts +375 -198
- package/src.ts/formatter.ts +161 -81
- package/src.ts/index.ts +54 -68
- package/src.ts/ipc-provider.ts +8 -7
- package/src.ts/json-rpc-batch-provider.ts +48 -44
- package/src.ts/json-rpc-provider.ts +594 -245
- package/src.ts/url-json-rpc-provider.ts +34 -15
- package/src.ts/web3-provider.ts +87 -54
- package/src.ts/websocket-provider.ts +124 -66
- package/src.ts/ws.ts +1 -1
- package/lib/alchemy-provider.d.ts +0 -17
- package/lib/alchemy-provider.d.ts.map +0 -1
- package/lib/alchemy-provider.js +0 -88
- package/lib/alchemy-provider.js.map +0 -1
- package/lib/ankr-provider.d.ts +0 -10
- package/lib/ankr-provider.d.ts.map +0 -1
- package/lib/ankr-provider.js +0 -59
- package/lib/ankr-provider.js.map +0 -1
- package/lib/cloudflare-provider.d.ts +0 -8
- package/lib/cloudflare-provider.d.ts.map +0 -1
- package/lib/cloudflare-provider.js +0 -37
- package/lib/cloudflare-provider.js.map +0 -1
- package/lib/etherscan-provider.d.ts +0 -18
- package/lib/etherscan-provider.d.ts.map +0 -1
- package/lib/etherscan-provider.js +0 -408
- package/lib/etherscan-provider.js.map +0 -1
- package/lib/infura-provider.d.ts +0 -21
- package/lib/infura-provider.d.ts.map +0 -1
- package/lib/infura-provider.js +0 -117
- package/lib/infura-provider.js.map +0 -1
- package/lib/nodesmith-provider.d.ts +0 -7
- package/lib/nodesmith-provider.d.ts.map +0 -1
- package/lib/nodesmith-provider.js +0 -44
- package/lib/nodesmith-provider.js.map +0 -1
- package/lib/pocket-provider.d.ts +0 -12
- package/lib/pocket-provider.d.ts.map +0 -1
- package/lib/pocket-provider.js +0 -78
- package/lib/pocket-provider.js.map +0 -1
- package/src.ts/alchemy-provider.ts +0 -101
- package/src.ts/ankr-provider.ts +0 -68
- package/src.ts/cloudflare-provider.ts +0 -42
- package/src.ts/etherscan-provider.ts +0 -454
- package/src.ts/infura-provider.ts +0 -143
- package/src.ts/nodesmith-provider.ts +0 -50
- package/src.ts/pocket-provider.ts +0 -93
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
|
|
2
1
|
"use strict";
|
|
3
2
|
|
|
4
|
-
import { Network, Networkish } from "@
|
|
5
|
-
import { defineReadOnly, getStatic } from "@
|
|
3
|
+
import { Network, Networkish } from "@qevm/networks";
|
|
4
|
+
import { defineReadOnly, getStatic } from "@qevm/properties";
|
|
6
5
|
import { ConnectionInfo } from "@qevm/web";
|
|
7
6
|
|
|
8
|
-
import { Logger } from "@
|
|
7
|
+
import { Logger } from "@qevm/logger";
|
|
9
8
|
import { version } from "./_version";
|
|
10
9
|
const logger = new Logger(version);
|
|
11
10
|
|
|
@@ -32,7 +31,11 @@ export class StaticJsonRpcProvider extends JsonRpcProvider {
|
|
|
32
31
|
network = await super.detectNetwork();
|
|
33
32
|
|
|
34
33
|
if (!network) {
|
|
35
|
-
logger.throwError(
|
|
34
|
+
logger.throwError(
|
|
35
|
+
"no network detected",
|
|
36
|
+
Logger.errors.UNKNOWN_ERROR,
|
|
37
|
+
{},
|
|
38
|
+
);
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
// If still not set, set it
|
|
@@ -47,21 +50,33 @@ export class StaticJsonRpcProvider extends JsonRpcProvider {
|
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
52
|
|
|
50
|
-
export abstract class UrlJsonRpcProvider
|
|
53
|
+
export abstract class UrlJsonRpcProvider
|
|
54
|
+
extends StaticJsonRpcProvider
|
|
55
|
+
implements CommunityResourcable
|
|
56
|
+
{
|
|
51
57
|
readonly apiKey: any;
|
|
52
58
|
|
|
53
59
|
constructor(network?: Networkish, apiKey?: any) {
|
|
54
60
|
logger.checkAbstract(new.target, UrlJsonRpcProvider);
|
|
55
61
|
|
|
56
62
|
// Normalize the Network and API Key
|
|
57
|
-
network = getStatic<(network: Networkish) => Network>(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
network = getStatic<(network: Networkish) => Network>(
|
|
64
|
+
new.target,
|
|
65
|
+
"getNetwork",
|
|
66
|
+
)(network);
|
|
67
|
+
apiKey = getStatic<(apiKey: string) => string>(
|
|
68
|
+
new.target,
|
|
69
|
+
"getApiKey",
|
|
70
|
+
)(apiKey);
|
|
71
|
+
|
|
72
|
+
const connection = getStatic<getUrlFunc>(new.target, "getUrl")(
|
|
73
|
+
network,
|
|
74
|
+
apiKey,
|
|
75
|
+
);
|
|
61
76
|
|
|
62
77
|
super(connection, network);
|
|
63
78
|
|
|
64
|
-
if (typeof
|
|
79
|
+
if (typeof apiKey === "string") {
|
|
65
80
|
defineReadOnly(this, "apiKey", apiKey);
|
|
66
81
|
} else if (apiKey != null) {
|
|
67
82
|
Object.keys(apiKey).forEach((key) => {
|
|
@@ -82,7 +97,7 @@ export abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implement
|
|
|
82
97
|
return logger.throwError(
|
|
83
98
|
"API provider does not support signing",
|
|
84
99
|
Logger.errors.UNSUPPORTED_OPERATION,
|
|
85
|
-
{ operation: "getSigner" }
|
|
100
|
+
{ operation: "getSigner" },
|
|
86
101
|
);
|
|
87
102
|
}
|
|
88
103
|
|
|
@@ -99,8 +114,12 @@ export abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implement
|
|
|
99
114
|
// API key will have been sanitized by the getApiKey first, so any validation
|
|
100
115
|
// or transformations can be done there.
|
|
101
116
|
static getUrl(network: Network, apiKey: any): string | ConnectionInfo {
|
|
102
|
-
return logger.throwError(
|
|
103
|
-
|
|
104
|
-
|
|
117
|
+
return logger.throwError(
|
|
118
|
+
"not implemented; sub-classes must override getUrl",
|
|
119
|
+
Logger.errors.NOT_IMPLEMENTED,
|
|
120
|
+
{
|
|
121
|
+
operation: "getUrl",
|
|
122
|
+
},
|
|
123
|
+
);
|
|
105
124
|
}
|
|
106
125
|
}
|
package/src.ts/web3-provider.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { Networkish } from "@
|
|
4
|
-
import { deepCopy, defineReadOnly } from "@
|
|
3
|
+
import { Networkish } from "@qevm/networks";
|
|
4
|
+
import { deepCopy, defineReadOnly } from "@qevm/properties";
|
|
5
5
|
|
|
6
|
-
import { Logger } from "@
|
|
6
|
+
import { Logger } from "@qevm/logger";
|
|
7
7
|
import { version } from "./_version";
|
|
8
8
|
const logger = new Logger(version);
|
|
9
9
|
|
|
@@ -11,30 +11,47 @@ import { JsonRpcProvider } from "./json-rpc-provider";
|
|
|
11
11
|
|
|
12
12
|
// Exported Types
|
|
13
13
|
export type ExternalProvider = {
|
|
14
|
-
isMetaMask?: boolean;
|
|
15
14
|
isStatus?: boolean;
|
|
16
15
|
host?: string;
|
|
17
16
|
path?: string;
|
|
18
|
-
sendAsync?: (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
sendAsync?: (
|
|
18
|
+
request: { method: string; params?: Array<any> },
|
|
19
|
+
callback: (error: any, response: any) => void,
|
|
20
|
+
) => void;
|
|
21
|
+
send?: (
|
|
22
|
+
request: { method: string; params?: Array<any> },
|
|
23
|
+
callback: (error: any, response: any) => void,
|
|
24
|
+
) => void;
|
|
25
|
+
request?: (request: {
|
|
26
|
+
method: string;
|
|
27
|
+
params?: Array<any>;
|
|
28
|
+
}) => Promise<any>;
|
|
29
|
+
};
|
|
22
30
|
|
|
23
31
|
let _nextId = 1;
|
|
24
32
|
|
|
25
|
-
export type JsonRpcFetchFunc = (
|
|
33
|
+
export type JsonRpcFetchFunc = (
|
|
34
|
+
method: string,
|
|
35
|
+
params?: Array<any>,
|
|
36
|
+
) => Promise<any>;
|
|
26
37
|
|
|
27
|
-
type Web3LegacySend = (
|
|
38
|
+
type Web3LegacySend = (
|
|
39
|
+
request: any,
|
|
40
|
+
callback: (error: Error, response: any) => void,
|
|
41
|
+
) => void;
|
|
28
42
|
|
|
29
|
-
function buildWeb3LegacyFetcher(
|
|
43
|
+
function buildWeb3LegacyFetcher(
|
|
44
|
+
provider: ExternalProvider,
|
|
45
|
+
sendFunc: Web3LegacySend,
|
|
46
|
+
): JsonRpcFetchFunc {
|
|
30
47
|
const fetcher = "Web3LegacyFetcher";
|
|
31
48
|
|
|
32
|
-
return function(method: string, params: Array<any>): Promise<any> {
|
|
49
|
+
return function (method: string, params: Array<any>): Promise<any> {
|
|
33
50
|
const request = {
|
|
34
51
|
method: method,
|
|
35
52
|
params: params,
|
|
36
|
-
id:
|
|
37
|
-
jsonrpc: "2.0"
|
|
53
|
+
id: _nextId++,
|
|
54
|
+
jsonrpc: "2.0",
|
|
38
55
|
};
|
|
39
56
|
|
|
40
57
|
return new Promise((resolve, reject) => {
|
|
@@ -42,18 +59,17 @@ function buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3Legacy
|
|
|
42
59
|
action: "request",
|
|
43
60
|
fetcher,
|
|
44
61
|
request: deepCopy(request),
|
|
45
|
-
provider: this
|
|
62
|
+
provider: this,
|
|
46
63
|
});
|
|
47
64
|
|
|
48
65
|
sendFunc(request, (error, response) => {
|
|
49
|
-
|
|
50
66
|
if (error) {
|
|
51
67
|
this.emit("debug", {
|
|
52
68
|
action: "response",
|
|
53
69
|
fetcher,
|
|
54
70
|
error,
|
|
55
71
|
request,
|
|
56
|
-
provider: this
|
|
72
|
+
provider: this,
|
|
57
73
|
});
|
|
58
74
|
|
|
59
75
|
return reject(error);
|
|
@@ -64,7 +80,7 @@ function buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3Legacy
|
|
|
64
80
|
fetcher,
|
|
65
81
|
request,
|
|
66
82
|
response,
|
|
67
|
-
provider: this
|
|
83
|
+
provider: this,
|
|
68
84
|
});
|
|
69
85
|
|
|
70
86
|
if (response.error) {
|
|
@@ -77,12 +93,14 @@ function buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3Legacy
|
|
|
77
93
|
resolve(response.result);
|
|
78
94
|
});
|
|
79
95
|
});
|
|
80
|
-
}
|
|
96
|
+
};
|
|
81
97
|
}
|
|
82
98
|
|
|
83
99
|
function buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {
|
|
84
|
-
return function(method: string, params: Array<any>): Promise<any> {
|
|
85
|
-
if (params == null) {
|
|
100
|
+
return function (method: string, params: Array<any>): Promise<any> {
|
|
101
|
+
if (params == null) {
|
|
102
|
+
params = [];
|
|
103
|
+
}
|
|
86
104
|
|
|
87
105
|
const request = { method, params };
|
|
88
106
|
|
|
@@ -90,39 +108,44 @@ function buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {
|
|
|
90
108
|
action: "request",
|
|
91
109
|
fetcher: "Eip1193Fetcher",
|
|
92
110
|
request: deepCopy(request),
|
|
93
|
-
provider: this
|
|
111
|
+
provider: this,
|
|
94
112
|
});
|
|
95
113
|
|
|
96
|
-
return provider.request(request).then(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return response;
|
|
114
|
+
return provider.request(request).then(
|
|
115
|
+
(response) => {
|
|
116
|
+
this.emit("debug", {
|
|
117
|
+
action: "response",
|
|
118
|
+
fetcher: "Eip1193Fetcher",
|
|
119
|
+
request,
|
|
120
|
+
response,
|
|
121
|
+
provider: this,
|
|
122
|
+
});
|
|
106
123
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
124
|
+
return response;
|
|
125
|
+
},
|
|
126
|
+
(error) => {
|
|
127
|
+
this.emit("debug", {
|
|
128
|
+
action: "response",
|
|
129
|
+
fetcher: "Eip1193Fetcher",
|
|
130
|
+
request,
|
|
131
|
+
error,
|
|
132
|
+
provider: this,
|
|
133
|
+
});
|
|
115
134
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
135
|
+
throw error;
|
|
136
|
+
},
|
|
137
|
+
);
|
|
138
|
+
};
|
|
119
139
|
}
|
|
120
140
|
|
|
121
141
|
export class Web3Provider extends JsonRpcProvider {
|
|
122
142
|
readonly provider: ExternalProvider;
|
|
123
143
|
readonly jsonRpcFetchFunc: JsonRpcFetchFunc;
|
|
124
144
|
|
|
125
|
-
constructor(
|
|
145
|
+
constructor(
|
|
146
|
+
provider: ExternalProvider | JsonRpcFetchFunc,
|
|
147
|
+
network?: Networkish,
|
|
148
|
+
) {
|
|
126
149
|
if (provider == null) {
|
|
127
150
|
logger.throwArgumentError("missing provider", "provider", provider);
|
|
128
151
|
}
|
|
@@ -131,30 +154,40 @@ export class Web3Provider extends JsonRpcProvider {
|
|
|
131
154
|
let jsonRpcFetchFunc: JsonRpcFetchFunc = null;
|
|
132
155
|
let subprovider: ExternalProvider = null;
|
|
133
156
|
|
|
134
|
-
if (typeof
|
|
157
|
+
if (typeof provider === "function") {
|
|
135
158
|
path = "unknown:";
|
|
136
159
|
jsonRpcFetchFunc = provider;
|
|
137
|
-
|
|
138
160
|
} else {
|
|
139
161
|
path = provider.host || provider.path || "";
|
|
140
|
-
if (!path && provider.isMetaMask) {
|
|
141
|
-
path = "metamask";
|
|
142
|
-
}
|
|
143
162
|
|
|
144
163
|
subprovider = provider;
|
|
145
164
|
|
|
146
165
|
if (provider.request) {
|
|
147
|
-
if (path === "") {
|
|
166
|
+
if (path === "") {
|
|
167
|
+
path = "eip-1193:";
|
|
168
|
+
}
|
|
148
169
|
jsonRpcFetchFunc = buildEip1193Fetcher(provider);
|
|
149
170
|
} else if (provider.sendAsync) {
|
|
150
|
-
jsonRpcFetchFunc = buildWeb3LegacyFetcher(
|
|
171
|
+
jsonRpcFetchFunc = buildWeb3LegacyFetcher(
|
|
172
|
+
provider,
|
|
173
|
+
provider.sendAsync.bind(provider),
|
|
174
|
+
);
|
|
151
175
|
} else if (provider.send) {
|
|
152
|
-
jsonRpcFetchFunc = buildWeb3LegacyFetcher(
|
|
176
|
+
jsonRpcFetchFunc = buildWeb3LegacyFetcher(
|
|
177
|
+
provider,
|
|
178
|
+
provider.send.bind(provider),
|
|
179
|
+
);
|
|
153
180
|
} else {
|
|
154
|
-
logger.throwArgumentError(
|
|
181
|
+
logger.throwArgumentError(
|
|
182
|
+
"unsupported provider",
|
|
183
|
+
"provider",
|
|
184
|
+
provider,
|
|
185
|
+
);
|
|
155
186
|
}
|
|
156
187
|
|
|
157
|
-
if (!path) {
|
|
188
|
+
if (!path) {
|
|
189
|
+
path = "unknown:";
|
|
190
|
+
}
|
|
158
191
|
}
|
|
159
192
|
|
|
160
193
|
super(path, network);
|