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
@@ -181,28 +181,28 @@ export default class independentreserve extends independentreserveRest {
181
181
  const subscription = this.safeValue(client.subscriptions, messageHash, {});
182
182
  const receivedSnapshot = this.safeBool(subscription, 'receivedSnapshot', false);
183
183
  const timestamp = this.safeInteger(message, 'Time');
184
- let storedOrderBook = this.safeValue(this.orderbooks, symbol);
185
- if (storedOrderBook === undefined) {
186
- storedOrderBook = this.orderBook({});
187
- this.orderbooks[symbol] = storedOrderBook;
184
+ let orderbook = this.safeValue(this.orderbooks, symbol);
185
+ if (orderbook === undefined) {
186
+ orderbook = this.orderBook({});
187
+ this.orderbooks[symbol] = orderbook;
188
188
  }
189
189
  if (event === 'OrderBookSnapshot') {
190
190
  const snapshot = this.parseOrderBook(orderBook, symbol, timestamp, 'Bids', 'Offers', 'Price', 'Volume');
191
- storedOrderBook.reset(snapshot);
191
+ orderbook.reset(snapshot);
192
192
  subscription['receivedSnapshot'] = true;
193
193
  }
194
194
  else {
195
195
  const asks = this.safeValue(orderBook, 'Offers', []);
196
196
  const bids = this.safeValue(orderBook, 'Bids', []);
197
- this.handleDeltas(storedOrderBook['asks'], asks);
198
- this.handleDeltas(storedOrderBook['bids'], bids);
199
- storedOrderBook['timestamp'] = timestamp;
200
- storedOrderBook['datetime'] = this.iso8601(timestamp);
197
+ this.handleDeltas(orderbook['asks'], asks);
198
+ this.handleDeltas(orderbook['bids'], bids);
199
+ orderbook['timestamp'] = timestamp;
200
+ orderbook['datetime'] = this.iso8601(timestamp);
201
201
  }
202
202
  const checksum = this.safeValue(this.options, 'checksum', true);
203
203
  if (checksum && receivedSnapshot) {
204
- const storedAsks = storedOrderBook['asks'];
205
- const storedBids = storedOrderBook['bids'];
204
+ const storedAsks = orderbook['asks'];
205
+ const storedBids = orderbook['bids'];
206
206
  const asksLength = storedAsks.length;
207
207
  const bidsLength = storedBids.length;
208
208
  let payload = '';
@@ -224,7 +224,7 @@ export default class independentreserve extends independentreserveRest {
224
224
  }
225
225
  }
226
226
  if (receivedSnapshot) {
227
- client.resolve(storedOrderBook, messageHash);
227
+ client.resolve(orderbook, messageHash);
228
228
  }
229
229
  }
230
230
  valueToChecksum(value) {
@@ -274,7 +274,8 @@ export default class independentreserve extends independentreserveRest {
274
274
  };
275
275
  const handler = this.safeValue(handlers, event);
276
276
  if (handler !== undefined) {
277
- return handler.call(this, client, message);
277
+ handler.call(this, client, message);
278
+ return;
278
279
  }
279
280
  throw new NotSupported(this.id + ' received an unsupported message: ' + this.json(message));
280
281
  }
@@ -25,7 +25,7 @@ export default class kraken extends krakenRest {
25
25
  handleHeartbeat(client: Client, message: any): void;
26
26
  handleOrderBook(client: Client, message: any, subscription: any): void;
27
27
  formatNumber(n: any, length: any): string;
28
- handleDeltas(bookside: any, deltas: any, timestamp?: any): any;
28
+ customHandleDeltas(bookside: any, deltas: any, timestamp?: any): any;
29
29
  handleSystemStatus(client: Client, message: any): any;
30
30
  authenticate(params?: {}): Promise<string>;
31
31
  watchPrivate(name: any, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
@@ -51,5 +51,5 @@ export default class kraken extends krakenRest {
51
51
  parseWsOrder(order: any, market?: any): Order;
52
52
  handleSubscriptionStatus(client: Client, message: any): void;
53
53
  handleErrorMessage(client: Client, message: any): boolean;
54
- handleMessage(client: Client, message: any): any;
54
+ handleMessage(client: Client, message: any): void;
55
55
  }
@@ -659,7 +659,7 @@ export default class kraken extends krakenRest {
659
659
  const side = sides[key];
660
660
  const bookside = orderbook[side];
661
661
  const deltas = this.safeValue(message[1], key, []);
662
- timestamp = this.handleDeltas(bookside, deltas, timestamp);
662
+ timestamp = this.customHandleDeltas(bookside, deltas, timestamp);
663
663
  }
664
664
  orderbook['symbol'] = symbol;
665
665
  orderbook['timestamp'] = timestamp;
@@ -691,11 +691,11 @@ export default class kraken extends krakenRest {
691
691
  const storedBids = orderbook['bids'];
692
692
  let example = undefined;
693
693
  if (a !== undefined) {
694
- timestamp = this.handleDeltas(storedAsks, a, timestamp);
694
+ timestamp = this.customHandleDeltas(storedAsks, a, timestamp);
695
695
  example = this.safeValue(a, 0);
696
696
  }
697
697
  if (b !== undefined) {
698
- timestamp = this.handleDeltas(storedBids, b, timestamp);
698
+ timestamp = this.customHandleDeltas(storedBids, b, timestamp);
699
699
  example = this.safeValue(b, 0);
700
700
  }
701
701
  // don't remove this line or I will poop on your face
@@ -750,7 +750,7 @@ export default class kraken extends krakenRest {
750
750
  return joined;
751
751
  }
752
752
  }
753
- handleDeltas(bookside, deltas, timestamp = undefined) {
753
+ customHandleDeltas(bookside, deltas, timestamp = undefined) {
754
754
  for (let j = 0; j < deltas.length; j++) {
755
755
  const delta = deltas[j];
756
756
  const price = this.parseNumber(delta[0]);
@@ -1295,7 +1295,7 @@ export default class kraken extends krakenRest {
1295
1295
  // "subscription": { name: "ticker" }
1296
1296
  // }
1297
1297
  //
1298
- const errorMessage = this.safeValue(message, 'errorMessage');
1298
+ const errorMessage = this.safeString(message, 'errorMessage');
1299
1299
  if (errorMessage !== undefined) {
1300
1300
  const requestId = this.safeValue(message, 'reqid');
1301
1301
  if (requestId !== undefined) {
@@ -1303,7 +1303,7 @@ export default class kraken extends krakenRest {
1303
1303
  const broadKey = this.findBroadlyMatchedKey(broad, errorMessage);
1304
1304
  let exception = undefined;
1305
1305
  if (broadKey === undefined) {
1306
- exception = new ExchangeError(errorMessage);
1306
+ exception = new ExchangeError(errorMessage); // c# requirement to convert the errorMessage to string
1307
1307
  }
1308
1308
  else {
1309
1309
  exception = new broad[broadKey](errorMessage);
@@ -1333,11 +1333,8 @@ export default class kraken extends krakenRest {
1333
1333
  'ownTrades': this.handleMyTrades,
1334
1334
  };
1335
1335
  const method = this.safeValue2(methods, name, channelName);
1336
- if (method === undefined) {
1337
- return message;
1338
- }
1339
- else {
1340
- return method.call(this, client, message, subscription);
1336
+ if (method !== undefined) {
1337
+ method.call(this, client, message, subscription);
1341
1338
  }
1342
1339
  }
1343
1340
  else {
@@ -1353,11 +1350,8 @@ export default class kraken extends krakenRest {
1353
1350
  'cancelAllStatus': this.handleCancelAllOrders,
1354
1351
  };
1355
1352
  const method = this.safeValue(methods, event);
1356
- if (method === undefined) {
1357
- return message;
1358
- }
1359
- else {
1360
- return method.call(this, client, message);
1353
+ if (method !== undefined) {
1354
+ method.call(this, client, message);
1361
1355
  }
1362
1356
  }
1363
1357
  }
@@ -30,6 +30,6 @@ export default class krakenfutures extends krakenfuturesRest {
30
30
  handleMyTrades(client: Client, message: any): void;
31
31
  parseWsMyTrade(trade: any, market?: any): Trade;
32
32
  handleErrorMessage(client: Client, message: any): void;
33
- handleMessage(client: any, message: any): any;
33
+ handleMessage(client: any, message: any): void;
34
34
  handleAuthenticate(client: Client, message: any): any;
35
35
  }
@@ -1067,13 +1067,15 @@ export default class krakenfutures extends krakenfuturesRest {
1067
1067
  const bid = bids[i];
1068
1068
  const price = this.safeNumber(bid, 'price');
1069
1069
  const qty = this.safeNumber(bid, 'qty');
1070
- orderbook['bids'].store(price, qty);
1070
+ const bidsSide = orderbook['bids'];
1071
+ bidsSide.store(price, qty);
1071
1072
  }
1072
1073
  for (let i = 0; i < asks.length; i++) {
1073
1074
  const ask = asks[i];
1074
1075
  const price = this.safeNumber(ask, 'price');
1075
1076
  const qty = this.safeNumber(ask, 'qty');
1076
- orderbook['asks'].store(price, qty);
1077
+ const asksSide = orderbook['asks'];
1078
+ asksSide.store(price, qty);
1077
1079
  }
1078
1080
  orderbook['timestamp'] = timestamp;
1079
1081
  orderbook['datetime'] = this.iso8601(timestamp);
@@ -1102,10 +1104,12 @@ export default class krakenfutures extends krakenfuturesRest {
1102
1104
  const qty = this.safeNumber(message, 'qty');
1103
1105
  const timestamp = this.safeInteger(message, 'timestamp');
1104
1106
  if (side === 'sell') {
1105
- orderbook['asks'].store(price, qty);
1107
+ const asks = orderbook['asks'];
1108
+ asks.store(price, qty);
1106
1109
  }
1107
1110
  else {
1108
- orderbook['bids'].store(price, qty);
1111
+ const bids = orderbook['bids'];
1112
+ bids.store(price, qty);
1109
1113
  }
1110
1114
  orderbook['timestamp'] = timestamp;
1111
1115
  orderbook['datetime'] = this.iso8601(timestamp);
@@ -1441,7 +1445,7 @@ export default class krakenfutures extends krakenfuturesRest {
1441
1445
  this.handleAuthenticate(client, message);
1442
1446
  }
1443
1447
  else if (event === 'alert') {
1444
- return this.handleErrorMessage(client, message);
1448
+ this.handleErrorMessage(client, message);
1445
1449
  }
1446
1450
  else if (event === 'pong') {
1447
1451
  client.lastPong = this.milliseconds();
@@ -1468,7 +1472,7 @@ export default class krakenfutures extends krakenfuturesRest {
1468
1472
  };
1469
1473
  const method = this.safeValue(methods, feed);
1470
1474
  if (method !== undefined) {
1471
- return method.call(this, client, message);
1475
+ method.call(this, client, message);
1472
1476
  }
1473
1477
  }
1474
1478
  }
@@ -3,7 +3,7 @@ import type { Int, Str, Strings, OrderBook, Order, Trade, Ticker, Tickers, OHLCV
3
3
  import Client from '../base/ws/Client.js';
4
4
  export default class kucoin extends kucoinRest {
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(url: any, messageHash: any, subscriptionHash: any, params?: {}, subscription?: any): Promise<any>;
@@ -34,12 +34,12 @@ export default class kucoin extends kucoinRest {
34
34
  parseWsTrade(trade: any, market?: any): Trade;
35
35
  watchBalance(params?: {}): Promise<Balances>;
36
36
  handleBalance(client: Client, message: any): void;
37
- handleSubject(client: Client, message: any): any;
37
+ handleSubject(client: Client, message: any): void;
38
38
  ping(client: any): {
39
39
  id: any;
40
40
  type: string;
41
41
  };
42
42
  handlePong(client: Client, message: any): void;
43
43
  handleErrorMessage(client: Client, message: any): void;
44
- handleMessage(client: Client, message: any): any;
44
+ handleMessage(client: Client, message: any): void;
45
45
  }
@@ -50,19 +50,20 @@ export default class kucoin extends kucoinRest {
50
50
  },
51
51
  });
52
52
  }
53
- negotiate(privateChannel, params = {}) {
53
+ async negotiate(privateChannel, params = {}) {
54
54
  const connectId = privateChannel ? 'private' : 'public';
55
55
  const urls = this.safeValue(this.options, 'urls', {});
56
56
  const spawaned = this.safeValue(urls, connectId);
57
57
  if (spawaned !== undefined) {
58
- return spawaned;
58
+ return await spawaned;
59
59
  }
60
60
  // we store an awaitable to the url
61
61
  // so that multiple calls don't asynchronously
62
62
  // fetch different urls and overwrite each other
63
63
  urls[connectId] = this.spawn(this.negotiateHelper, privateChannel, params);
64
64
  this.options['urls'] = urls;
65
- return urls[connectId];
65
+ const future = urls[connectId];
66
+ return await future;
66
67
  }
67
68
  async negotiateHelper(privateChannel, params = {}) {
68
69
  let response = undefined;
@@ -548,7 +549,7 @@ export default class kucoin extends kucoinRest {
548
549
  const limit = this.safeInteger(subscription, 'limit');
549
550
  const snapshotDelay = this.handleOption('watchOrderBook', 'snapshotDelay', 5);
550
551
  if (cacheLength === snapshotDelay) {
551
- this.spawn(this.loadOrderBook, client, messageHash, symbol, limit);
552
+ this.spawn(this.loadOrderBook, client, messageHash, symbol, limit, {});
552
553
  }
553
554
  storedOrderBook.cache.push(data);
554
555
  return;
@@ -990,7 +991,8 @@ export default class kucoin extends kucoinRest {
990
991
  //
991
992
  const topic = this.safeString(message, 'topic');
992
993
  if (topic === '/market/ticker:all') {
993
- return this.handleTicker(client, message);
994
+ this.handleTicker(client, message);
995
+ return;
994
996
  }
995
997
  const subject = this.safeString(message, 'subject');
996
998
  const methods = {
@@ -1005,11 +1007,8 @@ export default class kucoin extends kucoinRest {
1005
1007
  'stopOrder': this.handleOrder,
1006
1008
  };
1007
1009
  const method = this.safeValue(methods, subject);
1008
- if (method === undefined) {
1009
- return message;
1010
- }
1011
- else {
1012
- return method.call(this, client, message);
1010
+ if (method !== undefined) {
1011
+ method.call(this, client, message);
1013
1012
  }
1014
1013
  }
1015
1014
  ping(client) {
@@ -1057,7 +1056,7 @@ export default class kucoin extends kucoinRest {
1057
1056
  };
1058
1057
  const method = this.safeValue(methods, type);
1059
1058
  if (method !== undefined) {
1060
- return method.call(this, client, message);
1059
+ method.call(this, client, message);
1061
1060
  }
1062
1061
  }
1063
1062
  }
@@ -3,7 +3,7 @@ import type { Int, Str, OrderBook, Order, Trade, Ticker, Balances, Position } fr
3
3
  import Client from '../base/ws/Client.js';
4
4
  export default class kucoinfutures extends kucoinfuturesRest {
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(url: any, messageHash: any, subscriptionHash: any, subscription: any, params?: {}): Promise<any>;
@@ -35,12 +35,12 @@ export default class kucoinfutures extends kucoinfuturesRest {
35
35
  handleBalance(client: Client, message: any): void;
36
36
  handleBalanceSubscription(client: Client, message: any, subscription: any): void;
37
37
  fetchBalanceSnapshot(client: any, message: any): Promise<void>;
38
- handleSubject(client: Client, message: any): any;
38
+ handleSubject(client: Client, message: any): void;
39
39
  ping(client: any): {
40
40
  id: any;
41
41
  type: string;
42
42
  };
43
43
  handlePong(client: Client, message: any): any;
44
44
  handleErrorMessage(client: Client, message: any): void;
45
- handleMessage(client: Client, message: any): any;
45
+ handleMessage(client: Client, message: any): void;
46
46
  }
@@ -60,19 +60,20 @@ export default class kucoinfutures extends kucoinfuturesRest {
60
60
  },
61
61
  });
62
62
  }
63
- negotiate(privateChannel, params = {}) {
63
+ async negotiate(privateChannel, params = {}) {
64
64
  const connectId = privateChannel ? 'private' : 'public';
65
65
  const urls = this.safeValue(this.options, 'urls', {});
66
66
  const spawaned = this.safeValue(urls, connectId);
67
67
  if (spawaned !== undefined) {
68
- return spawaned;
68
+ return await spawaned;
69
69
  }
70
70
  // we store an awaitable to the url
71
71
  // so that multiple calls don't asynchronously
72
72
  // fetch different urls and overwrite each other
73
- urls[connectId] = this.spawn(this.negotiateHelper, privateChannel, params);
73
+ urls[connectId] = this.spawn(this.negotiateHelper, privateChannel, params); // we have to wait here otherwsie in c# will not work
74
74
  this.options['urls'] = urls;
75
- return urls[connectId];
75
+ const future = urls[connectId];
76
+ return await future;
76
77
  }
77
78
  async negotiateHelper(privateChannel, params = {}) {
78
79
  let response = undefined;
@@ -585,6 +586,9 @@ export default class kucoinfutures extends kucoinfuturesRest {
585
586
  const messageHash = 'orderbook:' + symbol;
586
587
  const storedOrderBook = this.safeValue(this.orderbooks, symbol);
587
588
  const nonce = this.safeInteger(storedOrderBook, 'nonce');
589
+ if (storedOrderBook === undefined) {
590
+ return; // this shouldn't be needed, but for some reason sometimes this runs before handleOrderBookSubscription in c#
591
+ }
588
592
  const deltaEnd = this.safeInteger(data, 'sequence');
589
593
  if (nonce === undefined) {
590
594
  const cacheLength = storedOrderBook.cache.length;
@@ -603,7 +607,7 @@ export default class kucoinfutures extends kucoinfuturesRest {
603
607
  const limit = this.safeInteger(subscription, 'limit');
604
608
  const snapshotDelay = this.handleOption('watchOrderBook', 'snapshotDelay', 5);
605
609
  if (cacheLength === snapshotDelay) {
606
- this.spawn(this.loadOrderBook, client, messageHash, symbol, limit);
610
+ this.spawn(this.loadOrderBook, client, messageHash, symbol, limit, {});
607
611
  }
608
612
  storedOrderBook.cache.push(data);
609
613
  return;
@@ -931,11 +935,8 @@ export default class kucoinfutures extends kucoinfuturesRest {
931
935
  'position.adjustRiskLimit': this.handlePosition,
932
936
  };
933
937
  const method = this.safeValue(methods, subject);
934
- if (method === undefined) {
935
- return message;
936
- }
937
- else {
938
- return method.call(this, client, message);
938
+ if (method !== undefined) {
939
+ method.call(this, client, message);
939
940
  }
940
941
  }
941
942
  ping(client) {
@@ -984,7 +985,7 @@ export default class kucoinfutures extends kucoinfuturesRest {
984
985
  };
985
986
  const method = this.safeValue(methods, type);
986
987
  if (method !== undefined) {
987
- return method.call(this, client, message);
988
+ method.call(this, client, message);
988
989
  }
989
990
  }
990
991
  }
@@ -24,6 +24,6 @@ export default class lbank extends lbankRest {
24
24
  handleOrderBook(client: any, message: any): void;
25
25
  handleErrorMessage(client: any, message: any): void;
26
26
  handlePing(client: Client, message: any): Promise<void>;
27
- handleMessage(client: any, message: any): any;
27
+ handleMessage(client: any, message: any): void;
28
28
  authenticate(params?: {}): Promise<any>;
29
29
  }
@@ -779,17 +779,17 @@ export default class lbank extends lbankRest {
779
779
  const orderBook = this.safeValue(message, 'depth', message);
780
780
  const datetime = this.safeString(message, 'TS');
781
781
  const timestamp = this.parse8601(datetime);
782
- let storedOrderBook = this.safeValue(this.orderbooks, symbol);
783
- if (storedOrderBook === undefined) {
784
- storedOrderBook = this.orderBook({});
785
- this.orderbooks[symbol] = storedOrderBook;
782
+ let orderbook = this.safeValue(this.orderbooks, symbol);
783
+ if (orderbook === undefined) {
784
+ orderbook = this.orderBook({});
785
+ this.orderbooks[symbol] = orderbook;
786
786
  }
787
787
  const snapshot = this.parseOrderBook(orderBook, symbol, timestamp, 'bids', 'asks');
788
- storedOrderBook.reset(snapshot);
788
+ orderbook.reset(snapshot);
789
789
  let messageHash = 'orderbook:' + symbol;
790
- client.resolve(storedOrderBook, messageHash);
790
+ client.resolve(orderbook, messageHash);
791
791
  messageHash = 'fetchOrderbook:' + symbol;
792
- client.resolve(storedOrderBook, messageHash);
792
+ client.resolve(orderbook, messageHash);
793
793
  }
794
794
  handleErrorMessage(client, message) {
795
795
  //
@@ -817,7 +817,8 @@ export default class lbank extends lbankRest {
817
817
  handleMessage(client, message) {
818
818
  const status = this.safeString(message, 'status');
819
819
  if (status === 'error') {
820
- return this.handleErrorMessage(client, message);
820
+ this.handleErrorMessage(client, message);
821
+ return;
821
822
  }
822
823
  const type = this.safeString2(message, 'type', 'action');
823
824
  if (type === 'ping') {
@@ -833,9 +834,8 @@ export default class lbank extends lbankRest {
833
834
  };
834
835
  const handler = this.safeValue(handlers, type);
835
836
  if (handler !== undefined) {
836
- return handler.call(this, client, message);
837
+ handler.call(this, client, message);
837
838
  }
838
- return message;
839
839
  }
840
840
  async authenticate(params = {}) {
841
841
  // when we implement more private streams, we need to refactor the authentication
@@ -18,6 +18,6 @@ export default class luno extends lunoRest {
18
18
  };
19
19
  parseBidsAsks(bidasks: any, priceKey?: IndexType, amountKey?: IndexType, thirdKey?: IndexType): any[];
20
20
  customParseBidAsk(bidask: any, priceKey?: IndexType, amountKey?: IndexType, thirdKey?: IndexType): number[];
21
- handleDelta(orderbook: any, message: any): any;
22
- handleMessage(client: Client, message: any): any;
21
+ handleDelta(orderbook: any, message: any): void;
22
+ handleMessage(client: Client, message: any): void;
23
23
  }
@@ -194,24 +194,24 @@ export default class luno extends lunoRest {
194
194
  const symbol = subscription['symbol'];
195
195
  const messageHash = 'orderbook:' + symbol;
196
196
  const timestamp = this.safeString(message, 'timestamp');
197
- let storedOrderBook = this.safeValue(this.orderbooks, symbol);
198
- if (storedOrderBook === undefined) {
199
- storedOrderBook = this.indexedOrderBook({});
200
- this.orderbooks[symbol] = storedOrderBook;
197
+ let orderbook = this.safeValue(this.orderbooks, symbol);
198
+ if (orderbook === undefined) {
199
+ orderbook = this.indexedOrderBook({});
200
+ this.orderbooks[symbol] = orderbook;
201
201
  }
202
202
  const asks = this.safeValue(message, 'asks');
203
203
  if (asks !== undefined) {
204
204
  const snapshot = this.customParseOrderBook(message, symbol, timestamp, 'bids', 'asks', 'price', 'volume', 'id');
205
- storedOrderBook.reset(snapshot);
205
+ orderbook.reset(snapshot);
206
206
  }
207
207
  else {
208
- this.handleDelta(storedOrderBook, message);
209
- storedOrderBook['timestamp'] = timestamp;
210
- storedOrderBook['datetime'] = this.iso8601(timestamp);
208
+ this.handleDelta(orderbook, message);
209
+ orderbook['timestamp'] = timestamp;
210
+ orderbook['datetime'] = this.iso8601(timestamp);
211
211
  }
212
212
  const nonce = this.safeInteger(message, 'sequence');
213
- storedOrderBook['nonce'] = nonce;
214
- client.resolve(storedOrderBook, messageHash);
213
+ orderbook['nonce'] = nonce;
214
+ client.resolve(orderbook, messageHash);
215
215
  }
216
216
  customParseOrderBook(orderbook, symbol, timestamp = undefined, bidsKey = 'bids', asksKey = 'asks', priceKey = 'price', amountKey = 'volume', countOrIdKey = 2) {
217
217
  const bids = this.parseBidsAsks(this.safeValue(orderbook, bidsKey, []), priceKey, amountKey, countOrIdKey);
@@ -303,10 +303,9 @@ export default class luno extends lunoRest {
303
303
  const deleteUpdate = this.safeValue(message, 'delete_update');
304
304
  if (deleteUpdate !== undefined) {
305
305
  const orderId = this.safeString(deleteUpdate, 'order_id');
306
- asksOrderSide.storeArray(0, 0, orderId);
307
- bidsOrderSide.storeArray(0, 0, orderId);
306
+ asksOrderSide.storeArray([0, 0, orderId]);
307
+ bidsOrderSide.storeArray([0, 0, orderId]);
308
308
  }
309
- return message;
310
309
  }
311
310
  handleMessage(client, message) {
312
311
  if (message === '') {
@@ -318,6 +317,5 @@ export default class luno extends lunoRest {
318
317
  const handler = handlers[j];
319
318
  handler.call(this, client, message, subscriptions[0]);
320
319
  }
321
- return message;
322
320
  }
323
321
  }
@@ -35,8 +35,8 @@ export default class mexc extends mexcRest {
35
35
  authenticate(subscriptionHash: any, params?: {}): Promise<string>;
36
36
  keepAliveListenKey(listenKey: any, params?: {}): Promise<void>;
37
37
  handlePong(client: Client, message: any): any;
38
- handleSubscriptionStatus(client: Client, message: any): any;
39
- handleMessage(client: Client, message: any): any;
38
+ handleSubscriptionStatus(client: Client, message: any): void;
39
+ handleMessage(client: Client, message: any): void;
40
40
  ping(client: any): {
41
41
  method: string;
42
42
  };
@@ -1109,7 +1109,7 @@ export default class mexc extends mexcRest {
1109
1109
  //
1110
1110
  const msg = this.safeString(message, 'msg');
1111
1111
  if (msg === 'PONG') {
1112
- return this.handlePong(client, message);
1112
+ this.handlePong(client, message);
1113
1113
  }
1114
1114
  else if (msg.indexOf('@') > -1) {
1115
1115
  const parts = msg.split('@');
@@ -1132,7 +1132,8 @@ export default class mexc extends mexcRest {
1132
1132
  return;
1133
1133
  }
1134
1134
  if ('msg' in message) {
1135
- return this.handleSubscriptionStatus(client, message);
1135
+ this.handleSubscriptionStatus(client, message);
1136
+ return;
1136
1137
  }
1137
1138
  const c = this.safeString(message, 'c');
1138
1139
  let channel = undefined;
@@ -11,8 +11,8 @@ export default class ndax extends ndaxRest {
11
11
  watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
12
12
  handleOHLCV(client: Client, message: any): void;
13
13
  watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
14
- handleOrderBook(client: Client, message: any): any;
14
+ handleOrderBook(client: Client, message: any): void;
15
15
  handleOrderBookSubscription(client: Client, message: any, subscription: any): void;
16
- handleSubscriptionStatus(client: Client, message: any): any;
17
- handleMessage(client: Client, message: any): any;
16
+ handleSubscriptionStatus(client: Client, message: any): void;
17
+ handleMessage(client: Client, message: any): void;
18
18
  }
@@ -388,13 +388,13 @@ export default class ndax extends ndaxRest {
388
388
  const firstBidAsk = this.safeValue(payload, 0, []);
389
389
  const marketId = this.safeString(firstBidAsk, 7);
390
390
  if (marketId === undefined) {
391
- return message;
391
+ return;
392
392
  }
393
393
  const market = this.safeMarket(marketId);
394
394
  const symbol = market['symbol'];
395
395
  const orderbook = this.safeValue(this.orderbooks, symbol);
396
396
  if (orderbook === undefined) {
397
- return message;
397
+ return;
398
398
  }
399
399
  let timestamp = undefined;
400
400
  let nonce = undefined;
@@ -488,11 +488,8 @@ export default class ndax extends ndaxRest {
488
488
  const subscription = this.safeValue(subscriptionsById, id);
489
489
  if (subscription !== undefined) {
490
490
  const method = this.safeValue(subscription, 'method');
491
- if (method === undefined) {
492
- return message;
493
- }
494
- else {
495
- return method.call(this, client, message, subscription);
491
+ if (method !== undefined) {
492
+ method.call(this, client, message, subscription);
496
493
  }
497
494
  }
498
495
  }
@@ -521,7 +518,7 @@ export default class ndax extends ndaxRest {
521
518
  //
522
519
  const payload = this.safeString(message, 'o');
523
520
  if (payload === undefined) {
524
- return message;
521
+ return;
525
522
  }
526
523
  message['o'] = JSON.parse(payload);
527
524
  const methods = {
@@ -536,11 +533,8 @@ export default class ndax extends ndaxRest {
536
533
  };
537
534
  const event = this.safeString(message, 'n');
538
535
  const method = this.safeValue(methods, event);
539
- if (method === undefined) {
540
- return message;
541
- }
542
- else {
543
- return method.call(this, client, message);
536
+ if (method !== undefined) {
537
+ method.call(this, client, message);
544
538
  }
545
539
  }
546
540
  }
@@ -26,5 +26,5 @@ export default class okcoin extends okcoinRest {
26
26
  ping(client: any): string;
27
27
  handlePong(client: Client, message: any): any;
28
28
  handleErrorMessage(client: Client, message: any): any;
29
- handleMessage(client: Client, message: any): any;
29
+ handleMessage(client: Client, message: any): void;
30
30
  }