@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.
Files changed (100) hide show
  1. package/README.md +3 -9
  2. package/lib/_version.d.ts +1 -1
  3. package/lib/_version.js +1 -1
  4. package/lib/base-provider.d.ts +2 -2
  5. package/lib/base-provider.d.ts.map +1 -1
  6. package/lib/base-provider.js +300 -145
  7. package/lib/base-provider.js.map +1 -1
  8. package/lib/browser-ipc-provider.d.ts.map +1 -1
  9. package/lib/browser-ipc-provider.js.map +1 -1
  10. package/lib/browser-net.d.ts.map +1 -1
  11. package/lib/browser-net.js.map +1 -1
  12. package/lib/browser-ws.d.ts.map +1 -1
  13. package/lib/browser-ws.js +2 -2
  14. package/lib/browser-ws.js.map +1 -1
  15. package/lib/fallback-provider.d.ts +1 -1
  16. package/lib/fallback-provider.d.ts.map +1 -1
  17. package/lib/fallback-provider.js +86 -55
  18. package/lib/fallback-provider.js.map +1 -1
  19. package/lib/formatter.d.ts.map +1 -1
  20. package/lib/formatter.js +35 -29
  21. package/lib/formatter.js.map +1 -1
  22. package/lib/index.d.ts +3 -10
  23. package/lib/index.d.ts.map +1 -1
  24. package/lib/index.js +5 -28
  25. package/lib/index.js.map +1 -1
  26. package/lib/ipc-provider.d.ts +1 -1
  27. package/lib/ipc-provider.d.ts.map +1 -1
  28. package/lib/ipc-provider.js +6 -4
  29. package/lib/ipc-provider.js.map +1 -1
  30. package/lib/json-rpc-batch-provider.d.ts.map +1 -1
  31. package/lib/json-rpc-batch-provider.js +6 -6
  32. package/lib/json-rpc-batch-provider.js.map +1 -1
  33. package/lib/json-rpc-provider.d.ts +2 -2
  34. package/lib/json-rpc-provider.d.ts.map +1 -1
  35. package/lib/json-rpc-provider.js +167 -69
  36. package/lib/json-rpc-provider.js.map +1 -1
  37. package/lib/url-json-rpc-provider.d.ts +1 -1
  38. package/lib/url-json-rpc-provider.d.ts.map +1 -1
  39. package/lib/url-json-rpc-provider.js +4 -4
  40. package/lib/url-json-rpc-provider.js.map +1 -1
  41. package/lib/web3-provider.d.ts +1 -2
  42. package/lib/web3-provider.d.ts.map +1 -1
  43. package/lib/web3-provider.js +11 -14
  44. package/lib/web3-provider.js.map +1 -1
  45. package/lib/websocket-provider.d.ts +1 -1
  46. package/lib/websocket-provider.d.ts.map +1 -1
  47. package/lib/websocket-provider.js +21 -17
  48. package/lib/websocket-provider.js.map +1 -1
  49. package/lib/ws.d.ts.map +1 -1
  50. package/package.json +61 -58
  51. package/src.ts/_version.ts +1 -1
  52. package/src.ts/base-provider.ts +1418 -645
  53. package/src.ts/browser-ipc-provider.ts +1 -3
  54. package/src.ts/browser-net.ts +1 -1
  55. package/src.ts/browser-ws.ts +14 -8
  56. package/src.ts/fallback-provider.ts +375 -198
  57. package/src.ts/formatter.ts +161 -81
  58. package/src.ts/index.ts +54 -68
  59. package/src.ts/ipc-provider.ts +8 -7
  60. package/src.ts/json-rpc-batch-provider.ts +48 -44
  61. package/src.ts/json-rpc-provider.ts +594 -245
  62. package/src.ts/url-json-rpc-provider.ts +34 -15
  63. package/src.ts/web3-provider.ts +87 -54
  64. package/src.ts/websocket-provider.ts +124 -66
  65. package/src.ts/ws.ts +1 -1
  66. package/lib/alchemy-provider.d.ts +0 -17
  67. package/lib/alchemy-provider.d.ts.map +0 -1
  68. package/lib/alchemy-provider.js +0 -88
  69. package/lib/alchemy-provider.js.map +0 -1
  70. package/lib/ankr-provider.d.ts +0 -10
  71. package/lib/ankr-provider.d.ts.map +0 -1
  72. package/lib/ankr-provider.js +0 -59
  73. package/lib/ankr-provider.js.map +0 -1
  74. package/lib/cloudflare-provider.d.ts +0 -8
  75. package/lib/cloudflare-provider.d.ts.map +0 -1
  76. package/lib/cloudflare-provider.js +0 -37
  77. package/lib/cloudflare-provider.js.map +0 -1
  78. package/lib/etherscan-provider.d.ts +0 -18
  79. package/lib/etherscan-provider.d.ts.map +0 -1
  80. package/lib/etherscan-provider.js +0 -408
  81. package/lib/etherscan-provider.js.map +0 -1
  82. package/lib/infura-provider.d.ts +0 -21
  83. package/lib/infura-provider.d.ts.map +0 -1
  84. package/lib/infura-provider.js +0 -117
  85. package/lib/infura-provider.js.map +0 -1
  86. package/lib/nodesmith-provider.d.ts +0 -7
  87. package/lib/nodesmith-provider.d.ts.map +0 -1
  88. package/lib/nodesmith-provider.js +0 -44
  89. package/lib/nodesmith-provider.js.map +0 -1
  90. package/lib/pocket-provider.d.ts +0 -12
  91. package/lib/pocket-provider.d.ts.map +0 -1
  92. package/lib/pocket-provider.js +0 -78
  93. package/lib/pocket-provider.js.map +0 -1
  94. package/src.ts/alchemy-provider.ts +0 -101
  95. package/src.ts/ankr-provider.ts +0 -68
  96. package/src.ts/cloudflare-provider.ts +0 -42
  97. package/src.ts/etherscan-provider.ts +0 -454
  98. package/src.ts/infura-provider.ts +0 -143
  99. package/src.ts/nodesmith-provider.ts +0 -50
  100. 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 "@ethersproject/networks";
18
- import { Network, Networkish } from "@ethersproject/networks";
17
+ import { getNetwork } from "@qevm/networks";
18
+ import { Network, Networkish } from "@qevm/networks";
19
19
 
20
- import { BaseProvider, EnsProvider, EnsResolver, Resolver } from "./base-provider";
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 { NodesmithProvider } from "./nodesmith-provider";
32
- import { PocketProvider } from "./pocket-provider";
33
- import { StaticJsonRpcProvider, UrlJsonRpcProvider } from "./url-json-rpc-provider";
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 { CommunityResourcable, Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from "./formatter";
39
+ import {
40
+ CommunityResourcable,
41
+ Formatter,
42
+ isCommunityResourcable,
43
+ isCommunityResource,
44
+ showThrottleMessage,
45
+ } from "./formatter";
39
46
 
40
- import { Logger } from "@ethersproject/logger";
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) { network = "homestead"; }
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(network) === "string") {
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": case "https":
67
+ case "http":
68
+ case "https":
59
69
  return new JsonRpcProvider(network);
60
- case "ws": case "wss":
70
+ case "ws":
71
+ case "wss":
61
72
  return new WebSocketProvider(network);
62
73
  default:
63
- logger.throwArgumentError("unsupported URL scheme", "network", network);
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("unsupported getDefaultProvider network", Logger.errors.NETWORK_ERROR, {
71
- operation: "getDefaultProvider",
72
- network: network
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
- FallbackProvider,
78
-
79
- AlchemyProvider,
80
- AnkrProvider,
81
- CloudflareProvider,
82
- EtherscanProvider,
83
- InfuraProvider,
84
- JsonRpcProvider,
85
- NodesmithProvider,
86
- PocketProvider,
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
-
@@ -2,22 +2,23 @@
2
2
 
3
3
  import { connect } from "net";
4
4
 
5
- import { defineReadOnly } from "@ethersproject/properties";
6
- import { Networkish } from "@ethersproject/networks";
5
+ import { defineReadOnly } from "@qevm/properties";
6
+ import { Networkish } from "@qevm/networks";
7
7
 
8
- import { Logger } from "@ethersproject/logger";
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, { arg: "path" });
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([ response, data ]);
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: { method: string, params: Array<any>, id: number, jsonrpc: "2.0" },
13
- resolve: (result: any) => void,
14
- reject: (error: Error) => void
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: (this._nextId++),
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((result) => {
58
- this.emit("debug", {
59
- action: "response",
60
- request: request,
61
- response: result,
62
- provider: this
63
- });
64
-
65
- // For each result, feed it to the correct Promise, depending
66
- // on whether it was a success or error
67
- batch.forEach((inflightRequest, index) => {
68
- const payload = result[index];
69
- if (payload.error) {
70
- const error = new Error(payload.error.message);
71
- (<any>error).code = payload.error.code;
72
- (<any>error).data = payload.error.data;
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
- } else {
75
- inflightRequest.resolve(payload.result);
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