@atomiqlabs/chain-evm 1.0.0-dev.60 → 1.0.0-dev.61
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/evm/SocketProvider.js +9 -12
- package/package.json +1 -1
- package/src/evm/SocketProvider.ts +12 -12
|
@@ -245,7 +245,9 @@ class SocketProvider extends ethers_1.JsonRpcApiProvider {
|
|
|
245
245
|
async _send(payload) {
|
|
246
246
|
// WebSocket provider doesn't accept batches
|
|
247
247
|
(0, ethers_1.assertArgument)(!Array.isArray(payload), "WebSocket does not support batch send", "payload", payload);
|
|
248
|
-
|
|
248
|
+
// Wait until the socket is connected before writing to it
|
|
249
|
+
await this._waitUntilReady();
|
|
250
|
+
if (!__classPrivateFieldGet(this, _SocketProvider_connected, "f") && payload.method === "eth_subscribe")
|
|
249
251
|
return Promise.reject((0, ethers_1.makeError)("WebSocket not connected!", "NETWORK_ERROR"));
|
|
250
252
|
// Prepare a promise to respond to
|
|
251
253
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -256,10 +258,9 @@ class SocketProvider extends ethers_1.JsonRpcApiProvider {
|
|
|
256
258
|
}
|
|
257
259
|
}, this.requestTimeoutSeconds * 1000);
|
|
258
260
|
});
|
|
259
|
-
// Wait until the socket is connected before writing to it
|
|
260
|
-
await this._waitUntilReady();
|
|
261
261
|
// Write the request to the socket
|
|
262
|
-
|
|
262
|
+
if (__classPrivateFieldGet(this, _SocketProvider_connected, "f"))
|
|
263
|
+
await this._write(JSON.stringify(payload));
|
|
263
264
|
return [await promise];
|
|
264
265
|
}
|
|
265
266
|
_connected() {
|
|
@@ -267,20 +268,16 @@ class SocketProvider extends ethers_1.JsonRpcApiProvider {
|
|
|
267
268
|
this.resume();
|
|
268
269
|
this._forEachSubscriber(subscriber => subscriber.start());
|
|
269
270
|
__classPrivateFieldGet(this, _SocketProvider_callbacks, "f").forEach(val => {
|
|
270
|
-
|
|
271
|
-
return;
|
|
272
|
-
this._send(val.payload);
|
|
271
|
+
this._write(JSON.stringify(val.payload));
|
|
273
272
|
});
|
|
274
273
|
}
|
|
275
274
|
_disconnected() {
|
|
276
275
|
__classPrivateFieldSet(this, _SocketProvider_connected, false, "f");
|
|
277
276
|
this.pause(true);
|
|
278
|
-
__classPrivateFieldGet(this, _SocketProvider_callbacks, "f").forEach(
|
|
279
|
-
|
|
280
|
-
val.reject((0, ethers_1.makeError)("WebSocket disconnected!", "NETWORK_ERROR"));
|
|
281
|
-
__classPrivateFieldGet(this, _SocketProvider_callbacks, "f").delete(key);
|
|
282
|
-
}
|
|
277
|
+
__classPrivateFieldGet(this, _SocketProvider_callbacks, "f").forEach(val => {
|
|
278
|
+
val.reject((0, ethers_1.makeError)("WebSocket disconnected!", "NETWORK_ERROR"));
|
|
283
279
|
});
|
|
280
|
+
__classPrivateFieldGet(this, _SocketProvider_callbacks, "f").clear();
|
|
284
281
|
}
|
|
285
282
|
/**
|
|
286
283
|
* Sub-classes **must** call this with messages received over their
|
package/package.json
CHANGED
|
@@ -271,7 +271,11 @@ export class SocketProvider extends JsonRpcApiProvider {
|
|
|
271
271
|
// WebSocket provider doesn't accept batches
|
|
272
272
|
assertArgument(!Array.isArray(payload), "WebSocket does not support batch send", "payload", payload);
|
|
273
273
|
|
|
274
|
-
|
|
274
|
+
// Wait until the socket is connected before writing to it
|
|
275
|
+
await this._waitUntilReady();
|
|
276
|
+
|
|
277
|
+
if(!this.#connected && payload.method==="eth_subscribe")
|
|
278
|
+
return Promise.reject(makeError("WebSocket not connected!", "NETWORK_ERROR"));
|
|
275
279
|
|
|
276
280
|
// Prepare a promise to respond to
|
|
277
281
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -283,11 +287,8 @@ export class SocketProvider extends JsonRpcApiProvider {
|
|
|
283
287
|
}, this.requestTimeoutSeconds * 1000);
|
|
284
288
|
});
|
|
285
289
|
|
|
286
|
-
// Wait until the socket is connected before writing to it
|
|
287
|
-
await this._waitUntilReady();
|
|
288
|
-
|
|
289
290
|
// Write the request to the socket
|
|
290
|
-
await this._write(JSON.stringify(payload));
|
|
291
|
+
if(this.#connected) await this._write(JSON.stringify(payload));
|
|
291
292
|
|
|
292
293
|
return <Array<JsonRpcResult | JsonRpcError>>[ await promise ];
|
|
293
294
|
}
|
|
@@ -296,21 +297,20 @@ export class SocketProvider extends JsonRpcApiProvider {
|
|
|
296
297
|
this.#connected = true;
|
|
297
298
|
this.resume();
|
|
298
299
|
this._forEachSubscriber(subscriber => subscriber.start());
|
|
300
|
+
|
|
299
301
|
this.#callbacks.forEach(val => {
|
|
300
|
-
|
|
301
|
-
this._send(val.payload);
|
|
302
|
+
this._write(JSON.stringify(val.payload));
|
|
302
303
|
});
|
|
303
304
|
}
|
|
304
305
|
|
|
305
306
|
_disconnected() {
|
|
306
307
|
this.#connected = false;
|
|
307
308
|
this.pause(true);
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
this.#callbacks.delete(key);
|
|
312
|
-
}
|
|
309
|
+
|
|
310
|
+
this.#callbacks.forEach(val => {
|
|
311
|
+
val.reject(makeError("WebSocket disconnected!", "NETWORK_ERROR"))
|
|
313
312
|
});
|
|
313
|
+
this.#callbacks.clear();
|
|
314
314
|
}
|
|
315
315
|
|
|
316
316
|
/**
|