ccxt 4.2.31 → 4.2.34

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 (298) 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 +639 -483
  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 +54 -20
  12. package/dist/cjs/src/bigone.js +21 -1
  13. package/dist/cjs/src/binance.js +5 -4
  14. package/dist/cjs/src/bingx.js +4 -3
  15. package/dist/cjs/src/bit2c.js +12 -0
  16. package/dist/cjs/src/bitget.js +3 -3
  17. package/dist/cjs/src/bitmart.js +1 -1
  18. package/dist/cjs/src/bitrue.js +3 -3
  19. package/dist/cjs/src/blockchaincom.js +1 -1
  20. package/dist/cjs/src/bybit.js +1 -1
  21. package/dist/cjs/src/coinbase.js +2 -2
  22. package/dist/cjs/src/coinex.js +1 -1
  23. package/dist/cjs/src/cryptocom.js +10 -10
  24. package/dist/cjs/src/gate.js +34 -29
  25. package/dist/cjs/src/kraken.js +39 -0
  26. package/dist/cjs/src/kucoin.js +1 -1
  27. package/dist/cjs/src/mexc.js +2 -1
  28. package/dist/cjs/src/okx.js +4 -3
  29. package/dist/cjs/src/phemex.js +8 -8
  30. package/dist/cjs/src/pro/alpaca.js +8 -4
  31. package/dist/cjs/src/pro/ascendex.js +1 -2
  32. package/dist/cjs/src/pro/binance.js +14 -10
  33. package/dist/cjs/src/pro/bingx.js +1 -1
  34. package/dist/cjs/src/pro/bitfinex.js +21 -24
  35. package/dist/cjs/src/pro/bitfinex2.js +13 -17
  36. package/dist/cjs/src/pro/bitget.js +3 -1
  37. package/dist/cjs/src/pro/bitmart.js +3 -8
  38. package/dist/cjs/src/pro/bitmex.js +4 -7
  39. package/dist/cjs/src/pro/bitopro.js +2 -5
  40. package/dist/cjs/src/pro/bitrue.js +1 -1
  41. package/dist/cjs/src/pro/bitstamp.js +2 -3
  42. package/dist/cjs/src/pro/bitvavo.js +12 -5
  43. package/dist/cjs/src/pro/blockchaincom.js +22 -23
  44. package/dist/cjs/src/pro/bybit.js +5 -5
  45. package/dist/cjs/src/pro/cex.js +7 -7
  46. package/dist/cjs/src/pro/coinbase.js +3 -2
  47. package/dist/cjs/src/pro/coinbasepro.js +1 -1
  48. package/dist/cjs/src/pro/coinex.js +15 -13
  49. package/dist/cjs/src/pro/currencycom.js +5 -7
  50. package/dist/cjs/src/pro/deribit.js +4 -4
  51. package/dist/cjs/src/pro/exmo.js +15 -13
  52. package/dist/cjs/src/pro/gate.js +1 -1
  53. package/dist/cjs/src/pro/gemini.js +4 -2
  54. package/dist/cjs/src/pro/hitbtc.js +9 -8
  55. package/dist/cjs/src/pro/hollaex.js +2 -2
  56. package/dist/cjs/src/pro/htx.js +6 -7
  57. package/dist/cjs/src/pro/huobijp.js +3 -5
  58. package/dist/cjs/src/pro/idex.js +1 -1
  59. package/dist/cjs/src/pro/independentreserve.js +14 -13
  60. package/dist/cjs/src/pro/kraken.js +10 -16
  61. package/dist/cjs/src/pro/krakenfutures.js +10 -6
  62. package/dist/cjs/src/pro/kucoin.js +10 -11
  63. package/dist/cjs/src/pro/kucoinfutures.js +12 -11
  64. package/dist/cjs/src/pro/lbank.js +10 -10
  65. package/dist/cjs/src/pro/luno.js +12 -14
  66. package/dist/cjs/src/pro/mexc.js +3 -2
  67. package/dist/cjs/src/pro/ndax.js +7 -13
  68. package/dist/cjs/src/pro/okcoin.js +7 -12
  69. package/dist/cjs/src/pro/okx.js +6 -11
  70. package/dist/cjs/src/pro/onetrading.js +16 -15
  71. package/dist/cjs/src/pro/p2b.js +5 -3
  72. package/dist/cjs/src/pro/phemex.js +16 -11
  73. package/dist/cjs/src/pro/poloniex.js +6 -4
  74. package/dist/cjs/src/pro/poloniexfutures.js +14 -9
  75. package/dist/cjs/src/pro/probit.js +15 -11
  76. package/dist/cjs/src/pro/upbit.js +8 -8
  77. package/dist/cjs/src/pro/wazirx.js +6 -3
  78. package/dist/cjs/src/pro/woo.js +8 -6
  79. package/dist/cjs/src/probit.js +3 -3
  80. package/dist/cjs/src/tokocrypto.js +2 -2
  81. package/dist/cjs/src/wavesexchange.js +2 -1
  82. package/dist/cjs/src/woo.js +1 -1
  83. package/dist/cjs/src/yobit.js +39 -0
  84. package/js/ccxt.d.ts +1 -1
  85. package/js/ccxt.js +1 -1
  86. package/js/src/ace.d.ts +1 -1
  87. package/js/src/ace.js +3 -2
  88. package/js/src/alpaca.d.ts +1 -1
  89. package/js/src/ascendex.d.ts +5 -15
  90. package/js/src/ascendex.js +1 -1
  91. package/js/src/base/Exchange.d.ts +87 -78
  92. package/js/src/base/Exchange.js +54 -20
  93. package/js/src/base/types.d.ts +90 -6
  94. package/js/src/bigone.d.ts +5 -15
  95. package/js/src/bigone.js +21 -1
  96. package/js/src/binance.d.ts +13 -23
  97. package/js/src/binance.js +5 -4
  98. package/js/src/bingx.d.ts +6 -16
  99. package/js/src/bingx.js +4 -3
  100. package/js/src/bit2c.d.ts +1 -1
  101. package/js/src/bit2c.js +12 -0
  102. package/js/src/bitbank.d.ts +2 -2
  103. package/js/src/bitbns.d.ts +1 -1
  104. package/js/src/bitfinex.d.ts +5 -5
  105. package/js/src/bitfinex2.d.ts +7 -17
  106. package/js/src/bitflyer.d.ts +5 -5
  107. package/js/src/bitforex.d.ts +1 -1
  108. package/js/src/bitget.d.ts +8 -38
  109. package/js/src/bitget.js +3 -3
  110. package/js/src/bithumb.d.ts +2 -2
  111. package/js/src/bitmart.d.ts +10 -21
  112. package/js/src/bitmart.js +1 -1
  113. package/js/src/bitmex.d.ts +3 -3
  114. package/js/src/bitopro.d.ts +2 -2
  115. package/js/src/bitrue.d.ts +5 -15
  116. package/js/src/bitrue.js +3 -3
  117. package/js/src/bitso.d.ts +4 -4
  118. package/js/src/bitstamp.d.ts +2 -2
  119. package/js/src/bitteam.d.ts +1 -1
  120. package/js/src/bitvavo.d.ts +3 -3
  121. package/js/src/bl3p.d.ts +1 -1
  122. package/js/src/blockchaincom.d.ts +2 -2
  123. package/js/src/blockchaincom.js +1 -1
  124. package/js/src/btcalpha.d.ts +1 -1
  125. package/js/src/btcbox.d.ts +1 -1
  126. package/js/src/btcmarkets.d.ts +3 -3
  127. package/js/src/btcturk.d.ts +1 -1
  128. package/js/src/bybit.d.ts +8 -8
  129. package/js/src/bybit.js +1 -1
  130. package/js/src/cex.d.ts +1 -1
  131. package/js/src/coinbase.d.ts +6 -50
  132. package/js/src/coinbase.js +2 -2
  133. package/js/src/coinbasepro.d.ts +2 -2
  134. package/js/src/coincheck.d.ts +1 -1
  135. package/js/src/coinex.d.ts +8 -8
  136. package/js/src/coinex.js +1 -1
  137. package/js/src/coinlist.d.ts +4 -14
  138. package/js/src/coinmate.d.ts +2 -2
  139. package/js/src/coinmetro.d.ts +2 -2
  140. package/js/src/coinone.d.ts +1 -1
  141. package/js/src/coinsph.d.ts +2 -2
  142. package/js/src/coinspot.d.ts +1 -1
  143. package/js/src/cryptocom.d.ts +4 -4
  144. package/js/src/cryptocom.js +10 -10
  145. package/js/src/currencycom.d.ts +2 -2
  146. package/js/src/delta.d.ts +2 -2
  147. package/js/src/deribit.d.ts +4 -14
  148. package/js/src/digifinex.d.ts +10 -38
  149. package/js/src/exmo.d.ts +2 -2
  150. package/js/src/gate.d.ts +8 -18
  151. package/js/src/gate.js +34 -29
  152. package/js/src/gemini.d.ts +2 -2
  153. package/js/src/hitbtc.d.ts +6 -16
  154. package/js/src/hollaex.d.ts +2 -2
  155. package/js/src/htx.d.ts +11 -21
  156. package/js/src/huobijp.d.ts +4 -4
  157. package/js/src/idex.d.ts +3 -3
  158. package/js/src/independentreserve.d.ts +2 -2
  159. package/js/src/indodax.d.ts +2 -2
  160. package/js/src/kraken.d.ts +5 -5
  161. package/js/src/kraken.js +39 -0
  162. package/js/src/krakenfutures.d.ts +7 -7
  163. package/js/src/kucoin.d.ts +8 -29
  164. package/js/src/kucoin.js +1 -1
  165. package/js/src/kucoinfutures.d.ts +4 -4
  166. package/js/src/kuna.d.ts +2 -2
  167. package/js/src/latoken.d.ts +4 -14
  168. package/js/src/lbank.d.ts +2 -5
  169. package/js/src/luno.d.ts +1 -1
  170. package/js/src/lykke.d.ts +2 -2
  171. package/js/src/mercado.d.ts +2 -2
  172. package/js/src/mexc.d.ts +6 -6
  173. package/js/src/mexc.js +2 -1
  174. package/js/src/ndax.d.ts +2 -2
  175. package/js/src/novadax.d.ts +4 -15
  176. package/js/src/oceanex.d.ts +1 -1
  177. package/js/src/okcoin.d.ts +5 -15
  178. package/js/src/okx.d.ts +8 -18
  179. package/js/src/okx.js +4 -3
  180. package/js/src/onetrading.d.ts +2 -2
  181. package/js/src/p2b.d.ts +1 -1
  182. package/js/src/paymium.d.ts +3 -13
  183. package/js/src/phemex.d.ts +5 -5
  184. package/js/src/phemex.js +8 -8
  185. package/js/src/poloniex.d.ts +4 -14
  186. package/js/src/poloniexfutures.d.ts +1 -1
  187. package/js/src/pro/alpaca.d.ts +2 -2
  188. package/js/src/pro/alpaca.js +8 -4
  189. package/js/src/pro/ascendex.d.ts +2 -2
  190. package/js/src/pro/ascendex.js +1 -2
  191. package/js/src/pro/binance.d.ts +3 -3
  192. package/js/src/pro/binance.js +14 -10
  193. package/js/src/pro/bingx.d.ts +1 -1
  194. package/js/src/pro/bingx.js +1 -1
  195. package/js/src/pro/bitfinex.d.ts +2 -2
  196. package/js/src/pro/bitfinex.js +21 -24
  197. package/js/src/pro/bitfinex2.d.ts +2 -2
  198. package/js/src/pro/bitfinex2.js +13 -17
  199. package/js/src/pro/bitget.js +3 -1
  200. package/js/src/pro/bitmart.d.ts +3 -3
  201. package/js/src/pro/bitmart.js +3 -8
  202. package/js/src/pro/bitmex.d.ts +1 -1
  203. package/js/src/pro/bitmex.js +4 -7
  204. package/js/src/pro/bitopro.d.ts +1 -1
  205. package/js/src/pro/bitopro.js +2 -5
  206. package/js/src/pro/bitrue.js +1 -1
  207. package/js/src/pro/bitstamp.d.ts +1 -1
  208. package/js/src/pro/bitstamp.js +2 -3
  209. package/js/src/pro/bitvavo.d.ts +3 -3
  210. package/js/src/pro/bitvavo.js +12 -5
  211. package/js/src/pro/blockchaincom.d.ts +8 -8
  212. package/js/src/pro/blockchaincom.js +22 -23
  213. package/js/src/pro/bybit.d.ts +2 -2
  214. package/js/src/pro/bybit.js +5 -5
  215. package/js/src/pro/cex.d.ts +1 -1
  216. package/js/src/pro/cex.js +7 -7
  217. package/js/src/pro/coinbase.d.ts +1 -1
  218. package/js/src/pro/coinbase.js +3 -2
  219. package/js/src/pro/coinbasepro.d.ts +1 -1
  220. package/js/src/pro/coinbasepro.js +1 -1
  221. package/js/src/pro/coinex.d.ts +2 -2
  222. package/js/src/pro/coinex.js +15 -13
  223. package/js/src/pro/currencycom.d.ts +1 -1
  224. package/js/src/pro/currencycom.js +5 -7
  225. package/js/src/pro/deribit.d.ts +2 -2
  226. package/js/src/pro/deribit.js +4 -4
  227. package/js/src/pro/exmo.d.ts +2 -2
  228. package/js/src/pro/exmo.js +15 -13
  229. package/js/src/pro/gate.js +1 -1
  230. package/js/src/pro/gemini.d.ts +1 -1
  231. package/js/src/pro/gemini.js +4 -2
  232. package/js/src/pro/hitbtc.d.ts +2 -2
  233. package/js/src/pro/hitbtc.js +9 -8
  234. package/js/src/pro/hollaex.d.ts +2 -2
  235. package/js/src/pro/hollaex.js +2 -2
  236. package/js/src/pro/htx.d.ts +2 -2
  237. package/js/src/pro/htx.js +6 -7
  238. package/js/src/pro/huobijp.d.ts +1 -1
  239. package/js/src/pro/huobijp.js +3 -5
  240. package/js/src/pro/idex.js +1 -1
  241. package/js/src/pro/independentreserve.d.ts +1 -1
  242. package/js/src/pro/independentreserve.js +14 -13
  243. package/js/src/pro/kraken.d.ts +2 -2
  244. package/js/src/pro/kraken.js +10 -16
  245. package/js/src/pro/krakenfutures.d.ts +1 -1
  246. package/js/src/pro/krakenfutures.js +10 -6
  247. package/js/src/pro/kucoin.d.ts +3 -3
  248. package/js/src/pro/kucoin.js +10 -11
  249. package/js/src/pro/kucoinfutures.d.ts +3 -3
  250. package/js/src/pro/kucoinfutures.js +12 -11
  251. package/js/src/pro/lbank.d.ts +1 -1
  252. package/js/src/pro/lbank.js +10 -10
  253. package/js/src/pro/luno.d.ts +2 -2
  254. package/js/src/pro/luno.js +12 -14
  255. package/js/src/pro/mexc.d.ts +2 -2
  256. package/js/src/pro/mexc.js +3 -2
  257. package/js/src/pro/ndax.d.ts +3 -3
  258. package/js/src/pro/ndax.js +7 -13
  259. package/js/src/pro/okcoin.d.ts +1 -1
  260. package/js/src/pro/okcoin.js +7 -12
  261. package/js/src/pro/okx.d.ts +1 -1
  262. package/js/src/pro/okx.js +6 -11
  263. package/js/src/pro/onetrading.d.ts +1 -1
  264. package/js/src/pro/onetrading.js +16 -15
  265. package/js/src/pro/p2b.d.ts +1 -1
  266. package/js/src/pro/p2b.js +5 -3
  267. package/js/src/pro/phemex.d.ts +3 -3
  268. package/js/src/pro/phemex.js +16 -11
  269. package/js/src/pro/poloniex.d.ts +1 -1
  270. package/js/src/pro/poloniex.js +6 -4
  271. package/js/src/pro/poloniexfutures.d.ts +4 -4
  272. package/js/src/pro/poloniexfutures.js +13 -10
  273. package/js/src/pro/probit.d.ts +1 -1
  274. package/js/src/pro/probit.js +14 -12
  275. package/js/src/pro/upbit.js +8 -8
  276. package/js/src/pro/wazirx.d.ts +1 -1
  277. package/js/src/pro/wazirx.js +6 -3
  278. package/js/src/pro/woo.d.ts +3 -3
  279. package/js/src/pro/woo.js +8 -6
  280. package/js/src/probit.d.ts +3 -3
  281. package/js/src/probit.js +3 -3
  282. package/js/src/timex.d.ts +1 -1
  283. package/js/src/tokocrypto.d.ts +3 -3
  284. package/js/src/tokocrypto.js +2 -2
  285. package/js/src/upbit.d.ts +2 -2
  286. package/js/src/wavesexchange.d.ts +3 -4
  287. package/js/src/wavesexchange.js +2 -1
  288. package/js/src/wazirx.d.ts +1 -1
  289. package/js/src/whitebit.d.ts +5 -15
  290. package/js/src/woo.d.ts +5 -15
  291. package/js/src/woo.js +1 -1
  292. package/js/src/yobit.d.ts +21 -6
  293. package/js/src/yobit.js +39 -0
  294. package/js/src/zaif.d.ts +2 -2
  295. package/js/src/zonda.d.ts +4 -14
  296. package/package.json +22 -8
  297. package/skip-tests.json +9 -1
  298. package/tests-manager.sh +1 -2
@@ -478,7 +478,7 @@ export default class okcoin extends okcoinRest {
478
478
  };
479
479
  this.spawn(this.watch, url, messageHash, request, messageHash, future);
480
480
  }
481
- return await future;
481
+ return future;
482
482
  }
483
483
  async watchBalance(params = {}) {
484
484
  /**
@@ -711,7 +711,8 @@ export default class okcoin extends okcoinRest {
711
711
  // }
712
712
  //
713
713
  if (message === 'pong') {
714
- return this.handlePong(client, message);
714
+ this.handlePong(client, message);
715
+ return;
715
716
  }
716
717
  const table = this.safeString(message, 'table');
717
718
  if (table === undefined) {
@@ -724,11 +725,8 @@ export default class okcoin extends okcoinRest {
724
725
  'subscribe': this.handleSubscriptionStatus,
725
726
  };
726
727
  const method = this.safeValue(methods, event);
727
- if (method === undefined) {
728
- return message;
729
- }
730
- else {
731
- return method.call(this, client, message);
728
+ if (method !== undefined) {
729
+ method.call(this, client, message);
732
730
  }
733
731
  }
734
732
  }
@@ -750,11 +748,8 @@ export default class okcoin extends okcoinRest {
750
748
  if (name.indexOf('candle') >= 0) {
751
749
  method = this.handleOHLCV;
752
750
  }
753
- if (method === undefined) {
754
- return message;
755
- }
756
- else {
757
- return method.call(this, client, message);
751
+ if (method !== undefined) {
752
+ method.call(this, client, message);
758
753
  }
759
754
  }
760
755
  }
@@ -43,5 +43,5 @@ export default class okx extends okxRest {
43
43
  ping(client: any): string;
44
44
  handlePong(client: Client, message: any): any;
45
45
  handleErrorMessage(client: Client, message: any): any;
46
- handleMessage(client: Client, message: any): any;
46
+ handleMessage(client: Client, message: any): void;
47
47
  }
package/js/src/pro/okx.js CHANGED
@@ -758,7 +758,7 @@ export default class okx extends okxRest {
758
758
  const message = this.extend(request, params);
759
759
  this.watch(url, messageHash, message, messageHash);
760
760
  }
761
- return future;
761
+ return await future;
762
762
  }
763
763
  async watchBalance(params = {}) {
764
764
  /**
@@ -1564,7 +1564,8 @@ export default class okx extends okxRest {
1564
1564
  //
1565
1565
  //
1566
1566
  if (message === 'pong') {
1567
- return this.handlePong(client, message);
1567
+ this.handlePong(client, message);
1568
+ return;
1568
1569
  }
1569
1570
  // const table = this.safeString (message, 'table');
1570
1571
  // if (table === undefined) {
@@ -1583,11 +1584,8 @@ export default class okx extends okxRest {
1583
1584
  'mass-cancel': this.handleCancelAllOrders,
1584
1585
  };
1585
1586
  const method = this.safeValue(methods, event);
1586
- if (method === undefined) {
1587
- return message;
1588
- }
1589
- else {
1590
- return method.call(this, client, message);
1587
+ if (method !== undefined) {
1588
+ method.call(this, client, message);
1591
1589
  }
1592
1590
  }
1593
1591
  else {
@@ -1615,12 +1613,9 @@ export default class okx extends okxRest {
1615
1613
  if (channel.indexOf('candle') === 0) {
1616
1614
  this.handleOHLCV(client, message);
1617
1615
  }
1618
- else {
1619
- return message;
1620
- }
1621
1616
  }
1622
1617
  else {
1623
- return method.call(this, client, message);
1618
+ method.call(this, client, message);
1624
1619
  }
1625
1620
  }
1626
1621
  }
@@ -28,7 +28,7 @@ export default class onetrading extends onetradingRest {
28
28
  handleSubscriptions(client: Client, message: any): any;
29
29
  handleHeartbeat(client: Client, message: any): any;
30
30
  handleErrorMessage(client: Client, message: any): void;
31
- handleMessage(client: Client, message: any): any;
31
+ handleMessage(client: Client, message: any): void;
32
32
  handlePricePointUpdates(client: Client, message: any): any;
33
33
  handleAuthenticationMessage(client: Client, message: any): any;
34
34
  watchMany(messageHash: any, request: any, subscriptionHash: any, symbols?: Strings, params?: {}): Promise<any>;
@@ -365,26 +365,26 @@ export default class onetrading extends onetradingRest {
365
365
  const dateTime = this.safeString(message, 'time');
366
366
  const timestamp = this.parse8601(dateTime);
367
367
  const channel = 'book:' + symbol;
368
- let storedOrderBook = this.safeValue(this.orderbooks, symbol);
369
- if (storedOrderBook === undefined) {
370
- storedOrderBook = this.orderBook({});
368
+ let orderbook = this.safeValue(this.orderbooks, symbol);
369
+ if (orderbook === undefined) {
370
+ orderbook = this.orderBook({});
371
371
  }
372
372
  if (type === 'ORDER_BOOK_SNAPSHOT') {
373
373
  const snapshot = this.parseOrderBook(message, symbol, timestamp, 'bids', 'asks');
374
- storedOrderBook.reset(snapshot);
374
+ orderbook.reset(snapshot);
375
375
  }
376
376
  else if (type === 'ORDER_BOOK_UPDATE') {
377
377
  const changes = this.safeValue(message, 'changes', []);
378
- this.handleDeltas(storedOrderBook, changes);
378
+ this.handleDeltas(orderbook, changes);
379
379
  }
380
380
  else {
381
381
  throw new NotSupported(this.id + ' watchOrderBook() did not recognize message type ' + type);
382
382
  }
383
- storedOrderBook['nonce'] = timestamp;
384
- storedOrderBook['timestamp'] = timestamp;
385
- storedOrderBook['datetime'] = this.iso8601(timestamp);
386
- this.orderbooks[symbol] = storedOrderBook;
387
- client.resolve(storedOrderBook, channel);
383
+ orderbook['nonce'] = timestamp;
384
+ orderbook['timestamp'] = timestamp;
385
+ orderbook['datetime'] = this.iso8601(timestamp);
386
+ this.orderbooks[symbol] = orderbook;
387
+ client.resolve(orderbook, channel);
388
388
  }
389
389
  handleDelta(orderbook, delta) {
390
390
  //
@@ -970,13 +970,14 @@ export default class onetrading extends onetradingRest {
970
970
  if (updateType === 'ORDER_CLOSED' && filled === 0) {
971
971
  status = 'canceled';
972
972
  }
973
- orders.append({
973
+ const orderObject = {
974
974
  'id': orderId,
975
975
  'symbol': symbol,
976
976
  'status': status,
977
977
  'timestamp': this.parse8601(datetime),
978
978
  'datetime': datetime,
979
- });
979
+ };
980
+ orders.append(orderObject);
980
981
  }
981
982
  else {
982
983
  const parsed = this.parseOrder(update);
@@ -1213,7 +1214,8 @@ export default class onetrading extends onetradingRest {
1213
1214
  handleMessage(client, message) {
1214
1215
  const error = this.safeValue(message, 'error');
1215
1216
  if (error !== undefined) {
1216
- return this.handleErrorMessage(client, message);
1217
+ this.handleErrorMessage(client, message);
1218
+ return;
1217
1219
  }
1218
1220
  const type = this.safeValue(message, 'type');
1219
1221
  const handlers = {
@@ -1244,9 +1246,8 @@ export default class onetrading extends onetradingRest {
1244
1246
  };
1245
1247
  const handler = this.safeValue(handlers, type);
1246
1248
  if (handler !== undefined) {
1247
- return handler.call(this, client, message);
1249
+ handler.call(this, client, message);
1248
1250
  }
1249
- throw new NotSupported(this.id + ' no handler found for this message ' + this.json(message));
1250
1251
  }
1251
1252
  handlePricePointUpdates(client, message) {
1252
1253
  //
@@ -12,7 +12,7 @@ export default class p2b extends p2bRest {
12
12
  handleTrade(client: Client, message: any): any;
13
13
  handleTicker(client: Client, message: any): any;
14
14
  handleOrderBook(client: Client, message: any): void;
15
- handleMessage(client: Client, message: any): any;
15
+ handleMessage(client: Client, message: any): void;
16
16
  handleErrorMessage(client: Client, message: any): boolean;
17
17
  ping(client: any): {
18
18
  method: string;
package/js/src/pro/p2b.js CHANGED
@@ -365,7 +365,8 @@ export default class p2b extends p2bRest {
365
365
  const bid = this.safeValue(bids, i);
366
366
  const price = this.safeNumber(bid, 0);
367
367
  const amount = this.safeNumber(bid, 1);
368
- orderbook['bids'].store(price, amount);
368
+ const bookSide = orderbook['bids'];
369
+ bookSide.store(price, amount);
369
370
  }
370
371
  }
371
372
  if (asks !== undefined) {
@@ -373,7 +374,8 @@ export default class p2b extends p2bRest {
373
374
  const ask = this.safeValue(asks, i);
374
375
  const price = this.safeNumber(ask, 0);
375
376
  const amount = this.safeNumber(ask, 1);
376
- orderbook['asks'].store(price, amount);
377
+ const bookside = orderbook['asks'];
378
+ bookside.store(price, amount);
377
379
  }
378
380
  }
379
381
  orderbook['symbol'] = symbol;
@@ -398,7 +400,7 @@ export default class p2b extends p2bRest {
398
400
  };
399
401
  const endpoint = this.safeValue(methods, method);
400
402
  if (endpoint !== undefined) {
401
- return endpoint.call(this, client, message);
403
+ endpoint.call(this, client, message);
402
404
  }
403
405
  }
404
406
  handleErrorMessage(client, message) {
@@ -61,15 +61,15 @@ export default class phemex extends phemexRest {
61
61
  watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
62
62
  watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
63
63
  watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
64
- handleDelta(bookside: any, delta: any, market?: any): void;
65
- handleDeltas(bookside: any, deltas: any, market?: any): void;
64
+ customHandleDelta(bookside: any, delta: any, market?: any): void;
65
+ customHandleDeltas(bookside: any, deltas: any, market?: any): void;
66
66
  handleOrderBook(client: Client, message: any): void;
67
67
  watchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
68
68
  handleMyTrades(client: Client, message: any): void;
69
69
  watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
70
70
  handleOrders(client: Client, message: any): void;
71
71
  parseWSSwapOrder(order: any, market?: any): Order;
72
- handleMessage(client: Client, message: any): any;
72
+ handleMessage(client: Client, message: any): void;
73
73
  handleAuthenticate(client: Client, message: any): void;
74
74
  subscribePrivate(type: any, messageHash: any, params?: {}): Promise<any>;
75
75
  authenticate(params?: {}): Promise<any>;
@@ -633,13 +633,13 @@ export default class phemex extends phemexRest {
633
633
  }
634
634
  return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
635
635
  }
636
- handleDelta(bookside, delta, market = undefined) {
636
+ customHandleDelta(bookside, delta, market = undefined) {
637
637
  const bidAsk = this.customParseBidAsk(delta, 0, 1, market);
638
638
  bookside.storeArray(bidAsk);
639
639
  }
640
- handleDeltas(bookside, deltas, market = undefined) {
640
+ customHandleDeltas(bookside, deltas, market = undefined) {
641
641
  for (let i = 0; i < deltas.length; i++) {
642
- this.handleDelta(bookside, deltas[i], market);
642
+ this.customHandleDelta(bookside, deltas[i], market);
643
643
  }
644
644
  }
645
645
  handleOrderBook(client, message) {
@@ -709,8 +709,8 @@ export default class phemex extends phemexRest {
709
709
  const changes = this.safeValue2(message, 'book', 'orderbook_p', {});
710
710
  const asks = this.safeValue(changes, 'asks', []);
711
711
  const bids = this.safeValue(changes, 'bids', []);
712
- this.handleDeltas(orderbook['asks'], asks, market);
713
- this.handleDeltas(orderbook['bids'], bids, market);
712
+ this.customHandleDeltas(orderbook['asks'], asks, market);
713
+ this.customHandleDeltas(orderbook['bids'], bids, market);
714
714
  orderbook['nonce'] = nonce;
715
715
  orderbook['timestamp'] = timestamp;
716
716
  orderbook['datetime'] = this.iso8601(timestamp);
@@ -1406,21 +1406,26 @@ export default class phemex extends phemexRest {
1406
1406
  const method = client.subscriptions[id];
1407
1407
  delete client.subscriptions[id];
1408
1408
  if (method !== true) {
1409
- return method.call(this, client, message);
1409
+ method.call(this, client, message);
1410
+ return;
1410
1411
  }
1411
1412
  }
1412
1413
  const methodName = this.safeString(message, 'method', '');
1413
1414
  if (('market24h' in message) || ('spot_market24h' in message) || (methodName.indexOf('perp_market24h_pack_p') >= 0)) {
1414
- return this.handleTicker(client, message);
1415
+ this.handleTicker(client, message);
1416
+ return;
1415
1417
  }
1416
1418
  else if (('trades' in message) || ('trades_p' in message)) {
1417
- return this.handleTrades(client, message);
1419
+ this.handleTrades(client, message);
1420
+ return;
1418
1421
  }
1419
1422
  else if (('kline' in message) || ('kline_p' in message)) {
1420
- return this.handleOHLCV(client, message);
1423
+ this.handleOHLCV(client, message);
1424
+ return;
1421
1425
  }
1422
1426
  else if (('book' in message) || ('orderbook_p' in message)) {
1423
- return this.handleOrderBook(client, message);
1427
+ this.handleOrderBook(client, message);
1428
+ return;
1424
1429
  }
1425
1430
  if (('orders' in message) || ('orders_p' in message)) {
1426
1431
  const orders = this.safeValue2(message, 'orders', 'orders_p', {});
@@ -1507,6 +1512,6 @@ export default class phemex extends phemexRest {
1507
1512
  future = this.watch(url, messageHash, message);
1508
1513
  client.subscriptions[messageHash] = future;
1509
1514
  }
1510
- return await future;
1515
+ return future;
1511
1516
  }
1512
1517
  }
@@ -33,7 +33,7 @@ export default class poloniex extends poloniexRest {
33
33
  parseWsBalance(response: any): Balances;
34
34
  handleMyTrades(client: Client, parsedTrade: any): void;
35
35
  handlePong(client: Client): void;
36
- handleMessage(client: Client, message: any): any;
36
+ handleMessage(client: Client, message: any): void;
37
37
  handleErrorMessage(client: Client, message: any): boolean;
38
38
  handleAuthenticate(client: Client, message: any): any;
39
39
  ping(client: any): {
@@ -1042,7 +1042,8 @@ export default class poloniex extends poloniexRest {
1042
1042
  const bid = this.safeValue(bids, j);
1043
1043
  const price = this.safeNumber(bid, 0);
1044
1044
  const amount = this.safeNumber(bid, 1);
1045
- orderbook['bids'].store(price, amount);
1045
+ const bidsSide = orderbook['bids'];
1046
+ bidsSide.store(price, amount);
1046
1047
  }
1047
1048
  }
1048
1049
  if (asks !== undefined) {
@@ -1050,7 +1051,8 @@ export default class poloniex extends poloniexRest {
1050
1051
  const ask = this.safeValue(asks, j);
1051
1052
  const price = this.safeNumber(ask, 0);
1052
1053
  const amount = this.safeNumber(ask, 1);
1053
- orderbook['asks'].store(price, amount);
1054
+ const asksSide = orderbook['asks'];
1055
+ asksSide.store(price, amount);
1054
1056
  }
1055
1057
  }
1056
1058
  orderbook['symbol'] = symbol;
@@ -1184,14 +1186,14 @@ export default class poloniex extends poloniexRest {
1184
1186
  this.handleErrorMessage(client, item);
1185
1187
  }
1186
1188
  else {
1187
- return this.handleOrderRequest(client, message);
1189
+ this.handleOrderRequest(client, message);
1188
1190
  }
1189
1191
  }
1190
1192
  else {
1191
1193
  const data = this.safeValue(message, 'data', []);
1192
1194
  const dataLength = data.length;
1193
1195
  if (dataLength > 0) {
1194
- return method.call(this, client, message);
1196
+ method.call(this, client, message);
1195
1197
  }
1196
1198
  }
1197
1199
  }
@@ -3,7 +3,7 @@ import type { Int, Str, OrderBook, Order, Trade, Ticker, Balances } from '../bas
3
3
  import Client from '../base/ws/Client.js';
4
4
  export default class poloniexfutures extends poloniexfuturesRest {
5
5
  describe(): any;
6
- negotiate(privateChannel: any, params?: {}): any;
6
+ negotiate(privateChannel: any, params?: {}): Promise<any>;
7
7
  negotiateHelper(privateChannel: any, params?: {}): Promise<string>;
8
8
  requestId(): any;
9
9
  subscribe(name: string, isPrivate: boolean, symbol?: Str, subscription?: any, params?: {}): Promise<any>;
@@ -24,7 +24,7 @@ export default class poloniexfutures extends poloniexfuturesRest {
24
24
  parseOrderStatus(status: string, type: string): string;
25
25
  parseWsOrder(order: any, market?: any): Order;
26
26
  handleTicker(client: Client, message: any): any;
27
- handleL3OrderBook(client: Client, message: any): any;
27
+ handleL3OrderBook(client: Client, message: any): void;
28
28
  handleLevel2(client: Client, message: any): void;
29
29
  handleL2OrderBook(client: Client, message: any): void;
30
30
  handeL2Snapshot(client: Client, message: any): void;
@@ -34,13 +34,13 @@ export default class poloniexfutures extends poloniexfuturesRest {
34
34
  handleBalance(client: Client, message: any): any;
35
35
  parseWsBalance(response: any): Balances;
36
36
  handleSystemStatus(client: Client, message: any): any;
37
- handleSubject(client: Client, message: any): any;
37
+ handleSubject(client: Client, message: any): void;
38
38
  ping(client: Client): {
39
39
  id: any;
40
40
  type: string;
41
41
  };
42
42
  handlePong(client: Client, message: any): any;
43
43
  handleErrorMessage(client: Client, message: any): void;
44
- handleMessage(client: Client, message: any): any;
44
+ handleMessage(client: Client, message: any): void;
45
45
  handleAuthenticate(client: any, message: any): any;
46
46
  }
@@ -4,7 +4,6 @@
4
4
  // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
5
  // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
6
 
7
- 'use strict';
8
7
  // ---------------------------------------------------------------------------
9
8
  import poloniexfuturesRest from '../poloniexfutures.js';
10
9
  import { AuthenticationError, BadRequest, ExchangeError } from '../base/errors.js';
@@ -64,18 +63,21 @@ export default class poloniexfutures extends poloniexfuturesRest {
64
63
  },
65
64
  });
66
65
  }
67
- negotiate(privateChannel, params = {}) {
66
+ async negotiate(privateChannel, params = {}) {
68
67
  const connectId = privateChannel ? 'private' : 'public';
69
68
  const urls = this.safeValue(this.options, 'urls', {});
70
69
  if (connectId in urls) {
71
- return urls[connectId];
70
+ // return urls[connectId];
71
+ const storedFuture = urls[connectId];
72
+ return await storedFuture;
72
73
  }
73
74
  // we store an awaitable to the url
74
75
  // so that multiple calls don't asynchronously
75
76
  // fetch different urls and overwrite each other
76
77
  urls[connectId] = this.spawn(this.negotiateHelper, privateChannel, params);
77
78
  this.options['urls'] = urls;
78
- return urls[connectId];
79
+ const future = urls[connectId];
80
+ return await future;
79
81
  }
80
82
  async negotiateHelper(privateChannel, params = {}) {
81
83
  let response = undefined;
@@ -713,7 +715,7 @@ export default class poloniexfutures extends poloniexfuturesRest {
713
715
  const messageHash = this.safeString(message, 'topic');
714
716
  const subject = this.safeString(message, 'subject');
715
717
  if (subject === 'received') {
716
- return message;
718
+ return;
717
719
  }
718
720
  // At the time of writting this, there is no implementation to easily convert each order into the orderbook so raw messages are returned
719
721
  client.resolve(message, messageHash);
@@ -732,9 +734,10 @@ export default class poloniexfutures extends poloniexfuturesRest {
732
734
  const topic = this.safeString(message, 'topic');
733
735
  const isSnapshot = topic.indexOf('Depth') >= 0;
734
736
  if (isSnapshot) {
735
- return this.handeL2Snapshot(client, message);
737
+ this.handeL2Snapshot(client, message);
738
+ return;
736
739
  }
737
- return this.handleL2OrderBook(client, message);
740
+ this.handleL2OrderBook(client, message);
738
741
  }
739
742
  handleL2OrderBook(client, message) {
740
743
  //
@@ -771,7 +774,7 @@ export default class poloniexfutures extends poloniexfuturesRest {
771
774
  const snapshotDelay = this.handleOption('watchOrderBook', 'snapshotDelay', 5);
772
775
  if (cacheLength === snapshotDelay) {
773
776
  const limit = 0;
774
- this.spawn(this.loadOrderBook, client, messageHash, symbol, limit);
777
+ this.spawn(this.loadOrderBook, client, messageHash, symbol, limit, {});
775
778
  }
776
779
  orderBook.cache.push(data);
777
780
  return;
@@ -959,7 +962,7 @@ export default class poloniexfutures extends poloniexfuturesRest {
959
962
  };
960
963
  const method = this.safeValue(methods, subject);
961
964
  if (method !== undefined) {
962
- return method.call(this, client, message);
965
+ method.call(this, client, message);
963
966
  }
964
967
  }
965
968
  ping(client) {
@@ -995,7 +998,7 @@ export default class poloniexfutures extends poloniexfuturesRest {
995
998
  };
996
999
  const method = this.safeValue(methods, type);
997
1000
  if (method !== undefined) {
998
- return method.call(this, client, message);
1001
+ method.call(this, client, message);
999
1002
  }
1000
1003
  }
1001
1004
  handleAuthenticate(client, message) {
@@ -22,6 +22,6 @@ export default class probit extends probitRest {
22
22
  handleErrorMessage(client: Client, message: any): void;
23
23
  handleAuthenticate(client: Client, message: any): void;
24
24
  handleMarketData(client: Client, message: any): void;
25
- handleMessage(client: Client, message: any): any;
25
+ handleMessage(client: Client, message: any): void;
26
26
  authenticate(params?: {}): Promise<any>;
27
27
  }
@@ -4,7 +4,6 @@
4
4
  // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
5
  // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
6
 
7
- 'use strict';
8
7
  // ---------------------------------------------------------------------------
9
8
  import probitRest from '../probit.js';
10
9
  import { NotSupported, ExchangeError } from '../base/errors.js';
@@ -454,20 +453,20 @@ export default class probit extends probitRest {
454
453
  const symbol = this.safeSymbol(marketId);
455
454
  const dataBySide = this.groupBy(orderBook, 'side');
456
455
  const messageHash = 'orderbook:' + symbol;
457
- let storedOrderBook = this.safeValue(this.orderbooks, symbol);
458
- if (storedOrderBook === undefined) {
459
- storedOrderBook = this.orderBook({});
460
- this.orderbooks[symbol] = storedOrderBook;
456
+ let orderbook = this.safeValue(this.orderbooks, symbol);
457
+ if (orderbook === undefined) {
458
+ orderbook = this.orderBook({});
459
+ this.orderbooks[symbol] = orderbook;
461
460
  }
462
461
  const reset = this.safeBool(message, 'reset', false);
463
462
  if (reset) {
464
463
  const snapshot = this.parseOrderBook(dataBySide, symbol, undefined, 'buy', 'sell', 'price', 'quantity');
465
- storedOrderBook.reset(snapshot);
464
+ orderbook.reset(snapshot);
466
465
  }
467
466
  else {
468
- this.handleDelta(storedOrderBook, dataBySide);
467
+ this.handleDelta(orderbook, dataBySide);
469
468
  }
470
- client.resolve(storedOrderBook, messageHash);
469
+ client.resolve(orderbook, messageHash);
471
470
  }
472
471
  handleBidAsks(bookSide, bidAsks) {
473
472
  for (let i = 0; i < bidAsks.length; i++) {
@@ -540,11 +539,13 @@ export default class probit extends probitRest {
540
539
  //
541
540
  const errorCode = this.safeString(message, 'errorCode');
542
541
  if (errorCode !== undefined) {
543
- return this.handleErrorMessage(client, message);
542
+ this.handleErrorMessage(client, message);
543
+ return;
544
544
  }
545
545
  const type = this.safeString(message, 'type');
546
546
  if (type === 'authorization') {
547
- return this.handleAuthenticate(client, message);
547
+ this.handleAuthenticate(client, message);
548
+ return;
548
549
  }
549
550
  const handlers = {
550
551
  'marketdata': this.handleMarketData,
@@ -556,7 +557,8 @@ export default class probit extends probitRest {
556
557
  const channel = this.safeString(message, 'channel');
557
558
  const handler = this.safeValue(handlers, channel);
558
559
  if (handler !== undefined) {
559
- return handler.call(this, client, message);
560
+ handler.call(this, client, message);
561
+ return;
560
562
  }
561
563
  const error = new NotSupported(this.id + ' handleMessage: unknown message: ' + this.json(message));
562
564
  client.reject(error);
@@ -584,6 +586,6 @@ export default class probit extends probitRest {
584
586
  future = this.watch(url, messageHash, this.extend(request, params));
585
587
  client.subscriptions[messageHash] = future;
586
588
  }
587
- return await future;
589
+ return future;
588
590
  }
589
591
  }
@@ -166,15 +166,15 @@ export default class upbit extends upbitRest {
166
166
  if (type === 'SNAPSHOT') {
167
167
  this.orderbooks[symbol] = this.orderBook({}, limit);
168
168
  }
169
- const orderBook = this.orderbooks[symbol];
169
+ const orderbook = this.orderbooks[symbol];
170
170
  // upbit always returns a snapshot of 15 topmost entries
171
171
  // the "REALTIME" deltas are not incremental
172
172
  // therefore we reset the orderbook on each update
173
173
  // and reinitialize it again with new bidasks
174
- orderBook.reset({});
175
- orderBook['symbol'] = symbol;
176
- const bids = orderBook['bids'];
177
- const asks = orderBook['asks'];
174
+ orderbook.reset({});
175
+ orderbook['symbol'] = symbol;
176
+ const bids = orderbook['bids'];
177
+ const asks = orderbook['asks'];
178
178
  const data = this.safeValue(message, 'orderbook_units', []);
179
179
  for (let i = 0; i < data.length; i++) {
180
180
  const entry = data[i];
@@ -187,10 +187,10 @@ export default class upbit extends upbitRest {
187
187
  }
188
188
  const timestamp = this.safeInteger(message, 'timestamp');
189
189
  const datetime = this.iso8601(timestamp);
190
- orderBook['timestamp'] = timestamp;
191
- orderBook['datetime'] = datetime;
190
+ orderbook['timestamp'] = timestamp;
191
+ orderbook['datetime'] = datetime;
192
192
  const messageHash = 'orderbook:' + marketId;
193
- client.resolve(orderBook, messageHash);
193
+ client.resolve(orderbook, messageHash);
194
194
  }
195
195
  handleTrades(client, message) {
196
196
  // { type: "trade",
@@ -27,6 +27,6 @@ export default class wazirx extends wazirxRest {
27
27
  handleConnected(client: Client, message: any): any;
28
28
  handleSubscribed(client: Client, message: any): any;
29
29
  handleError(client: Client, message: any): void;
30
- handleMessage(client: Client, message: any): any;
30
+ handleMessage(client: Client, message: any): void;
31
31
  authenticate(params?: {}): Promise<string>;
32
32
  }
@@ -723,7 +723,8 @@ export default class wazirx extends wazirxRest {
723
723
  handleMessage(client, message) {
724
724
  const status = this.safeString(message, 'status');
725
725
  if (status === 'error') {
726
- return this.handleError(client, message);
726
+ this.handleError(client, message);
727
+ return;
727
728
  }
728
729
  const event = this.safeString(message, 'event');
729
730
  const eventHandlers = {
@@ -733,7 +734,8 @@ export default class wazirx extends wazirxRest {
733
734
  };
734
735
  const eventHandler = this.safeValue(eventHandlers, event);
735
736
  if (eventHandler !== undefined) {
736
- return eventHandler.call(this, client, message);
737
+ eventHandler.call(this, client, message);
738
+ return;
737
739
  }
738
740
  const stream = this.safeString(message, 'stream', '');
739
741
  const streamHandlers = {
@@ -749,7 +751,8 @@ export default class wazirx extends wazirxRest {
749
751
  for (let i = 0; i < streams.length; i++) {
750
752
  if (this.inArray(streams[i], stream)) {
751
753
  const handler = streamHandlers[streams[i]];
752
- return handler.call(this, client, message);
754
+ handler.call(this, client, message);
755
+ return;
753
756
  }
754
757
  }
755
758
  throw new NotSupported(this.id + ' this message type is not supported yet. Message: ' + this.json(message));
@@ -18,7 +18,7 @@ export default class woo extends wooRest {
18
18
  handleTrade(client: Client, message: any): void;
19
19
  parseWsTrade(trade: any, market?: any): Trade;
20
20
  checkRequiredUid(error?: boolean): boolean;
21
- authenticate(params?: {}): any;
21
+ authenticate(params?: {}): Promise<any>;
22
22
  watchPrivate(messageHash: any, message: any, params?: {}): Promise<any>;
23
23
  watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
24
24
  parseWsOrder(order: any, market?: any): Order;
@@ -30,8 +30,8 @@ export default class woo extends wooRest {
30
30
  handlePositions(client: any, message: any): void;
31
31
  watchBalance(params?: {}): Promise<Balances>;
32
32
  handleBalance(client: any, message: any): void;
33
- handleMessage(client: Client, message: any): any;
34
- ping(client: any): {
33
+ handleMessage(client: Client, message: any): void;
34
+ ping(client: Client): {
35
35
  event: string;
36
36
  };
37
37
  handlePing(client: Client, message: any): {