ccxt 4.3.27 → 4.3.29
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/ccxt.browser.min.js +30 -0
- package/dist/ccxt.browser.min.js.LICENSE.txt +12 -0
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/ascendex.js +1 -1
- package/dist/cjs/src/base/Exchange.js +2 -1
- package/dist/cjs/src/base/ws/OrderBookSide.js +4 -4
- package/dist/cjs/src/bingx.js +140 -90
- package/dist/cjs/src/bitget.js +1 -0
- package/dist/cjs/src/bitmart.js +137 -2
- package/dist/cjs/src/bybit.js +3 -3
- package/dist/cjs/src/coinbase.js +1 -1
- package/dist/cjs/src/krakenfutures.js +1 -1
- package/dist/cjs/src/kucoin.js +1 -0
- package/dist/cjs/src/pro/bitfinex.js +4 -4
- package/dist/cjs/src/pro/bitfinex2.js +2 -2
- package/dist/cjs/src/pro/bitmex.js +3 -3
- package/dist/cjs/src/pro/blockchaincom.js +2 -2
- package/dist/cjs/src/pro/coinbase.js +5 -1
- package/dist/cjs/src/pro/cryptocom.js +4 -4
- package/dist/cjs/src/pro/deribit.js +9 -9
- package/dist/cjs/src/pro/idex.js +1 -1
- package/dist/cjs/src/pro/luno.js +4 -5
- package/dist/cjs/src/pro/mexc.js +2 -2
- package/dist/cjs/src/whitebit.js +1 -1
- 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/abstract/bitget.d.ts +1 -0
- package/js/src/abstract/bitmart.d.ts +2 -0
- package/js/src/ascendex.js +1 -1
- package/js/src/base/Exchange.js +2 -1
- package/js/src/base/ws/Cache.d.ts +1 -1
- package/js/src/base/ws/OrderBookSide.d.ts +4 -5
- package/js/src/base/ws/OrderBookSide.js +4 -4
- package/js/src/bingx.js +140 -90
- package/js/src/bitget.js +1 -0
- package/js/src/bitmart.d.ts +3 -1
- package/js/src/bitmart.js +137 -2
- package/js/src/bybit.js +3 -3
- package/js/src/coinbase.js +1 -1
- package/js/src/krakenfutures.js +1 -1
- package/js/src/kucoin.js +1 -0
- package/js/src/pro/bitfinex.js +4 -4
- package/js/src/pro/bitfinex2.js +2 -2
- package/js/src/pro/bitmex.js +3 -3
- package/js/src/pro/blockchaincom.js +2 -2
- package/js/src/pro/coinbase.js +5 -1
- package/js/src/pro/cryptocom.js +4 -4
- package/js/src/pro/deribit.js +9 -9
- package/js/src/pro/idex.js +1 -1
- package/js/src/pro/luno.js +4 -5
- package/js/src/pro/mexc.js +2 -2
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- package/js/src/whitebit.js +1 -1
- package/package.json +2 -2
package/js/src/pro/bitfinex.js
CHANGED
|
@@ -328,7 +328,7 @@ export default class bitfinex extends bitfinexRest {
|
|
|
328
328
|
const size = (delta2Value < 0) ? -delta2Value : delta2Value;
|
|
329
329
|
const side = (delta2Value < 0) ? 'asks' : 'bids';
|
|
330
330
|
const bookside = orderbook[side];
|
|
331
|
-
bookside.
|
|
331
|
+
bookside.storeArray([price, size, id]);
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
334
|
else {
|
|
@@ -339,7 +339,7 @@ export default class bitfinex extends bitfinexRest {
|
|
|
339
339
|
const size = (delta2 < 0) ? -delta2 : delta2;
|
|
340
340
|
const side = (delta2 < 0) ? 'asks' : 'bids';
|
|
341
341
|
const countedBookSide = orderbook[side];
|
|
342
|
-
countedBookSide.
|
|
342
|
+
countedBookSide.storeArray([delta[0], size, delta[1]]);
|
|
343
343
|
}
|
|
344
344
|
}
|
|
345
345
|
client.resolve(orderbook, messageHash);
|
|
@@ -355,14 +355,14 @@ export default class bitfinex extends bitfinexRest {
|
|
|
355
355
|
const bookside = orderbook[side];
|
|
356
356
|
// price = 0 means that you have to remove the order from your book
|
|
357
357
|
const amount = Precise.stringGt(price, '0') ? size : '0';
|
|
358
|
-
bookside.
|
|
358
|
+
bookside.storeArray([this.parseNumber(price), this.parseNumber(amount), id]);
|
|
359
359
|
}
|
|
360
360
|
else {
|
|
361
361
|
const message3Value = message[3];
|
|
362
362
|
const size = (message3Value < 0) ? -message3Value : message3Value;
|
|
363
363
|
const side = (message3Value < 0) ? 'asks' : 'bids';
|
|
364
364
|
const countedBookSide = orderbook[side];
|
|
365
|
-
countedBookSide.
|
|
365
|
+
countedBookSide.storeArray([message[1], size, message[2]]);
|
|
366
366
|
}
|
|
367
367
|
client.resolve(orderbook, messageHash);
|
|
368
368
|
}
|
package/js/src/pro/bitfinex2.js
CHANGED
|
@@ -633,7 +633,7 @@ export default class bitfinex2 extends bitfinex2Rest {
|
|
|
633
633
|
// price = 0 means that you have to remove the order from your book
|
|
634
634
|
const amount = Precise.stringGt(price, '0') ? size : '0';
|
|
635
635
|
const idString = this.safeString(deltas, 0);
|
|
636
|
-
bookside.
|
|
636
|
+
bookside.storeArray([this.parseNumber(price), this.parseNumber(amount), idString]);
|
|
637
637
|
}
|
|
638
638
|
else {
|
|
639
639
|
const amount = this.safeString(deltas, 2);
|
|
@@ -642,7 +642,7 @@ export default class bitfinex2 extends bitfinex2Rest {
|
|
|
642
642
|
const size = Precise.stringLt(amount, '0') ? Precise.stringNeg(amount) : amount;
|
|
643
643
|
const side = Precise.stringLt(amount, '0') ? 'asks' : 'bids';
|
|
644
644
|
const bookside = orderbookItem[side];
|
|
645
|
-
bookside.
|
|
645
|
+
bookside.storeArray([this.parseNumber(price), this.parseNumber(size), this.parseNumber(counter)]);
|
|
646
646
|
}
|
|
647
647
|
client.resolve(orderbook, messageHash);
|
|
648
648
|
}
|
package/js/src/pro/bitmex.js
CHANGED
|
@@ -1435,7 +1435,7 @@ export default class bitmex extends bitmexRest {
|
|
|
1435
1435
|
const data = this.safeValue(message, 'data', []);
|
|
1436
1436
|
// if it's an initial snapshot
|
|
1437
1437
|
if (action === 'partial') {
|
|
1438
|
-
const filter = this.
|
|
1438
|
+
const filter = this.safeDict(message, 'filter', {});
|
|
1439
1439
|
const marketId = this.safeValue(filter, 'symbol');
|
|
1440
1440
|
const market = this.safeMarket(marketId);
|
|
1441
1441
|
const symbol = market['symbol'];
|
|
@@ -1457,7 +1457,7 @@ export default class bitmex extends bitmexRest {
|
|
|
1457
1457
|
let side = this.safeString(data[i], 'side');
|
|
1458
1458
|
side = (side === 'Buy') ? 'bids' : 'asks';
|
|
1459
1459
|
const bookside = orderbook[side];
|
|
1460
|
-
bookside.
|
|
1460
|
+
bookside.storeArray([price, size, id]);
|
|
1461
1461
|
const datetime = this.safeString(data[i], 'timestamp');
|
|
1462
1462
|
orderbook['timestamp'] = this.parse8601(datetime);
|
|
1463
1463
|
orderbook['datetime'] = datetime;
|
|
@@ -1482,7 +1482,7 @@ export default class bitmex extends bitmexRest {
|
|
|
1482
1482
|
let side = this.safeString(data[i], 'side');
|
|
1483
1483
|
side = (side === 'Buy') ? 'bids' : 'asks';
|
|
1484
1484
|
const bookside = orderbook[side];
|
|
1485
|
-
bookside.
|
|
1485
|
+
bookside.storeArray([price, size, id]);
|
|
1486
1486
|
const datetime = this.safeString(data[i], 'timestamp');
|
|
1487
1487
|
orderbook['timestamp'] = this.parse8601(datetime);
|
|
1488
1488
|
orderbook['datetime'] = datetime;
|
|
@@ -698,8 +698,8 @@ export default class blockchaincom extends blockchaincomRest {
|
|
|
698
698
|
orderbook.reset(snapshot);
|
|
699
699
|
}
|
|
700
700
|
else if (event === 'updated') {
|
|
701
|
-
const asks = this.
|
|
702
|
-
const bids = this.
|
|
701
|
+
const asks = this.safeList(message, 'asks', []);
|
|
702
|
+
const bids = this.safeList(message, 'bids', []);
|
|
703
703
|
this.handleDeltas(orderbook['asks'], asks);
|
|
704
704
|
this.handleDeltas(orderbook['bids'], bids);
|
|
705
705
|
orderbook['timestamp'] = timestamp;
|
package/js/src/pro/coinbase.js
CHANGED
|
@@ -249,13 +249,17 @@ export default class coinbase extends coinbaseRest {
|
|
|
249
249
|
//
|
|
250
250
|
const channel = this.safeString(message, 'channel');
|
|
251
251
|
const events = this.safeValue(message, 'events', []);
|
|
252
|
+
const datetime = this.safeString(message, 'timestamp');
|
|
253
|
+
const timestamp = this.parse8601(datetime);
|
|
252
254
|
const newTickers = [];
|
|
253
255
|
for (let i = 0; i < events.length; i++) {
|
|
254
256
|
const tickersObj = events[i];
|
|
255
|
-
const tickers = this.
|
|
257
|
+
const tickers = this.safeList(tickersObj, 'tickers', []);
|
|
256
258
|
for (let j = 0; j < tickers.length; j++) {
|
|
257
259
|
const ticker = tickers[j];
|
|
258
260
|
const result = this.parseWsTicker(ticker);
|
|
261
|
+
result['timestamp'] = timestamp;
|
|
262
|
+
result['datetime'] = datetime;
|
|
259
263
|
const symbol = result['symbol'];
|
|
260
264
|
this.tickers[symbol] = result;
|
|
261
265
|
const wsMarketId = this.safeString(ticker, 'product_id');
|
package/js/src/pro/cryptocom.js
CHANGED
|
@@ -131,7 +131,7 @@ export default class cryptocom extends cryptocomRest {
|
|
|
131
131
|
const price = this.safeFloat(delta, 0);
|
|
132
132
|
const amount = this.safeFloat(delta, 1);
|
|
133
133
|
const count = this.safeInteger(delta, 2);
|
|
134
|
-
bookside.
|
|
134
|
+
bookside.storeArray([price, amount, count]);
|
|
135
135
|
}
|
|
136
136
|
handleDeltas(bookside, deltas) {
|
|
137
137
|
for (let i = 0; i < deltas.length; i++) {
|
|
@@ -200,11 +200,11 @@ export default class cryptocom extends cryptocomRest {
|
|
|
200
200
|
let data = this.safeValue(message, 'data');
|
|
201
201
|
data = this.safeValue(data, 0);
|
|
202
202
|
const timestamp = this.safeInteger(data, 't');
|
|
203
|
-
|
|
204
|
-
if (orderbook === undefined) {
|
|
203
|
+
if (!(symbol in this.orderbooks)) {
|
|
205
204
|
const limit = this.safeInteger(message, 'depth');
|
|
206
|
-
|
|
205
|
+
this.orderbooks[symbol] = this.countedOrderBook({}, limit);
|
|
207
206
|
}
|
|
207
|
+
const orderbook = this.orderbooks[symbol];
|
|
208
208
|
const channel = this.safeString(message, 'channel');
|
|
209
209
|
const nonce = this.safeInteger2(data, 'u', 's');
|
|
210
210
|
let books = data;
|
package/js/src/pro/deribit.js
CHANGED
|
@@ -510,12 +510,12 @@ export default class deribit extends deribitRest {
|
|
|
510
510
|
const marketId = this.safeString(data, 'instrument_name');
|
|
511
511
|
const symbol = this.safeSymbol(marketId);
|
|
512
512
|
const timestamp = this.safeInteger(data, 'timestamp');
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
storedOrderBook = this.countedOrderBook();
|
|
513
|
+
if (!(symbol in this.orderbooks)) {
|
|
514
|
+
this.orderbooks[symbol] = this.countedOrderBook();
|
|
516
515
|
}
|
|
517
|
-
const
|
|
518
|
-
const
|
|
516
|
+
const storedOrderBook = this.orderbooks[symbol];
|
|
517
|
+
const asks = this.safeList(data, 'asks', []);
|
|
518
|
+
const bids = this.safeList(data, 'bids', []);
|
|
519
519
|
this.handleDeltas(storedOrderBook['asks'], asks);
|
|
520
520
|
this.handleDeltas(storedOrderBook['bids'], bids);
|
|
521
521
|
storedOrderBook['nonce'] = timestamp;
|
|
@@ -527,8 +527,8 @@ export default class deribit extends deribitRest {
|
|
|
527
527
|
client.resolve(storedOrderBook, messageHash);
|
|
528
528
|
}
|
|
529
529
|
cleanOrderBook(data) {
|
|
530
|
-
const bids = this.
|
|
531
|
-
const asks = this.
|
|
530
|
+
const bids = this.safeList(data, 'bids', []);
|
|
531
|
+
const asks = this.safeList(data, 'asks', []);
|
|
532
532
|
const cleanedBids = [];
|
|
533
533
|
for (let i = 0; i < bids.length; i++) {
|
|
534
534
|
cleanedBids.push([bids[i][1], bids[i][2]]);
|
|
@@ -545,10 +545,10 @@ export default class deribit extends deribitRest {
|
|
|
545
545
|
const price = delta[1];
|
|
546
546
|
const amount = delta[2];
|
|
547
547
|
if (delta[0] === 'new' || delta[0] === 'change') {
|
|
548
|
-
bookside.
|
|
548
|
+
bookside.storeArray([price, amount, 1]);
|
|
549
549
|
}
|
|
550
550
|
else if (delta[0] === 'delete') {
|
|
551
|
-
bookside.
|
|
551
|
+
bookside.storeArray([price, amount, 0]);
|
|
552
552
|
}
|
|
553
553
|
}
|
|
554
554
|
handleDeltas(bookside, deltas) {
|
package/js/src/pro/idex.js
CHANGED
|
@@ -484,7 +484,7 @@ export default class idex extends idexRest {
|
|
|
484
484
|
const price = this.safeFloat(delta, 0);
|
|
485
485
|
const amount = this.safeFloat(delta, 1);
|
|
486
486
|
const count = this.safeInteger(delta, 2);
|
|
487
|
-
bookside.
|
|
487
|
+
bookside.storeArray([price, amount, count]);
|
|
488
488
|
}
|
|
489
489
|
handleDeltas(bookside, deltas) {
|
|
490
490
|
for (let i = 0; i < deltas.length; i++) {
|
package/js/src/pro/luno.js
CHANGED
|
@@ -193,12 +193,11 @@ export default class luno extends lunoRest {
|
|
|
193
193
|
//
|
|
194
194
|
const symbol = subscription['symbol'];
|
|
195
195
|
const messageHash = 'orderbook:' + symbol;
|
|
196
|
-
const timestamp = this.
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
orderbook = this.indexedOrderBook({});
|
|
200
|
-
this.orderbooks[symbol] = orderbook;
|
|
196
|
+
const timestamp = this.safeInteger(message, 'timestamp');
|
|
197
|
+
if (!(symbol in this.orderbooks)) {
|
|
198
|
+
this.orderbooks[symbol] = this.indexedOrderBook({});
|
|
201
199
|
}
|
|
200
|
+
const orderbook = this.orderbooks[symbol];
|
|
202
201
|
const asks = this.safeValue(message, 'asks');
|
|
203
202
|
if (asks !== undefined) {
|
|
204
203
|
const snapshot = this.customParseOrderBook(message, symbol, timestamp, 'bids', 'asks', 'price', 'volume', 'id');
|
package/js/src/pro/mexc.js
CHANGED
|
@@ -511,8 +511,8 @@ export default class mexc extends mexcRest {
|
|
|
511
511
|
return;
|
|
512
512
|
}
|
|
513
513
|
orderbook['nonce'] = deltaNonce;
|
|
514
|
-
const asks = this.
|
|
515
|
-
const bids = this.
|
|
514
|
+
const asks = this.safeList(delta, 'asks', []);
|
|
515
|
+
const bids = this.safeList(delta, 'bids', []);
|
|
516
516
|
const asksOrderSide = orderbook['asks'];
|
|
517
517
|
const bidsOrderSide = orderbook['bids'];
|
|
518
518
|
this.handleBooksideDelta(asksOrderSide, asks);
|
|
@@ -15,7 +15,7 @@ export declare class BigInteger {
|
|
|
15
15
|
protected intValue(): number;
|
|
16
16
|
protected byteValue(): number;
|
|
17
17
|
protected shortValue(): number;
|
|
18
|
-
protected signum():
|
|
18
|
+
protected signum(): 0 | 1 | -1;
|
|
19
19
|
toByteArray(): number[];
|
|
20
20
|
protected equals(a: BigInteger): boolean;
|
|
21
21
|
protected min(a: BigInteger): BigInteger;
|
package/js/src/whitebit.js
CHANGED
|
@@ -1473,7 +1473,7 @@ export default class whitebit extends Exchange {
|
|
|
1473
1473
|
const balance = response[id];
|
|
1474
1474
|
if (typeof balance === 'object' && balance !== undefined) {
|
|
1475
1475
|
const account = this.account();
|
|
1476
|
-
account['free'] = this.
|
|
1476
|
+
account['free'] = this.safeString2(balance, 'available', 'main_balance');
|
|
1477
1477
|
account['used'] = this.safeString(balance, 'freeze');
|
|
1478
1478
|
account['total'] = this.safeString(balance, 'main_balance');
|
|
1479
1479
|
result[code] = account;
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ccxt",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.29",
|
|
4
4
|
"description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges",
|
|
5
|
-
"unpkg": "dist/ccxt.browser.js",
|
|
5
|
+
"unpkg": "dist/ccxt.browser.min.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|