ccxt 4.2.30 → 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 (318) hide show
  1. package/.gitattributes +1 -0
  2. package/CONTRIBUTING.md +20 -1
  3. package/README.md +9 -9
  4. package/build.sh +9 -2
  5. package/cleanup.sh +3 -0
  6. package/dist/ccxt.browser.js +1136 -561
  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 +66 -24
  12. package/dist/cjs/src/bigone.js +21 -1
  13. package/dist/cjs/src/binance.js +6 -5
  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 +415 -41
  17. package/dist/cjs/src/bitforex.js +3 -0
  18. package/dist/cjs/src/bitget.js +3 -3
  19. package/dist/cjs/src/bitmart.js +1 -1
  20. package/dist/cjs/src/bitrue.js +3 -3
  21. package/dist/cjs/src/blockchaincom.js +1 -1
  22. package/dist/cjs/src/bybit.js +1 -1
  23. package/dist/cjs/src/coinbase.js +12 -2
  24. package/dist/cjs/src/coinex.js +1 -1
  25. package/dist/cjs/src/cryptocom.js +10 -10
  26. package/dist/cjs/src/deribit.js +1 -0
  27. package/dist/cjs/src/gate.js +34 -29
  28. package/dist/cjs/src/htx.js +1 -1
  29. package/dist/cjs/src/kraken.js +42 -1
  30. package/dist/cjs/src/krakenfutures.js +3 -0
  31. package/dist/cjs/src/kucoin.js +1 -1
  32. package/dist/cjs/src/lbank.js +27 -26
  33. package/dist/cjs/src/mexc.js +2 -1
  34. package/dist/cjs/src/okx.js +20 -5
  35. package/dist/cjs/src/phemex.js +8 -8
  36. package/dist/cjs/src/poloniexfutures.js +3 -0
  37. package/dist/cjs/src/pro/alpaca.js +8 -4
  38. package/dist/cjs/src/pro/ascendex.js +1 -2
  39. package/dist/cjs/src/pro/binance.js +14 -10
  40. package/dist/cjs/src/pro/bingx.js +1 -1
  41. package/dist/cjs/src/pro/bitfinex.js +21 -24
  42. package/dist/cjs/src/pro/bitfinex2.js +13 -17
  43. package/dist/cjs/src/pro/bitget.js +3 -1
  44. package/dist/cjs/src/pro/bitmart.js +3 -8
  45. package/dist/cjs/src/pro/bitmex.js +4 -7
  46. package/dist/cjs/src/pro/bitopro.js +2 -5
  47. package/dist/cjs/src/pro/bitrue.js +1 -1
  48. package/dist/cjs/src/pro/bitstamp.js +2 -3
  49. package/dist/cjs/src/pro/bitvavo.js +12 -5
  50. package/dist/cjs/src/pro/blockchaincom.js +22 -23
  51. package/dist/cjs/src/pro/bybit.js +5 -5
  52. package/dist/cjs/src/pro/cex.js +7 -7
  53. package/dist/cjs/src/pro/coinbase.js +3 -2
  54. package/dist/cjs/src/pro/coinbasepro.js +1 -1
  55. package/dist/cjs/src/pro/coinex.js +15 -13
  56. package/dist/cjs/src/pro/currencycom.js +5 -7
  57. package/dist/cjs/src/pro/deribit.js +4 -4
  58. package/dist/cjs/src/pro/exmo.js +15 -13
  59. package/dist/cjs/src/pro/gate.js +1 -1
  60. package/dist/cjs/src/pro/gemini.js +4 -2
  61. package/dist/cjs/src/pro/hitbtc.js +9 -8
  62. package/dist/cjs/src/pro/hollaex.js +2 -2
  63. package/dist/cjs/src/pro/htx.js +6 -7
  64. package/dist/cjs/src/pro/huobijp.js +3 -5
  65. package/dist/cjs/src/pro/idex.js +1 -1
  66. package/dist/cjs/src/pro/independentreserve.js +14 -13
  67. package/dist/cjs/src/pro/kraken.js +10 -16
  68. package/dist/cjs/src/pro/krakenfutures.js +10 -6
  69. package/dist/cjs/src/pro/kucoin.js +10 -11
  70. package/dist/cjs/src/pro/kucoinfutures.js +12 -11
  71. package/dist/cjs/src/pro/lbank.js +10 -10
  72. package/dist/cjs/src/pro/luno.js +12 -14
  73. package/dist/cjs/src/pro/mexc.js +3 -2
  74. package/dist/cjs/src/pro/ndax.js +7 -13
  75. package/dist/cjs/src/pro/okcoin.js +7 -12
  76. package/dist/cjs/src/pro/okx.js +6 -11
  77. package/dist/cjs/src/pro/onetrading.js +16 -15
  78. package/dist/cjs/src/pro/p2b.js +5 -3
  79. package/dist/cjs/src/pro/phemex.js +16 -11
  80. package/dist/cjs/src/pro/poloniex.js +6 -4
  81. package/dist/cjs/src/pro/poloniexfutures.js +14 -9
  82. package/dist/cjs/src/pro/probit.js +15 -11
  83. package/dist/cjs/src/pro/upbit.js +8 -8
  84. package/dist/cjs/src/pro/wazirx.js +6 -3
  85. package/dist/cjs/src/pro/woo.js +8 -6
  86. package/dist/cjs/src/probit.js +3 -3
  87. package/dist/cjs/src/timex.js +1 -1
  88. package/dist/cjs/src/tokocrypto.js +2 -2
  89. package/dist/cjs/src/wavesexchange.js +2 -1
  90. package/dist/cjs/src/whitebit.js +1 -1
  91. package/dist/cjs/src/woo.js +1 -1
  92. package/dist/cjs/src/yobit.js +39 -0
  93. package/js/ccxt.d.ts +1 -1
  94. package/js/ccxt.js +1 -1
  95. package/js/src/abstract/coinbase.d.ts +10 -0
  96. package/js/src/abstract/okx.d.ts +12 -1
  97. package/js/src/ace.d.ts +1 -1
  98. package/js/src/ace.js +3 -2
  99. package/js/src/alpaca.d.ts +1 -1
  100. package/js/src/ascendex.d.ts +5 -15
  101. package/js/src/ascendex.js +1 -1
  102. package/js/src/base/Exchange.d.ts +88 -79
  103. package/js/src/base/Exchange.js +66 -24
  104. package/js/src/base/types.d.ts +90 -6
  105. package/js/src/bigone.d.ts +5 -15
  106. package/js/src/bigone.js +21 -1
  107. package/js/src/binance.d.ts +13 -23
  108. package/js/src/binance.js +6 -5
  109. package/js/src/bingx.d.ts +6 -16
  110. package/js/src/bingx.js +4 -3
  111. package/js/src/bit2c.d.ts +1 -1
  112. package/js/src/bit2c.js +12 -0
  113. package/js/src/bitbank.d.ts +2 -2
  114. package/js/src/bitbns.d.ts +1 -1
  115. package/js/src/bitfinex.d.ts +5 -5
  116. package/js/src/bitfinex2.d.ts +11 -16
  117. package/js/src/bitfinex2.js +415 -41
  118. package/js/src/bitflyer.d.ts +5 -5
  119. package/js/src/bitforex.d.ts +1 -1
  120. package/js/src/bitforex.js +3 -0
  121. package/js/src/bitget.d.ts +8 -38
  122. package/js/src/bitget.js +3 -3
  123. package/js/src/bithumb.d.ts +2 -2
  124. package/js/src/bitmart.d.ts +10 -21
  125. package/js/src/bitmart.js +1 -1
  126. package/js/src/bitmex.d.ts +3 -3
  127. package/js/src/bitopro.d.ts +2 -2
  128. package/js/src/bitrue.d.ts +5 -15
  129. package/js/src/bitrue.js +3 -3
  130. package/js/src/bitso.d.ts +4 -4
  131. package/js/src/bitstamp.d.ts +2 -2
  132. package/js/src/bitteam.d.ts +1 -1
  133. package/js/src/bitvavo.d.ts +3 -3
  134. package/js/src/bl3p.d.ts +1 -1
  135. package/js/src/blockchaincom.d.ts +2 -2
  136. package/js/src/blockchaincom.js +1 -1
  137. package/js/src/btcalpha.d.ts +1 -1
  138. package/js/src/btcbox.d.ts +1 -1
  139. package/js/src/btcmarkets.d.ts +3 -3
  140. package/js/src/btcturk.d.ts +1 -1
  141. package/js/src/bybit.d.ts +8 -8
  142. package/js/src/bybit.js +1 -1
  143. package/js/src/cex.d.ts +1 -1
  144. package/js/src/coinbase.d.ts +6 -50
  145. package/js/src/coinbase.js +12 -2
  146. package/js/src/coinbasepro.d.ts +2 -2
  147. package/js/src/coincheck.d.ts +1 -1
  148. package/js/src/coinex.d.ts +8 -8
  149. package/js/src/coinex.js +1 -1
  150. package/js/src/coinlist.d.ts +4 -14
  151. package/js/src/coinmate.d.ts +2 -2
  152. package/js/src/coinmetro.d.ts +2 -2
  153. package/js/src/coinone.d.ts +1 -1
  154. package/js/src/coinsph.d.ts +2 -2
  155. package/js/src/coinspot.d.ts +1 -1
  156. package/js/src/cryptocom.d.ts +4 -4
  157. package/js/src/cryptocom.js +10 -10
  158. package/js/src/currencycom.d.ts +2 -2
  159. package/js/src/delta.d.ts +2 -2
  160. package/js/src/deribit.d.ts +4 -14
  161. package/js/src/deribit.js +1 -0
  162. package/js/src/digifinex.d.ts +10 -38
  163. package/js/src/exmo.d.ts +2 -2
  164. package/js/src/gate.d.ts +8 -18
  165. package/js/src/gate.js +34 -29
  166. package/js/src/gemini.d.ts +2 -2
  167. package/js/src/hitbtc.d.ts +6 -16
  168. package/js/src/hollaex.d.ts +2 -2
  169. package/js/src/htx.d.ts +11 -21
  170. package/js/src/htx.js +1 -1
  171. package/js/src/huobijp.d.ts +4 -4
  172. package/js/src/idex.d.ts +3 -3
  173. package/js/src/independentreserve.d.ts +2 -2
  174. package/js/src/indodax.d.ts +2 -2
  175. package/js/src/kraken.d.ts +5 -5
  176. package/js/src/kraken.js +42 -1
  177. package/js/src/krakenfutures.d.ts +7 -7
  178. package/js/src/krakenfutures.js +3 -0
  179. package/js/src/kucoin.d.ts +8 -29
  180. package/js/src/kucoin.js +1 -1
  181. package/js/src/kucoinfutures.d.ts +4 -4
  182. package/js/src/kuna.d.ts +2 -2
  183. package/js/src/latoken.d.ts +4 -14
  184. package/js/src/lbank.d.ts +3 -6
  185. package/js/src/lbank.js +27 -26
  186. package/js/src/luno.d.ts +1 -1
  187. package/js/src/lykke.d.ts +2 -2
  188. package/js/src/mercado.d.ts +2 -2
  189. package/js/src/mexc.d.ts +6 -6
  190. package/js/src/mexc.js +2 -1
  191. package/js/src/ndax.d.ts +2 -2
  192. package/js/src/novadax.d.ts +4 -15
  193. package/js/src/oceanex.d.ts +1 -1
  194. package/js/src/okcoin.d.ts +5 -15
  195. package/js/src/okx.d.ts +8 -18
  196. package/js/src/okx.js +20 -5
  197. package/js/src/onetrading.d.ts +2 -2
  198. package/js/src/p2b.d.ts +1 -1
  199. package/js/src/paymium.d.ts +3 -13
  200. package/js/src/phemex.d.ts +5 -5
  201. package/js/src/phemex.js +8 -8
  202. package/js/src/poloniex.d.ts +4 -14
  203. package/js/src/poloniexfutures.d.ts +1 -1
  204. package/js/src/poloniexfutures.js +3 -0
  205. package/js/src/pro/alpaca.d.ts +2 -2
  206. package/js/src/pro/alpaca.js +8 -4
  207. package/js/src/pro/ascendex.d.ts +2 -2
  208. package/js/src/pro/ascendex.js +1 -2
  209. package/js/src/pro/binance.d.ts +3 -3
  210. package/js/src/pro/binance.js +14 -10
  211. package/js/src/pro/bingx.d.ts +1 -1
  212. package/js/src/pro/bingx.js +1 -1
  213. package/js/src/pro/bitfinex.d.ts +2 -2
  214. package/js/src/pro/bitfinex.js +21 -24
  215. package/js/src/pro/bitfinex2.d.ts +2 -2
  216. package/js/src/pro/bitfinex2.js +13 -17
  217. package/js/src/pro/bitget.js +3 -1
  218. package/js/src/pro/bitmart.d.ts +3 -3
  219. package/js/src/pro/bitmart.js +3 -8
  220. package/js/src/pro/bitmex.d.ts +1 -1
  221. package/js/src/pro/bitmex.js +4 -7
  222. package/js/src/pro/bitopro.d.ts +1 -1
  223. package/js/src/pro/bitopro.js +2 -5
  224. package/js/src/pro/bitrue.js +1 -1
  225. package/js/src/pro/bitstamp.d.ts +1 -1
  226. package/js/src/pro/bitstamp.js +2 -3
  227. package/js/src/pro/bitvavo.d.ts +3 -3
  228. package/js/src/pro/bitvavo.js +12 -5
  229. package/js/src/pro/blockchaincom.d.ts +8 -8
  230. package/js/src/pro/blockchaincom.js +22 -23
  231. package/js/src/pro/bybit.d.ts +2 -2
  232. package/js/src/pro/bybit.js +5 -5
  233. package/js/src/pro/cex.d.ts +1 -1
  234. package/js/src/pro/cex.js +7 -7
  235. package/js/src/pro/coinbase.d.ts +1 -1
  236. package/js/src/pro/coinbase.js +3 -2
  237. package/js/src/pro/coinbasepro.d.ts +1 -1
  238. package/js/src/pro/coinbasepro.js +1 -1
  239. package/js/src/pro/coinex.d.ts +2 -2
  240. package/js/src/pro/coinex.js +15 -13
  241. package/js/src/pro/currencycom.d.ts +1 -1
  242. package/js/src/pro/currencycom.js +5 -7
  243. package/js/src/pro/deribit.d.ts +2 -2
  244. package/js/src/pro/deribit.js +4 -4
  245. package/js/src/pro/exmo.d.ts +2 -2
  246. package/js/src/pro/exmo.js +15 -13
  247. package/js/src/pro/gate.js +1 -1
  248. package/js/src/pro/gemini.d.ts +1 -1
  249. package/js/src/pro/gemini.js +4 -2
  250. package/js/src/pro/hitbtc.d.ts +2 -2
  251. package/js/src/pro/hitbtc.js +9 -8
  252. package/js/src/pro/hollaex.d.ts +2 -2
  253. package/js/src/pro/hollaex.js +2 -2
  254. package/js/src/pro/htx.d.ts +2 -2
  255. package/js/src/pro/htx.js +6 -7
  256. package/js/src/pro/huobijp.d.ts +1 -1
  257. package/js/src/pro/huobijp.js +3 -5
  258. package/js/src/pro/idex.js +1 -1
  259. package/js/src/pro/independentreserve.d.ts +1 -1
  260. package/js/src/pro/independentreserve.js +14 -13
  261. package/js/src/pro/kraken.d.ts +2 -2
  262. package/js/src/pro/kraken.js +10 -16
  263. package/js/src/pro/krakenfutures.d.ts +1 -1
  264. package/js/src/pro/krakenfutures.js +10 -6
  265. package/js/src/pro/kucoin.d.ts +3 -3
  266. package/js/src/pro/kucoin.js +10 -11
  267. package/js/src/pro/kucoinfutures.d.ts +3 -3
  268. package/js/src/pro/kucoinfutures.js +12 -11
  269. package/js/src/pro/lbank.d.ts +1 -1
  270. package/js/src/pro/lbank.js +10 -10
  271. package/js/src/pro/luno.d.ts +2 -2
  272. package/js/src/pro/luno.js +12 -14
  273. package/js/src/pro/mexc.d.ts +2 -2
  274. package/js/src/pro/mexc.js +3 -2
  275. package/js/src/pro/ndax.d.ts +3 -3
  276. package/js/src/pro/ndax.js +7 -13
  277. package/js/src/pro/okcoin.d.ts +1 -1
  278. package/js/src/pro/okcoin.js +7 -12
  279. package/js/src/pro/okx.d.ts +1 -1
  280. package/js/src/pro/okx.js +6 -11
  281. package/js/src/pro/onetrading.d.ts +1 -1
  282. package/js/src/pro/onetrading.js +16 -15
  283. package/js/src/pro/p2b.d.ts +1 -1
  284. package/js/src/pro/p2b.js +5 -3
  285. package/js/src/pro/phemex.d.ts +3 -3
  286. package/js/src/pro/phemex.js +16 -11
  287. package/js/src/pro/poloniex.d.ts +1 -1
  288. package/js/src/pro/poloniex.js +6 -4
  289. package/js/src/pro/poloniexfutures.d.ts +4 -4
  290. package/js/src/pro/poloniexfutures.js +13 -10
  291. package/js/src/pro/probit.d.ts +1 -1
  292. package/js/src/pro/probit.js +14 -12
  293. package/js/src/pro/upbit.js +8 -8
  294. package/js/src/pro/wazirx.d.ts +1 -1
  295. package/js/src/pro/wazirx.js +6 -3
  296. package/js/src/pro/woo.d.ts +3 -3
  297. package/js/src/pro/woo.js +8 -6
  298. package/js/src/probit.d.ts +3 -3
  299. package/js/src/probit.js +3 -3
  300. package/js/src/timex.d.ts +1 -1
  301. package/js/src/timex.js +1 -1
  302. package/js/src/tokocrypto.d.ts +3 -3
  303. package/js/src/tokocrypto.js +2 -2
  304. package/js/src/upbit.d.ts +2 -2
  305. package/js/src/wavesexchange.d.ts +3 -4
  306. package/js/src/wavesexchange.js +2 -1
  307. package/js/src/wazirx.d.ts +1 -1
  308. package/js/src/whitebit.d.ts +5 -15
  309. package/js/src/whitebit.js +1 -1
  310. package/js/src/woo.d.ts +5 -15
  311. package/js/src/woo.js +1 -1
  312. package/js/src/yobit.d.ts +21 -6
  313. package/js/src/yobit.js +39 -0
  314. package/js/src/zaif.d.ts +2 -2
  315. package/js/src/zonda.d.ts +4 -14
  316. package/package.json +22 -8
  317. package/skip-tests.json +9 -1
  318. package/tests-manager.sh +1 -2
@@ -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
  }
@@ -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
  }