@solncebro/exchange-engine 0.1.2 → 0.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/CHANGELOG.md +25 -0
- package/dist/constants/binance.d.ts +4 -5
- package/dist/constants/binance.d.ts.map +1 -1
- package/dist/constants/binance.js +5 -21
- package/dist/constants/binance.js.map +1 -1
- package/dist/constants/bybit.d.ts +6 -6
- package/dist/constants/bybit.d.ts.map +1 -1
- package/dist/constants/bybit.js +7 -7
- package/dist/constants/bybit.js.map +1 -1
- package/dist/constants/mappings.d.ts +9 -0
- package/dist/constants/mappings.d.ts.map +1 -0
- package/dist/constants/mappings.js +40 -0
- package/dist/constants/mappings.js.map +1 -0
- package/dist/exchanges/BaseExchangeClient.d.ts +9 -8
- package/dist/exchanges/BaseExchangeClient.d.ts.map +1 -1
- package/dist/exchanges/BaseExchangeClient.js +26 -26
- package/dist/exchanges/BaseExchangeClient.js.map +1 -1
- package/dist/exchanges/BinanceBaseClient.d.ts +5 -5
- package/dist/exchanges/BinanceBaseClient.d.ts.map +1 -1
- package/dist/exchanges/BinanceBaseClient.js +7 -8
- package/dist/exchanges/BinanceBaseClient.js.map +1 -1
- package/dist/exchanges/BinanceFutures.d.ts +4 -2
- package/dist/exchanges/BinanceFutures.d.ts.map +1 -1
- package/dist/exchanges/BinanceFutures.js +12 -6
- package/dist/exchanges/BinanceFutures.js.map +1 -1
- package/dist/exchanges/BinanceSpot.d.ts +3 -1
- package/dist/exchanges/BinanceSpot.d.ts.map +1 -1
- package/dist/exchanges/BinanceSpot.js +5 -2
- package/dist/exchanges/BinanceSpot.js.map +1 -1
- package/dist/exchanges/BybitLinear.d.ts +8 -6
- package/dist/exchanges/BybitLinear.d.ts.map +1 -1
- package/dist/exchanges/BybitLinear.js +19 -15
- package/dist/exchanges/BybitLinear.js.map +1 -1
- package/dist/exchanges/BybitSpot.d.ts +7 -5
- package/dist/exchanges/BybitSpot.d.ts.map +1 -1
- package/dist/exchanges/BybitSpot.js +13 -9
- package/dist/exchanges/BybitSpot.js.map +1 -1
- package/dist/exchanges/Exchange.d.ts +1 -1
- package/dist/exchanges/Exchange.d.ts.map +1 -1
- package/dist/exchanges/Exchange.js +3 -2
- package/dist/exchanges/Exchange.js.map +1 -1
- package/dist/http/BaseHttpClient.d.ts.map +1 -1
- package/dist/http/BaseHttpClient.js.map +1 -1
- package/dist/http/BinanceBaseHttpClient.d.ts +7 -7
- package/dist/http/BinanceBaseHttpClient.d.ts.map +1 -1
- package/dist/http/BinanceBaseHttpClient.js.map +1 -1
- package/dist/http/BinanceFuturesHttpClient.d.ts +6 -6
- package/dist/http/BinanceFuturesHttpClient.d.ts.map +1 -1
- package/dist/http/BinanceFuturesHttpClient.js +2 -5
- package/dist/http/BinanceFuturesHttpClient.js.map +1 -1
- package/dist/http/BybitHttpClient.d.ts +14 -13
- package/dist/http/BybitHttpClient.d.ts.map +1 -1
- package/dist/http/BybitHttpClient.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/dist/normalizers/binanceNormalizer.d.ts +28 -19
- package/dist/normalizers/binanceNormalizer.d.ts.map +1 -1
- package/dist/normalizers/binanceNormalizer.js +47 -30
- package/dist/normalizers/binanceNormalizer.js.map +1 -1
- package/dist/normalizers/bybitNormalizer.d.ts +21 -21
- package/dist/normalizers/bybitNormalizer.d.ts.map +1 -1
- package/dist/normalizers/bybitNormalizer.js +39 -40
- package/dist/normalizers/bybitNormalizer.js.map +1 -1
- package/dist/precision/precision.d.ts +3 -3
- package/dist/precision/precision.d.ts.map +1 -1
- package/dist/precision/precision.js +4 -4
- package/dist/precision/precision.js.map +1 -1
- package/dist/types/common.d.ts +54 -21
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +40 -0
- package/dist/types/common.js.map +1 -1
- package/dist/types/exchange.d.ts +9 -7
- package/dist/types/exchange.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/stream.d.ts +1 -2
- package/dist/types/stream.d.ts.map +1 -1
- package/dist/utils/httpParams.d.ts +2 -2
- package/dist/utils/httpParams.d.ts.map +1 -1
- package/dist/utils/httpParams.js.map +1 -1
- package/dist/ws/BinanceFuturesPublicStream.d.ts +4 -4
- package/dist/ws/BinanceFuturesPublicStream.d.ts.map +1 -1
- package/dist/ws/BinanceFuturesPublicStream.js +40 -41
- package/dist/ws/BinanceFuturesPublicStream.js.map +1 -1
- package/dist/ws/BinanceSpotPublicStream.d.ts +2 -2
- package/dist/ws/BinanceSpotPublicStream.d.ts.map +1 -1
- package/dist/ws/BinanceSpotPublicStream.js +15 -17
- package/dist/ws/BinanceSpotPublicStream.js.map +1 -1
- package/dist/ws/BinanceUserDataStream.d.ts +2 -2
- package/dist/ws/BinanceUserDataStream.d.ts.map +1 -1
- package/dist/ws/BinanceUserDataStream.js +3 -3
- package/dist/ws/BinanceUserDataStream.js.map +1 -1
- package/dist/ws/BybitPrivateStream.js +5 -5
- package/dist/ws/BybitPrivateStream.js.map +1 -1
- package/dist/ws/BybitPublicStream.d.ts.map +1 -1
- package/dist/ws/BybitPublicStream.js +9 -10
- package/dist/ws/BybitPublicStream.js.map +1 -1
- package/dist/ws/BybitTradeStream.d.ts.map +1 -1
- package/dist/ws/BybitTradeStream.js +12 -8
- package/dist/ws/BybitTradeStream.js.map +1 -1
- package/dist/ws/{binanceWsUtils.d.ts → binanceWebSocketUtils.d.ts} +1 -1
- package/dist/ws/binanceWebSocketUtils.d.ts.map +1 -0
- package/dist/ws/binanceWebSocketUtils.js +7 -0
- package/dist/ws/binanceWebSocketUtils.js.map +1 -0
- package/dist/ws/bybitWebSocketUtils.d.ts +28 -0
- package/dist/ws/bybitWebSocketUtils.d.ts.map +1 -0
- package/dist/ws/{bybitWsUtils.js → bybitWebSocketUtils.js} +3 -3
- package/dist/ws/bybitWebSocketUtils.js.map +1 -0
- package/package.json +6 -2
- package/dist/ws/binanceWsUtils.d.ts.map +0 -1
- package/dist/ws/binanceWsUtils.js +0 -13
- package/dist/ws/binanceWsUtils.js.map +0 -1
- package/dist/ws/bybitWsUtils.d.ts +0 -29
- package/dist/ws/bybitWsUtils.d.ts.map +0 -1
- package/dist/ws/bybitWsUtils.js.map +0 -1
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BybitTradeStream = void 0;
|
|
4
4
|
const websocket_engine_1 = require("@solncebro/websocket-engine");
|
|
5
5
|
const bybitNormalizer_1 = require("../normalizers/bybitNormalizer");
|
|
6
|
-
const
|
|
6
|
+
const bybitWebSocketUtils_1 = require("./bybitWebSocketUtils");
|
|
7
7
|
function parseBybitTradeMessage(rawData) {
|
|
8
8
|
return JSON.parse(rawData.toString());
|
|
9
9
|
}
|
|
@@ -39,6 +39,10 @@ class BybitTradeStream {
|
|
|
39
39
|
reject(new Error(`Order creation timeout after ${ORDER_TIMEOUT_MS}ms`));
|
|
40
40
|
}, ORDER_TIMEOUT_MS);
|
|
41
41
|
this.pendingRequestByRequestId.set(requestId, { resolve, reject, timeout });
|
|
42
|
+
if (this.webSocket === null) {
|
|
43
|
+
reject(new Error('WebSocket is not connected'));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
42
46
|
this.webSocket.sendToConnectedSocket(request);
|
|
43
47
|
});
|
|
44
48
|
}
|
|
@@ -74,7 +78,7 @@ class BybitTradeStream {
|
|
|
74
78
|
}
|
|
75
79
|
initConnection() {
|
|
76
80
|
return new Promise((resolve, reject) => {
|
|
77
|
-
let
|
|
81
|
+
let isResolved = false;
|
|
78
82
|
this.webSocket = new websocket_engine_1.ReliableWebSocket({
|
|
79
83
|
label: 'BybitTradeStream',
|
|
80
84
|
url: this.url,
|
|
@@ -84,26 +88,26 @@ class BybitTradeStream {
|
|
|
84
88
|
onOpen: async (context) => {
|
|
85
89
|
try {
|
|
86
90
|
await this.authenticate(context);
|
|
87
|
-
|
|
91
|
+
isResolved = true;
|
|
88
92
|
resolve();
|
|
89
93
|
}
|
|
90
94
|
catch (error) {
|
|
91
|
-
if (!
|
|
92
|
-
|
|
95
|
+
if (!isResolved) {
|
|
96
|
+
isResolved = true;
|
|
93
97
|
reject(error);
|
|
94
98
|
}
|
|
95
99
|
}
|
|
96
100
|
},
|
|
97
101
|
onNotify: this.onNotify,
|
|
98
|
-
heartbeat:
|
|
102
|
+
heartbeat: bybitWebSocketUtils_1.BYBIT_HEARTBEAT_CONFIG,
|
|
99
103
|
configuration: {
|
|
100
|
-
pingInterval:
|
|
104
|
+
pingInterval: bybitWebSocketUtils_1.BYBIT_PING_INTERVAL,
|
|
101
105
|
},
|
|
102
106
|
});
|
|
103
107
|
});
|
|
104
108
|
}
|
|
105
109
|
async authenticate(context) {
|
|
106
|
-
await (0,
|
|
110
|
+
await (0, bybitWebSocketUtils_1.authenticateBybitWebSocket)({ context, apiKey: this.apiKey, secret: this.secret, label: 'BybitTradeStream', logger: this.logger });
|
|
107
111
|
}
|
|
108
112
|
handleMessage(message) {
|
|
109
113
|
if (message.op === 'auth') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BybitTradeStream.js","sourceRoot":"","sources":["../../src/ws/BybitTradeStream.ts"],"names":[],"mappings":";;;AACA,kEAAgE;AAIhE,oEAAqE;AAGrE
|
|
1
|
+
{"version":3,"file":"BybitTradeStream.js","sourceRoot":"","sources":["../../src/ws/BybitTradeStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { KlineInterval } from '../types/common';
|
|
2
2
|
declare function resolveUnifiedBinanceInterval(binanceInterval: string): KlineInterval;
|
|
3
3
|
export { resolveUnifiedBinanceInterval };
|
|
4
|
-
//# sourceMappingURL=
|
|
4
|
+
//# sourceMappingURL=binanceWebSocketUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binanceWebSocketUtils.d.ts","sourceRoot":"","sources":["../../src/ws/binanceWebSocketUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,iBAAS,6BAA6B,CAAC,eAAe,EAAE,MAAM,GAAG,aAAa,CAE7E;AAED,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveUnifiedBinanceInterval = resolveUnifiedBinanceInterval;
|
|
4
|
+
function resolveUnifiedBinanceInterval(binanceInterval) {
|
|
5
|
+
return binanceInterval;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=binanceWebSocketUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binanceWebSocketUtils.js","sourceRoot":"","sources":["../../src/ws/binanceWebSocketUtils.ts"],"names":[],"mappings":";;AAMS,sEAA6B;AAJtC,SAAS,6BAA6B,CAAC,eAAuB;IAC5D,OAAO,eAAgC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { WebSocketOpenContext } from '@solncebro/websocket-engine';
|
|
2
|
+
import type { ExchangeLogger } from '../types/common';
|
|
3
|
+
interface BybitBaseWebSocketMessage {
|
|
4
|
+
op?: string;
|
|
5
|
+
data?: unknown;
|
|
6
|
+
success?: boolean;
|
|
7
|
+
ret_msg?: string;
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
}
|
|
10
|
+
declare const BYBIT_PING_INTERVAL = 20000;
|
|
11
|
+
declare function isBybitPongResponse(message: BybitBaseWebSocketMessage): boolean;
|
|
12
|
+
declare const BYBIT_HEARTBEAT_CONFIG: {
|
|
13
|
+
buildPayload: () => {
|
|
14
|
+
op: string;
|
|
15
|
+
};
|
|
16
|
+
isResponse: typeof isBybitPongResponse;
|
|
17
|
+
};
|
|
18
|
+
interface AuthenticateBybitWebSocketArgs {
|
|
19
|
+
context: WebSocketOpenContext<BybitBaseWebSocketMessage>;
|
|
20
|
+
apiKey: string;
|
|
21
|
+
secret: string;
|
|
22
|
+
label: string;
|
|
23
|
+
logger: ExchangeLogger;
|
|
24
|
+
}
|
|
25
|
+
declare function authenticateBybitWebSocket(args: AuthenticateBybitWebSocketArgs): Promise<void>;
|
|
26
|
+
export { isBybitPongResponse, BYBIT_HEARTBEAT_CONFIG, BYBIT_PING_INTERVAL, authenticateBybitWebSocket, };
|
|
27
|
+
export type { BybitBaseWebSocketMessage, AuthenticateBybitWebSocketArgs };
|
|
28
|
+
//# sourceMappingURL=bybitWebSocketUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bybitWebSocketUtils.d.ts","sourceRoot":"","sources":["../../src/ws/bybitWebSocketUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,UAAU,yBAAyB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,QAAA,MAAM,mBAAmB,QAAQ,CAAC;AAElC,iBAAS,mBAAmB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAExE;AAED,QAAA,MAAM,sBAAsB;;;;;CAG3B,CAAC;AAEF,UAAU,8BAA8B;IACtC,OAAO,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,iBAAe,0BAA0B,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB7F;AAED,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,0BAA0B,GAC3B,CAAC;AACF,YAAY,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BYBIT_PING_INTERVAL = exports.BYBIT_HEARTBEAT_CONFIG = void 0;
|
|
4
4
|
exports.isBybitPongResponse = isBybitPongResponse;
|
|
5
|
-
exports.
|
|
5
|
+
exports.authenticateBybitWebSocket = authenticateBybitWebSocket;
|
|
6
6
|
const crypto_1 = require("../utils/crypto");
|
|
7
7
|
const BYBIT_PING_INTERVAL = 20000;
|
|
8
8
|
exports.BYBIT_PING_INTERVAL = BYBIT_PING_INTERVAL;
|
|
@@ -14,7 +14,7 @@ const BYBIT_HEARTBEAT_CONFIG = {
|
|
|
14
14
|
isResponse: isBybitPongResponse,
|
|
15
15
|
};
|
|
16
16
|
exports.BYBIT_HEARTBEAT_CONFIG = BYBIT_HEARTBEAT_CONFIG;
|
|
17
|
-
async function
|
|
17
|
+
async function authenticateBybitWebSocket(args) {
|
|
18
18
|
const { context, apiKey, secret, label, logger } = args;
|
|
19
19
|
const timestamp = Date.now();
|
|
20
20
|
const payload = `GET/realtime${timestamp}`;
|
|
@@ -26,4 +26,4 @@ async function authenticateBybitWs(args) {
|
|
|
26
26
|
await context.waitForMessage((message) => message.op === 'auth' && message.success === true, 10000);
|
|
27
27
|
logger.info(`${label} authenticated`);
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=bybitWebSocketUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bybitWebSocketUtils.js","sourceRoot":"","sources":["../../src/ws/bybitWebSocketUtils.ts"],"names":[],"mappings":";;;AAmDE,kDAAmB;AAGnB,gEAA0B;AApD5B,4CAA6C;AAU7C,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAyChC,kDAAmB;AAvCrB,SAAS,mBAAmB,CAAC,OAAkC;IAC7D,OAAO,OAAO,CAAC,EAAE,KAAK,MAAM,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC;AAC7D,CAAC;AAED,MAAM,sBAAsB,GAAG;IAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IACpC,UAAU,EAAE,mBAAmB;CAChC,CAAC;AA+BA,wDAAsB;AArBxB,KAAK,UAAU,0BAA0B,CAAC,IAAoC;IAC5E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,eAAe,SAAS,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAA,mBAAU,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE9C,OAAO,CAAC,IAAI,CAAC;QACX,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;KACrC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,cAAc,CAC1B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,MAAM,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAC9D,KAAK,CACN,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;AACxC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solncebro/exchange-engine",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Universal TypeScript client library for Binance and Bybit with unified API, type safety, and WebSocket support",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -24,8 +24,9 @@
|
|
|
24
24
|
"test:watch": "jest --watch",
|
|
25
25
|
"test:coverage": "jest --coverage",
|
|
26
26
|
"test:smoke": "ts-node --project test/tsconfig.json test/smoke.test.ts",
|
|
27
|
+
"lint": "eslint src/ test/",
|
|
27
28
|
"type-check": "tsc -p tsconfig.json --noEmit",
|
|
28
|
-
"prepublishOnly": "
|
|
29
|
+
"prepublishOnly": "yarn lint && yarn test && yarn build && yarn type-check"
|
|
29
30
|
},
|
|
30
31
|
"keywords": [
|
|
31
32
|
"exchange",
|
|
@@ -64,6 +65,9 @@
|
|
|
64
65
|
"@types/jest": "^30.0.0",
|
|
65
66
|
"@types/node": "^22.0.0",
|
|
66
67
|
"@types/ws": "^8.18.1",
|
|
68
|
+
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
|
69
|
+
"@typescript-eslint/parser": "^8.56.1",
|
|
70
|
+
"eslint": "^10.0.2",
|
|
67
71
|
"jest": "^30.2.0",
|
|
68
72
|
"ts-jest": "^29.4.6",
|
|
69
73
|
"ts-node": "^10.9.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"binanceWsUtils.d.ts","sourceRoot":"","sources":["../../src/ws/binanceWsUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,iBAAS,6BAA6B,CAAC,eAAe,EAAE,MAAM,GAAG,aAAa,CAQ7E;AAED,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveUnifiedBinanceInterval = resolveUnifiedBinanceInterval;
|
|
4
|
-
const binance_1 = require("../constants/binance");
|
|
5
|
-
function resolveUnifiedBinanceInterval(binanceInterval) {
|
|
6
|
-
for (const [unified, binance] of Object.entries(binance_1.BINANCE_KLINE_INTERVAL)) {
|
|
7
|
-
if (binance === binanceInterval) {
|
|
8
|
-
return unified;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
return '1m';
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=binanceWsUtils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"binanceWsUtils.js","sourceRoot":"","sources":["../../src/ws/binanceWsUtils.ts"],"names":[],"mappings":";;AAaS,sEAA6B;AAZtC,kDAA8D;AAE9D,SAAS,6BAA6B,CAAC,eAAuB;IAC5D,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gCAAsB,CAAC,EAAE,CAAC;QACxE,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YAChC,OAAO,OAAwB,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { WebSocketOpenContext } from '@solncebro/websocket-engine';
|
|
2
|
-
interface BybitBaseWsMessage {
|
|
3
|
-
op?: string;
|
|
4
|
-
data?: unknown;
|
|
5
|
-
success?: boolean;
|
|
6
|
-
ret_msg?: string;
|
|
7
|
-
[key: string]: unknown;
|
|
8
|
-
}
|
|
9
|
-
declare const BYBIT_PING_INTERVAL = 20000;
|
|
10
|
-
declare function isBybitPongResponse(message: BybitBaseWsMessage): boolean;
|
|
11
|
-
declare const BYBIT_HEARTBEAT_CONFIG: {
|
|
12
|
-
buildPayload: () => {
|
|
13
|
-
op: string;
|
|
14
|
-
};
|
|
15
|
-
isResponse: typeof isBybitPongResponse;
|
|
16
|
-
};
|
|
17
|
-
interface AuthenticateBybitWsArgs {
|
|
18
|
-
context: WebSocketOpenContext<BybitBaseWsMessage>;
|
|
19
|
-
apiKey: string;
|
|
20
|
-
secret: string;
|
|
21
|
-
label: string;
|
|
22
|
-
logger: {
|
|
23
|
-
info(message: string, ...args: unknown[]): void;
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
declare function authenticateBybitWs(args: AuthenticateBybitWsArgs): Promise<void>;
|
|
27
|
-
export { isBybitPongResponse, BYBIT_HEARTBEAT_CONFIG, BYBIT_PING_INTERVAL, authenticateBybitWs, };
|
|
28
|
-
export type { BybitBaseWsMessage, AuthenticateBybitWsArgs };
|
|
29
|
-
//# sourceMappingURL=bybitWsUtils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bybitWsUtils.d.ts","sourceRoot":"","sources":["../../src/ws/bybitWsUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,UAAU,kBAAkB;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,QAAA,MAAM,mBAAmB,QAAQ,CAAC;AAElC,iBAAS,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAEjE;AAED,QAAA,MAAM,sBAAsB;;;;;CAG3B,CAAC;AAEF,UAAU,uBAAuB;IAC/B,OAAO,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC;CAC7D;AAED,iBAAe,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/E;AAED,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,CAAC;AACF,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bybitWsUtils.js","sourceRoot":"","sources":["../../src/ws/bybitWsUtils.ts"],"names":[],"mappings":";;;AAkDE,kDAAmB;AAGnB,kDAAmB;AApDrB,4CAA6C;AAU7C,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAyChC,kDAAmB;AAvCrB,SAAS,mBAAmB,CAAC,OAA2B;IACtD,OAAO,OAAO,CAAC,EAAE,KAAK,MAAM,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC;AAC7D,CAAC;AAED,MAAM,sBAAsB,GAAG;IAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IACpC,UAAU,EAAE,mBAAmB;CAChC,CAAC;AA+BA,wDAAsB;AArBxB,KAAK,UAAU,mBAAmB,CAAC,IAA6B;IAC9D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,eAAe,SAAS,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAA,mBAAU,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE9C,OAAO,CAAC,IAAI,CAAC;QACX,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;KACrC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,cAAc,CAC1B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,MAAM,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAC9D,KAAK,CACN,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;AACxC,CAAC"}
|