@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.
@@ -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
- if (!__classPrivateFieldGet(this, _SocketProvider_connected, "f"))
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
- await this._write(JSON.stringify(payload));
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
- if (val.payload.method === "eth_subscribe")
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((val, key) => {
279
- if (val.payload.method === "eth_subscribe") {
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atomiqlabs/chain-evm",
3
- "version": "1.0.0-dev.60",
3
+ "version": "1.0.0-dev.61",
4
4
  "description": "EVM specific base implementation",
5
5
  "main": "./dist/index.js",
6
6
  "types:": "./dist/index.d.ts",
@@ -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
- if(!this.#connected) return Promise.reject(makeError("WebSocket not connected!", "NETWORK_ERROR"));
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
- if(val.payload.method==="eth_subscribe") return;
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
- this.#callbacks.forEach((val, key) => {
309
- if(val.payload.method==="eth_subscribe") {
310
- val.reject(makeError("WebSocket disconnected!", "NETWORK_ERROR"));
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
  /**