v3.9.9: feat() support demo trading apis

This commit is contained in:
tiagosiebler
2024-04-09 17:47:46 +01:00
parent 185f02aa10
commit cc362c469b
9 changed files with 160 additions and 22 deletions

View File

@@ -13,6 +13,11 @@ export interface RestClientOptions {
/** Set to `true` to connect to testnet. Uses the live environment by default. */
testnet?: boolean;
/**
* Set to `true` to use Bybit's V5 demo trading: https://bybit-exchange.github.io/docs/v5/demo
*/
demoTrading?: boolean;
/** Override the max size of the request window (in ms) */
recv_window?: number;
@@ -92,15 +97,20 @@ export function serializeParams(
export function getRestBaseUrl(
useTestnet: boolean,
restInverseOptions: RestClientOptions,
restClientOptions: RestClientOptions,
): string {
const exchangeBaseUrls = {
livenet: 'https://api.bybit.com',
testnet: 'https://api-testnet.bybit.com',
demoLivenet: 'https://api-demo.bybit.com',
};
if (restInverseOptions.baseUrl) {
return restInverseOptions.baseUrl;
if (restClientOptions.baseUrl) {
return restClientOptions.baseUrl;
}
if (restClientOptions.demoTrading) {
return exchangeBaseUrls.demoLivenet;
}
if (useTestnet) {

View File

@@ -1,6 +1,6 @@
import WebSocket from 'isomorphic-ws';
import { APIMarket, CategoryV5, WsKey } from '../types';
import { APIMarket, CategoryV5, WebsocketClientOptions, WsKey } from '../types';
import { DefaultLogger } from './logger';
interface NetworkMapV3 {
@@ -398,14 +398,21 @@ export function getWsKeyForTopic(
export function getWsUrl(
wsKey: WsKey,
wsUrl: string | undefined,
isTestnet: boolean,
wsClientOptions: WebsocketClientOptions,
logger: typeof DefaultLogger,
): string {
const wsUrl = wsClientOptions.wsUrl;
if (wsUrl) {
return wsUrl;
}
// https://bybit-exchange.github.io/docs/v5/demo
const isDemoTrading = wsClientOptions.demoTrading;
if (isDemoTrading) {
return 'wss://stream-demo.bybit.com/v5/private';
}
const isTestnet = wsClientOptions.testnet;
const networkKey = isTestnet ? 'testnet' : 'livenet';
switch (wsKey) {