diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 00000000..a228bf0c --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,84 @@ +module.exports = { + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.linting.json', + tsconfigRootDir: __dirname, + sourceType: 'module', + }, + plugins: [ + '@typescript-eslint/eslint-plugin', + // 'simple-import-sort', + // 'require-extensions', + ], + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + // 'plugin:require-extensions/recommended', + ], + root: true, + env: { + node: true, + jest: true, + }, + ignorePatterns: ['.eslintrc.js'], + rules: { + '@typescript-eslint/await-thenable': 'error', + '@typescript-eslint/dot-notation': 'off', + '@typescript-eslint/no-unused-vars': 'warn', + + '@typescript-eslint/no-unused-expressions': 'error', + '@typescript-eslint/no-var-requires': 'error', + '@typescript-eslint/prefer-namespace-keyword': 'error', + + '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/no-floating-promises': 'off', + '@typescript-eslint/no-inferrable-types': 'off', + '@typescript-eslint/promise-function-async': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + + 'no-dupe-class-members': 'off', + 'no-param-reassign': ['error'], + 'array-bracket-spacing': ['error', 'never'], + indent: ['off'], + 'linebreak-style': ['error', 'unix'], + 'lines-between-class-members': ['warn', 'always'], + semi: 'off', + '@typescript-eslint/semi': ['error'], + 'new-cap': 'off', + 'no-console': 'off', + 'no-debugger': 'off', + 'no-mixed-spaces-and-tabs': 2, + 'no-use-before-define': [2, 'nofunc'], + 'no-unreachable': ['warn'], + 'no-unused-vars': ['warn'], + 'no-extra-parens': ['off'], + 'no-mixed-operators': ['off'], + quotes: [2, 'single', 'avoid-escape'], + 'block-scoped-var': 2, + 'brace-style': [2, '1tbs', { allowSingleLine: true }], + 'computed-property-spacing': [2, 'never'], + 'keyword-spacing': 2, + 'space-unary-ops': 2, + 'sort-imports': [ + 'error', + { + ignoreCase: false, + ignoreDeclarationSort: true, + ignoreMemberSort: false, + memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'], + allowSeparatedGroups: false, + }, + ], + 'max-len': ['warn', { code: 140 }], + + // newer rules + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + // 'simple-import-sort/imports': 'error', + // 'simple-import-sort/exports': 'error', + }, +}; diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 2147a384..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "env": { - "es6": true, - "node": true - }, - "extends": ["eslint:recommended"], - "parser": "@typescript-eslint/parser", - "root": true, - "plugins": ["@typescript-eslint"], - "overrides": [ - { - "files": ["**/*.ts", "**/*.tsx"], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended" - ], - "parserOptions": { - "projecasdft": true, - "project": [ - "./tsconfig.json", - "./tsconfig.build.json", - "./tsconfig.examples.json", - "./test/tsconfig.test.json" - ] - }, - "rules": { - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/no-unused-vars": "warn", - - "@typescript-eslint/no-unused-expressions": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-floating-promises": "off", - "@typescript-eslint/no-inferrable-types": "off", - "@typescript-eslint/promise-function-async": "off", - "@typescript-eslint/no-use-before-define": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/ban-types": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/ban-ts-comment": "off", - - "no-dupe-class-members": "off", - "no-param-reassign": ["error"], - "array-bracket-spacing": ["error", "never"], - "indent": ["off"], - "linebreak-style": ["error", "unix"], - "lines-between-class-members": ["warn", "always"], - "semi": "off", - "@typescript-eslint/semi": ["error"], - "new-cap": "off", - "no-console": "off", - "no-debugger": "off", - "no-mixed-spaces-and-tabs": 2, - "no-use-before-define": [2, "nofunc"], - "no-unreachable": ["warn"], - "no-unused-vars": ["warn"], - "no-extra-parens": ["off"], - "no-mixed-operators": ["off"], - "quotes": [2, "single", "avoid-escape"], - "block-scoped-var": 2, - "brace-style": [2, "1tbs", { "allowSingleLine": true }], - "computed-property-spacing": [2, "never"], - "keyword-spacing": 2, - "space-unary-ops": 2, - "sort-imports": [ - "error", - { - "ignoreCase": false, - "ignoreDeclarationSort": true, - "ignoreMemberSort": false, - "memberSyntaxSortOrder": ["none", "all", "multiple", "single"], - "allowSeparatedGroups": false - } - ], - "max-len": ["warn", { "code": 140 }] - } - }, - { - "files": ["examples/*.js"], - "extends": ["eslint:recommended"] - } - ] -} diff --git a/package-lock.json b/package-lock.json index 8bc1d5b1..8a774b6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "bybit-api", - "version": "3.10.23", + "version": "3.10.25", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "bybit-api", - "version": "3.10.23", + "version": "3.10.25", "license": "MIT", "dependencies": { "axios": "^1.6.6", diff --git a/package.json b/package.json index d71a6707..aad37932 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bybit-api", - "version": "3.10.24", + "version": "3.10.25", "description": "Complete & robust Node.js SDK for Bybit's REST APIs and WebSockets, with TypeScript & strong end to end tests.", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/src/copy-trading-client.ts b/src/copy-trading-client.ts index 45f85b94..1fa226f1 100644 --- a/src/copy-trading-client.ts +++ b/src/copy-trading-client.ts @@ -86,7 +86,10 @@ export class CopyTradingClient extends BaseRestClient { ); } - /** Close Order. This endpoint's rate_limit will decrease by 10 per request; ie, one request to this endpoint consumes 10 from the limit allowed per minute. */ + /** Close Order. + * This endpoint's rate_limit will decrease by 10 per request; + * ie, one request to this endpoint consumes 10 from the limit allowed per minute. + */ closeOrder( params: CopyTradingCloseOrderRequest, ): Promise> { diff --git a/src/rest-client-v5.ts b/src/rest-client-v5.ts index 7a776355..1bb0efa5 100644 --- a/src/rest-client-v5.ts +++ b/src/rest-client-v5.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-len */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { APIResponseV3, @@ -242,7 +243,7 @@ export class RestClientV5 extends BaseRestClient { console.log(result); console.log( - `Your approximate latency to exchange server: + `Your approximate latency to exchange server: One way: ${estimatedOneWayLatency}ms. Round trip: ${roundTripTime}ms. `, diff --git a/src/spot-client-v3.ts b/src/spot-client-v3.ts index ddd443ad..4bc1e8f7 100644 --- a/src/spot-client-v3.ts +++ b/src/spot-client-v3.ts @@ -53,7 +53,7 @@ export class SpotClientV3 extends BaseRestClient { getMergedOrderBook( symbol: string, scale?: number, - limit?: number + limit?: number, ): Promise> { return this.get('/spot/v3/public/quote/depth/merged', { symbol, @@ -73,7 +73,7 @@ export class SpotClientV3 extends BaseRestClient { interval: KlineInterval, limit?: number, startTime?: number, - endTime?: number + endTime?: number, ): Promise> { return this.get('/spot/v3/public/quote/kline', { symbol, @@ -124,7 +124,7 @@ export class SpotClientV3 extends BaseRestClient { /** Batch cancel orders */ cancelOrderBatch( - params: SpotCancelOrderBatchRequest + params: SpotCancelOrderBatchRequest, ): Promise> { const orderTypes = params.orderTypes ? params.orderTypes.join(',') @@ -149,7 +149,7 @@ export class SpotClientV3 extends BaseRestClient { symbol?: string, orderId?: string, limit?: number, - orderCategory?: 0 | 1 + orderCategory?: 0 | 1, ): Promise> { return this.getPrivate('/spot/v3/private/open-orders', { symbol, @@ -164,7 +164,7 @@ export class SpotClientV3 extends BaseRestClient { symbol?: string, orderId?: string, limit?: number, - orderCategory?: 0 | 1 + orderCategory?: 0 | 1, ): Promise> { return this.getPrivate('/spot/v3/private/history-orders', { symbol, @@ -224,7 +224,7 @@ export class SpotClientV3 extends BaseRestClient { purchaseLeveragedToken( ltCode: string, ltAmount: string, - serialNo?: string + serialNo?: string, ): Promise> { return this.postPrivate('/spot/v3/private/purchase', { ltCode, @@ -237,7 +237,7 @@ export class SpotClientV3 extends BaseRestClient { redeemLeveragedToken( ltCode: string, ltAmount: string, - serialNo?: string + serialNo?: string, ): Promise> { return this.postPrivate('/spot/v3/private/redeem', { ltCode, @@ -248,7 +248,7 @@ export class SpotClientV3 extends BaseRestClient { /** Get leveraged token purchase/redemption history */ getLeveragedTokenPRHistory( - params?: SpotLeveragedTokenPRHistoryRequest + params?: SpotLeveragedTokenPRHistoryRequest, ): Promise> { return this.getPrivate('/spot/v3/private/record', params); } @@ -262,7 +262,7 @@ export class SpotClientV3 extends BaseRestClient { /** Borrow margin loan */ borrowCrossMarginLoan( coin: string, - qty: string + qty: string, ): Promise> { return this.postPrivate('/spot/v3/private/cross-margin-loan', { coin, @@ -280,7 +280,7 @@ export class SpotClientV3 extends BaseRestClient { /** Query borrowing info */ getCrossMarginBorrowingInfo( - params?: SpotCrossMarginBorrowingInfoRequest + params?: SpotCrossMarginBorrowingInfoRequest, ): Promise> { return this.getPrivate('/spot/v3/private/cross-margin-orders', params); } @@ -297,11 +297,11 @@ export class SpotClientV3 extends BaseRestClient { /** Query repayment history */ getCrossMarginRepaymentHistory( - params?: SpotCrossMarginRepaymentHistoryRequest + params?: SpotCrossMarginRepaymentHistoryRequest, ): Promise> { return this.getPrivate( '/spot/v3/private/cross-margin-repay-history', - params + params, ); } } diff --git a/src/types/request/linear.ts b/src/types/request/linear.ts index 3ec68fe7..4e35455b 100644 --- a/src/types/request/linear.ts +++ b/src/types/request/linear.ts @@ -133,12 +133,12 @@ export interface LinearSetMarginSwitchRequest { export interface LinearSetPositionModeRequest { symbol: string; - mode: typeof linearPositionModeEnum[keyof typeof linearPositionModeEnum]; + mode: (typeof linearPositionModeEnum)[keyof typeof linearPositionModeEnum]; } export interface LinearSetPositionTpSlModeRequest { symbol: string; - tp_sl_mode: typeof positionTpSlModeEnum[keyof typeof positionTpSlModeEnum]; + tp_sl_mode: (typeof positionTpSlModeEnum)[keyof typeof positionTpSlModeEnum]; } export interface LinearSetAddReduceMarginRequest { diff --git a/src/types/v5-shared.ts b/src/types/v5-shared.ts index 1cc8f95a..514111f3 100644 --- a/src/types/v5-shared.ts +++ b/src/types/v5-shared.ts @@ -11,7 +11,6 @@ export type InstrumentStatusV5 = | 'Settling' | 'Delivering' | 'Closed'; - export type MarginTradingV5 = 'none' | 'both' | 'utaOnly' | 'normalSpotOnly'; @@ -156,7 +155,7 @@ export type PositionIdx = 0 | 1 | 2; /** * Position status. - * + * * - 'Normal' * - 'Liq' in the liquidation progress * - 'Adl' in the auto-deleverage progress @@ -175,7 +174,10 @@ export type OptionTypeV5 = 'Call' | 'Put'; export type TradeModeV5 = 0 | 1; export type TPSLModeV5 = 'Full' | 'Partial'; -export type AccountMarginModeV5 = 'ISOLATED_MARGIN' | 'REGULAR_MARGIN' | 'PORTFOLIO_MARGIN'; +export type AccountMarginModeV5 = + | 'ISOLATED_MARGIN' + | 'REGULAR_MARGIN' + | 'PORTFOLIO_MARGIN'; export type UnifiedUpdateStatusV5 = 'FAIL' | 'PROCESS' | 'SUCCESS'; export type AccountTypeV5 = diff --git a/src/types/websocket.events.ts b/src/types/websocket.events.ts index fa06f6e0..8c57f7a3 100644 --- a/src/types/websocket.events.ts +++ b/src/types/websocket.events.ts @@ -60,7 +60,11 @@ export interface WSOrderbookV5 { seq: number; } -export type WSOrderbookEventV5 = WSPublicTopicEventV5; +export type WSOrderbookEventV5 = WSPublicTopicEventV5< + string, + 'delta' | 'snapshot', + WSOrderbookV5[] +>; export interface WSPositionV5 { category: string; @@ -103,7 +107,10 @@ export interface WSPositionV5 { seq: number; } -export type WSPositionEventV5 = WSPrivateTopicEventV5<'position', WSPositionV5[]>; +export type WSPositionEventV5 = WSPrivateTopicEventV5< + 'position', + WSPositionV5[] +>; export interface WSAccountOrderV5 { category: CategoryV5; @@ -155,7 +162,10 @@ export interface WSAccountOrderV5 { updatedTime: string; } -export type WSAccountOrderEventV5 = WSPrivateTopicEventV5<'order', WSAccountOrderV5[]>; +export type WSAccountOrderEventV5 = WSPrivateTopicEventV5< + 'order', + WSAccountOrderV5[] +>; export interface WSExecutionV5 { category: CategoryV5; @@ -190,4 +200,7 @@ export interface WSExecutionV5 { marketUnit: string; } -export type WSExecutionEventV5 = WSPrivateTopicEventV5<'execution', WSExecutionV5[]>; \ No newline at end of file +export type WSExecutionEventV5 = WSPrivateTopicEventV5< + 'execution', + WSExecutionV5[] +>; diff --git a/src/unified-margin-client.ts b/src/unified-margin-client.ts index 049251d1..bbfce4a6 100644 --- a/src/unified-margin-client.ts +++ b/src/unified-margin-client.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-len */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { APIResponseV3, diff --git a/src/usdc-perpetual-client.ts b/src/usdc-perpetual-client.ts index 58ab6904..0c768198 100644 --- a/src/usdc-perpetual-client.ts +++ b/src/usdc-perpetual-client.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-len */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { APIResponseV3, @@ -133,7 +134,10 @@ export class USDCPerpetualClient extends BaseRestClient { ); } - /** Active order parameters (such as quantity, price) and stop order parameters cannot be modified in one request at the same time. Please request modification separately. */ + /** + * Active order parameters (such as quantity, price) and stop order parameters cannot be modified in one request at the same time. + * Please request modification separately. + */ modifyOrder(params: USDCPerpModifyOrderRequest): Promise> { return this.postPrivate( '/perpetual/usdc/openapi/private/v1/replace-order', diff --git a/src/util/WsStore.ts b/src/util/WsStore.ts index 024022d7..9ca4698b 100644 --- a/src/util/WsStore.ts +++ b/src/util/WsStore.ts @@ -71,7 +71,7 @@ export default class WsStore { if (this.hasExistingActiveConnection(key)) { this.logger.warning( 'WsStore setConnection() overwriting existing open connection: ', - this.getWs(key) + this.getWs(key), ); } this.wsState[key] = { @@ -86,7 +86,7 @@ export default class WsStore { const ws = this.getWs(key); this.logger.warning( 'WsStore deleting state for connection still open: ', - ws + ws, ); ws?.close(); } @@ -107,7 +107,7 @@ export default class WsStore { if (this.isWsOpen(key)) { this.logger.warning( 'WsStore setConnection() overwriting existing open connection: ', - this.getWs(key) + this.getWs(key), ); } this.get(key, true)!.ws = wsConnection; diff --git a/src/util/browser-support.ts b/src/util/browser-support.ts index a7e09806..280ce37a 100644 --- a/src/util/browser-support.ts +++ b/src/util/browser-support.ts @@ -1,6 +1,6 @@ export async function signMessage( message: string, - secret: string + secret: string, ): Promise { const encoder = new TextEncoder(); // eslint-disable-next-line no-undef @@ -9,21 +9,21 @@ export async function signMessage( encoder.encode(secret), { name: 'HMAC', hash: { name: 'SHA-256' } }, false, - ['sign'] + ['sign'], ); // eslint-disable-next-line no-undef const signature = await window.crypto.subtle.sign( 'HMAC', key, - encoder.encode(message) + encoder.encode(message), ); return Array.prototype.map .call( new Uint8Array(signature), (x: { toString: (arg0: number) => string }) => - ('00' + x.toString(16)).slice(-2) + ('00' + x.toString(16)).slice(-2), ) .join(''); } diff --git a/src/util/node-support.ts b/src/util/node-support.ts index bbbf8bd0..0d352d72 100644 --- a/src/util/node-support.ts +++ b/src/util/node-support.ts @@ -3,7 +3,7 @@ import { createHmac } from 'crypto'; /** This is async because the browser version uses a promise (browser-support) */ export async function signMessage( message: string, - secret: string + secret: string, ): Promise { return createHmac('sha256', secret).update(message).digest('hex'); } diff --git a/src/util/typeGuards.ts b/src/util/typeGuards.ts index 44308f8e..dbe78ab0 100644 --- a/src/util/typeGuards.ts +++ b/src/util/typeGuards.ts @@ -2,7 +2,12 @@ * Use type guards to narrow down types with minimal efforts. */ -import { WSAccountOrderEventV5, WSExecutionEventV5, WSOrderbookEventV5, WSPositionEventV5 } from '../types/websocket.events'; +import { + WSAccountOrderEventV5, + WSExecutionEventV5, + WSOrderbookEventV5, + WSPositionEventV5, +} from '../types/websocket.events'; /** * Type guard to detect a V5 orderbook event (delta & snapshots) @@ -30,7 +35,7 @@ export function isWsOrderbookEventV5( /** * Type guard to detect a V5 position event. - * + * * @param event * @returns */ @@ -86,4 +91,4 @@ export function isWsExecutionEventV5( } return event['topic'] === 'execution'; -} \ No newline at end of file +} diff --git a/src/websocket-client.ts b/src/websocket-client.ts index 816524ca..1a76fc57 100644 --- a/src/websocket-client.ts +++ b/src/websocket-client.ts @@ -4,18 +4,12 @@ import { EventEmitter } from 'events'; import WebSocket from 'isomorphic-ws'; +import { ContractClient } from './contract-client'; import { InverseClient } from './inverse-client'; import { LinearClient } from './linear-client'; -import { SpotClientV3 } from './spot-client-v3'; +import { RestClientV5 } from './rest-client-v5'; import { SpotClient } from './spot-client'; -import { USDCOptionClient } from './usdc-option-client'; -import { USDCPerpetualClient } from './usdc-perpetual-client'; -import { UnifiedMarginClient } from './unified-margin-client'; -import { ContractClient } from './contract-client'; - -import { signMessage } from './util/node-support'; -import WsStore from './util/WsStore'; - +import { SpotClientV3 } from './spot-client-v3'; import { APIMarket, CategoryV5, @@ -26,7 +20,10 @@ import { WsKey, WsTopic, } from './types'; - +import { WebsocketTopicSubscriptionConfirmationEvent } from './types/ws-events/topic-subscription-confirmation'; +import { UnifiedMarginClient } from './unified-margin-client'; +import { USDCOptionClient } from './usdc-option-client'; +import { USDCPerpetualClient } from './usdc-perpetual-client'; import { DefaultLogger, PUBLIC_WS_KEYS, @@ -44,8 +41,8 @@ import { safeTerminateWs, serializeParams, } from './util'; -import { RestClientV5 } from './rest-client-v5'; -import { WebsocketTopicSubscriptionConfirmationEvent } from './types/ws-events/topic-subscription-confirmation'; +import { signMessage } from './util/node-support'; +import WsStore from './util/WsStore'; const loggerCategory = { category: 'bybit-ws' }; diff --git a/test/response.util.ts b/test/response.util.ts index 9b24a7f8..f107cf23 100644 --- a/test/response.util.ts +++ b/test/response.util.ts @@ -47,7 +47,7 @@ export function successEmptyResponseObjectV3() { export function errorResponseObject( result: null | any = null, ret_code: number, - ret_msg: string + ret_msg: string, ) { return { result, @@ -58,7 +58,7 @@ export function errorResponseObject( export function errorResponseObjectV3( result: null | any = null, - retCode: number + retCode: number, ) { return { result, diff --git a/test/v5/private.read.test.ts b/test/v5/private.read.test.ts index 72820812..5161550b 100644 --- a/test/v5/private.read.test.ts +++ b/test/v5/private.read.test.ts @@ -1,6 +1,6 @@ import { API_ERROR_CODE, RestClientV5 } from '../../src'; -import { successResponseObjectV3 } from '../response.util'; import { getTestProxy } from '../proxy.util'; +import { successResponseObjectV3 } from '../response.util'; describe('Private READ V5 REST API Endpoints', () => { const API_KEY = process.env.API_KEY_COM; @@ -22,6 +22,7 @@ describe('Private READ V5 REST API Endpoints', () => { const settleCoin = 'USDT'; const linearSymbol = 'BTCUSDT'; + const accountType = 'UNIFIED'; describe('misc endpoints', () => { it('fetchServerTime()', async () => { @@ -84,21 +85,19 @@ describe('Private READ V5 REST API Endpoints', () => { describe('Account APIs', () => { it('getWalletBalance()', async () => { expect( - await api.getWalletBalance({ accountType: 'CONTRACT' }), + await api.getWalletBalance({ accountType: accountType }), ).toMatchObject({ ...successResponseObjectV3() }); }); it('getBorrowHistory()', async () => { expect(await api.getBorrowHistory()).toMatchObject({ ...successResponseObjectV3(), - retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, }); }); it('getCollateralInfo()', async () => { expect(await api.getCollateralInfo()).toMatchObject({ ...successResponseObjectV3(), - retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, }); }); @@ -127,7 +126,7 @@ describe('Private READ V5 REST API Endpoints', () => { it('getTransactionLog()', async () => { expect(await api.getTransactionLog()).toMatchObject({ ...successResponseObjectV3(), - retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, + // retMsg: '', }); }); @@ -151,7 +150,7 @@ describe('Private READ V5 REST API Endpoints', () => { expect(await api.getDeliveryRecord({ category: 'option' })).toMatchObject( { ...successResponseObjectV3(), - retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, + // retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, }, ); }); @@ -161,7 +160,7 @@ describe('Private READ V5 REST API Endpoints', () => { await api.getSettlementRecords({ category: 'linear' }), ).toMatchObject({ ...successResponseObjectV3(), - retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, + // retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, }); }); @@ -173,13 +172,19 @@ describe('Private READ V5 REST API Endpoints', () => { it('getAllCoinsBalance()', async () => { expect( - await api.getAllCoinsBalance({ accountType: 'SPOT' }), - ).toMatchObject({ ...successResponseObjectV3() }); + await api.getAllCoinsBalance({ accountType: accountType }), + ).toMatchObject({ + ...successResponseObjectV3(), + // retMsg: '', + }); }); it('getCoinBalance()', async () => { expect( - await api.getCoinBalance({ accountType: 'SPOT', coin: settleCoin }), + await api.getCoinBalance({ + accountType: accountType, + coin: settleCoin, + }), ).toMatchObject({ ...successResponseObjectV3() }); }); diff --git a/test/v5/private.write.test.ts b/test/v5/private.write.test.ts index c228245b..d1151165 100644 --- a/test/v5/private.write.test.ts +++ b/test/v5/private.write.test.ts @@ -199,7 +199,8 @@ describe('Private WRITE V5 REST API Endpoints', () => { }); }); - it('switchIsolatedMargin()', async () => { + // Not compatible with account mode + it.skip('switchIsolatedMargin()', async () => { expect( await api.switchIsolatedMargin({ category: 'linear', @@ -211,7 +212,7 @@ describe('Private WRITE V5 REST API Endpoints', () => { }), ).toMatchObject({ // ...successResponseObjectV3(), - // retMsg: '', + retMsg: '', retCode: API_ERROR_CODE.V5_CROSS_ISOLATED_MARGIN_NOT_CHANGED, }); }); @@ -275,7 +276,8 @@ describe('Private WRITE V5 REST API Endpoints', () => { }); }); - it('setAutoAddMargin()', async () => { + // Not compatible with account mode + it.skip('setAutoAddMargin()', async () => { expect( await api.setAutoAddMargin({ category: 'linear', @@ -284,8 +286,8 @@ describe('Private WRITE V5 REST API Endpoints', () => { positionIdx: 0, }), ).toMatchObject({ - // ...successResponseObjectV3(), - // retMsg: '', + ...successResponseObjectV3(), + retMsg: '', retCode: API_ERROR_CODE.V5_AUTO_ADD_MARGIN_NOT_CHANGED, }); }); @@ -294,9 +296,9 @@ describe('Private WRITE V5 REST API Endpoints', () => { describe('Account APIs', () => { it('setMarginMode()', async () => { expect(await api.setMarginMode('REGULAR_MARGIN')).toMatchObject({ - // ...successResponseObjectV3(), + ...successResponseObjectV3(), // retMsg: '', - retCode: API_ERROR_CODE.V5_MARGIN_MODE_NOT_CHANGED, + // retCode: API_ERROR_CODE.V5_MARGIN_MODE_NOT_CHANGED, }); }); @@ -468,17 +470,17 @@ describe('Private WRITE V5 REST API Endpoints', () => { describe('Spot Margin APIs', () => { it('toggleSpotMarginTrade()', async () => { expect(await api.toggleSpotMarginTrade('1')).toMatchObject({ - // ...successResponseObjectV3(), + ...successResponseObjectV3(), // retMsg: '', - retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, + // retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, }); }); it('setSpotMarginLeverage()', async () => { expect(await api.setSpotMarginLeverage('2')).toMatchObject({ - // ...successResponseObjectV3(), + ...successResponseObjectV3(), // retMsg: '', - retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, + // retCode: API_ERROR_CODE.INCORRECT_API_KEY_PERMISSIONS, }); }); }); diff --git a/tsconfig.linting.json b/tsconfig.linting.json new file mode 100644 index 00000000..cc3794b2 --- /dev/null +++ b/tsconfig.linting.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "target": "esnext", + "rootDir": "../", + "allowJs": true + }, + "include": [ + "src/**/*.*", + "test/**/*.*", + "examples/**/*.*", + ".eslintrc.cjs", + "jest.config.ts" + ] +}