@grvt/client 1.5.0 → 1.5.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grvt/client",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "Node.js & JavaScript client for GRVT REST APIs & WebSockets",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,7 +33,7 @@
33
33
  "test": "nodemon dist/index.js"
34
34
  },
35
35
  "dependencies": {
36
- "axios": "^1.8.2"
36
+ "axios": "^1.11.0"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@typescript-eslint/eslint-plugin": "^6.10.0",
@@ -1,4 +1,4 @@
1
- import { type ECandlestickInterval, type ECandlestickType, type IWSCandlestickFeedDataV1, type IWSCandlestickFeedSelectorV1, type IWSDepositFeedDataV1, type IWSDepositFeedSelectorV1, type IWSFillFeedDataV1, type IWSFillFeedSelectorV1, type IWSMiniTickerFeedDataV1, type IWSMiniTickerFeedSelectorV1, type IWSOrderFeedDataV1, type IWSOrderFeedSelectorV1, type IWSOrderGroupFeedDataV1, type IWSOrderStateFeedDataV1, type IWSOrderStateFeedSelectorV1, type IWSOrderbookLevelsFeedDataV1, type IWSOrderbookLevelsFeedSelectorV1, type IWSPositionsFeedDataV1, type IWSPositionsFeedSelectorV1, type IWSTickerFeedDataV1, type IWSTickerFeedSelectorV1, type IWSTradeFeedDataV1, type IWSTradeFeedSelectorV1, type IWSTransferFeedDataV1, type IWSTransferFeedSelectorV1, type IWSWithdrawalFeedDataV1, type IWSWithdrawalFeedSelectorV1 } from '../interfaces';
1
+ import type { ECandlestickInterval, ECandlestickType, IWSCandlestickFeedDataV1, IWSCandlestickFeedSelectorV1, IWSDepositFeedDataV1, IWSDepositFeedSelectorV1, IWSFillFeedDataV1, IWSFillFeedSelectorV1, IWSMiniTickerFeedDataV1, IWSMiniTickerFeedSelectorV1, IWSOrderFeedDataV1, IWSOrderFeedSelectorV1, IWSOrderGroupFeedDataV1, IWSOrderStateFeedDataV1, IWSOrderStateFeedSelectorV1, IWSOrderbookLevelsFeedDataV1, IWSOrderbookLevelsFeedSelectorV1, IWSPositionsFeedDataV1, IWSPositionsFeedSelectorV1, IWSTickerFeedDataV1, IWSTickerFeedSelectorV1, IWSTradeFeedDataV1, IWSTradeFeedSelectorV1, IWSTransferFeedDataV1, IWSTransferFeedSelectorV1, IWSWithdrawalFeedDataV1, IWSWithdrawalFeedSelectorV1 } from '../interfaces';
2
2
  export declare enum EStream {
3
3
  CANDLE = "candle",
4
4
  MINI_DELTA = "mini.d",
package/ws/ws.js CHANGED
@@ -597,30 +597,45 @@ class WS {
597
597
  this._pairs[pair][consumerKey] = onMessage;
598
598
  return `${pair}__${consumerKey}`;
599
599
  }
600
- _removeConsumer(pairedConsumerKey) {
601
- const [stream, feed, consumerKey] = pairedConsumerKey.split('__');
602
- const pairKey = this._getPair({ stream, feed });
603
- if (!this._pairs[pairKey]) {
604
- return;
605
- }
606
- let needUnsubscribe = true;
607
- const pairPrimary = pairKey.split('@')[0];
608
- for (const key of Object.keys(this._pairs)) {
609
- if (key.split('@')[0] !== pairPrimary) {
610
- continue;
600
+ _removeConsumer(...pairedConsumerKeys) {
601
+ const toUnsubscribe = {};
602
+ for (const pairedConsumerKey of pairedConsumerKeys) {
603
+ const [stream, feed, consumerKey] = pairedConsumerKey.split('__');
604
+ const pairKey = this._getPair({ stream, feed });
605
+ if (!this._pairs[pairKey]) {
606
+ return;
607
+ }
608
+ let needUnsubscribe = true;
609
+ const pairPrimary = pairKey.split('@')[0];
610
+ for (const key of Object.keys(this._pairs)) {
611
+ if (key.split('@')[0] !== pairPrimary) {
612
+ continue;
613
+ }
614
+ const primaryGroup = this._pairs[key];
615
+ const _a = primaryGroup, _b = consumerKey, _ = _a[_b], keep = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
616
+ this._pairs[key] = keep;
617
+ if (Object.keys(keep).length) {
618
+ needUnsubscribe = false;
619
+ }
611
620
  }
612
- const primaryGroup = this._pairs[key];
613
- const _a = primaryGroup, _b = consumerKey, _ = _a[_b], keep = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
614
- this._pairs[key] = keep;
615
- if (Object.keys(keep).length) {
616
- needUnsubscribe = false;
621
+ if (needUnsubscribe) {
622
+ if (!toUnsubscribe[stream]) {
623
+ toUnsubscribe[stream] = [];
624
+ }
625
+ const primaryFeed = feed.split('@')[0];
626
+ if (!toUnsubscribe[stream].some((f) => f.startsWith(`${primaryFeed}@`))) {
627
+ toUnsubscribe[stream].push(feed);
628
+ }
617
629
  }
618
630
  }
619
- if (needUnsubscribe) {
631
+ /**
632
+ * Send unsubscribes
633
+ */
634
+ for (const stream of Object.keys(toUnsubscribe)) {
620
635
  this._sendMessage({
621
636
  method: 'unsubscribe',
622
637
  stream,
623
- feed: [feed]
638
+ feed: toUnsubscribe[stream]
624
639
  });
625
640
  }
626
641
  }
@@ -814,9 +829,7 @@ class WS {
814
829
  });
815
830
  }
816
831
  unsubscribe(...pairedConsumerKeys) {
817
- for (const pairedConsumerKey of pairedConsumerKeys) {
818
- this._removeConsumer(pairedConsumerKey);
819
- }
832
+ this._removeConsumer(...pairedConsumerKeys);
820
833
  return this;
821
834
  }
822
835
  connect() {