ccxt 4.3.84 → 4.3.86

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 (71) hide show
  1. package/README.md +7 -5
  2. package/dist/ccxt.browser.min.js +15 -15
  3. package/dist/cjs/ccxt.js +7 -1
  4. package/dist/cjs/src/abstract/hashkey.js +9 -0
  5. package/dist/cjs/src/base/Exchange.js +1 -1
  6. package/dist/cjs/src/base/errors.js +8 -1
  7. package/dist/cjs/src/binance.js +4 -2
  8. package/dist/cjs/src/bitfinex.js +2 -2
  9. package/dist/cjs/src/bitmex.js +4 -0
  10. package/dist/cjs/src/bybit.js +15 -14
  11. package/dist/cjs/src/cryptocom.js +117 -2
  12. package/dist/cjs/src/hashkey.js +4328 -0
  13. package/dist/cjs/src/hyperliquid.js +85 -65
  14. package/dist/cjs/src/indodax.js +37 -9
  15. package/dist/cjs/src/kraken.js +29 -1
  16. package/dist/cjs/src/krakenfutures.js +12 -10
  17. package/dist/cjs/src/kucoinfutures.js +5 -0
  18. package/dist/cjs/src/mexc.js +2 -2
  19. package/dist/cjs/src/pro/ascendex.js +45 -5
  20. package/dist/cjs/src/pro/binance.js +1 -1
  21. package/dist/cjs/src/pro/bingx.js +13 -12
  22. package/dist/cjs/src/pro/bitget.js +113 -4
  23. package/dist/cjs/src/pro/hashkey.js +839 -0
  24. package/dist/cjs/src/pro/hyperliquid.js +123 -0
  25. package/dist/cjs/src/pro/mexc.js +13 -7
  26. package/dist/cjs/src/pro/okx.js +25 -4
  27. package/dist/cjs/src/pro/woo.js +1 -0
  28. package/dist/cjs/src/pro/woofipro.js +1 -0
  29. package/dist/cjs/src/pro/xt.js +1 -0
  30. package/js/ccxt.d.ts +9 -3
  31. package/js/ccxt.js +7 -3
  32. package/js/src/abstract/cryptocom.d.ts +2 -0
  33. package/js/src/abstract/hashkey.d.ts +70 -0
  34. package/js/src/abstract/hashkey.js +11 -0
  35. package/js/src/abstract/kucoinfutures.d.ts +2 -0
  36. package/js/src/base/Exchange.js +1 -1
  37. package/js/src/base/errorHierarchy.d.ts +1 -0
  38. package/js/src/base/errorHierarchy.js +1 -0
  39. package/js/src/base/errors.d.ts +5 -1
  40. package/js/src/base/errors.js +8 -2
  41. package/js/src/binance.js +4 -2
  42. package/js/src/bitfinex.js +2 -2
  43. package/js/src/bitmex.js +4 -0
  44. package/js/src/bybit.js +16 -15
  45. package/js/src/cryptocom.d.ts +5 -1
  46. package/js/src/cryptocom.js +117 -2
  47. package/js/src/hashkey.d.ts +178 -0
  48. package/js/src/hashkey.js +4329 -0
  49. package/js/src/hyperliquid.d.ts +3 -0
  50. package/js/src/hyperliquid.js +85 -65
  51. package/js/src/indodax.js +37 -9
  52. package/js/src/kraken.js +29 -1
  53. package/js/src/krakenfutures.js +12 -10
  54. package/js/src/kucoinfutures.js +5 -0
  55. package/js/src/mexc.js +2 -2
  56. package/js/src/pro/ascendex.d.ts +2 -0
  57. package/js/src/pro/ascendex.js +45 -5
  58. package/js/src/pro/binance.js +1 -1
  59. package/js/src/pro/bingx.js +13 -12
  60. package/js/src/pro/bitget.d.ts +4 -0
  61. package/js/src/pro/bitget.js +113 -4
  62. package/js/src/pro/hashkey.d.ts +34 -0
  63. package/js/src/pro/hashkey.js +840 -0
  64. package/js/src/pro/hyperliquid.d.ts +7 -1
  65. package/js/src/pro/hyperliquid.js +123 -0
  66. package/js/src/pro/mexc.js +13 -7
  67. package/js/src/pro/okx.js +25 -4
  68. package/js/src/pro/woo.js +1 -0
  69. package/js/src/pro/woofipro.js +1 -0
  70. package/js/src/pro/xt.js +1 -0
  71. package/package.json +1 -1
@@ -439,6 +439,35 @@ class bitget extends bitget$1 {
439
439
  */
440
440
  return await this.watchOrderBookForSymbols([symbol], limit, params);
441
441
  }
442
+ async unWatchOrderBook(symbol, params = {}) {
443
+ /**
444
+ * @method
445
+ * @name bitget#unWatchOrderBook
446
+ * @description unsubscribe from the orderbook channel
447
+ * @see https://www.bitget.com/api-doc/spot/websocket/public/Depth-Channel
448
+ * @see https://www.bitget.com/api-doc/contract/websocket/public/Order-Book-Channel
449
+ * @param {string} symbol unified symbol of the market to fetch the order book for
450
+ * @param {int} [params.limit] orderbook limit, default is undefined
451
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
452
+ */
453
+ await this.loadMarkets();
454
+ const market = this.market(symbol);
455
+ const messageHash = 'unsubscribe:orderbook:' + market['symbol'];
456
+ let channel = 'books';
457
+ const limit = this.safeInteger(params, 'limit');
458
+ if ((limit === 1) || (limit === 5) || (limit === 15)) {
459
+ params = this.omit(params, 'limit');
460
+ channel += limit.toString();
461
+ }
462
+ let instType = undefined;
463
+ [instType, params] = this.getInstType(market, params);
464
+ const args = {
465
+ 'instType': instType,
466
+ 'channel': channel,
467
+ 'instId': market['id'],
468
+ };
469
+ return await this.unWatchPublic(messageHash, args, params);
470
+ }
442
471
  async watchOrderBookForSymbols(symbols, limit = undefined, params = {}) {
443
472
  /**
444
473
  * @method
@@ -562,10 +591,11 @@ class bitget extends bitget$1 {
562
591
  const calculatedChecksum = this.crc32(payload, true);
563
592
  const responseChecksum = this.safeInteger(rawOrderBook, 'checksum');
564
593
  if (calculatedChecksum !== responseChecksum) {
565
- delete client.subscriptions[messageHash];
566
- delete this.orderbooks[symbol];
567
- const error = new errors.ChecksumError(this.id + ' ' + this.orderbookChecksumMessage(symbol));
568
- client.reject(error, messageHash);
594
+ // if (messageHash in client.subscriptions) {
595
+ // // delete client.subscriptions[messageHash];
596
+ // // delete this.orderbooks[symbol];
597
+ // }
598
+ this.spawn(this.handleCheckSumError, client, symbol, messageHash);
569
599
  return;
570
600
  }
571
601
  }
@@ -578,6 +608,11 @@ class bitget extends bitget$1 {
578
608
  }
579
609
  client.resolve(this.orderbooks[symbol], messageHash);
580
610
  }
611
+ async handleCheckSumError(client, symbol, messageHash) {
612
+ await this.unWatchOrderBook(symbol);
613
+ const error = new errors.ChecksumError(this.id + ' ' + this.orderbookChecksumMessage(symbol));
614
+ client.reject(error, messageHash);
615
+ }
581
616
  handleDelta(bookside, delta) {
582
617
  const bidAsk = this.parseBidAsk(delta, 0, 1);
583
618
  // we store the string representations in the orderbook for checksum calculation
@@ -1624,6 +1659,15 @@ class bitget extends bitget$1 {
1624
1659
  const message = this.extend(request, params);
1625
1660
  return await this.watch(url, messageHash, message, messageHash);
1626
1661
  }
1662
+ async unWatchPublic(messageHash, args, params = {}) {
1663
+ const url = this.urls['api']['ws']['public'];
1664
+ const request = {
1665
+ 'op': 'unsubscribe',
1666
+ 'args': [args],
1667
+ };
1668
+ const message = this.extend(request, params);
1669
+ return await this.watch(url, messageHash, message, messageHash);
1670
+ }
1627
1671
  async watchPublicMultiple(messageHashes, argsArray, params = {}) {
1628
1672
  const url = this.urls['api']['ws']['public'];
1629
1673
  const request = {
@@ -1744,6 +1788,17 @@ class bitget extends bitget$1 {
1744
1788
  // "event": "subscribe",
1745
1789
  // "arg": { instType: 'SPOT', channel: "account", instId: "default" }
1746
1790
  // }
1791
+ // unsubscribe
1792
+ // {
1793
+ // "op":"unsubscribe",
1794
+ // "args":[
1795
+ // {
1796
+ // "instType":"USDT-FUTURES",
1797
+ // "channel":"ticker",
1798
+ // "instId":"BTCUSDT"
1799
+ // }
1800
+ // ]
1801
+ // }
1747
1802
  //
1748
1803
  if (this.handleErrorMessage(client, message)) {
1749
1804
  return;
@@ -1766,6 +1821,10 @@ class bitget extends bitget$1 {
1766
1821
  this.handleSubscriptionStatus(client, message);
1767
1822
  return;
1768
1823
  }
1824
+ if (event === 'unsubscribe') {
1825
+ this.handleUnSubscriptionStatus(client, message);
1826
+ return;
1827
+ }
1769
1828
  const methods = {
1770
1829
  'ticker': this.handleTicker,
1771
1830
  'trade': this.handleTrades,
@@ -1809,6 +1868,56 @@ class bitget extends bitget$1 {
1809
1868
  //
1810
1869
  return message;
1811
1870
  }
1871
+ handleUnSubscriptionStatus(client, message) {
1872
+ //
1873
+ // {
1874
+ // "op":"unsubscribe",
1875
+ // "args":[
1876
+ // {
1877
+ // "instType":"USDT-FUTURES",
1878
+ // "channel":"ticker",
1879
+ // "instId":"BTCUSDT"
1880
+ // },
1881
+ // {
1882
+ // "instType":"USDT-FUTURES",
1883
+ // "channel":"candle1m",
1884
+ // "instId":"BTCUSDT"
1885
+ // }
1886
+ // ]
1887
+ // }
1888
+ // or
1889
+ // {"event":"unsubscribe","arg":{"instType":"SPOT","channel":"books","instId":"BTCUSDT"}}
1890
+ //
1891
+ let argsList = this.safeList(message, 'args');
1892
+ if (argsList === undefined) {
1893
+ argsList = [this.safeDict(message, 'arg', {})];
1894
+ }
1895
+ for (let i = 0; i < argsList.length; i++) {
1896
+ const arg = argsList[i];
1897
+ const channel = this.safeString(arg, 'channel');
1898
+ if (channel === 'books') {
1899
+ // for now only unWatchOrderBook is supporteod
1900
+ const instType = this.safeStringLower(arg, 'instType');
1901
+ const type = (instType === 'spot') ? 'spot' : 'contract';
1902
+ const instId = this.safeString(arg, 'instId');
1903
+ const market = this.safeMarket(instId, undefined, undefined, type);
1904
+ const symbol = market['symbol'];
1905
+ const messageHash = 'unsubscribe:orderbook:' + market['symbol'];
1906
+ const subMessageHash = 'orderbook:' + symbol;
1907
+ if (symbol in this.orderbooks) {
1908
+ delete this.orderbooks[symbol];
1909
+ }
1910
+ if (subMessageHash in client.subscriptions) {
1911
+ delete client.subscriptions[subMessageHash];
1912
+ }
1913
+ if (messageHash in client.subscriptions) {
1914
+ delete client.subscriptions[messageHash];
1915
+ }
1916
+ client.resolve(true, messageHash);
1917
+ }
1918
+ }
1919
+ return message;
1920
+ }
1812
1921
  }
1813
1922
 
1814
1923
  module.exports = bitget;