ccxt 4.3.65 → 4.3.67
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 +4 -3
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +2 -2
- package/dist/cjs/src/bingx.js +151 -19
- package/dist/cjs/src/bithumb.js +61 -17
- package/dist/cjs/src/hyperliquid.js +63 -7
- package/dist/cjs/src/independentreserve.js +0 -1
- package/dist/cjs/src/kraken.js +27 -0
- package/dist/cjs/src/pro/hyperliquid.js +103 -1
- package/dist/cjs/src/pro/okx.js +22 -9
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bingx.d.ts +7 -0
- package/js/src/base/Exchange.d.ts +14 -13
- package/js/src/base/Exchange.js +2 -2
- package/js/src/bingx.js +151 -19
- package/js/src/bithumb.js +61 -17
- package/js/src/hyperliquid.d.ts +3 -1
- package/js/src/hyperliquid.js +63 -7
- package/js/src/independentreserve.js +1 -1
- package/js/src/kraken.d.ts +7 -0
- package/js/src/kraken.js +27 -0
- package/js/src/pro/bitget.d.ts +1 -1
- package/js/src/pro/bybit.d.ts +1 -1
- package/js/src/pro/coinone.d.ts +1 -1
- package/js/src/pro/currencycom.d.ts +1 -1
- package/js/src/pro/hollaex.d.ts +1 -1
- package/js/src/pro/hyperliquid.d.ts +5 -2
- package/js/src/pro/hyperliquid.js +103 -1
- package/js/src/pro/kucoin.d.ts +1 -1
- package/js/src/pro/kucoinfutures.d.ts +1 -1
- package/js/src/pro/mexc.d.ts +1 -1
- package/js/src/pro/okcoin.d.ts +1 -1
- package/js/src/pro/okx.d.ts +2 -2
- package/js/src/pro/okx.js +23 -10
- package/js/src/pro/oxfun.d.ts +1 -1
- package/js/src/pro/p2b.d.ts +1 -1
- package/js/src/pro/poloniex.d.ts +1 -1
- package/js/src/pro/whitebit.d.ts +1 -1
- package/package.json +1 -1
- package/dist/cjs/src/abstract/bittrex.js +0 -9
- package/dist/cjs/src/bittrex.js +0 -2308
- package/dist/cjs/src/pro/bittrex.js +0 -959
- package/js/src/bittrex.d.ts +0 -97
- package/js/src/bittrex.js +0 -2309
- package/js/src/pro/bittrex.d.ts +0 -69
- package/js/src/pro/bittrex.js +0 -960
package/js/src/pro/okx.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
8
|
import okxRest from '../okx.js';
|
|
9
|
-
import { ArgumentsRequired, BadRequest, ExchangeError, ChecksumError, AuthenticationError } from '../base/errors.js';
|
|
9
|
+
import { ArgumentsRequired, BadRequest, ExchangeError, ChecksumError, AuthenticationError, InvalidNonce } from '../base/errors.js';
|
|
10
10
|
import { ArrayCache, ArrayCacheByTimestamp, ArrayCacheBySymbolById, ArrayCacheBySymbolBySide } from '../base/ws/Cache.js';
|
|
11
11
|
import { sha256 } from '../static_dependencies/noble-hashes/sha256.js';
|
|
12
12
|
// ---------------------------------------------------------------------------
|
|
@@ -897,7 +897,7 @@ export default class okx extends okxRest {
|
|
|
897
897
|
this.handleDelta(bookside, deltas[i]);
|
|
898
898
|
}
|
|
899
899
|
}
|
|
900
|
-
handleOrderBookMessage(client, message, orderbook, messageHash) {
|
|
900
|
+
handleOrderBookMessage(client, message, orderbook, messageHash, market = undefined) {
|
|
901
901
|
//
|
|
902
902
|
// {
|
|
903
903
|
// "asks": [
|
|
@@ -912,6 +912,9 @@ export default class okx extends okxRest {
|
|
|
912
912
|
// ],
|
|
913
913
|
// "instId": "BTC-USDT",
|
|
914
914
|
// "ts": "1626537446491"
|
|
915
|
+
// "checksum": -855196043,
|
|
916
|
+
// "prevSeqId": 123456,
|
|
917
|
+
// "seqId": 123457
|
|
915
918
|
// }
|
|
916
919
|
//
|
|
917
920
|
const asks = this.safeValue(message, 'asks', []);
|
|
@@ -921,9 +924,12 @@ export default class okx extends okxRest {
|
|
|
921
924
|
this.handleDeltas(storedAsks, asks);
|
|
922
925
|
this.handleDeltas(storedBids, bids);
|
|
923
926
|
const marketId = this.safeString(message, 'instId');
|
|
924
|
-
const symbol = this.safeSymbol(marketId);
|
|
927
|
+
const symbol = this.safeSymbol(marketId, market);
|
|
925
928
|
const checksum = this.handleOption('watchOrderBook', 'checksum', true);
|
|
929
|
+
const seqId = this.safeInteger(message, 'seqId');
|
|
926
930
|
if (checksum) {
|
|
931
|
+
const prevSeqId = this.safeInteger(message, 'prevSeqId');
|
|
932
|
+
const nonce = orderbook['nonce'];
|
|
927
933
|
const asksLength = storedAsks.length;
|
|
928
934
|
const bidsLength = storedBids.length;
|
|
929
935
|
const payloadArray = [];
|
|
@@ -940,14 +946,21 @@ export default class okx extends okxRest {
|
|
|
940
946
|
const payload = payloadArray.join(':');
|
|
941
947
|
const responseChecksum = this.safeInteger(message, 'checksum');
|
|
942
948
|
const localChecksum = this.crc32(payload, true);
|
|
949
|
+
let error = undefined;
|
|
950
|
+
if (prevSeqId !== -1 && nonce !== prevSeqId) {
|
|
951
|
+
error = new InvalidNonce(this.id + ' watchOrderBook received invalid nonce');
|
|
952
|
+
}
|
|
943
953
|
if (responseChecksum !== localChecksum) {
|
|
944
|
-
|
|
954
|
+
error = new ChecksumError(this.id + ' ' + this.orderbookChecksumMessage(symbol));
|
|
955
|
+
}
|
|
956
|
+
if (error !== undefined) {
|
|
945
957
|
delete client.subscriptions[messageHash];
|
|
946
958
|
delete this.orderbooks[symbol];
|
|
947
959
|
client.reject(error, messageHash);
|
|
948
960
|
}
|
|
949
961
|
}
|
|
950
962
|
const timestamp = this.safeInteger(message, 'ts');
|
|
963
|
+
orderbook['nonce'] = seqId;
|
|
951
964
|
orderbook['timestamp'] = timestamp;
|
|
952
965
|
orderbook['datetime'] = this.iso8601(timestamp);
|
|
953
966
|
return orderbook;
|
|
@@ -1069,7 +1082,7 @@ export default class okx extends okxRest {
|
|
|
1069
1082
|
const orderbook = this.orderbooks[symbol];
|
|
1070
1083
|
for (let i = 0; i < data.length; i++) {
|
|
1071
1084
|
const update = data[i];
|
|
1072
|
-
this.handleOrderBookMessage(client, update, orderbook, messageHash);
|
|
1085
|
+
this.handleOrderBookMessage(client, update, orderbook, messageHash, market);
|
|
1073
1086
|
client.resolve(orderbook, messageHash);
|
|
1074
1087
|
}
|
|
1075
1088
|
}
|
|
@@ -1640,7 +1653,7 @@ export default class okx extends okxRest {
|
|
|
1640
1653
|
await this.loadMarkets();
|
|
1641
1654
|
await this.authenticate();
|
|
1642
1655
|
const url = this.getUrl('private', 'private');
|
|
1643
|
-
const messageHash = this.
|
|
1656
|
+
const messageHash = this.milliseconds().toString();
|
|
1644
1657
|
let op = undefined;
|
|
1645
1658
|
[op, params] = this.handleOptionAndParams(params, 'createOrderWs', 'op', 'batch-orders');
|
|
1646
1659
|
const args = this.createOrderRequest(symbol, type, side, amount, price, params);
|
|
@@ -1710,7 +1723,7 @@ export default class okx extends okxRest {
|
|
|
1710
1723
|
await this.loadMarkets();
|
|
1711
1724
|
await this.authenticate();
|
|
1712
1725
|
const url = this.getUrl('private', 'private');
|
|
1713
|
-
const messageHash = this.
|
|
1726
|
+
const messageHash = this.milliseconds().toString();
|
|
1714
1727
|
let op = undefined;
|
|
1715
1728
|
[op, params] = this.handleOptionAndParams(params, 'editOrderWs', 'op', 'amend-order');
|
|
1716
1729
|
const args = this.editOrderRequest(id, symbol, type, side, amount, price, params);
|
|
@@ -1739,7 +1752,7 @@ export default class okx extends okxRest {
|
|
|
1739
1752
|
await this.loadMarkets();
|
|
1740
1753
|
await this.authenticate();
|
|
1741
1754
|
const url = this.getUrl('private', 'private');
|
|
1742
|
-
const messageHash = this.
|
|
1755
|
+
const messageHash = this.milliseconds().toString();
|
|
1743
1756
|
const clientOrderId = this.safeString2(params, 'clOrdId', 'clientOrderId');
|
|
1744
1757
|
params = this.omit(params, ['clientOrderId', 'clOrdId']);
|
|
1745
1758
|
const arg = {
|
|
@@ -1779,7 +1792,7 @@ export default class okx extends okxRest {
|
|
|
1779
1792
|
await this.loadMarkets();
|
|
1780
1793
|
await this.authenticate();
|
|
1781
1794
|
const url = this.getUrl('private', 'private');
|
|
1782
|
-
const messageHash = this.
|
|
1795
|
+
const messageHash = this.milliseconds().toString();
|
|
1783
1796
|
const args = [];
|
|
1784
1797
|
for (let i = 0; i < idsLength; i++) {
|
|
1785
1798
|
const arg = {
|
|
@@ -1815,7 +1828,7 @@ export default class okx extends okxRest {
|
|
|
1815
1828
|
throw new BadRequest(this.id + 'cancelAllOrdersWs is only applicable to Option in Portfolio Margin mode, and MMP privilege is required.');
|
|
1816
1829
|
}
|
|
1817
1830
|
const url = this.getUrl('private', 'private');
|
|
1818
|
-
const messageHash = this.
|
|
1831
|
+
const messageHash = this.milliseconds().toString();
|
|
1819
1832
|
const request = {
|
|
1820
1833
|
'id': messageHash,
|
|
1821
1834
|
'op': 'mass-cancel',
|
package/js/src/pro/oxfun.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export default class oxfun extends oxfunRest {
|
|
|
32
32
|
cancelOrdersWs(ids: string[], symbol?: Str, params?: {}): Promise<any>;
|
|
33
33
|
authenticate(params?: {}): Promise<any>;
|
|
34
34
|
handleAuthenticationMessage(client: Client, message: any): void;
|
|
35
|
-
ping(client:
|
|
35
|
+
ping(client: Client): string;
|
|
36
36
|
handlePong(client: Client, message: any): any;
|
|
37
37
|
handleMessage(client: Client, message: any): void;
|
|
38
38
|
}
|
package/js/src/pro/p2b.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export default class p2b extends p2bRest {
|
|
|
14
14
|
handleOrderBook(client: Client, message: any): void;
|
|
15
15
|
handleMessage(client: Client, message: any): void;
|
|
16
16
|
handleErrorMessage(client: Client, message: any): boolean;
|
|
17
|
-
ping(client:
|
|
17
|
+
ping(client: Client): {
|
|
18
18
|
method: string;
|
|
19
19
|
params: any[];
|
|
20
20
|
id: number;
|
package/js/src/pro/poloniex.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export default class poloniex extends poloniexRest {
|
|
|
36
36
|
handleMessage(client: Client, message: any): void;
|
|
37
37
|
handleErrorMessage(client: Client, message: any): boolean;
|
|
38
38
|
handleAuthenticate(client: Client, message: any): any;
|
|
39
|
-
ping(client:
|
|
39
|
+
ping(client: Client): {
|
|
40
40
|
event: string;
|
|
41
41
|
};
|
|
42
42
|
}
|
package/js/src/pro/whitebit.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export default class whitebit extends whitebitRest {
|
|
|
31
31
|
handleMessage(client: Client, message: any): void;
|
|
32
32
|
handleSubscriptionStatus(client: Client, message: any, id: any): void;
|
|
33
33
|
handlePong(client: Client, message: any): any;
|
|
34
|
-
ping(client:
|
|
34
|
+
ping(client: Client): {
|
|
35
35
|
id: number;
|
|
36
36
|
method: string;
|
|
37
37
|
params: any[];
|
package/package.json
CHANGED