ccxt 4.5.8 → 4.5.9
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 -7
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +111 -17
- package/dist/cjs/src/base/ws/Client.js +4 -0
- package/dist/cjs/src/bitget.js +59 -72
- package/dist/cjs/src/coinbaseexchange.js +15 -0
- package/dist/cjs/src/hyperliquid.js +0 -3
- package/dist/cjs/src/latoken.js +1 -0
- package/dist/cjs/src/phemex.js +15 -6
- package/dist/cjs/src/pro/alpaca.js +1 -1
- package/dist/cjs/src/pro/apex.js +4 -4
- package/dist/cjs/src/pro/binance.js +2 -1
- package/dist/cjs/src/pro/bitfinex.js +1 -1
- package/dist/cjs/src/pro/bitget.js +1 -1
- package/dist/cjs/src/pro/bitmart.js +1 -1
- package/dist/cjs/src/pro/bitmex.js +1 -1
- package/dist/cjs/src/pro/bitvavo.js +6 -6
- package/dist/cjs/src/pro/blockchaincom.js +1 -1
- package/dist/cjs/src/pro/bybit.js +2 -1
- package/dist/cjs/src/pro/cex.js +2 -2
- package/dist/cjs/src/pro/coincatch.js +1 -1
- package/dist/cjs/src/pro/coinex.js +3 -3
- package/dist/cjs/src/pro/cryptocom.js +1 -1
- package/dist/cjs/src/pro/derive.js +1 -1
- package/dist/cjs/src/pro/gate.js +1 -1
- package/dist/cjs/src/pro/hitbtc.js +1 -1
- package/dist/cjs/src/pro/htx.js +2 -2
- package/dist/cjs/src/pro/kraken.js +8 -8
- package/dist/cjs/src/pro/krakenfutures.js +1 -1
- package/dist/cjs/src/pro/kucoin.js +4 -4
- package/dist/cjs/src/pro/kucoinfutures.js +4 -4
- package/dist/cjs/src/pro/mexc.js +6 -1
- package/dist/cjs/src/pro/modetrade.js +2 -2
- package/dist/cjs/src/pro/okx.js +4 -2
- package/dist/cjs/src/pro/onetrading.js +1 -1
- package/dist/cjs/src/pro/oxfun.js +1 -1
- package/dist/cjs/src/pro/toobit.js +1 -1
- package/dist/cjs/src/pro/whitebit.js +1 -1
- package/dist/cjs/src/pro/woo.js +1 -1
- package/dist/cjs/src/pro/woofipro.js +2 -2
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/coinbaseexchange.d.ts +15 -0
- package/js/src/base/Exchange.d.ts +13 -5
- package/js/src/base/Exchange.js +111 -17
- package/js/src/base/ws/Client.d.ts +1 -0
- package/js/src/base/ws/Client.js +4 -0
- package/js/src/bitget.js +59 -72
- package/js/src/coinbaseexchange.js +15 -0
- package/js/src/hyperliquid.js +0 -3
- package/js/src/latoken.js +1 -0
- package/js/src/phemex.js +15 -6
- package/js/src/pro/alpaca.js +1 -1
- package/js/src/pro/apex.js +4 -4
- package/js/src/pro/binance.d.ts +1 -1
- package/js/src/pro/binance.js +2 -1
- package/js/src/pro/bitfinex.js +1 -1
- package/js/src/pro/bitget.js +1 -1
- package/js/src/pro/bitmart.js +1 -1
- package/js/src/pro/bitmex.js +1 -1
- package/js/src/pro/bitvavo.d.ts +3 -3
- package/js/src/pro/bitvavo.js +6 -6
- package/js/src/pro/blockchaincom.js +1 -1
- package/js/src/pro/bybit.js +2 -1
- package/js/src/pro/cex.js +2 -2
- package/js/src/pro/coincatch.js +1 -1
- package/js/src/pro/coinex.js +3 -3
- package/js/src/pro/cryptocom.d.ts +1 -1
- package/js/src/pro/cryptocom.js +1 -1
- package/js/src/pro/derive.js +1 -1
- package/js/src/pro/gate.d.ts +1 -1
- package/js/src/pro/gate.js +1 -1
- package/js/src/pro/hitbtc.d.ts +1 -1
- package/js/src/pro/hitbtc.js +1 -1
- package/js/src/pro/htx.js +2 -2
- package/js/src/pro/hyperliquid.d.ts +1 -1
- package/js/src/pro/kraken.d.ts +2 -2
- package/js/src/pro/kraken.js +8 -8
- package/js/src/pro/krakenfutures.js +1 -1
- package/js/src/pro/kucoin.js +4 -4
- package/js/src/pro/kucoinfutures.js +4 -4
- package/js/src/pro/mexc.js +6 -1
- package/js/src/pro/modetrade.js +2 -2
- package/js/src/pro/okx.d.ts +2 -2
- package/js/src/pro/okx.js +4 -2
- package/js/src/pro/onetrading.js +1 -1
- package/js/src/pro/oxfun.d.ts +1 -1
- package/js/src/pro/oxfun.js +1 -1
- package/js/src/pro/poloniex.d.ts +2 -2
- package/js/src/pro/toobit.js +1 -1
- package/js/src/pro/whitebit.js +1 -1
- package/js/src/pro/woo.js +1 -1
- package/js/src/pro/woofipro.js +2 -2
- package/package.json +21 -10
package/js/src/pro/kraken.js
CHANGED
|
@@ -299,7 +299,7 @@ export default class kraken extends krakenRest {
|
|
|
299
299
|
const market = this.market(symbol);
|
|
300
300
|
const url = this.urls['api']['ws']['privateV2'];
|
|
301
301
|
const requestId = this.requestId();
|
|
302
|
-
const messageHash = requestId;
|
|
302
|
+
const messageHash = this.numberToString(requestId);
|
|
303
303
|
let request = {
|
|
304
304
|
'method': 'add_order',
|
|
305
305
|
'params': {
|
|
@@ -343,7 +343,7 @@ export default class kraken extends krakenRest {
|
|
|
343
343
|
//
|
|
344
344
|
const result = this.safeDict(message, 'result', {});
|
|
345
345
|
const order = this.parseOrder(result);
|
|
346
|
-
const messageHash = this.
|
|
346
|
+
const messageHash = this.safeString2(message, 'reqid', 'req_id');
|
|
347
347
|
client.resolve(order, messageHash);
|
|
348
348
|
}
|
|
349
349
|
/**
|
|
@@ -365,7 +365,7 @@ export default class kraken extends krakenRest {
|
|
|
365
365
|
const token = await this.authenticate();
|
|
366
366
|
const url = this.urls['api']['ws']['privateV2'];
|
|
367
367
|
const requestId = this.requestId();
|
|
368
|
-
const messageHash = requestId;
|
|
368
|
+
const messageHash = this.numberToString(requestId);
|
|
369
369
|
let request = {
|
|
370
370
|
'method': 'amend_order',
|
|
371
371
|
'params': {
|
|
@@ -396,7 +396,7 @@ export default class kraken extends krakenRest {
|
|
|
396
396
|
const token = await this.authenticate();
|
|
397
397
|
const url = this.urls['api']['ws']['privateV2'];
|
|
398
398
|
const requestId = this.requestId();
|
|
399
|
-
const messageHash = requestId;
|
|
399
|
+
const messageHash = this.numberToString(requestId);
|
|
400
400
|
const request = {
|
|
401
401
|
'method': 'cancel_order',
|
|
402
402
|
'params': {
|
|
@@ -425,7 +425,7 @@ export default class kraken extends krakenRest {
|
|
|
425
425
|
const token = await this.authenticate();
|
|
426
426
|
const url = this.urls['api']['ws']['privateV2'];
|
|
427
427
|
const requestId = this.requestId();
|
|
428
|
-
const messageHash = requestId;
|
|
428
|
+
const messageHash = this.numberToString(requestId);
|
|
429
429
|
const request = {
|
|
430
430
|
'method': 'cancel_order',
|
|
431
431
|
'params': {
|
|
@@ -449,7 +449,7 @@ export default class kraken extends krakenRest {
|
|
|
449
449
|
// "time_out": "2023-09-21T14:36:57.437952Z"
|
|
450
450
|
// }
|
|
451
451
|
//
|
|
452
|
-
const reqId = this.
|
|
452
|
+
const reqId = this.safeString(message, 'req_id');
|
|
453
453
|
client.resolve(message, reqId);
|
|
454
454
|
}
|
|
455
455
|
/**
|
|
@@ -469,7 +469,7 @@ export default class kraken extends krakenRest {
|
|
|
469
469
|
const token = await this.authenticate();
|
|
470
470
|
const url = this.urls['api']['ws']['privateV2'];
|
|
471
471
|
const requestId = this.requestId();
|
|
472
|
-
const messageHash = requestId;
|
|
472
|
+
const messageHash = this.numberToString(requestId);
|
|
473
473
|
const request = {
|
|
474
474
|
'method': 'cancel_all',
|
|
475
475
|
'params': {
|
|
@@ -492,7 +492,7 @@ export default class kraken extends krakenRest {
|
|
|
492
492
|
// "time_out": "2023-09-21T14:36:57.437952Z"
|
|
493
493
|
// }
|
|
494
494
|
//
|
|
495
|
-
const reqId = this.
|
|
495
|
+
const reqId = this.safeString(message, 'req_id');
|
|
496
496
|
client.resolve(message, reqId);
|
|
497
497
|
}
|
|
498
498
|
handleTicker(client, message) {
|
|
@@ -79,7 +79,7 @@ export default class krakenfutures extends krakenfuturesRest {
|
|
|
79
79
|
const url = this.urls['api']['ws'];
|
|
80
80
|
const messageHash = 'challenge';
|
|
81
81
|
const client = this.client(url);
|
|
82
|
-
const future = client.
|
|
82
|
+
const future = client.reusableFuture(messageHash);
|
|
83
83
|
const authenticated = this.safeValue(client.subscriptions, messageHash);
|
|
84
84
|
if (authenticated === undefined) {
|
|
85
85
|
const request = {
|
package/js/src/pro/kucoin.js
CHANGED
|
@@ -63,16 +63,16 @@ export default class kucoin extends kucoinRest {
|
|
|
63
63
|
async negotiate(privateChannel, params = {}) {
|
|
64
64
|
const connectId = privateChannel ? 'private' : 'public';
|
|
65
65
|
const urls = this.safeValue(this.options, 'urls', {});
|
|
66
|
-
|
|
67
|
-
if (
|
|
68
|
-
return await
|
|
66
|
+
let future = this.safeValue(urls, connectId);
|
|
67
|
+
if (future !== undefined) {
|
|
68
|
+
return await future;
|
|
69
69
|
}
|
|
70
70
|
// we store an awaitable to the url
|
|
71
71
|
// so that multiple calls don't asynchronously
|
|
72
72
|
// fetch different urls and overwrite each other
|
|
73
73
|
urls[connectId] = this.spawn(this.negotiateHelper, privateChannel, params);
|
|
74
74
|
this.options['urls'] = urls;
|
|
75
|
-
|
|
75
|
+
future = urls[connectId];
|
|
76
76
|
return await future;
|
|
77
77
|
}
|
|
78
78
|
async negotiateHelper(privateChannel, params = {}) {
|
|
@@ -82,16 +82,16 @@ export default class kucoinfutures extends kucoinfuturesRest {
|
|
|
82
82
|
async negotiate(privateChannel, params = {}) {
|
|
83
83
|
const connectId = privateChannel ? 'private' : 'public';
|
|
84
84
|
const urls = this.safeValue(this.options, 'urls', {});
|
|
85
|
-
|
|
86
|
-
if (
|
|
87
|
-
return await
|
|
85
|
+
let future = this.safeValue(urls, connectId);
|
|
86
|
+
if (future !== undefined) {
|
|
87
|
+
return await future;
|
|
88
88
|
}
|
|
89
89
|
// we store an awaitable to the url
|
|
90
90
|
// so that multiple calls don't asynchronously
|
|
91
91
|
// fetch different urls and overwrite each other
|
|
92
92
|
urls[connectId] = this.spawn(this.negotiateHelper, privateChannel, params); // we have to wait here otherwsie in c# will not work
|
|
93
93
|
this.options['urls'] = urls;
|
|
94
|
-
|
|
94
|
+
future = urls[connectId];
|
|
95
95
|
return await future;
|
|
96
96
|
}
|
|
97
97
|
async negotiateHelper(privateChannel, params = {}) {
|
package/js/src/pro/mexc.js
CHANGED
|
@@ -866,6 +866,7 @@ export default class mexc extends mexcRest {
|
|
|
866
866
|
}
|
|
867
867
|
const storedOrderBook = this.orderbooks[symbol];
|
|
868
868
|
const nonce = this.safeInteger(storedOrderBook, 'nonce');
|
|
869
|
+
let shouldReturn = false;
|
|
869
870
|
if (nonce === undefined) {
|
|
870
871
|
const cacheLength = storedOrderBook.cache.length;
|
|
871
872
|
const snapshotDelay = this.handleOption('watchOrderBook', 'snapshotDelay', 25);
|
|
@@ -884,7 +885,11 @@ export default class mexc extends mexcRest {
|
|
|
884
885
|
catch (e) {
|
|
885
886
|
delete client.subscriptions[messageHash];
|
|
886
887
|
client.reject(e, messageHash);
|
|
887
|
-
return;
|
|
888
|
+
// return;
|
|
889
|
+
shouldReturn = true;
|
|
890
|
+
}
|
|
891
|
+
if (shouldReturn) {
|
|
892
|
+
return; // go requirement
|
|
888
893
|
}
|
|
889
894
|
client.resolve(storedOrderBook, messageHash);
|
|
890
895
|
}
|
package/js/src/pro/modetrade.js
CHANGED
|
@@ -80,7 +80,7 @@ export default class modetrade extends modetradeRest {
|
|
|
80
80
|
async watchPublic(messageHash, message) {
|
|
81
81
|
// the default id
|
|
82
82
|
let id = 'OqdphuyCtYWxwzhxyLLjOWNdFP7sQt8RPWzmb5xY';
|
|
83
|
-
if (this.accountId !== undefined) {
|
|
83
|
+
if (this.accountId !== undefined && this.accountId !== '') {
|
|
84
84
|
id = this.accountId;
|
|
85
85
|
}
|
|
86
86
|
const url = this.urls['api']['ws']['public'] + '/' + id;
|
|
@@ -595,7 +595,7 @@ export default class modetrade extends modetradeRest {
|
|
|
595
595
|
const client = this.client(url);
|
|
596
596
|
const messageHash = 'authenticated';
|
|
597
597
|
const event = 'auth';
|
|
598
|
-
const future = client.
|
|
598
|
+
const future = client.reusableFuture(messageHash);
|
|
599
599
|
const authenticated = this.safeValue(client.subscriptions, messageHash);
|
|
600
600
|
if (authenticated === undefined) {
|
|
601
601
|
const ts = this.nonce().toString();
|
package/js/src/pro/okx.d.ts
CHANGED
|
@@ -388,7 +388,7 @@ export default class okx extends okxRest {
|
|
|
388
388
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
389
389
|
* @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
390
390
|
*/
|
|
391
|
-
cancelOrdersWs(ids: string[], symbol?: Str, params?: {}): Promise<
|
|
391
|
+
cancelOrdersWs(ids: string[], symbol?: Str, params?: {}): Promise<Order[]>;
|
|
392
392
|
/**
|
|
393
393
|
* @method
|
|
394
394
|
* @name okx#cancelAllOrdersWs
|
|
@@ -398,7 +398,7 @@ export default class okx extends okxRest {
|
|
|
398
398
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
399
399
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
400
400
|
*/
|
|
401
|
-
cancelAllOrdersWs(symbol?: Str, params?: {}): Promise<
|
|
401
|
+
cancelAllOrdersWs(symbol?: Str, params?: {}): Promise<Order[]>;
|
|
402
402
|
handleCancelAllOrders(client: Client, message: any): void;
|
|
403
403
|
handleSubscriptionStatus(client: Client, message: any): any;
|
|
404
404
|
handleAuthenticate(client: Client, message: any): void;
|
package/js/src/pro/okx.js
CHANGED
|
@@ -1349,7 +1349,9 @@ export default class okx extends okxRest {
|
|
|
1349
1349
|
}
|
|
1350
1350
|
if (error !== undefined) {
|
|
1351
1351
|
delete client.subscriptions[messageHash];
|
|
1352
|
-
|
|
1352
|
+
if (symbol !== undefined) {
|
|
1353
|
+
delete this.orderbooks[symbol];
|
|
1354
|
+
}
|
|
1353
1355
|
client.reject(error, messageHash);
|
|
1354
1356
|
}
|
|
1355
1357
|
}
|
|
@@ -1503,7 +1505,7 @@ export default class okx extends okxRest {
|
|
|
1503
1505
|
const url = this.getUrl('users', access);
|
|
1504
1506
|
const messageHash = 'authenticated';
|
|
1505
1507
|
const client = this.client(url);
|
|
1506
|
-
const future = client.
|
|
1508
|
+
const future = client.reusableFuture(messageHash);
|
|
1507
1509
|
const authenticated = this.safeValue(client.subscriptions, messageHash);
|
|
1508
1510
|
if (authenticated === undefined) {
|
|
1509
1511
|
const timestamp = this.seconds().toString();
|
package/js/src/pro/onetrading.js
CHANGED
|
@@ -1328,7 +1328,7 @@ export default class onetrading extends onetradingRest {
|
|
|
1328
1328
|
const url = this.urls['api']['ws'];
|
|
1329
1329
|
const client = this.client(url);
|
|
1330
1330
|
const messageHash = 'authenticated';
|
|
1331
|
-
const future = client.
|
|
1331
|
+
const future = client.reusableFuture('authenticated');
|
|
1332
1332
|
const authenticated = this.safeValue(client.subscriptions, messageHash);
|
|
1333
1333
|
if (authenticated === undefined) {
|
|
1334
1334
|
this.checkRequiredCredentials();
|
package/js/src/pro/oxfun.d.ts
CHANGED
|
@@ -225,7 +225,7 @@ export default class oxfun extends oxfunRest {
|
|
|
225
225
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
226
226
|
* @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
227
227
|
*/
|
|
228
|
-
cancelOrdersWs(ids: string[], symbol?: Str, params?: {}): Promise<
|
|
228
|
+
cancelOrdersWs(ids: string[], symbol?: Str, params?: {}): Promise<Order[]>;
|
|
229
229
|
authenticate(params?: {}): Promise<any>;
|
|
230
230
|
handleAuthenticationMessage(client: Client, message: any): void;
|
|
231
231
|
ping(client: Client): string;
|
package/js/src/pro/oxfun.js
CHANGED
|
@@ -1023,7 +1023,7 @@ export default class oxfun extends oxfunRest {
|
|
|
1023
1023
|
const url = this.urls['api']['ws'];
|
|
1024
1024
|
const client = this.client(url);
|
|
1025
1025
|
const messageHash = 'authenticated';
|
|
1026
|
-
const future = client.
|
|
1026
|
+
const future = client.reusableFuture(messageHash);
|
|
1027
1027
|
const authenticated = this.safeDict(client.subscriptions, messageHash);
|
|
1028
1028
|
if (authenticated === undefined) {
|
|
1029
1029
|
this.checkRequiredCredentials();
|
package/js/src/pro/poloniex.d.ts
CHANGED
|
@@ -78,7 +78,7 @@ export default class poloniex extends poloniexRest {
|
|
|
78
78
|
* @param {string[]} [params.clientOrderIds] client order ids
|
|
79
79
|
* @returns {object} an list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
|
|
80
80
|
*/
|
|
81
|
-
cancelOrdersWs(ids: string[], symbol?: Str, params?: {}): Promise<
|
|
81
|
+
cancelOrdersWs(ids: string[], symbol?: Str, params?: {}): Promise<Order[]>;
|
|
82
82
|
/**
|
|
83
83
|
* @method
|
|
84
84
|
* @name poloniex#cancelAllOrdersWs
|
|
@@ -88,7 +88,7 @@ export default class poloniex extends poloniexRest {
|
|
|
88
88
|
* @param {object} [params] extra parameters specific to the poloniex api endpoint
|
|
89
89
|
* @returns {object[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
|
|
90
90
|
*/
|
|
91
|
-
cancelAllOrdersWs(symbol?: Str, params?: {}): Promise<
|
|
91
|
+
cancelAllOrdersWs(symbol?: Str, params?: {}): Promise<Order[]>;
|
|
92
92
|
handleOrderRequest(client: Client, message: any): void;
|
|
93
93
|
/**
|
|
94
94
|
* @method
|
package/js/src/pro/toobit.js
CHANGED
|
@@ -1089,7 +1089,7 @@ export default class toobit extends toobitRest {
|
|
|
1089
1089
|
async authenticate(params = {}) {
|
|
1090
1090
|
const client = this.client(this.getUserStreamUrl());
|
|
1091
1091
|
const messageHash = 'authenticated';
|
|
1092
|
-
const future = client.
|
|
1092
|
+
const future = client.reusableFuture(messageHash);
|
|
1093
1093
|
const authenticated = this.safeValue(client.subscriptions, messageHash);
|
|
1094
1094
|
if (authenticated === undefined) {
|
|
1095
1095
|
this.checkRequiredCredentials();
|
package/js/src/pro/whitebit.js
CHANGED
|
@@ -832,7 +832,7 @@ export default class whitebit extends whitebitRest {
|
|
|
832
832
|
const url = this.urls['api']['ws'];
|
|
833
833
|
const messageHash = 'authenticated';
|
|
834
834
|
const client = this.client(url);
|
|
835
|
-
const future = client.
|
|
835
|
+
const future = client.reusableFuture('authenticated');
|
|
836
836
|
const authenticated = this.safeValue(client.subscriptions, messageHash);
|
|
837
837
|
if (authenticated === undefined) {
|
|
838
838
|
const authToken = await this.v4PrivatePostProfileWebsocketToken();
|
package/js/src/pro/woo.js
CHANGED
|
@@ -843,7 +843,7 @@ export default class woo extends wooRest {
|
|
|
843
843
|
const client = this.client(url);
|
|
844
844
|
const messageHash = 'authenticated';
|
|
845
845
|
const event = 'auth';
|
|
846
|
-
const future = client.
|
|
846
|
+
const future = client.reusableFuture(messageHash);
|
|
847
847
|
const authenticated = this.safeValue(client.subscriptions, messageHash);
|
|
848
848
|
if (authenticated === undefined) {
|
|
849
849
|
const ts = this.nonce().toString();
|
package/js/src/pro/woofipro.js
CHANGED
|
@@ -80,7 +80,7 @@ export default class woofipro extends woofiproRest {
|
|
|
80
80
|
async watchPublic(messageHash, message) {
|
|
81
81
|
// the default id
|
|
82
82
|
let id = 'OqdphuyCtYWxwzhxyLLjOWNdFP7sQt8RPWzmb5xY';
|
|
83
|
-
if (this.accountId !== undefined) {
|
|
83
|
+
if (this.accountId !== undefined && this.accountId !== '') {
|
|
84
84
|
id = this.accountId;
|
|
85
85
|
}
|
|
86
86
|
const url = this.urls['api']['ws']['public'] + '/' + id;
|
|
@@ -595,7 +595,7 @@ export default class woofipro extends woofiproRest {
|
|
|
595
595
|
const client = this.client(url);
|
|
596
596
|
const messageHash = 'authenticated';
|
|
597
597
|
const event = 'auth';
|
|
598
|
-
const future = client.
|
|
598
|
+
const future = client.reusableFuture(messageHash);
|
|
599
599
|
const authenticated = this.safeValue(client.subscriptions, messageHash);
|
|
600
600
|
if (authenticated === undefined) {
|
|
601
601
|
const ts = this.nonce().toString();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ccxt",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.9",
|
|
4
4
|
"description": "A cryptocurrency trading API with more than 100 exchanges in JavaScript / TypeScript / Python / C# / PHP / Go",
|
|
5
5
|
"unpkg": "dist/ccxt.browser.min.js",
|
|
6
6
|
"type": "module",
|
|
@@ -31,9 +31,12 @@
|
|
|
31
31
|
"transpileCS": "tsx build/csharpTranspiler.ts --multi",
|
|
32
32
|
"transpileCSWs": "tsx build/csharpTranspiler.ts --ws",
|
|
33
33
|
"buildCS": "dotnet build cs/ccxt.sln",
|
|
34
|
+
"buildGO": "go build -C go ./v4 && go build -C go ./v4/pro",
|
|
35
|
+
"formatGO": "go fmt -C go v4 tests",
|
|
36
|
+
"transpileGOWs": "tsx build/goTranspiler.ts --ws",
|
|
37
|
+
"transpileGORest": "tsx build/goTranspiler.ts && tsx build/goTranspiler.ts --ws",
|
|
38
|
+
"transpileGO": "npm run transpileGORest && npm run transpileGOWs",
|
|
34
39
|
"buildCSTests": "dotnet build cs/tests/tests.csproj",
|
|
35
|
-
"buildGO": "go build -C go ./v4",
|
|
36
|
-
"transpileGO": "tsx build/goTranspiler.ts",
|
|
37
40
|
"buildCSRelease": "dotnet build cs --configuration Release",
|
|
38
41
|
"csharp": "npm run transpileCS && npm run transpileCSWs && npm run buildCS",
|
|
39
42
|
"go": "npm run transpileGO && npm run buildGO",
|
|
@@ -126,6 +129,7 @@
|
|
|
126
129
|
"live-tests-rest-csharp": "npm run live-tests -- --csharp",
|
|
127
130
|
"live-tests-rest-go": "npm run live-tests -- --go",
|
|
128
131
|
"live-tests-ws-csharp": "npm run live-tests -- --csharp --ws",
|
|
132
|
+
"live-tests-ws-go": "npm run live-tests -- --go --ws",
|
|
129
133
|
"ti-ts": "tsx ts/src/test/tests.init.ts",
|
|
130
134
|
"ti-js": "node js/src/test/tests.init.js",
|
|
131
135
|
"ti-py": "python3 python/ccxt/test/tests_init.py",
|
|
@@ -175,15 +179,17 @@
|
|
|
175
179
|
"test-base-ws-py": "npm run ti-py -- --baseTests --ws",
|
|
176
180
|
"test-base-ws-php": "npm run ti-php -- --baseTests --ws",
|
|
177
181
|
"test-base-ws-cs": "npm run ti-cs -- --baseTests --ws",
|
|
182
|
+
"test-base-ws-go": "npm run ti-go -- --baseTests --ws",
|
|
178
183
|
"test-base-rest": "npm run test-base-rest-js && npm run test-base-rest-py && npm run test-base-rest-php && npm run test-base-rest-cs",
|
|
179
|
-
"test-base-ws": "npm run test-base-ws-js && npm run test-base-ws-py && npm run test-base-ws-php && npm run test-base-ws-cs",
|
|
184
|
+
"test-base-ws": "npm run test-base-ws-js && npm run test-base-ws-py && npm run test-base-ws-php && npm run test-base-ws-cs && npm run test-base-ws-go",
|
|
180
185
|
"test": "npm run build && npm run commonjs-test && npm run id-tests && npm run request-tests && npm run response-tests && npm run live-tests",
|
|
181
186
|
"commonjs-test": "node ./utils/test-commonjs.cjs",
|
|
182
187
|
"package-test": "./utils/package-test.sh",
|
|
183
188
|
"test-freshness": "tsx ./utils/test-freshness.ts",
|
|
184
189
|
"benchmark": "tsx examples/ts/benchmark.ts",
|
|
185
190
|
"cleanup-old-tags": "tsx ./build/cleanup-old-tags.ts",
|
|
186
|
-
"test-types-go": "go run -C go ./tests/types/types.go"
|
|
191
|
+
"test-types-go": "go run -C go ./tests/types/types.go",
|
|
192
|
+
"test-go": "npm run test-types-go && npm run response-go && npm run request-go && npm run test-base-rest-go && npm run test-base-ws-go"
|
|
187
193
|
},
|
|
188
194
|
"types": "./js/ccxt.d.ts",
|
|
189
195
|
"devDependencies": {
|
|
@@ -197,26 +203,31 @@
|
|
|
197
203
|
"as-table": "^1.0.55",
|
|
198
204
|
"asciichart": "^1.5.25",
|
|
199
205
|
"assert": "^2.0.0",
|
|
200
|
-
"ast-transpiler": "^0.0.
|
|
206
|
+
"ast-transpiler": "^0.0.71",
|
|
207
|
+
"blessed": "^0.1.81",
|
|
208
|
+
"clipboardy": "^5.0.0",
|
|
209
|
+
"commander": "^14.0.1",
|
|
201
210
|
"docsify": "^4.13.1",
|
|
202
|
-
"eslint": "8.22.0",
|
|
203
211
|
"eslint-config-airbnb-base": "15.0.0",
|
|
204
212
|
"eslint-plugin-import": "2.25.4",
|
|
205
213
|
"eslint-plugin-jsdoc": "^46.9.0",
|
|
214
|
+
"eslint": "8.22.0",
|
|
206
215
|
"https-proxy-agent": "^5.0.1",
|
|
207
216
|
"jsdoc-to-markdown": "^8.0.0",
|
|
208
217
|
"ololog": "^1.1.175",
|
|
218
|
+
"open": "^10.2.0",
|
|
219
|
+
"ora": "^9.0.0",
|
|
209
220
|
"piscina": "^3.2.0",
|
|
210
221
|
"protobufjs": "^7.5.3",
|
|
211
222
|
"replace-in-file": "^6.3.5",
|
|
212
|
-
"rollup": "^2.70.1",
|
|
213
223
|
"rollup-plugin-execute": "1.1.1",
|
|
224
|
+
"rollup": "^2.70.1",
|
|
214
225
|
"terser-webpack-plugin": "^5.3.9",
|
|
215
226
|
"ts-loader": "^9.4.2",
|
|
216
227
|
"tsx": "^4.7.2",
|
|
217
228
|
"typescript": "4.7.4",
|
|
218
|
-
"webpack": "^5.
|
|
219
|
-
"webpack
|
|
229
|
+
"webpack-cli": "^5.0.1",
|
|
230
|
+
"webpack": "^5.76.2"
|
|
220
231
|
},
|
|
221
232
|
"author": {
|
|
222
233
|
"name": "Igor Kroitor",
|