ccxt 4.2.55 → 4.2.56

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.
package/README.md CHANGED
@@ -209,13 +209,13 @@ console.log(version, Object.keys(exchanges));
209
209
 
210
210
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
211
211
 
212
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.55/dist/ccxt.browser.js
213
- * unpkg: https://unpkg.com/ccxt@4.2.55/dist/ccxt.browser.js
212
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.56/dist/ccxt.browser.js
213
+ * unpkg: https://unpkg.com/ccxt@4.2.56/dist/ccxt.browser.js
214
214
 
215
215
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
216
216
 
217
217
  ```HTML
218
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.55/dist/ccxt.browser.js"></script>
218
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.56/dist/ccxt.browser.js"></script>
219
219
  ```
220
220
 
221
221
  Creates a global `ccxt` object:
package/build.sh CHANGED
@@ -77,7 +77,7 @@ build_and_test_all () {
77
77
  # if ! tox run-parallel; then
78
78
  # exit 1
79
79
  # fi
80
- # cd ..
80
+ # cd ..
81
81
  # fi
82
82
  fi
83
83
  npm run test-base
@@ -31991,7 +31991,9 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
31991
31991
  if (symbols !== undefined) {
31992
31992
  symbols = this.marketSymbols(symbols);
31993
31993
  const firstSymbol = this.safeString(symbols, 0);
31994
- market = this.market(firstSymbol);
31994
+ if (firstSymbol !== undefined) {
31995
+ market = this.market(firstSymbol);
31996
+ }
31995
31997
  }
31996
31998
  let type = undefined;
31997
31999
  [type, params] = this.handleMarketTypeAndParams('fetchTickers', market, params);
@@ -226337,7 +226339,10 @@ class bitget extends _bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
226337
226339
  }
226338
226340
  getInstType(market, params = {}) {
226339
226341
  let instType = undefined;
226340
- if ((market['swap']) || (market['future'])) {
226342
+ if (market === undefined) {
226343
+ [instType, params] = this.handleProductTypeAndParams(undefined, params);
226344
+ }
226345
+ else if ((market['swap']) || (market['future'])) {
226341
226346
  [instType, params] = this.handleProductTypeAndParams(market, params);
226342
226347
  }
226343
226348
  else {
@@ -226914,9 +226919,12 @@ class bitget extends _bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
226914
226919
  stored = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_3__/* .ArrayCache */ .ZL(limit);
226915
226920
  this.trades[symbol] = stored;
226916
226921
  }
226917
- const data = this.safeValue(message, 'data', []);
226918
- for (let j = 0; j < data.length; j++) {
226919
- const rawTrade = data[j];
226922
+ const data = this.safeList(message, 'data', []);
226923
+ const length = data.length;
226924
+ const maxLength = Math.max(length - 1, 0);
226925
+ // fix chronological order by reversing
226926
+ for (let i = maxLength; i >= 0; i--) {
226927
+ const rawTrade = data[i];
226920
226928
  const parsed = this.parseWsTrade(rawTrade, market);
226921
226929
  stored.append(parsed);
226922
226930
  }
@@ -226933,22 +226941,71 @@ class bitget extends _bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
226933
226941
  // "tradeId": "1116461060594286593"
226934
226942
  // }
226935
226943
  //
226936
- market = this.safeMarket(undefined, market);
226937
- const timestamp = this.safeInteger(trade, 'ts');
226944
+ // order with trade in it
226945
+ // {
226946
+ // accBaseVolume: '0.1',
226947
+ // baseVolume: '0.1',
226948
+ // cTime: '1709221342922',
226949
+ // clientOid: '1147122943507734528',
226950
+ // enterPointSource: 'API',
226951
+ // feeDetail: [Array],
226952
+ // fillFee: '-0.0049578',
226953
+ // fillFeeCoin: 'USDT',
226954
+ // fillNotionalUsd: '8.263',
226955
+ // fillPrice: '82.63',
226956
+ // fillTime: '1709221342986',
226957
+ // force: 'gtc',
226958
+ // instId: 'LTCUSDT',
226959
+ // leverage: '10',
226960
+ // marginCoin: 'USDT',
226961
+ // marginMode: 'crossed',
226962
+ // notionalUsd: '8.268',
226963
+ // orderId: '1147122943499345921',
226964
+ // orderType: 'market',
226965
+ // pnl: '0',
226966
+ // posMode: 'hedge_mode',
226967
+ // posSide: 'short',
226968
+ // price: '0',
226969
+ // priceAvg: '82.63',
226970
+ // reduceOnly: 'no',
226971
+ // side: 'sell',
226972
+ // size: '0.1',
226973
+ // status: 'filled',
226974
+ // tradeId: '1147122943772479563',
226975
+ // tradeScope: 'T',
226976
+ // tradeSide: 'open',
226977
+ // uTime: '1709221342986'
226978
+ // }
226979
+ //
226980
+ const instId = this.safeString(trade, 'instId');
226981
+ if (market === undefined) {
226982
+ market = this.safeMarket(instId, undefined, undefined, 'contract');
226983
+ }
226984
+ const timestamp = this.safeIntegerN(trade, ['uTime', 'cTime', 'ts']);
226985
+ const feeCost = this.safeString(trade, 'fillFee');
226986
+ let fee = undefined;
226987
+ if (feeCost !== undefined) {
226988
+ const feeCurrencyId = this.safeString(trade, 'fillFeeCoin');
226989
+ const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
226990
+ fee = {
226991
+ 'cost': _base_Precise_js__WEBPACK_IMPORTED_MODULE_2__/* .Precise */ .O.stringAbs(feeCost),
226992
+ 'currency': feeCurrencyCode,
226993
+ };
226994
+ }
226938
226995
  return this.safeTrade({
226939
226996
  'info': trade,
226940
226997
  'id': this.safeString(trade, 'tradeId'),
226941
- 'order': undefined,
226998
+ 'order': this.safeString(trade, 'orderId'),
226942
226999
  'timestamp': timestamp,
226943
227000
  'datetime': this.iso8601(timestamp),
226944
227001
  'symbol': market['symbol'],
226945
227002
  'type': undefined,
226946
227003
  'side': this.safeString(trade, 'side'),
226947
227004
  'takerOrMaker': undefined,
226948
- 'price': this.safeString(trade, 'price'),
227005
+ 'price': this.safeString2(trade, 'priceAvg', 'price'),
226949
227006
  'amount': this.safeString(trade, 'size'),
226950
- 'cost': undefined,
226951
- 'fee': undefined,
227007
+ 'cost': this.safeString(trade, 'fillNotionalUsd'),
227008
+ 'fee': fee,
226952
227009
  }, market);
226953
227010
  }
226954
227011
  async watchPositions(symbols = undefined, since = undefined, limit = undefined, params = {}) {
@@ -227353,6 +227410,9 @@ class bitget extends _bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
227353
227410
  const marketSymbols = {};
227354
227411
  for (let i = 0; i < data.length; i++) {
227355
227412
  const order = data[i];
227413
+ if ('tradeId' in order) {
227414
+ this.handleMyTrades(client, order);
227415
+ }
227356
227416
  const marketId = this.safeString(order, 'instId');
227357
227417
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
227358
227418
  const parsed = this.parseWsOrder(order, market);
@@ -227618,7 +227678,7 @@ class bitget extends _bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
227618
227678
  this.myTrades = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_3__/* .ArrayCache */ .ZL(limit);
227619
227679
  }
227620
227680
  const stored = this.myTrades;
227621
- const parsed = this.parseWsMyTrade(message);
227681
+ const parsed = this.parseWsTrade(message);
227622
227682
  stored.append(parsed);
227623
227683
  const symbol = parsed['symbol'];
227624
227684
  const messageHash = 'myTrades';
@@ -227626,68 +227686,6 @@ class bitget extends _bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
227626
227686
  const symbolSpecificMessageHash = 'myTrades:' + symbol;
227627
227687
  client.resolve(stored, symbolSpecificMessageHash);
227628
227688
  }
227629
- parseWsMyTrade(trade, market = undefined) {
227630
- //
227631
- // order and trade mixin (contract)
227632
- //
227633
- // {
227634
- // "accBaseVolume": "0",
227635
- // "cTime": "1701920553759",
227636
- // "clientOid": "1116501214318198793",
227637
- // "enterPointSource": "WEB",
227638
- // "feeDetail": [{
227639
- // "feeCoin": "USDT",
227640
- // "fee": "-0.162003"
227641
- // }],
227642
- // "force": "gtc",
227643
- // "instId": "BTCUSDT",
227644
- // "leverage": "20",
227645
- // "marginCoin": "USDT",
227646
- // "marginMode": "isolated",
227647
- // "notionalUsd": "105",
227648
- // "orderId": "1116501214293032964",
227649
- // "orderType": "limit",
227650
- // "posMode": "hedge_mode",
227651
- // "posSide": "long",
227652
- // "price": "35000",
227653
- // "reduceOnly": "no",
227654
- // "side": "buy",
227655
- // "size": "0.003",
227656
- // "status": "canceled",
227657
- // "tradeSide": "open",
227658
- // "uTime": "1701920595866"
227659
- // }
227660
- //
227661
- const marketId = this.safeString(trade, 'instId');
227662
- market = this.safeMarket(marketId, market, undefined, 'contract');
227663
- const timestamp = this.safeInteger2(trade, 'uTime', 'cTime');
227664
- const orderFee = this.safeValue(trade, 'feeDetail', []);
227665
- const fee = this.safeValue(orderFee, 0);
227666
- const feeAmount = this.safeString(fee, 'fee');
227667
- let feeObject = undefined;
227668
- if (feeAmount !== undefined) {
227669
- const feeCurrency = this.safeString(fee, 'feeCoin');
227670
- feeObject = {
227671
- 'cost': _base_Precise_js__WEBPACK_IMPORTED_MODULE_2__/* .Precise */ .O.stringAbs(feeAmount),
227672
- 'currency': this.safeCurrencyCode(feeCurrency),
227673
- };
227674
- }
227675
- return this.safeTrade({
227676
- 'info': trade,
227677
- 'id': undefined,
227678
- 'order': this.safeString(trade, 'orderId'),
227679
- 'timestamp': timestamp,
227680
- 'datetime': this.iso8601(timestamp),
227681
- 'symbol': market['symbol'],
227682
- 'type': this.safeString(trade, 'orderType'),
227683
- 'side': this.safeString(trade, 'side'),
227684
- 'takerOrMaker': undefined,
227685
- 'price': this.safeString(trade, 'price'),
227686
- 'amount': this.safeString(trade, 'size'),
227687
- 'cost': this.safeString(trade, 'notionalUsd'),
227688
- 'fee': feeObject,
227689
- }, market);
227690
- }
227691
227689
  async watchBalance(params = {}) {
227692
227690
  /**
227693
227691
  * @method
@@ -235235,15 +235233,29 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
235235
235233
  // "price24hPcnt": "-0.0388"
235236
235234
  // }
235237
235235
  // }
235236
+ // swap delta
235237
+ // {
235238
+ // "topic":"tickers.AAVEUSDT",
235239
+ // "type":"delta",
235240
+ // "data":{
235241
+ // "symbol":"AAVEUSDT",
235242
+ // "bid1Price":"112.89",
235243
+ // "bid1Size":"2.12",
235244
+ // "ask1Price":"112.90",
235245
+ // "ask1Size":"5.02"
235246
+ // },
235247
+ // "cs":78039939929,
235248
+ // "ts":1709210212704
235249
+ // }
235238
235250
  //
235239
235251
  const topic = this.safeString(message, 'topic', '');
235240
235252
  const updateType = this.safeString(message, 'type', '');
235241
- const data = this.safeValue(message, 'data', {});
235242
- const isSpot = this.safeString(data, 'fundingRate') === undefined;
235253
+ const data = this.safeDict(message, 'data', {});
235254
+ const isSpot = this.safeString(data, 'usdIndexPrice') !== undefined;
235243
235255
  const type = isSpot ? 'spot' : 'contract';
235244
235256
  let symbol = undefined;
235245
235257
  let parsed = undefined;
235246
- if ((updateType === 'snapshot') || isSpot) {
235258
+ if ((updateType === 'snapshot')) {
235247
235259
  parsed = this.parseTicker(data);
235248
235260
  symbol = parsed['symbol'];
235249
235261
  }
@@ -235254,8 +235266,8 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
235254
235266
  const market = this.safeMarket(marketId, undefined, undefined, type);
235255
235267
  symbol = market['symbol'];
235256
235268
  // update the info in place
235257
- const ticker = this.safeValue(this.tickers, symbol, {});
235258
- const rawTicker = this.safeValue(ticker, 'info', {});
235269
+ const ticker = this.safeDict(this.tickers, symbol, {});
235270
+ const rawTicker = this.safeDict(ticker, 'info', {});
235259
235271
  const merged = this.extend(rawTicker, data);
235260
235272
  parsed = this.parseTicker(merged);
235261
235273
  }
@@ -242689,7 +242701,7 @@ class currencycom extends _currencycom_js__WEBPACK_IMPORTED_MODULE_0__/* ["defau
242689
242701
  // "accountId": 5470310874305732,
242690
242702
  // "collateralCurrency": true,
242691
242703
  // "asset": "USD",
242692
- // "free": 47.82576735,
242704
+ // "free": 47.82576736,
242693
242705
  // "locked": 1.187925,
242694
242706
  // "default": true
242695
242707
  // },
@@ -243059,6 +243071,7 @@ class currencycom extends _currencycom_js__WEBPACK_IMPORTED_MODULE_0__/* ["defau
243059
243071
  orderbook = this.orderBook();
243060
243072
  }
243061
243073
  orderbook.reset({
243074
+ 'symbol': symbol,
243062
243075
  'timestamp': timestamp,
243063
243076
  'datetime': this.iso8601(timestamp),
243064
243077
  });
@@ -253301,7 +253314,7 @@ class kraken extends _kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
253301
253314
  // [
253302
253315
  // 0, // channelID
253303
253316
  // [ // price volume time side type misc
253304
- // [ "5541.20000", "0.15850568", "1534614057.321597", "s", "l", "" ],
253317
+ // [ "5541.20000", "0.15850568", "1534614057.321596", "s", "l", "" ],
253305
253318
  // [ "6060.00000", "0.02455000", "1534614057.324998", "b", "l", "" ],
253306
253319
  // ],
253307
253320
  // "trade",
@@ -288038,7 +288051,7 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
288038
288051
  // "trade_time": "104543",
288039
288052
  // "trade_date_kst": "20181122",
288040
288053
  // "trade_time_kst": "194543",
288041
- // "trade_timestamp": 1542883543097,
288054
+ // "trade_timestamp": 1542883543096,
288042
288055
  // "opening_price": 0.02976455,
288043
288056
  // "high_price": 0.02992577,
288044
288057
  // "low_price": 0.02934283,
@@ -295368,6 +295381,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
295368
295381
  'reduceMargin': false,
295369
295382
  'setLeverage': true,
295370
295383
  'setMargin': false,
295384
+ 'setPositionMode': true,
295371
295385
  'transfer': true,
295372
295386
  'withdraw': true, // exchange have that endpoint disabled atm, but was once implemented in ccxt per old docs: https://kronosresearch.github.io/wootrade-documents/#token-withdraw
295373
295387
  },
@@ -295442,10 +295456,16 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
295442
295456
  'client/trade/{tid}': 1,
295443
295457
  'order/{oid}/trades': 1,
295444
295458
  'client/trades': 1,
295459
+ 'client/hist_trades': 1,
295460
+ 'staking/yield_history': 1,
295461
+ 'client/holding': 1,
295445
295462
  'asset/deposit': 10,
295446
295463
  'asset/history': 60,
295447
295464
  'sub_account/all': 60,
295448
295465
  'sub_account/assets': 60,
295466
+ 'sub_account/asset_detail': 60,
295467
+ 'sub_account/ip_restriction': 10,
295468
+ 'asset/main_sub_transfer_history': 30,
295449
295469
  'token_interest': 60,
295450
295470
  'token_interest/{token}': 60,
295451
295471
  'interest/history': 60,
@@ -295458,9 +295478,12 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
295458
295478
  'post': {
295459
295479
  'order': 5,
295460
295480
  'asset/main_sub_transfer': 30,
295481
+ 'asset/ltv': 30,
295461
295482
  'asset/withdraw': 30,
295483
+ 'asset/internal_withdraw': 30,
295462
295484
  'interest/repay': 60,
295463
295485
  'client/account_mode': 120,
295486
+ 'client/position_mode': 5,
295464
295487
  'client/leverage': 120,
295465
295488
  },
295466
295489
  'delete': {
@@ -297882,6 +297905,37 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
297882
297905
  const sorted = this.sortBy(rates, 'timestamp');
297883
297906
  return this.filterBySymbolSinceLimit(sorted, symbol, since, limit);
297884
297907
  }
297908
+ async setPositionMode(hedged, symbol = undefined, params = {}) {
297909
+ /**
297910
+ * @method
297911
+ * @name woo#setPositionMode
297912
+ * @description set hedged to true or false for a market
297913
+ * @see https://docs.woo.org/#update-position-mode
297914
+ * @param {bool} hedged set to true to use HEDGE_MODE, false for ONE_WAY
297915
+ * @param {string} symbol not used by woo setPositionMode
297916
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
297917
+ * @returns {object} response from the exchange
297918
+ */
297919
+ let hedgeMode = undefined;
297920
+ if (hedged) {
297921
+ hedgeMode = 'HEDGE_MODE';
297922
+ }
297923
+ else {
297924
+ hedgeMode = 'ONE_WAY';
297925
+ }
297926
+ const request = {
297927
+ 'position_mode': hedgeMode,
297928
+ };
297929
+ const response = await this.v1PrivatePostClientPositionMode(this.extend(request, params));
297930
+ //
297931
+ // {
297932
+ // "success": true,
297933
+ // "data": {},
297934
+ // "timestamp": "1709195608551"
297935
+ // }
297936
+ //
297937
+ return response;
297938
+ }
297885
297939
  async fetchLeverage(symbol, params = {}) {
297886
297940
  await this.loadMarkets();
297887
297941
  const response = await this.v3PrivateGetAccountinfo(params);
@@ -307635,7 +307689,7 @@ SOFTWARE.
307635
307689
 
307636
307690
  //-----------------------------------------------------------------------------
307637
307691
  // this is updated by vss.js when building
307638
- const version = '4.2.55';
307692
+ const version = '4.2.56';
307639
307693
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
307640
307694
  //-----------------------------------------------------------------------------
307641
307695