ccxt 4.3.21 → 4.3.22

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
@@ -215,13 +215,13 @@ console.log(version, Object.keys(exchanges));
215
215
 
216
216
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
217
217
 
218
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.21/dist/ccxt.browser.js
219
- * unpkg: https://unpkg.com/ccxt@4.3.21/dist/ccxt.browser.js
218
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.22/dist/ccxt.browser.js
219
+ * unpkg: https://unpkg.com/ccxt@4.3.22/dist/ccxt.browser.js
220
220
 
221
221
  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.
222
222
 
223
223
  ```HTML
224
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.21/dist/ccxt.browser.js"></script>
224
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.22/dist/ccxt.browser.js"></script>
225
225
  ```
226
226
 
227
227
  Creates a global `ccxt` object:
package/dist/cjs/ccxt.js CHANGED
@@ -184,7 +184,7 @@ var woofipro$1 = require('./src/pro/woofipro.js');
184
184
 
185
185
  //-----------------------------------------------------------------------------
186
186
  // this is updated by vss.js when building
187
- const version = '4.3.21';
187
+ const version = '4.3.22';
188
188
  Exchange["default"].ccxtVersion = version;
189
189
  const exchanges = {
190
190
  'ace': ace,
@@ -5912,7 +5912,7 @@ class coinex extends coinex$1 {
5912
5912
  const code = this.safeString(response, 'code');
5913
5913
  const data = this.safeValue(response, 'data');
5914
5914
  const message = this.safeString(response, 'message');
5915
- if ((code !== '0') || ((message !== 'Success') && (message !== 'Succeeded') && (message !== 'Ok') && !data)) {
5915
+ if ((code !== '0') || ((message !== 'Success') && (message !== 'Succeeded') && (message.toLowerCase() !== 'ok') && !data)) {
5916
5916
  const feedback = this.id + ' ' + message;
5917
5917
  this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
5918
5918
  this.throwExactlyMatchedException(this.exceptions['exact'], code, feedback);
@@ -1704,6 +1704,26 @@ class phemex extends phemex$1 {
1704
1704
  // "execId": "8718cae",
1705
1705
  // "execStatus": 6
1706
1706
  // }
1707
+ // spot with fees paid using PT token
1708
+ // "createdAt": "1714990724076",
1709
+ // "symbol": "BTCUSDT",
1710
+ // "currency": "USDT",
1711
+ // "action": "1",
1712
+ // "tradeType": "1",
1713
+ // "execQtyRq": "0.003",
1714
+ // "execPriceRp": "64935",
1715
+ // "side": "2",
1716
+ // "orderQtyRq": "0.003",
1717
+ // "priceRp": "51600",
1718
+ // "execValueRv": "194.805",
1719
+ // "feeRateRr": "0.000495",
1720
+ // "execFeeRv": "0",
1721
+ // "ordType": "3",
1722
+ // "execId": "XXXXXX",
1723
+ // "execStatus": "7",
1724
+ // "posSide": "1",
1725
+ // "ptFeeRv": "0.110012249248",
1726
+ // "ptPriceRp": "0.876524893"
1707
1727
  //
1708
1728
  let priceString;
1709
1729
  let amountString;
@@ -1760,10 +1780,19 @@ class phemex extends phemex$1 {
1760
1780
  priceString = this.safeString(trade, 'execPriceRp');
1761
1781
  amountString = this.safeString(trade, 'execQtyRq');
1762
1782
  costString = this.safeString(trade, 'execValueRv');
1763
- feeCostString = this.safeString(trade, 'execFeeRv');
1783
+ feeCostString = this.omitZero(this.safeString(trade, 'execFeeRv'));
1764
1784
  feeRateString = this.safeString(trade, 'feeRateRr');
1765
- const currencyId = this.safeString(trade, 'currency');
1766
- feeCurrencyCode = this.safeCurrencyCode(currencyId);
1785
+ if (feeCostString !== undefined) {
1786
+ const currencyId = this.safeString(trade, 'currency');
1787
+ feeCurrencyCode = this.safeCurrencyCode(currencyId);
1788
+ }
1789
+ else {
1790
+ const ptFeeRv = this.omitZero(this.safeString(trade, 'ptFeeRv'));
1791
+ if (ptFeeRv !== undefined) {
1792
+ feeCostString = ptFeeRv;
1793
+ feeCurrencyCode = 'PT';
1794
+ }
1795
+ }
1767
1796
  }
1768
1797
  else {
1769
1798
  side = this.safeStringLower(trade, 'side');
@@ -1776,7 +1805,7 @@ class phemex extends phemex$1 {
1776
1805
  amountString = this.fromEv(this.safeString(trade, 'execBaseQtyEv'), market);
1777
1806
  amountString = this.safeString(trade, 'execQty', amountString);
1778
1807
  costString = this.fromEr(this.safeString2(trade, 'execQuoteQtyEv', 'execValueEv'), market);
1779
- feeCostString = this.fromEr(this.safeString(trade, 'execFeeEv'), market);
1808
+ feeCostString = this.fromEr(this.omitZero(this.safeString(trade, 'execFeeEv')), market);
1780
1809
  if (feeCostString !== undefined) {
1781
1810
  feeRateString = this.fromEr(this.safeString(trade, 'feeRateEr'), market);
1782
1811
  if (market['spot']) {
@@ -1790,6 +1819,12 @@ class phemex extends phemex$1 {
1790
1819
  }
1791
1820
  }
1792
1821
  }
1822
+ else {
1823
+ feeCostString = this.safeString(trade, 'ptFeeRv');
1824
+ if (feeCostString !== undefined) {
1825
+ feeCurrencyCode = 'PT';
1826
+ }
1827
+ }
1793
1828
  }
1794
1829
  fee = {
1795
1830
  'cost': feeCostString,
package/js/ccxt.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, Option, OptionChain, Conversion } from './src/base/types.js';
6
6
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
7
- declare const version = "4.3.20";
7
+ declare const version = "4.3.21";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
package/js/ccxt.js CHANGED
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
38
38
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.3.21';
41
+ const version = '4.3.22';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
package/js/src/coinex.js CHANGED
@@ -5915,7 +5915,7 @@ export default class coinex extends Exchange {
5915
5915
  const code = this.safeString(response, 'code');
5916
5916
  const data = this.safeValue(response, 'data');
5917
5917
  const message = this.safeString(response, 'message');
5918
- if ((code !== '0') || ((message !== 'Success') && (message !== 'Succeeded') && (message !== 'Ok') && !data)) {
5918
+ if ((code !== '0') || ((message !== 'Success') && (message !== 'Succeeded') && (message.toLowerCase() !== 'ok') && !data)) {
5919
5919
  const feedback = this.id + ' ' + message;
5920
5920
  this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
5921
5921
  this.throwExactlyMatchedException(this.exceptions['exact'], code, feedback);
package/js/src/phemex.js CHANGED
@@ -1707,6 +1707,26 @@ export default class phemex extends Exchange {
1707
1707
  // "execId": "8718cae",
1708
1708
  // "execStatus": 6
1709
1709
  // }
1710
+ // spot with fees paid using PT token
1711
+ // "createdAt": "1714990724076",
1712
+ // "symbol": "BTCUSDT",
1713
+ // "currency": "USDT",
1714
+ // "action": "1",
1715
+ // "tradeType": "1",
1716
+ // "execQtyRq": "0.003",
1717
+ // "execPriceRp": "64935",
1718
+ // "side": "2",
1719
+ // "orderQtyRq": "0.003",
1720
+ // "priceRp": "51600",
1721
+ // "execValueRv": "194.805",
1722
+ // "feeRateRr": "0.000495",
1723
+ // "execFeeRv": "0",
1724
+ // "ordType": "3",
1725
+ // "execId": "XXXXXX",
1726
+ // "execStatus": "7",
1727
+ // "posSide": "1",
1728
+ // "ptFeeRv": "0.110012249248",
1729
+ // "ptPriceRp": "0.876524893"
1710
1730
  //
1711
1731
  let priceString;
1712
1732
  let amountString;
@@ -1763,10 +1783,19 @@ export default class phemex extends Exchange {
1763
1783
  priceString = this.safeString(trade, 'execPriceRp');
1764
1784
  amountString = this.safeString(trade, 'execQtyRq');
1765
1785
  costString = this.safeString(trade, 'execValueRv');
1766
- feeCostString = this.safeString(trade, 'execFeeRv');
1786
+ feeCostString = this.omitZero(this.safeString(trade, 'execFeeRv'));
1767
1787
  feeRateString = this.safeString(trade, 'feeRateRr');
1768
- const currencyId = this.safeString(trade, 'currency');
1769
- feeCurrencyCode = this.safeCurrencyCode(currencyId);
1788
+ if (feeCostString !== undefined) {
1789
+ const currencyId = this.safeString(trade, 'currency');
1790
+ feeCurrencyCode = this.safeCurrencyCode(currencyId);
1791
+ }
1792
+ else {
1793
+ const ptFeeRv = this.omitZero(this.safeString(trade, 'ptFeeRv'));
1794
+ if (ptFeeRv !== undefined) {
1795
+ feeCostString = ptFeeRv;
1796
+ feeCurrencyCode = 'PT';
1797
+ }
1798
+ }
1770
1799
  }
1771
1800
  else {
1772
1801
  side = this.safeStringLower(trade, 'side');
@@ -1779,7 +1808,7 @@ export default class phemex extends Exchange {
1779
1808
  amountString = this.fromEv(this.safeString(trade, 'execBaseQtyEv'), market);
1780
1809
  amountString = this.safeString(trade, 'execQty', amountString);
1781
1810
  costString = this.fromEr(this.safeString2(trade, 'execQuoteQtyEv', 'execValueEv'), market);
1782
- feeCostString = this.fromEr(this.safeString(trade, 'execFeeEv'), market);
1811
+ feeCostString = this.fromEr(this.omitZero(this.safeString(trade, 'execFeeEv')), market);
1783
1812
  if (feeCostString !== undefined) {
1784
1813
  feeRateString = this.fromEr(this.safeString(trade, 'feeRateEr'), market);
1785
1814
  if (market['spot']) {
@@ -1793,6 +1822,12 @@ export default class phemex extends Exchange {
1793
1822
  }
1794
1823
  }
1795
1824
  }
1825
+ else {
1826
+ feeCostString = this.safeString(trade, 'ptFeeRv');
1827
+ if (feeCostString !== undefined) {
1828
+ feeCurrencyCode = 'PT';
1829
+ }
1830
+ }
1796
1831
  }
1797
1832
  fee = {
1798
1833
  'cost': feeCostString,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.3.21",
3
+ "version": "4.3.22",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.js",
6
6
  "type": "module",