bybit-api 3.1.2 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/lib/constants/enum.d.ts +7 -0
- package/lib/constants/enum.js +7 -0
- package/lib/constants/enum.js.map +1 -1
- package/lib/contract-client.d.ts +118 -0
- package/lib/contract-client.js +233 -0
- package/lib/contract-client.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/request/contract.d.ts +115 -0
- package/lib/types/request/contract.js +3 -0
- package/lib/types/request/contract.js.map +1 -0
- package/lib/types/request/index.d.ts +1 -0
- package/lib/types/request/index.js +1 -0
- package/lib/types/request/index.js.map +1 -1
- package/lib/types/shared.d.ts +2 -1
- package/lib/types/websockets.d.ts +1 -1
- package/lib/usdc-perpetual-client.js +1 -0
- package/lib/usdc-perpetual-client.js.map +1 -1
- package/lib/util/BaseRestClient.d.ts +1 -1
- package/lib/util/BaseRestClient.js +8 -5
- package/lib/util/BaseRestClient.js.map +1 -1
- package/lib/util/requestUtils.d.ts +8 -1
- package/lib/util/requestUtils.js +12 -3
- package/lib/util/requestUtils.js.map +1 -1
- package/lib/util/websocket-util.d.ts +4 -0
- package/lib/util/websocket-util.js +46 -1
- package/lib/util/websocket-util.js.map +1 -1
- package/lib/websocket-client.d.ts +6 -1
- package/lib/websocket-client.js +77 -19
- package/lib/websocket-client.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,6 +20,7 @@ const BaseRestClient_1 = __importDefault(require("./util/BaseRestClient"));
|
|
|
20
20
|
*/
|
|
21
21
|
class USDCPerpetualClient extends BaseRestClient_1.default {
|
|
22
22
|
getClientType() {
|
|
23
|
+
// Follows the same authentication mechanism as other v3 APIs (e.g. USDC)
|
|
23
24
|
return util_1.REST_CLIENT_TYPE_ENUM.v3;
|
|
24
25
|
}
|
|
25
26
|
fetchServerTime() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usdc-perpetual-client.js","sourceRoot":"","sources":["../src/usdc-perpetual-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"usdc-perpetual-client.js","sourceRoot":"","sources":["../src/usdc-perpetual-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export default abstract class BaseRestClient {
|
|
|
19
19
|
* @param {AxiosRequestConfig} [networkOptions={}] HTTP networking options for axios
|
|
20
20
|
*/
|
|
21
21
|
constructor(restOptions?: RestClientOptions, networkOptions?: AxiosRequestConfig);
|
|
22
|
-
private
|
|
22
|
+
private isSpotV1Client;
|
|
23
23
|
get(endpoint: string, params?: any): Promise<any>;
|
|
24
24
|
getPrivate(endpoint: string, params?: any): Promise<any>;
|
|
25
25
|
post(endpoint: string, params?: any): Promise<any>;
|
|
@@ -48,7 +48,7 @@ class BaseRestClient {
|
|
|
48
48
|
setInterval(this.syncTime.bind(this), +this.options.sync_interval_ms);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
|
|
51
|
+
isSpotV1Client() {
|
|
52
52
|
return this.clientType === requestUtils_1.REST_CLIENT_TYPE_ENUM.spot;
|
|
53
53
|
}
|
|
54
54
|
get(endpoint, params) {
|
|
@@ -112,7 +112,7 @@ class BaseRestClient {
|
|
|
112
112
|
return Object.assign(Object.assign({}, options), { data: signResult.originalParams });
|
|
113
113
|
}
|
|
114
114
|
const signResult = yield this.prepareSignParams(method, 'keyInBody', params, isPublicApi);
|
|
115
|
-
if (method === 'GET' || this.
|
|
115
|
+
if (method === 'GET' || this.isSpotV1Client()) {
|
|
116
116
|
return Object.assign(Object.assign({}, options), { params: signResult.paramsWithSign });
|
|
117
117
|
}
|
|
118
118
|
return Object.assign(Object.assign({}, options), { data: signResult.paramsWithSign });
|
|
@@ -187,11 +187,13 @@ class BaseRestClient {
|
|
|
187
187
|
res.recvWindow = recvWindow;
|
|
188
188
|
// usdc is different for some reason
|
|
189
189
|
if (signMethod === 'usdc') {
|
|
190
|
+
const sortProperties = false;
|
|
190
191
|
const signRequestParams = method === 'GET'
|
|
191
|
-
? requestUtils_1.serializeParams(res.originalParams, strictParamValidation)
|
|
192
|
+
? requestUtils_1.serializeParams(res.originalParams, strictParamValidation, sortProperties)
|
|
192
193
|
: JSON.stringify(res.originalParams);
|
|
193
194
|
const paramsStr = timestamp + key + recvWindow + signRequestParams;
|
|
194
195
|
res.sign = yield node_support_1.signMessage(paramsStr, this.secret);
|
|
196
|
+
// console.log('sign req: ', paramsStr);
|
|
195
197
|
return res;
|
|
196
198
|
}
|
|
197
199
|
// spot/v2 derivatives
|
|
@@ -200,14 +202,15 @@ class BaseRestClient {
|
|
|
200
202
|
res.originalParams.timestamp = timestamp;
|
|
201
203
|
// Optional, set to 5000 by default. Increase if timestamp/recv_window errors are seen.
|
|
202
204
|
if (recvWindow) {
|
|
203
|
-
if (this.
|
|
205
|
+
if (this.isSpotV1Client()) {
|
|
204
206
|
res.originalParams.recvWindow = recvWindow;
|
|
205
207
|
}
|
|
206
208
|
else {
|
|
207
209
|
res.originalParams.recv_window = recvWindow;
|
|
208
210
|
}
|
|
209
211
|
}
|
|
210
|
-
|
|
212
|
+
const sortProperties = true;
|
|
213
|
+
res.serializedParams = requestUtils_1.serializeParams(res.originalParams, strictParamValidation, sortProperties);
|
|
211
214
|
res.sign = yield node_support_1.signMessage(res.serializedParams, this.secret);
|
|
212
215
|
res.paramsWithSign = Object.assign(Object.assign({}, res.originalParams), { sign: res.sign });
|
|
213
216
|
return res;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseRestClient.js","sourceRoot":"","sources":["../../src/util/BaseRestClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAAyE;AAEzE,iDAA6C;AAC7C,iDAOwB;AAoCxB,MAA8B,cAAc;IAgB1C;;;;OAIG;IACH,YACE,cAAiC,EAAE,EACnC,iBAAqC,EAAE;QAtBjC,eAAU,GAAkB,IAAI,CAAC;QACjC,oBAAe,GAAwB,IAAI,CAAC;QAuBlD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEvC,IAAI,CAAC,OAAO,mBACV,WAAW,EAAE,IAAI;YACjB,mDAAmD;YACnD,uBAAuB,EAAE,KAAK;YAC9B,mCAAmC;YACnC,gBAAgB,EAAE,KAAK;YACvB,gFAAgF;YAChF,gBAAgB,EAAE,OAAO,IACtB,WAAW,CACf,CAAC;QAEF,IAAI,CAAC,oBAAoB;YACvB,gCAAgC;YAChC,OAAO,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC,IAEnB,cAAc,KACjB,OAAO,EAAE;gBACP,WAAW,EAAE,oBAAK;aACnB,GACF,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,6BAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAElC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC5B,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;SACH;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAiB,CAAC,CAAC;SACxE;IACH,CAAC;IAEO,
|
|
1
|
+
{"version":3,"file":"BaseRestClient.js","sourceRoot":"","sources":["../../src/util/BaseRestClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,14 @@ export interface RestClientOptions {
|
|
|
21
21
|
/** Default: true. whether to try and post-process request exceptions. */
|
|
22
22
|
parse_exceptions?: boolean;
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Serialise a (flat) object into a query string
|
|
26
|
+
* @param params the object to serialise
|
|
27
|
+
* @param strict_validation throw if any properties are undefined
|
|
28
|
+
* @param sortProperties sort properties alphabetically before building a query string
|
|
29
|
+
* @returns the params object as a serialised string key1=value1&key2=value2&etc
|
|
30
|
+
*/
|
|
31
|
+
export declare function serializeParams(params?: object, strict_validation?: boolean, sortProperties?: boolean): string;
|
|
25
32
|
export declare function getRestBaseUrl(useTestnet: boolean, restInverseOptions: RestClientOptions): string;
|
|
26
33
|
export declare function isWsPong(msg: any): boolean;
|
|
27
34
|
export declare const APIID = "bybitapinode";
|
package/lib/util/requestUtils.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.REST_CLIENT_TYPE_ENUM = exports.APIID = exports.isWsPong = exports.getRestBaseUrl = exports.serializeParams = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Serialise a (flat) object into a query string
|
|
6
|
+
* @param params the object to serialise
|
|
7
|
+
* @param strict_validation throw if any properties are undefined
|
|
8
|
+
* @param sortProperties sort properties alphabetically before building a query string
|
|
9
|
+
* @returns the params object as a serialised string key1=value1&key2=value2&etc
|
|
10
|
+
*/
|
|
11
|
+
function serializeParams(params = {}, strict_validation = false, sortProperties = true) {
|
|
12
|
+
const properties = sortProperties
|
|
13
|
+
? Object.keys(params).sort()
|
|
14
|
+
: Object.keys(params);
|
|
15
|
+
return properties
|
|
7
16
|
.map((key) => {
|
|
8
17
|
const value = params[key];
|
|
9
18
|
if (strict_validation === true && typeof value === 'undefined') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestUtils.js","sourceRoot":"","sources":["../../src/util/requestUtils.ts"],"names":[],"mappings":";;;AAgCA,SAAgB,eAAe,CAC7B,SAAiB,EAAE,EACnB,iBAAiB,GAAG,KAAK;
|
|
1
|
+
{"version":3,"file":"requestUtils.js","sourceRoot":"","sources":["../../src/util/requestUtils.ts"],"names":[],"mappings":";;;AAgCA;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,SAAiB,EAAE,EACnB,iBAAiB,GAAG,KAAK,EACzB,cAAc,GAAG,IAAI;IAErB,MAAM,UAAU,GAAG,cAAc;QAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;QAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,UAAU;SACd,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,iBAAiB,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAC9D,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;SACH;QACD,OAAO,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IAC3B,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AApBD,0CAoBC;AAED,SAAgB,cAAc,CAC5B,UAAmB,EACnB,kBAAqC;IAErC,MAAM,gBAAgB,GAAG;QACvB,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,+BAA+B;KACzC,CAAC;IAEF,IAAI,kBAAkB,CAAC,OAAO,EAAE;QAC9B,OAAO,kBAAkB,CAAC,OAAO,CAAC;KACnC;IAED,IAAI,UAAU,EAAE;QACd,OAAO,gBAAgB,CAAC,OAAO,CAAC;KACjC;IAED,OAAO,gBAAgB,CAAC,OAAO,CAAC;AAClC,CAAC;AAlBD,wCAkBC;AAED,SAAgB,QAAQ,CAAC,GAAQ;IAC/B,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,KAAK,CAAC;KACd;IACD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;QACxB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;QACxB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM,EAAE;QAC7B,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,GAAG,CAAC,OAAO;QACX,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,MAAM;QACzB,GAAG,CAAC,OAAO,KAAK,MAAM;QACtB,GAAG,CAAC,OAAO,KAAK,IAAI,CACrB,CAAC;AACJ,CAAC;AAtBD,4BAsBC;AAEY,QAAA,KAAK,GAAG,cAAc,CAAC;AAEpC;;GAEG;AACU,QAAA,qBAAqB,GAAG;IACnC,YAAY,EAAE,cAAc;IAC5B,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,gBAAgB;IAChC,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,IAAI;CACA,CAAC"}
|
|
@@ -23,6 +23,10 @@ export declare const WS_KEY_MAP: {
|
|
|
23
23
|
readonly unifiedOptionPublic: "unifiedOptionPublic";
|
|
24
24
|
readonly unifiedPerpUSDTPublic: "unifiedPerpUSDTPublic";
|
|
25
25
|
readonly unifiedPerpUSDCPublic: "unifiedPerpUSDCPublic";
|
|
26
|
+
readonly contractUSDTPublic: "contractUSDTPublic";
|
|
27
|
+
readonly contractUSDTPrivate: "contractUSDTPrivate";
|
|
28
|
+
readonly contractInversePublic: "contractInversePublic";
|
|
29
|
+
readonly contractInversePrivate: "contractInversePrivate";
|
|
26
30
|
};
|
|
27
31
|
export declare const WS_AUTH_ON_CONNECT_KEYS: WsKey[];
|
|
28
32
|
export declare const PUBLIC_WS_KEYS: string[];
|
|
@@ -110,6 +110,26 @@ exports.WS_BASE_URL_MAP = {
|
|
|
110
110
|
testnet: 'useUnifiedEndpoint',
|
|
111
111
|
},
|
|
112
112
|
},
|
|
113
|
+
contractUSDT: {
|
|
114
|
+
public: {
|
|
115
|
+
livenet: 'wss://stream.bybit.com/contract/usdt/public/v3',
|
|
116
|
+
testnet: 'wss://stream-testnet.bybit.com/contract/usdt/public/v3',
|
|
117
|
+
},
|
|
118
|
+
private: {
|
|
119
|
+
livenet: 'wss://stream.bybit.com/contract/private/v3',
|
|
120
|
+
testnet: 'wss://stream-testnet.bybit.com/contract/private/v3',
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
contractInverse: {
|
|
124
|
+
public: {
|
|
125
|
+
livenet: 'wss://stream.bybit.com/contract/inverse/public/v3',
|
|
126
|
+
testnet: 'wss://stream-testnet.bybit.com/contract/inverse/public/v3',
|
|
127
|
+
},
|
|
128
|
+
private: {
|
|
129
|
+
livenet: 'wss://stream.bybit.com/contract/private/v3',
|
|
130
|
+
testnet: 'wss://stream-testnet.bybit.com/contract/private/v3',
|
|
131
|
+
},
|
|
132
|
+
},
|
|
113
133
|
};
|
|
114
134
|
exports.WS_KEY_MAP = {
|
|
115
135
|
inverse: 'inverse',
|
|
@@ -127,12 +147,18 @@ exports.WS_KEY_MAP = {
|
|
|
127
147
|
unifiedOptionPublic: 'unifiedOptionPublic',
|
|
128
148
|
unifiedPerpUSDTPublic: 'unifiedPerpUSDTPublic',
|
|
129
149
|
unifiedPerpUSDCPublic: 'unifiedPerpUSDCPublic',
|
|
150
|
+
contractUSDTPublic: 'contractUSDTPublic',
|
|
151
|
+
contractUSDTPrivate: 'contractUSDTPrivate',
|
|
152
|
+
contractInversePublic: 'contractInversePublic',
|
|
153
|
+
contractInversePrivate: 'contractInversePrivate',
|
|
130
154
|
};
|
|
131
155
|
exports.WS_AUTH_ON_CONNECT_KEYS = [
|
|
132
156
|
exports.WS_KEY_MAP.spotV3Private,
|
|
133
157
|
exports.WS_KEY_MAP.usdcOptionPrivate,
|
|
134
158
|
exports.WS_KEY_MAP.usdcPerpPrivate,
|
|
135
159
|
exports.WS_KEY_MAP.unifiedPrivate,
|
|
160
|
+
exports.WS_KEY_MAP.contractUSDTPrivate,
|
|
161
|
+
exports.WS_KEY_MAP.contractInversePrivate,
|
|
136
162
|
];
|
|
137
163
|
exports.PUBLIC_WS_KEYS = [
|
|
138
164
|
exports.WS_KEY_MAP.linearPublic,
|
|
@@ -143,6 +169,8 @@ exports.PUBLIC_WS_KEYS = [
|
|
|
143
169
|
exports.WS_KEY_MAP.unifiedOptionPublic,
|
|
144
170
|
exports.WS_KEY_MAP.unifiedPerpUSDTPublic,
|
|
145
171
|
exports.WS_KEY_MAP.unifiedPerpUSDCPublic,
|
|
172
|
+
exports.WS_KEY_MAP.contractUSDTPublic,
|
|
173
|
+
exports.WS_KEY_MAP.contractInversePublic,
|
|
146
174
|
];
|
|
147
175
|
/** Used to automatically determine if a sub request should be to the public or private ws (when there's two) */
|
|
148
176
|
const PRIVATE_TOPICS = [
|
|
@@ -178,6 +206,11 @@ const PRIVATE_TOPICS = [
|
|
|
178
206
|
'user.order.unifiedAccount',
|
|
179
207
|
'user.wallet.unifiedAccount',
|
|
180
208
|
'user.greeks.unifiedAccount',
|
|
209
|
+
// contract v3
|
|
210
|
+
'user.position.contractAccount',
|
|
211
|
+
'user.execution.contractAccount',
|
|
212
|
+
'user.order.contractAccount',
|
|
213
|
+
'user.wallet.contractAccount',
|
|
181
214
|
];
|
|
182
215
|
function getWsKeyForTopic(market, topic, isPrivate) {
|
|
183
216
|
const isPrivateTopic = isPrivate === true || PRIVATE_TOPICS.includes(topic);
|
|
@@ -226,6 +259,16 @@ function getWsKeyForTopic(market, topic, isPrivate) {
|
|
|
226
259
|
}
|
|
227
260
|
throw new Error(`Failed to determine wskey for unified perps topic: "${topic}`);
|
|
228
261
|
}
|
|
262
|
+
case 'contractInverse': {
|
|
263
|
+
return isPrivateTopic
|
|
264
|
+
? exports.WS_KEY_MAP.contractInversePrivate
|
|
265
|
+
: exports.WS_KEY_MAP.contractInversePublic;
|
|
266
|
+
}
|
|
267
|
+
case 'contractUSDT': {
|
|
268
|
+
return isPrivateTopic
|
|
269
|
+
? exports.WS_KEY_MAP.contractUSDTPrivate
|
|
270
|
+
: exports.WS_KEY_MAP.contractUSDTPublic;
|
|
271
|
+
}
|
|
229
272
|
default: {
|
|
230
273
|
throw neverGuard(market, `getWsKeyForTopic(): Unhandled market`);
|
|
231
274
|
}
|
|
@@ -240,7 +283,9 @@ function getMaxTopicsPerSubscribeEvent(market) {
|
|
|
240
283
|
case 'usdcPerp':
|
|
241
284
|
case 'unifiedOption':
|
|
242
285
|
case 'unifiedPerp':
|
|
243
|
-
case 'spot':
|
|
286
|
+
case 'spot':
|
|
287
|
+
case 'contractInverse':
|
|
288
|
+
case 'contractUSDT': {
|
|
244
289
|
return null;
|
|
245
290
|
}
|
|
246
291
|
case 'spotv3': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-util.js","sourceRoot":"","sources":["../../src/util/websocket-util.ts"],"names":[],"mappings":";;;AAWa,QAAA,eAAe,GAGxB;IACF,OAAO,EAAE;QACP,MAAM,EAAE;YACN,OAAO,EAAE,iCAAiC;YAC1C,OAAO,EAAE,yCAAyC;SACnD;QACD,OAAO,EAAE;YACP,OAAO,EAAE,iCAAiC;YAC1C,OAAO,EAAE,yCAAyC;SACnD;KACF;IACD,MAAM,EAAE;QACN,MAAM,EAAE;YACN,OAAO,EAAE,wCAAwC;YACjD,QAAQ,EAAE,yCAAyC;YACnD,OAAO,EAAE,gDAAgD;SAC1D;QACD,OAAO,EAAE;YACP,OAAO,EAAE,yCAAyC;YAClD,QAAQ,EAAE,0CAA0C;YACpD,OAAO,EAAE,iDAAiD;SAC3D;KACF;IACD,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,OAAO,EAAE,yCAAyC;YAClD,QAAQ,EAAE,yCAAyC;YACnD,OAAO,EAAE,iDAAiD;YAC1D,QAAQ,EAAE,iDAAiD;SAC5D;QACD,OAAO,EAAE;YACP,OAAO,EAAE,gCAAgC;YACzC,OAAO,EAAE,wCAAwC;SAClD;KACF;IACD,MAAM,EAAE;QACN,MAAM,EAAE;YACN,OAAO,EAAE,uCAAuC;YAChD,OAAO,EAAE,+CAA+C;SACzD;QACD,OAAO,EAAE;YACP,OAAO,EAAE,wCAAwC;YACjD,OAAO,EAAE,gDAAgD;SAC1D;KACF;IACD,UAAU,EAAE;QACV,MAAM,EAAE;YACN,OAAO,EAAE,oDAAoD;YAC7D,QAAQ,EAAE,qDAAqD;YAC/D,OAAO,EAAE,4DAA4D;SACtE;QACD,OAAO,EAAE;YACP,OAAO,EAAE,qDAAqD;YAC9D,QAAQ,EAAE,sDAAsD;YAChE,OAAO,EAAE,6DAA6D;SACvE;KACF;IACD,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,OAAO,EAAE,wDAAwD;YACjE,QAAQ,EAAE,yDAAyD;YACnE,OAAO,EAAE,gEAAgE;SAC1E;QACD,OAAO,EAAE;YACP,OAAO,EAAE,qDAAqD;YAC9D,QAAQ,EAAE,sDAAsD;YAChE,OAAO,EAAE,6DAA6D;SACvE;KACF;IACD,aAAa,EAAE;QACb,MAAM,EAAE;YACN,OAAO,EAAE,8CAA8C;YACvD,OAAO,EAAE,sDAAsD;SAChE;QACD,OAAO,EAAE;YACP,OAAO,EAAE,2CAA2C;YACpD,OAAO,EAAE,mDAAmD;SAC7D;KACF;IACD,WAAW,EAAE;QACX,MAAM,EAAE;YACN,OAAO,EAAE,yBAAyB;YAClC,OAAO,EAAE,yBAAyB;SACnC;QACD,OAAO,EAAE;YACP,OAAO,EAAE,2CAA2C;YACpD,OAAO,EAAE,mDAAmD;SAC7D;KACF;IACD,eAAe,EAAE;QACf,MAAM,EAAE;YACN,OAAO,EAAE,gDAAgD;YACzD,OAAO,EAAE,wDAAwD;SAClE;QACD,OAAO,EAAE;YACP,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE,oBAAoB;SAC9B;KACF;IACD,eAAe,EAAE;QACf,MAAM,EAAE;YACN,OAAO,EAAE,gDAAgD;YACzD,OAAO,EAAE,wDAAwD;SAClE;QACD,OAAO,EAAE;YACP,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE,oBAAoB;SAC9B;KACF;CACF,CAAC;AAEW,QAAA,UAAU,GAAG;IACxB,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,qBAAqB,EAAE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"websocket-util.js","sourceRoot":"","sources":["../../src/util/websocket-util.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,9 +81,15 @@ export declare class WebsocketClient extends EventEmitter {
|
|
|
81
81
|
private getWsAuthSignature;
|
|
82
82
|
private reconnectWithDelay;
|
|
83
83
|
private ping;
|
|
84
|
+
/**
|
|
85
|
+
* Closes a connection, if it's even open. If open, this will trigger a reconnect asynchronously.
|
|
86
|
+
* If closed, trigger a reconnect immediately
|
|
87
|
+
*/
|
|
88
|
+
private executeReconnectableClose;
|
|
84
89
|
private clearTimers;
|
|
85
90
|
private clearPingTimer;
|
|
86
91
|
private clearPongTimer;
|
|
92
|
+
private clearReconnectTimer;
|
|
87
93
|
/**
|
|
88
94
|
* @private Use the `subscribe(topics)` method to subscribe to topics. Send WS message to subscribe to topics.
|
|
89
95
|
*/
|
|
@@ -96,7 +102,6 @@ export declare class WebsocketClient extends EventEmitter {
|
|
|
96
102
|
private connectToWsUrl;
|
|
97
103
|
private onWsOpen;
|
|
98
104
|
private onWsMessage;
|
|
99
|
-
private onWsError;
|
|
100
105
|
private onWsClose;
|
|
101
106
|
private getWs;
|
|
102
107
|
private setWsState;
|
package/lib/websocket-client.js
CHANGED
|
@@ -19,12 +19,13 @@ const inverse_client_1 = require("./inverse-client");
|
|
|
19
19
|
const linear_client_1 = require("./linear-client");
|
|
20
20
|
const spot_client_v3_1 = require("./spot-client-v3");
|
|
21
21
|
const spot_client_1 = require("./spot-client");
|
|
22
|
-
const node_support_1 = require("./util/node-support");
|
|
23
|
-
const WsStore_1 = __importDefault(require("./util/WsStore"));
|
|
24
|
-
const util_1 = require("./util");
|
|
25
22
|
const usdc_option_client_1 = require("./usdc-option-client");
|
|
26
23
|
const usdc_perpetual_client_1 = require("./usdc-perpetual-client");
|
|
27
24
|
const unified_margin_client_1 = require("./unified-margin-client");
|
|
25
|
+
const contract_client_1 = require("./contract-client");
|
|
26
|
+
const node_support_1 = require("./util/node-support");
|
|
27
|
+
const WsStore_1 = __importDefault(require("./util/WsStore"));
|
|
28
|
+
const util_1 = require("./util");
|
|
28
29
|
const loggerCategory = { category: 'bybit-ws' };
|
|
29
30
|
class WebsocketClient extends events_1.EventEmitter {
|
|
30
31
|
constructor(options, logger) {
|
|
@@ -34,6 +35,8 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
34
35
|
this.options = Object.assign({ testnet: false, pongTimeout: 1000, pingInterval: 10000, reconnectTimeout: 500, fetchTimeOffsetBeforeAuth: false }, options);
|
|
35
36
|
this.options.restOptions = Object.assign(Object.assign({}, this.options.restOptions), { testnet: this.options.testnet });
|
|
36
37
|
this.prepareRESTClient();
|
|
38
|
+
// add default error handling so this doesn't crash node (if the user didn't set a handler)
|
|
39
|
+
this.on('error', () => { });
|
|
37
40
|
}
|
|
38
41
|
/**
|
|
39
42
|
* Subscribe to topics & track/persist them. They will be automatically resubscribed to if the connection drops/reconnects.
|
|
@@ -110,6 +113,11 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
110
113
|
this.restClient = new unified_margin_client_1.UnifiedMarginClient(this.options.restOptions, this.options.requestOptions);
|
|
111
114
|
break;
|
|
112
115
|
}
|
|
116
|
+
case 'contractInverse':
|
|
117
|
+
case 'contractUSDT': {
|
|
118
|
+
this.restClient = new contract_client_1.ContractClient(this.options.restOptions, this.options.requestOptions);
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
113
121
|
default: {
|
|
114
122
|
throw util_1.neverGuard(this.options.market, `prepareRESTClient(): Unhandled market`);
|
|
115
123
|
}
|
|
@@ -134,6 +142,7 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
134
142
|
}
|
|
135
143
|
closeAll(force) {
|
|
136
144
|
const keys = this.wsStore.getKeys();
|
|
145
|
+
this.logger.info(`Closing all ws connections: ${keys}`);
|
|
137
146
|
keys.forEach((key) => {
|
|
138
147
|
this.close(key, force);
|
|
139
148
|
});
|
|
@@ -154,7 +163,9 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
154
163
|
case 'usdcOption':
|
|
155
164
|
case 'usdcPerp':
|
|
156
165
|
case 'unifiedPerp':
|
|
157
|
-
case 'unifiedOption':
|
|
166
|
+
case 'unifiedOption':
|
|
167
|
+
case 'contractUSDT':
|
|
168
|
+
case 'contractInverse': {
|
|
158
169
|
return [...this.connectPublic(), this.connectPrivate()];
|
|
159
170
|
}
|
|
160
171
|
default: {
|
|
@@ -191,6 +202,10 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
191
202
|
this.connect(util_1.WS_KEY_MAP.unifiedPerpUSDCPublic),
|
|
192
203
|
];
|
|
193
204
|
}
|
|
205
|
+
case 'contractUSDT':
|
|
206
|
+
return [this.connect(util_1.WS_KEY_MAP.contractUSDTPublic)];
|
|
207
|
+
case 'contractInverse':
|
|
208
|
+
return [this.connect(util_1.WS_KEY_MAP.contractInversePublic)];
|
|
194
209
|
default: {
|
|
195
210
|
throw util_1.neverGuard(this.options.market, `connectPublic(): Unhandled market`);
|
|
196
211
|
}
|
|
@@ -220,6 +235,10 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
220
235
|
case 'unifiedOption': {
|
|
221
236
|
return this.connect(util_1.WS_KEY_MAP.unifiedPrivate);
|
|
222
237
|
}
|
|
238
|
+
case 'contractUSDT':
|
|
239
|
+
return this.connect(util_1.WS_KEY_MAP.contractUSDTPrivate);
|
|
240
|
+
case 'contractInverse':
|
|
241
|
+
return this.connect(util_1.WS_KEY_MAP.contractInversePrivate);
|
|
223
242
|
default: {
|
|
224
243
|
throw util_1.neverGuard(this.options.market, `connectPrivate(): Unhandled market`);
|
|
225
244
|
}
|
|
@@ -262,7 +281,14 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
262
281
|
this.logger.error(`${context} due to 401 authorization failure.`, Object.assign(Object.assign({}, loggerCategory), { wsKey }));
|
|
263
282
|
break;
|
|
264
283
|
default:
|
|
265
|
-
|
|
284
|
+
if (this.wsStore.getConnectionState(wsKey) !==
|
|
285
|
+
util_1.WsConnectionStateEnum.CLOSING) {
|
|
286
|
+
this.logger.error(`${context} due to unexpected response error: "${(error === null || error === void 0 ? void 0 : error.msg) || (error === null || error === void 0 ? void 0 : error.message) || error}"`, Object.assign(Object.assign({}, loggerCategory), { wsKey, error }));
|
|
287
|
+
this.executeReconnectableClose(wsKey, 'unhandled onWsError');
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
this.logger.info(`${wsKey} socket forcefully closed. Will not reconnect.`);
|
|
291
|
+
}
|
|
266
292
|
break;
|
|
267
293
|
}
|
|
268
294
|
this.emit('error', error);
|
|
@@ -328,13 +354,18 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
328
354
|
});
|
|
329
355
|
}
|
|
330
356
|
reconnectWithDelay(wsKey, connectionDelayMs) {
|
|
357
|
+
var _a;
|
|
331
358
|
this.clearTimers(wsKey);
|
|
332
359
|
if (this.wsStore.getConnectionState(wsKey) !==
|
|
333
360
|
util_1.WsConnectionStateEnum.CONNECTING) {
|
|
334
361
|
this.setWsState(wsKey, util_1.WsConnectionStateEnum.RECONNECTING);
|
|
335
362
|
}
|
|
363
|
+
if ((_a = this.wsStore.get(wsKey)) === null || _a === void 0 ? void 0 : _a.activeReconnectTimer) {
|
|
364
|
+
this.clearReconnectTimer(wsKey);
|
|
365
|
+
}
|
|
336
366
|
this.wsStore.get(wsKey, true).activeReconnectTimer = setTimeout(() => {
|
|
337
367
|
this.logger.info('Reconnecting to websocket', Object.assign(Object.assign({}, loggerCategory), { wsKey }));
|
|
368
|
+
this.clearReconnectTimer(wsKey);
|
|
338
369
|
this.connect(wsKey);
|
|
339
370
|
}, connectionDelayMs);
|
|
340
371
|
}
|
|
@@ -345,21 +376,32 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
345
376
|
this.clearPongTimer(wsKey);
|
|
346
377
|
this.logger.silly('Sending ping', Object.assign(Object.assign({}, loggerCategory), { wsKey }));
|
|
347
378
|
this.tryWsSend(wsKey, JSON.stringify({ op: 'ping' }));
|
|
348
|
-
this.wsStore.get(wsKey, true).activePongTimer = setTimeout(() =>
|
|
349
|
-
var _a;
|
|
350
|
-
this.logger.info('Pong timeout - closing socket to reconnect', Object.assign(Object.assign({}, loggerCategory), { wsKey }));
|
|
351
|
-
(_a = this.getWs(wsKey)) === null || _a === void 0 ? void 0 : _a.terminate();
|
|
352
|
-
delete this.wsStore.get(wsKey, true).activePongTimer;
|
|
353
|
-
}, this.options.pongTimeout);
|
|
379
|
+
this.wsStore.get(wsKey, true).activePongTimer = setTimeout(() => this.executeReconnectableClose(wsKey, 'Pong timeout'), this.options.pongTimeout);
|
|
354
380
|
}
|
|
355
|
-
|
|
381
|
+
/**
|
|
382
|
+
* Closes a connection, if it's even open. If open, this will trigger a reconnect asynchronously.
|
|
383
|
+
* If closed, trigger a reconnect immediately
|
|
384
|
+
*/
|
|
385
|
+
executeReconnectableClose(wsKey, reason) {
|
|
386
|
+
var _a;
|
|
387
|
+
this.logger.info(`${reason} - closing socket to reconnect`, Object.assign(Object.assign({}, loggerCategory), { wsKey,
|
|
388
|
+
reason }));
|
|
389
|
+
const wasOpen = this.wsStore.isWsOpen(wsKey);
|
|
390
|
+
(_a = this.getWs(wsKey)) === null || _a === void 0 ? void 0 : _a.terminate();
|
|
391
|
+
delete this.wsStore.get(wsKey, true).activePongTimer;
|
|
356
392
|
this.clearPingTimer(wsKey);
|
|
357
393
|
this.clearPongTimer(wsKey);
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
394
|
+
if (!wasOpen) {
|
|
395
|
+
this.logger.info(`${reason} - socket already closed - trigger immediate reconnect`, Object.assign(Object.assign({}, loggerCategory), { wsKey,
|
|
396
|
+
reason }));
|
|
397
|
+
this.reconnectWithDelay(wsKey, this.options.reconnectTimeout);
|
|
361
398
|
}
|
|
362
399
|
}
|
|
400
|
+
clearTimers(wsKey) {
|
|
401
|
+
this.clearPingTimer(wsKey);
|
|
402
|
+
this.clearPongTimer(wsKey);
|
|
403
|
+
this.clearReconnectTimer(wsKey);
|
|
404
|
+
}
|
|
363
405
|
// Send a ping at intervals
|
|
364
406
|
clearPingTimer(wsKey) {
|
|
365
407
|
const wsState = this.wsStore.get(wsKey);
|
|
@@ -376,6 +418,13 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
376
418
|
wsState.activePongTimer = undefined;
|
|
377
419
|
}
|
|
378
420
|
}
|
|
421
|
+
clearReconnectTimer(wsKey) {
|
|
422
|
+
const wsState = this.wsStore.get(wsKey);
|
|
423
|
+
if (wsState === null || wsState === void 0 ? void 0 : wsState.activeReconnectTimer) {
|
|
424
|
+
clearTimeout(wsState.activeReconnectTimer);
|
|
425
|
+
wsState.activeReconnectTimer = undefined;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
379
428
|
/**
|
|
380
429
|
* @private Use the `subscribe(topics)` method to subscribe to topics. Send WS message to subscribe to topics.
|
|
381
430
|
*/
|
|
@@ -450,7 +499,7 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
450
499
|
const ws = new isomorphic_ws_1.default(url, undefined, agent ? { agent } : undefined);
|
|
451
500
|
ws.onopen = (event) => this.onWsOpen(event, wsKey);
|
|
452
501
|
ws.onmessage = (event) => this.onWsMessage(event, wsKey);
|
|
453
|
-
ws.onerror = (event) => this.onWsError
|
|
502
|
+
ws.onerror = (event) => this.parseWsError('Websocket onWsError', event, wsKey);
|
|
454
503
|
ws.onclose = (event) => this.onWsClose(event, wsKey);
|
|
455
504
|
return ws;
|
|
456
505
|
}
|
|
@@ -520,9 +569,6 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
520
569
|
wsKey }));
|
|
521
570
|
}
|
|
522
571
|
}
|
|
523
|
-
onWsError(error, wsKey) {
|
|
524
|
-
this.parseWsError('Websocket error', error, wsKey);
|
|
525
|
-
}
|
|
526
572
|
onWsClose(event, wsKey) {
|
|
527
573
|
this.logger.info('Websocket connection closed', Object.assign(Object.assign({}, loggerCategory), { wsKey }));
|
|
528
574
|
if (this.wsStore.getConnectionState(wsKey) !== util_1.WsConnectionStateEnum.CLOSING) {
|
|
@@ -592,6 +638,18 @@ class WebsocketClient extends events_1.EventEmitter {
|
|
|
592
638
|
case util_1.WS_KEY_MAP.unifiedPrivate: {
|
|
593
639
|
return util_1.WS_BASE_URL_MAP.unifiedPerp.private[networkKey];
|
|
594
640
|
}
|
|
641
|
+
case util_1.WS_KEY_MAP.contractInversePrivate: {
|
|
642
|
+
return util_1.WS_BASE_URL_MAP.contractInverse.private[networkKey];
|
|
643
|
+
}
|
|
644
|
+
case util_1.WS_KEY_MAP.contractInversePublic: {
|
|
645
|
+
return util_1.WS_BASE_URL_MAP.contractInverse.public[networkKey];
|
|
646
|
+
}
|
|
647
|
+
case util_1.WS_KEY_MAP.contractUSDTPrivate: {
|
|
648
|
+
return util_1.WS_BASE_URL_MAP.contractUSDT.private[networkKey];
|
|
649
|
+
}
|
|
650
|
+
case util_1.WS_KEY_MAP.contractUSDTPublic: {
|
|
651
|
+
return util_1.WS_BASE_URL_MAP.contractUSDT.public[networkKey];
|
|
652
|
+
}
|
|
595
653
|
default: {
|
|
596
654
|
this.logger.error('getWsUrl(): Unhandled wsKey: ', Object.assign(Object.assign({}, loggerCategory), { wsKey }));
|
|
597
655
|
throw util_1.neverGuard(wsKey, `getWsUrl(): Unhandled wsKey`);
|