diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..7bd4a08 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,65 @@ +## [1.0.5-beta](https://github.com/Kucoin/kucoin-node-sdk/compare/v1.0.4...v1.0.5-beta) (2023-06-25) + + +### Features + +* changelog update ([26c7b58](https://github.com/Kucoin/kucoin-node-sdk/commit/26c7b5868d010145e6772adeb93318db0f9ca421)) +* readme update ([beec87d](https://github.com/Kucoin/kucoin-node-sdk/commit/beec87d2e941ed23cec99968fc223f186f236198)) +* readme update ([48eed92](https://github.com/Kucoin/kucoin-node-sdk/commit/48eed9266f85d078290de26371e7aa1c6af33851)) +* readme update ([a63be9c](https://github.com/Kucoin/kucoin-node-sdk/commit/a63be9c9283b927afcd1aec404a5179851a75f5b)) +* readme update ([c9832f6](https://github.com/Kucoin/kucoin-node-sdk/commit/c9832f6764d8987e77ae9e8a5d7039f299c404ff)) +* update api sdk done ([c89f572](https://github.com/Kucoin/kucoin-node-sdk/commit/c89f572f92455185cfb9c441ed6bd025c2462e08)) +* update demo ([58f3f7b](https://github.com/Kucoin/kucoin-node-sdk/commit/58f3f7b945ac63046cff97b28cc752e6b88e61e2)) +* update updateTime ([428aba7](https://github.com/Kucoin/kucoin-node-sdk/commit/428aba71ed84e7dd6f3af911978772e3c07511e6)) +* update updateTime ([957234d](https://github.com/Kucoin/kucoin-node-sdk/commit/957234d8c26b09faee3a374f4b611b23dde5273c)) +* update updateTime ([e0feb20](https://github.com/Kucoin/kucoin-node-sdk/commit/e0feb20577123be35fdd0835b684ca21e233ad84)) +* update updateTime ([3cab49b](https://github.com/Kucoin/kucoin-node-sdk/commit/3cab49b4b122e82c6cefaf8a207a0b1851cdb23a)) + + + +## [1.0.5-beta](https://github.com/Kucoin/kucoin-node-sdk/compare/v1.0.4...v1.0.5-beta) (2023-05-31) + + +### Features + +* changelog update ([26c7b58](https://github.com/Kucoin/kucoin-node-sdk/commit/26c7b5868d010145e6772adeb93318db0f9ca421)) +* readme update ([beec87d](https://github.com/Kucoin/kucoin-node-sdk/commit/beec87d2e941ed23cec99968fc223f186f236198)) +* readme update ([48eed92](https://github.com/Kucoin/kucoin-node-sdk/commit/48eed9266f85d078290de26371e7aa1c6af33851)) +* readme update ([a63be9c](https://github.com/Kucoin/kucoin-node-sdk/commit/a63be9c9283b927afcd1aec404a5179851a75f5b)) +* readme update ([c9832f6](https://github.com/Kucoin/kucoin-node-sdk/commit/c9832f6764d8987e77ae9e8a5d7039f299c404ff)) +* update api sdk done ([c89f572](https://github.com/Kucoin/kucoin-node-sdk/commit/c89f572f92455185cfb9c441ed6bd025c2462e08)) +* update updateTime ([428aba7](https://github.com/Kucoin/kucoin-node-sdk/commit/428aba71ed84e7dd6f3af911978772e3c07511e6)) +* update updateTime ([957234d](https://github.com/Kucoin/kucoin-node-sdk/commit/957234d8c26b09faee3a374f4b611b23dde5273c)) +* update updateTime ([e0feb20](https://github.com/Kucoin/kucoin-node-sdk/commit/e0feb20577123be35fdd0835b684ca21e233ad84)) +* update updateTime ([3cab49b](https://github.com/Kucoin/kucoin-node-sdk/commit/3cab49b4b122e82c6cefaf8a207a0b1851cdb23a)) + + + +## [1.0.5-beta](https://github.com/Kucoin/kucoin-node-sdk/compare/v1.0.4...v1.0.5-beta) (2023-05-25) + + +### Features + +* changelog update ([26c7b58](https://github.com/Kucoin/kucoin-node-sdk/commit/26c7b5868d010145e6772adeb93318db0f9ca421)) +* readme update ([beec87d](https://github.com/Kucoin/kucoin-node-sdk/commit/beec87d2e941ed23cec99968fc223f186f236198)) +* readme update ([48eed92](https://github.com/Kucoin/kucoin-node-sdk/commit/48eed9266f85d078290de26371e7aa1c6af33851)) +* readme update ([a63be9c](https://github.com/Kucoin/kucoin-node-sdk/commit/a63be9c9283b927afcd1aec404a5179851a75f5b)) +* readme update ([c9832f6](https://github.com/Kucoin/kucoin-node-sdk/commit/c9832f6764d8987e77ae9e8a5d7039f299c404ff)) +* update api sdk done ([c89f572](https://github.com/Kucoin/kucoin-node-sdk/commit/c89f572f92455185cfb9c441ed6bd025c2462e08)) +* update updateTime ([3cab49b](https://github.com/Kucoin/kucoin-node-sdk/commit/3cab49b4b122e82c6cefaf8a207a0b1851cdb23a)) + + + +## [1.0.5-beta](https://github.com/Kucoin/kucoin-node-sdk/compare/v1.0.4...v1.0.5-beta) (2023-05-25) + + +### Features + +* readme update ([beec87d](https://github.com/Kucoin/kucoin-node-sdk/commit/beec87d2e941ed23cec99968fc223f186f236198)) +* readme update ([48eed92](https://github.com/Kucoin/kucoin-node-sdk/commit/48eed9266f85d078290de26371e7aa1c6af33851)) +* readme update ([a63be9c](https://github.com/Kucoin/kucoin-node-sdk/commit/a63be9c9283b927afcd1aec404a5179851a75f5b)) +* readme update ([c9832f6](https://github.com/Kucoin/kucoin-node-sdk/commit/c9832f6764d8987e77ae9e8a5d7039f299c404ff)) +* update api sdk done ([c89f572](https://github.com/Kucoin/kucoin-node-sdk/commit/c89f572f92455185cfb9c441ed6bd025c2462e08)) + + + diff --git a/README.md b/README.md index 60e58ba..9f1fa3c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ -# kucoin-node-sdk +# kucoin-node-sdk for KuCoin API KuCoin API SDK for Node.js language +The detailed document [https://docs.kucoin.com](https://docs.kucoin.com). + +[![Latest Version](https://img.shields.io/github/v/release/Kucoin/kucoin-node-sdk.svg?style=flat-square)](https://github.com/Kucoin/kucoin-node-sdk/releases) + ## Env ``` @@ -18,6 +22,26 @@ yarn add kucoin-node-sdk ``` +## Init Configure +``` +{ + baseUrl: '', + apiAuth: { + key: '', // KC-API-KEY + secret: '', // API-Secret + passphrase: '', // KC-API-PASSPHRASE + }, + authVersion: 2, // KC-API-KEY-VERSION. Notice: for v2 API-KEY, not required for v1 version. +} +``` +You can use `baseUrl` method to change evironment. +| **Environment** | **BaseUri** | +| -------- | -------- | +| *Production* `DEFAULT` | https://openapi-v2.kucoin.com | +| *Sandbox* | https://openapi-sandbox.kucoin.com | + +If you only need to use the public web socket client or REST client public method, you can igonre `withApiKey` method. To customize your own API implementation, you may use the `with*API` method we provided for you. + ## Usage ``` @@ -33,23 +57,19 @@ const main = async () => { console.log(getTimestampRl.data); }; -/** Run Demo */ -main(); -``` +/** Run Demo for all apis */ +REST API: yarn dev +SW: yarn dev-ws (you can opt the params for different sw demo in demo,such as follow exp) + +"dev-ws": "cross-env PRODUCTION=dev nodemon demo/xxx_demo.js", -### Init Configure -``` -{ - baseUrl: '', - apiAuth: { - key: '', // KC-API-KEY - secret: '', // API-Secret - passphrase: '', // KC-API-PASSPHRASE - }, - authVersion: 2, // KC-API-KEY-VERSION. Notice: for v2 API-KEY, not required for v1 version. -} ``` +## Demo SDK for all APIS + +DEMO: [demo/index.js](https://github.com/Kucoin/kucoin-node-sdk/blob/master/demo/index.js) + + ## API Modules ### Rest/User @@ -59,6 +79,7 @@ Signature is required for this part. #### Rest/User/UserInfo - [x] getSubUsers +- [x] getPaginatedSubUsers #### Rest/User/Account - [x] createAccount - [x] getAccountsList @@ -70,6 +91,16 @@ Signature is required for this part. - [x] getTransferable - [x] transferBetweenMasterUserAndSubUser - [x] innerTransfer +- [x] getAccountSummaryInfo +- [x] createSubAccount +- [x] getSubAccountSpotApiList +- [x] createSpotAPIsForSubAccount +- [x] updateSubAccountSpotApis +- [x] deleteSubAccountSpotApis +- [x] getPaginatedSubAccountInformation +- [x] transferToHFAccount +- [x] getHighFrequencyAccountLedger + #### Rest/User/Deposit - [x] createDepositAddress - [x] getDepositAddressV2 @@ -102,6 +133,24 @@ Signature is required for this part. - [x] getRecentOrders - [x] getOrderByID - [x] getSingleActiveOrderByClientOid +- [x] placeHfOrder +- [x] syncPlaceHfOrder +- [x] placeMultipleHfOrders +- [x] syncPlaceMultipleHfOrders +- [x] modifyOrder +- [x] cancelOrdersByOrderId +- [x] syncCancelOrdersByOrderId +- [x] cancelOrderByClientOid +- [x] syncCancelOrdersByClientOid +- [x] cancelSpecifiedNumberOfOrdersByOrderId +- [x] cancelAllHfOrdersBySymbol +- [x] obtainListOfActiveHfOrders +- [x] obtainListOfSymbolWithActiveHfOrders +- [x] obtainListOfFilledHfOrders +- [x] detailsOfAsingleHfOrder +- [x] obtainDetailsOfASingleHfOrder +- [x] hfAutoCancelSetting +- [x] queryHfAutoCancelOrderSetting #### Rest/Trade/StopOrder - [x] postStopOrder - [x] cancelOrder @@ -110,9 +159,12 @@ Signature is required for this part. - [x] getStopOrderList - [x] getOrderByClientOid - [x] cancelSingleOrderByClientOid +- [x] getSingleStopOrderInfo +- [x] cancelStopOrder #### Rest/Trade/Fills - [x] getFillsList - [x] getRecentFills +- [x] getHfTransactionRecords ### Rest/Market ``` @@ -124,6 +176,7 @@ Signature is not required for this part - [x] getAllTickers - [x] get24hrStats - [x] getMarketList +- [x] getSymbolsList #### Rest/Market/OrderBook - [x] getLevel2_20 - [x] getLevel2_100 @@ -136,6 +189,7 @@ Signature is not required for this part - [x] getCurrencies - [x] getCurrencyDetail - [x] getFiatPrice +- [x] getCurrencyDetail #### Rest/Margin/MarginInfo - [x] getMarkPrice - [x] getMarginConfigurationInfo @@ -159,6 +213,15 @@ Signature is not required for this part - [x] getAccountLendRecord - [x] getLendingMarketData - [x] getMarginFillsTradeData +#### Rest/Margin/Isolated +- [x] queryIsolatedMarginTradingPairConfiguration +- [x] queryIsolatedMarginAccountInfo +- [x] querySingleIsolatedMarginAccountInfo +- [x] isolatedMarginBorrowing +- [x] queryOutstandingRepaymentRecords +- [x] queryRepaymentRecords +- [x] quickRepayment +- [x] singleRepayment #### Rest/Others - [x] getTimestamp @@ -181,6 +244,12 @@ DEMO: [demo/level2_demo.js](https://github.com/Kucoin/kucoin-node-sdk/blob/maste ### API.websocket.Level3 +### test exp +``` +yarn test + +``` + // TODO ## LICENSE diff --git a/__test__/sdk.spec.js b/__test__/sdk.spec.js new file mode 100644 index 0000000..bef236e --- /dev/null +++ b/__test__/sdk.spec.js @@ -0,0 +1,313 @@ +const API = require('../src'); +API.init(require('../demo/config')); +// 引入Jest测试框架 +// 使用Jest进行单元测试 +describe('API.rest.Others', () => { + it('should returns 200000 status code', async() => { + const result = await API.rest.Others.getTimestamp(); + // 断言返回的状态码是否为200 + expect(result.code).toBe('200000'); + }); +}); +describe('API.rest.User', () => { + it('getDepositAddressV2 should returns 200000 status code', async() => { + const result = await API.rest.User.Deposit.getDepositAddressV2('BTC'); + expect(result.code).toBe('200000'); + }); + it('getPaginatedSubUsers should returns 200000 status code', async() => { + const result = await API.rest.User.UserInfo.getPaginatedSubUsers({currentPage:1,pageSize:10}); + expect(result.code).toBe('200000'); + }); + it('getAccountSummaryInfo should returns 200000 status code', async() => { + const result = await API.rest.User.Account.getAccountSummaryInfo() + expect(result.code).toBe('200000'); + }); + it('createSubAccount should returns 200000 status code', async() => { + const result = await API.rest.User.Account.createSubAccount({password:'Gwd19911023',remarks:'remarks',subName:'AAAAAAAAAA0008',access:'Futures'}) + expect(result.code).toBe('200000'); + }); + it('getSubAccountSpotApiList should returns 200000 status code', async() => { + const result = await API.rest.User.Account.getSubAccountSpotApiList({apiKey:'6476a9a457f5170001f13726',subName:'AAAAAAAAAA0008'}) + expect(result.code).toBe('200000'); + }); + it('createSpotAPIsForSubAccount should not returns null status code', async() => { + const result = await API.rest.User.Account.createSpotAPIsForSubAccount({subName:'AAAAAAAAAA0007',passphrase:'12345678',remark:'remarks',permission:'General',ipWhitelist:'127.0.0.1',expire:'30'}); + expect(result.code).not.toBe(null); + }); + it('updateSubAccountSpotApis should not returns null status code', async() => { + const result = await API.rest.User.Account.updateSubAccountSpotApis({subName:'AAAAAAAAAA0007',apiKey:"6476a9a457f5170001f13726",passphrase:'12345678',permission:'Trade',ipWhitelist:'127.0.0.1',expire:'90'}) + expect(result.code).not.toBe(null); + }); + it('deleteSubAccountSpotApis should not returns null status code', async() => { + const result = await API.rest.User.Account.deleteSubAccountSpotApis({apiKey:"6476a9a457f5170001f13726",passphrase:"12345678",subName:"AAAAAAAAAA0007"}) + expect(result.code).not.toBe(null); + }); + it('getPaginatedSubAccountInformation should returns 200000 status code', async() => { + const result = await API.rest.User.Account.getPaginatedSubAccountInformation({currentPage:1,pageSize:10}); + expect(result.code).toBe('200000'); + }); + it('transferToHFAccount should returns 200000 status code', async() => { + const result = await API.rest.User.Account.transferToHFAccount({clientOid:"178511867",type:"MARGIN",currency:"BTC",from:"main",to:"trade",amount:'5'}); + expect(result.code).not.toBe(null); + }); + /////高频//////////// + it('innerTransfer should not returns null status code', async() => { + const result = await API.rest.User.Account.innerTransfer("17851186789",'BTC','main','trade','4'); + expect(result.code).not.toBe(null); + }); + it('getAccountsList should returns 200000 status code', async() => { + const result = await API.rest.User.Account.getAccountsList({type:'pool',currency:"USDT"}); + expect(result.code).toBe('200000'); + }); + it('getAccountInformation should not returns null status code', async() => { + const result = await API.rest.User.Account.getAccountInformation('5bd6e9286d99522a52e458de'); + expect(result.code).not.toBe(null); + }); + it('getTransferable should returns 200000 status code', async() => { + const result = await API.rest.User.Account.getTransferable('TRADE_HF','USDT'); + expect(result.code).toBe('200000'); + }); + it('getHighFrequencyAccountLedger should not returns null status code', async() => { + const result = await API.rest.User.Account.getHighFrequencyAccountLedger({ + currency:"USDT", + direction:"in", + bizType:'TRADE_EXCHANGE', + lastId:123, + limit:200, + startAt:1685460570499, + endAt:1685460597110 + }); + expect(result.code).not.toBe(null); + }); +}); + +describe('API.rest.Trade', () => { + it('getSingleStopOrderInfo should returns 200000 status code', async() => { + const result = await API.rest.Trade.StopOrder.getSingleStopOrderInfo({orderId:"5c35c02703aa673ceec2a168"}); + expect(result.code).toBe('200000'); + }); + it('cancelStopOrder should not returns null status code', async() => { + const result = await API.rest.Trade.StopOrder.cancelStopOrder({orderId:"5c35c02703aa673ceec2a168"}); + expect(result.code).not.toBe(null); + }); + ////高频/////////////// + it('getHfTransactionRecords should returns 200000 status code', async() => { + const result = await API.rest.Trade.Fills.getHfTransactionRecords({ + orderId:'5bd6e9286d99522a52e458de', + symbol:"BTC-USDT", + side:"buy", + type:'limit', + startAt:1601395200000, + endAt:1901395200000, + lastId:123456, + limit:10 + }) + expect(result.code).toBe('200000'); + }); + it('placeHfOrder should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.placeHfOrder({ + clientOid:'123456', + symbol:"ETH-BTC", + type:'limit', + side:"buy", + stp:"DC", + tags:"tags", + remark:"remark" + }) + expect(result.code).not.toBe(null); + }); + it('syncPlaceHfOrder should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.syncPlaceHfOrder({ + clientOid:'123456', + symbol:"ETH-BTC", + type:'limit', + side:"buy", + stp:"DC", + tags:"tags", + remark:"remark" + }) + expect(result.code).not.toBe(null); + }); + it('placeMultipleHfOrders should returns 200000 status code', async() => { + const result = await API.rest.Trade.Orders.placeMultipleHfOrders({ + clientOid:"123456", + symbol:"BTC-USDT", + type:"market", + timeInForce:"GTC", + stp:"CN", + side:"sell", + price:"50", + size:"20", + cancelAfter:20, + postOnly:true, + hidden:true, + iceberg:true, + visibleSize:"20", + tags:"tags", + remark:"remark" + }) + expect(result.code).toBe('200000'); + }); + it('syncPlaceMultipleHfOrders should returns 200000 status code', async() => { + const result = await API.rest.Trade.Orders.syncPlaceMultipleHfOrders({ + clientOid:"123456", + symbol:"BTC-USDT", + type:"market", + timeInForce:"GTC", + stp:"CN", + side:"sell", + price:"50", + size:"20", + cancelAfter:20, + postOnly:true, + hidden:true, + iceberg:true, + visibleSize:"20", + tags:"tags", + remark:"remark" + }) + expect(result.code).toBe('200000'); + }); + it('modifyOrder should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.modifyOrder({ + symbol:"ETH-BTC", + clientOid:"clientOid", + orderId:"5bd6e9286d99522a52e458de", + newPrice:"1", + newSize:"2" + }) + expect(result.code).not.toBe(null); + }); + it('cancelOrdersByOrderId should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.cancelOrdersByOrderId({ + orderId:"5bd6e9286d99522a52e458de", + symbol:"BTC-USDT", + }) + expect(result.code).not.toBe(null); + }); + it('syncCancelOrdersByOrderId should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.syncCancelOrdersByOrderId({ + orderId:"5bd6e9286d99522a52e458de", + symbol:"BTC-USDT", + }) + expect(result.code).not.toBe(null); + }); + it('cancelOrderByClientOid should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.cancelOrderByClientOid({ + clientOid:"6d539dc614db3", + symbol:"BTC-USDT", + }) + expect(result.code).not.toBe(null); + }); + it('syncCancelOrdersByClientOid should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.syncCancelOrdersByClientOid({ + clientOid:"6d539dc614db3", + symbol:"BTC-USDT", + }) + expect(result.code).not.toBe(null); + }); + it('cancelSpecifiedNumberOfOrdersByOrderId should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.cancelSpecifiedNumberOfOrdersByOrderId({ + orderId:"5bd6e9286d99522a52e458de", + symbol:"BTC-USDT", + cancelSize:"10.01" + }) + expect(result.code).not.toBe(null); + }); + it('cancelAllHfOrdersBySymbol should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.cancelAllHfOrdersBySymbol({ + symbol:"BTC-USDT", + }) + expect(result.code).not.toBe(null); + }); + it('obtainListOfActiveHfOrders should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.obtainListOfActiveHfOrders({ + symbol:"BTC-USDT", + }) + expect(result.code).not.toBe(null); + }); + it('obtainListOfSymbolWithActiveHfOrders should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.obtainListOfSymbolWithActiveHfOrders() + expect(result.code).not.toBe(null); + }); + it('obtainListOfFilledHfOrders should returns 200000 status code', async() => { + const result = await API.rest.Trade.Orders.obtainListOfFilledHfOrders({ + symbol:"BTC-USDT", + side:"buy", + type:"market", + startAt:1601395200000, + endAt:1901395200000, + lastId:123, + limit:20 + }) + expect(result.code).toBe('200000'); + }); + it('detailsOfAsingleHfOrder should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.detailsOfAsingleHfOrder({ + orderId:"5c35c02703aa673ceec2a168", + symbol:"BTC-USDT", + }) + expect(result.code).not.toBe(null); + }); + it('obtainDetailsOfASingleHfOrder should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.obtainDetailsOfASingleHfOrder({ + clientOid:"6d539dc614db312", + symbol:"BTC-USDT", + }) + expect(result.code).not.toBe(null); + }); + it('hfAutoCancelSetting should not returns null status code', async() => { + const result = await API.rest.Trade.Orders.hfAutoCancelSetting({ + timeout:3000, + symbols:"BTC-USDT", + }) + expect(result.code).not.toBe(null); + }); + it('queryHfAutoCancelOrderSetting should returns 200000 status code', async() => { + const result = await API.rest.Trade.Orders.queryHfAutoCancelOrderSetting() + expect(result.code).toBe('200000'); + }); + +}) +describe('API.rest.Market', () => { + it('getSymbolsList should returns 200000 status code', async() => { + const result = await API.rest.Market.Symbols.getSymbolsList({market:"market"}); + expect(result.code).toBe('200000'); + }); + it('getCurrencyDetail should returns 200000 status code', async() => { + const result = await API.rest.Market.Currencies.getCurrencyDetail({currency:"BTC",chain:"chain"}); + expect(result.code).toBe('200000'); + }); + it('queryIsolatedMarginTradingPairConfiguration should returns 200000 status code', async() => { + const result = await API.rest.Margin.Isolated.queryIsolatedMarginTradingPairConfiguration(); + expect(result.code).toBe('200000'); + }); + it('queryIsolatedMarginAccountInfo should not returns null status code', async() => { + const result = await API.rest.Margin.Isolated.queryIsolatedMarginAccountInfo({balanceCurrency:"USDT"}) + expect(result.code).not.toBe(null); + }); + it('querySingleIsolatedMarginAccountInfo should not returns null status code', async() => { + const result = await API.rest.Margin.Isolated.querySingleIsolatedMarginAccountInfo({symbol:"BTC-USDT"}); + expect(result.code).not.toBe(null); + }); + it('isolatedMarginBorrowing should not returns null status code', async() => { + const result = await API.rest.Margin.Isolated.isolatedMarginBorrowing({symbol:"BTC-USDT",currency:'USDT',size:"10",borrowStrategy:"FOK",maxRate:"",period:""}); + expect(result.code).not.toBe(null); + }); + it('queryOutstandingRepaymentRecords should returns 200000 status code', async() => { + const result = await API.rest.Margin.Isolated.queryOutstandingRepaymentRecords({symbol:"BTC-USDT",currency:'USDT',pageSize:10,currentPage:1}); + expect(result.code).toBe('200000'); + }); + it('queryRepaymentRecords should returns 200000 status code', async() => { + const result = await API.rest.Margin.Isolated.queryRepaymentRecords({symbol:"BTC-USDT",currency:'USDT',pageSize:10,currentPage:1}); + expect(result.code).toBe('200000'); + }); + it('quickRepayment should not returns null status code', async() => { + const result = await API.rest.Margin.Isolated.quickRepayment({symbol:"BTC-USDT",currency:'USDT',size:"10",seqStrategy:"HIGHEST_RATE_FIRST"}); + expect(result.code).not.toBe(null); + }); + it('singleRepayment should not returns null status code', async() => { + const result = await API.rest.Margin.Isolated.singleRepayment({symbol:"BTC-USDT",currency:'USDT',size:"10",loanId:"loanId123456789123456789"}); + expect(result.code).not.toBe(null); + }); +}) \ No newline at end of file diff --git a/config.tpl.js b/config.tpl.js index 3ac09f4..147f46b 100644 --- a/config.tpl.js +++ b/config.tpl.js @@ -1,5 +1,5 @@ module.exports = { - baseUrl: '', + baseUrl: 'https://openapi-v2.kucoin.com', apiAuth: { key: '', // KC-API-KEY secret: '', // API-Secret diff --git a/demo/config.tpl.js b/demo/config.tpl.js index c9f300e..46fc327 100755 --- a/demo/config.tpl.js +++ b/demo/config.tpl.js @@ -7,7 +7,7 @@ module.exports = { /** default baseUrl will be set by `process.env.PRODUCTION` */ /** if process.env.PRODUCTION === 'prod', the default value will be https://api.kucoin.io */ /** else use sandbox as https://openapi-sandbox.kucoin.io */ - baseUrl: 'https://openapi-sandbox.kucoin.cc', + baseUrl: 'https://openapi-v2.kucoin.com', /** Auth infos */ /** key is API key */ /** secret is API secret */ diff --git a/demo/constants.js b/demo/constants.js new file mode 100644 index 0000000..9dfd73d --- /dev/null +++ b/demo/constants.js @@ -0,0 +1,35 @@ +const tickerTopics = { + 'symbolTicker':"/market/ticker:BTC-USDT", + 'allSymbolsTicker':"/market/ticker:all", +} +const snapShotsTopics = { + 'symbolSnapshot':'/market/snapshot:BTC-USDT', + 'marketSnapshot':'/market/snapshot:BTC' +} +const level2NewTopics = { + 'level2MarketData':'/market/level2:BTC-USDT', + 'level2Depth5':'/spotMarket/level2Depth5:BTC-USDT', + 'level2Depth50':'/spotMarket/level2Depth50:BTC-USDT' +} +const klineTopics = { + 'klines':"/market/candles:BTC-USDT_1hour" +} +const matchTopics = { + "matchExecutionData":"/market/match:BTC-USDT" +} +const priceTopics = { + "indexPrice" :"/indicator/index:USDT-BTC", + "markPrice" :"/indicator/markPrice:USDT-BTC" +} +const orderBookTopics = { + "orderBookChange":"/margin/fundingBook:BTC" +} +module.exports = { + tickerTopics, + snapShotsTopics, + level2NewTopics, + klineTopics, + matchTopics, + priceTopics, + orderBookTopics +} \ No newline at end of file diff --git a/demo/index.js b/demo/index.js index 0d03d21..ab30ff9 100644 --- a/demo/index.js +++ b/demo/index.js @@ -7,8 +7,728 @@ const main = async () => { console.log(getTimestampRl.data); const res = await API.rest.User.Deposit.getDepositAddressV2('BTC'); - console.log(res); + // add new api example + /////////////////////User////////////////////////////////////////////////////// + /** + * @name getPaginatedSubUsers + * @description Get Paginated List of Sub-Accounts. + * @param {Object} + * - {Int} currentPage - [Optional] Current request page. Default is 1 + * - {Int} pageSize - [Optional] Number of results per request. Minimum is 1, maximum is 100, default is 10. + * @return {Object} { code, success, data } + */ + const getPaginatedSubUsersResult = await API.rest.User.UserInfo.getPaginatedSubUsers({currentPage:1,pageSize:10}); + console.log(getPaginatedSubUsersResult ,"getPaginatedSubUsersResult---"); + + /** + * @name getAccountSummaryInfo + * @description Get Account Summary Info(V2) + * @updateTime 08/04/23 + * @return {Object} { code, success, data } + */ + const getAccountSummaryInfoResult = await API.rest.User.Account.getAccountSummaryInfo(); + console.log(getAccountSummaryInfoResult ,"getAccountSummaryInfoResult---"); + + /** + * @name createSubAccount + * @description Create Sub-Account(V2) + * @updateTime 08/04/23 + * @param {Object} + * - {String} password Password(7-24 characters, must contain letters and numbers, cannot only contain numbers or include special characters) + * - {String} remarks [Optional] Remarks(1~24 characters) + * - {String} subName Sub-account name(must contain 7-32 characters, at least one number and one letter. Cannot contain any spaces.) + * - {String} access Permission (types include Spot, Futures, Margin permissions, which can be used alone or in combination). + * @return {Object} { code, success, data } + */ + const createSubAccountResult = await API.rest.User.Account.createSubAccount({password:'Gwd19911023',remarks:'remarks',subName:'AAAAAAAAAA0008',access:'Futures'}); + console.log(createSubAccountResult ,"createSubAccountResult---"); + + /** + * @name getSubAccountSpotApiList + * @description Get Sub-Account Spot API List + * @updateTime 08/24/22 + * @param {Object} + * - {String} apiKey [Optional] API-Key. + * - {String} subName Sub-account name. + * @return {Object} { code, success, data } + */ + const getSubAccountSpotApiListResult = await API.rest.User.Account.getSubAccountSpotApiList({apiKey:'6476a9a457f5170001f13726',subName:'AAAAAAAAAA0008'}); + console.log(getSubAccountSpotApiListResult ,"getSubAccountSpotApiListResult---"); + + /** + * @name createSpotAPIsForSubAccount + * @description Create Spot APIs for Sub-Account + * @updateTime 08/24/22 + * @param {Object} + * - {String} subName Sub-account name, create sub account name of API Key. + * - {String} passphrase Password(Must contain 7-32 characters. Cannot contain any spaces.) + * - {String} remark Remarks(1~24 characters) + * - {String} permission [Optional] Permissions(Only "General" and "Trade" permissions can be set, such as "General, Trade". The default is "General") + * - {String} ipWhitelist [Optional] IP whitelist(You may add up to 20 IPs. Use a halfwidth comma to each IP) + * - {String} expire [Optional] API expiration time; Never expire(default)-1,30Day30,90Day90,180Day180,360Day360 + * @return {Object} { code, success, data } + */ + + const createSpotAPIsForSubAccountResult = await API.rest.User.Account.createSpotAPIsForSubAccount({subName:'AAAAAAAAAA0007',passphrase:'12345678',remark:'remarks',permission:'General',ipWhitelist:'127.0.0.1',expire:'30'}); + console.log(createSpotAPIsForSubAccountResult ,"createSpotAPIsForSubAccountResult---"); + +/** + * @name updateSubAccountSpotApis + * @description Modify Sub-Account Spot APIs + * @updateTime 08/24/22 + * @param {Object} + * - {String} subName Sub-account name, create sub account name of API Key. + * - {String} apiKey API-Key(Sub-account APIKey) + * - {String} passphrase Password of API key + * - {String} permission [Optional] Permission list.If modified, permissions will be reset. + * - {String} ipWhitelist [Optional] IP whitelist(you may add up to 20 IPs. Use a halfwidth comma to each IP.If modified, the IP will be reset.) + * - {String} expire [Optional] API expiration time; Never expire(default)-1,30Day30,90Day90,180Day180,360Day360 + * @return {Object} { code, success, data } + */ + const updateSubAccountSpotApisResult = await API.rest.User.Account.updateSubAccountSpotApis({subName:'AAAAAAAAAA0007',apiKey:"6476a9a457f5170001f13726",passphrase:'12345678',permission:'Trade',ipWhitelist:'127.0.0.1',expire:'90'}); + console.log(updateSubAccountSpotApisResult ,"updateSubAccountSpotApisResult---"); + + /** + * @name deleteSubAccountSpotApis + * @description Delete Sub-Account Spot APIs + * @updateTime 09/22/22 + * @param {Object} + * - {String} apiKey API-Key(API key to be deleted) + * - {String} passphrase Password(Password of the API key) + * - {String} subName Sub-account name(The sub-account name corresponding to the API key) + * @return {Object} { code, success, data } + */ + const deleteSubAccountSpotApisResult = await API.rest.User.Account.deleteSubAccountSpotApis({apiKey:"6476a9a457f5170001f13726",passphrase:"12345678",subName:"AAAAAAAAAA0007"}); + console.log(deleteSubAccountSpotApisResult ,"deleteSubAccountSpotApisResult---"); + + /** + * @name getPaginatedSubAccountInformation + * @description Get Paginated Sub-Account Information. + * @param {Object} + * - {Int} currentPage [Optional] Current request page. Default is 1 + * - {Int} pageSize [Optional] Number of results per request. Minimum is 1, maximum is 100, default is 10. + * @return {Object} { code, success, data } + */ + const getPaginatedSubAccountInformationResult = await API.rest.User.Account.getPaginatedSubAccountInformation({currentPage:1,pageSize:10}); + console.log(getPaginatedSubAccountInformationResult ,"getPaginatedSubAccountInformationResult---"); + +/** + * @name transferToHFAccount + * @description transferToHFAccount + * @param {Object} + * - {string} clientOid - Unique order id created by users to identify their orders, e.g. UUID. + * - {string} type - The account type: MAIN, TRADE, MARGIN or POOL + * - {string} currency - currency https://sandbox-docs.kucoin.com/#Get-Currencies + * - {string} from - Account type of payer: main, trade, margin or pool + * - {string} to - Account type of payee: main, trade, margin or pool + * - {string} amount - Transfer amount, the amount is a positive integer multiple of the currency precision. + * @return {Object} { code, success, data } + */ + +const transferToHFAccountResult = await API.rest.User.Account.transferToHFAccount({clientOid:"178511867",type:"MARGIN",currency:"BTC",from:"main",to:"trade",amount:'5'}); +console.log(transferToHFAccountResult ,"transferToHFAccountResult---"); + + + + /////////////////////Trade////////////////////////////////////////////////////// + /** + * @name getSingleStopOrderInfo + * @description Get Single Order Info + * @param {Object} + * - {String} orderId Order ID + * @return {Object} { code, success, data } + */ + const getSingleStopOrderInfoResult = await API.rest.Trade.StopOrder.getSingleStopOrderInfo({orderId:"5c35c02703aa673ceec2a168"}); + console.log(getSingleStopOrderInfoResult ,"getSingleStopOrderInfoResult---"); + + /** + * @name cancelStopOrder + * @description Cancel an Order + * @param {Object} + * - {String} orderId Order ID + * @return {Object} { code, success, data } + */ + + const cancelStopOrderResult = await API.rest.Trade.StopOrder.cancelStopOrder({orderId:"5c35c02703aa673ceec2a168"}); + console.log(cancelStopOrderResult ,"cancelStopOrderResult---"); + + /////////////////////Market////////////////////////////////////////////////////// + /** + * @name getSymbolsList + * @description Get Symbols List + * @param {Object} + * - {String} market [Optional] The trading market. + * @return {Object} { code, success, data } + */ + + const getSymbolsListResult = await API.rest.Market.Symbols.getSymbolsList({market:"market"}); + console.log(getSymbolsListResult ,"getSymbolsListResult---"); + + /** + * @name getCurrencyDetail + * @description Get Currency Detail(Recommend) + * @param {Object} + * - {String} currency Path parameter. Currency + * - {String} chain [Optional] Support for querying the chain of currency, return the currency details of all chains by default. + * @return {Object} { code, success, data } + */ + const getCurrencyDetailResult = await API.rest.Market.Currencies.getCurrencyDetail({currency:"BTC",chain:"chain"}); + console.log(getCurrencyDetailResult ,"getCurrencyDetailResult---"); + +// /////////////////////Margin////////////////////////////////////////////////////// + /** + * @name queryIsolatedMarginTradingPairConfiguration + * @description Query Isolated Margin Trading Pair Configuration + * @return {Object} { code, success, data } + */ + const queryIsolatedMarginTradingPairConfigurationResult = await API.rest.Margin.Isolated.queryIsolatedMarginTradingPairConfiguration(); + console.log(queryIsolatedMarginTradingPairConfigurationResult ,"queryIsolatedMarginTradingPairConfigurationResult---"); +/** + * @name queryIsolatedMarginAccountInfo + * @description Query Isolated Margin Account Info + * @updateTime 07/05/22 + * @param {Object} + * - {string} balanceCurrency - [Optional] The pricing coin, currently only supports USDT, KCS, and BTC. Defaults to BTC if no value is passed. + * @return {Object} { code, success, data } + */ +const queryIsolatedMarginAccountInfoResult = await API.rest.Margin.Isolated.queryIsolatedMarginAccountInfo({balanceCurrency:"USDT"}); +console.log(queryIsolatedMarginAccountInfoResult ,"queryIsolatedMarginAccountInfoResult---"); + +/** + * @name querySingleIsolatedMarginAccountInfo + * @description Query Single Isolated Margin Account Info + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - Trading pair, e.g.: BTC-USDT + * @return {Object} { code, success, data } + */ +const querySingleIsolatedMarginAccountInfoResult = await API.rest.Margin.Isolated.querySingleIsolatedMarginAccountInfo({symbol:"BTC-USDT"}); +console.log(querySingleIsolatedMarginAccountInfoResult ,"querySingleIsolatedMarginAccountInfoResult---"); + +/** + * @name isolatedMarginBorrowing + * @description Isolated Margin Borrowing + * @param {Object} + * - {string} symbol - Trading pair, e.g.: BTC-USDT + * - {string} currency - Borrowed coin type + * - {BigDecimal} size - Borrowed amount + * - {string} borrowStrategy - Borrowing strategy: FOK, IOC + * - {BigDecimal} maxRate - [Optional] Max interest rate, defaults to all interest rates if left blank + * - {string} period - [Optional] The term in days. Defaults to all terms if left blank. 7,14,28 + * @return {Object} { code, success, data } + */ +const isolatedMarginBorrowingResult = await API.rest.Margin.Isolated.isolatedMarginBorrowing({symbol:"BTC-USDT",currency:'USDT',size:"10",borrowStrategy:"FOK",maxRate:"",period:""}); +console.log(isolatedMarginBorrowingResult ,"isolatedMarginBorrowingResult---"); + +/** + * @name queryOutstandingRepaymentRecords + * @description Query Outstanding Repayment Records + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - [Optional] Trading pair, e.g.: BTC-USDT + * - {string} currency - [Optional] Coin type + * - {Int} pageSize - [Optional] Page size [10-50] + * - {Int} currentPage - [Optional] Current page number [1-100] + * @return {Object} { code, success, data } + */ +const queryOutstandingRepaymentRecordsResult = await API.rest.Margin.Isolated.queryOutstandingRepaymentRecords({symbol:"BTC-USDT",currency:'USDT',pageSize:10,currentPage:1}); +console.log(queryOutstandingRepaymentRecordsResult ,"queryOutstandingRepaymentRecordsResult---"); + +/** + * @name queryRepaymentRecords + * @description Query Repayment Records + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - [Optional] Trading pair, e.g.: BTC-USDT + * - {string} currency - [Optional] Coin type + * - {Int} pageSize - [Optional] Page size [10-50] + * - {Int} currentPage - [Optional] Current page number [1-100] + * @return {Object} { code, success, data } + */ +const queryRepaymentRecordsResult = await API.rest.Margin.Isolated.queryRepaymentRecords({symbol:"BTC-USDT",currency:'USDT',pageSize:10,currentPage:1}); +console.log(queryRepaymentRecordsResult ,"queryRepaymentRecordsResult---"); + +/** + * @name quickRepayment + * @description Quick Repayment + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - [Optional] Trading pair, e.g.: BTC-USDT + * - {string} currency - [Optional] Coin type + * - {BigDecimal} size Repayment amount + * - {string} seqStrategy - Repayment sequence strategy, RECENTLY_EXPIRE_FIRST: Maturity date priority (the loan with the closest maturity is repaid first), HIGHEST_RATE_FIRST: Interest rate priority (the loan with the highest interest rate is repaid first) + * @return {Object} { code, success, data } + */ +const quickRepaymentResult = await API.rest.Margin.Isolated.quickRepayment({symbol:"BTC-USDT",currency:'USDT',size:"10",seqStrategy:"HIGHEST_RATE_FIRST"}); +console.log(quickRepaymentResult ,"quickRepaymentResult---"); + +/** + * @name singleRepayment + * @description Single Repayment + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - [Optional] Trading pair, e.g.: BTC-USDT + * - {string} currency - [Optional] Coin type + * - {BigDecimal} size Repayment amount + * - {string} loanId- Trade order number; when this field is configured, the sequence strategy is invalidated + * @return {Object} { code, success, data } + */ +const singleRepaymentResult = await API.rest.Margin.Isolated.singleRepayment({symbol:"BTC-USDT",currency:'USDT',size:"10",loanId:"loanId123456789123456789"}); +console.log(singleRepaymentResult ,"singleRepaymentResult---"); + + +// owen.guo@kupotech.com update high-frequency api + /////////////////////high-frequency api////////////////////////////////////////////////////// +/** + * @name innerTransfer + * @description Inner Transfer + * @updateTime 07/05/22 + * @param {string} clientOid - Unique order id created by users to identify their orders, e.g. UUID. + * @param {string} currency - currency https://sandbox-docs.kucoin.com/#Get-Currencies + * @param {string} from - Account type of payer: main, trade, margin or pool + * @param {string} to - Account type of payee: main, trade, margin or pool + * @param {string} amount - Transfer amount, the amount is a positive integer multiple of the currency precision. + * @return {Object} { code, success, data } + */ +const innerTransferResult = await API.rest.User.Account.innerTransfer("17851186789",'BTC','main','trade','4'); +console.log(innerTransferResult ,"innerTransferResult---"); + +/** + * @name getAccountsList + * @description List Accounts. + * @param {Object} + * - {string} type - [Optional] Account type: main, trade, margin or pool + * - {string} currency - [Optional] currency https://sandbox-docs.kucoin.com/#get-currencies + * @return {Object} { code, success, data } + */ +const getAccountsListResult = await API.rest.User.Account.getAccountsList({type:'pool',currency:"USDT"}); +console.log(getAccountsListResult ,"getAccountsListResult---"); + +/** + * @name getAccountInformation + * @description Get an Account. + * @param {string} accountId - ID of the account + * @return {Object} { code, success, data } + */ + +const getAccountInformationResult = await API.rest.User.Account.getAccountInformation('5bd6e9286d99522a52e458de'); +console.log(getAccountInformationResult ,"getAccountInformationResult---"); + +/** + * @name getTransferable + * @description Get the Transferable. + * @updateTime 07/05/22 + * @param {string} type - The account type: MAIN, TRADE, MARGIN or POOL + * @param {string} currency - currency https://sandbox-docs.kucoin.com/#Get-Currencies + * @return {Object} { code, success, data } + */ + +const getTransferableResult = await API.rest.User.Account.getTransferable('TRADE_HF','USDT'); +console.log(getTransferableResult ,"getTransferableResult---"); + +/** + * @name getHighFrequencyAccountLedger + * @description Account Ledger in high-frequency trading accounts + * @param {Object} + * - {string} currency, optional,can select more than one,separate with commas,select no more than 10 currencys,the default will be to query for all currencys if left empty + * - {string} direction Direction of transaction (in or out): in-transfer in, out-transfer out + * - {string} bizType Transaction type: TRANSFER-transfer funds,TRADE_EXCHANGE-Trade + * - {long } lastId The id of the last set of data from the previous batch of data. By default, the latest information is given. + * - {int} limit Default100,Max200 + * - {long } startAt Start time (ms), the conditional limit createdAt + * - { long } endAt End time (ms), the conditional limit createdAt + * @return {Object} { code, success, data } + */ + +const getHighFrequencyAccountLedgerResult = await API.rest.User.Account.getHighFrequencyAccountLedger({ + currency:"USDT", + direction:"in", + bizType:'TRADE_EXCHANGE', + lastId:123, + limit:200, + startAt:1685460570499, + endAt:1685460597110 +}); +console.log(getHighFrequencyAccountLedgerResult ,"getHighFrequencyAccountLedgerResult---"); + +/** + * @name getHfTransactionRecords + * @description HF transaction records + * @updateTime 02/03/23 + * @param {Object} + * - {string} orderId Look up the transaction details pertaining to the order id(IforderId is specified,please ignore the other query parameters) + * - {string} symbol Only returns order information for the specified trading pair + * - {string} side buy(Buy) or sell(Sell) + * - {string} type Order type: limit(limit order), market(market order) + * - {long} startAt Start time(ms),puts a restriction on the transaction(creation) time for the transaction records + * - {long} endAt End time(ms),puts a restriction on the transaction(creation) time of the transaction records + * - {long} lastId The id of the last data item from the previous batch, defaults to obtaining the latest data + * - {int} limit Default100,maximum 200 + * @return {Object} { code, success, data } + */ +const getHfTransactionRecordsResult = await API.rest.Trade.Fills.getHfTransactionRecords({ + orderId:'5bd6e9286d99522a52e458de', + symbol:"BTC-USDT", + side:"buy", + type:'limit', + startAt:1601395200000, + endAt:1901395200000, + lastId:123456, + limit:10 +}) +console.log(getHfTransactionRecordsResult ,"getHfTransactionRecordsResult---"); + +/** + * @name placeHfOrder + * @description Place hf order + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Client Order Id,unique identifier created by the user, the use of UUID is recommended + * - {String} symbol Trading pair, such as, ETH-BTC + * - {String} type Order type limit and market + * - {String} side buy or sell + * - {String} stp Self trade prevention (self trade prevention) is divided into four strategies: CN, CO, CB , and DC + * - {String} tags Order tag, cannot exceed 20 characters (ASCII) in length + * - {String} remark Order placement remarks, length cannot exceed 20 characters (ASCII) in length + * @return {Object} { code, success, data } + */ +const placeHfOrderResult = await API.rest.Trade.Orders.placeHfOrder({ + clientOid:'123456', + symbol:"ETH-BTC", + type:'limit', + side:"buy", + stp:"DC", + tags:"tags", + remark:"remark" +}) +console.log(placeHfOrderResult ,"placeHfOrderResult---"); +/** + * @name syncPlaceHfOrder + * @description Sync place hf order + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Client Order Id,unique identifier created by the user, the use of UUID is recommended + * - {String} symbol Trading pair, such as, ETH-BTC + * - {String} type Order type limit and market + * - {String} side buy or sell + * - {String} stp Self trade prevention (self trade prevention) is divided into four strategies: CN, CO, CB , and DC + * - {String} tags Order tag, cannot exceed 20 characters (ASCII) in length + * - {String} remark Order placement remarks, length cannot exceed 20 characters (ASCII) in length + * @return {Object} { code, success, data } + */ +const syncPlaceHfOrderResult = await API.rest.Trade.Orders.syncPlaceHfOrder({ + clientOid:'123456', + symbol:"ETH-BTC", + type:'limit', + side:"buy", + stp:"DC", + tags:"tags", + remark:"remark" +}) +console.log(syncPlaceHfOrderResult ,"syncPlaceHfOrderResult---"); + +/** + * @name placeMultipleHfOrders + * @description Place multiple hf orders + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Client Order Id,a unique identifier created by the user,the use of UUID is recommended + * - {String} symbol trading pairs such as,ETH-BTC + * - {String} type Order type limit and market + * - {String} timeInForce [Optional] Time in force GTC, GTT, IOC, FOK (defaults to GTC) + * - {String} stp [Optional] Self trade prevention(self trade prevention)is divided into CN, CO, CB , and DC strategies + * - {String} side buy(buy) or sell(sell) + * - {String} price Specify price for currency + * - {String} size Specify quantity of currency + * - {long} cancelAfter [Optional] Cancels in n seconds, with GTT as the time in force strategy + * - {boolean} postOnly [Optional] Post only identifier, invalid when the time in force strategy is IOC or FOK + * - {boolean} hidden [Optional] Hidden or not(not shown in order book) + * - {boolean} iceberg [Optional] Whether iceberg orders only show visible portions of orders + * - {String} visibleSize [Optional] The maximum visible size for iceberg orders + * - {String} tags [Optional] The order identifier length cannot exceed 20 characters(ASCII) + * - {String} remark [Optional] Order placement remarks cannot exceed a length of 20 characters(ASCII) + * @return {Object} { code, success, data } + */ + +const placeMultipleHfOrdersResult = await API.rest.Trade.Orders.placeMultipleHfOrders({ + clientOid:"123456", + symbol:"BTC-USDT", + type:"market", + timeInForce:"GTC", + stp:"CN", + side:"sell", + price:"50", + size:"20", + cancelAfter:20, + postOnly:true, + hidden:true, + iceberg:true, + visibleSize:"20", + tags:"tags", + remark:"remark" +}) +console.log(placeMultipleHfOrdersResult ,"placeMultipleHfOrdersResult---"); + +/** + * @name syncPlaceMultipleHfOrders + * @description Sync place multiple hf orders + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Client Order Id,a unique identifier created by the user,the use of UUID is recommended + * - {String} symbol trading pairs such as,ETH-BTC + * - {String} type Order type limit and market + * - {String} timeInForce [Optional] Time in force GTC, GTT, IOC, FOK (defaults to GTC) + * - {String} stp [Optional] Self trade prevention(self trade prevention)is divided into CN, CO, CB , and DC strategies + * - {String} side buy(buy) or sell(sell) + * - {String} price Specify price for currency + * - {String} size Specify quantity of currency + * - {long} cancelAfter [Optional] Cancels in n seconds, with GTT as the time in force strategy + * - {boolean} postOnly [Optional] Post only identifier, invalid when the time in force strategy is IOC or FOK + * - {boolean} hidden [Optional] Hidden or not(not shown in order book) + * - {boolean} iceberg [Optional] Whether iceberg orders only show visible portions of orders + * - {String} visibleSize [Optional] The maximum visible size for iceberg orders + * - {String} tags [Optional] The order identifier length cannot exceed 20 characters(ASCII) + * - {String} remark [Optional] Order placement remarks cannot exceed a length of 20 characters(ASCII) + * @return {Object} { code, success, data } + */ +const syncPlaceMultipleHfOrdersResult = await API.rest.Trade.Orders.syncPlaceMultipleHfOrders({ + clientOid:"123456", + symbol:"BTC-USDT", + type:"market", + timeInForce:"GTC", + stp:"CN", + side:"sell", + price:"50", + size:"20", + cancelAfter:20, + postOnly:true, + hidden:true, + iceberg:true, + visibleSize:"20", + tags:"tags", + remark:"remark" +}) +console.log(syncPlaceMultipleHfOrdersResult ,"syncPlaceMultipleHfOrdersResult---"); + +/** + * @name modifyOrder TODO + * @description Modify order + * @updateTime 02/03/23 + * @param {Object} + * - {String} symbol trading pairs such as,ETH-BTC + * - {String} clientOid Client Order Id,a unique identifier created by the user,the use of UUID is recommended + * - {String} orderId other id + * - {String} newPrice The modified price of the new order + * - {String} newSize The modified size of the new order + * @return {Object} { code, success, data } + */ + +const modifyOrderResult = await API.rest.Trade.Orders.modifyOrder({ + symbol:"ETH-BTC", + clientOid:"clientOid", + orderId:"5bd6e9286d99522a52e458de", + newPrice:"1", + newSize:"2" +}) +console.log(modifyOrderResult ,"modifyOrderResult---"); + +/** + * @name cancelOrdersByOrderId + * @description Cancel orders by orderId + * @updateTime 02/03/23 + * @param {Object} + * - {String} orderId Path parameter,Order Id unique identifier + * - {String} symbol Trading pair, such as ETH-BTC + * @return {Object} { code, success, data } + */ +const cancelOrdersByOrderIdResult = await API.rest.Trade.Orders.cancelOrdersByOrderId({ + orderId:"5bd6e9286d99522a52e458de", + symbol:"BTC-USDT", +}) +console.log(cancelOrdersByOrderIdResult ,"cancelOrdersByOrderIdResult---"); + +/** + * @name syncCancelOrdersByOrderId + * @description Sync cancel orders by orderId + * @updateTime 02/03/23 + * @param {Object} + * - {String} orderId Path parameter,Order Id unique identifier + * - {String} symbol Trading pair, such as ETH-BTC + * @return {Object} { code, success, data } + */ +const syncCancelOrdersByOrderIdResult = await API.rest.Trade.Orders.syncCancelOrdersByOrderId({ + orderId:"5bd6e9286d99522a52e458de", + symbol:"BTC-USDT", +}) +console.log(syncCancelOrdersByOrderIdResult ,"syncCancelOrdersByOrderIdResult---"); + +/** + * @name cancelOrderByClientOid + * @description Cancel order by clientOid + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Path parameter,an identifier created by the + * - {String} symbol Trading pair such as ETH-BTC + * @return {Object} { code, success, data } + */ +const cancelOrderByClientOidResult = await API.rest.Trade.Orders.cancelOrderByClientOid({ + clientOid:"6d539dc614db3", + symbol:"BTC-USDT", +}) +console.log(cancelOrderByClientOidResult ,"cancelOrderByClientOidResult---"); +/** + * @name syncCancelOrdersByClientOid + * @description Sync cancel orders by clientOid + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Path parameter,an identifier created by the + * - {String} symbol Trading pair such as ETH-BTC + * @return {Object} { code, success, data } + */ + +const syncCancelOrdersByClientOidResult = await API.rest.Trade.Orders.syncCancelOrdersByClientOid({ + clientOid:"6d539dc614db3", + symbol:"BTC-USDT", +}) +console.log(syncCancelOrdersByClientOidResult ,"syncCancelOrdersByClientOidResult---"); + +/** + * @name cancelSpecifiedNumberOfOrdersByOrderId TODO + * @description Cancel specified number of orders by orderId + * @updateTime 02/03/23 + * @param {Object} + * - {String} orderId Order id of the cancelled order + * - {String} symbol Trading pair such as ETH-BTC + * - {String} cancelSize canceled size + * @return {Object} { code, success, data } + */ + +const cancelSpecifiedNumberOfOrdersByOrderIdResult = await API.rest.Trade.Orders.cancelSpecifiedNumberOfOrdersByOrderId({ + orderId:"5bd6e9286d99522a52e458de", + symbol:"BTC-USDT", + cancelSize:"10.01" +}) +console.log(cancelSpecifiedNumberOfOrdersByOrderIdResult ,"cancelSpecifiedNumberOfOrdersByOrderIdResult---"); + +/** + * @name cancelAllHfOrdersBySymbol + * @description Cancel all HF orders by symbol + * @updateTime 02/03/23 + * @param {Object} + * - {String} symbol Cancel open orders pertaining to the specified trading pair + * @return {Object} { code, success, data } + */ +const cancelAllHfOrdersBySymbolResult = await API.rest.Trade.Orders.cancelAllHfOrdersBySymbol({ + symbol:"BTC-USDT", +}) +console.log(cancelAllHfOrdersBySymbolResult ,"cancelAllHfOrdersBySymbolResult---"); + +/** + * @name obtainListOfActiveHfOrders + * @description Obtain List of Active HF Orders + * @updateTime 02/03/23 + * @param {Object} + * - {String} symbol Only returns order information for the specified trading pair + * @return {Object} { code, success, data } + */ +const obtainListOfActiveHfOrdersResult = await API.rest.Trade.Orders.obtainListOfActiveHfOrders({ + symbol:"BTC-USDT", +}) +console.log(obtainListOfActiveHfOrdersResult ,"obtainListOfActiveHfOrdersResult---"); + +/** + * @name obtainListOfSymbolWithActiveHfOrders + * @description Obtain List of symbol with active HF orders + * @updateTime 02/03/23 + * @return {Object} { code, success, data } + */ + +const obtainListOfSymbolWithActiveHfOrdersResult = await API.rest.Trade.Orders.obtainListOfSymbolWithActiveHfOrders() +console.log(obtainListOfSymbolWithActiveHfOrdersResult ,"obtainListOfSymbolWithActiveHfOrdersResult---"); + +/** + * @name obtainListOfFilledHfOrders + * @description Obtain List of Filled HF Orders + * @updateTime 02/03/23 + * @param {Object} + * - {String} symbol Only returns order information for the specified trading pair + * - {String} side buy (Buy) orsell (Sell) + * - {String} type Order type: limit (limit order), market(market order) + * - {long} startAt Start time (ms),last update(filled) time of the limit order + * - {long} endAt End time (ms),last update(filled) time of limit order + * - {long} lastId The id of the last data item from the previous batch,defaults to obtaining the latest data + * - {int} limit Default20,maximum100 + * @return {Object} { code, success, data } + */ +const obtainListOfFilledHfOrdersResult = await API.rest.Trade.Orders.obtainListOfFilledHfOrders({ + symbol:"BTC-USDT", + side:"buy", + type:"market", + startAt:1601395200000, + endAt:1901395200000, + lastId:123, + limit:20 +}) +console.log(obtainListOfFilledHfOrdersResult ,"obtainListOfFilledHfOrdersResult---"); + +/** + * @name detailsOfAsingleHfOrder + * @description Details of a Single HF Order + * @updateTime 02/03/23 + * @param {Object} + * - {String} orderId Path parameter,Order Id unique identifier + * - {String} symbol Trading pair, such as ETH-BTC + * @return {Object} { code, success, data } + */ + +const detailsOfAsingleHfOrderResult = await API.rest.Trade.Orders.detailsOfAsingleHfOrder({ + orderId:"5c35c02703aa673ceec2a168", + symbol:"BTC-USDT", +}) +console.log(detailsOfAsingleHfOrderResult ,"detailsOfAsingleHfOrderResult---"); + +/** + * @name obtainDetailsOfASingleHfOrder + * @description Obtain details of a single HF order using clientOid + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Path parameter,an identifier created by the client + * - {String} symbol Trading pair such as ETH-BTC + * @return {Object} { code, success, data } + */ +const obtainDetailsOfASingleHfOrderResult = await API.rest.Trade.Orders.obtainDetailsOfASingleHfOrder({ + clientOid:"6d539dc614db312", + symbol:"BTC-USDT", +}) +console.log(obtainDetailsOfASingleHfOrderResult ,"obtainDetailsOfASingleHfOrderResult---"); + +/** + * @name hfAutoCancelSetting + * @description HF auto cancel setting + * @updateTime 02/03/23 + * @param {Object} + * - {Int} timeout Auto cancel order trigger setting time, the unit is second. range: timeout=-1 (meaning unset) or 5 <= timeout <= 86400. For example, timeout=5 means that the order will be automatically canceled if no user request is received for more than 5 seconds. When this parameter is changed, the previous setting will be overwritten. + * - {String} symbols List of trading pairs. When this parameter is not empty, separate it with commas and support up to 50 trading pairs. Empty means all trading pairs. When this parameter is changed, the previous setting will be overwritten. + * @return {Object} { code, success, data } + */ +const hfAutoCancelSettingResult = await API.rest.Trade.Orders.hfAutoCancelSetting({ + timeout:3000, + symbols:"BTC-USDT", +}) +console.log(hfAutoCancelSettingResult ,"hfAutoCancelSettingResult---"); + +/** + * @name queryHfAutoCancelOrderSetting + * @description HF auto cancel order setting query + * @updateTime 02/03/23 + * @return {Object} { code, success, data } + */ + +const queryHfAutoCancelOrderSettingResult = await API.rest.Trade.Orders.queryHfAutoCancelOrderSetting() +console.log(queryHfAutoCancelOrderSettingResult ,"queryHfAutoCancelOrderSettingResult---"); + }; + // run rest main main(); diff --git a/demo/kline_demo.js b/demo/kline_demo.js new file mode 100644 index 0000000..0e89305 --- /dev/null +++ b/demo/kline_demo.js @@ -0,0 +1,54 @@ +const API = require('../src'); +const { klineTopics } = require('./constants') +API.init(require('./config')); + +const datafeed = new API.websocket.Datafeed(); + +// close callback +datafeed.onClose(() => { + console.log('ws closed, status ', datafeed.trustConnected); +}); + +// connect +datafeed.connectSocket(); + +/** + * @name klineTopics.klines + * @description Subscribe to this topic to get K-Line data. + * - {String} symbol symbol + * - {String} type 1min, 3min, 15min, 30min, 1hour, 2hour, 4hour, 6hour, 8hour, 12hour, 1day, 1week + * @updateTime + * @return {Object} + * { + "type":"message", + "topic":"/market/candles:BTC-USDT_1hour", + "subject":"trade.candles.update", + "data":{ + "symbol":"BTC-USDT", // symbol + "candles":[ + "1589968800", // Start time of the candle cycle + "9786.9", // open price + "9740.8", // close price + "9806.1", // high price + "9732", // low price + "27.45649579", // Transaction volume + "268280.09830877" // Transaction amount + ], + "time":1589970010253893337 // now(us) + } +} + */ +const callbackId = datafeed.subscribe(klineTopics.klines, (message) => { + if (message.topic === klineTopics.klines) { + console.log(message.data); + } +}); + + +//////////////////////////////cancel subscribe////////////////////////////////////// +setTimeout(() => { + // unsubscribe-klines + datafeed.unsubscribe(klineTopics.klines, callbackId); + console.log(`unsubscribed: ${klineTopics.klines} ${callbackId}`); + +}, 5000); diff --git a/demo/level2_demo.js b/demo/level2_demo.js index a4672f5..bb66601 100644 --- a/demo/level2_demo.js +++ b/demo/level2_demo.js @@ -5,7 +5,7 @@ const API = require('../src'); const config = require('./config'); API.init({ ...config, - baseUrl: 'https://api.kucoin.io', + baseUrl: 'https://openapi-v2.kucoin.com', }); // ws demo diff --git a/demo/level2_new_demo.js b/demo/level2_new_demo.js new file mode 100644 index 0000000..ead45c2 --- /dev/null +++ b/demo/level2_new_demo.js @@ -0,0 +1,147 @@ +const API = require('../src'); +const { level2NewTopics } = require('./constants') +API.init(require('./config')); + +const datafeed = new API.websocket.Datafeed(); + +// close callback +datafeed.onClose(() => { + console.log('ws closed, status ', datafeed.trustConnected); +}); + +// connect +datafeed.connectSocket(); + +/** + * @name level2NewTopics.level2MarketData + * @description Subscribe to this topic to get Level2 order book data. + * @updateTime + * @return {Object} + * { + "type": "message", + "topic": "/market/level2:BTC-USDT", + "subject": "trade.l2update", + "data": { + "changes": { + "asks": [ + [ + "18906",//price + "0.00331",//size + "14103845"//sequence + ], + [ + "18907.3", + "0.58751503", + "14103844" + ] + ], + "bids": [ + [ + "18891.9", + "0.15688", + "14103847" + ] + ] + }, + "sequenceEnd": 14103847, + "sequenceStart": 14103844, + "symbol": "BTC-USDT", + "time": 1663747970273//milliseconds + } +} + */ +const callbackId = datafeed.subscribe(level2NewTopics.level2MarketData, (message) => { + if (message.topic === level2NewTopics.level2MarketData) { + console.log(message.data); + } +}); + + +/** + * @name level2NewTopics.level2Depth5 + * @description The system will return the 5 best ask/bid orders data, which is the snapshot data of every 100 milliseconds (in other words, the 5 best ask/bid orders data returned every 100 milliseconds in real-time). + * @updateTime + * @return {Object} + * { + "type": "message", + "topic": "/spotMarket/level2Depth5:BTC-USDT", + "subject": "level2", + "data": { + "asks":[ + ["9989","8"], //price, size + ["9990","32"], + ["9991","47"], + ["9992","3"], + ["9993","3"] + ], + "bids":[ + ["9988","56"], + ["9987","15"], + ["9986","100"], + ["9985","10"], + ["9984","10"] + ], + "timestamp": 1586948108193 + } +} + */ +const callbackId1 = datafeed.subscribe(level2NewTopics.level2Depth5, (message) => { + if (message.topic === level2NewTopics.level2Depth5) { + console.log(message.data); + } +}); + + +/** + * @name level2NewTopics.level2Depth50 + * @description The system will return the 50 best ask/bid orders data, which is the snapshot data of every 100 milliseconds (in other words, the 50 best ask/bid orders data returned every 100 milliseconds in real-time). + * @updateTime + * @return {Object} + * { + "type": "message", + "topic": "/spotMarket/level2Depth50:BTC-USDT", + "subject": "level2", + "data": { + "asks":[ + ["9993","3"], //price,size + ["9992","3"], + ["9991","47"], + ["9990","32"], + ["9989","8"] + ], + "bids":[ + ["9988","56"], + ["9987","15"], + ["9986","100"], + ["9985","10"], + ["9984","10"] + ] + "timestamp": 1586948108193 + } +} + */ +const callbackId2 = datafeed.subscribe(level2NewTopics.level2Depth50, (message) => { + if (message.topic === level2NewTopics.level2Depth50) { + console.log(message.data); + } +}); + + + + + +//////////////////////////////cancel subscribe////////////////////////////////////// +setTimeout(() => { + // unsubscribe-level2MarketData + datafeed.unsubscribe(level2NewTopics.level2MarketData, callbackId); + console.log(`unsubscribed: ${level2NewTopics.level2MarketData} ${callbackId}`); + + // unsubscribe-level2Depth5 + datafeed.unsubscribe(level2NewTopics.level2Depth5, callbackId1); + console.log(`unsubscribed: ${level2NewTopics.level2Depth5} ${callbackId1}`); + + // unsubscribe-level2Depth50 + datafeed.unsubscribe(level2NewTopics.level2Depth50, callbackId2); + console.log(`unsubscribed: ${level2NewTopics.level2Depth50} ${callbackId2}`); + +}, 5000); diff --git a/demo/match_demo.js b/demo/match_demo.js new file mode 100644 index 0000000..ec9997d --- /dev/null +++ b/demo/match_demo.js @@ -0,0 +1,51 @@ +const API = require('../src'); +const { matchTopics } = require('./constants') +API.init(require('./config')); + +const datafeed = new API.websocket.Datafeed(); + +// close callback +datafeed.onClose(() => { + console.log('ws closed, status ', datafeed.trustConnected); +}); + +// connect +datafeed.connectSocket(); + +/** + * @name matchTopics.matchExecutionData *** + * @description Subscribe to this topic to get the matching event data flow of Level 3. + * @updateTime + * @return {Object} + * { + "type":"message", + "topic":"/market/match:BTC-USDT", + "subject":"trade.l3match", + "data":{ + "sequence":"1545896669145", + "type":"match", + "symbol":"BTC-USDT", + "side":"buy", + "price":"0.08200000000000000000", + "size":"0.01022222000000000000", + "tradeId":"5c24c5da03aa673885cd67aa", + "takerOrderId":"5c24c5d903aa6772d55b371e", + "makerOrderId":"5c2187d003aa677bd09d5c93", + "time":"1545913818099033203" + } +} + */ +const callbackId = datafeed.subscribe(matchTopics.matchExecutionData, (message) => { + if (message.topic === matchTopics.matchExecutionData) { + console.log(message.data); + } +}); + + +//////////////////////////////cancel subscribe////////////////////////////////////// +setTimeout(() => { + // unsubscribe-matchExecutionData + datafeed.unsubscribe(matchTopics.matchExecutionData, callbackId); + console.log(`unsubscribed: ${matchTopics.matchExecutionData} ${callbackId}`); + +}, 5000); diff --git a/demo/order_book_demo.js b/demo/order_book_demo.js new file mode 100644 index 0000000..6046fd9 --- /dev/null +++ b/demo/order_book_demo.js @@ -0,0 +1,51 @@ +const API = require('../src'); +const { orderBookTopics } = require('./constants') +API.init(require('./config')); + +const datafeed = new API.websocket.Datafeed(); + +// close callback +datafeed.onClose(() => { + console.log('ws closed, status ', datafeed.trustConnected); +}); + +// connect +datafeed.connectSocket(); + +/** + * @name orderBookTopics.orderBookChange + * @description Subscribe to this topic to get the order book changes on margin trade. + * @updateTime + * @return {Object} + * { + "id": "5c24c5da03aa673885cd67ab", + "type": "message", + "topic": "/margin/fundingBook:BTC", + "subject": "funding.update", + "data": { + + "sequence": 1000000, //Sequence number + "currency": "BTC", //Currency + "dailyIntRate": "0.00007", //Daily interest rate. e.g. 0.002 is 0.2% + "annualIntRate": "0.12", //Annual interest rate. e.g. 0.12 is 12% + "term": 7, //Term (Unit: Day) + "size": "1017.5", //Current total size. When this value is 0, remove this record from the order book. + "side": "lend", //Lend or borrow. Currently, only "Lend" is available + "ts": 1553846081210004941 //Timestamp (nanosecond) + } +} + */ +const callbackId = datafeed.subscribe(orderBookTopics.orderBookChange, (message) => { + if (message.topic === orderBookTopics.orderBookChange) { + console.log(message.data); + } +}); + + +//////////////////////////////cancel subscribe////////////////////////////////////// +setTimeout(() => { + // unsubscribe-orderBookChange + datafeed.unsubscribe(orderBookTopics.orderBookChange, callbackId); + console.log(`unsubscribed: ${orderBookTopics.orderBookChange} ${callbackId}`); + +}, 5000); diff --git a/demo/price_demo.js b/demo/price_demo.js new file mode 100644 index 0000000..51a1d84 --- /dev/null +++ b/demo/price_demo.js @@ -0,0 +1,75 @@ +const API = require('../src'); +const { priceTopics } = require('./constants') +API.init(require('./config')); + +const datafeed = new API.websocket.Datafeed(); + +// close callback +datafeed.onClose(() => { + console.log('ws closed, status ', datafeed.trustConnected); +}); + +// connect +datafeed.connectSocket(); + +/** + * @name priceTopics.indexPrice + * @description Subscribe to this topic to get the index price for the margin trading. + * @updateTime + * @return {Object} + * { + "id":"5c24c5da03aa673885cd67a0", + "type":"message", + "topic":"/indicator/index:USDT-BTC", + "subject":"tick", + "data":{ + "symbol": "USDT-BTC", + "granularity": 5000, + "timestamp": 1551770400000, + "value": 0.0001092 + } +} + */ +const callbackId = datafeed.subscribe(priceTopics.indexPrice, (message) => { + if (message.topic === priceTopics.indexPrice) { + console.log(message.data); + } +}); + + +/** + * @name priceTopics.markPrice + * @description Subscribe to this topic to get the mark price for margin trading. + * @updateTime + * @return {Object} + * { + "id":"5c24c5da03aa673885cd67aa", + "type":"message", + "topic":"/indicator/markPrice:USDT-BTC", + "subject":"tick", + "data":{ + "symbol": "USDT-BTC", + "granularity": 5000, + "timestamp": 1551770400000, + "value": 0.0001093 + } +} + */ +const callbackId1 = datafeed.subscribe(priceTopics.markPrice, (message) => { + if (message.topic === priceTopics.markPrice) { + console.log(message.data); + } +}); + + +//////////////////////////////cancel subscribe////////////////////////////////////// +setTimeout(() => { + // unsubscribe-indexPrice + datafeed.unsubscribe(priceTopics.indexPrice, callbackId); + console.log(`unsubscribed: ${priceTopics.indexPrice} ${callbackId}`); + + // unsubscribe-markPrice + datafeed.unsubscribe(priceTopics.markPrice, callbackId1); + console.log(`unsubscribed: ${priceTopics.markPrice} ${callbackId1}`); + +}, 5000); diff --git a/demo/snapshot_demo.js b/demo/snapshot_demo.js new file mode 100644 index 0000000..6820422 --- /dev/null +++ b/demo/snapshot_demo.js @@ -0,0 +1,109 @@ +const API = require('../src'); +const { snapShotsTopics } = require('./constants') +API.init(require('./config')); + +// ws demo +const datafeed = new API.websocket.Datafeed(); + +// close callback +datafeed.onClose(() => { + console.log('ws closed, status ', datafeed.trustConnected); +}); + +// connect +datafeed.connectSocket(); + +/** + * @name snapShotsTopics.symbolSnapshot + * @description Subscribe to get snapshot data for a single symbol. + * @updateTime + * @return {Object} + * { + "type": "message", + "topic": "/market/snapshot:KCS-BTC", + "subject": "trade.snapshot", + "data": { + "sequence": "1545896669291", + "data": { + "trading": true, + "symbol": "KCS-BTC", + "buy": 0.00011, + "sell": 0.00012, + "sort": 100, //sorting number + "volValue": 3.13851792584, //total + "baseCurrency": "KCS", + "market": "BTC", + "quoteCurrency": "BTC", + "symbolCode": "KCS-BTC", + "datetime": 1548388122031, + "high": 0.00013, + "vol": 27514.34842, + "low": 0.0001, + "changePrice": -1.0e-5, + "changeRate": -0.0769, + "lastTradedPrice": 0.00012, + "board": 0, //Trading pair partition: 0.primary partition 1.KuCoin Plus", example = "1" + "mark": 0 //Trading Pair Mark: 0.default 1.ST. 2.NEW", example = "1" + } + } +} + */ +const callbackId = datafeed.subscribe(snapShotsTopics.symbolSnapshot, (message) => { + if (message.topic === snapShotsTopics.symbolSnapshot) { + console.log(message.data); + } +}); + +/** + * @name snapShots.marketSnapshot + * @description Subscribe this topic to get the snapshot data of for the entire market. + * @updateTime + * @return {Object} + * { + "type": "message", + "topic": "/market/snapshot:BTC", + "subject": "trade.snapshot", + "data": { + "sequence": "1545896669291", + "data": [ + { + "trading": true, + "symbol": "KCS-BTC", + "buy": 0.00011, + "sell": 0.00012, + "sort": 100, //sorting number + "volValue": 3.13851792584, + "baseCurrency": "KCS", + "market": "BTC", + "quoteCurrency": "BTC", + "symbolCode": "KCS-BTC", + "datetime": 1548388122031, + "high": 0.00013, + "vol": 27514.34842, + "low": 0.0001, + "changePrice": -1.0e-5, + "changeRate": -0.0769, + "lastTradedPrice": 0.00012, + "board": 0, //Trading pair partition: 0.primary partition 1.KuCoin Plus", example = "1" + "mark": 0 //Trading Pair Mark: 0.default 1.ST. 2.NEW", example = "1" + } + ] + } +} + */ +const callbackId1 = datafeed.subscribe(snapShotsTopics.marketSnapshot, (message) => { + if (message.topic === snapShotsTopics.marketSnapshot) { + console.log(message.data); + } +}); + +//////////////////////////////cancel subscribe////////////////////////////////////// +setTimeout(() => { + // unsubscribe-symbolSnapshot + datafeed.unsubscribe(snapShotsTopics.symbolSnapshot, callbackId); + console.log(`unsubscribed: ${snapShotsTopics.symbolSnapshot} ${callbackId}`); + + // unsubscribe-marketSnapshot + datafeed.unsubscribe(snapShotsTopics.marketSnapshot, callbackId1); + console.log(`unsubscribed: ${snapShotsTopics.marketSnapshot} ${callbackId1}`); +}, 5000); diff --git a/demo/ticker_demo.js b/demo/ticker_demo.js index 65ade8d..38b24c4 100644 --- a/demo/ticker_demo.js +++ b/demo/ticker_demo.js @@ -1,8 +1,7 @@ const API = require('../src'); - +const { tickerTopics } = require('./constants') API.init(require('./config')); -// ws demo const datafeed = new API.websocket.Datafeed(); // close callback @@ -13,17 +12,66 @@ datafeed.onClose(() => { // connect datafeed.connectSocket(); -// subscribe -const topic = `/market/ticker:BTC-USDT`; -const callbackId = datafeed.subscribe(topic, (message) => { - if (message.topic === topic) { +/** + * @name tickerTopics.symbolTicker + * @description Subscribe to this topic to get the push of BBO changes. + * @updateTime + * @return {Object} + * { + "type":"message", + "topic":"/market/ticker:BTC-USDT", + "subject":"trade.ticker", + "data":{ + "sequence":"1545896668986", // Sequence number + "price":"0.08", // Last traded price + "size":"0.011", // Last traded amount + "bestAsk":"0.08", // Best ask price + "bestAskSize":"0.18", // Best ask size + "bestBid":"0.049", // Best bid price + "bestBidSize":"0.036" // Best bid size + } +} + */ +const callbackId = datafeed.subscribe(tickerTopics.symbolTicker, (message) => { + if (message.topic === tickerTopics.symbolTicker) { + console.log(message.data); + } +}); + +/** + * @name tickerTopics.allSymbolsTicker + * @description Subscribe to this topic to get the push of all market symbols BBO change. + * @updateTime + * @return {Object} + * { + "type":"message", + "topic":"/market/ticker:all", + "subject":"BTC-USDT", + "data":{ + "sequence":"1545896668986", + "bestAsk":"0.08", + "size":"0.011", + "bestBidSize":"0.036", + "price":"0.08", + "bestAskSize":"0.18", + "bestBid":"0.049" + } +} + */ +const callbackId1 = datafeed.subscribe(tickerTopics.allSymbolsTicker, (message) => { + if (message.topic === tickerTopics.allSymbolsTicker) { console.log(message.data); } }); -console.log(`subscribe id: ${callbackId}`); +console.log(`subscribe id: ${callbackId1}`); + +//////////////////////////////cancel subscribe////////////////////////////////////// setTimeout(() => { - // unsubscribe - datafeed.unsubscribe(topic, callbackId); - console.log(`unsubscribed: ${topic} ${callbackId}`); + // unsubscribe-symbolTicker + datafeed.unsubscribe(tickerTopics.symbolTicker, callbackId); + console.log(`unsubscribed: ${tickerTopics.symbolTicker} ${callbackId}`); + // unsubscribe-allSymbolsTicker + datafeed.unsubscribe(tickerTopics.allSymbolsTicker, callbackId1); + console.log(`unsubscribed: ${tickerTopics.allSymbolsTicker} ${callbackId1}`); }, 5000); diff --git a/package.json b/package.json index d87c406..4924e7e 100755 --- a/package.json +++ b/package.json @@ -1,10 +1,13 @@ { "name": "kucoin-node-sdk", - "version": "1.0.4", + "version": "1.0.5", "description": "KuCoin API SDK for Node.js language", "main": "src/index.js", "scripts": { - "dev": "cross-env PRODUCTION=dev nodemon demo/index.js" + "dev": "cross-env PRODUCTION=dev nodemon demo/index.js", + "dev-ws": "cross-env PRODUCTION=dev nodemon demo/ticker_demo.js", + "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", + "test": "jest" }, "repository": { "type": "git", @@ -24,6 +27,7 @@ }, "devDependencies": { "cross-env": "^7.0.2", + "jest": "^29.5.0", "nodemon": "^1.19.4" } } diff --git a/src/datafeed/Level2.js b/src/datafeed/Level2.js index 6c65921..f116b81 100644 --- a/src/datafeed/Level2.js +++ b/src/datafeed/Level2.js @@ -210,7 +210,7 @@ class Level2 { log('ws closed, status ', this.datafeed.trustConnected); this.rebuild(); }); - + // @updateTime 09/22/22 const topic = `/market/level2:${this.symbol}`; this.datafeed.subscribe(topic, (message) => { if (message.topic === topic) { diff --git a/src/index.js b/src/index.js index 2dbd1b5..147a537 100644 --- a/src/index.js +++ b/src/index.js @@ -41,6 +41,7 @@ exports.rest = { Margin: { MarginInfo: require('./rest/Margin/MarginInfo'), BorrowAndLend: require('./rest/Margin/BorrowAndLend'), + Isolated:require('./rest/Margin/Isolated'), }, Others: require('./rest/Others'), }; diff --git a/src/lib/http.js b/src/lib/http.js index cf8b6d1..65bb0fe 100755 --- a/src/lib/http.js +++ b/src/lib/http.js @@ -11,7 +11,7 @@ const constructHttp = () => { let _baseUrl = baseUrl; if (!_baseUrl) { _baseUrl = process.env.PRODUCTION === 'prod' - ? 'https://api.kucoin.io' + ? 'https://openapi-v2.kucoin.com' : 'https://openapi-sandbox.kucoin.io'; } diff --git a/src/rest/Margin/BorrowAndLend.js b/src/rest/Margin/BorrowAndLend.js index ce781fd..5143c3a 100644 --- a/src/rest/Margin/BorrowAndLend.js +++ b/src/rest/Margin/BorrowAndLend.js @@ -244,6 +244,7 @@ exports.setAutoLend = async function setAutoLend(currency, isEnable, retainSize, /** * @name getActiveOrder * @description Get Active Order. This endpoint requires the "Trade" permission.. + * @updateTime 02/03/23 change it as common right. * @param {string} currency - [Optional] Currency * @param {Object} * - {number} currentPage diff --git a/src/rest/Margin/Isolated.js b/src/rest/Margin/Isolated.js new file mode 100644 index 0000000..ebe436d --- /dev/null +++ b/src/rest/Margin/Isolated.js @@ -0,0 +1,114 @@ +// owen.guo@kupotech.com add isolated api +const Http = require('../../lib/http'); + +/** + * @name queryIsolatedMarginTradingPairConfiguration + * @description Query Isolated Margin Trading Pair Configuration + * @updateTime 07/05/22 + * @return {Object} { code, success, data } + */ +exports.queryIsolatedMarginTradingPairConfiguration = async function queryIsolatedMarginTradingPairConfiguration() { + return await Http().GET('/api/v1/isolated/symbols'); +} + +/** + * @name queryIsolatedMarginAccountInfo + * @description Query Isolated Margin Account Info + * @updateTime 07/05/22 + * @param {Object} + * - {string} balanceCurrency - [Optional] The pricing coin, currently only supports USDT, KCS, and BTC. Defaults to BTC if no value is passed. + * @return {Object} { code, success, data } + */ +exports.queryIsolatedMarginAccountInfo = async function queryIsolatedMarginAccountInfo({balanceCurrency}) { + return await Http().GET('/api/v1/isolated/accounts',{ balanceCurrency }); +} + +/** + * @name querySingleIsolatedMarginAccountInfo + * @description Query Single Isolated Margin Account Info + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - Trading pair, e.g.: BTC-USDT + * @return {Object} { code, success, data } + */ +exports.querySingleIsolatedMarginAccountInfo = async function querySingleIsolatedMarginAccountInfo({symbol}) { + return await Http().GET(`/api/v1/isolated/account/${symbol}`,{ symbol }); +} + +/** + * @name isolatedMarginBorrowing + * @description Isolated Margin Borrowing + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - Trading pair, e.g.: BTC-USDT + * - {string} currency - Borrowed coin type + * - {BigDecimal} size - Borrowed amount + * - {string} borrowStrategy - Borrowing strategy: FOK, IOC + * - {BigDecimal} maxRate - [Optional] Max interest rate, defaults to all interest rates if left blank + * - {string} period - [Optional] The term in days. Defaults to all terms if left blank. 7,14,28 + * @return {Object} { code, success, data } + */ +exports.isolatedMarginBorrowing = async function isolatedMarginBorrowing({symbol,currency,size,borrowStrategy,maxRate,period}) { + return await Http().POST('/api/v1/isolated/borrow',{ symbol,currency,size,borrowStrategy,maxRate,period }); +} + +/** + * @name queryOutstandingRepaymentRecords + * @description Query Outstanding Repayment Records + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - [Optional] Trading pair, e.g.: BTC-USDT + * - {string} currency - [Optional] Coin type + * - {Int} pageSize - [Optional] Page size [10-50] + * - {Int} currentPage - [Optional] Current page number [1-100] + * @return {Object} { code, success, data } + */ +exports.queryOutstandingRepaymentRecords = async function queryOutstandingRepaymentRecords({symbol,currency,pageSize,currentPage}) { + return await Http().GET('/api/v1/isolated/borrow/outstanding',{ symbol,currency,pageSize,currentPage }); +} + + +/** + * @name queryRepaymentRecords + * @description Query Repayment Records + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - [Optional] Trading pair, e.g.: BTC-USDT + * - {string} currency - [Optional] Coin type + * - {Int} pageSize - [Optional] Page size [10-50] + * - {Int} currentPage - [Optional] Current page number [1-100] + * @return {Object} { code, success, data } + */ +exports.queryRepaymentRecords = async function queryRepaymentRecords({symbol,currency,pageSize,currentPage}) { + return await Http().GET('/api/v1/isolated/borrow/repaid',{ symbol,currency,pageSize,currentPage }); +} + +/** + * @name quickRepayment + * @description Quick Repayment + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - [Optional] Trading pair, e.g.: BTC-USDT + * - {string} currency - [Optional] Coin type + * - {BigDecimal} size Repayment amount + * - {string} seqStrategy - Repayment sequence strategy, RECENTLY_EXPIRE_FIRST: Maturity date priority (the loan with the closest maturity is repaid first), HIGHEST_RATE_FIRST: Interest rate priority (the loan with the highest interest rate is repaid first) + * @return {Object} { code, success, data } + */ +exports.quickRepayment = async function quickRepayment({symbol,currency,size,seqStrategy} ) { + return await Http().POST('/api/v1/isolated/repay/all',{ symbol,currency,size,seqStrategy }); +} + +/** + * @name singleRepayment + * @description Single Repayment + * @updateTime 07/05/22 + * @param {Object} + * - {string} symbol - [Optional] Trading pair, e.g.: BTC-USDT + * - {string} currency - [Optional] Coin type + * - {BigDecimal} size Repayment amount + * - {string} loanId- Trade order number; when this field is configured, the sequence strategy is invalidated + * @return {Object} { code, success, data } + */ +exports.singleRepayment = async function singleRepayment({symbol,currency,size,loanId}) { + return await Http().POST('/api/v1/isolated/repay/single',{ symbol,currency,size,loanId }); +} \ No newline at end of file diff --git a/src/rest/Margin/MarginInfo.js b/src/rest/Margin/MarginInfo.js index 1923018..cd84645 100644 --- a/src/rest/Margin/MarginInfo.js +++ b/src/rest/Margin/MarginInfo.js @@ -72,6 +72,7 @@ exports.getMarginAccount = async function getMarginAccount() { /** * @name postMarginOrder * @description Post Margin Order. This endpoint requires the "Trade" permission. + * @updateTime 07/05/22 * @param params https://docs.kucoin.cc/#place-a-margin-order * Parameters * - {string} clientOid - Unique order id created by users to identify their orders, e.g. UUID. diff --git a/src/rest/Market/Currencies.js b/src/rest/Market/Currencies.js index 314dfee..bbd3483 100644 --- a/src/rest/Market/Currencies.js +++ b/src/rest/Market/Currencies.js @@ -91,3 +91,21 @@ exports.getFiatPrice = async function getFiatPrice(params = {}) { */ return await Http().GET('/api/v1/prices', { ...params }); }; + + +// owen.guo@kupotech.com update api + +/** + * @name getCurrencyDetail + * @description Get Currency Detail(Recommend) + * @updateTime 08/03/22 + * @param {Object} + * - {String} currency Path parameter. Currency + * - {String} chain [Optional] Support for querying the chain of currency, return the currency details of all chains by default. + * @return {Object} { code, success, data } + */ +exports.getCurrencyDetail = async function getCurrencyDetail({currency,chain}) { + return await Http().GET(`/api/v2/currencies/${currency}`,{ + currency,chain + }); +} \ No newline at end of file diff --git a/src/rest/Market/Symbols.js b/src/rest/Market/Symbols.js index d28473c..6b081fc 100644 --- a/src/rest/Market/Symbols.js +++ b/src/rest/Market/Symbols.js @@ -150,3 +150,20 @@ exports.getMarketList = async function getMarketList() { */ return await Http().GET('/api/v1/markets'); }; + + +// owen.guo@kupotech.com update api + +/** + * @name getSymbolsList + * @description Get Symbols List + * @updateTime 10/20/22 + * @param {Object} + * - {String} market [Optional] The trading market. + * @return {Object} { code, success, data } + */ +exports.getSymbolsList = async function getSymbolsList({market}) { + return await Http().GET('/api/v2/symbols',{ + market + }); +} \ No newline at end of file diff --git a/src/rest/Trade/Fills.js b/src/rest/Trade/Fills.js index 57a3116..8bacaea 100644 --- a/src/rest/Trade/Fills.js +++ b/src/rest/Trade/Fills.js @@ -87,3 +87,23 @@ exports.getRecentFills = async function getRecentFills() { */ return await Http().GET('/api/v1/limit/fills'); }; + +// owen.guo@kupotech.com add high-frequency api +/** + * @name getHfTransactionRecords + * @description HF transaction records + * @updateTime 02/03/23 + * @param {Object} + * - {string} orderId Look up the transaction details pertaining to the order id(IforderId is specified,please ignore the other query parameters) + * - {string} symbol Only returns order information for the specified trading pair + * - {string} side buy(Buy) or sell(Sell) + * - {string} type Order type: limit(limit order), market(market order) + * - {long} startAt Start time(ms),puts a restriction on the transaction(creation) time for the transaction records + * - {long} endAt End time(ms),puts a restriction on the transaction(creation) time of the transaction records + * - {long} lastId The id of the last data item from the previous batch, defaults to obtaining the latest data + * - {int} limit Default100,maximum 200 + * @return {Object} { code, success, data } + */ +exports.getHfTransactionRecords = async function getHfTransactionRecords({orderId,symbol,side,type,startAt,endAt,lastId,limit}) { + return await Http().GET('/api/v1/hf/fills',{ orderId,symbol,side,type,startAt,endAt,lastId,limit }); +} \ No newline at end of file diff --git a/src/rest/Trade/Orders.js b/src/rest/Trade/Orders.js index 1e45271..031b6a4 100644 --- a/src/rest/Trade/Orders.js +++ b/src/rest/Trade/Orders.js @@ -241,6 +241,7 @@ exports.getOrdersList = async function getOrdersList(tradeType, optional = {}) { /** * @name getV1HistoricalOrdersList * @description Get V1 Historical Orders List + * @updateTime 01/25/22 * @param params * - {number} currentPage - [Optional] The current page. * - {number} pageSize - [Optional] Number of entries per page. @@ -423,3 +424,317 @@ exports.getSingleActiveOrderByClientOid = async function getSingleActiveOrderByC */ return await Http().GET(`/api/v1/order/client-order/${clientOid}`); }; + +// owen.guo@kupotech.com add high-frequency api + +/** + * @name placeHfOrder + * @description Place hf order + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Client Order Id,unique identifier created by the user, the use of UUID is recommended + * - {String} symbol Trading pair, such as, ETH-BTC + * - {String} type Order type limit and market + * - {String} side buy or sell + * - {String} stp Self trade prevention (self trade prevention) is divided into four strategies: CN, CO, CB , and DC + * - {String} tags Order tag, cannot exceed 20 characters (ASCII) in length + * - {String} remark Order placement remarks, length cannot exceed 20 characters (ASCII) in length + * @return {Object} { code, success, data } + */ +exports.placeHfOrder = async function placeHfOrder({clientOid,symbol,type,side,stp,tags,remark}) { + return await Http().POST('/api/v1/hf/orders',{ + clientOid,symbol,type,side,stp,tags,remark + }); +} + +/** + * @name syncPlaceHfOrder + * @description Sync place hf order + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Client Order Id,unique identifier created by the user, the use of UUID is recommended + * - {String} symbol Trading pair, such as, ETH-BTC + * - {String} type Order type limit and market + * - {String} side buy or sell + * - {String} stp Self trade prevention (self trade prevention) is divided into four strategies: CN, CO, CB , and DC + * - {String} tags Order tag, cannot exceed 20 characters (ASCII) in length + * - {String} remark Order placement remarks, length cannot exceed 20 characters (ASCII) in length + * @return {Object} { code, success, data } + */ +exports.syncPlaceHfOrder = async function syncPlaceHfOrder({clientOid,symbol,type,side,stp,tags,remark}) { + return await Http().POST('/api/v1/hf/orders/sync',{ + clientOid,symbol,type,side,stp,tags,remark + }); +} + +/** + * @name placeMultipleHfOrders + * @description Place multiple hf orders + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Client Order Id,a unique identifier created by the user,the use of UUID is recommended + * - {String} symbol trading pairs such as,ETH-BTC + * - {String} type Order type limit and market + * - {String} timeInForce [Optional] Time in force GTC, GTT, IOC, FOK (defaults to GTC) + * - {String} stp [Optional] Self trade prevention(self trade prevention)is divided into CN, CO, CB , and DC strategies + * - {String} side buy(buy) or sell(sell) + * - {String} price Specify price for currency + * - {String} size Specify quantity of currency + * - {long} cancelAfter [Optional] Cancels in n seconds, with GTT as the time in force strategy + * - {boolean} postOnly [Optional] Post only identifier, invalid when the time in force strategy is IOC or FOK + * - {boolean} hidden [Optional] Hidden or not(not shown in order book) + * - {boolean} iceberg [Optional] Whether iceberg orders only show visible portions of orders + * - {String} visibleSize [Optional] The maximum visible size for iceberg orders + * - {String} tags [Optional] The order identifier length cannot exceed 20 characters(ASCII) + * - {String} remark [Optional] Order placement remarks cannot exceed a length of 20 characters(ASCII) + * @return {Object} { code, success, data } + */ +exports.placeMultipleHfOrders = async function placeMultipleHfOrders({clientOid,symbol,type,timeInForce,stp,side,price,size,cancelAfter,postOnly,hidden,iceberg,visibleSize,tags,remark}) { + return await Http().POST('/api/v1/hf/orders/multi',{ + clientOid,symbol,type,timeInForce,stp,side,price,size,cancelAfter,postOnly,hidden,iceberg,visibleSize,tags,remark + }); +} + +/** + * @name syncPlaceMultipleHfOrders + * @description Sync place multiple hf orders + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Client Order Id,a unique identifier created by the user,the use of UUID is recommended + * - {String} symbol trading pairs such as,ETH-BTC + * - {String} type Order type limit and market + * - {String} timeInForce [Optional] Time in force GTC, GTT, IOC, FOK (defaults to GTC) + * - {String} stp [Optional] Self trade prevention(self trade prevention)is divided into CN, CO, CB , and DC strategies + * - {String} side buy(buy) or sell(sell) + * - {String} price Specify price for currency + * - {String} size Specify quantity of currency + * - {long} cancelAfter [Optional] Cancels in n seconds, with GTT as the time in force strategy + * - {boolean} postOnly [Optional] Post only identifier, invalid when the time in force strategy is IOC or FOK + * - {boolean} hidden [Optional] Hidden or not(not shown in order book) + * - {boolean} iceberg [Optional] Whether iceberg orders only show visible portions of orders + * - {String} visibleSize [Optional] The maximum visible size for iceberg orders + * - {String} tags [Optional] The order identifier length cannot exceed 20 characters(ASCII) + * - {String} remark [Optional] Order placement remarks cannot exceed a length of 20 characters(ASCII) + * @return {Object} { code, success, data } + */ +exports.syncPlaceMultipleHfOrders = async function syncPlaceMultipleHfOrders({clientOid,symbol,type,timeInForce,stp,side,price,size,cancelAfter,postOnly,hidden,iceberg,visibleSize,tags,remark}) { + return await Http().POST('/api/v1/hf/orders/multi/sync',{ + clientOid,symbol,type,timeInForce,stp,side,price,size,cancelAfter,postOnly,hidden,iceberg,visibleSize,tags,remark + }); +} + +/** + * @name modifyOrder + * @description Modify order + * @updateTime 02/03/23 + * @param {Object} + * - {String} symbol trading pairs such as,ETH-BTC + * - {String} clientOid Client Order Id,a unique identifier created by the user,the use of UUID is recommended + * - {String} orderId other id + * - {String} newPrice The modified price of the new order + * - {String} newSize The modified size of the new order + * @return {Object} { code, success, data } + */ + +exports.modifyOrder = async function modifyOrder({symbol,clientOid,orderId,newPrice,newSize}) { + return await Http().POST('/api/v1/hf/orders/alter',{ + symbol,clientOid,orderId,newPrice,newSize + }); +} + +/** + * @name cancelOrdersByOrderId + * @description Cancel orders by orderId + * @updateTime 02/03/23 + * @param {Object} + * - {String} orderId Path parameter,Order Id unique identifier + * - {String} symbol Trading pair, such as ETH-BTC + * @return {Object} { code, success, data } + */ +exports.cancelOrdersByOrderId = async function cancelOrdersByOrderId({orderId,symbol}) { + return await Http().DEL(`/api/v1/hf/orders/${orderId}`,{ + orderId,symbol + }); +} + +/** + * @name syncCancelOrdersByOrderId + * @description Sync cancel orders by orderId + * @updateTime 02/03/23 + * @param {Object} + * - {String} orderId Path parameter,Order Id unique identifier + * - {String} symbol Trading pair, such as ETH-BTC + * @return {Object} { code, success, data } + */ +exports.syncCancelOrdersByOrderId = async function syncCancelOrdersByOrderId({orderId,symbol}) { + return await Http().DEL(`/api/v1/hf/orders/sync/${orderId}`,{ + orderId,symbol + }); +} + +/** + * @name cancelOrderByClientOid + * @description Cancel order by clientOid + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Path parameter,an identifier created by the + * - {String} symbol Trading pair such as ETH-BTC + * @return {Object} { code, success, data } + */ + +exports.cancelOrderByClientOid = async function cancelOrderByClientOid({clientOid,symbol}) { + return await Http().DEL(`/api/v1/hf/orders/client-order/${clientOid}`,{ + clientOid,symbol + }); +} + +/** + * @name syncCancelOrdersByClientOid + * @description Sync cancel orders by clientOid + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Path parameter,an identifier created by the + * - {String} symbol Trading pair such as ETH-BTC + * @return {Object} { code, success, data } + */ + +exports.syncCancelOrdersByClientOid = async function syncCancelOrdersByClientOid({clientOid,symbol}) { + return await Http().DEL(`/api/v1/hf/orders/sync/client-order/${clientOid}`,{ + clientOid,symbol + }); +} + +/** + * @name cancelSpecifiedNumberOfOrdersByOrderId + * @description Cancel specified number of orders by orderId + * @updateTime 02/03/23 + * @param {Object} + * - {String} orderId Order id of the cancelled order + * - {String} symbol Trading pair such as ETH-BTC + * - {String} cancelSize canceled size + * @return {Object} { code, success, data } + */ +exports.cancelSpecifiedNumberOfOrdersByOrderId = async function cancelSpecifiedNumberOfOrdersByOrderId({orderId,symbol,cancelSize }) { + return await Http().DEL(`/api/v1/hf/orders/cancel/${orderId}`,{ + orderId,symbol,cancelSize + }); +} + +/** + * @name cancelAllHfOrdersBySymbol + * @description Cancel all HF orders by symbol + * @updateTime 02/03/23 + * @param {Object} + * - {String} symbol Cancel open orders pertaining to the specified trading pair + * @return {Object} { code, success, data } + */ + +exports.cancelAllHfOrdersBySymbol = async function cancelAllHfOrdersBySymbol({symbol}) { + return await Http().DEL('/api/v1/hf/orders',{ + symbol + }); +} + +/** + * @name obtainListOfActiveHfOrders + * @description Obtain List of Active HF Orders + * @updateTime 02/03/23 + * @param {Object} + * - {String} symbol Only returns order information for the specified trading pair + * @return {Object} { code, success, data } + */ + +exports.obtainListOfActiveHfOrders = async function obtainListOfActiveHfOrders({symbol}) { + return await Http().GET('/api/v1/hf/orders/active',{ + symbol + }); +} + +/** + * @name obtainListOfSymbolWithActiveHfOrders + * @description Obtain List of symbol with active HF orders + * @updateTime 02/03/23 + * @return {Object} { code, success, data } + */ + +exports.obtainListOfSymbolWithActiveHfOrders = async function obtainListOfSymbolWithActiveHfOrders() { + return await Http().GET('/api/v1/hf/orders/active/symbols'); +} + +/** + * @name obtainListOfFilledHfOrders + * @description Obtain List of Filled HF Orders + * @updateTime 02/03/23 + * @param {Object} + * - {String} symbol Only returns order information for the specified trading pair + * - {String} side buy (Buy) orsell (Sell) + * - {String} type Order type: limit (limit order), market(market order) + * - {long} startAt Start time (ms),last update(filled) time of the limit order + * - {long} endAt End time (ms),last update(filled) time of limit order + * - {long} lastId The id of the last data item from the previous batch,defaults to obtaining the latest data + * - {int} limit Default20,maximum100 + * @return {Object} { code, success, data } + */ +exports.obtainListOfFilledHfOrders = async function obtainListOfFilledHfOrders({symbol,side,type,startAt,endAt,lastId,limit}) { + return await Http().GET('/api/v1/hf/orders/done',{ + symbol,side,type,startAt,endAt,lastId,limit + }); +} + +/** + * @name detailsOfAsingleHfOrder + * @description Details of a Single HF Order + * @updateTime 02/03/23 + * @param {Object} + * - {String} orderId Path parameter,Order Id unique identifier + * - {String} symbol Trading pair, such as ETH-BTC + * @return {Object} { code, success, data } + */ + +exports.detailsOfAsingleHfOrder = async function detailsOfAsingleHfOrder({orderId,symbol}) { + return await Http().GET(`/api/v1/hf/orders/${orderId}`,{ + orderId,symbol + }); +} + +/** + * @name obtainDetailsOfASingleHfOrder + * @description Obtain details of a single HF order using clientOid + * @updateTime 02/03/23 + * @param {Object} + * - {String} clientOid Path parameter,an identifier created by the client + * - {String} symbol Trading pair such as ETH-BTC + * @return {Object} { code, success, data } + */ + +exports.obtainDetailsOfASingleHfOrder = async function obtainDetailsOfASingleHfOrder({clientOid,symbol}) { + return await Http().GET(`/api/v1/hf/orders/client-order/${clientOid}`,{ + clientOid,symbol + }); +} + + +/** + * @name hfAutoCancelSetting + * @description HF auto cancel setting + * @updateTime 02/03/23 + * @param {Object} + * - {Int} timeout Auto cancel order trigger setting time, the unit is second. range: timeout=-1 (meaning unset) or 5 <= timeout <= 86400. For example, timeout=5 means that the order will be automatically canceled if no user request is received for more than 5 seconds. When this parameter is changed, the previous setting will be overwritten. + * - {String} symbols List of trading pairs. When this parameter is not empty, separate it with commas and support up to 50 trading pairs. Empty means all trading pairs. When this parameter is changed, the previous setting will be overwritten. + * @return {Object} { code, success, data } + */ +exports.hfAutoCancelSetting = async function hfAutoCancelSetting({ timeout,symbols}) { + return await Http().POST('/api/v1/hf/orders/dead-cancel-all',{ + timeout,symbols + }); +} + +/** + * @name queryHfAutoCancelOrderSetting + * @description HF auto cancel order setting query + * @updateTime 02/03/23 + * @return {Object} { code, success, data } + */ +exports.queryHfAutoCancelOrderSetting = async function queryHfAutoCancelOrderSetting() { + return await Http().GET('/api/v1/hf/orders/dead-cancel-all/query'); +} \ No newline at end of file diff --git a/src/rest/Trade/StopOrder.js b/src/rest/Trade/StopOrder.js index 5e6cb73..c41aed2 100644 --- a/src/rest/Trade/StopOrder.js +++ b/src/rest/Trade/StopOrder.js @@ -186,3 +186,27 @@ exports.cancelSingleOrderByClientOid = async function cancelSingleOrderByClientO symbol, }); }; + + +// owen.guo@kupotech.com update api + +/** + * @name getSingleStopOrderInfo + * @description Get Single Order Info + * @param {Object} + * - {String} orderId Order ID + * @return {Object} { code, success, data } + */ +exports.getSingleStopOrderInfo = async function getSingleStopOrderInfo({orderId}) { + return await Http().GET(`/api/v1/stop-order/${orderId}`,{ orderId }); +} + +/** + * @name cancelStopOrder + * @description Cancel an Order + * @param {String} orderId Order ID + * @return {Object} { code, success, data } + */ +exports.cancelStopOrder = async function cancelStopOrder({orderId}) { + return await Http().DEL(`/api/v1/stop-order/${orderId}`,{ orderId }); +} \ No newline at end of file diff --git a/src/rest/User/Account.js b/src/rest/User/Account.js index 7db4398..888b397 100644 --- a/src/rest/User/Account.js +++ b/src/rest/User/Account.js @@ -4,6 +4,7 @@ const Http = require('../../lib/http'); /** * @name createAccount * @description Create an Account. + * @updateTime 11/08/22 * @param {string} type - Account type: main, trade, margin * @param {string} currency - currency https://sandbox-docs.kucoin.com/#get-currencies * @return {Object} { code, success, data } @@ -303,6 +304,7 @@ exports.getAggregatedBalanceOfAllSubAccounts = async function getAggregatedBalan /** * @name getTransferable * @description Get the Transferable. + * @updateTime 07/05/22 * @param {string} type - The account type: MAIN, TRADE, MARGIN or POOL * @param {string} currency - currency https://sandbox-docs.kucoin.com/#Get-Currencies * @return {Object} { code, success, data } @@ -372,11 +374,14 @@ exports.transferBetweenMasterUserAndSubUser = async function transferBetweenMast /** * @name innerTransfer * @description Inner Transfer + * @updateTime 07/05/22 * @param {string} clientOid - Unique order id created by users to identify their orders, e.g. UUID. * @param {string} currency - currency https://sandbox-docs.kucoin.com/#Get-Currencies * @param {string} from - Account type of payer: main, trade, margin or pool * @param {string} to - Account type of payee: main, trade, margin or pool * @param {string} amount - Transfer amount, the amount is a positive integer multiple of the currency precision. +// * @param {string} fromTag [Optional] Trading pair, required when the payment account type is isolated, e.g.: BTC-USDT +// * @param {string} toTag [Optional] Trading pair, required when the receiving account type is isolated, e.g.: BTC-USDT * @return {Object} { code, success, data } */ exports.innerTransfer = async function innerTransfer( @@ -384,7 +389,7 @@ exports.innerTransfer = async function innerTransfer( currency, from, to, - amount, + amount ) { /* { @@ -399,6 +404,186 @@ exports.innerTransfer = async function innerTransfer( currency, from, to, - amount, + amount }); }; + +// owen.guo@kupotech.com update api + +/** + * @name getAccountSummaryInfo + * @description Get Account Summary Info(V2) + * @updateTime 08/04/23 + * @return {Object} { code, success, data } + */ +exports.getAccountSummaryInfo = async function getAccountSummaryInfo() { + return await Http().GET('/api/v2/user-info'); +} + +/** + * @name createSubAccount + * @description Create Sub-Account(V2) + * @updateTime 08/04/23 + * @param {Object} + * - {String} password Password(7-24 characters, must contain letters and numbers, cannot only contain numbers or include special characters) + * - {String} remarks [Optional] Remarks(1~24 characters) + * - {String} subName Sub-account name(must contain 7-32 characters, at least one number and one letter. Cannot contain any spaces.) + * - {String} access Permission (types include Spot, Futures, Margin permissions, which can be used alone or in combination). + * @return {Object} { code, success, data } + */ +exports.createSubAccount = async function createSubAccount({password,remarks,subName,access}) { + return await Http().POST('/api/v2/sub/user/created',{ + password,remarks,subName,access + }); +} + +/** + * @name getSubAccountSpotApiList + * @description Get Sub-Account Spot API List + * @updateTime 08/24/22 + * @param {Object} + * - {String} apiKey [Optional] API-Key. + * - {String} subName Sub-account name. + * @return {Object} { code, success, data } + */ +exports.getSubAccountSpotApiList = async function getSubAccountSpotApiList({apiKey,subName}) { + return await Http().GET('/api/v1/sub/api-key',{ + apiKey,subName + }); +} + +/** + * @name createSpotAPIsForSubAccount + * @description Create Spot APIs for Sub-Account + * @updateTime 08/24/22 + * @param {Object} + * - {String} subName Sub-account name, create sub account name of API Key. + * - {String} passphrase Password(Must contain 7-32 characters. Cannot contain any spaces.) + * - {String} remark Remarks(1~24 characters) + * - {String} permission [Optional] Permissions(Only "General" and "Trade" permissions can be set, such as "General, Trade". The default is "General") + * - {String} ipWhitelist [Optional] IP whitelist(You may add up to 20 IPs. Use a halfwidth comma to each IP) + * - {String} expire [Optional] API expiration time; Never expire(default)-1,30Day30,90Day90,180Day180,360Day360 + * @return {Object} { code, success, data } + */ +exports.createSpotAPIsForSubAccount = async function createSpotAPIsForSubAccount({subName,passphrase,remark,permission,ipWhitelist,expire}) { + return await Http().POST('/api/v1/sub/api-key',{ + subName,passphrase,remark,permission,ipWhitelist,expire + }); +} + +/** + * @name updateSubAccountSpotApis + * @description Modify Sub-Account Spot APIs + * @updateTime 08/24/22 + * @param {Object} + * - {String} subName Sub-account name, create sub account name of API Key. + * - {String} apiKey API-Key(Sub-account APIKey) + * - {String} passphrase Password of API key + * - {String} permission [Optional] Permission list.If modified, permissions will be reset. + * - {String} ipWhitelist [Optional] IP whitelist(you may add up to 20 IPs. Use a halfwidth comma to each IP.If modified, the IP will be reset.) + * - {String} expire [Optional] API expiration time; Never expire(default)-1,30Day30,90Day90,180Day180,360Day360 + * @return {Object} { code, success, data } + */ +exports.updateSubAccountSpotApis = async function updateSubAccountSpotApis({subName,apiKey,passphrase,permission,ipWhitelist,expire}) { + return await Http().POST('/api/v1/sub/api-key/update',{ + subName,apiKey,passphrase,permission,ipWhitelist,expire + }); +} + +/** + * @name deleteSubAccountSpotApis + * @description Delete Sub-Account Spot APIs + * @updateTime 09/22/22 + * @param {Object} + * - {String} apiKey API-Key(API key to be deleted) + * - {String} passphrase Password(Password of the API key) + * - {String} subName Sub-account name(The sub-account name corresponding to the API key) + * @return {Object} { code, success, data } + */ + +exports.deleteSubAccountSpotApis = async function deleteSubAccountSpotApis({apiKey,passphrase,subName}) { + return await Http().DEL('/api/v1/sub/api-key',{ + apiKey,passphrase,subName + }); +} + +/** + * @name getPaginatedSubAccountInformation + * @description Get Paginated Sub-Account Information. + * @param {Object} + * - {Int} currentPage [Optional] Current request page. Default is 1 + * - {Int} pageSize [Optional] Number of results per request. Minimum is 1, maximum is 100, default is 10. + * @return {Object} { code, success, data } + */ +exports.getPaginatedSubAccountInformation = async function getPaginatedSubAccountInformation({currentPage,pageSize}) { + return await Http().GET('/api/v2/sub-accounts',{ + currentPage,pageSize + }); +} + +/** + * @name transferToHFAccount + * @description transferToHFAccount + * @param {Object} + * - {string} clientOid - Unique order id created by users to identify their orders, e.g. UUID. + * - {string} type - The account type: MAIN, TRADE, MARGIN or POOL + * - {string} currency - currency https://sandbox-docs.kucoin.com/#Get-Currencies + * - {string} from - Account type of payer: main, trade, margin or pool + * - {string} to - Account type of payee: main, trade, margin or pool + * - {string} amount - Transfer amount, the amount is a positive integer multiple of the currency precision. + * @return {Object} { code, success, data } + */ + + +exports.transferToHFAccount = async function transferToHFAccount({ + clientOid, + currency, + from, + to, + amount, + type +}){ + try{ + const innerTransferResult = await this.innerTransfer(clientOid, currency,from,to,amount) + // console.log(innerTransferResult,"innerTransferResult---") + const getTransferableResult = await this.getTransferable(type,currency) + // console.log(getTransferableResult,'getTransferableResult---') + if(innerTransferResult?.code==='200000'){ + return getTransferableResult; + } else { + return { + msg:innerTransferResult?.msg || 'transferToHFAccount-error', + code:innerTransferResult?.code || '400000', + data: { + currency: 'USDT', + balance: '0', + available: '0', + holds: '0', + transferable: '0' + } + } + } + + } catch(e){ + console.error(e,"transferToHFAccount-error") + } +} + +/** + * @name getHighFrequencyAccountLedger + * @description Account Ledger in high-frequency trading accounts + * @param {Object} + * - {string} currency, optional,can select more than one,separate with commas,select no more than 10 currencys,the default will be to query for all currencys if left empty + * - {string} direction Direction of transaction (in or out): in-transfer in, out-transfer out + * - {string} bizType Transaction type: TRANSFER-transfer funds,TRADE_EXCHANGE-Trade + * - {long } lastId The id of the last set of data from the previous batch of data. By default, the latest information is given. + * - {int} limit Default100,Max200 + * - {long } startAt Start time (ms), the conditional limit createdAt + * - { long } endAt End time (ms), the conditional limit createdAt + * @return {Object} { code, success, data } + */ +exports.getHighFrequencyAccountLedger = async function getHighFrequencyAccountLedger({currency,direction,bizType,lastId,limit,startAt,endAt}) { + return await Http().GET('/api/v1/hf/accounts/ledgers',{ + currency,direction,bizType,lastId,limit,startAt,endAt + }); +} \ No newline at end of file diff --git a/src/rest/User/Deposit.js b/src/rest/User/Deposit.js index a4505aa..01c48ed 100644 --- a/src/rest/User/Deposit.js +++ b/src/rest/User/Deposit.js @@ -79,6 +79,7 @@ exports.getDepositAddress = async function getDepositAddress(currency, { chain } /** * @name getDepositList * @description Get Deposit List. + * @updateTime 11/01/22 * @param {Object} * - {string} currency - [Optional] Currency * - {number} startAt - [Optional] Start time (milisecond) diff --git a/src/rest/User/TradeFee.js b/src/rest/User/TradeFee.js index 4452d82..1c429f2 100644 --- a/src/rest/User/TradeFee.js +++ b/src/rest/User/TradeFee.js @@ -4,6 +4,7 @@ const Http = require('../../lib/http'); /** * @name getBasicUserFee * @description This interface is for the basic fee rate of users. + * @updateTime 08/03/22 * @return {Object} { code, success, data } */ exports.getBasicUserFee = async function getBasicUserFee() { diff --git a/src/rest/User/UserInfo.js b/src/rest/User/UserInfo.js index d579aab..5a97a0d 100644 --- a/src/rest/User/UserInfo.js +++ b/src/rest/User/UserInfo.js @@ -4,6 +4,7 @@ const Http = require('../../lib/http'); /** * @name getSubUsers * @description Get User Info of all Sub-Accounts. + * @updateTime 17/02/23 add its response value (uid、access) * @return {Object} { code, success, data } */ exports.getSubUsers = async function getSubUsers() { @@ -24,3 +25,17 @@ exports.getSubUsers = async function getSubUsers() { */ return await Http().GET('/api/v1/sub/user'); }; + +// owen.guo@kupotech.com update api + +/** + * @name getPaginatedSubUsers + * @description Get Paginated List of Sub-Accounts. + * @param {Object} + * - {Int} currentPage - [Optional] Current request page. Default is 1 + * - {Int} pageSize - [Optional] Number of results per request. Minimum is 1, maximum is 100, default is 10. + * @return {Object} { code, success, data } + */ +exports.getPaginatedSubUsers = async function getPaginatedSubUsers({currentPage,pageSize}) { + return await Http().GET('/api/v2/sub/user',{ currentPage,pageSize }); +} diff --git a/src/rest/User/Withdrawals.js b/src/rest/User/Withdrawals.js index 442e264..8f898b2 100644 --- a/src/rest/User/Withdrawals.js +++ b/src/rest/User/Withdrawals.js @@ -4,6 +4,7 @@ const Http = require('../../lib/http'); /** * @name getWithdrawalsList * @description Get Withdrawals List. + * @updateTime 11/01/22 * @param {Object} * - {string} currency - [Optional] Currency * - {string} status - [Optional] Status. Available value: PROCESSING, WALLET_PROCESSING, SUCCESS, and FAILURE @@ -141,6 +142,7 @@ exports.getWithdrawalQuotas = async function getWithdrawalQuotas(currency, { /** * @name applyWithdraw * @description Apply Withdraw. + * @updateTime 08/03/22 * @param {string} currency - Currency * @param {string} address - Withdrawal address * @param {number} amount - Withdrawal amount, a positive number which is a multiple of the amount precision (fees excluded) diff --git a/yarn.lock b/yarn.lock index d773a59..5e7acd5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,11 +2,658 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://nac.kucoin.com:1149/@ampproject%2fremapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fcode-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" + integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== + dependencies: + "@babel/highlight" "^7.22.5" + +"@babel/compat-data@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fcompat-data/-/compat-data-7.22.5.tgz#b1f6c86a02d85d2dd3368a2b67c09add8cd0c255" + integrity sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fcore/-/core-7.22.5.tgz#d67d9747ecf26ee7ecd3ebae1ee22225fe902a89" + integrity sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helpers" "^7.22.5" + "@babel/parser" "^7.22.5" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.5" + "@babel/types" "^7.22.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + +"@babel/generator@^7.22.5", "@babel/generator@^7.7.2": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fgenerator/-/generator-7.22.5.tgz#1e7bf768688acfb05cf30b2369ef855e82d984f7" + integrity sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA== + dependencies: + "@babel/types" "^7.22.5" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz#fc7319fc54c5e2fa14b2909cf3c5fd3046813e02" + integrity sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw== + dependencies: + "@babel/compat-data" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + +"@babel/helper-environment-visitor@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" + integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== + +"@babel/helper-function-name@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" + integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== + dependencies: + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" + integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-transforms@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-module-transforms/-/helper-module-transforms-7.22.5.tgz#0f65daa0716961b6e96b164034e737f60a80d2ef" + integrity sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz#88cf11050edb95ed08d596f7a044462189127a08" + integrity sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== + +"@babel/helper-validator-option@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" + integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== + +"@babel/helpers@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhelpers/-/helpers-7.22.5.tgz#74bb4373eb390d1ceed74a15ef97767e63120820" + integrity sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q== + dependencies: + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/highlight@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fhighlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" + integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== + dependencies: + "@babel/helper-validator-identifier" "^7.22.5" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fparser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea" + integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha1-qYP7Gusuw/btBCohD2QOkOeG/g0= + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha1-TJpvZp9dDN8bkKFnHpoUa+UwDOo= + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA= + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha1-7mATSMNw+jNNIge+FYd3SWUh/VE= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo= + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha1-ypHvRjA1MESLkGZSusLp/plB9pk= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak= + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE= + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha1-YRGiZbz7Ag6579D9/X0mQCue1sE= + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io= + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha1-wc/a3DWmRiQAAfBhOCR7dBw02Uw= + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2fplugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/template@^7.22.5", "@babel/template@^7.3.3": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2ftemplate/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" + integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/parser" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/traverse@^7.22.5", "@babel/traverse@^7.7.2": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2ftraverse/-/traverse-7.22.5.tgz#44bd276690db6f4940fdb84e1cb4abd2f729ccd1" + integrity sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.5" + "@babel/parser" "^7.22.5" + "@babel/types" "^7.22.5" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.3.3": + version "7.22.5" + resolved "https://nac.kucoin.com:1149/@babel%2ftypes/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" + integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://nac.kucoin.com:1149/@bcoe%2fv8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha1-daLotRy3WKdVPWgEpZMteqznXDk= + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://nac.kucoin.com:1149/@istanbuljs%2fload-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha1-/T2x1Z7PfPEh6AZQu4ZxL5tV7O0= + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://nac.kucoin.com:1149/@istanbuljs%2fschema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha1-5F44TkuOwWvOL9kDr3hFD2v37Jg= + +"@jest/console@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2fconsole/-/console-29.5.0.tgz#593a6c5c0d3f75689835f1b3b4688c4f8544cb57" + integrity sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + slash "^3.0.0" + +"@jest/core@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2fcore/-/core-29.5.0.tgz#76674b96904484e8214614d17261cc491e5f1f03" + integrity sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/reporters" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.5.0" + jest-config "^29.5.0" + jest-haste-map "^29.5.0" + jest-message-util "^29.5.0" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-resolve-dependencies "^29.5.0" + jest-runner "^29.5.0" + jest-runtime "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + jest-watcher "^29.5.0" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2fenvironment/-/environment-29.5.0.tgz#9152d56317c1fdb1af389c46640ba74ef0bb4c65" + integrity sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ== + dependencies: + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-mock "^29.5.0" + +"@jest/expect-utils@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2fexpect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" + integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== + dependencies: + jest-get-type "^29.4.3" + +"@jest/expect@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2fexpect/-/expect-29.5.0.tgz#80952f5316b23c483fbca4363ce822af79c38fba" + integrity sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g== + dependencies: + expect "^29.5.0" + jest-snapshot "^29.5.0" + +"@jest/fake-timers@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2ffake-timers/-/fake-timers-29.5.0.tgz#d4d09ec3286b3d90c60bdcd66ed28d35f1b4dc2c" + integrity sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg== + dependencies: + "@jest/types" "^29.5.0" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.5.0" + jest-mock "^29.5.0" + jest-util "^29.5.0" + +"@jest/globals@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2fglobals/-/globals-29.5.0.tgz#6166c0bfc374c58268677539d0c181f9c1833298" + integrity sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/expect" "^29.5.0" + "@jest/types" "^29.5.0" + jest-mock "^29.5.0" + +"@jest/reporters@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2freporters/-/reporters-29.5.0.tgz#985dfd91290cd78ddae4914ba7921bcbabe8ac9b" + integrity sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + jest-worker "^29.5.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://nac.kucoin.com:1149/@jest%2fschemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + +"@jest/source-map@^29.4.3": + version "29.4.3" + resolved "https://nac.kucoin.com:1149/@jest%2fsource-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" + integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.15" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2ftest-result/-/test-result-29.5.0.tgz#7c856a6ca84f45cc36926a4e9c6b57f1973f1408" + integrity sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2ftest-sequencer/-/test-sequencer-29.5.0.tgz#34d7d82d3081abd523dbddc038a3ddcb9f6d3cc4" + integrity sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ== + dependencies: + "@jest/test-result" "^29.5.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + slash "^3.0.0" + +"@jest/transform@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2ftransform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" + integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.5.0": + version "29.5.0" + resolved "https://nac.kucoin.com:1149/@jest%2ftypes/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" + integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== + dependencies: + "@jest/schemas" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://nac.kucoin.com:1149/@jridgewell%2fgen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://nac.kucoin.com:1149/@jridgewell%2fresolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://nac.kucoin.com:1149/@jridgewell%2fset-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://nac.kucoin.com:1149/@jridgewell%2fsourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://nac.kucoin.com:1149/@jridgewell%2fsourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://nac.kucoin.com:1149/@jridgewell%2ftrace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@sinclair/typebox@^0.25.16": + version "0.25.24" + resolved "https://nac.kucoin.com:1149/@sinclair%2ftypebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== + +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://nac.kucoin.com:1149/@sinonjs%2fcommons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://nac.kucoin.com:1149/@sinonjs%2ffake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@types/babel__core@^7.1.14": + version "7.20.1" + resolved "https://nac.kucoin.com:1149/@types%2fbabel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" + integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://nac.kucoin.com:1149/@types%2fbabel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://nac.kucoin.com:1149/@types%2fbabel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha1-PRpI/Z1sDt/Vby/1eNrtSPNsiWk= + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.1" + resolved "https://nac.kucoin.com:1149/@types%2fbabel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" + integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== + dependencies: + "@babel/types" "^7.20.7" + "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/graceful-fs@^4.1.3": + version "4.1.6" + resolved "https://nac.kucoin.com:1149/@types%2fgraceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://nac.kucoin.com:1149/@types%2fistanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://nac.kucoin.com:1149/@types%2fistanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha1-wUwk8Y6oGQwRjudWK3/5mjZVJoY= + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://nac.kucoin.com:1149/@types%2fistanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha1-kVP+mLuivVZaY63ZQ21vDX+EaP8= + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/node@*": + version "20.3.1" + resolved "https://nac.kucoin.com:1149/@types%2fnode/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe" + integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg== + +"@types/prettier@^2.1.5": + version "2.7.3" + resolved "https://nac.kucoin.com:1149/@types%2fprettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://nac.kucoin.com:1149/@types%2fstack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha1-IPGClPeX8iCbX2XI47XI6CYdEnw= + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://nac.kucoin.com:1149/@types%2fyargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.8": + version "17.0.24" + resolved "https://nac.kucoin.com:1149/@types%2fyargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + dependencies: + "@types/yargs-parser" "*" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -19,6 +666,13 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://nac.kucoin.com:1149/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + ansi-escapes@^4.3.0: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" @@ -36,6 +690,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://nac.kucoin.com:1149/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -51,6 +710,18 @@ ansi-styles@^4.0.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://nac.kucoin.com:1149/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://nac.kucoin.com:1149/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -59,6 +730,21 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@^3.0.3: + version "3.1.3" + resolved "https://nac.kucoin.com:1149/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://nac.kucoin.com:1149/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -99,6 +785,66 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +babel-jest@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" + integrity sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q== + dependencies: + "@jest/transform" "^29.5.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.5.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://nac.kucoin.com:1149/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" + integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://nac.kucoin.com:1149/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" + integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg== + dependencies: + babel-plugin-jest-hoist "^29.5.0" + babel-preset-current-node-syntax "^1.0.0" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -166,6 +912,35 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.2: + version "3.0.2" + resolved "https://nac.kucoin.com:1149/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.21.3: + version "4.21.9" + resolved "https://nac.kucoin.com:1149/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" + integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== + dependencies: + caniuse-lite "^1.0.30001503" + electron-to-chromium "^1.4.431" + node-releases "^2.0.12" + update-browserslist-db "^1.0.11" + +bser@2.1.1: + version "2.1.1" + resolved "https://nac.kucoin.com:1149/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://nac.kucoin.com:1149/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -181,17 +956,37 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +callsites@^3.0.0: + version "3.1.0" + resolved "https://nac.kucoin.com:1149/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + camelcase@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +camelcase@^5.3.1: + version "5.3.1" + resolved "https://nac.kucoin.com:1149/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://nac.kucoin.com:1149/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001503: + version "1.0.30001507" + resolved "https://nac.kucoin.com:1149/caniuse-lite/-/caniuse-lite-1.0.30001507.tgz#fae53f6286e7564783eadea9b447819410a59534" + integrity sha512-SFpUDoSLCaE5XYL2jfqe9ova/pbQHEmbheDf5r4diNwbAgR3qxM9NQtfsiSscjqoya5K7kFcHPUQ+VsUkIJR4A== + capture-stack-trace@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== -chalk@^2.0.1: +chalk@^2.0.0, chalk@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -200,6 +995,19 @@ chalk@^2.0.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0: + version "4.1.2" + resolved "https://nac.kucoin.com:1149/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://nac.kucoin.com:1149/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + charenc@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -229,6 +1037,16 @@ ci-info@^1.5.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== +ci-info@^3.2.0: + version "3.8.0" + resolved "https://nac.kucoin.com:1149/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://nac.kucoin.com:1149/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -251,6 +1069,25 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://nac.kucoin.com:1149/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://nac.kucoin.com:1149/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://nac.kucoin.com:1149/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -305,6 +1142,16 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" +convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://nac.kucoin.com:1149/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://nac.kucoin.com:1149/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -346,7 +1193,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.1: +cross-spawn@^7.0.1, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -387,16 +1234,33 @@ debug@^3.2.6: dependencies: ms "^2.1.1" +debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://nac.kucoin.com:1149/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +dedent@^0.7.0: + version "0.7.0" + resolved "https://nac.kucoin.com:1149/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://nac.kucoin.com:1149/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -426,6 +1290,16 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://nac.kucoin.com:1149/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://nac.kucoin.com:1149/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== + dot-prop@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" @@ -445,11 +1319,28 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +electron-to-chromium@^1.4.431: + version "1.4.440" + resolved "https://nac.kucoin.com:1149/electron-to-chromium/-/electron-to-chromium-1.4.440.tgz#d3b1eeb36b717eb479a240c0406ac1fa67901762" + integrity sha512-r6dCgNpRhPwiWlxbHzZQ/d9swfPaEJGi8ekqRBwQYaR3WmA5VkqQfBWSDDjuJU1ntO+W9tHx8OHV/96Q8e0dVw== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://nac.kucoin.com:1149/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://nac.kucoin.com:1149/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" @@ -476,11 +1367,26 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" +escalade@^3.1.1: + version "3.1.1" + resolved "https://nac.kucoin.com:1149/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://nac.kucoin.com:1149/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://nac.kucoin.com:1149/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + event-emitter@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" @@ -502,6 +1408,26 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^5.0.0: + version "5.1.1" + resolved "https://nac.kucoin.com:1149/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://nac.kucoin.com:1149/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -515,6 +1441,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expect@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" + integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== + dependencies: + "@jest/expect-utils" "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + ext@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" @@ -551,6 +1488,18 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://nac.kucoin.com:1149/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://nac.kucoin.com:1149/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -566,6 +1515,21 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://nac.kucoin.com:1149/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://nac.kucoin.com:1149/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -578,6 +1542,11 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://nac.kucoin.com:1149/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + fsevents@^1.2.7: version "1.2.13" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" @@ -586,11 +1555,41 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" +fsevents@^2.3.2: + version "2.3.2" + resolved "https://nac.kucoin.com:1149/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://nac.kucoin.com:1149/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://nac.kucoin.com:1149/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://nac.kucoin.com:1149/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://nac.kucoin.com:1149/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +get-stream@^6.0.0: + version "6.0.1" + resolved "https://nac.kucoin.com:1149/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -604,6 +1603,18 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://nac.kucoin.com:1149/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -611,6 +1622,11 @@ global-dirs@^0.1.0: dependencies: ini "^1.3.4" +globals@^11.1.0: + version "11.12.0" + resolved "https://nac.kucoin.com:1149/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -633,11 +1649,21 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://nac.kucoin.com:1149/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://nac.kucoin.com:1149/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -669,6 +1695,23 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has@^1.0.3: + version "1.0.3" + resolved "https://nac.kucoin.com:1149/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://nac.kucoin.com:1149/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://nac.kucoin.com:1149/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -679,12 +1722,28 @@ import-lazy@^2.1.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= +import-local@^3.0.2: + version "3.1.0" + resolved "https://nac.kucoin.com:1149/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -inherits@^2.0.3, inherits@~2.0.3: +inflight@^1.0.4: + version "1.0.6" + resolved "https://nac.kucoin.com:1149/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -708,6 +1767,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://nac.kucoin.com:1149/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -727,6 +1791,13 @@ is-ci@^1.0.10: dependencies: ci-info "^1.5.0" +is-core-module@^2.12.0: + version "2.12.1" + resolved "https://nac.kucoin.com:1149/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -786,6 +1857,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://nac.kucoin.com:1149/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -827,6 +1903,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://nac.kucoin.com:1149/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -861,6 +1942,11 @@ is-stream@^1.0.0, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.1" + resolved "https://nac.kucoin.com:1149/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -888,6 +1974,437 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://nac.kucoin.com:1149/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://nac.kucoin.com:1149/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://nac.kucoin.com:1149/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://nac.kucoin.com:1149/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://nac.kucoin.com:1149/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" + integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== + dependencies: + execa "^5.0.0" + p-limit "^3.1.0" + +jest-circus@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-circus/-/jest-circus-29.5.0.tgz#b5926989449e75bff0d59944bae083c9d7fb7317" + integrity sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/expect" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^29.5.0" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-runtime "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + p-limit "^3.1.0" + pretty-format "^29.5.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-cli/-/jest-cli-29.5.0.tgz#b34c20a6d35968f3ee47a7437ff8e53e086b4a67" + integrity sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw== + dependencies: + "@jest/core" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + prompts "^2.0.1" + yargs "^17.3.1" + +jest-config@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-config/-/jest-config-29.5.0.tgz#3cc972faec8c8aaea9ae158c694541b79f3748da" + integrity sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.5.0" + "@jest/types" "^29.5.0" + babel-jest "^29.5.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.5.0" + jest-environment-node "^29.5.0" + jest-get-type "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-runner "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.5.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" + integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-docblock@^29.4.3: + version "29.4.3" + resolved "https://nac.kucoin.com:1149/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" + integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-each/-/jest-each-29.5.0.tgz#fc6e7014f83eac68e22b7195598de8554c2e5c06" + integrity sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA== + dependencies: + "@jest/types" "^29.5.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + jest-util "^29.5.0" + pretty-format "^29.5.0" + +jest-environment-node@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-environment-node/-/jest-environment-node-29.5.0.tgz#f17219d0f0cc0e68e0727c58b792c040e332c967" + integrity sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-mock "^29.5.0" + jest-util "^29.5.0" + +jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://nac.kucoin.com:1149/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + +jest-haste-map@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" + integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== + dependencies: + "@jest/types" "^29.5.0" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + jest-worker "^29.5.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" + integrity sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow== + dependencies: + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-matcher-utils@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" + integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== + dependencies: + chalk "^4.0.0" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-message-util@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" + integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.5.0" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-mock/-/jest-mock-29.5.0.tgz#26e2172bcc71d8b0195081ff1f146ac7e1518aed" + integrity sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-util "^29.5.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://nac.kucoin.com:1149/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.4.3: + version "29.4.3" + resolved "https://nac.kucoin.com:1149/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" + integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== + +jest-resolve-dependencies@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" + integrity sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg== + dependencies: + jest-regex-util "^29.4.3" + jest-snapshot "^29.5.0" + +jest-resolve@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-resolve/-/jest-resolve-29.5.0.tgz#b053cc95ad1d5f6327f0ac8aae9f98795475ecdc" + integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.5.0" + jest-validate "^29.5.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-runner/-/jest-runner-29.5.0.tgz#6a57c282eb0ef749778d444c1d758c6a7693b6f8" + integrity sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/environment" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.4.3" + jest-environment-node "^29.5.0" + jest-haste-map "^29.5.0" + jest-leak-detector "^29.5.0" + jest-message-util "^29.5.0" + jest-resolve "^29.5.0" + jest-runtime "^29.5.0" + jest-util "^29.5.0" + jest-watcher "^29.5.0" + jest-worker "^29.5.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-runtime/-/jest-runtime-29.5.0.tgz#c83f943ee0c1da7eb91fa181b0811ebd59b03420" + integrity sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/globals" "^29.5.0" + "@jest/source-map" "^29.4.3" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-message-util "^29.5.0" + jest-mock "^29.5.0" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-snapshot/-/jest-snapshot-29.5.0.tgz#c9c1ce0331e5b63cd444e2f95a55a73b84b1e8ce" + integrity sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/babel__traverse" "^7.0.6" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.5.0" + graceful-fs "^4.2.9" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + natural-compare "^1.4.0" + pretty-format "^29.5.0" + semver "^7.3.5" + +jest-util@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" + integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" + integrity sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ== + dependencies: + "@jest/types" "^29.5.0" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + leven "^3.1.0" + pretty-format "^29.5.0" + +jest-watcher@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-watcher/-/jest-watcher-29.5.0.tgz#cf7f0f949828ba65ddbbb45c743a382a4d911363" + integrity sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA== + dependencies: + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.5.0" + string-length "^4.0.1" + +jest-worker@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" + integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== + dependencies: + "@types/node" "*" + jest-util "^29.5.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" + integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ== + dependencies: + "@jest/core" "^29.5.0" + "@jest/types" "^29.5.0" + import-local "^3.0.2" + jest-cli "^29.5.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://nac.kucoin.com:1149/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://nac.kucoin.com:1149/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://nac.kucoin.com:1149/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://nac.kucoin.com:1149/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json5@^2.2.2: + version "2.2.3" + resolved "https://nac.kucoin.com:1149/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -912,6 +2429,11 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +kleur@^3.0.3: + version "3.0.3" + resolved "https://nac.kucoin.com:1149/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" @@ -919,6 +2441,23 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" +leven@^3.1.0: + version "3.1.0" + resolved "https://nac.kucoin.com:1149/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://nac.kucoin.com:1149/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://nac.kucoin.com:1149/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash@^4.17.15: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -952,6 +2491,20 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://nac.kucoin.com:1149/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://nac.kucoin.com:1149/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -959,6 +2512,20 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-dir@^3.0.0: + version "3.1.0" + resolved "https://nac.kucoin.com:1149/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://nac.kucoin.com:1149/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -980,6 +2547,11 @@ md5@^2.2.1: crypt "~0.0.1" is-buffer "~1.1.1" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://nac.kucoin.com:1149/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -999,6 +2571,14 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.4: + version "4.0.5" + resolved "https://nac.kucoin.com:1149/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -1011,6 +2591,13 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimatch@^3.1.1: + version "3.1.2" + resolved "https://nac.kucoin.com:1149/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist@^1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" @@ -1041,7 +2628,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -1068,6 +2655,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://nac.kucoin.com:1149/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -1078,6 +2670,16 @@ node-fetch@^2.6.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +node-int64@^0.4.0: + version "0.4.0" + resolved "https://nac.kucoin.com:1149/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-releases@^2.0.12: + version "2.0.12" + resolved "https://nac.kucoin.com:1149/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" + integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== + node-schedule@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/node-schedule/-/node-schedule-1.3.2.tgz#d774b383e2a6f6ade59eecc62254aea07cd758cb" @@ -1129,6 +2731,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://nac.kucoin.com:1149/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -1157,6 +2766,13 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +once@^1.3.0: + version "1.4.0" + resolved "https://nac.kucoin.com:1149/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + onetime@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" @@ -1164,11 +2780,44 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +onetime@^5.1.2: + version "5.1.2" + resolved "https://nac.kucoin.com:1149/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-limit@^2.2.0: + version "2.3.0" + resolved "https://nac.kucoin.com:1149/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.1.0: + version "3.1.0" + resolved "https://nac.kucoin.com:1149/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://nac.kucoin.com:1149/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://nac.kucoin.com:1149/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" @@ -1179,6 +2828,16 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" +parse-json@^5.2.0: + version "5.2.0" + resolved "https://nac.kucoin.com:1149/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -1189,6 +2848,11 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://nac.kucoin.com:1149/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -1204,16 +2868,43 @@ path-key@^2.0.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://nac.kucoin.com:1149/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://nac.kucoin.com:1149/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://nac.kucoin.com:1149/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pirates@^4.0.4: + version "4.0.6" + resolved "https://nac.kucoin.com:1149/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://nac.kucoin.com:1149/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -1224,11 +2915,28 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +pretty-format@^29.5.0: + version "29.5.0" + resolved "https://nac.kucoin.com:1149/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" + integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +prompts@^2.0.1: + version "2.4.2" + resolved "https://nac.kucoin.com:1149/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -1239,6 +2947,11 @@ pstree.remy@^1.1.7: resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== +pure-rand@^6.0.0: + version "6.0.2" + resolved "https://nac.kucoin.com:1149/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" + integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== + rc@^1.0.1, rc@^1.1.6: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -1249,6 +2962,11 @@ rc@^1.0.1, rc@^1.1.6: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-is@^18.0.0: + version "18.2.0" + resolved "https://nac.kucoin.com:1149/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + readable-stream@^2.0.2: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -1309,11 +3027,42 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +require-directory@^2.1.1: + version "2.1.1" + resolved "https://nac.kucoin.com:1149/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://nac.kucoin.com:1149/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://nac.kucoin.com:1149/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://nac.kucoin.com:1149/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.20.0: + version "1.22.3" + resolved "https://nac.kucoin.com:1149/resolve/-/resolve-1.22.3.tgz#4b4055349ffb962600972da1fdc33c46a4eb3283" + integrity sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw== + dependencies: + is-core-module "^2.12.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -1356,6 +3105,18 @@ semver@^5.0.3, semver@^5.1.0, semver@^5.7.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://nac.kucoin.com:1149/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.5: + version "7.5.3" + resolved "https://nac.kucoin.com:1149/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" + integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== + dependencies: + lru-cache "^6.0.0" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -1395,6 +3156,21 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://nac.kucoin.com:1149/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://nac.kucoin.com:1149/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://nac.kucoin.com:1149/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -1450,6 +3226,14 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" +source-map-support@0.5.13: + version "0.5.13" + resolved "https://nac.kucoin.com:1149/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -1460,6 +3244,11 @@ source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://nac.kucoin.com:1149/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -1467,6 +3256,18 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://nac.kucoin.com:1149/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://nac.kucoin.com:1149/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -1475,6 +3276,14 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +string-length@^4.0.1: + version "4.0.2" + resolved "https://nac.kucoin.com:1149/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -1492,6 +3301,15 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://nac.kucoin.com:1149/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -1513,11 +3331,33 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://nac.kucoin.com:1149/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://nac.kucoin.com:1149/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://nac.kucoin.com:1149/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://nac.kucoin.com:1149/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -1530,6 +3370,25 @@ supports-color@^5.3.0, supports-color@^5.5.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://nac.kucoin.com:1149/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://nac.kucoin.com:1149/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://nac.kucoin.com:1149/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -1537,11 +3396,30 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://nac.kucoin.com:1149/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= +tmpl@1.0.5: + version "1.0.5" + resolved "https://nac.kucoin.com:1149/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://nac.kucoin.com:1149/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -1557,6 +3435,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://nac.kucoin.com:1149/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -1574,11 +3459,21 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" +type-detect@4.0.8: + version "4.0.8" + resolved "https://nac.kucoin.com:1149/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://nac.kucoin.com:1149/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + type@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" @@ -1631,6 +3526,14 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://nac.kucoin.com:1149/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + update-notifier@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" @@ -1674,6 +3577,22 @@ uuid@^8.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e" integrity sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q== +v8-to-istanbul@^9.0.1: + version "9.1.0" + resolved "https://nac.kucoin.com:1149/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://nac.kucoin.com:1149/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -1704,6 +3623,20 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://nac.kucoin.com:1149/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://nac.kucoin.com:1149/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + write-file-atomic@^2.0.0: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" @@ -1713,6 +3646,14 @@ write-file-atomic@^2.0.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://nac.kucoin.com:1149/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + ws@^7.3.1: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" @@ -1723,7 +3664,45 @@ xdg-basedir@^3.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= +y18n@^5.0.5: + version "5.0.8" + resolved "https://nac.kucoin.com:1149/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.2: + version "3.1.1" + resolved "https://nac.kucoin.com:1149/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://nac.kucoin.com:1149/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://nac.kucoin.com:1149/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.2" + resolved "https://nac.kucoin.com:1149/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://nac.kucoin.com:1149/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==