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.
Files changed (56) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +30 -0
  3. package/dist/ccxt.browser.min.js.LICENSE.txt +12 -0
  4. package/dist/cjs/ccxt.js +1 -1
  5. package/dist/cjs/src/ascendex.js +1 -1
  6. package/dist/cjs/src/base/Exchange.js +2 -1
  7. package/dist/cjs/src/base/ws/OrderBookSide.js +4 -4
  8. package/dist/cjs/src/bingx.js +140 -90
  9. package/dist/cjs/src/bitget.js +1 -0
  10. package/dist/cjs/src/bitmart.js +137 -2
  11. package/dist/cjs/src/bybit.js +3 -3
  12. package/dist/cjs/src/coinbase.js +1 -1
  13. package/dist/cjs/src/krakenfutures.js +1 -1
  14. package/dist/cjs/src/kucoin.js +1 -0
  15. package/dist/cjs/src/pro/bitfinex.js +4 -4
  16. package/dist/cjs/src/pro/bitfinex2.js +2 -2
  17. package/dist/cjs/src/pro/bitmex.js +3 -3
  18. package/dist/cjs/src/pro/blockchaincom.js +2 -2
  19. package/dist/cjs/src/pro/coinbase.js +5 -1
  20. package/dist/cjs/src/pro/cryptocom.js +4 -4
  21. package/dist/cjs/src/pro/deribit.js +9 -9
  22. package/dist/cjs/src/pro/idex.js +1 -1
  23. package/dist/cjs/src/pro/luno.js +4 -5
  24. package/dist/cjs/src/pro/mexc.js +2 -2
  25. package/dist/cjs/src/whitebit.js +1 -1
  26. package/js/ccxt.d.ts +1 -1
  27. package/js/ccxt.js +1 -1
  28. package/js/src/abstract/bingx.d.ts +7 -0
  29. package/js/src/abstract/bitget.d.ts +1 -0
  30. package/js/src/abstract/bitmart.d.ts +2 -0
  31. package/js/src/ascendex.js +1 -1
  32. package/js/src/base/Exchange.js +2 -1
  33. package/js/src/base/ws/Cache.d.ts +1 -1
  34. package/js/src/base/ws/OrderBookSide.d.ts +4 -5
  35. package/js/src/base/ws/OrderBookSide.js +4 -4
  36. package/js/src/bingx.js +140 -90
  37. package/js/src/bitget.js +1 -0
  38. package/js/src/bitmart.d.ts +3 -1
  39. package/js/src/bitmart.js +137 -2
  40. package/js/src/bybit.js +3 -3
  41. package/js/src/coinbase.js +1 -1
  42. package/js/src/krakenfutures.js +1 -1
  43. package/js/src/kucoin.js +1 -0
  44. package/js/src/pro/bitfinex.js +4 -4
  45. package/js/src/pro/bitfinex2.js +2 -2
  46. package/js/src/pro/bitmex.js +3 -3
  47. package/js/src/pro/blockchaincom.js +2 -2
  48. package/js/src/pro/coinbase.js +5 -1
  49. package/js/src/pro/cryptocom.js +4 -4
  50. package/js/src/pro/deribit.js +9 -9
  51. package/js/src/pro/idex.js +1 -1
  52. package/js/src/pro/luno.js +4 -5
  53. package/js/src/pro/mexc.js +2 -2
  54. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  55. package/js/src/whitebit.js +1 -1
  56. package/package.json +2 -2
@@ -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.store(price, size, id);
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.store(delta[0], size, delta[1]);
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.store(this.parseNumber(price), this.parseNumber(amount), id);
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.store(message[1], size, message[2]);
365
+ countedBookSide.storeArray([message[1], size, message[2]]);
366
366
  }
367
367
  client.resolve(orderbook, messageHash);
368
368
  }
@@ -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.store(this.parseNumber(price), this.parseNumber(amount), idString);
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.store(this.parseNumber(price), this.parseNumber(size), this.parseNumber(counter));
645
+ bookside.storeArray([this.parseNumber(price), this.parseNumber(size), this.parseNumber(counter)]);
646
646
  }
647
647
  client.resolve(orderbook, messageHash);
648
648
  }
@@ -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.safeValue(message, 'filter', {});
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.store(price, size, id);
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.store(price, size, id);
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.safeValue(message, 'asks', []);
702
- const bids = this.safeValue(message, 'bids', []);
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;
@@ -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.safeValue(tickersObj, 'tickers', []);
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');
@@ -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.store(price, amount, count);
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
- let orderbook = this.safeValue(this.orderbooks, symbol);
204
- if (orderbook === undefined) {
203
+ if (!(symbol in this.orderbooks)) {
205
204
  const limit = this.safeInteger(message, 'depth');
206
- orderbook = this.countedOrderBook({}, limit);
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;
@@ -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
- let storedOrderBook = this.safeValue(this.orderbooks, symbol);
514
- if (storedOrderBook === undefined) {
515
- storedOrderBook = this.countedOrderBook();
513
+ if (!(symbol in this.orderbooks)) {
514
+ this.orderbooks[symbol] = this.countedOrderBook();
516
515
  }
517
- const asks = this.safeValue(data, 'asks', []);
518
- const bids = this.safeValue(data, 'bids', []);
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.safeValue(data, 'bids', []);
531
- const asks = this.safeValue(data, 'asks', []);
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.store(price, amount, 1);
548
+ bookside.storeArray([price, amount, 1]);
549
549
  }
550
550
  else if (delta[0] === 'delete') {
551
- bookside.store(price, amount, 0);
551
+ bookside.storeArray([price, amount, 0]);
552
552
  }
553
553
  }
554
554
  handleDeltas(bookside, deltas) {
@@ -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.store(price, amount, count);
487
+ bookside.storeArray([price, amount, count]);
488
488
  }
489
489
  handleDeltas(bookside, deltas) {
490
490
  for (let i = 0; i < deltas.length; i++) {
@@ -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.safeString(message, 'timestamp');
197
- let orderbook = this.safeValue(this.orderbooks, symbol);
198
- if (orderbook === undefined) {
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');
@@ -511,8 +511,8 @@ export default class mexc extends mexcRest {
511
511
  return;
512
512
  }
513
513
  orderbook['nonce'] = deltaNonce;
514
- const asks = this.safeValue(delta, 'asks', []);
515
- const bids = this.safeValue(delta, 'bids', []);
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(): 1 | 0 | -1;
18
+ protected signum(): 0 | 1 | -1;
19
19
  toByteArray(): number[];
20
20
  protected equals(a: BigInteger): boolean;
21
21
  protected min(a: BigInteger): BigInteger;
@@ -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.safeString(balance, 'available');
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.27",
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
  ".": {