@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
package/src.ts/index.ts
CHANGED
|
@@ -11,33 +11,40 @@ import {
|
|
|
11
11
|
Provider,
|
|
12
12
|
TransactionReceipt,
|
|
13
13
|
TransactionRequest,
|
|
14
|
-
TransactionResponse
|
|
14
|
+
TransactionResponse,
|
|
15
15
|
} from "@qevm/abstract-provider";
|
|
16
16
|
|
|
17
|
-
import { getNetwork } from "@
|
|
18
|
-
import { Network, Networkish } from "@
|
|
17
|
+
import { getNetwork } from "@qevm/networks";
|
|
18
|
+
import { Network, Networkish } from "@qevm/networks";
|
|
19
19
|
|
|
20
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
BaseProvider,
|
|
22
|
+
EnsProvider,
|
|
23
|
+
EnsResolver,
|
|
24
|
+
Resolver,
|
|
25
|
+
} from "./base-provider";
|
|
21
26
|
|
|
22
|
-
import { AlchemyProvider, AlchemyWebSocketProvider } from "./alchemy-provider";
|
|
23
|
-
import { AnkrProvider } from "./ankr-provider";
|
|
24
|
-
import { CloudflareProvider } from "./cloudflare-provider";
|
|
25
|
-
import { EtherscanProvider } from "./etherscan-provider";
|
|
26
27
|
import { FallbackProvider, FallbackProviderConfig } from "./fallback-provider";
|
|
27
28
|
import { IpcProvider } from "./ipc-provider";
|
|
28
|
-
import { InfuraProvider, InfuraWebSocketProvider } from "./infura-provider";
|
|
29
29
|
import { JsonRpcProvider, JsonRpcSigner } from "./json-rpc-provider";
|
|
30
30
|
import { JsonRpcBatchProvider } from "./json-rpc-batch-provider";
|
|
31
|
-
import {
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
import {
|
|
32
|
+
StaticJsonRpcProvider,
|
|
33
|
+
UrlJsonRpcProvider,
|
|
34
|
+
} from "./url-json-rpc-provider";
|
|
34
35
|
import { Web3Provider } from "./web3-provider";
|
|
35
36
|
import { WebSocketProvider } from "./websocket-provider";
|
|
36
37
|
import { ExternalProvider, JsonRpcFetchFunc } from "./web3-provider";
|
|
37
38
|
|
|
38
|
-
import {
|
|
39
|
+
import {
|
|
40
|
+
CommunityResourcable,
|
|
41
|
+
Formatter,
|
|
42
|
+
isCommunityResourcable,
|
|
43
|
+
isCommunityResource,
|
|
44
|
+
showThrottleMessage,
|
|
45
|
+
} from "./formatter";
|
|
39
46
|
|
|
40
|
-
import { Logger } from "@
|
|
47
|
+
import { Logger } from "@qevm/logger";
|
|
41
48
|
import { version } from "./_version";
|
|
42
49
|
const logger = new Logger(version);
|
|
43
50
|
|
|
@@ -45,112 +52,97 @@ const logger = new Logger(version);
|
|
|
45
52
|
// Helper Functions
|
|
46
53
|
|
|
47
54
|
function getDefaultProvider(network?: Networkish, options?: any): BaseProvider {
|
|
48
|
-
if (network == null) {
|
|
55
|
+
if (network == null) {
|
|
56
|
+
network = "homestead";
|
|
57
|
+
}
|
|
49
58
|
|
|
50
59
|
// If passed a URL, figure out the right type of provider based on the scheme
|
|
51
|
-
if (typeof
|
|
60
|
+
if (typeof network === "string") {
|
|
52
61
|
// @TODO: Add support for IpcProvider; maybe if it ends in ".ipc"?
|
|
53
62
|
|
|
54
63
|
// Handle http and ws (and their secure variants)
|
|
55
64
|
const match = network.match(/^(ws|http)s?:/i);
|
|
56
65
|
if (match) {
|
|
57
66
|
switch (match[1].toLowerCase()) {
|
|
58
|
-
case "http":
|
|
67
|
+
case "http":
|
|
68
|
+
case "https":
|
|
59
69
|
return new JsonRpcProvider(network);
|
|
60
|
-
case "ws":
|
|
70
|
+
case "ws":
|
|
71
|
+
case "wss":
|
|
61
72
|
return new WebSocketProvider(network);
|
|
62
73
|
default:
|
|
63
|
-
logger.throwArgumentError(
|
|
74
|
+
logger.throwArgumentError(
|
|
75
|
+
"unsupported URL scheme",
|
|
76
|
+
"network",
|
|
77
|
+
network,
|
|
78
|
+
);
|
|
64
79
|
}
|
|
65
80
|
}
|
|
66
81
|
}
|
|
67
82
|
|
|
68
83
|
const n = getNetwork(network);
|
|
69
84
|
if (!n || !n._defaultProvider) {
|
|
70
|
-
logger.throwError(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
85
|
+
logger.throwError(
|
|
86
|
+
"unsupported getDefaultProvider network",
|
|
87
|
+
Logger.errors.NETWORK_ERROR,
|
|
88
|
+
{
|
|
89
|
+
operation: "getDefaultProvider",
|
|
90
|
+
network: network,
|
|
91
|
+
},
|
|
92
|
+
);
|
|
74
93
|
}
|
|
75
94
|
|
|
76
|
-
return n._defaultProvider(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
Web3Provider,
|
|
88
|
-
|
|
89
|
-
IpcProvider,
|
|
90
|
-
}, options);
|
|
95
|
+
return n._defaultProvider(
|
|
96
|
+
{
|
|
97
|
+
FallbackProvider,
|
|
98
|
+
|
|
99
|
+
JsonRpcProvider,
|
|
100
|
+
Web3Provider,
|
|
101
|
+
|
|
102
|
+
IpcProvider,
|
|
103
|
+
},
|
|
104
|
+
options,
|
|
105
|
+
);
|
|
91
106
|
}
|
|
92
107
|
|
|
93
108
|
////////////////////////
|
|
94
109
|
// Exports
|
|
95
110
|
|
|
96
111
|
export {
|
|
97
|
-
|
|
98
112
|
// Abstract Providers (or Abstract-ish)
|
|
99
113
|
Provider,
|
|
100
114
|
BaseProvider,
|
|
101
|
-
|
|
102
115
|
Resolver,
|
|
103
|
-
|
|
104
116
|
UrlJsonRpcProvider,
|
|
105
117
|
|
|
106
118
|
///////////////////////
|
|
107
119
|
// Concrete Providers
|
|
108
|
-
|
|
109
120
|
FallbackProvider,
|
|
110
|
-
|
|
111
|
-
AlchemyProvider,
|
|
112
|
-
AlchemyWebSocketProvider,
|
|
113
|
-
AnkrProvider,
|
|
114
|
-
CloudflareProvider,
|
|
115
|
-
EtherscanProvider,
|
|
116
|
-
InfuraProvider,
|
|
117
|
-
InfuraWebSocketProvider,
|
|
118
121
|
JsonRpcProvider,
|
|
119
122
|
JsonRpcBatchProvider,
|
|
120
|
-
NodesmithProvider,
|
|
121
|
-
PocketProvider,
|
|
122
123
|
StaticJsonRpcProvider,
|
|
123
124
|
Web3Provider,
|
|
124
125
|
WebSocketProvider,
|
|
125
|
-
|
|
126
126
|
IpcProvider,
|
|
127
127
|
|
|
128
|
-
|
|
129
128
|
///////////////////////
|
|
130
129
|
// Signer
|
|
131
|
-
|
|
132
130
|
JsonRpcSigner,
|
|
133
131
|
|
|
134
|
-
|
|
135
132
|
///////////////////////
|
|
136
133
|
// Functions
|
|
137
|
-
|
|
138
134
|
getDefaultProvider,
|
|
139
135
|
getNetwork,
|
|
140
136
|
isCommunityResource,
|
|
141
137
|
isCommunityResourcable,
|
|
142
138
|
showThrottleMessage,
|
|
143
139
|
|
|
144
|
-
|
|
145
140
|
///////////////////////
|
|
146
141
|
// Objects
|
|
147
|
-
|
|
148
142
|
Formatter,
|
|
149
143
|
|
|
150
|
-
|
|
151
144
|
///////////////////////
|
|
152
145
|
// Types
|
|
153
|
-
|
|
154
146
|
Block,
|
|
155
147
|
BlockTag,
|
|
156
148
|
EventType,
|
|
@@ -161,18 +153,12 @@ export {
|
|
|
161
153
|
TransactionReceipt,
|
|
162
154
|
TransactionRequest,
|
|
163
155
|
TransactionResponse,
|
|
164
|
-
|
|
165
156
|
ExternalProvider,
|
|
166
157
|
JsonRpcFetchFunc,
|
|
167
|
-
|
|
168
158
|
FallbackProviderConfig,
|
|
169
|
-
|
|
170
159
|
Network,
|
|
171
160
|
Networkish,
|
|
172
|
-
|
|
173
161
|
EnsProvider,
|
|
174
162
|
EnsResolver,
|
|
175
|
-
|
|
176
|
-
CommunityResourcable
|
|
163
|
+
CommunityResourcable,
|
|
177
164
|
};
|
|
178
|
-
|
package/src.ts/ipc-provider.ts
CHANGED
|
@@ -2,22 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
import { connect } from "net";
|
|
4
4
|
|
|
5
|
-
import { defineReadOnly } from "@
|
|
6
|
-
import { Networkish } from "@
|
|
5
|
+
import { defineReadOnly } from "@qevm/properties";
|
|
6
|
+
import { Networkish } from "@qevm/networks";
|
|
7
7
|
|
|
8
|
-
import { Logger } from "@
|
|
8
|
+
import { Logger } from "@qevm/logger";
|
|
9
9
|
import { version } from "./_version";
|
|
10
10
|
const logger = new Logger(version);
|
|
11
11
|
|
|
12
12
|
import { JsonRpcProvider } from "./json-rpc-provider";
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
export class IpcProvider extends JsonRpcProvider {
|
|
16
15
|
readonly path: string;
|
|
17
16
|
|
|
18
17
|
constructor(path: string, network?: Networkish) {
|
|
19
18
|
if (path == null) {
|
|
20
|
-
logger.throwError("missing path", Logger.errors.MISSING_ARGUMENT, {
|
|
19
|
+
logger.throwError("missing path", Logger.errors.MISSING_ARGUMENT, {
|
|
20
|
+
arg: "path",
|
|
21
|
+
});
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
super("ipc://" + path, network);
|
|
@@ -37,7 +38,7 @@ export class IpcProvider extends JsonRpcProvider {
|
|
|
37
38
|
method: method,
|
|
38
39
|
params: params,
|
|
39
40
|
id: 42,
|
|
40
|
-
jsonrpc: "2.0"
|
|
41
|
+
jsonrpc: "2.0",
|
|
41
42
|
});
|
|
42
43
|
|
|
43
44
|
return new Promise((resolve, reject) => {
|
|
@@ -46,7 +47,7 @@ export class IpcProvider extends JsonRpcProvider {
|
|
|
46
47
|
let stream = connect(this.path);
|
|
47
48
|
|
|
48
49
|
stream.on("data", (data) => {
|
|
49
|
-
response = Buffer.concat([
|
|
50
|
+
response = Buffer.concat([response, data]);
|
|
50
51
|
});
|
|
51
52
|
|
|
52
53
|
stream.on("end", () => {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { deepCopy } from "@ethersproject/properties";
|
|
1
|
+
import { deepCopy } from "@qevm/properties";
|
|
3
2
|
import { fetchJson } from "@qevm/web";
|
|
4
3
|
|
|
5
4
|
import { JsonRpcProvider } from "./json-rpc-provider";
|
|
@@ -9,21 +8,26 @@ import { JsonRpcProvider } from "./json-rpc-provider";
|
|
|
9
8
|
export class JsonRpcBatchProvider extends JsonRpcProvider {
|
|
10
9
|
_pendingBatchAggregator: NodeJS.Timer;
|
|
11
10
|
_pendingBatch: Array<{
|
|
12
|
-
request: {
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
request: {
|
|
12
|
+
method: string;
|
|
13
|
+
params: Array<any>;
|
|
14
|
+
id: number;
|
|
15
|
+
jsonrpc: "2.0";
|
|
16
|
+
};
|
|
17
|
+
resolve: (result: any) => void;
|
|
18
|
+
reject: (error: Error) => void;
|
|
15
19
|
}>;
|
|
16
20
|
|
|
17
21
|
send(method: string, params: Array<any>): Promise<any> {
|
|
18
22
|
const request = {
|
|
19
23
|
method: method,
|
|
20
24
|
params: params,
|
|
21
|
-
id:
|
|
22
|
-
jsonrpc: "2.0"
|
|
25
|
+
id: this._nextId++,
|
|
26
|
+
jsonrpc: "2.0",
|
|
23
27
|
};
|
|
24
28
|
|
|
25
29
|
if (this._pendingBatch == null) {
|
|
26
|
-
this._pendingBatch = [
|
|
30
|
+
this._pendingBatch = [];
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
const inflightRequest: any = { request, resolve: null, reject: null };
|
|
@@ -38,7 +42,6 @@ export class JsonRpcBatchProvider extends JsonRpcProvider {
|
|
|
38
42
|
if (!this._pendingBatchAggregator) {
|
|
39
43
|
// Schedule batch for next event loop + short duration
|
|
40
44
|
this._pendingBatchAggregator = setTimeout(() => {
|
|
41
|
-
|
|
42
45
|
// Get teh current batch and clear it, so new requests
|
|
43
46
|
// go into the next batch
|
|
44
47
|
const batch = this._pendingBatch;
|
|
@@ -51,44 +54,45 @@ export class JsonRpcBatchProvider extends JsonRpcProvider {
|
|
|
51
54
|
this.emit("debug", {
|
|
52
55
|
action: "requestBatch",
|
|
53
56
|
request: deepCopy(request),
|
|
54
|
-
provider: this
|
|
57
|
+
provider: this,
|
|
55
58
|
});
|
|
56
59
|
|
|
57
|
-
return fetchJson(this.connection, JSON.stringify(request)).then(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
60
|
+
return fetchJson(this.connection, JSON.stringify(request)).then(
|
|
61
|
+
(result) => {
|
|
62
|
+
this.emit("debug", {
|
|
63
|
+
action: "response",
|
|
64
|
+
request: request,
|
|
65
|
+
response: result,
|
|
66
|
+
provider: this,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// For each result, feed it to the correct Promise, depending
|
|
70
|
+
// on whether it was a success or error
|
|
71
|
+
batch.forEach((inflightRequest, index) => {
|
|
72
|
+
const payload = result[index];
|
|
73
|
+
if (payload.error) {
|
|
74
|
+
const error = new Error(payload.error.message);
|
|
75
|
+
(<any>error).code = payload.error.code;
|
|
76
|
+
(<any>error).data = payload.error.data;
|
|
77
|
+
inflightRequest.reject(error);
|
|
78
|
+
} else {
|
|
79
|
+
inflightRequest.resolve(payload.result);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
},
|
|
83
|
+
(error) => {
|
|
84
|
+
this.emit("debug", {
|
|
85
|
+
action: "response",
|
|
86
|
+
error: error,
|
|
87
|
+
request: request,
|
|
88
|
+
provider: this,
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
batch.forEach((inflightRequest) => {
|
|
73
92
|
inflightRequest.reject(error);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
}, (error) => {
|
|
80
|
-
this.emit("debug", {
|
|
81
|
-
action: "response",
|
|
82
|
-
error: error,
|
|
83
|
-
request: request,
|
|
84
|
-
provider: this
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
batch.forEach((inflightRequest) => {
|
|
88
|
-
inflightRequest.reject(error);
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
);
|
|
92
96
|
}, 10);
|
|
93
97
|
}
|
|
94
98
|
|