ccxt 4.2.31 → 4.2.35

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 (302) hide show
  1. package/.gitattributes +1 -0
  2. package/CONTRIBUTING.md +20 -1
  3. package/README.md +8 -7
  4. package/build.sh +9 -2
  5. package/cleanup.sh +3 -0
  6. package/dist/ccxt.browser.js +741 -501
  7. package/dist/ccxt.browser.min.js +3 -3
  8. package/dist/cjs/ccxt.js +1 -1
  9. package/dist/cjs/src/ace.js +3 -2
  10. package/dist/cjs/src/ascendex.js +1 -1
  11. package/dist/cjs/src/base/Exchange.js +62 -20
  12. package/dist/cjs/src/bigone.js +21 -1
  13. package/dist/cjs/src/binance.js +59 -15
  14. package/dist/cjs/src/bingx.js +4 -3
  15. package/dist/cjs/src/bit2c.js +12 -0
  16. package/dist/cjs/src/bitfinex2.js +12 -1
  17. package/dist/cjs/src/bitget.js +3 -3
  18. package/dist/cjs/src/bitmart.js +1 -1
  19. package/dist/cjs/src/bitrue.js +3 -3
  20. package/dist/cjs/src/blockchaincom.js +1 -1
  21. package/dist/cjs/src/bybit.js +1 -1
  22. package/dist/cjs/src/coinbase.js +2 -2
  23. package/dist/cjs/src/coinex.js +1 -1
  24. package/dist/cjs/src/cryptocom.js +10 -10
  25. package/dist/cjs/src/gate.js +34 -29
  26. package/dist/cjs/src/kraken.js +39 -0
  27. package/dist/cjs/src/krakenfutures.js +25 -3
  28. package/dist/cjs/src/kucoin.js +1 -1
  29. package/dist/cjs/src/mexc.js +2 -1
  30. package/dist/cjs/src/okx.js +4 -3
  31. package/dist/cjs/src/phemex.js +8 -8
  32. package/dist/cjs/src/pro/alpaca.js +8 -4
  33. package/dist/cjs/src/pro/ascendex.js +1 -2
  34. package/dist/cjs/src/pro/binance.js +17 -13
  35. package/dist/cjs/src/pro/bingx.js +1 -1
  36. package/dist/cjs/src/pro/bitfinex.js +21 -24
  37. package/dist/cjs/src/pro/bitfinex2.js +13 -17
  38. package/dist/cjs/src/pro/bitget.js +3 -1
  39. package/dist/cjs/src/pro/bitmart.js +3 -8
  40. package/dist/cjs/src/pro/bitmex.js +4 -7
  41. package/dist/cjs/src/pro/bitopro.js +2 -5
  42. package/dist/cjs/src/pro/bitrue.js +1 -1
  43. package/dist/cjs/src/pro/bitstamp.js +2 -3
  44. package/dist/cjs/src/pro/bitvavo.js +12 -5
  45. package/dist/cjs/src/pro/blockchaincom.js +22 -23
  46. package/dist/cjs/src/pro/bybit.js +5 -5
  47. package/dist/cjs/src/pro/cex.js +7 -7
  48. package/dist/cjs/src/pro/coinbase.js +3 -2
  49. package/dist/cjs/src/pro/coinbasepro.js +1 -1
  50. package/dist/cjs/src/pro/coinex.js +15 -13
  51. package/dist/cjs/src/pro/currencycom.js +5 -7
  52. package/dist/cjs/src/pro/deribit.js +4 -4
  53. package/dist/cjs/src/pro/exmo.js +15 -13
  54. package/dist/cjs/src/pro/gate.js +1 -1
  55. package/dist/cjs/src/pro/gemini.js +4 -2
  56. package/dist/cjs/src/pro/hitbtc.js +9 -8
  57. package/dist/cjs/src/pro/hollaex.js +2 -2
  58. package/dist/cjs/src/pro/htx.js +6 -7
  59. package/dist/cjs/src/pro/huobijp.js +3 -5
  60. package/dist/cjs/src/pro/idex.js +1 -1
  61. package/dist/cjs/src/pro/independentreserve.js +14 -13
  62. package/dist/cjs/src/pro/kraken.js +10 -16
  63. package/dist/cjs/src/pro/krakenfutures.js +10 -6
  64. package/dist/cjs/src/pro/kucoin.js +10 -11
  65. package/dist/cjs/src/pro/kucoinfutures.js +12 -11
  66. package/dist/cjs/src/pro/lbank.js +10 -10
  67. package/dist/cjs/src/pro/luno.js +12 -14
  68. package/dist/cjs/src/pro/mexc.js +3 -2
  69. package/dist/cjs/src/pro/ndax.js +7 -13
  70. package/dist/cjs/src/pro/okcoin.js +7 -12
  71. package/dist/cjs/src/pro/okx.js +6 -11
  72. package/dist/cjs/src/pro/onetrading.js +16 -15
  73. package/dist/cjs/src/pro/p2b.js +5 -3
  74. package/dist/cjs/src/pro/phemex.js +16 -11
  75. package/dist/cjs/src/pro/poloniex.js +6 -4
  76. package/dist/cjs/src/pro/poloniexfutures.js +14 -9
  77. package/dist/cjs/src/pro/probit.js +15 -11
  78. package/dist/cjs/src/pro/upbit.js +8 -8
  79. package/dist/cjs/src/pro/wazirx.js +6 -3
  80. package/dist/cjs/src/pro/woo.js +8 -6
  81. package/dist/cjs/src/probit.js +3 -3
  82. package/dist/cjs/src/tokocrypto.js +2 -2
  83. package/dist/cjs/src/wavesexchange.js +2 -1
  84. package/dist/cjs/src/woo.js +1 -1
  85. package/dist/cjs/src/yobit.js +39 -0
  86. package/js/ccxt.d.ts +1 -1
  87. package/js/ccxt.js +1 -1
  88. package/js/src/ace.d.ts +1 -1
  89. package/js/src/ace.js +3 -2
  90. package/js/src/alpaca.d.ts +1 -1
  91. package/js/src/ascendex.d.ts +5 -15
  92. package/js/src/ascendex.js +1 -1
  93. package/js/src/base/Exchange.d.ts +86 -78
  94. package/js/src/base/Exchange.js +62 -20
  95. package/js/src/base/types.d.ts +90 -6
  96. package/js/src/bigone.d.ts +5 -15
  97. package/js/src/bigone.js +21 -1
  98. package/js/src/binance.d.ts +13 -23
  99. package/js/src/binance.js +59 -15
  100. package/js/src/bingx.d.ts +6 -16
  101. package/js/src/bingx.js +4 -3
  102. package/js/src/bit2c.d.ts +1 -1
  103. package/js/src/bit2c.js +12 -0
  104. package/js/src/bitbank.d.ts +2 -2
  105. package/js/src/bitbns.d.ts +1 -1
  106. package/js/src/bitfinex.d.ts +5 -5
  107. package/js/src/bitfinex2.d.ts +7 -17
  108. package/js/src/bitfinex2.js +12 -1
  109. package/js/src/bitflyer.d.ts +5 -5
  110. package/js/src/bitforex.d.ts +1 -1
  111. package/js/src/bitget.d.ts +8 -38
  112. package/js/src/bitget.js +3 -3
  113. package/js/src/bithumb.d.ts +2 -2
  114. package/js/src/bitmart.d.ts +10 -21
  115. package/js/src/bitmart.js +1 -1
  116. package/js/src/bitmex.d.ts +3 -3
  117. package/js/src/bitopro.d.ts +2 -2
  118. package/js/src/bitrue.d.ts +5 -15
  119. package/js/src/bitrue.js +3 -3
  120. package/js/src/bitso.d.ts +4 -4
  121. package/js/src/bitstamp.d.ts +2 -2
  122. package/js/src/bitteam.d.ts +1 -1
  123. package/js/src/bitvavo.d.ts +3 -3
  124. package/js/src/bl3p.d.ts +1 -1
  125. package/js/src/blockchaincom.d.ts +2 -2
  126. package/js/src/blockchaincom.js +1 -1
  127. package/js/src/btcalpha.d.ts +1 -1
  128. package/js/src/btcbox.d.ts +1 -1
  129. package/js/src/btcmarkets.d.ts +3 -3
  130. package/js/src/btcturk.d.ts +1 -1
  131. package/js/src/bybit.d.ts +8 -8
  132. package/js/src/bybit.js +1 -1
  133. package/js/src/cex.d.ts +1 -1
  134. package/js/src/coinbase.d.ts +6 -50
  135. package/js/src/coinbase.js +2 -2
  136. package/js/src/coinbasepro.d.ts +2 -2
  137. package/js/src/coincheck.d.ts +1 -1
  138. package/js/src/coinex.d.ts +8 -8
  139. package/js/src/coinex.js +1 -1
  140. package/js/src/coinlist.d.ts +4 -14
  141. package/js/src/coinmate.d.ts +2 -2
  142. package/js/src/coinmetro.d.ts +2 -2
  143. package/js/src/coinone.d.ts +1 -1
  144. package/js/src/coinsph.d.ts +2 -2
  145. package/js/src/coinspot.d.ts +1 -1
  146. package/js/src/cryptocom.d.ts +4 -4
  147. package/js/src/cryptocom.js +10 -10
  148. package/js/src/currencycom.d.ts +2 -2
  149. package/js/src/delta.d.ts +2 -2
  150. package/js/src/deribit.d.ts +4 -14
  151. package/js/src/digifinex.d.ts +10 -38
  152. package/js/src/exmo.d.ts +2 -2
  153. package/js/src/gate.d.ts +8 -18
  154. package/js/src/gate.js +34 -29
  155. package/js/src/gemini.d.ts +2 -2
  156. package/js/src/hitbtc.d.ts +6 -16
  157. package/js/src/hollaex.d.ts +2 -2
  158. package/js/src/htx.d.ts +11 -21
  159. package/js/src/huobijp.d.ts +4 -4
  160. package/js/src/idex.d.ts +3 -3
  161. package/js/src/independentreserve.d.ts +2 -2
  162. package/js/src/indodax.d.ts +2 -2
  163. package/js/src/kraken.d.ts +5 -5
  164. package/js/src/kraken.js +39 -0
  165. package/js/src/krakenfutures.d.ts +7 -7
  166. package/js/src/krakenfutures.js +25 -3
  167. package/js/src/kucoin.d.ts +8 -29
  168. package/js/src/kucoin.js +1 -1
  169. package/js/src/kucoinfutures.d.ts +4 -4
  170. package/js/src/kuna.d.ts +2 -2
  171. package/js/src/latoken.d.ts +4 -14
  172. package/js/src/lbank.d.ts +2 -5
  173. package/js/src/luno.d.ts +1 -1
  174. package/js/src/lykke.d.ts +2 -2
  175. package/js/src/mercado.d.ts +2 -2
  176. package/js/src/mexc.d.ts +6 -6
  177. package/js/src/mexc.js +2 -1
  178. package/js/src/ndax.d.ts +2 -2
  179. package/js/src/novadax.d.ts +4 -15
  180. package/js/src/oceanex.d.ts +1 -1
  181. package/js/src/okcoin.d.ts +5 -15
  182. package/js/src/okx.d.ts +8 -18
  183. package/js/src/okx.js +4 -3
  184. package/js/src/onetrading.d.ts +2 -2
  185. package/js/src/p2b.d.ts +1 -1
  186. package/js/src/paymium.d.ts +3 -13
  187. package/js/src/phemex.d.ts +5 -5
  188. package/js/src/phemex.js +8 -8
  189. package/js/src/poloniex.d.ts +4 -14
  190. package/js/src/poloniexfutures.d.ts +1 -1
  191. package/js/src/pro/alpaca.d.ts +2 -2
  192. package/js/src/pro/alpaca.js +8 -4
  193. package/js/src/pro/ascendex.d.ts +2 -2
  194. package/js/src/pro/ascendex.js +1 -2
  195. package/js/src/pro/binance.d.ts +3 -3
  196. package/js/src/pro/binance.js +17 -13
  197. package/js/src/pro/bingx.d.ts +1 -1
  198. package/js/src/pro/bingx.js +1 -1
  199. package/js/src/pro/bitfinex.d.ts +2 -2
  200. package/js/src/pro/bitfinex.js +21 -24
  201. package/js/src/pro/bitfinex2.d.ts +2 -2
  202. package/js/src/pro/bitfinex2.js +13 -17
  203. package/js/src/pro/bitget.js +3 -1
  204. package/js/src/pro/bitmart.d.ts +3 -3
  205. package/js/src/pro/bitmart.js +3 -8
  206. package/js/src/pro/bitmex.d.ts +1 -1
  207. package/js/src/pro/bitmex.js +4 -7
  208. package/js/src/pro/bitopro.d.ts +1 -1
  209. package/js/src/pro/bitopro.js +2 -5
  210. package/js/src/pro/bitrue.js +1 -1
  211. package/js/src/pro/bitstamp.d.ts +1 -1
  212. package/js/src/pro/bitstamp.js +2 -3
  213. package/js/src/pro/bitvavo.d.ts +3 -3
  214. package/js/src/pro/bitvavo.js +12 -5
  215. package/js/src/pro/blockchaincom.d.ts +8 -8
  216. package/js/src/pro/blockchaincom.js +22 -23
  217. package/js/src/pro/bybit.d.ts +2 -2
  218. package/js/src/pro/bybit.js +5 -5
  219. package/js/src/pro/cex.d.ts +1 -1
  220. package/js/src/pro/cex.js +7 -7
  221. package/js/src/pro/coinbase.d.ts +1 -1
  222. package/js/src/pro/coinbase.js +3 -2
  223. package/js/src/pro/coinbasepro.d.ts +1 -1
  224. package/js/src/pro/coinbasepro.js +1 -1
  225. package/js/src/pro/coinex.d.ts +2 -2
  226. package/js/src/pro/coinex.js +15 -13
  227. package/js/src/pro/currencycom.d.ts +1 -1
  228. package/js/src/pro/currencycom.js +5 -7
  229. package/js/src/pro/deribit.d.ts +2 -2
  230. package/js/src/pro/deribit.js +4 -4
  231. package/js/src/pro/exmo.d.ts +2 -2
  232. package/js/src/pro/exmo.js +15 -13
  233. package/js/src/pro/gate.js +1 -1
  234. package/js/src/pro/gemini.d.ts +1 -1
  235. package/js/src/pro/gemini.js +4 -2
  236. package/js/src/pro/hitbtc.d.ts +2 -2
  237. package/js/src/pro/hitbtc.js +9 -8
  238. package/js/src/pro/hollaex.d.ts +2 -2
  239. package/js/src/pro/hollaex.js +2 -2
  240. package/js/src/pro/htx.d.ts +2 -2
  241. package/js/src/pro/htx.js +6 -7
  242. package/js/src/pro/huobijp.d.ts +1 -1
  243. package/js/src/pro/huobijp.js +3 -5
  244. package/js/src/pro/idex.js +1 -1
  245. package/js/src/pro/independentreserve.d.ts +1 -1
  246. package/js/src/pro/independentreserve.js +14 -13
  247. package/js/src/pro/kraken.d.ts +2 -2
  248. package/js/src/pro/kraken.js +10 -16
  249. package/js/src/pro/krakenfutures.d.ts +1 -1
  250. package/js/src/pro/krakenfutures.js +10 -6
  251. package/js/src/pro/kucoin.d.ts +3 -3
  252. package/js/src/pro/kucoin.js +10 -11
  253. package/js/src/pro/kucoinfutures.d.ts +3 -3
  254. package/js/src/pro/kucoinfutures.js +12 -11
  255. package/js/src/pro/lbank.d.ts +1 -1
  256. package/js/src/pro/lbank.js +10 -10
  257. package/js/src/pro/luno.d.ts +2 -2
  258. package/js/src/pro/luno.js +12 -14
  259. package/js/src/pro/mexc.d.ts +2 -2
  260. package/js/src/pro/mexc.js +3 -2
  261. package/js/src/pro/ndax.d.ts +3 -3
  262. package/js/src/pro/ndax.js +7 -13
  263. package/js/src/pro/okcoin.d.ts +1 -1
  264. package/js/src/pro/okcoin.js +7 -12
  265. package/js/src/pro/okx.d.ts +1 -1
  266. package/js/src/pro/okx.js +6 -11
  267. package/js/src/pro/onetrading.d.ts +1 -1
  268. package/js/src/pro/onetrading.js +16 -15
  269. package/js/src/pro/p2b.d.ts +1 -1
  270. package/js/src/pro/p2b.js +5 -3
  271. package/js/src/pro/phemex.d.ts +3 -3
  272. package/js/src/pro/phemex.js +16 -11
  273. package/js/src/pro/poloniex.d.ts +1 -1
  274. package/js/src/pro/poloniex.js +6 -4
  275. package/js/src/pro/poloniexfutures.d.ts +4 -4
  276. package/js/src/pro/poloniexfutures.js +13 -10
  277. package/js/src/pro/probit.d.ts +1 -1
  278. package/js/src/pro/probit.js +14 -12
  279. package/js/src/pro/upbit.js +8 -8
  280. package/js/src/pro/wazirx.d.ts +1 -1
  281. package/js/src/pro/wazirx.js +6 -3
  282. package/js/src/pro/woo.d.ts +3 -3
  283. package/js/src/pro/woo.js +8 -6
  284. package/js/src/probit.d.ts +3 -3
  285. package/js/src/probit.js +3 -3
  286. package/js/src/timex.d.ts +1 -1
  287. package/js/src/tokocrypto.d.ts +3 -3
  288. package/js/src/tokocrypto.js +2 -2
  289. package/js/src/upbit.d.ts +2 -2
  290. package/js/src/wavesexchange.d.ts +3 -4
  291. package/js/src/wavesexchange.js +2 -1
  292. package/js/src/wazirx.d.ts +1 -1
  293. package/js/src/whitebit.d.ts +5 -15
  294. package/js/src/woo.d.ts +5 -15
  295. package/js/src/woo.js +1 -1
  296. package/js/src/yobit.d.ts +21 -6
  297. package/js/src/yobit.js +39 -0
  298. package/js/src/zaif.d.ts +2 -2
  299. package/js/src/zonda.d.ts +4 -14
  300. package/package.json +22 -8
  301. package/skip-tests.json +9 -1
  302. package/tests-manager.sh +1 -2
@@ -909,7 +909,7 @@ export default class bybit extends bybitRest {
909
909
  * @name bybit#watchPositions
910
910
  * @see https://bybit-exchange.github.io/docs/v5/websocket/private/position
911
911
  * @description watch all open positions
912
- * @param {string[]|undefined} symbols list of unified market symbols
912
+ * @param {string[]} [symbols] list of unified market symbols
913
913
  * @param {object} params extra parameters specific to the exchange API endpoint
914
914
  * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/en/latest/manual.html#position-structure}
915
915
  */
@@ -942,7 +942,7 @@ export default class bybit extends bybitRest {
942
942
  }
943
943
  setPositionsCache(client, symbols = undefined) {
944
944
  if (this.positions !== undefined) {
945
- return this.positions;
945
+ return;
946
946
  }
947
947
  const fetchPositionsSnapshot = this.handleOption('watchPositions', 'fetchPositionsSnapshot', true);
948
948
  if (fetchPositionsSnapshot) {
@@ -1075,7 +1075,7 @@ export default class bybit extends bybitRest {
1075
1075
  }
1076
1076
  return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
1077
1077
  }
1078
- handleOrder(client, message, subscription = undefined) {
1078
+ handleOrder(client, message) {
1079
1079
  //
1080
1080
  // spot
1081
1081
  // {
@@ -1641,7 +1641,7 @@ export default class bybit extends bybitRest {
1641
1641
  const authenticated = this.safeValue(client.subscriptions, messageHash);
1642
1642
  if (authenticated === undefined) {
1643
1643
  const expiresInt = this.milliseconds() + 10000;
1644
- const expires = expiresInt.toString();
1644
+ const expires = this.numberToString(expiresInt);
1645
1645
  const path = 'GET/realtime';
1646
1646
  const auth = path + expires;
1647
1647
  const signature = this.hmac(this.encode(auth), this.encode(this.secret), sha256, 'hex');
@@ -1654,7 +1654,7 @@ export default class bybit extends bybitRest {
1654
1654
  const message = this.extend(request, params);
1655
1655
  this.watch(url, messageHash, message, messageHash);
1656
1656
  }
1657
- return future;
1657
+ return await future;
1658
1658
  }
1659
1659
  handleErrorMessage(client, message) {
1660
1660
  //
@@ -46,7 +46,7 @@ export default class cex extends cexRest {
46
46
  resolveData(client: Client, message: any): void;
47
47
  handleConnected(client: Client, message: any): any;
48
48
  handleErrorMessage(client: Client, message: any): void;
49
- handleMessage(client: Client, message: any): any;
49
+ handleMessage(client: Client, message: any): void;
50
50
  handleAuthenticationMessage(client: Client, message: any): void;
51
51
  authenticate(params?: {}): Promise<any>;
52
52
  }
package/js/src/pro/cex.js CHANGED
@@ -963,15 +963,15 @@ export default class cex extends cexRest {
963
963
  const messageHash = 'orderbook:' + symbol;
964
964
  const timestamp = this.safeInteger2(data, 'timestamp_ms', 'timestamp');
965
965
  const incrementalId = this.safeNumber(data, 'id');
966
- const storedOrderBook = this.orderBook({});
966
+ const orderbook = this.orderBook({});
967
967
  const snapshot = this.parseOrderBook(data, symbol, timestamp, 'bids', 'asks');
968
968
  snapshot['nonce'] = incrementalId;
969
- storedOrderBook.reset(snapshot);
969
+ orderbook.reset(snapshot);
970
970
  this.options['orderbook'][symbol] = {
971
971
  'incrementalId': incrementalId,
972
972
  };
973
- this.orderbooks[symbol] = storedOrderBook;
974
- client.resolve(storedOrderBook, messageHash);
973
+ this.orderbooks[symbol] = orderbook;
974
+ client.resolve(orderbook, messageHash);
975
975
  }
976
976
  pairToSymbol(pair) {
977
977
  const parts = pair.split(':');
@@ -1437,7 +1437,8 @@ export default class cex extends cexRest {
1437
1437
  handleMessage(client, message) {
1438
1438
  const ok = this.safeString(message, 'ok');
1439
1439
  if (ok === 'error') {
1440
- return this.handleErrorMessage(client, message);
1440
+ this.handleErrorMessage(client, message);
1441
+ return;
1441
1442
  }
1442
1443
  const event = this.safeString(message, 'e');
1443
1444
  const handlers = {
@@ -1465,9 +1466,8 @@ export default class cex extends cexRest {
1465
1466
  };
1466
1467
  const handler = this.safeValue(handlers, event);
1467
1468
  if (handler !== undefined) {
1468
- return handler.call(this, client, message);
1469
+ handler.call(this, client, message);
1469
1470
  }
1470
- return message;
1471
1471
  }
1472
1472
  handleAuthenticationMessage(client, message) {
1473
1473
  //
@@ -16,5 +16,5 @@ export default class coinbase extends coinbaseRest {
16
16
  handleOrderBookHelper(orderbook: any, updates: any): void;
17
17
  handleOrderBook(client: any, message: any): any;
18
18
  handleSubscriptionStatus(client: any, message: any): any;
19
- handleMessage(client: any, message: any): any;
19
+ handleMessage(client: any, message: any): void;
20
20
  }
@@ -464,7 +464,8 @@ export default class coinbase extends coinbaseRest {
464
464
  const side = this.safeString(this.options['sides'], sideId);
465
465
  const price = this.safeNumber(trade, 'price_level');
466
466
  const amount = this.safeNumber(trade, 'new_quantity');
467
- orderbook[side].store(price, amount);
467
+ const orderbookSide = orderbook[side];
468
+ orderbookSide.store(price, amount);
468
469
  }
469
470
  }
470
471
  handleOrderBook(client, message) {
@@ -557,6 +558,6 @@ export default class coinbase extends coinbaseRest {
557
558
  throw new ExchangeError(errorMessage);
558
559
  }
559
560
  const method = this.safeValue(methods, channel);
560
- return method.call(this, client, message);
561
+ method.call(this, client, message);
561
562
  }
562
563
  }
@@ -34,5 +34,5 @@ export default class coinbasepro extends coinbaseproRest {
34
34
  handleOrderBook(client: Client, message: any): void;
35
35
  handleSubscriptionStatus(client: Client, message: any): any;
36
36
  handleErrorMessage(client: Client, message: any): boolean;
37
- handleMessage(client: Client, message: any): any;
37
+ handleMessage(client: Client, message: any): void;
38
38
  }
@@ -963,7 +963,7 @@ export default class coinbasepro extends coinbaseproRest {
963
963
  }
964
964
  }
965
965
  else {
966
- return method.call(this, client, message);
966
+ method.call(this, client, message);
967
967
  }
968
968
  }
969
969
  }
@@ -24,8 +24,8 @@ export default class coinex extends coinexRest {
24
24
  handleOrders(client: Client, message: any): void;
25
25
  parseWsOrder(order: any, market?: any): Order;
26
26
  parseWsOrderStatus(status: any): string;
27
- handleMessage(client: Client, message: any): any;
27
+ handleMessage(client: Client, message: any): void;
28
28
  handleAuthenticationMessage(client: Client, message: any): any;
29
29
  handleSubscriptionStatus(client: Client, message: any): void;
30
- authenticate(params?: {}): any;
30
+ authenticate(params?: {}): Promise<any>;
31
31
  }
@@ -656,29 +656,29 @@ export default class coinex extends coinexRest {
656
656
  //
657
657
  const params = this.safeValue(message, 'params', []);
658
658
  const fullOrderBook = this.safeValue(params, 0);
659
- let orderBook = this.safeValue(params, 1);
659
+ let orderbook = this.safeValue(params, 1);
660
660
  const marketId = this.safeString(params, 2);
661
661
  const defaultType = this.safeString(this.options, 'defaultType');
662
662
  const market = this.safeMarket(marketId, undefined, undefined, defaultType);
663
663
  const symbol = market['symbol'];
664
664
  const name = 'orderbook';
665
665
  const messageHash = name + ':' + symbol;
666
- const timestamp = this.safeInteger(orderBook, 'time');
666
+ const timestamp = this.safeInteger(orderbook, 'time');
667
667
  const currentOrderBook = this.safeValue(this.orderbooks, symbol);
668
668
  if (fullOrderBook) {
669
- const snapshot = this.parseOrderBook(orderBook, symbol, timestamp);
669
+ const snapshot = this.parseOrderBook(orderbook, symbol, timestamp);
670
670
  if (currentOrderBook === undefined) {
671
- orderBook = this.orderBook(snapshot);
672
- this.orderbooks[symbol] = orderBook;
671
+ orderbook = this.orderBook(snapshot);
672
+ this.orderbooks[symbol] = orderbook;
673
673
  }
674
674
  else {
675
- orderBook = this.orderbooks[symbol];
676
- orderBook.reset(snapshot);
675
+ orderbook = this.orderbooks[symbol];
676
+ orderbook.reset(snapshot);
677
677
  }
678
678
  }
679
679
  else {
680
- const asks = this.safeValue(orderBook, 'asks', []);
681
- const bids = this.safeValue(orderBook, 'bids', []);
680
+ const asks = this.safeValue(orderbook, 'asks', []);
681
+ const bids = this.safeValue(orderbook, 'bids', []);
682
682
  this.handleDeltas(currentOrderBook['asks'], asks);
683
683
  this.handleDeltas(currentOrderBook['bids'], bids);
684
684
  currentOrderBook['nonce'] = timestamp;
@@ -999,9 +999,10 @@ export default class coinex extends coinexRest {
999
999
  };
1000
1000
  const handler = this.safeValue(handlers, method);
1001
1001
  if (handler !== undefined) {
1002
- return handler.call(this, client, message);
1002
+ handler.call(this, client, message);
1003
+ return;
1003
1004
  }
1004
- return this.handleSubscriptionStatus(client, message);
1005
+ this.handleSubscriptionStatus(client, message);
1005
1006
  }
1006
1007
  handleAuthenticationMessage(client, message) {
1007
1008
  //
@@ -1025,7 +1026,8 @@ export default class coinex extends coinexRest {
1025
1026
  if (subscription !== undefined) {
1026
1027
  const futureIndex = this.safeString(subscription, 'future');
1027
1028
  if (futureIndex === 'ohlcv') {
1028
- return this.handleOHLCV(client, message);
1029
+ this.handleOHLCV(client, message);
1030
+ return;
1029
1031
  }
1030
1032
  const future = this.safeValue(client.futures, futureIndex);
1031
1033
  if (future !== undefined) {
@@ -1034,7 +1036,7 @@ export default class coinex extends coinexRest {
1034
1036
  delete client.subscriptions[id];
1035
1037
  }
1036
1038
  }
1037
- authenticate(params = {}) {
1039
+ async authenticate(params = {}) {
1038
1040
  let type = undefined;
1039
1041
  [type, params] = this.handleMarketTypeAndParams('authenticate', undefined, params);
1040
1042
  const url = this.urls['api']['ws'][type];
@@ -39,5 +39,5 @@ export default class currencycom extends currencycomRest {
39
39
  watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
40
40
  handleDeltas(bookside: any, deltas: any): void;
41
41
  handleOrderBook(client: Client, message: any): void;
42
- handleMessage(client: Client, message: any): any;
42
+ handleMessage(client: Client, message: any): void;
43
43
  }
@@ -535,10 +535,11 @@ export default class currencycom extends currencycomRest {
535
535
  };
536
536
  const method = this.safeValue(methods, subscriptionDestination);
537
537
  if (method === undefined) {
538
- return message;
538
+ return;
539
539
  }
540
540
  else {
541
- return method.call(this, client, message, subscription);
541
+ method.call(this, client, message, subscription);
542
+ return;
542
543
  }
543
544
  }
544
545
  }
@@ -553,11 +554,8 @@ export default class currencycom extends currencycomRest {
553
554
  'ping': this.handlePong,
554
555
  };
555
556
  const method = this.safeValue(methods, destination);
556
- if (method === undefined) {
557
- return message;
558
- }
559
- else {
560
- return method.call(this, client, message);
557
+ if (method !== undefined) {
558
+ method.call(this, client, message);
561
559
  }
562
560
  }
563
561
  }
@@ -21,7 +21,7 @@ export default class deribit extends deribitRest {
21
21
  handleOrders(client: Client, message: any): void;
22
22
  watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
23
23
  handleOHLCV(client: Client, message: any): void;
24
- handleMessage(client: Client, message: any): any;
24
+ handleMessage(client: Client, message: any): void;
25
25
  handleAuthenticationMessage(client: Client, message: any): any;
26
- authenticate(params?: {}): any;
26
+ authenticate(params?: {}): Promise<any>;
27
27
  }
@@ -762,16 +762,16 @@ export default class deribit extends deribitRest {
762
762
  };
763
763
  const handler = this.safeValue(handlers, channelId);
764
764
  if (handler !== undefined) {
765
- return handler.call(this, client, message);
765
+ handler.call(this, client, message);
766
+ return;
766
767
  }
767
768
  throw new NotSupported(this.id + ' no handler found for this message ' + this.json(message));
768
769
  }
769
770
  const result = this.safeValue(message, 'result', {});
770
771
  const accessToken = this.safeString(result, 'access_token');
771
772
  if (accessToken !== undefined) {
772
- return this.handleAuthenticationMessage(client, message);
773
+ this.handleAuthenticationMessage(client, message);
773
774
  }
774
- return message;
775
775
  }
776
776
  handleAuthenticationMessage(client, message) {
777
777
  //
@@ -795,7 +795,7 @@ export default class deribit extends deribitRest {
795
795
  client.resolve(message, messageHash);
796
796
  return message;
797
797
  }
798
- authenticate(params = {}) {
798
+ async authenticate(params = {}) {
799
799
  const url = this.urls['api']['ws'];
800
800
  const client = this.client(url);
801
801
  const time = this.milliseconds();
@@ -18,9 +18,9 @@ export default class exmo extends exmoRest {
18
18
  handleOrderBook(client: Client, message: any): void;
19
19
  handleDelta(bookside: any, delta: any): void;
20
20
  handleDeltas(bookside: any, deltas: any): void;
21
- handleMessage(client: Client, message: any): any;
21
+ handleMessage(client: Client, message: any): void;
22
22
  handleSubscribed(client: Client, message: any): any;
23
23
  handleInfo(client: Client, message: any): any;
24
24
  handleAuthenticationMessage(client: Client, message: any): void;
25
- authenticate(params?: {}): any;
25
+ authenticate(params?: {}): Promise<any>;
26
26
  }
@@ -515,25 +515,25 @@ export default class exmo extends exmoRest {
515
515
  const orderBook = this.safeValue(message, 'data', {});
516
516
  const messageHash = 'orderbook:' + symbol;
517
517
  const timestamp = this.safeInteger(message, 'ts');
518
- let storedOrderBook = this.safeValue(this.orderbooks, symbol);
519
- if (storedOrderBook === undefined) {
520
- storedOrderBook = this.orderBook({});
521
- this.orderbooks[symbol] = storedOrderBook;
518
+ let orderbook = this.safeValue(this.orderbooks, symbol);
519
+ if (orderbook === undefined) {
520
+ orderbook = this.orderBook({});
521
+ this.orderbooks[symbol] = orderbook;
522
522
  }
523
523
  const event = this.safeString(message, 'event');
524
524
  if (event === 'snapshot') {
525
525
  const snapshot = this.parseOrderBook(orderBook, symbol, timestamp, 'bid', 'ask');
526
- storedOrderBook.reset(snapshot);
526
+ orderbook.reset(snapshot);
527
527
  }
528
528
  else {
529
529
  const asks = this.safeValue(orderBook, 'ask', []);
530
530
  const bids = this.safeValue(orderBook, 'bid', []);
531
- this.handleDeltas(storedOrderBook['asks'], asks);
532
- this.handleDeltas(storedOrderBook['bids'], bids);
533
- storedOrderBook['timestamp'] = timestamp;
534
- storedOrderBook['datetime'] = this.iso8601(timestamp);
531
+ this.handleDeltas(orderbook['asks'], asks);
532
+ this.handleDeltas(orderbook['bids'], bids);
533
+ orderbook['timestamp'] = timestamp;
534
+ orderbook['datetime'] = this.iso8601(timestamp);
535
535
  }
536
- client.resolve(storedOrderBook, messageHash);
536
+ client.resolve(orderbook, messageHash);
537
537
  }
538
538
  handleDelta(bookside, delta) {
539
539
  const bidAsk = this.parseBidAsk(delta, 0, 1);
@@ -568,7 +568,8 @@ export default class exmo extends exmoRest {
568
568
  };
569
569
  const eventHandler = this.safeValue(events, event);
570
570
  if (eventHandler !== undefined) {
571
- return eventHandler.call(this, client, message);
571
+ eventHandler.call(this, client, message);
572
+ return;
572
573
  }
573
574
  if ((event === 'update') || (event === 'snapshot')) {
574
575
  const topic = this.safeString(message, 'topic');
@@ -590,7 +591,8 @@ export default class exmo extends exmoRest {
590
591
  };
591
592
  const handler = this.safeValue(handlers, channel);
592
593
  if (handler !== undefined) {
593
- return handler.call(this, client, message);
594
+ handler.call(this, client, message);
595
+ return;
594
596
  }
595
597
  }
596
598
  }
@@ -631,7 +633,7 @@ export default class exmo extends exmoRest {
631
633
  const messageHash = 'authenticated';
632
634
  client.resolve(message, messageHash);
633
635
  }
634
- authenticate(params = {}) {
636
+ async authenticate(params = {}) {
635
637
  const messageHash = 'authenticated';
636
638
  const [type, query] = this.handleMarketTypeAndParams('authenticate', undefined, params);
637
639
  const url = this.urls['api']['ws'][type];
@@ -210,7 +210,7 @@ export default class gate extends gateRest {
210
210
  // max limit is 100
211
211
  const subscription = client.subscriptions[messageHash];
212
212
  const limit = this.safeInteger(subscription, 'limit');
213
- this.spawn(this.loadOrderBook, client, messageHash, symbol, limit);
213
+ this.spawn(this.loadOrderBook, client, messageHash, symbol, limit, {}); // needed for c#, number of args needs to match
214
214
  }
215
215
  storedOrderBook.cache.push(delta);
216
216
  return;
@@ -20,6 +20,6 @@ export default class gemini extends geminiRest {
20
20
  parseWsOrderStatus(status: any): string;
21
21
  parseWsOrderType(type: any): string;
22
22
  handleError(client: Client, message: any): void;
23
- handleMessage(client: Client, message: any): any;
23
+ handleMessage(client: Client, message: any): void;
24
24
  authenticate(params?: {}): Promise<void>;
25
25
  }
@@ -591,7 +591,8 @@ export default class gemini extends geminiRest {
591
591
  //
592
592
  const isArray = Array.isArray(message);
593
593
  if (isArray) {
594
- return this.handleOrder(client, message);
594
+ this.handleOrder(client, message);
595
+ return;
595
596
  }
596
597
  const reason = this.safeString(message, 'reason');
597
598
  if (reason === 'error') {
@@ -605,7 +606,8 @@ export default class gemini extends geminiRest {
605
606
  };
606
607
  const type = this.safeString(message, 'type', '');
607
608
  if (type.indexOf('candles') >= 0) {
608
- return this.handleOHLCV(client, message);
609
+ this.handleOHLCV(client, message);
610
+ return;
609
611
  }
610
612
  const method = this.safeValue(methods, type);
611
613
  if (method !== undefined) {
@@ -5,7 +5,7 @@ import { Str, OrderBook, Order, Trade, Ticker, Balances } from '../base/types';
5
5
  export default class hitbtc extends hitbtcRest {
6
6
  describe(): any;
7
7
  authenticate(): Promise<any>;
8
- subscribePublic(name: string, symbols?: Strings, params?: {}): Promise<any>;
8
+ subscribePublic(name: string, messageHashPrefix: string, symbols?: Strings, params?: {}): Promise<any>;
9
9
  subscribePrivate(name: string, symbol?: Str, params?: {}): Promise<any>;
10
10
  tradeRequest(name: string, params?: {}): Promise<any>;
11
11
  watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -29,7 +29,7 @@ export default class hitbtc extends hitbtcRest {
29
29
  parseWsOrderTrade(trade: any, market?: any): Trade;
30
30
  parseWsOrder(order: any, market?: any): Order;
31
31
  watchBalance(params?: {}): Promise<Balances>;
32
- createOrderWs(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): Promise<Order>;
32
+ createOrderWs(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
33
33
  cancelOrderWs(id: string, symbol?: Str, params?: {}): Promise<Order>;
34
34
  cancelAllOrdersWs(symbol?: Str, params?: {}): Promise<any>;
35
35
  fetchOpenOrdersWs(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
@@ -118,7 +118,7 @@ export default class hitbtc extends hitbtcRest {
118
118
  }
119
119
  return future;
120
120
  }
121
- async subscribePublic(name, symbols = undefined, params = {}) {
121
+ async subscribePublic(name, messageHashPrefix, symbols = undefined, params = {}) {
122
122
  /**
123
123
  * @ignore
124
124
  * @method
@@ -128,7 +128,7 @@ export default class hitbtc extends hitbtcRest {
128
128
  */
129
129
  await this.loadMarkets();
130
130
  const url = this.urls['api']['ws']['public'];
131
- let messageHash = name;
131
+ let messageHash = messageHashPrefix;
132
132
  if (symbols !== undefined) {
133
133
  messageHash = messageHash + '::' + symbols.join(',');
134
134
  }
@@ -223,7 +223,7 @@ export default class hitbtc extends hitbtcRest {
223
223
  'symbols': [market['id']],
224
224
  },
225
225
  };
226
- const orderbook = await this.subscribePublic(name, [symbol], this.deepExtend(request, params));
226
+ const orderbook = await this.subscribePublic(name, name, [symbol], this.deepExtend(request, params));
227
227
  return orderbook.limit();
228
228
  }
229
229
  handleOrderBook(client, message) {
@@ -316,7 +316,7 @@ export default class hitbtc extends hitbtcRest {
316
316
  'symbols': [market['id']],
317
317
  },
318
318
  };
319
- const result = await this.subscribePublic(name, [symbol], this.deepExtend(request, params));
319
+ const result = await this.subscribePublic(name, 'ticker', [symbol], this.deepExtend(request, params));
320
320
  return this.safeValue(result, symbol);
321
321
  }
322
322
  async watchTickers(symbols = undefined, params = {}) {
@@ -352,7 +352,7 @@ export default class hitbtc extends hitbtcRest {
352
352
  'symbols': marketIds,
353
353
  },
354
354
  };
355
- const tickers = await this.subscribePublic(name, symbols, this.deepExtend(request, params));
355
+ const tickers = await this.subscribePublic(name, 'tickers', symbols, this.deepExtend(request, params));
356
356
  if (this.newUpdates) {
357
357
  return tickers;
358
358
  }
@@ -411,7 +411,7 @@ export default class hitbtc extends hitbtcRest {
411
411
  const messageHash = channel + '::' + symbol;
412
412
  client.resolve(newTickers, messageHash);
413
413
  }
414
- const messageHashes = this.findMessageHashes(client, channel + '::');
414
+ const messageHashes = this.findMessageHashes(client, 'tickers::');
415
415
  for (let i = 0; i < messageHashes.length; i++) {
416
416
  const messageHash = messageHashes[i];
417
417
  const parts = messageHash.split('::');
@@ -504,7 +504,8 @@ export default class hitbtc extends hitbtcRest {
504
504
  if (limit !== undefined) {
505
505
  request['limit'] = limit;
506
506
  }
507
- const trades = await this.subscribePublic('trades', [symbol], this.deepExtend(request, params));
507
+ const name = 'trades';
508
+ const trades = await this.subscribePublic(name, name, [symbol], this.deepExtend(request, params));
508
509
  if (this.newUpdates) {
509
510
  limit = trades.getLimit(symbol, limit);
510
511
  }
@@ -633,7 +634,7 @@ export default class hitbtc extends hitbtcRest {
633
634
  if (limit !== undefined) {
634
635
  request['params']['limit'] = limit;
635
636
  }
636
- const ohlcv = await this.subscribePublic(name, [symbol], this.deepExtend(request, params));
637
+ const ohlcv = await this.subscribePublic(name, name, [symbol], this.deepExtend(request, params));
637
638
  if (this.newUpdates) {
638
639
  limit = ohlcv.getLimit(symbol, limit);
639
640
  }
@@ -8,9 +8,9 @@ export default class hollaex extends hollaexRest {
8
8
  watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
9
9
  handleTrades(client: Client, message: any): void;
10
10
  watchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
11
- handleMyTrades(client: Client, message: any, subscription?: any): number;
11
+ handleMyTrades(client: Client, message: any, subscription?: any): void;
12
12
  watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
13
- handleOrder(client: Client, message: any, subscription?: any): number;
13
+ handleOrder(client: Client, message: any, subscription?: any): void;
14
14
  watchBalance(params?: {}): Promise<Balances>;
15
15
  handleBalance(client: Client, message: any): void;
16
16
  watchPublic(messageHash: any, params?: {}): Promise<any>;
@@ -221,7 +221,7 @@ export default class hollaex extends hollaexRest {
221
221
  // when the user does not have any trades yet
222
222
  const dataLength = rawTrades.length;
223
223
  if (dataLength === 0) {
224
- return 0;
224
+ return;
225
225
  }
226
226
  if (this.myTrades === undefined) {
227
227
  const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
@@ -335,7 +335,7 @@ export default class hollaex extends hollaexRest {
335
335
  // usually the first message is an empty array
336
336
  const dataLength = data.length;
337
337
  if (dataLength === 0) {
338
- return 0;
338
+ return;
339
339
  }
340
340
  if (this.orders === undefined) {
341
341
  const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
@@ -28,9 +28,9 @@ export default class htx extends htxRest {
28
28
  handlePositions(client: any, message: any): void;
29
29
  watchBalance(params?: {}): Promise<Balances>;
30
30
  handleBalance(client: Client, message: any): void;
31
- handleSubscriptionStatus(client: Client, message: any): any;
31
+ handleSubscriptionStatus(client: Client, message: any): void;
32
32
  handleSystemStatus(client: Client, message: any): any;
33
- handleSubject(client: Client, message: any): any;
33
+ handleSubject(client: Client, message: any): void;
34
34
  pong(client: any, message: any): Promise<void>;
35
35
  handlePing(client: Client, message: any): void;
36
36
  handleAuthenticate(client: Client, message: any): void;
package/js/src/pro/htx.js CHANGED
@@ -472,6 +472,7 @@ export default class htx extends htxRest {
472
472
  delete client.subscriptions[messageHash];
473
473
  client.reject(e, messageHash);
474
474
  }
475
+ return undefined;
475
476
  }
476
477
  handleDelta(bookside, delta) {
477
478
  const price = this.safeFloat(delta, 0);
@@ -1692,14 +1693,14 @@ export default class htx extends htxRest {
1692
1693
  if (subscription !== undefined) {
1693
1694
  const method = this.safeValue(subscription, 'method');
1694
1695
  if (method !== undefined) {
1695
- return method.call(this, client, message, subscription);
1696
+ method.call(this, client, message, subscription);
1697
+ return;
1696
1698
  }
1697
1699
  // clean up
1698
1700
  if (id in client.subscriptions) {
1699
1701
  delete client.subscriptions[id];
1700
1702
  }
1701
1703
  }
1702
- return message;
1703
1704
  }
1704
1705
  handleSystemStatus(client, message) {
1705
1706
  //
@@ -1808,11 +1809,9 @@ export default class htx extends htxRest {
1808
1809
  'kline': this.handleOHLCV,
1809
1810
  };
1810
1811
  const method = this.safeValue(methods, methodName);
1811
- if (method === undefined) {
1812
- return message;
1813
- }
1814
- else {
1815
- return method.call(this, client, message);
1812
+ if (method !== undefined) {
1813
+ method.call(this, client, message);
1814
+ return;
1816
1815
  }
1817
1816
  }
1818
1817
  // private spot subjects
@@ -20,7 +20,7 @@ export default class huobijp extends huobijpRest {
20
20
  handleOrderBookSubscription(client: Client, message: any, subscription: any): void;
21
21
  handleSubscriptionStatus(client: Client, message: any): any;
22
22
  handleSystemStatus(client: Client, message: any): any;
23
- handleSubject(client: Client, message: any): any;
23
+ handleSubject(client: Client, message: any): void;
24
24
  pong(client: any, message: any): Promise<void>;
25
25
  handlePing(client: Client, message: any): void;
26
26
  handleErrorMessage(client: Client, message: any): any;
@@ -364,6 +364,7 @@ export default class huobijp extends huobijpRest {
364
364
  delete client.subscriptions[messageHash];
365
365
  client.reject(e, messageHash);
366
366
  }
367
+ return undefined;
367
368
  }
368
369
  handleDelta(bookside, delta) {
369
370
  const price = this.safeFloat(delta, 0);
@@ -529,11 +530,8 @@ export default class huobijp extends huobijpRest {
529
530
  // ...
530
531
  };
531
532
  const method = this.safeValue(methods, methodName);
532
- if (method === undefined) {
533
- return message;
534
- }
535
- else {
536
- return method.call(this, client, message);
533
+ if (method !== undefined) {
534
+ method.call(this, client, message);
537
535
  }
538
536
  }
539
537
  }
@@ -327,7 +327,7 @@ export default class idex extends idexRest {
327
327
  const symbol = this.safeSymbol(marketId);
328
328
  if (!(symbol in this.orderbooks)) {
329
329
  const orderbook = this.countedOrderBook({});
330
- orderbook.cache = [];
330
+ // orderbook.cache = []; // cache is never used?
331
331
  this.orderbooks[symbol] = orderbook;
332
332
  }
333
333
  this.spawn(this.fetchOrderBookSnapshot, client, symbol);
@@ -13,5 +13,5 @@ export default class independentreserve extends independentreserveRest {
13
13
  handleDeltas(bookside: any, deltas: any): void;
14
14
  handleHeartbeat(client: Client, message: any): any;
15
15
  handleSubscriptions(client: Client, message: any): any;
16
- handleMessage(client: Client, message: any): any;
16
+ handleMessage(client: Client, message: any): void;
17
17
  }