ccxt 4.3.15 → 4.3.16
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 +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/alpaca.js +1 -0
- package/dist/cjs/src/ascendex.js +1 -0
- package/dist/cjs/src/base/Exchange.js +24 -15
- package/dist/cjs/src/base/ws/WsClient.js +4 -0
- package/dist/cjs/src/binance.js +1 -0
- package/dist/cjs/src/bingx.js +1 -0
- package/dist/cjs/src/bitmex.js +1 -0
- package/dist/cjs/src/bybit.js +1 -0
- package/dist/cjs/src/coinbaseinternational.js +1 -0
- package/dist/cjs/src/coinmetro.js +1 -0
- package/dist/cjs/src/cryptocom.js +1 -0
- package/dist/cjs/src/currencycom.js +1 -0
- package/dist/cjs/src/deribit.js +1 -0
- package/dist/cjs/src/gate.js +1 -0
- package/dist/cjs/src/gemini.js +1 -0
- package/dist/cjs/src/hitbtc.js +1 -0
- package/dist/cjs/src/hollaex.js +1 -0
- package/dist/cjs/src/hyperliquid.js +5 -0
- package/dist/cjs/src/idex.js +1 -0
- package/dist/cjs/src/krakenfutures.js +1 -0
- package/dist/cjs/src/ndax.js +1 -0
- package/dist/cjs/src/okx.js +1 -0
- package/dist/cjs/src/phemex.js +1 -0
- package/dist/cjs/src/poloniex.js +1 -0
- package/dist/cjs/src/probit.js +1 -0
- package/dist/cjs/src/wavesexchange.js +1 -0
- package/dist/cjs/src/woo.js +1 -0
- package/dist/cjs/src/zaif.js +1 -1
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/alpaca.js +1 -0
- package/js/src/ascendex.js +1 -0
- package/js/src/base/Exchange.d.ts +1 -0
- package/js/src/base/Exchange.js +24 -15
- package/js/src/base/errors.d.ts +37 -37
- package/js/src/base/ws/WsClient.d.ts +1 -1
- package/js/src/base/ws/WsClient.js +4 -0
- package/js/src/binance.js +1 -0
- package/js/src/bingx.js +1 -0
- package/js/src/bitmex.js +1 -0
- package/js/src/bybit.js +1 -0
- package/js/src/coinbaseinternational.js +1 -0
- package/js/src/coinmetro.js +1 -0
- package/js/src/cryptocom.js +1 -0
- package/js/src/currencycom.js +1 -0
- package/js/src/deribit.js +1 -0
- package/js/src/gate.js +1 -0
- package/js/src/gemini.js +1 -0
- package/js/src/hitbtc.js +1 -0
- package/js/src/hollaex.js +1 -0
- package/js/src/hyperliquid.js +5 -0
- package/js/src/idex.js +1 -0
- package/js/src/krakenfutures.js +1 -0
- package/js/src/ndax.js +1 -0
- package/js/src/okx.js +1 -0
- package/js/src/phemex.js +1 -0
- package/js/src/poloniex.js +1 -0
- package/js/src/probit.js +1 -0
- package/js/src/wavesexchange.js +1 -0
- package/js/src/woo.js +1 -0
- package/js/src/zaif.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -213,13 +213,13 @@ console.log(version, Object.keys(exchanges));
|
|
|
213
213
|
|
|
214
214
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
|
215
215
|
|
|
216
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
|
217
|
-
* unpkg: https://unpkg.com/ccxt@4.3.
|
|
216
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.16/dist/ccxt.browser.js
|
|
217
|
+
* unpkg: https://unpkg.com/ccxt@4.3.16/dist/ccxt.browser.js
|
|
218
218
|
|
|
219
219
|
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.
|
|
220
220
|
|
|
221
221
|
```HTML
|
|
222
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
|
222
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.16/dist/ccxt.browser.js"></script>
|
|
223
223
|
```
|
|
224
224
|
|
|
225
225
|
Creates a global `ccxt` object:
|
package/dist/cjs/ccxt.js
CHANGED
|
@@ -182,7 +182,7 @@ var woo$1 = require('./src/pro/woo.js');
|
|
|
182
182
|
|
|
183
183
|
//-----------------------------------------------------------------------------
|
|
184
184
|
// this is updated by vss.js when building
|
|
185
|
-
const version = '4.3.
|
|
185
|
+
const version = '4.3.16';
|
|
186
186
|
Exchange["default"].ccxtVersion = version;
|
|
187
187
|
const exchanges = {
|
|
188
188
|
'ace': ace,
|
package/dist/cjs/src/alpaca.js
CHANGED
package/dist/cjs/src/ascendex.js
CHANGED
|
@@ -366,6 +366,7 @@ class Exchange {
|
|
|
366
366
|
'publicAPI': true,
|
|
367
367
|
'privateAPI': true,
|
|
368
368
|
'CORS': undefined,
|
|
369
|
+
'sandbox': undefined,
|
|
369
370
|
'spot': undefined,
|
|
370
371
|
'margin': undefined,
|
|
371
372
|
'swap': undefined,
|
|
@@ -5848,24 +5849,26 @@ class Exchange {
|
|
|
5848
5849
|
let maxRetries = undefined;
|
|
5849
5850
|
[maxRetries, params] = this.handleOptionAndParams(params, method, 'maxRetries', 3);
|
|
5850
5851
|
let errors$1 = 0;
|
|
5851
|
-
|
|
5852
|
-
|
|
5853
|
-
|
|
5854
|
-
|
|
5855
|
-
|
|
5856
|
-
|
|
5857
|
-
|
|
5858
|
-
|
|
5859
|
-
catch (e) {
|
|
5860
|
-
if (e instanceof errors.RateLimitExceeded) {
|
|
5861
|
-
throw e; // if we are rate limited, we should not retry and fail fast
|
|
5852
|
+
while (errors$1 <= maxRetries) {
|
|
5853
|
+
try {
|
|
5854
|
+
if (timeframe && method !== 'fetchFundingRateHistory') {
|
|
5855
|
+
return await this[method](symbol, timeframe, since, limit, params);
|
|
5856
|
+
}
|
|
5857
|
+
else {
|
|
5858
|
+
return await this[method](symbol, since, limit, params);
|
|
5859
|
+
}
|
|
5862
5860
|
}
|
|
5863
|
-
|
|
5864
|
-
|
|
5865
|
-
|
|
5861
|
+
catch (e) {
|
|
5862
|
+
if (e instanceof errors.RateLimitExceeded) {
|
|
5863
|
+
throw e; // if we are rate limited, we should not retry and fail fast
|
|
5864
|
+
}
|
|
5865
|
+
errors$1 += 1;
|
|
5866
|
+
if (errors$1 > maxRetries) {
|
|
5867
|
+
throw e;
|
|
5868
|
+
}
|
|
5866
5869
|
}
|
|
5867
5870
|
}
|
|
5868
|
-
return
|
|
5871
|
+
return [];
|
|
5869
5872
|
}
|
|
5870
5873
|
async fetchPaginatedCallDeterministic(method, symbol = undefined, since = undefined, limit = undefined, timeframe = undefined, params = {}, maxEntriesPerRequest = undefined) {
|
|
5871
5874
|
let maxCalls = undefined;
|
|
@@ -5879,6 +5882,9 @@ class Exchange {
|
|
|
5879
5882
|
if (since !== undefined) {
|
|
5880
5883
|
currentSince = Math.max(currentSince, since);
|
|
5881
5884
|
}
|
|
5885
|
+
else {
|
|
5886
|
+
currentSince = Math.max(currentSince, 1241440531000); // avoid timestamps older than 2009
|
|
5887
|
+
}
|
|
5882
5888
|
const until = this.safeInteger2(params, 'until', 'till'); // do not omit it here
|
|
5883
5889
|
if (until !== undefined) {
|
|
5884
5890
|
const requiredCalls = Math.ceil((until - since) / step);
|
|
@@ -5890,6 +5896,9 @@ class Exchange {
|
|
|
5890
5896
|
if ((until !== undefined) && (currentSince >= until)) {
|
|
5891
5897
|
break;
|
|
5892
5898
|
}
|
|
5899
|
+
if (currentSince >= current) {
|
|
5900
|
+
break;
|
|
5901
|
+
}
|
|
5893
5902
|
tasks.push(this.safeDeterministicCall(method, symbol, currentSince, maxEntriesPerRequest, timeframe, params));
|
|
5894
5903
|
currentSince = this.sum(currentSince, step) - 1;
|
|
5895
5904
|
}
|
|
@@ -16,6 +16,10 @@ var WebSocket__default = /*#__PURE__*/_interopDefaultLegacy(WebSocket);
|
|
|
16
16
|
// eslint-disable-next-line no-restricted-globals
|
|
17
17
|
const WebSocketPlatform = platform.isNode ? WebSocket__default["default"] : self.WebSocket;
|
|
18
18
|
class WsClient extends Client {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.startedConnecting = false;
|
|
22
|
+
}
|
|
19
23
|
createConnection() {
|
|
20
24
|
if (this.verbose) {
|
|
21
25
|
this.log(new Date(), 'connecting to', this.url);
|
package/dist/cjs/src/binance.js
CHANGED
package/dist/cjs/src/bingx.js
CHANGED
package/dist/cjs/src/bitmex.js
CHANGED
package/dist/cjs/src/bybit.js
CHANGED
package/dist/cjs/src/deribit.js
CHANGED
package/dist/cjs/src/gate.js
CHANGED
package/dist/cjs/src/gemini.js
CHANGED
package/dist/cjs/src/hitbtc.js
CHANGED
package/dist/cjs/src/hollaex.js
CHANGED
|
@@ -106,6 +106,7 @@ class hyperliquid extends hyperliquid$1 {
|
|
|
106
106
|
'reduceMargin': true,
|
|
107
107
|
'repayCrossMargin': false,
|
|
108
108
|
'repayIsolatedMargin': false,
|
|
109
|
+
'sandbox': true,
|
|
109
110
|
'setLeverage': true,
|
|
110
111
|
'setMarginMode': true,
|
|
111
112
|
'setPositionMode': false,
|
|
@@ -440,6 +441,10 @@ class hyperliquid extends hyperliquid$1 {
|
|
|
440
441
|
for (let i = 0; i < meta.length; i++) {
|
|
441
442
|
const market = this.safeDict(meta, i, {});
|
|
442
443
|
const marketName = this.safeString(market, 'name');
|
|
444
|
+
if (marketName.indexOf('/') < 0) {
|
|
445
|
+
// there are some weird spot markets in testnet, eg @2
|
|
446
|
+
continue;
|
|
447
|
+
}
|
|
443
448
|
const marketParts = marketName.split('/');
|
|
444
449
|
const baseName = this.safeString(marketParts, 0);
|
|
445
450
|
const quoteId = this.safeString(marketParts, 1);
|
package/dist/cjs/src/idex.js
CHANGED
package/dist/cjs/src/ndax.js
CHANGED
package/dist/cjs/src/okx.js
CHANGED
package/dist/cjs/src/phemex.js
CHANGED
package/dist/cjs/src/poloniex.js
CHANGED
package/dist/cjs/src/probit.js
CHANGED
package/dist/cjs/src/woo.js
CHANGED
package/dist/cjs/src/zaif.js
CHANGED
|
@@ -675,7 +675,7 @@ class zaif extends zaif$1 {
|
|
|
675
675
|
};
|
|
676
676
|
}
|
|
677
677
|
customNonce() {
|
|
678
|
-
const num = (this.milliseconds() / 1000)
|
|
678
|
+
const num = this.numberToString(this.milliseconds() / 1000);
|
|
679
679
|
const nonce = parseFloat(num);
|
|
680
680
|
return nonce.toFixed(8);
|
|
681
681
|
}
|
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.
|
|
7
|
+
declare const version = "4.3.15";
|
|
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.
|
|
41
|
+
const version = '4.3.16';
|
|
42
42
|
Exchange.ccxtVersion = version;
|
|
43
43
|
//-----------------------------------------------------------------------------
|
|
44
44
|
import ace from './src/ace.js';
|
package/js/src/alpaca.js
CHANGED
package/js/src/ascendex.js
CHANGED
package/js/src/base/Exchange.js
CHANGED
|
@@ -351,6 +351,7 @@ export default class Exchange {
|
|
|
351
351
|
'publicAPI': true,
|
|
352
352
|
'privateAPI': true,
|
|
353
353
|
'CORS': undefined,
|
|
354
|
+
'sandbox': undefined,
|
|
354
355
|
'spot': undefined,
|
|
355
356
|
'margin': undefined,
|
|
356
357
|
'swap': undefined,
|
|
@@ -5835,24 +5836,26 @@ export default class Exchange {
|
|
|
5835
5836
|
let maxRetries = undefined;
|
|
5836
5837
|
[maxRetries, params] = this.handleOptionAndParams(params, method, 'maxRetries', 3);
|
|
5837
5838
|
let errors = 0;
|
|
5838
|
-
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
|
|
5842
|
-
|
|
5843
|
-
|
|
5844
|
-
|
|
5845
|
-
|
|
5846
|
-
catch (e) {
|
|
5847
|
-
if (e instanceof RateLimitExceeded) {
|
|
5848
|
-
throw e; // if we are rate limited, we should not retry and fail fast
|
|
5839
|
+
while (errors <= maxRetries) {
|
|
5840
|
+
try {
|
|
5841
|
+
if (timeframe && method !== 'fetchFundingRateHistory') {
|
|
5842
|
+
return await this[method](symbol, timeframe, since, limit, params);
|
|
5843
|
+
}
|
|
5844
|
+
else {
|
|
5845
|
+
return await this[method](symbol, since, limit, params);
|
|
5846
|
+
}
|
|
5849
5847
|
}
|
|
5850
|
-
|
|
5851
|
-
|
|
5852
|
-
|
|
5848
|
+
catch (e) {
|
|
5849
|
+
if (e instanceof RateLimitExceeded) {
|
|
5850
|
+
throw e; // if we are rate limited, we should not retry and fail fast
|
|
5851
|
+
}
|
|
5852
|
+
errors += 1;
|
|
5853
|
+
if (errors > maxRetries) {
|
|
5854
|
+
throw e;
|
|
5855
|
+
}
|
|
5853
5856
|
}
|
|
5854
5857
|
}
|
|
5855
|
-
return
|
|
5858
|
+
return [];
|
|
5856
5859
|
}
|
|
5857
5860
|
async fetchPaginatedCallDeterministic(method, symbol = undefined, since = undefined, limit = undefined, timeframe = undefined, params = {}, maxEntriesPerRequest = undefined) {
|
|
5858
5861
|
let maxCalls = undefined;
|
|
@@ -5866,6 +5869,9 @@ export default class Exchange {
|
|
|
5866
5869
|
if (since !== undefined) {
|
|
5867
5870
|
currentSince = Math.max(currentSince, since);
|
|
5868
5871
|
}
|
|
5872
|
+
else {
|
|
5873
|
+
currentSince = Math.max(currentSince, 1241440531000); // avoid timestamps older than 2009
|
|
5874
|
+
}
|
|
5869
5875
|
const until = this.safeInteger2(params, 'until', 'till'); // do not omit it here
|
|
5870
5876
|
if (until !== undefined) {
|
|
5871
5877
|
const requiredCalls = Math.ceil((until - since) / step);
|
|
@@ -5877,6 +5883,9 @@ export default class Exchange {
|
|
|
5877
5883
|
if ((until !== undefined) && (currentSince >= until)) {
|
|
5878
5884
|
break;
|
|
5879
5885
|
}
|
|
5886
|
+
if (currentSince >= current) {
|
|
5887
|
+
break;
|
|
5888
|
+
}
|
|
5880
5889
|
tasks.push(this.safeDeterministicCall(method, symbol, currentSince, maxEntriesPerRequest, timeframe, params));
|
|
5881
5890
|
currentSince = this.sum(currentSince, step) - 1;
|
|
5882
5891
|
}
|
package/js/src/base/errors.d.ts
CHANGED
|
@@ -1,113 +1,113 @@
|
|
|
1
1
|
declare class BaseError extends Error {
|
|
2
|
-
constructor(message:
|
|
2
|
+
constructor(message: string);
|
|
3
3
|
}
|
|
4
4
|
declare class ExchangeError extends BaseError {
|
|
5
|
-
constructor(message:
|
|
5
|
+
constructor(message: string);
|
|
6
6
|
}
|
|
7
7
|
declare class AuthenticationError extends ExchangeError {
|
|
8
|
-
constructor(message:
|
|
8
|
+
constructor(message: string);
|
|
9
9
|
}
|
|
10
10
|
declare class PermissionDenied extends AuthenticationError {
|
|
11
|
-
constructor(message:
|
|
11
|
+
constructor(message: string);
|
|
12
12
|
}
|
|
13
13
|
declare class AccountNotEnabled extends PermissionDenied {
|
|
14
|
-
constructor(message:
|
|
14
|
+
constructor(message: string);
|
|
15
15
|
}
|
|
16
16
|
declare class AccountSuspended extends AuthenticationError {
|
|
17
|
-
constructor(message:
|
|
17
|
+
constructor(message: string);
|
|
18
18
|
}
|
|
19
19
|
declare class ArgumentsRequired extends ExchangeError {
|
|
20
|
-
constructor(message:
|
|
20
|
+
constructor(message: string);
|
|
21
21
|
}
|
|
22
22
|
declare class BadRequest extends ExchangeError {
|
|
23
|
-
constructor(message:
|
|
23
|
+
constructor(message: string);
|
|
24
24
|
}
|
|
25
25
|
declare class BadSymbol extends BadRequest {
|
|
26
|
-
constructor(message:
|
|
26
|
+
constructor(message: string);
|
|
27
27
|
}
|
|
28
28
|
declare class OperationRejected extends ExchangeError {
|
|
29
|
-
constructor(message:
|
|
29
|
+
constructor(message: string);
|
|
30
30
|
}
|
|
31
31
|
declare class NoChange extends OperationRejected {
|
|
32
|
-
constructor(message:
|
|
32
|
+
constructor(message: string);
|
|
33
33
|
}
|
|
34
34
|
declare class MarginModeAlreadySet extends NoChange {
|
|
35
|
-
constructor(message:
|
|
35
|
+
constructor(message: string);
|
|
36
36
|
}
|
|
37
37
|
declare class MarketClosed extends OperationRejected {
|
|
38
|
-
constructor(message:
|
|
38
|
+
constructor(message: string);
|
|
39
39
|
}
|
|
40
40
|
declare class BadResponse extends ExchangeError {
|
|
41
|
-
constructor(message:
|
|
41
|
+
constructor(message: string);
|
|
42
42
|
}
|
|
43
43
|
declare class NullResponse extends BadResponse {
|
|
44
|
-
constructor(message:
|
|
44
|
+
constructor(message: string);
|
|
45
45
|
}
|
|
46
46
|
declare class InsufficientFunds extends ExchangeError {
|
|
47
|
-
constructor(message:
|
|
47
|
+
constructor(message: string);
|
|
48
48
|
}
|
|
49
49
|
declare class InvalidAddress extends ExchangeError {
|
|
50
|
-
constructor(message:
|
|
50
|
+
constructor(message: string);
|
|
51
51
|
}
|
|
52
52
|
declare class AddressPending extends InvalidAddress {
|
|
53
|
-
constructor(message:
|
|
53
|
+
constructor(message: string);
|
|
54
54
|
}
|
|
55
55
|
declare class InvalidOrder extends ExchangeError {
|
|
56
|
-
constructor(message:
|
|
56
|
+
constructor(message: string);
|
|
57
57
|
}
|
|
58
58
|
declare class OrderNotFound extends InvalidOrder {
|
|
59
|
-
constructor(message:
|
|
59
|
+
constructor(message: string);
|
|
60
60
|
}
|
|
61
61
|
declare class OrderNotCached extends InvalidOrder {
|
|
62
|
-
constructor(message:
|
|
62
|
+
constructor(message: string);
|
|
63
63
|
}
|
|
64
64
|
declare class CancelPending extends InvalidOrder {
|
|
65
|
-
constructor(message:
|
|
65
|
+
constructor(message: string);
|
|
66
66
|
}
|
|
67
67
|
declare class OrderImmediatelyFillable extends InvalidOrder {
|
|
68
|
-
constructor(message:
|
|
68
|
+
constructor(message: string);
|
|
69
69
|
}
|
|
70
70
|
declare class OrderNotFillable extends InvalidOrder {
|
|
71
|
-
constructor(message:
|
|
71
|
+
constructor(message: string);
|
|
72
72
|
}
|
|
73
73
|
declare class DuplicateOrderId extends InvalidOrder {
|
|
74
|
-
constructor(message:
|
|
74
|
+
constructor(message: string);
|
|
75
75
|
}
|
|
76
76
|
declare class ContractUnavailable extends InvalidOrder {
|
|
77
|
-
constructor(message:
|
|
77
|
+
constructor(message: string);
|
|
78
78
|
}
|
|
79
79
|
declare class NotSupported extends ExchangeError {
|
|
80
|
-
constructor(message:
|
|
80
|
+
constructor(message: string);
|
|
81
81
|
}
|
|
82
82
|
declare class ProxyError extends ExchangeError {
|
|
83
|
-
constructor(message:
|
|
83
|
+
constructor(message: string);
|
|
84
84
|
}
|
|
85
85
|
declare class ExchangeClosedByUser extends ExchangeError {
|
|
86
|
-
constructor(message:
|
|
86
|
+
constructor(message: string);
|
|
87
87
|
}
|
|
88
88
|
declare class OperationFailed extends BaseError {
|
|
89
|
-
constructor(message:
|
|
89
|
+
constructor(message: string);
|
|
90
90
|
}
|
|
91
91
|
declare class NetworkError extends OperationFailed {
|
|
92
|
-
constructor(message:
|
|
92
|
+
constructor(message: string);
|
|
93
93
|
}
|
|
94
94
|
declare class DDoSProtection extends NetworkError {
|
|
95
|
-
constructor(message:
|
|
95
|
+
constructor(message: string);
|
|
96
96
|
}
|
|
97
97
|
declare class RateLimitExceeded extends NetworkError {
|
|
98
|
-
constructor(message:
|
|
98
|
+
constructor(message: string);
|
|
99
99
|
}
|
|
100
100
|
declare class ExchangeNotAvailable extends NetworkError {
|
|
101
|
-
constructor(message:
|
|
101
|
+
constructor(message: string);
|
|
102
102
|
}
|
|
103
103
|
declare class OnMaintenance extends ExchangeNotAvailable {
|
|
104
|
-
constructor(message:
|
|
104
|
+
constructor(message: string);
|
|
105
105
|
}
|
|
106
106
|
declare class InvalidNonce extends NetworkError {
|
|
107
|
-
constructor(message:
|
|
107
|
+
constructor(message: string);
|
|
108
108
|
}
|
|
109
109
|
declare class RequestTimeout extends NetworkError {
|
|
110
|
-
constructor(message:
|
|
110
|
+
constructor(message: string);
|
|
111
111
|
}
|
|
112
112
|
export { 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 };
|
|
113
113
|
declare const _default: {
|
|
@@ -12,6 +12,10 @@ import { Future } from './Future.js';
|
|
|
12
12
|
// eslint-disable-next-line no-restricted-globals
|
|
13
13
|
const WebSocketPlatform = isNode ? WebSocket : self.WebSocket;
|
|
14
14
|
export default class WsClient extends Client {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.startedConnecting = false;
|
|
18
|
+
}
|
|
15
19
|
createConnection() {
|
|
16
20
|
if (this.verbose) {
|
|
17
21
|
this.log(new Date(), 'connecting to', this.url);
|
package/js/src/binance.js
CHANGED
package/js/src/bingx.js
CHANGED
package/js/src/bitmex.js
CHANGED
package/js/src/bybit.js
CHANGED
package/js/src/coinmetro.js
CHANGED
package/js/src/cryptocom.js
CHANGED
package/js/src/currencycom.js
CHANGED
|
@@ -104,6 +104,7 @@ export default class currencycom extends Exchange {
|
|
|
104
104
|
'fetchWithdrawal': undefined,
|
|
105
105
|
'fetchWithdrawals': true,
|
|
106
106
|
'reduceMargin': undefined,
|
|
107
|
+
'sandbox': true,
|
|
107
108
|
'setLeverage': undefined,
|
|
108
109
|
'setMarginMode': undefined,
|
|
109
110
|
'setPositionMode': undefined,
|
package/js/src/deribit.js
CHANGED
package/js/src/gate.js
CHANGED
package/js/src/gemini.js
CHANGED
package/js/src/hitbtc.js
CHANGED
package/js/src/hollaex.js
CHANGED
package/js/src/hyperliquid.js
CHANGED
|
@@ -109,6 +109,7 @@ export default class hyperliquid extends Exchange {
|
|
|
109
109
|
'reduceMargin': true,
|
|
110
110
|
'repayCrossMargin': false,
|
|
111
111
|
'repayIsolatedMargin': false,
|
|
112
|
+
'sandbox': true,
|
|
112
113
|
'setLeverage': true,
|
|
113
114
|
'setMarginMode': true,
|
|
114
115
|
'setPositionMode': false,
|
|
@@ -443,6 +444,10 @@ export default class hyperliquid extends Exchange {
|
|
|
443
444
|
for (let i = 0; i < meta.length; i++) {
|
|
444
445
|
const market = this.safeDict(meta, i, {});
|
|
445
446
|
const marketName = this.safeString(market, 'name');
|
|
447
|
+
if (marketName.indexOf('/') < 0) {
|
|
448
|
+
// there are some weird spot markets in testnet, eg @2
|
|
449
|
+
continue;
|
|
450
|
+
}
|
|
446
451
|
const marketParts = marketName.split('/');
|
|
447
452
|
const baseName = this.safeString(marketParts, 0);
|
|
448
453
|
const quoteId = this.safeString(marketParts, 1);
|
package/js/src/idex.js
CHANGED
package/js/src/krakenfutures.js
CHANGED
package/js/src/ndax.js
CHANGED
package/js/src/okx.js
CHANGED
package/js/src/phemex.js
CHANGED
package/js/src/poloniex.js
CHANGED
package/js/src/probit.js
CHANGED
package/js/src/wavesexchange.js
CHANGED
package/js/src/woo.js
CHANGED
package/js/src/zaif.js
CHANGED
|
@@ -678,7 +678,7 @@ export default class zaif extends Exchange {
|
|
|
678
678
|
};
|
|
679
679
|
}
|
|
680
680
|
customNonce() {
|
|
681
|
-
const num = (this.milliseconds() / 1000)
|
|
681
|
+
const num = this.numberToString(this.milliseconds() / 1000);
|
|
682
682
|
const nonce = parseFloat(num);
|
|
683
683
|
return nonce.toFixed(8);
|
|
684
684
|
}
|
package/package.json
CHANGED