From 1a6bb1627f84f767130dab9ad60474537d7aa147 Mon Sep 17 00:00:00 2001 From: Aleksandr Kraiz Date: Thu, 1 Jun 2023 16:47:46 +0400 Subject: [PATCH] Fix cloning --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Aggregator/ws/index.ts | 13 ++++++++----- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 05ff04a..a15964a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.14", + "version": "0.19.15", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.14", + "version": "0.19.15", "license": "ISC", "dependencies": { "@babel/runtime": "^7.21.0", diff --git a/package.json b/package.json index 37dc572..ac3d0b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.14", + "version": "0.19.15", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index 5f21b92..6958875 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -21,7 +21,6 @@ import futuresTradeInfoSchema from './schemas/futuresTradeInfoSchema.js'; import { objectKeys } from '../../../utils/objectKeys.js'; // import assertError from '../../../utils/assertError.js'; // import errorSchema from './schemas/errorSchema'; -import clone from 'just-clone'; const UNSUBSCRIBE = 'u'; @@ -170,6 +169,10 @@ const nonExistentMessageRegex = /Could not cancel nonexistent subscription: (.*) // message: Json // resolve: () => void // }; + +type Subscriptions = Partial<{ + [K in keyof Subscription]: Partial> +}>; class AggregatorWS { private ws?: WebSocket | undefined; @@ -179,9 +182,7 @@ class AggregatorWS { // https://stackoverflow.com/questions/19304157/getting-the-reason-why-websockets-closed-with-close-code-1006 private isClosedIntentionally = false; - readonly subscriptions: Partial<{ - [K in keyof Subscription]: Partial> - }> = {}; + readonly subscriptions: Subscriptions = {}; public onInit: (() => void) | undefined @@ -377,7 +378,9 @@ class AggregatorWS { this.ws.onopen = () => { // Re-subscribe to all subscriptions if (isReconnect) { - const subscriptionsToReconnect = clone(this.subscriptions); + // Deep copy of subscriptions + const subscriptionsToReconnect = structuredClone(this.subscriptions); + objectKeys(this.subscriptions).forEach((subType) => { // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete this.subscriptions[subType];