ccxt 4.2.83 → 4.2.85

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 (166) hide show
  1. package/README.md +3 -3
  2. package/build.sh +1 -1
  3. package/dist/ccxt.browser.js +896 -941
  4. package/dist/ccxt.browser.min.js +4 -4
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/ace.js +5 -5
  7. package/dist/cjs/src/ascendex.js +8 -8
  8. package/dist/cjs/src/base/Exchange.js +76 -14
  9. package/dist/cjs/src/bigone.js +12 -12
  10. package/dist/cjs/src/binance.js +23 -35
  11. package/dist/cjs/src/bingx.js +13 -9
  12. package/dist/cjs/src/bit2c.js +1 -1
  13. package/dist/cjs/src/bitbank.js +8 -8
  14. package/dist/cjs/src/bitbns.js +5 -5
  15. package/dist/cjs/src/bitfinex.js +1 -1
  16. package/dist/cjs/src/bitfinex2.js +1 -1
  17. package/dist/cjs/src/bitget.js +40 -28
  18. package/dist/cjs/src/bithumb.js +5 -5
  19. package/dist/cjs/src/bitmart.js +16 -16
  20. package/dist/cjs/src/bitopro.js +1 -1
  21. package/dist/cjs/src/bitrue.js +4 -4
  22. package/dist/cjs/src/bitso.js +5 -5
  23. package/dist/cjs/src/bitstamp.js +1 -1
  24. package/dist/cjs/src/bitteam.js +8 -8
  25. package/dist/cjs/src/bl3p.js +1 -1
  26. package/dist/cjs/src/btcturk.js +6 -6
  27. package/dist/cjs/src/bybit.js +34 -98
  28. package/dist/cjs/src/coincheck.js +4 -4
  29. package/dist/cjs/src/coinex.js +12 -13
  30. package/dist/cjs/src/coinlist.js +7 -7
  31. package/dist/cjs/src/coinmate.js +4 -4
  32. package/dist/cjs/src/coinmetro.js +3 -3
  33. package/dist/cjs/src/coinone.js +5 -5
  34. package/dist/cjs/src/coinspot.js +2 -2
  35. package/dist/cjs/src/cryptocom.js +17 -17
  36. package/dist/cjs/src/currencycom.js +1 -1
  37. package/dist/cjs/src/delta.js +0 -8
  38. package/dist/cjs/src/deribit.js +16 -92
  39. package/dist/cjs/src/digifinex.js +8 -8
  40. package/dist/cjs/src/exmo.js +8 -8
  41. package/dist/cjs/src/gate.js +0 -8
  42. package/dist/cjs/src/hitbtc.js +5 -4
  43. package/dist/cjs/src/hollaex.js +7 -7
  44. package/dist/cjs/src/htx.js +12 -34
  45. package/dist/cjs/src/huobijp.js +3 -3
  46. package/dist/cjs/src/idex.js +2 -2
  47. package/dist/cjs/src/independentreserve.js +2 -2
  48. package/dist/cjs/src/indodax.js +2 -2
  49. package/dist/cjs/src/kraken.js +8 -8
  50. package/dist/cjs/src/krakenfutures.js +6 -6
  51. package/dist/cjs/src/kucoin.js +15 -2
  52. package/dist/cjs/src/kucoinfutures.js +8 -8
  53. package/dist/cjs/src/kuna.js +16 -16
  54. package/dist/cjs/src/latoken.js +2 -2
  55. package/dist/cjs/src/lbank.js +10 -10
  56. package/dist/cjs/src/luno.js +4 -4
  57. package/dist/cjs/src/mercado.js +5 -5
  58. package/dist/cjs/src/mexc.js +6 -6
  59. package/dist/cjs/src/ndax.js +1 -1
  60. package/dist/cjs/src/novadax.js +9 -9
  61. package/dist/cjs/src/oceanex.js +7 -7
  62. package/dist/cjs/src/okcoin.js +13 -13
  63. package/dist/cjs/src/okx.js +23 -31
  64. package/dist/cjs/src/onetrading.js +4 -4
  65. package/dist/cjs/src/p2b.js +7 -7
  66. package/dist/cjs/src/phemex.js +12 -12
  67. package/dist/cjs/src/poloniexfutures.js +5 -5
  68. package/dist/cjs/src/pro/binance.js +167 -121
  69. package/dist/cjs/src/pro/kucoin.js +6 -7
  70. package/dist/cjs/src/pro/okx.js +19 -2
  71. package/dist/cjs/src/probit.js +11 -11
  72. package/dist/cjs/src/timex.js +7 -7
  73. package/dist/cjs/src/tokocrypto.js +9 -9
  74. package/dist/cjs/src/wavesexchange.js +3 -3
  75. package/dist/cjs/src/whitebit.js +5 -5
  76. package/dist/cjs/src/woo.js +1 -1
  77. package/dist/cjs/src/zaif.js +1 -1
  78. package/dist/cjs/src/zonda.js +7 -7
  79. package/examples/js/cli.js +0 -1
  80. package/examples/ts/cli.ts +0 -1
  81. package/js/ccxt.d.ts +1 -1
  82. package/js/ccxt.js +1 -1
  83. package/js/src/ace.js +5 -5
  84. package/js/src/ascendex.js +8 -8
  85. package/js/src/base/Exchange.d.ts +4 -3
  86. package/js/src/base/Exchange.js +76 -14
  87. package/js/src/bigone.js +12 -12
  88. package/js/src/binance.d.ts +0 -1
  89. package/js/src/binance.js +23 -35
  90. package/js/src/bingx.js +13 -9
  91. package/js/src/bit2c.js +1 -1
  92. package/js/src/bitbank.js +8 -8
  93. package/js/src/bitbns.js +5 -5
  94. package/js/src/bitfinex.js +1 -1
  95. package/js/src/bitfinex2.js +1 -1
  96. package/js/src/bitget.js +40 -28
  97. package/js/src/bithumb.js +5 -5
  98. package/js/src/bitmart.js +16 -16
  99. package/js/src/bitopro.js +1 -1
  100. package/js/src/bitrue.js +4 -4
  101. package/js/src/bitso.js +5 -5
  102. package/js/src/bitstamp.js +1 -1
  103. package/js/src/bitteam.js +8 -8
  104. package/js/src/bl3p.js +1 -1
  105. package/js/src/btcturk.js +6 -6
  106. package/js/src/bybit.d.ts +0 -3
  107. package/js/src/bybit.js +34 -98
  108. package/js/src/coincheck.js +4 -4
  109. package/js/src/coinex.js +12 -13
  110. package/js/src/coinlist.js +7 -7
  111. package/js/src/coinmate.js +4 -4
  112. package/js/src/coinmetro.js +3 -3
  113. package/js/src/coinone.js +5 -5
  114. package/js/src/coinspot.js +2 -2
  115. package/js/src/cryptocom.js +17 -17
  116. package/js/src/currencycom.js +1 -1
  117. package/js/src/delta.d.ts +0 -1
  118. package/js/src/delta.js +0 -8
  119. package/js/src/deribit.d.ts +0 -3
  120. package/js/src/deribit.js +16 -92
  121. package/js/src/digifinex.js +8 -8
  122. package/js/src/exmo.js +8 -8
  123. package/js/src/gate.d.ts +0 -1
  124. package/js/src/gate.js +0 -8
  125. package/js/src/hitbtc.js +5 -4
  126. package/js/src/hollaex.js +7 -7
  127. package/js/src/htx.js +12 -34
  128. package/js/src/huobijp.js +3 -3
  129. package/js/src/idex.js +2 -2
  130. package/js/src/independentreserve.js +2 -2
  131. package/js/src/indodax.js +2 -2
  132. package/js/src/kraken.js +8 -8
  133. package/js/src/krakenfutures.js +6 -6
  134. package/js/src/kucoin.d.ts +1 -0
  135. package/js/src/kucoin.js +16 -3
  136. package/js/src/kucoinfutures.js +8 -8
  137. package/js/src/kuna.js +16 -16
  138. package/js/src/latoken.js +2 -2
  139. package/js/src/lbank.js +10 -10
  140. package/js/src/luno.js +4 -4
  141. package/js/src/mercado.js +5 -5
  142. package/js/src/mexc.js +6 -6
  143. package/js/src/ndax.js +1 -1
  144. package/js/src/novadax.js +9 -9
  145. package/js/src/oceanex.js +7 -7
  146. package/js/src/okcoin.js +13 -13
  147. package/js/src/okx.d.ts +0 -1
  148. package/js/src/okx.js +23 -31
  149. package/js/src/onetrading.js +4 -4
  150. package/js/src/p2b.js +7 -7
  151. package/js/src/phemex.js +12 -12
  152. package/js/src/poloniexfutures.js +5 -5
  153. package/js/src/pro/binance.d.ts +5 -1
  154. package/js/src/pro/binance.js +168 -122
  155. package/js/src/pro/kucoin.js +6 -7
  156. package/js/src/pro/okx.js +19 -2
  157. package/js/src/probit.js +11 -11
  158. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  159. package/js/src/timex.js +7 -7
  160. package/js/src/tokocrypto.js +9 -9
  161. package/js/src/wavesexchange.js +3 -3
  162. package/js/src/whitebit.js +5 -5
  163. package/js/src/woo.js +1 -1
  164. package/js/src/zaif.js +1 -1
  165. package/js/src/zonda.js +7 -7
  166. package/package.json +1 -1
package/js/src/deribit.js CHANGED
@@ -407,82 +407,6 @@ export default class deribit extends Exchange {
407
407
  },
408
408
  });
409
409
  }
410
- convertExpireDate(date) {
411
- // parse YYMMDD to timestamp
412
- const year = date.slice(0, 2);
413
- const month = date.slice(2, 4);
414
- const day = date.slice(4, 6);
415
- const reconstructedDate = '20' + year + '-' + month + '-' + day + 'T00:00:00Z';
416
- return reconstructedDate;
417
- }
418
- convertMarketIdExpireDate(date) {
419
- // parse 19JAN24 to 240119
420
- const monthMappping = {
421
- 'JAN': '01',
422
- 'FEB': '02',
423
- 'MAR': '03',
424
- 'APR': '04',
425
- 'MAY': '05',
426
- 'JUN': '06',
427
- 'JUL': '07',
428
- 'AUG': '08',
429
- 'SEP': '09',
430
- 'OCT': '10',
431
- 'NOV': '11',
432
- 'DEC': '12',
433
- };
434
- const year = date.slice(0, 2);
435
- const monthName = date.slice(2, 5);
436
- const month = this.safeString(monthMappping, monthName);
437
- const day = date.slice(5, 7);
438
- const reconstructedDate = day + month + year;
439
- return reconstructedDate;
440
- }
441
- convertExpireDateToMarketIdDate(date) {
442
- // parse 240119 to 19JAN24
443
- const year = date.slice(0, 2);
444
- const monthRaw = date.slice(2, 4);
445
- let month = undefined;
446
- const day = date.slice(4, 6);
447
- if (monthRaw === '01') {
448
- month = 'JAN';
449
- }
450
- else if (monthRaw === '02') {
451
- month = 'FEB';
452
- }
453
- else if (monthRaw === '03') {
454
- month = 'MAR';
455
- }
456
- else if (monthRaw === '04') {
457
- month = 'APR';
458
- }
459
- else if (monthRaw === '05') {
460
- month = 'MAY';
461
- }
462
- else if (monthRaw === '06') {
463
- month = 'JUN';
464
- }
465
- else if (monthRaw === '07') {
466
- month = 'JUL';
467
- }
468
- else if (monthRaw === '08') {
469
- month = 'AUG';
470
- }
471
- else if (monthRaw === '09') {
472
- month = 'SEP';
473
- }
474
- else if (monthRaw === '10') {
475
- month = 'OCT';
476
- }
477
- else if (monthRaw === '11') {
478
- month = 'NOV';
479
- }
480
- else if (monthRaw === '12') {
481
- month = 'DEC';
482
- }
483
- const reconstructedDate = day + month + year;
484
- return reconstructedDate;
485
- }
486
410
  createExpiredOptionMarket(symbol) {
487
411
  // support expired option contracts
488
412
  let quote = 'USD';
@@ -1269,7 +1193,7 @@ export default class deribit extends Exchange {
1269
1193
  // "testnet": false
1270
1194
  // }
1271
1195
  //
1272
- const result = this.safeValue(response, 'result');
1196
+ const result = this.safeDict(response, 'result');
1273
1197
  return this.parseTicker(result, market);
1274
1198
  }
1275
1199
  async fetchTickers(symbols = undefined, params = {}) {
@@ -1556,7 +1480,7 @@ export default class deribit extends Exchange {
1556
1480
  // }
1557
1481
  //
1558
1482
  const result = this.safeValue(response, 'result', {});
1559
- const trades = this.safeValue(result, 'trades', []);
1483
+ const trades = this.safeList(result, 'trades', []);
1560
1484
  return this.parseTrades(trades, market, since, limit);
1561
1485
  }
1562
1486
  async fetchTradingFees(params = {}) {
@@ -1918,7 +1842,7 @@ export default class deribit extends Exchange {
1918
1842
  // }
1919
1843
  // }
1920
1844
  //
1921
- const result = this.safeValue(response, 'result');
1845
+ const result = this.safeDict(response, 'result');
1922
1846
  return this.parseOrder(result, market);
1923
1847
  }
1924
1848
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
@@ -2160,7 +2084,7 @@ export default class deribit extends Exchange {
2160
2084
  'order_id': id,
2161
2085
  };
2162
2086
  const response = await this.privateGetCancel(this.extend(request, params));
2163
- const result = this.safeValue(response, 'result', {});
2087
+ const result = this.safeDict(response, 'result', {});
2164
2088
  return this.parseOrder(result);
2165
2089
  }
2166
2090
  async cancelAllOrders(symbol = undefined, params = {}) {
@@ -2215,7 +2139,7 @@ export default class deribit extends Exchange {
2215
2139
  request['instrument_name'] = market['id'];
2216
2140
  response = await this.privateGetGetOpenOrdersByInstrument(this.extend(request, params));
2217
2141
  }
2218
- const result = this.safeValue(response, 'result', []);
2142
+ const result = this.safeList(response, 'result', []);
2219
2143
  return this.parseOrders(result, market, since, limit);
2220
2144
  }
2221
2145
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -2246,7 +2170,7 @@ export default class deribit extends Exchange {
2246
2170
  request['instrument_name'] = market['id'];
2247
2171
  response = await this.privateGetGetOrderHistoryByInstrument(this.extend(request, params));
2248
2172
  }
2249
- const result = this.safeValue(response, 'result', []);
2173
+ const result = this.safeList(response, 'result', []);
2250
2174
  return this.parseOrders(result, market, since, limit);
2251
2175
  }
2252
2176
  async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -2300,7 +2224,7 @@ export default class deribit extends Exchange {
2300
2224
  // }
2301
2225
  // }
2302
2226
  //
2303
- const result = this.safeValue(response, 'result', {});
2227
+ const result = this.safeList(response, 'result', []);
2304
2228
  return this.parseTrades(result, undefined, since, limit);
2305
2229
  }
2306
2230
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -2384,7 +2308,7 @@ export default class deribit extends Exchange {
2384
2308
  // }
2385
2309
  //
2386
2310
  const result = this.safeValue(response, 'result', {});
2387
- const trades = this.safeValue(result, 'trades', []);
2311
+ const trades = this.safeList(result, 'trades', []);
2388
2312
  return this.parseTrades(trades, market, since, limit);
2389
2313
  }
2390
2314
  async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -2432,7 +2356,7 @@ export default class deribit extends Exchange {
2432
2356
  // }
2433
2357
  //
2434
2358
  const result = this.safeValue(response, 'result', {});
2435
- const data = this.safeValue(result, 'data', []);
2359
+ const data = this.safeList(result, 'data', []);
2436
2360
  return this.parseTransactions(data, currency, since, limit, params);
2437
2361
  }
2438
2362
  async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -2484,7 +2408,7 @@ export default class deribit extends Exchange {
2484
2408
  // }
2485
2409
  //
2486
2410
  const result = this.safeValue(response, 'result', {});
2487
- const data = this.safeValue(result, 'data', []);
2411
+ const data = this.safeList(result, 'data', []);
2488
2412
  return this.parseTransactions(data, currency, since, limit, params);
2489
2413
  }
2490
2414
  parseTransactionStatus(status) {
@@ -2671,7 +2595,7 @@ export default class deribit extends Exchange {
2671
2595
  // }
2672
2596
  // }
2673
2597
  //
2674
- const result = this.safeValue(response, 'result');
2598
+ const result = this.safeDict(response, 'result');
2675
2599
  return this.parsePosition(result);
2676
2600
  }
2677
2601
  async fetchPositions(symbols = undefined, params = {}) {
@@ -2744,7 +2668,7 @@ export default class deribit extends Exchange {
2744
2668
  // ]
2745
2669
  // }
2746
2670
  //
2747
- const result = this.safeValue(response, 'result');
2671
+ const result = this.safeList(response, 'result');
2748
2672
  return this.parsePositions(result, symbols);
2749
2673
  }
2750
2674
  async fetchVolatilityHistory(code, params = {}) {
@@ -2866,7 +2790,7 @@ export default class deribit extends Exchange {
2866
2790
  // }
2867
2791
  //
2868
2792
  const result = this.safeValue(response, 'result', {});
2869
- const transfers = this.safeValue(result, 'data', []);
2793
+ const transfers = this.safeList(result, 'data', []);
2870
2794
  return this.parseTransfers(transfers, currency, since, limit, params);
2871
2795
  }
2872
2796
  async transfer(code, amount, fromAccount, toAccount, params = {}) {
@@ -2920,7 +2844,7 @@ export default class deribit extends Exchange {
2920
2844
  // }
2921
2845
  // }
2922
2846
  //
2923
- const result = this.safeValue(response, 'result', {});
2847
+ const result = this.safeDict(response, 'result', {});
2924
2848
  return this.parseTransfer(result, currency);
2925
2849
  }
2926
2850
  parseTransfer(transfer, currency = undefined) {
@@ -3053,7 +2977,7 @@ export default class deribit extends Exchange {
3053
2977
  // "testnet": true
3054
2978
  // }
3055
2979
  //
3056
- const data = this.safeValue(response, 'result', {});
2980
+ const data = this.safeList(response, 'result', []);
3057
2981
  return this.parseDepositWithdrawFees(data, codes, 'currency');
3058
2982
  }
3059
2983
  async fetchFundingRate(symbol, params = {}) {
@@ -3319,7 +3243,7 @@ export default class deribit extends Exchange {
3319
3243
  // }
3320
3244
  //
3321
3245
  const result = this.safeValue(response, 'result', {});
3322
- const settlements = this.safeValue(result, 'settlements', []);
3246
+ const settlements = this.safeList(result, 'settlements', []);
3323
3247
  return this.parseLiquidations(settlements, market, since, limit);
3324
3248
  }
3325
3249
  parseLiquidation(liquidation, market = undefined) {
@@ -1451,7 +1451,7 @@ export default class digifinex extends Exchange {
1451
1451
  // ]
1452
1452
  // }
1453
1453
  //
1454
- const data = this.safeValue(response, 'data', []);
1454
+ const data = this.safeList(response, 'data', []);
1455
1455
  return this.parseTrades(data, market, since, limit);
1456
1456
  }
1457
1457
  parseOHLCV(ohlcv, market = undefined) {
@@ -2237,7 +2237,7 @@ export default class digifinex extends Exchange {
2237
2237
  // ]
2238
2238
  // }
2239
2239
  //
2240
- const data = this.safeValue(response, 'data', []);
2240
+ const data = this.safeList(response, 'data', []);
2241
2241
  return this.parseOrders(data, market, since, limit);
2242
2242
  }
2243
2243
  async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -2345,7 +2345,7 @@ export default class digifinex extends Exchange {
2345
2345
  // ]
2346
2346
  // }
2347
2347
  //
2348
- const data = this.safeValue(response, 'data', []);
2348
+ const data = this.safeList(response, 'data', []);
2349
2349
  return this.parseOrders(data, market, since, limit);
2350
2350
  }
2351
2351
  async fetchOrder(id, symbol = undefined, params = {}) {
@@ -2548,7 +2548,7 @@ export default class digifinex extends Exchange {
2548
2548
  // }
2549
2549
  //
2550
2550
  const responseRequest = (marketType === 'swap') ? 'data' : 'list';
2551
- const data = this.safeValue(response, responseRequest, []);
2551
+ const data = this.safeList(response, responseRequest, []);
2552
2552
  return this.parseTrades(data, market, since, limit);
2553
2553
  }
2554
2554
  parseLedgerEntryType(type) {
@@ -2797,7 +2797,7 @@ export default class digifinex extends Exchange {
2797
2797
  // ]
2798
2798
  // }
2799
2799
  //
2800
- const data = this.safeValue(response, 'data', []);
2800
+ const data = this.safeList(response, 'data', []);
2801
2801
  return this.parseTransactions(data, currency, since, limit, { 'type': type });
2802
2802
  }
2803
2803
  async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -3760,7 +3760,7 @@ export default class digifinex extends Exchange {
3760
3760
  // ]
3761
3761
  // }
3762
3762
  //
3763
- const transfers = this.safeValue(response, 'data', []);
3763
+ const transfers = this.safeList(response, 'data', []);
3764
3764
  return this.parseTransfers(transfers, currency, since, limit);
3765
3765
  }
3766
3766
  async fetchLeverageTiers(symbols = undefined, params = {}) {
@@ -4013,7 +4013,7 @@ export default class digifinex extends Exchange {
4013
4013
  // "code": 200,
4014
4014
  // }
4015
4015
  //
4016
- const data = this.safeValue(response, 'data');
4016
+ const data = this.safeList(response, 'data');
4017
4017
  return this.parseDepositWithdrawFees(data, codes);
4018
4018
  }
4019
4019
  parseDepositWithdrawFees(response, codes = undefined, currencyIdKey = undefined) {
@@ -4210,7 +4210,7 @@ export default class digifinex extends Exchange {
4210
4210
  // ]
4211
4211
  // }
4212
4212
  //
4213
- const data = this.safeValue(response, 'data', []);
4213
+ const data = this.safeList(response, 'data', []);
4214
4214
  return this.parseIncomes(data, market, since, limit);
4215
4215
  }
4216
4216
  parseIncome(income, market = undefined) {
package/js/src/exmo.js CHANGED
@@ -900,7 +900,7 @@ export default class exmo extends Exchange {
900
900
  // ]
901
901
  // }
902
902
  //
903
- const candles = this.safeValue(response, 'candles', []);
903
+ const candles = this.safeList(response, 'candles', []);
904
904
  return this.parseOHLCVs(candles, market, timeframe, since, limit);
905
905
  }
906
906
  parseOHLCV(ohlcv, market = undefined) {
@@ -1027,7 +1027,7 @@ export default class exmo extends Exchange {
1027
1027
  request['limit'] = limit;
1028
1028
  }
1029
1029
  const response = await this.publicGetOrderBook(this.extend(request, params));
1030
- const result = this.safeValue(response, market['id']);
1030
+ const result = this.safeDict(response, market['id']);
1031
1031
  return this.parseOrderBook(result, market['symbol'], undefined, 'bid', 'ask');
1032
1032
  }
1033
1033
  async fetchOrderBooks(symbols = undefined, limit = undefined, params = {}) {
@@ -1295,7 +1295,7 @@ export default class exmo extends Exchange {
1295
1295
  // ]
1296
1296
  // }
1297
1297
  //
1298
- const data = this.safeValue(response, market['id'], []);
1298
+ const data = this.safeList(response, market['id'], []);
1299
1299
  return this.parseTrades(data, market, since, limit);
1300
1300
  }
1301
1301
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1686,7 +1686,7 @@ export default class exmo extends Exchange {
1686
1686
  // }
1687
1687
  //
1688
1688
  }
1689
- const trades = this.safeValue(response, 'trades');
1689
+ const trades = this.safeList(response, 'trades');
1690
1690
  return this.parseTrades(trades, market, since, limit);
1691
1691
  }
1692
1692
  async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -2428,7 +2428,7 @@ export default class exmo extends Exchange {
2428
2428
  // "count": 23
2429
2429
  // }
2430
2430
  //
2431
- const items = this.safeValue(response, 'items', []);
2431
+ const items = this.safeList(response, 'items', []);
2432
2432
  return this.parseTransactions(items, currency, since, limit);
2433
2433
  }
2434
2434
  async fetchWithdrawal(id, code = undefined, params = {}) {
@@ -2480,7 +2480,7 @@ export default class exmo extends Exchange {
2480
2480
  // }
2481
2481
  //
2482
2482
  const items = this.safeValue(response, 'items', []);
2483
- const first = this.safeValue(items, 0, {});
2483
+ const first = this.safeDict(items, 0, {});
2484
2484
  return this.parseTransaction(first, currency);
2485
2485
  }
2486
2486
  async fetchDeposit(id = undefined, code = undefined, params = {}) {
@@ -2532,7 +2532,7 @@ export default class exmo extends Exchange {
2532
2532
  // }
2533
2533
  //
2534
2534
  const items = this.safeValue(response, 'items', []);
2535
- const first = this.safeValue(items, 0, {});
2535
+ const first = this.safeDict(items, 0, {});
2536
2536
  return this.parseTransaction(first, currency);
2537
2537
  }
2538
2538
  async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -2586,7 +2586,7 @@ export default class exmo extends Exchange {
2586
2586
  // "count": 23
2587
2587
  // }
2588
2588
  //
2589
- const items = this.safeValue(response, 'items', []);
2589
+ const items = this.safeList(response, 'items', []);
2590
2590
  return this.parseTransactions(items, currency, since, limit);
2591
2591
  }
2592
2592
  sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
package/js/src/gate.d.ts CHANGED
@@ -7,7 +7,6 @@ import type { Int, OrderSide, OrderType, OHLCV, Trade, FundingRateHistory, OpenI
7
7
  export default class gate extends Exchange {
8
8
  describe(): any;
9
9
  setSandboxMode(enable: boolean): void;
10
- convertExpireDate(date: any): string;
11
10
  createExpiredOptionMarket(symbol: string): MarketInterface;
12
11
  safeMarket(marketId?: Str, market?: Market, delimiter?: Str, marketType?: Str): MarketInterface;
13
12
  fetchMarkets(params?: {}): Promise<Market[]>;
package/js/src/gate.js CHANGED
@@ -873,14 +873,6 @@ export default class gate extends Exchange {
873
873
  super.setSandboxMode(enable);
874
874
  this.options['sandboxMode'] = enable;
875
875
  }
876
- convertExpireDate(date) {
877
- // parse YYMMDD to timestamp
878
- const year = date.slice(0, 2);
879
- const month = date.slice(2, 4);
880
- const day = date.slice(4, 6);
881
- const reconstructedDate = '20' + year + '-' + month + '-' + day + 'T00:00:00Z';
882
- return reconstructedDate;
883
- }
884
876
  createExpiredOptionMarket(symbol) {
885
877
  // support expired option contracts
886
878
  const quote = 'USDT';
package/js/src/hitbtc.js CHANGED
@@ -1453,15 +1453,16 @@ export default class hitbtc extends Exchange {
1453
1453
  // ],
1454
1454
  // "fee": "1.22" // only for WITHDRAW
1455
1455
  // }
1456
- // }
1457
- //
1456
+ // },
1457
+ // "operation_id": "084cfcd5-06b9-4826-882e-fdb75ec3625d", // only for WITHDRAW
1458
+ // "commit_risk": {}
1458
1459
  // withdraw
1459
1460
  //
1460
1461
  // {
1461
1462
  // "id":"084cfcd5-06b9-4826-882e-fdb75ec3625d"
1462
1463
  // }
1463
1464
  //
1464
- const id = this.safeString(transaction, 'id');
1465
+ const id = this.safeString2(transaction, 'operation_id', 'id');
1465
1466
  const timestamp = this.parse8601(this.safeString(transaction, 'created_at'));
1466
1467
  const updated = this.parse8601(this.safeString(transaction, 'updated_at'));
1467
1468
  const type = this.parseTransactionType(this.safeString(transaction, 'type'));
@@ -1934,7 +1935,7 @@ export default class hitbtc extends Exchange {
1934
1935
  // }
1935
1936
  // ]
1936
1937
  //
1937
- const order = this.safeValue(response, 0);
1938
+ const order = this.safeDict(response, 0);
1938
1939
  return this.parseOrder(order, market);
1939
1940
  }
1940
1941
  async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
package/js/src/hollaex.js CHANGED
@@ -635,7 +635,7 @@ export default class hollaex extends Exchange {
635
635
  // ]
636
636
  // }
637
637
  //
638
- const trades = this.safeValue(response, market['id'], []);
638
+ const trades = this.safeList(response, market['id'], []);
639
639
  return this.parseTrades(trades, market, since, limit);
640
640
  }
641
641
  parseTrade(trade, market = undefined) {
@@ -1058,7 +1058,7 @@ export default class hollaex extends Exchange {
1058
1058
  // ]
1059
1059
  // }
1060
1060
  //
1061
- const data = this.safeValue(response, 'data', []);
1061
+ const data = this.safeList(response, 'data', []);
1062
1062
  return this.parseOrders(data, market, since, limit);
1063
1063
  }
1064
1064
  parseOrderStatus(status) {
@@ -1322,7 +1322,7 @@ export default class hollaex extends Exchange {
1322
1322
  // ]
1323
1323
  // }
1324
1324
  //
1325
- const data = this.safeValue(response, 'data', []);
1325
+ const data = this.safeList(response, 'data', []);
1326
1326
  return this.parseTrades(data, market, since, limit);
1327
1327
  }
1328
1328
  parseDepositAddress(depositAddress, currency = undefined) {
@@ -1475,7 +1475,7 @@ export default class hollaex extends Exchange {
1475
1475
  // ]
1476
1476
  // }
1477
1477
  //
1478
- const data = this.safeValue(response, 'data', []);
1478
+ const data = this.safeList(response, 'data', []);
1479
1479
  return this.parseTransactions(data, currency, since, limit);
1480
1480
  }
1481
1481
  async fetchWithdrawal(id, code = undefined, params = {}) {
@@ -1523,7 +1523,7 @@ export default class hollaex extends Exchange {
1523
1523
  // }
1524
1524
  //
1525
1525
  const data = this.safeValue(response, 'data', []);
1526
- const transaction = this.safeValue(data, 0, {});
1526
+ const transaction = this.safeDict(data, 0, {});
1527
1527
  return this.parseTransaction(transaction, currency);
1528
1528
  }
1529
1529
  async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1583,7 +1583,7 @@ export default class hollaex extends Exchange {
1583
1583
  // ]
1584
1584
  // }
1585
1585
  //
1586
- const data = this.safeValue(response, 'data', []);
1586
+ const data = this.safeList(response, 'data', []);
1587
1587
  return this.parseTransactions(data, currency, since, limit);
1588
1588
  }
1589
1589
  parseTransaction(transaction, currency = undefined) {
@@ -1844,7 +1844,7 @@ export default class hollaex extends Exchange {
1844
1844
  // "network":"https://api.hollaex.network"
1845
1845
  // }
1846
1846
  //
1847
- const coins = this.safeValue(response, 'coins');
1847
+ const coins = this.safeList(response, 'coins');
1848
1848
  return this.parseDepositWithdrawFees(coins, codes, 'symbol');
1849
1849
  }
1850
1850
  normalizeNumberIfNeeded(number) {
package/js/src/htx.js CHANGED
@@ -2202,7 +2202,7 @@ export default class htx extends Exchange {
2202
2202
  // "ts":1639547261293
2203
2203
  // }
2204
2204
  //
2205
- // inverse swaps, linear swaps, inverse futures
2205
+ // linear swap, linear future, inverse swap, inverse future
2206
2206
  //
2207
2207
  // {
2208
2208
  // "status":"ok",
@@ -2219,37 +2219,15 @@ export default class htx extends Exchange {
2219
2219
  // "high":"0.10725",
2220
2220
  // "amount":"2340267.415144052378486261756692535687481566",
2221
2221
  // "count":882,
2222
- // "vol":"24706"
2222
+ // "vol":"24706",
2223
+ // "trade_turnover":"840726.5048", // only in linear futures
2224
+ // "business_type":"futures", // only in linear futures
2225
+ // "contract_code":"BTC-USDT-CW", // only in linear futures, instead of 'symbol'
2223
2226
  // }
2224
2227
  // ],
2225
2228
  // "ts":1637504679376
2226
2229
  // }
2227
2230
  //
2228
- // linear futures
2229
- //
2230
- // {
2231
- // "status":"ok",
2232
- // "ticks":[
2233
- // {
2234
- // "id":1640745627,
2235
- // "ts":1640745627957,
2236
- // "ask":[48079.1,20],
2237
- // "bid":[47713.8,125],
2238
- // "business_type":"futures",
2239
- // "contract_code":"BTC-USDT-CW",
2240
- // "open":"49011.8",
2241
- // "close":"47934",
2242
- // "low":"47292.3",
2243
- // "high":"49011.8",
2244
- // "amount":"17.398",
2245
- // "count":1515,
2246
- // "vol":"17398",
2247
- // "trade_turnover":"840726.5048"
2248
- // }
2249
- // ],
2250
- // "ts":1640745627988
2251
- // }
2252
- //
2253
2231
  const tickers = this.safeValue2(response, 'data', 'ticks', []);
2254
2232
  const timestamp = this.safeInteger(response, 'ts');
2255
2233
  const result = {};
@@ -2389,7 +2367,7 @@ export default class htx extends Exchange {
2389
2367
  throw new NotSupported(this.id + ' fetchLastPrices() does not support ' + type + ' markets yet');
2390
2368
  }
2391
2369
  const tick = this.safeValue(response, 'tick', {});
2392
- const data = this.safeValue(tick, 'data', []);
2370
+ const data = this.safeList(tick, 'data', []);
2393
2371
  return this.parseLastPrices(data, symbols);
2394
2372
  }
2395
2373
  parseLastPrice(entry, market = undefined) {
@@ -3982,7 +3960,7 @@ export default class htx extends Exchange {
3982
3960
  // ]
3983
3961
  // }
3984
3962
  //
3985
- const data = this.safeValue(response, 'data', []);
3963
+ const data = this.safeList(response, 'data', []);
3986
3964
  return this.parseOrders(data, market, since, limit);
3987
3965
  }
3988
3966
  async fetchSpotOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -7379,7 +7357,7 @@ export default class htx extends Exchange {
7379
7357
  request['symbol'] = market['id'];
7380
7358
  response = await this.contractPrivatePostApiV3ContractFinancialRecordExact(this.extend(request, query));
7381
7359
  }
7382
- const data = this.safeValue(response, 'data', []);
7360
+ const data = this.safeList(response, 'data', []);
7383
7361
  return this.parseIncomes(data, market, since, limit);
7384
7362
  }
7385
7363
  async setLeverage(leverage, symbol = undefined, params = {}) {
@@ -8163,7 +8141,7 @@ export default class htx extends Exchange {
8163
8141
  // ]
8164
8142
  // }
8165
8143
  //
8166
- const data = this.safeValue(response, 'data');
8144
+ const data = this.safeList(response, 'data');
8167
8145
  return this.parseLeverageTiers(data, symbols, 'contract_code');
8168
8146
  }
8169
8147
  async fetchMarketLeverageTiers(symbol, params = {}) {
@@ -8367,7 +8345,7 @@ export default class htx extends Exchange {
8367
8345
  // }
8368
8346
  //
8369
8347
  const data = this.safeValue(response, 'data');
8370
- const tick = this.safeValue(data, 'tick');
8348
+ const tick = this.safeList(data, 'tick');
8371
8349
  return this.parseOpenInterests(tick, market, since, limit);
8372
8350
  }
8373
8351
  async fetchOpenInterest(symbol, params = {}) {
@@ -8875,7 +8853,7 @@ export default class htx extends Exchange {
8875
8853
  // ]
8876
8854
  // }
8877
8855
  //
8878
- const data = this.safeValue(response, 'data');
8856
+ const data = this.safeList(response, 'data');
8879
8857
  return this.parseDepositWithdrawFees(data, codes, 'currency');
8880
8858
  }
8881
8859
  parseDepositWithdrawFee(fee, currency = undefined) {
@@ -9103,7 +9081,7 @@ export default class htx extends Exchange {
9103
9081
  // "ts": 1604312615051
9104
9082
  // }
9105
9083
  //
9106
- const data = this.safeValue(response, 'data', []);
9084
+ const data = this.safeList(response, 'data', []);
9107
9085
  return this.parseLiquidations(data, market, since, limit);
9108
9086
  }
9109
9087
  parseLiquidation(liquidation, market = undefined) {
package/js/src/huobijp.js CHANGED
@@ -970,7 +970,7 @@ export default class huobijp extends Exchange {
970
970
  // ]
971
971
  // }
972
972
  //
973
- const data = this.safeValue(response, 'data', []);
973
+ const data = this.safeList(response, 'data', []);
974
974
  return this.parseOHLCVs(data, market, timeframe, since, limit);
975
975
  }
976
976
  async fetchAccounts(params = {}) {
@@ -1169,7 +1169,7 @@ export default class huobijp extends Exchange {
1169
1169
  'id': id,
1170
1170
  };
1171
1171
  const response = await this.privateGetOrderOrdersId(this.extend(request, params));
1172
- const order = this.safeValue(response, 'data');
1172
+ const order = this.safeDict(response, 'data');
1173
1173
  return this.parseOrder(order);
1174
1174
  }
1175
1175
  async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1267,7 +1267,7 @@ export default class huobijp extends Exchange {
1267
1267
  // ]
1268
1268
  // }
1269
1269
  //
1270
- const data = this.safeValue(response, 'data', []);
1270
+ const data = this.safeList(response, 'data', []);
1271
1271
  return this.parseOrders(data, market, since, limit);
1272
1272
  }
1273
1273
  parseOrderStatus(status) {
package/js/src/idex.js CHANGED
@@ -361,7 +361,7 @@ export default class idex extends Exchange {
361
361
  // }
362
362
  // ]
363
363
  const response = await this.publicGetTickers(this.extend(request, params));
364
- const ticker = this.safeValue(response, 0);
364
+ const ticker = this.safeDict(response, 0);
365
365
  return this.parseTicker(ticker, market);
366
366
  }
367
367
  async fetchTickers(symbols = undefined, params = {}) {
@@ -1491,7 +1491,7 @@ export default class idex extends Exchange {
1491
1491
  };
1492
1492
  // [ { orderId: "688336f0-ec50-11ea-9842-b332f8a34d0e" } ]
1493
1493
  const response = await this.privateDeleteOrders(this.extend(request, params));
1494
- const canceledOrder = this.safeValue(response, 0);
1494
+ const canceledOrder = this.safeDict(response, 0);
1495
1495
  return this.parseOrder(canceledOrder, market);
1496
1496
  }
1497
1497
  handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
@@ -508,7 +508,7 @@ export default class independentreserve extends Exchange {
508
508
  request['pageIndex'] = 1;
509
509
  request['pageSize'] = limit;
510
510
  const response = await this.privatePostGetOpenOrders(this.extend(request, params));
511
- const data = this.safeValue(response, 'Data', []);
511
+ const data = this.safeList(response, 'Data', []);
512
512
  return this.parseOrders(data, market, since, limit);
513
513
  }
514
514
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -536,7 +536,7 @@ export default class independentreserve extends Exchange {
536
536
  request['pageIndex'] = 1;
537
537
  request['pageSize'] = limit;
538
538
  const response = await this.privatePostGetClosedOrders(this.extend(request, params));
539
- const data = this.safeValue(response, 'Data', []);
539
+ const data = this.safeList(response, 'Data', []);
540
540
  return this.parseOrders(data, market, since, limit);
541
541
  }
542
542
  async fetchMyTrades(symbol = undefined, since = undefined, limit = 50, params = {}) {