ccxt 4.3.65 → 4.3.67

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 (48) hide show
  1. package/README.md +4 -3
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/base/Exchange.js +2 -2
  5. package/dist/cjs/src/bingx.js +151 -19
  6. package/dist/cjs/src/bithumb.js +61 -17
  7. package/dist/cjs/src/hyperliquid.js +63 -7
  8. package/dist/cjs/src/independentreserve.js +0 -1
  9. package/dist/cjs/src/kraken.js +27 -0
  10. package/dist/cjs/src/pro/hyperliquid.js +103 -1
  11. package/dist/cjs/src/pro/okx.js +22 -9
  12. package/js/ccxt.d.ts +1 -1
  13. package/js/ccxt.js +1 -1
  14. package/js/src/abstract/bingx.d.ts +7 -0
  15. package/js/src/base/Exchange.d.ts +14 -13
  16. package/js/src/base/Exchange.js +2 -2
  17. package/js/src/bingx.js +151 -19
  18. package/js/src/bithumb.js +61 -17
  19. package/js/src/hyperliquid.d.ts +3 -1
  20. package/js/src/hyperliquid.js +63 -7
  21. package/js/src/independentreserve.js +1 -1
  22. package/js/src/kraken.d.ts +7 -0
  23. package/js/src/kraken.js +27 -0
  24. package/js/src/pro/bitget.d.ts +1 -1
  25. package/js/src/pro/bybit.d.ts +1 -1
  26. package/js/src/pro/coinone.d.ts +1 -1
  27. package/js/src/pro/currencycom.d.ts +1 -1
  28. package/js/src/pro/hollaex.d.ts +1 -1
  29. package/js/src/pro/hyperliquid.d.ts +5 -2
  30. package/js/src/pro/hyperliquid.js +103 -1
  31. package/js/src/pro/kucoin.d.ts +1 -1
  32. package/js/src/pro/kucoinfutures.d.ts +1 -1
  33. package/js/src/pro/mexc.d.ts +1 -1
  34. package/js/src/pro/okcoin.d.ts +1 -1
  35. package/js/src/pro/okx.d.ts +2 -2
  36. package/js/src/pro/okx.js +23 -10
  37. package/js/src/pro/oxfun.d.ts +1 -1
  38. package/js/src/pro/p2b.d.ts +1 -1
  39. package/js/src/pro/poloniex.d.ts +1 -1
  40. package/js/src/pro/whitebit.d.ts +1 -1
  41. package/package.json +1 -1
  42. package/dist/cjs/src/abstract/bittrex.js +0 -9
  43. package/dist/cjs/src/bittrex.js +0 -2308
  44. package/dist/cjs/src/pro/bittrex.js +0 -959
  45. package/js/src/bittrex.d.ts +0 -97
  46. package/js/src/bittrex.js +0 -2309
  47. package/js/src/pro/bittrex.d.ts +0 -69
  48. package/js/src/pro/bittrex.js +0 -960
package/js/src/pro/okx.js CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  // ---------------------------------------------------------------------------
8
8
  import okxRest from '../okx.js';
9
- import { ArgumentsRequired, BadRequest, ExchangeError, ChecksumError, AuthenticationError } from '../base/errors.js';
9
+ import { ArgumentsRequired, BadRequest, ExchangeError, ChecksumError, AuthenticationError, InvalidNonce } from '../base/errors.js';
10
10
  import { ArrayCache, ArrayCacheByTimestamp, ArrayCacheBySymbolById, ArrayCacheBySymbolBySide } from '../base/ws/Cache.js';
11
11
  import { sha256 } from '../static_dependencies/noble-hashes/sha256.js';
12
12
  // ---------------------------------------------------------------------------
@@ -897,7 +897,7 @@ export default class okx extends okxRest {
897
897
  this.handleDelta(bookside, deltas[i]);
898
898
  }
899
899
  }
900
- handleOrderBookMessage(client, message, orderbook, messageHash) {
900
+ handleOrderBookMessage(client, message, orderbook, messageHash, market = undefined) {
901
901
  //
902
902
  // {
903
903
  // "asks": [
@@ -912,6 +912,9 @@ export default class okx extends okxRest {
912
912
  // ],
913
913
  // "instId": "BTC-USDT",
914
914
  // "ts": "1626537446491"
915
+ // "checksum": -855196043,
916
+ // "prevSeqId": 123456,
917
+ // "seqId": 123457
915
918
  // }
916
919
  //
917
920
  const asks = this.safeValue(message, 'asks', []);
@@ -921,9 +924,12 @@ export default class okx extends okxRest {
921
924
  this.handleDeltas(storedAsks, asks);
922
925
  this.handleDeltas(storedBids, bids);
923
926
  const marketId = this.safeString(message, 'instId');
924
- const symbol = this.safeSymbol(marketId);
927
+ const symbol = this.safeSymbol(marketId, market);
925
928
  const checksum = this.handleOption('watchOrderBook', 'checksum', true);
929
+ const seqId = this.safeInteger(message, 'seqId');
926
930
  if (checksum) {
931
+ const prevSeqId = this.safeInteger(message, 'prevSeqId');
932
+ const nonce = orderbook['nonce'];
927
933
  const asksLength = storedAsks.length;
928
934
  const bidsLength = storedBids.length;
929
935
  const payloadArray = [];
@@ -940,14 +946,21 @@ export default class okx extends okxRest {
940
946
  const payload = payloadArray.join(':');
941
947
  const responseChecksum = this.safeInteger(message, 'checksum');
942
948
  const localChecksum = this.crc32(payload, true);
949
+ let error = undefined;
950
+ if (prevSeqId !== -1 && nonce !== prevSeqId) {
951
+ error = new InvalidNonce(this.id + ' watchOrderBook received invalid nonce');
952
+ }
943
953
  if (responseChecksum !== localChecksum) {
944
- const error = new ChecksumError(this.id + ' ' + this.orderbookChecksumMessage(symbol));
954
+ error = new ChecksumError(this.id + ' ' + this.orderbookChecksumMessage(symbol));
955
+ }
956
+ if (error !== undefined) {
945
957
  delete client.subscriptions[messageHash];
946
958
  delete this.orderbooks[symbol];
947
959
  client.reject(error, messageHash);
948
960
  }
949
961
  }
950
962
  const timestamp = this.safeInteger(message, 'ts');
963
+ orderbook['nonce'] = seqId;
951
964
  orderbook['timestamp'] = timestamp;
952
965
  orderbook['datetime'] = this.iso8601(timestamp);
953
966
  return orderbook;
@@ -1069,7 +1082,7 @@ export default class okx extends okxRest {
1069
1082
  const orderbook = this.orderbooks[symbol];
1070
1083
  for (let i = 0; i < data.length; i++) {
1071
1084
  const update = data[i];
1072
- this.handleOrderBookMessage(client, update, orderbook, messageHash);
1085
+ this.handleOrderBookMessage(client, update, orderbook, messageHash, market);
1073
1086
  client.resolve(orderbook, messageHash);
1074
1087
  }
1075
1088
  }
@@ -1640,7 +1653,7 @@ export default class okx extends okxRest {
1640
1653
  await this.loadMarkets();
1641
1654
  await this.authenticate();
1642
1655
  const url = this.getUrl('private', 'private');
1643
- const messageHash = this.nonce().toString();
1656
+ const messageHash = this.milliseconds().toString();
1644
1657
  let op = undefined;
1645
1658
  [op, params] = this.handleOptionAndParams(params, 'createOrderWs', 'op', 'batch-orders');
1646
1659
  const args = this.createOrderRequest(symbol, type, side, amount, price, params);
@@ -1710,7 +1723,7 @@ export default class okx extends okxRest {
1710
1723
  await this.loadMarkets();
1711
1724
  await this.authenticate();
1712
1725
  const url = this.getUrl('private', 'private');
1713
- const messageHash = this.nonce().toString();
1726
+ const messageHash = this.milliseconds().toString();
1714
1727
  let op = undefined;
1715
1728
  [op, params] = this.handleOptionAndParams(params, 'editOrderWs', 'op', 'amend-order');
1716
1729
  const args = this.editOrderRequest(id, symbol, type, side, amount, price, params);
@@ -1739,7 +1752,7 @@ export default class okx extends okxRest {
1739
1752
  await this.loadMarkets();
1740
1753
  await this.authenticate();
1741
1754
  const url = this.getUrl('private', 'private');
1742
- const messageHash = this.nonce().toString();
1755
+ const messageHash = this.milliseconds().toString();
1743
1756
  const clientOrderId = this.safeString2(params, 'clOrdId', 'clientOrderId');
1744
1757
  params = this.omit(params, ['clientOrderId', 'clOrdId']);
1745
1758
  const arg = {
@@ -1779,7 +1792,7 @@ export default class okx extends okxRest {
1779
1792
  await this.loadMarkets();
1780
1793
  await this.authenticate();
1781
1794
  const url = this.getUrl('private', 'private');
1782
- const messageHash = this.nonce().toString();
1795
+ const messageHash = this.milliseconds().toString();
1783
1796
  const args = [];
1784
1797
  for (let i = 0; i < idsLength; i++) {
1785
1798
  const arg = {
@@ -1815,7 +1828,7 @@ export default class okx extends okxRest {
1815
1828
  throw new BadRequest(this.id + 'cancelAllOrdersWs is only applicable to Option in Portfolio Margin mode, and MMP privilege is required.');
1816
1829
  }
1817
1830
  const url = this.getUrl('private', 'private');
1818
- const messageHash = this.nonce().toString();
1831
+ const messageHash = this.milliseconds().toString();
1819
1832
  const request = {
1820
1833
  'id': messageHash,
1821
1834
  'op': 'mass-cancel',
@@ -32,7 +32,7 @@ export default class oxfun extends oxfunRest {
32
32
  cancelOrdersWs(ids: string[], symbol?: Str, params?: {}): Promise<any>;
33
33
  authenticate(params?: {}): Promise<any>;
34
34
  handleAuthenticationMessage(client: Client, message: any): void;
35
- ping(client: any): string;
35
+ ping(client: Client): string;
36
36
  handlePong(client: Client, message: any): any;
37
37
  handleMessage(client: Client, message: any): void;
38
38
  }
@@ -14,7 +14,7 @@ export default class p2b extends p2bRest {
14
14
  handleOrderBook(client: Client, message: any): void;
15
15
  handleMessage(client: Client, message: any): void;
16
16
  handleErrorMessage(client: Client, message: any): boolean;
17
- ping(client: any): {
17
+ ping(client: Client): {
18
18
  method: string;
19
19
  params: any[];
20
20
  id: number;
@@ -36,7 +36,7 @@ export default class poloniex extends poloniexRest {
36
36
  handleMessage(client: Client, message: any): void;
37
37
  handleErrorMessage(client: Client, message: any): boolean;
38
38
  handleAuthenticate(client: Client, message: any): any;
39
- ping(client: any): {
39
+ ping(client: Client): {
40
40
  event: string;
41
41
  };
42
42
  }
@@ -31,7 +31,7 @@ export default class whitebit extends whitebitRest {
31
31
  handleMessage(client: Client, message: any): void;
32
32
  handleSubscriptionStatus(client: Client, message: any, id: any): void;
33
33
  handlePong(client: Client, message: any): any;
34
- ping(client: any): {
34
+ ping(client: Client): {
35
35
  id: number;
36
36
  method: string;
37
37
  params: any[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.3.65",
3
+ "version": "4.3.67",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.min.js",
6
6
  "type": "module",
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- var Exchange$1 = require('../base/Exchange.js');
4
-
5
- // -------------------------------------------------------------------------------
6
- class Exchange extends Exchange$1["default"] {
7
- }
8
-
9
- module.exports = Exchange;