ccxt 4.2.84 → 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 (164) hide show
  1. package/README.md +3 -3
  2. package/build.sh +1 -1
  3. package/dist/ccxt.browser.js +867 -904
  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 +30 -24
  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 +31 -95
  28. package/dist/cjs/src/coincheck.js +4 -4
  29. package/dist/cjs/src/coinex.js +11 -11
  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 +7 -7
  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 +5 -1
  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 +30 -24
  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 +31 -95
  108. package/js/src/coincheck.js +4 -4
  109. package/js/src/coinex.js +11 -11
  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 +7 -7
  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.js +5 -1
  135. package/js/src/kucoinfutures.js +8 -8
  136. package/js/src/kuna.js +16 -16
  137. package/js/src/latoken.js +2 -2
  138. package/js/src/lbank.js +10 -10
  139. package/js/src/luno.js +4 -4
  140. package/js/src/mercado.js +5 -5
  141. package/js/src/mexc.js +6 -6
  142. package/js/src/ndax.js +1 -1
  143. package/js/src/novadax.js +9 -9
  144. package/js/src/oceanex.js +7 -7
  145. package/js/src/okcoin.js +13 -13
  146. package/js/src/okx.d.ts +0 -1
  147. package/js/src/okx.js +23 -31
  148. package/js/src/onetrading.js +4 -4
  149. package/js/src/p2b.js +7 -7
  150. package/js/src/phemex.js +12 -12
  151. package/js/src/poloniexfutures.js +5 -5
  152. package/js/src/pro/binance.d.ts +5 -1
  153. package/js/src/pro/binance.js +168 -122
  154. package/js/src/pro/kucoin.js +6 -7
  155. package/js/src/pro/okx.js +19 -2
  156. package/js/src/probit.js +11 -11
  157. package/js/src/timex.js +7 -7
  158. package/js/src/tokocrypto.js +9 -9
  159. package/js/src/wavesexchange.js +3 -3
  160. package/js/src/whitebit.js +5 -5
  161. package/js/src/woo.js +1 -1
  162. package/js/src/zaif.js +1 -1
  163. package/js/src/zonda.js +7 -7
  164. package/package.json +1 -1
package/js/src/bybit.js CHANGED
@@ -1123,82 +1123,6 @@ export default class bybit extends Exchange {
1123
1123
  async upgradeUnifiedTradeAccount(params = {}) {
1124
1124
  return await this.privatePostV5AccountUpgradeToUta(params);
1125
1125
  }
1126
- convertExpireDate(date) {
1127
- // parse YYMMDD to timestamp
1128
- const year = date.slice(0, 2);
1129
- const month = date.slice(2, 4);
1130
- const day = date.slice(4, 6);
1131
- const reconstructedDate = '20' + year + '-' + month + '-' + day + 'T00:00:00Z';
1132
- return reconstructedDate;
1133
- }
1134
- convertExpireDateToMarketIdDate(date) {
1135
- // parse 231229 to 29DEC23
1136
- const year = date.slice(0, 2);
1137
- const monthRaw = date.slice(2, 4);
1138
- let month = undefined;
1139
- const day = date.slice(4, 6);
1140
- if (monthRaw === '01') {
1141
- month = 'JAN';
1142
- }
1143
- else if (monthRaw === '02') {
1144
- month = 'FEB';
1145
- }
1146
- else if (monthRaw === '03') {
1147
- month = 'MAR';
1148
- }
1149
- else if (monthRaw === '04') {
1150
- month = 'APR';
1151
- }
1152
- else if (monthRaw === '05') {
1153
- month = 'MAY';
1154
- }
1155
- else if (monthRaw === '06') {
1156
- month = 'JUN';
1157
- }
1158
- else if (monthRaw === '07') {
1159
- month = 'JUL';
1160
- }
1161
- else if (monthRaw === '08') {
1162
- month = 'AUG';
1163
- }
1164
- else if (monthRaw === '09') {
1165
- month = 'SEP';
1166
- }
1167
- else if (monthRaw === '10') {
1168
- month = 'OCT';
1169
- }
1170
- else if (monthRaw === '11') {
1171
- month = 'NOV';
1172
- }
1173
- else if (monthRaw === '12') {
1174
- month = 'DEC';
1175
- }
1176
- const reconstructedDate = day + month + year;
1177
- return reconstructedDate;
1178
- }
1179
- convertMarketIdExpireDate(date) {
1180
- // parse 22JAN23 to 230122
1181
- const monthMappping = {
1182
- 'JAN': '01',
1183
- 'FEB': '02',
1184
- 'MAR': '03',
1185
- 'APR': '04',
1186
- 'MAY': '05',
1187
- 'JUN': '06',
1188
- 'JUL': '07',
1189
- 'AUG': '08',
1190
- 'SEP': '09',
1191
- 'OCT': '10',
1192
- 'NOV': '11',
1193
- 'DEC': '12',
1194
- };
1195
- const year = date.slice(0, 2);
1196
- const monthName = date.slice(2, 5);
1197
- const month = this.safeString(monthMappping, monthName);
1198
- const day = date.slice(5, 7);
1199
- const reconstructedDate = day + month + year;
1200
- return reconstructedDate;
1201
- }
1202
1126
  createExpiredOptionMarket(symbol) {
1203
1127
  // support expired option contracts
1204
1128
  const quote = 'USD';
@@ -2093,7 +2017,7 @@ export default class bybit extends Exchange {
2093
2017
  //
2094
2018
  const result = this.safeValue(response, 'result', []);
2095
2019
  const tickers = this.safeValue(result, 'list', []);
2096
- const rawTicker = this.safeValue(tickers, 0);
2020
+ const rawTicker = this.safeDict(tickers, 0);
2097
2021
  return this.parseTicker(rawTicker, market);
2098
2022
  }
2099
2023
  async fetchTickers(symbols = undefined, params = {}) {
@@ -2104,6 +2028,7 @@ export default class bybit extends Exchange {
2104
2028
  * @see https://bybit-exchange.github.io/docs/v5/market/tickers
2105
2029
  * @param {string[]} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
2106
2030
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2031
+ * @param {string} [params.subType] *contract only* 'linear', 'inverse'
2107
2032
  * @returns {object} an array of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
2108
2033
  */
2109
2034
  await this.loadMarkets();
@@ -2142,12 +2067,17 @@ export default class bybit extends Exchange {
2142
2067
  };
2143
2068
  let type = undefined;
2144
2069
  [type, params] = this.handleMarketTypeAndParams('fetchTickers', market, params);
2145
- if (type === 'spot') {
2070
+ // Calls like `.fetchTickers (undefined, {subType:'inverse'})` should be supported for this exchange, so
2071
+ // as "options.defaultSubType" is also set in exchange options, we should consider `params.subType`
2072
+ // with higher priority and only default to spot, if `subType` is not set in params
2073
+ const passedSubType = this.safeString(params, 'subType');
2074
+ let subType = undefined;
2075
+ [subType, params] = this.handleSubTypeAndParams('fetchTickers', market, params, 'linear');
2076
+ // only if passedSubType is undefined, then use spot
2077
+ if (type === 'spot' && passedSubType === undefined) {
2146
2078
  request['category'] = 'spot';
2147
2079
  }
2148
- else if (type === 'swap' || type === 'future') {
2149
- let subType = undefined;
2150
- [subType, params] = this.handleSubTypeAndParams('fetchTickers', market, params, 'linear');
2080
+ else if (type === 'swap' || type === 'future' || subType !== undefined) {
2151
2081
  request['category'] = subType;
2152
2082
  }
2153
2083
  else if (type === 'option') {
@@ -2193,7 +2123,7 @@ export default class bybit extends Exchange {
2193
2123
  // }
2194
2124
  //
2195
2125
  const result = this.safeValue(response, 'result', {});
2196
- const tickerList = this.safeValue(result, 'list', []);
2126
+ const tickerList = this.safeList(result, 'list', []);
2197
2127
  return this.parseTickers(tickerList, parsedSymbols);
2198
2128
  }
2199
2129
  parseOHLCV(ohlcv, market = undefined) {
@@ -2332,7 +2262,7 @@ export default class bybit extends Exchange {
2332
2262
  // }
2333
2263
  //
2334
2264
  const result = this.safeValue(response, 'result', {});
2335
- const ohlcvs = this.safeValue(result, 'list', []);
2265
+ const ohlcvs = this.safeList(result, 'list', []);
2336
2266
  return this.parseOHLCVs(ohlcvs, market, timeframe, since, limit);
2337
2267
  }
2338
2268
  parseFundingRate(ticker, market = undefined) {
@@ -2809,7 +2739,7 @@ export default class bybit extends Exchange {
2809
2739
  // }
2810
2740
  //
2811
2741
  const result = this.safeValue(response, 'result', {});
2812
- const trades = this.safeValue(result, 'list', []);
2742
+ const trades = this.safeList(result, 'list', []);
2813
2743
  return this.parseTrades(trades, market, since, limit);
2814
2744
  }
2815
2745
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
@@ -3561,7 +3491,7 @@ export default class bybit extends Exchange {
3561
3491
  // "time": 1672211918471
3562
3492
  // }
3563
3493
  //
3564
- const order = this.safeValue(response, 'result', {});
3494
+ const order = this.safeDict(response, 'result', {});
3565
3495
  return this.parseOrder(order, market);
3566
3496
  }
3567
3497
  createOrderRequest(symbol, type, side, amount, price = undefined, params = {}, isUTA = true) {
@@ -4015,7 +3945,7 @@ export default class bybit extends Exchange {
4015
3945
  // "tpTriggerBy":"UNKNOWN"
4016
3946
  // }
4017
3947
  //
4018
- const order = this.safeValue(response, 'result', {});
3948
+ const order = this.safeDict(response, 'result', {});
4019
3949
  return this.parseOrder(order, market);
4020
3950
  }
4021
3951
  async editUsdcOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
@@ -4071,7 +4001,7 @@ export default class bybit extends Exchange {
4071
4001
  // "retExtMap": {}
4072
4002
  // }
4073
4003
  //
4074
- const result = this.safeValue(response, 'result', {});
4004
+ const result = this.safeDict(response, 'result', {});
4075
4005
  return this.parseOrder(result, market);
4076
4006
  }
4077
4007
  async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
@@ -4241,7 +4171,7 @@ export default class bybit extends Exchange {
4241
4171
  // "retExtMap": {}
4242
4172
  // }
4243
4173
  //
4244
- const result = this.safeValue(response, 'result', {});
4174
+ const result = this.safeDict(response, 'result', {});
4245
4175
  return this.parseOrder(result, market);
4246
4176
  }
4247
4177
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -4309,7 +4239,7 @@ export default class bybit extends Exchange {
4309
4239
  // "time": 1672217377164
4310
4240
  // }
4311
4241
  //
4312
- const result = this.safeValue(response, 'result', {});
4242
+ const result = this.safeDict(response, 'result', {});
4313
4243
  return this.parseOrder(result, market);
4314
4244
  }
4315
4245
  async cancelOrders(ids, symbol = undefined, params = {}) {
@@ -4606,7 +4536,7 @@ export default class bybit extends Exchange {
4606
4536
  // }
4607
4537
  //
4608
4538
  const result = this.safeValue(response, 'result', {});
4609
- const data = this.safeValue(result, 'dataList', []);
4539
+ const data = this.safeList(result, 'dataList', []);
4610
4540
  return this.parseOrders(data, market, since, limit);
4611
4541
  }
4612
4542
  async fetchOrderClassic(id, symbol = undefined, params = {}) {
@@ -5234,7 +5164,7 @@ export default class bybit extends Exchange {
5234
5164
  // }
5235
5165
  //
5236
5166
  const result = this.safeValue(response, 'result', {});
5237
- const dataList = this.safeValue(result, 'dataList', []);
5167
+ const dataList = this.safeList(result, 'dataList', []);
5238
5168
  return this.parseTrades(dataList, market, since, limit);
5239
5169
  }
5240
5170
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -5437,7 +5367,7 @@ export default class bybit extends Exchange {
5437
5367
  const chains = this.safeValue(result, 'chains', []);
5438
5368
  const chainsIndexedById = this.indexBy(chains, 'chain');
5439
5369
  const selectedNetworkId = this.selectNetworkIdFromRawNetworks(code, networkCode, chainsIndexedById);
5440
- const addressObject = this.safeValue(chainsIndexedById, selectedNetworkId, {});
5370
+ const addressObject = this.safeDict(chainsIndexedById, selectedNetworkId, {});
5441
5371
  return this.parseDepositAddress(addressObject, currency);
5442
5372
  }
5443
5373
  async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -5996,7 +5926,7 @@ export default class bybit extends Exchange {
5996
5926
  // "time": "1666892894902"
5997
5927
  // }
5998
5928
  //
5999
- const result = this.safeValue(response, 'result', {});
5929
+ const result = this.safeDict(response, 'result', {});
6000
5930
  return this.parseTransaction(result, currency);
6001
5931
  }
6002
5932
  async fetchPosition(symbol, params = {}) {
@@ -6405,6 +6335,12 @@ export default class bybit extends Exchange {
6405
6335
  if (timestamp === undefined) {
6406
6336
  timestamp = this.safeIntegerN(position, ['updatedTime', 'updatedAt']);
6407
6337
  }
6338
+ const tradeMode = this.safeInteger(position, 'tradeMode', 0);
6339
+ let marginMode = undefined;
6340
+ if ((!this.options['enableUnifiedAccount']) || (this.options['enableUnifiedAccount'] && market['inverse'])) {
6341
+ // tradeMode would work for classic and UTA(inverse)
6342
+ marginMode = (tradeMode === 1) ? 'isolated' : 'cross';
6343
+ }
6408
6344
  let collateralString = this.safeString(position, 'positionBalance');
6409
6345
  const entryPrice = this.omitZero(this.safeString2(position, 'entryPrice', 'avgPrice'));
6410
6346
  const liquidationPrice = this.omitZero(this.safeString(position, 'liqPrice'));
@@ -6468,7 +6404,7 @@ export default class bybit extends Exchange {
6468
6404
  'markPrice': this.safeNumber(position, 'markPrice'),
6469
6405
  'lastPrice': undefined,
6470
6406
  'collateral': this.parseNumber(collateralString),
6471
- 'marginMode': undefined,
6407
+ 'marginMode': marginMode,
6472
6408
  'side': side,
6473
6409
  'percentage': undefined,
6474
6410
  'stopLossPrice': this.safeNumber2(position, 'stop_loss', 'stopLoss'),
@@ -7530,7 +7466,7 @@ export default class bybit extends Exchange {
7530
7466
  // }
7531
7467
  //
7532
7468
  const data = this.safeValue(response, 'result', {});
7533
- const rows = this.safeValue(data, 'rows', []);
7469
+ const rows = this.safeList(data, 'rows', []);
7534
7470
  return this.parseDepositWithdrawFees(rows, codes, 'coin');
7535
7471
  }
7536
7472
  async fetchSettlementHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -488,7 +488,7 @@ export default class coincheck extends Exchange {
488
488
  // ]
489
489
  // }
490
490
  //
491
- const transactions = this.safeValue(response, 'data', []);
491
+ const transactions = this.safeList(response, 'data', []);
492
492
  return this.parseTrades(transactions, market, since, limit);
493
493
  }
494
494
  async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
@@ -522,7 +522,7 @@ export default class coincheck extends Exchange {
522
522
  // "created_at": "2021-12-08T14:10:33.000Z"
523
523
  // }
524
524
  //
525
- const data = this.safeValue(response, 'data', []);
525
+ const data = this.safeList(response, 'data', []);
526
526
  return this.parseTrades(data, market, since, limit);
527
527
  }
528
528
  async fetchTradingFees(params = {}) {
@@ -671,7 +671,7 @@ export default class coincheck extends Exchange {
671
671
  // }
672
672
  // ]
673
673
  // }
674
- const data = this.safeValue(response, 'deposits', []);
674
+ const data = this.safeList(response, 'deposits', []);
675
675
  return this.parseTransactions(data, currency, since, limit, { 'type': 'deposit' });
676
676
  }
677
677
  async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -717,7 +717,7 @@ export default class coincheck extends Exchange {
717
717
  // }
718
718
  // ]
719
719
  // }
720
- const data = this.safeValue(response, 'data', []);
720
+ const data = this.safeList(response, 'data', []);
721
721
  return this.parseTransactions(data, currency, since, limit, { 'type': 'withdrawal' });
722
722
  }
723
723
  parseTransactionStatus(status) {
package/js/src/coinex.js CHANGED
@@ -1374,7 +1374,7 @@ export default class coinex extends Exchange {
1374
1374
  // "message": "OK"
1375
1375
  // }
1376
1376
  //
1377
- const data = this.safeValue(response, 'data', []);
1377
+ const data = this.safeList(response, 'data', []);
1378
1378
  return this.parseOHLCVs(data, market, timeframe, since, limit);
1379
1379
  }
1380
1380
  async fetchMarginBalance(params = {}) {
@@ -2299,7 +2299,7 @@ export default class coinex extends Exchange {
2299
2299
  //
2300
2300
  // {"code":0,"data":{"status":"success"},"message":"OK"}
2301
2301
  //
2302
- const data = this.safeValue(response, 'data', {});
2302
+ const data = this.safeDict(response, 'data', {});
2303
2303
  return this.parseOrder(data, market);
2304
2304
  }
2305
2305
  async createOrders(orders, params = {}) {
@@ -2601,7 +2601,7 @@ export default class coinex extends Exchange {
2601
2601
  // "message": "Success"
2602
2602
  // }
2603
2603
  //
2604
- const data = this.safeValue(response, 'data', {});
2604
+ const data = this.safeDict(response, 'data', {});
2605
2605
  return this.parseOrder(data, market);
2606
2606
  }
2607
2607
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -2791,7 +2791,7 @@ export default class coinex extends Exchange {
2791
2791
  //
2792
2792
  // {"code":0,"data":{},"message":"Success"}
2793
2793
  //
2794
- const data = this.safeValue(response, 'data');
2794
+ const data = this.safeDict(response, 'data');
2795
2795
  return this.parseOrder(data, market);
2796
2796
  }
2797
2797
  async cancelAllOrders(symbol = undefined, params = {}) {
@@ -2988,7 +2988,7 @@ export default class coinex extends Exchange {
2988
2988
  // "message":"OK"
2989
2989
  // }
2990
2990
  //
2991
- const data = this.safeValue(response, 'data');
2991
+ const data = this.safeDict(response, 'data');
2992
2992
  return this.parseOrder(data, market);
2993
2993
  }
2994
2994
  async fetchOrdersByStatus(status, symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -3214,7 +3214,7 @@ export default class coinex extends Exchange {
3214
3214
  //
3215
3215
  const tradeRequest = (marketType === 'swap') ? 'records' : 'data';
3216
3216
  const data = this.safeValue(response, 'data');
3217
- const orders = this.safeValue(data, tradeRequest, []);
3217
+ const orders = this.safeList(data, tradeRequest, []);
3218
3218
  return this.parseOrders(orders, market, since, limit);
3219
3219
  }
3220
3220
  async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -3280,7 +3280,7 @@ export default class coinex extends Exchange {
3280
3280
  // },
3281
3281
  // "message": "Success"
3282
3282
  // }
3283
- const data = this.safeValue(response, 'data', {});
3283
+ const data = this.safeDict(response, 'data', {});
3284
3284
  return this.parseDepositAddress(data, currency);
3285
3285
  }
3286
3286
  async fetchDepositAddress(code, params = {}) {
@@ -3510,7 +3510,7 @@ export default class coinex extends Exchange {
3510
3510
  //
3511
3511
  const tradeRequest = swap ? 'records' : 'data';
3512
3512
  const data = this.safeValue(response, 'data');
3513
- const trades = this.safeValue(data, tradeRequest, []);
3513
+ const trades = this.safeList(data, tradeRequest, []);
3514
3514
  return this.parseTrades(trades, market, since, limit);
3515
3515
  }
3516
3516
  async fetchPositions(symbols = undefined, params = {}) {
@@ -3705,7 +3705,7 @@ export default class coinex extends Exchange {
3705
3705
  // "message": "OK"
3706
3706
  // }
3707
3707
  //
3708
- const data = this.safeValue(response, 'data', []);
3708
+ const data = this.safeList(response, 'data', []);
3709
3709
  return this.parsePosition(data[0], market);
3710
3710
  }
3711
3711
  parsePosition(position, market = undefined) {
@@ -4399,7 +4399,7 @@ export default class coinex extends Exchange {
4399
4399
  // "message": "Ok"
4400
4400
  // }
4401
4401
  //
4402
- const transaction = this.safeValue(response, 'data', {});
4402
+ const transaction = this.safeDict(response, 'data', {});
4403
4403
  return this.parseTransaction(transaction, currency);
4404
4404
  }
4405
4405
  parseTransactionStatus(status) {
@@ -4816,7 +4816,7 @@ export default class coinex extends Exchange {
4816
4816
  // }
4817
4817
  //
4818
4818
  const data = this.safeValue(response, 'data', {});
4819
- const transfers = this.safeValue(data, 'records', []);
4819
+ const transfers = this.safeList(data, 'records', []);
4820
4820
  return this.parseTransfers(transfers, currency, since, limit);
4821
4821
  }
4822
4822
  async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
@@ -715,7 +715,7 @@ export default class coinlist extends Exchange {
715
715
  // ]
716
716
  // }
717
717
  //
718
- const candles = this.safeValue(response, 'candles', []);
718
+ const candles = this.safeList(response, 'candles', []);
719
719
  return this.parseOHLCVs(candles, market, timeframe, since, limit);
720
720
  }
721
721
  parseOHLCV(ohlcv, market = undefined) {
@@ -793,7 +793,7 @@ export default class coinlist extends Exchange {
793
793
  // ]
794
794
  // }
795
795
  //
796
- const auctions = this.safeValue(response, 'auctions', []);
796
+ const auctions = this.safeList(response, 'auctions', []);
797
797
  return this.parseTrades(auctions, market, since, limit);
798
798
  }
799
799
  parseTrade(trade, market = undefined) {
@@ -1200,7 +1200,7 @@ export default class coinlist extends Exchange {
1200
1200
  // ]
1201
1201
  // }
1202
1202
  //
1203
- const fills = this.safeValue(response, 'fills', []);
1203
+ const fills = this.safeList(response, 'fills', []);
1204
1204
  return this.parseTrades(fills, market, since, limit);
1205
1205
  }
1206
1206
  async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1286,7 +1286,7 @@ export default class coinlist extends Exchange {
1286
1286
  // ]
1287
1287
  // }
1288
1288
  //
1289
- const orders = this.safeValue(response, 'orders', []);
1289
+ const orders = this.safeList(response, 'orders', []);
1290
1290
  return this.parseOrders(orders, market, since, limit);
1291
1291
  }
1292
1292
  async fetchOrder(id, symbol = undefined, params = {}) {
@@ -1530,7 +1530,7 @@ export default class coinlist extends Exchange {
1530
1530
  // "timestamp": "2023-10-26T11:30:55.376Z"
1531
1531
  // }
1532
1532
  //
1533
- const order = this.safeValue(response, 'order', {});
1533
+ const order = this.safeDict(response, 'order', {});
1534
1534
  return this.parseOrder(order, market);
1535
1535
  }
1536
1536
  async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
@@ -1818,7 +1818,7 @@ export default class coinlist extends Exchange {
1818
1818
  // ]
1819
1819
  // }
1820
1820
  //
1821
- const transfers = this.safeValue(response, 'transfers', []);
1821
+ const transfers = this.safeList(response, 'transfers', []);
1822
1822
  return this.parseTransfers(transfers, currency, since, limit);
1823
1823
  }
1824
1824
  parseTransfer(transfer, currency = undefined) {
@@ -1988,7 +1988,7 @@ export default class coinlist extends Exchange {
1988
1988
  // "transfer_id": "d4a2d8dd-7def-4545-a062-761683b9aa05"
1989
1989
  // }
1990
1990
  //
1991
- const data = this.safeValue(response, 'data', {});
1991
+ const data = this.safeDict(response, 'data', {});
1992
1992
  return this.parseTransaction(data, currency);
1993
1993
  }
1994
1994
  parseTransaction(transaction, currency = undefined) {
@@ -400,7 +400,7 @@ export default class coinmate extends Exchange {
400
400
  // }
401
401
  // }
402
402
  //
403
- const data = this.safeValue(response, 'data');
403
+ const data = this.safeDict(response, 'data');
404
404
  return this.parseTicker(data, market);
405
405
  }
406
406
  async fetchTickers(symbols = undefined, params = {}) {
@@ -683,7 +683,7 @@ export default class coinmate extends Exchange {
683
683
  request['timestampFrom'] = since;
684
684
  }
685
685
  const response = await this.privatePostTradeHistory(this.extend(request, params));
686
- const data = this.safeValue(response, 'data', []);
686
+ const data = this.safeList(response, 'data', []);
687
687
  return this.parseTrades(data, undefined, since, limit);
688
688
  }
689
689
  parseTrade(trade, market = undefined) {
@@ -784,7 +784,7 @@ export default class coinmate extends Exchange {
784
784
  // ]
785
785
  // }
786
786
  //
787
- const data = this.safeValue(response, 'data', []);
787
+ const data = this.safeList(response, 'data', []);
788
788
  return this.parseTrades(data, market, since, limit);
789
789
  }
790
790
  async fetchTradingFee(symbol, params = {}) {
@@ -1028,7 +1028,7 @@ export default class coinmate extends Exchange {
1028
1028
  market = this.market(symbol);
1029
1029
  }
1030
1030
  const response = await this.privatePostOrderById(this.extend(request, params));
1031
- const data = this.safeValue(response, 'data');
1031
+ const data = this.safeDict(response, 'data');
1032
1032
  return this.parseOrder(data, market);
1033
1033
  }
1034
1034
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -544,7 +544,7 @@ export default class coinmetro extends Exchange {
544
544
  // ]
545
545
  // }
546
546
  //
547
- const candleHistory = this.safeValue(response, 'candleHistory', []);
547
+ const candleHistory = this.safeList(response, 'candleHistory', []);
548
548
  return this.parseOHLCVs(candleHistory, market, timeframe, since, limit);
549
549
  }
550
550
  parseOHLCV(ohlcv, market = undefined) {
@@ -610,7 +610,7 @@ export default class coinmetro extends Exchange {
610
610
  // ]
611
611
  // }
612
612
  //
613
- const tickHistory = this.safeValue(response, 'tickHistory', []);
613
+ const tickHistory = this.safeList(response, 'tickHistory', []);
614
614
  return this.parseTrades(tickHistory, market, since, limit);
615
615
  }
616
616
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -883,7 +883,7 @@ export default class coinmetro extends Exchange {
883
883
  */
884
884
  await this.loadMarkets();
885
885
  const response = await this.publicGetExchangePrices(params);
886
- const latestPrices = this.safeValue(response, 'latestPrices', []);
886
+ const latestPrices = this.safeList(response, 'latestPrices', []);
887
887
  return this.parseTickers(latestPrices, symbols);
888
888
  }
889
889
  parseTicker(ticker, market = undefined) {
package/js/src/coinone.js CHANGED
@@ -515,7 +515,7 @@ export default class coinone extends Exchange {
515
515
  // ]
516
516
  // }
517
517
  //
518
- const data = this.safeValue(response, 'tickers', []);
518
+ const data = this.safeList(response, 'tickers', []);
519
519
  return this.parseTickers(data, symbols);
520
520
  }
521
521
  async fetchTicker(symbol, params = {}) {
@@ -569,7 +569,7 @@ export default class coinone extends Exchange {
569
569
  // }
570
570
  //
571
571
  const data = this.safeValue(response, 'tickers', []);
572
- const ticker = this.safeValue(data, 0, {});
572
+ const ticker = this.safeDict(data, 0, {});
573
573
  return this.parseTicker(ticker, market);
574
574
  }
575
575
  parseTicker(ticker, market = undefined) {
@@ -733,7 +733,7 @@ export default class coinone extends Exchange {
733
733
  // ]
734
734
  // }
735
735
  //
736
- const data = this.safeValue(response, 'transactions', []);
736
+ const data = this.safeList(response, 'transactions', []);
737
737
  return this.parseTrades(data, market, since, limit);
738
738
  }
739
739
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
@@ -979,7 +979,7 @@ export default class coinone extends Exchange {
979
979
  // ]
980
980
  // }
981
981
  //
982
- const limitOrders = this.safeValue(response, 'limitOrders', []);
982
+ const limitOrders = this.safeList(response, 'limitOrders', []);
983
983
  return this.parseOrders(limitOrders, market, since, limit);
984
984
  }
985
985
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1022,7 +1022,7 @@ export default class coinone extends Exchange {
1022
1022
  // ]
1023
1023
  // }
1024
1024
  //
1025
- const completeOrders = this.safeValue(response, 'completeOrders', []);
1025
+ const completeOrders = this.safeList(response, 'completeOrders', []);
1026
1026
  return this.parseTrades(completeOrders, market, since, limit);
1027
1027
  }
1028
1028
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -285,7 +285,7 @@ export default class coinspot extends Exchange {
285
285
  // }
286
286
  // }
287
287
  //
288
- const ticker = this.safeValue(prices, id);
288
+ const ticker = this.safeDict(prices, id);
289
289
  return this.parseTicker(ticker, market);
290
290
  }
291
291
  async fetchTickers(symbols = undefined, params = {}) {
@@ -357,7 +357,7 @@ export default class coinspot extends Exchange {
357
357
  // ],
358
358
  // }
359
359
  //
360
- const trades = this.safeValue(response, 'orders', []);
360
+ const trades = this.safeList(response, 'orders', []);
361
361
  return this.parseTrades(trades, market, since, limit);
362
362
  }
363
363
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {