tardis-machine 18.3.8 → 18.4.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/dist/ws/subscriptionsmappers.d.ts.map +1 -1
- package/dist/ws/subscriptionsmappers.js +1 -0
- package/dist/ws/subscriptionsmappers.js.map +1 -1
- package/node_modules/tardis-dev/dist/consts.d.ts +6 -5
- package/node_modules/tardis-dev/dist/consts.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/consts.js +31 -5
- package/node_modules/tardis-dev/dist/consts.js.map +1 -1
- package/node_modules/tardis-dev/dist/mappers/ascendex.d.ts +4 -4
- package/node_modules/tardis-dev/dist/mappers/aster.d.ts +8 -8
- package/node_modules/tardis-dev/dist/mappers/binance.d.ts +18 -18
- package/node_modules/tardis-dev/dist/mappers/binanceeuropeanoptions.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/bitfinex.d.ts +8 -8
- package/node_modules/tardis-dev/dist/mappers/bitflyer.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/bitget.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/bithumb.d.ts +2 -2
- package/node_modules/tardis-dev/dist/mappers/bitmex.d.ts +2 -2
- package/node_modules/tardis-dev/dist/mappers/bitnomial.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/bitstamp.d.ts +3 -2
- package/node_modules/tardis-dev/dist/mappers/bitstamp.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/mappers/bitstamp.js +49 -2
- package/node_modules/tardis-dev/dist/mappers/bitstamp.js.map +1 -1
- package/node_modules/tardis-dev/dist/mappers/bitvavo.d.ts +3 -3
- package/node_modules/tardis-dev/dist/mappers/blockchaincom.d.ts +2 -2
- package/node_modules/tardis-dev/dist/mappers/bullish.d.ts +5 -5
- package/node_modules/tardis-dev/dist/mappers/bybit.d.ts +26 -7
- package/node_modules/tardis-dev/dist/mappers/bybit.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/mappers/bybit.js +4 -0
- package/node_modules/tardis-dev/dist/mappers/bybit.js.map +1 -1
- package/node_modules/tardis-dev/dist/mappers/bybitspot.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/coinbase.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/coinbaseinternational.d.ts +2 -2
- package/node_modules/tardis-dev/dist/mappers/coinflex.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/cryptocom.d.ts +5 -5
- package/node_modules/tardis-dev/dist/mappers/cryptofacilities.d.ts +2 -2
- package/node_modules/tardis-dev/dist/mappers/delta.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/deribit.d.ts +3 -3
- package/node_modules/tardis-dev/dist/mappers/dydx.d.ts +3 -3
- package/node_modules/tardis-dev/dist/mappers/dydxv4.d.ts +4 -4
- package/node_modules/tardis-dev/dist/mappers/ftx.d.ts +8 -8
- package/node_modules/tardis-dev/dist/mappers/ftx.js +1 -1
- package/node_modules/tardis-dev/dist/mappers/ftx.js.map +1 -1
- package/node_modules/tardis-dev/dist/mappers/gateio.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/gateiofutures.d.ts +4 -4
- package/node_modules/tardis-dev/dist/mappers/gemini.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/huobi.d.ts +26 -26
- package/node_modules/tardis-dev/dist/mappers/hyperliquid.d.ts +3 -3
- package/node_modules/tardis-dev/dist/mappers/index.d.ts +204 -183
- package/node_modules/tardis-dev/dist/mappers/index.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/mappers/kucoin.d.ts +3 -3
- package/node_modules/tardis-dev/dist/mappers/kucoinfutures.d.ts +4 -4
- package/node_modules/tardis-dev/dist/mappers/lighter.d.ts +10 -10
- package/node_modules/tardis-dev/dist/mappers/mexc.d.ts +3 -3
- package/node_modules/tardis-dev/dist/mappers/mexcfutures.d.ts +3 -3
- package/node_modules/tardis-dev/dist/mappers/okex.d.ts +15 -15
- package/node_modules/tardis-dev/dist/mappers/phemex.d.ts +1 -1
- package/node_modules/tardis-dev/dist/mappers/polymarket.d.ts +3 -3
- package/node_modules/tardis-dev/dist/mappers/serum.d.ts +9 -9
- package/node_modules/tardis-dev/dist/mappers/upbit.d.ts +2 -2
- package/node_modules/tardis-dev/dist/realtimefeeds/bitstamp.d.ts +12 -2
- package/node_modules/tardis-dev/dist/realtimefeeds/bitstamp.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/realtimefeeds/bitstamp.js +36 -3
- package/node_modules/tardis-dev/dist/realtimefeeds/bitstamp.js.map +1 -1
- package/node_modules/tardis-dev/dist/realtimefeeds/bybit.d.ts +3 -0
- package/node_modules/tardis-dev/dist/realtimefeeds/bybit.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/realtimefeeds/bybit.js +3 -0
- package/node_modules/tardis-dev/dist/realtimefeeds/bybit.js.map +1 -1
- package/node_modules/tardis-dev/dist/realtimefeeds/index.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/realtimefeeds/index.js +2 -1
- package/node_modules/tardis-dev/dist/realtimefeeds/index.js.map +1 -1
- package/node_modules/tardis-dev/package.json +1 -1
- package/node_modules/tardis-dev/src/consts.ts +32 -5
- package/node_modules/tardis-dev/src/mappers/bitstamp.ts +101 -27
- package/node_modules/tardis-dev/src/mappers/bybit.ts +6 -2
- package/node_modules/tardis-dev/src/mappers/ftx.ts +1 -1
- package/node_modules/tardis-dev/src/realtimefeeds/bitstamp.ts +50 -3
- package/node_modules/tardis-dev/src/realtimefeeds/bybit.ts +4 -0
- package/node_modules/tardis-dev/src/realtimefeeds/index.ts +2 -1
- package/package.json +2 -2
- package/src/ws/subscriptionsmappers.ts +1 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { BookChange, Trade } from '../types.ts';
|
|
2
2
|
export declare const upbitMappers: {
|
|
3
3
|
upbit: {
|
|
4
|
-
trades: import("./registry.ts").MapperCreator<"aster" | "aster-futures" | "bithumb" | "bitvavo" | "bitmex" | "deribit" | "binance-futures" | "binance-delivery" | "binance-european-options" | "binance" | "ftx" | "okex-futures" | "okex-options" | "okex-swap" | "okex" | "okex-spreads" | "huobi-dm" | "huobi-dm-swap" | "huobi-dm-linear-swap" | "huobi" | "bitfinex-derivatives" | "bitfinex" | "coinbase" | "coinbase-international" | "cryptofacilities" | "kraken" | "bitstamp" | "gemini" | "poloniex" | "bybit" | "bybit-spot" | "bybit-options" | "phemex" | "delta" | "ftx-us" | "binance-us" | "gate-io-futures" | "mexc-futures" | "gate-io" | "okcoin" | "bitflyer" | "hitbtc" | "coinflex" | "binance-jersey" | "binance-dex" | "upbit" | "ascendex" | "dydx" | "dydx-v4" | "serum" | "mango" | "huobi-dm-options" | "star-atlas" | "crypto-com" | "kucoin" | "kucoin-futures" | "bitnomial" | "woo-x" | "blockchain-com" | "bitget" | "bitget-futures" | "hyperliquid" | "lighter" | "lighter-rh" | "bullish" | "mexc" | "polymarket", Trade>;
|
|
5
|
-
bookChanges: import("./registry.ts").MapperCreator<"aster" | "aster-futures" | "bithumb" | "bitvavo" | "bitmex" | "deribit" | "binance-futures" | "binance-delivery" | "binance-european-options" | "binance" | "ftx" | "okex-futures" | "okex-options" | "okex-swap" | "okex" | "okex-spreads" | "huobi-dm" | "huobi-dm-swap" | "huobi-dm-linear-swap" | "huobi" | "bitfinex-derivatives" | "bitfinex" | "coinbase" | "coinbase-international" | "cryptofacilities" | "kraken" | "bitstamp" | "gemini" | "poloniex" | "bybit" | "bybit-spot" | "bybit-options" | "phemex" | "delta" | "ftx-us" | "binance-us" | "gate-io-futures" | "mexc-futures" | "gate-io" | "okcoin" | "bitflyer" | "hitbtc" | "coinflex" | "binance-jersey" | "binance-dex" | "upbit" | "ascendex" | "dydx" | "dydx-v4" | "serum" | "mango" | "huobi-dm-options" | "star-atlas" | "crypto-com" | "kucoin" | "kucoin-futures" | "bitnomial" | "woo-x" | "blockchain-com" | "bitget" | "bitget-futures" | "hyperliquid" | "lighter" | "lighter-rh" | "bullish" | "mexc" | "polymarket", BookChange>;
|
|
4
|
+
trades: import("./registry.ts").MapperCreator<"aster" | "aster-futures" | "bithumb" | "bitvavo" | "bitmex" | "deribit" | "binance-futures" | "binance-delivery" | "binance-european-options" | "binance" | "ftx" | "okex-futures" | "okex-options" | "okex-swap" | "okex" | "okex-spreads" | "huobi-dm" | "huobi-dm-swap" | "huobi-dm-linear-swap" | "huobi" | "bitfinex-derivatives" | "bitfinex" | "coinbase" | "coinbase-international" | "cryptofacilities" | "kraken" | "bitstamp" | "gemini" | "poloniex" | "bybit" | "bybit-spot" | "bybit-options" | "bybit-spread" | "phemex" | "delta" | "ftx-us" | "binance-us" | "gate-io-futures" | "mexc-futures" | "gate-io" | "okcoin" | "bitflyer" | "hitbtc" | "coinflex" | "binance-jersey" | "binance-dex" | "upbit" | "ascendex" | "dydx" | "dydx-v4" | "serum" | "mango" | "huobi-dm-options" | "star-atlas" | "crypto-com" | "kucoin" | "kucoin-futures" | "bitnomial" | "woo-x" | "blockchain-com" | "bitget" | "bitget-futures" | "hyperliquid" | "lighter" | "lighter-rh" | "bullish" | "mexc" | "polymarket", Trade>;
|
|
5
|
+
bookChanges: import("./registry.ts").MapperCreator<"aster" | "aster-futures" | "bithumb" | "bitvavo" | "bitmex" | "deribit" | "binance-futures" | "binance-delivery" | "binance-european-options" | "binance" | "ftx" | "okex-futures" | "okex-options" | "okex-swap" | "okex" | "okex-spreads" | "huobi-dm" | "huobi-dm-swap" | "huobi-dm-linear-swap" | "huobi" | "bitfinex-derivatives" | "bitfinex" | "coinbase" | "coinbase-international" | "cryptofacilities" | "kraken" | "bitstamp" | "gemini" | "poloniex" | "bybit" | "bybit-spot" | "bybit-options" | "bybit-spread" | "phemex" | "delta" | "ftx-us" | "binance-us" | "gate-io-futures" | "mexc-futures" | "gate-io" | "okcoin" | "bitflyer" | "hitbtc" | "coinflex" | "binance-jersey" | "binance-dex" | "upbit" | "ascendex" | "dydx" | "dydx-v4" | "serum" | "mango" | "huobi-dm-options" | "star-atlas" | "crypto-com" | "kucoin" | "kucoin-futures" | "bitnomial" | "woo-x" | "blockchain-com" | "bitget" | "bitget-futures" | "hyperliquid" | "lighter" | "lighter-rh" | "bullish" | "mexc" | "polymarket", BookChange>;
|
|
6
6
|
};
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=upbit.d.ts.map
|
|
@@ -1,10 +1,20 @@
|
|
|
1
|
+
import { Writable } from 'stream';
|
|
1
2
|
import { Filter } from '../types.ts';
|
|
2
|
-
import { RealTimeFeedBase } from './realtimefeed.ts';
|
|
3
|
-
export declare class BitstampRealTimeFeed extends
|
|
3
|
+
import { MultiConnectionRealTimeFeedBase, PoolingClientBase, RealTimeFeedBase } from './realtimefeed.ts';
|
|
4
|
+
export declare class BitstampRealTimeFeed extends MultiConnectionRealTimeFeedBase {
|
|
5
|
+
protected _getRealTimeFeeds(exchange: string, filters: Filter<string>[], timeoutIntervalMS?: number, onError?: (error: Error) => void): Generator<BitstampWebSocketRealTimeFeed | BitstampTickerClient, void, unknown>;
|
|
6
|
+
}
|
|
7
|
+
declare class BitstampTickerClient extends PoolingClientBase {
|
|
8
|
+
private readonly _symbols;
|
|
9
|
+
constructor(exchange: string, _symbols: string[], onError?: (error: Error) => void);
|
|
10
|
+
protected poolDataToStream(outputStream: Writable): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
declare class BitstampWebSocketRealTimeFeed extends RealTimeFeedBase {
|
|
4
13
|
protected wssURL: string;
|
|
5
14
|
protected httpURL: string;
|
|
6
15
|
protected mapToSubscribeMessages(filters: Filter<string>[]): any[];
|
|
7
16
|
protected messageIsError(message: any): boolean;
|
|
8
17
|
protected provideManualSnapshots(filters: Filter<string>[], shouldCancel: () => boolean): Promise<void>;
|
|
9
18
|
}
|
|
19
|
+
export {};
|
|
10
20
|
//# sourceMappingURL=bitstamp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitstamp.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/bitstamp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bitstamp.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/bitstamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAIxG,qBAAa,oBAAqB,SAAQ,+BAA+B;IACvE,SAAS,CAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;CAevI;AAGD,cAAM,oBAAqB,SAAQ,iBAAiB;IAGhD,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADzB,QAAQ,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAAE,EACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;cAKlB,gBAAgB,CAAC,YAAY,EAAE,QAAQ;CAcxD;AAED,cAAM,6BAA8B,SAAQ,gBAAgB;IAC1D,SAAS,CAAC,MAAM,SAA0B;IAC1C,SAAS,CAAC,OAAO,SAAoB;IAErC,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE;IAmBlE,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;cAY/B,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO;CA8B9F"}
|
|
@@ -1,8 +1,41 @@
|
|
|
1
1
|
import { getJSON } from "../handy.js";
|
|
2
|
-
import { RealTimeFeedBase } from "./realtimefeed.js";
|
|
3
|
-
|
|
2
|
+
import { MultiConnectionRealTimeFeedBase, PoolingClientBase, RealTimeFeedBase } from "./realtimefeed.js";
|
|
3
|
+
const BITSTAMP_HTTP_URL = 'https://www.bitstamp.net/api/v2';
|
|
4
|
+
export class BitstampRealTimeFeed extends MultiConnectionRealTimeFeedBase {
|
|
5
|
+
*_getRealTimeFeeds(exchange, filters, timeoutIntervalMS, onError) {
|
|
6
|
+
const wsFilters = filters.filter((f) => f.channel !== 'ticker');
|
|
7
|
+
if (wsFilters.length > 0) {
|
|
8
|
+
yield new BitstampWebSocketRealTimeFeed(exchange, wsFilters, timeoutIntervalMS, onError);
|
|
9
|
+
}
|
|
10
|
+
const tickerFilters = filters.filter((f) => f.channel === 'ticker');
|
|
11
|
+
if (tickerFilters.length > 0) {
|
|
12
|
+
yield new BitstampTickerClient(exchange, tickerFilters.flatMap((f) => f.symbols ?? []), onError);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
// Bitstamp WebSocket has no ticker channel; the recorder polls the REST ticker and stores it in this generated message shape.
|
|
17
|
+
class BitstampTickerClient extends PoolingClientBase {
|
|
18
|
+
_symbols;
|
|
19
|
+
constructor(exchange, _symbols, onError) {
|
|
20
|
+
super(exchange, 6, onError);
|
|
21
|
+
this._symbols = _symbols;
|
|
22
|
+
}
|
|
23
|
+
async poolDataToStream(outputStream) {
|
|
24
|
+
const { data: tickers } = await getJSON(`${BITSTAMP_HTTP_URL}/ticker/`, { timeout: 10000 });
|
|
25
|
+
for (const ticker of tickers) {
|
|
26
|
+
const symbol = ticker.market.replace('/', '').toLowerCase();
|
|
27
|
+
if (this._symbols.length > 0 && this._symbols.includes(symbol) === false) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (outputStream.writable) {
|
|
31
|
+
outputStream.write({ data: ticker, channel: `ticker_${symbol}`, event: 'ticker', generated: true });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
class BitstampWebSocketRealTimeFeed extends RealTimeFeedBase {
|
|
4
37
|
wssURL = 'wss://ws.bitstamp.net';
|
|
5
|
-
httpURL =
|
|
38
|
+
httpURL = BITSTAMP_HTTP_URL;
|
|
6
39
|
mapToSubscribeMessages(filters) {
|
|
7
40
|
return filters
|
|
8
41
|
.map((filter) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitstamp.js","sourceRoot":"","sources":["../../src/realtimefeeds/bitstamp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bitstamp.js","sourceRoot":"","sources":["../../src/realtimefeeds/bitstamp.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,9 @@ declare class BybitInverseRealTimeDataFeed extends BybitSingleConnectionRealTime
|
|
|
20
20
|
export declare class BybitSpotRealTimeDataFeed extends BybitSingleConnectionRealTimeDataFeed {
|
|
21
21
|
protected wssURL: string;
|
|
22
22
|
}
|
|
23
|
+
export declare class BybitSpreadRealTimeDataFeed extends BybitSingleConnectionRealTimeDataFeed {
|
|
24
|
+
protected wssURL: string;
|
|
25
|
+
}
|
|
23
26
|
export declare class BybitOptionsRealTimeDataFeed extends BybitSingleConnectionRealTimeDataFeed {
|
|
24
27
|
protected wssURL: string;
|
|
25
28
|
protected mapToSubscribeMessages(filters: Filter<string>[]): any[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bybit.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/bybit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAA;AAErF,qBAAa,qBAAsB,SAAQ,+BAA+B;IACxE,SAAS,CAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;IAoBtI,OAAO,CAAC,KAAK;CAgBd;AAED,uBAAe,qCAAsC,SAAQ,gBAAgB;IAC3E,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAE1C,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE;IAqBlE,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAI/C,SAAS,CAAC,cAAc,aAEvB;IAED,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG;CAGtC;AAED,cAAM,2BAA4B,SAAQ,qCAAqC;IAC7E,SAAS,CAAC,MAAM,EAAE,MAAM,CAA4C;CACrE;AAED,cAAM,4BAA6B,SAAQ,qCAAqC;IAC9E,SAAS,CAAC,MAAM,EAAE,MAAM,CAA6C;CACtE;AAED,qBAAa,yBAA0B,SAAQ,qCAAqC;IAClF,SAAS,CAAC,MAAM,EAAE,MAAM,CAA0C;CACnE;AAED,qBAAa,4BAA6B,SAAQ,qCAAqC;IACrF,SAAS,CAAC,MAAM,EAAE,MAAM,CAA4C;IAEpE,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE;CA2BnE"}
|
|
1
|
+
{"version":3,"file":"bybit.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/bybit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAA;AAErF,qBAAa,qBAAsB,SAAQ,+BAA+B;IACxE,SAAS,CAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;IAoBtI,OAAO,CAAC,KAAK;CAgBd;AAED,uBAAe,qCAAsC,SAAQ,gBAAgB;IAC3E,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAE1C,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE;IAqBlE,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAI/C,SAAS,CAAC,cAAc,aAEvB;IAED,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG;CAGtC;AAED,cAAM,2BAA4B,SAAQ,qCAAqC;IAC7E,SAAS,CAAC,MAAM,EAAE,MAAM,CAA4C;CACrE;AAED,cAAM,4BAA6B,SAAQ,qCAAqC;IAC9E,SAAS,CAAC,MAAM,EAAE,MAAM,CAA6C;CACtE;AAED,qBAAa,yBAA0B,SAAQ,qCAAqC;IAClF,SAAS,CAAC,MAAM,EAAE,MAAM,CAA0C;CACnE;AAED,qBAAa,2BAA4B,SAAQ,qCAAqC;IACpF,SAAS,CAAC,MAAM,EAAE,MAAM,CAA4C;CACrE;AAED,qBAAa,4BAA6B,SAAQ,qCAAqC;IACrF,SAAS,CAAC,MAAM,EAAE,MAAM,CAA4C;IAEpE,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE;CA2BnE"}
|
|
@@ -65,6 +65,9 @@ class BybitInverseRealTimeDataFeed extends BybitSingleConnectionRealTimeDataFeed
|
|
|
65
65
|
export class BybitSpotRealTimeDataFeed extends BybitSingleConnectionRealTimeDataFeed {
|
|
66
66
|
wssURL = 'wss://stream.bybit.com/v5/public/spot';
|
|
67
67
|
}
|
|
68
|
+
export class BybitSpreadRealTimeDataFeed extends BybitSingleConnectionRealTimeDataFeed {
|
|
69
|
+
wssURL = 'wss://stream.bybit.com/v5/public/spread';
|
|
70
|
+
}
|
|
68
71
|
export class BybitOptionsRealTimeDataFeed extends BybitSingleConnectionRealTimeDataFeed {
|
|
69
72
|
wssURL = 'wss://stream.bybit.com/v5/public/option';
|
|
70
73
|
mapToSubscribeMessages(filters) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bybit.js","sourceRoot":"","sources":["../../src/realtimefeeds/bybit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,OAAO,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAA;AAErF,MAAM,OAAO,qBAAsB,SAAQ,+BAA+B;IAC9D,CAAC,iBAAiB,CAAC,QAAgB,EAAE,OAAyB,EAAE,iBAA0B,EAAE,OAAgC;QACpI,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAC9E,EAAsB,CACvB,CAAA;QAED,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,EAC5G,EAAsB,CACvB,CAAA;QAED,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,2BAA2B,CAAC,QAAQ,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;QACrG,CAAC;QAED,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,4BAA4B,CAAC,QAAQ,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;QACvG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAmC;QAC/C,OAAO,CAAC,IAAsB,EAAE,OAAuB,EAAE,EAAE;YACzD,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAA;YAC9G,CAAC;YAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC;oBACR,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO;iBACR,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAA;IACH,CAAC;CACF;AAED,MAAe,qCAAsC,SAAQ,gBAAgB;IAGjE,sBAAsB,CAAC,OAAyB;QACxD,MAAM,IAAI,GAAG,OAAO;aACjB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAA;YAC9G,CAAC;YAED,OAAO,MAAM,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,EAAE,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC;aACD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QAEpB,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC3C,OAAO;gBACL,EAAE,EAAE,WAAW;gBACf,IAAI,EAAE,QAAQ;aACf,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAES,cAAc,CAAC,OAAY;QACnC,OAAO,OAAO,CAAC,OAAO,KAAK,KAAK,CAAA;IAClC,CAAC;IAES,cAAc,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAC3B,CAAC,CAAA;IAES,kBAAkB,CAAC,GAAQ;QACnC,OAAO,GAAG,CAAC,OAAO,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,MAAM,CAAA;IACnD,CAAC;CACF;AAED,MAAM,2BAA4B,SAAQ,qCAAqC;IACnE,MAAM,GAAW,yCAAyC,CAAA;CACrE;AAED,MAAM,4BAA6B,SAAQ,qCAAqC;IACpE,MAAM,GAAW,0CAA0C,CAAA;CACtE;AAED,MAAM,OAAO,yBAA0B,SAAQ,qCAAqC;IACxE,MAAM,GAAW,uCAAuC,CAAA;CACnE;AAED,MAAM,OAAO,4BAA6B,SAAQ,qCAAqC;IAC3E,MAAM,GAAW,yCAAyC,CAAA;IAE1D,sBAAsB,CAAC,OAAyB;QACxD,MAAM,IAAI,GAAG,OAAO;aACjB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAA;YAC9G,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;gBACrC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC1E,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC9B,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,EAAE,CAAA;gBACtC,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,MAAM,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,EAAE,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC;aACD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QAEpB,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC3C,OAAO;gBACL,EAAE,EAAE,WAAW;gBACf,IAAI,EAAE,QAAQ;aACf,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"bybit.js","sourceRoot":"","sources":["../../src/realtimefeeds/bybit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,OAAO,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAA;AAErF,MAAM,OAAO,qBAAsB,SAAQ,+BAA+B;IAC9D,CAAC,iBAAiB,CAAC,QAAgB,EAAE,OAAyB,EAAE,iBAA0B,EAAE,OAAgC;QACpI,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAC9E,EAAsB,CACvB,CAAA;QAED,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,EAC5G,EAAsB,CACvB,CAAA;QAED,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,2BAA2B,CAAC,QAAQ,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;QACrG,CAAC;QAED,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,4BAA4B,CAAC,QAAQ,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;QACvG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAmC;QAC/C,OAAO,CAAC,IAAsB,EAAE,OAAuB,EAAE,EAAE;YACzD,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAA;YAC9G,CAAC;YAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC;oBACR,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO;iBACR,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAA;IACH,CAAC;CACF;AAED,MAAe,qCAAsC,SAAQ,gBAAgB;IAGjE,sBAAsB,CAAC,OAAyB;QACxD,MAAM,IAAI,GAAG,OAAO;aACjB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAA;YAC9G,CAAC;YAED,OAAO,MAAM,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,EAAE,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC;aACD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QAEpB,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC3C,OAAO;gBACL,EAAE,EAAE,WAAW;gBACf,IAAI,EAAE,QAAQ;aACf,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAES,cAAc,CAAC,OAAY;QACnC,OAAO,OAAO,CAAC,OAAO,KAAK,KAAK,CAAA;IAClC,CAAC;IAES,cAAc,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAC3B,CAAC,CAAA;IAES,kBAAkB,CAAC,GAAQ;QACnC,OAAO,GAAG,CAAC,OAAO,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,MAAM,CAAA;IACnD,CAAC;CACF;AAED,MAAM,2BAA4B,SAAQ,qCAAqC;IACnE,MAAM,GAAW,yCAAyC,CAAA;CACrE;AAED,MAAM,4BAA6B,SAAQ,qCAAqC;IACpE,MAAM,GAAW,0CAA0C,CAAA;CACtE;AAED,MAAM,OAAO,yBAA0B,SAAQ,qCAAqC;IACxE,MAAM,GAAW,uCAAuC,CAAA;CACnE;AAED,MAAM,OAAO,2BAA4B,SAAQ,qCAAqC;IAC1E,MAAM,GAAW,yCAAyC,CAAA;CACrE;AAED,MAAM,OAAO,4BAA6B,SAAQ,qCAAqC;IAC3E,MAAM,GAAW,yCAAyC,CAAA;IAE1D,sBAAsB,CAAC,OAAyB;QACxD,MAAM,IAAI,GAAG,OAAO;aACjB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAA;YAC9G,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;gBACrC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC1E,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC9B,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,EAAE,CAAA;gBACtC,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,MAAM,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,EAAE,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC;aACD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QAEpB,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC3C,OAAO;gBACL,EAAE,EAAE,WAAW;gBACf,IAAI,EAAE,QAAQ;aACf,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AA+B9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA6BhD,cAAc,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AA+B9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA6BhD,cAAc,mBAAmB,CAAA;AAwEjC,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAMvE;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACzB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,oDAKjC"}
|
|
@@ -6,7 +6,7 @@ import { BitflyerRealTimeFeed } from "./bitflyer.js";
|
|
|
6
6
|
import { BithumbRealTimeFeed } from "./bithumb.js";
|
|
7
7
|
import { BitstampRealTimeFeed } from "./bitstamp.js";
|
|
8
8
|
import { BitvavoRealTimeFeed } from "./bitvavo.js";
|
|
9
|
-
import { BybitOptionsRealTimeDataFeed, BybitRealTimeDataFeed, BybitSpotRealTimeDataFeed } from "./bybit.js";
|
|
9
|
+
import { BybitOptionsRealTimeDataFeed, BybitRealTimeDataFeed, BybitSpotRealTimeDataFeed, BybitSpreadRealTimeDataFeed } from "./bybit.js";
|
|
10
10
|
import { CoinbaseRealTimeFeed } from "./coinbase.js";
|
|
11
11
|
import { CryptofacilitiesRealTimeFeed } from "./cryptofacilities.js";
|
|
12
12
|
import { DeribitRealTimeDataFeed } from "./deribit.js";
|
|
@@ -92,6 +92,7 @@ const realTimeFeedsMap = {
|
|
|
92
92
|
mango: MangoRealTimeFeed,
|
|
93
93
|
'bybit-spot': BybitSpotRealTimeDataFeed,
|
|
94
94
|
'bybit-options': BybitOptionsRealTimeDataFeed,
|
|
95
|
+
'bybit-spread': BybitSpreadRealTimeDataFeed,
|
|
95
96
|
'crypto-com': CryptoComRealTimeFeed,
|
|
96
97
|
kucoin: KucoinRealTimeFeed,
|
|
97
98
|
bitnomial: BitnomialRealTimeFeed,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/realtimefeeds/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC5B,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/realtimefeeds/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ export const EXCHANGES = [
|
|
|
31
31
|
'bybit',
|
|
32
32
|
'bybit-spot',
|
|
33
33
|
'bybit-options',
|
|
34
|
+
'bybit-spread',
|
|
34
35
|
'phemex',
|
|
35
36
|
'delta',
|
|
36
37
|
'ftx-us',
|
|
@@ -68,7 +69,18 @@ export const EXCHANGES = [
|
|
|
68
69
|
'polymarket'
|
|
69
70
|
] as const
|
|
70
71
|
|
|
71
|
-
const BINANCE_CHANNELS = [
|
|
72
|
+
const BINANCE_CHANNELS = [
|
|
73
|
+
'trade',
|
|
74
|
+
'aggTrade',
|
|
75
|
+
'ticker',
|
|
76
|
+
'depth',
|
|
77
|
+
'depthSnapshot',
|
|
78
|
+
'bookTicker',
|
|
79
|
+
'recentTrades',
|
|
80
|
+
'borrowInterest',
|
|
81
|
+
'tokenNav'
|
|
82
|
+
] as const
|
|
83
|
+
const BINANCE_US_CHANNELS = ['trade', 'aggTrade', 'ticker', 'depth', 'depthSnapshot', 'bookTicker', 'recentTrades'] as const
|
|
72
84
|
|
|
73
85
|
const ASTER_CHANNELS = ['trade', 'aggTrade', 'ticker', 'depth', 'depthSnapshot', 'bookTicker'] as const
|
|
74
86
|
const ASTER_FUTURES_CHANNELS = [
|
|
@@ -111,7 +123,7 @@ const BITMEX_CHANNELS = [
|
|
|
111
123
|
'tradeBin1d'
|
|
112
124
|
] as const
|
|
113
125
|
|
|
114
|
-
const BITSTAMP_CHANNELS = ['live_trades', 'live_orders', 'diff_order_book'] as const
|
|
126
|
+
const BITSTAMP_CHANNELS = ['live_trades', 'live_orders', 'diff_order_book', 'funding_rate', 'ticker'] as const
|
|
115
127
|
const BITVAVO_CHANNELS = ['book', 'getBook', 'trade', 'ticker'] as const
|
|
116
128
|
|
|
117
129
|
const BITHUMB_CHANNELS = ['trade', 'orderbook', 'ticker'] as const
|
|
@@ -504,7 +516,21 @@ const MANGO_CHANNELS = [
|
|
|
504
516
|
|
|
505
517
|
const HUOBI_DM_OPTIONS_CHANNELS = ['trade', 'detail', 'depth', 'bbo', 'open_interest', 'option_market_index', 'option_index'] as const
|
|
506
518
|
|
|
507
|
-
const
|
|
519
|
+
const BYBIT_SPREAD_CHANNELS = ['orderbook.25', 'publicTrade', 'tickers']
|
|
520
|
+
|
|
521
|
+
const BYBIT_SPOT_CHANNELS = [
|
|
522
|
+
'trade',
|
|
523
|
+
'bookTicker',
|
|
524
|
+
'depth',
|
|
525
|
+
'orderbook.1',
|
|
526
|
+
'orderbook.50',
|
|
527
|
+
'orderbook.200',
|
|
528
|
+
'orderbook.full',
|
|
529
|
+
'orderbook.rpi',
|
|
530
|
+
'publicTrade',
|
|
531
|
+
'tickers',
|
|
532
|
+
'lt'
|
|
533
|
+
]
|
|
508
534
|
|
|
509
535
|
const CRYPTO_COM_CHANNELS = ['trade', 'book', 'ticker', 'settlement', 'index', 'mark', 'funding', 'estimatedfunding']
|
|
510
536
|
|
|
@@ -599,9 +625,9 @@ export const EXCHANGE_CHANNELS_INFO = {
|
|
|
599
625
|
'okex-futures': OKEX_FUTURES_CHANNELS,
|
|
600
626
|
'okex-options': OKEX_OPTIONS_CHANNELS,
|
|
601
627
|
binance: BINANCE_CHANNELS,
|
|
602
|
-
'binance-jersey':
|
|
628
|
+
'binance-jersey': BINANCE_US_CHANNELS,
|
|
603
629
|
'binance-dex': BINANCE_DEX_CHANNELS,
|
|
604
|
-
'binance-us':
|
|
630
|
+
'binance-us': BINANCE_US_CHANNELS,
|
|
605
631
|
bitfinex: BITFINEX_CHANNELS,
|
|
606
632
|
ftx: FTX_CHANNELS,
|
|
607
633
|
'ftx-us': FTX_US_CHANNELS,
|
|
@@ -615,6 +641,7 @@ export const EXCHANGE_CHANNELS_INFO = {
|
|
|
615
641
|
'huobi-dm-swap': HUOBI_DM_SWAP_CHANNELS,
|
|
616
642
|
'huobi-dm-linear-swap': HUOBI_DM_LINEAR_SWAP_CHANNELS,
|
|
617
643
|
bybit: BYBIT_CHANNELS,
|
|
644
|
+
'bybit-spread': BYBIT_SPREAD_CHANNELS,
|
|
618
645
|
'bybit-spot': BYBIT_SPOT_CHANNELS,
|
|
619
646
|
'bybit-options': BYBIT_OPTIONS_CHANNELS,
|
|
620
647
|
okcoin: OKCOIN_CHANNELS,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { lowerCaseSymbols } from '../handy.ts'
|
|
2
|
-
import { BookChange, Trade } from '../types.ts'
|
|
3
|
-
import { Mapper } from './mapper.ts'
|
|
2
|
+
import { BookChange, DerivativeTicker, Trade } from '../types.ts'
|
|
3
|
+
import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
|
|
4
4
|
import { exchangeMappers } from './registry.ts'
|
|
5
5
|
|
|
6
6
|
// https://www.bitstamp.net/websocket/v2/
|
|
@@ -8,12 +8,13 @@ import { exchangeMappers } from './registry.ts'
|
|
|
8
8
|
export const bitstampMappers = exchangeMappers({
|
|
9
9
|
bitstamp: {
|
|
10
10
|
trades: () => bitstampTradesMapper,
|
|
11
|
-
bookChanges: () => new BitstampBookChangeMapper()
|
|
11
|
+
bookChanges: () => new BitstampBookChangeMapper(),
|
|
12
|
+
derivativeTickers: () => new BitstampDerivativeTickerMapper()
|
|
12
13
|
}
|
|
13
14
|
})
|
|
14
15
|
|
|
15
16
|
const bitstampTradesMapper: Mapper<'bitstamp', Trade> = {
|
|
16
|
-
canHandle(message:
|
|
17
|
+
canHandle(message: BitstampMessage) {
|
|
17
18
|
if (message.data === undefined) {
|
|
18
19
|
return false
|
|
19
20
|
}
|
|
@@ -43,7 +44,7 @@ const bitstampTradesMapper: Mapper<'bitstamp', Trade> = {
|
|
|
43
44
|
type: 'trade',
|
|
44
45
|
symbol: symbol.toUpperCase(),
|
|
45
46
|
exchange: 'bitstamp',
|
|
46
|
-
id: String(bitstampTrade.id),
|
|
47
|
+
id: bitstampTrade.id_str ?? String(bitstampTrade.id),
|
|
47
48
|
price: Number(bitstampTrade.price),
|
|
48
49
|
amount: Number(bitstampTrade.amount),
|
|
49
50
|
side: bitstampTrade.type === 0 ? 'buy' : 'sell',
|
|
@@ -53,10 +54,60 @@ const bitstampTradesMapper: Mapper<'bitstamp', Trade> = {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
class BitstampDerivativeTickerMapper implements Mapper<'bitstamp', DerivativeTicker> {
|
|
58
|
+
private readonly _pendingTickerInfoHelper = new PendingTickerInfoHelper()
|
|
59
|
+
|
|
60
|
+
canHandle(message: BitstampMessage) {
|
|
61
|
+
if (message.data === undefined) {
|
|
62
|
+
return false
|
|
63
|
+
}
|
|
64
|
+
if (message.event === 'funding_rate_saved') {
|
|
65
|
+
return message.channel.startsWith('funding_rate_')
|
|
66
|
+
}
|
|
67
|
+
if (message.event === 'ticker') {
|
|
68
|
+
return message.channel.startsWith('ticker_') && message.channel.endsWith('-perp')
|
|
69
|
+
}
|
|
70
|
+
return message.event === 'trade' && message.channel.startsWith('live_trades_') && message.channel.endsWith('-perp')
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
getFilters(symbols?: string[]) {
|
|
74
|
+
symbols = lowerCaseSymbols(symbols)
|
|
75
|
+
return [
|
|
76
|
+
{ channel: 'funding_rate', symbols } as const,
|
|
77
|
+
{ channel: 'live_trades', symbols } as const,
|
|
78
|
+
{ channel: 'ticker', symbols } as const
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
*map(message: BitstampTrade | BitstampFundingRate | BitstampTicker, localTimestamp: Date): IterableIterator<DerivativeTicker> {
|
|
83
|
+
const symbol = message.channel.slice(message.channel.lastIndexOf('_') + 1).toUpperCase()
|
|
84
|
+
const ticker = this._pendingTickerInfoHelper.getPendingTickerInfo(symbol, 'bitstamp')
|
|
85
|
+
if (message.event === 'trade') {
|
|
86
|
+
// Funding messages own emission and timestamps; trades only update lastPrice.
|
|
87
|
+
ticker.updateLastPrice(Number(message.data.price))
|
|
88
|
+
return
|
|
89
|
+
}
|
|
90
|
+
if (message.event === 'ticker') {
|
|
91
|
+
// Recorder-generated REST ticker, polled every 6 seconds; it only adds open interest to the funding-driven ticker.
|
|
92
|
+
ticker.updateOpenInterest(Number(message.data.open_interest))
|
|
93
|
+
return
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
ticker.updateFundingRate(Number(message.data.funding_rate))
|
|
97
|
+
ticker.updateFundingTimestamp(new Date(Number(message.data.next_funding_time) * 1000))
|
|
98
|
+
ticker.updateMarkPrice(Number(message.data.mark_price))
|
|
99
|
+
ticker.updateIndexPrice(Number(message.data.index_price))
|
|
100
|
+
ticker.updateTimestamp(new Date(Number(message.data.timestamp) * 1000))
|
|
101
|
+
if (ticker.hasChanged()) {
|
|
102
|
+
yield ticker.getSnapshot(localTimestamp)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
56
107
|
class BitstampBookChangeMapper implements Mapper<'bitstamp', BookChange> {
|
|
57
108
|
private readonly _symbolToDepthInfoMapping: { [key: string]: LocalDepthInfo } = {}
|
|
58
109
|
|
|
59
|
-
canHandle(message:
|
|
110
|
+
canHandle(message: BitstampMessage) {
|
|
60
111
|
if (message.data === undefined) {
|
|
61
112
|
return false
|
|
62
113
|
}
|
|
@@ -176,44 +227,67 @@ class BitstampBookChangeMapper implements Mapper<'bitstamp', BookChange> {
|
|
|
176
227
|
}
|
|
177
228
|
}
|
|
178
229
|
|
|
179
|
-
type
|
|
180
|
-
event:
|
|
230
|
+
type BitstampMessage<Event extends string = string, Data = unknown> = {
|
|
231
|
+
event: Event
|
|
181
232
|
channel: string
|
|
182
|
-
data:
|
|
233
|
+
data: Data
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
type BitstampTrade = BitstampMessage<
|
|
237
|
+
'trade',
|
|
238
|
+
{
|
|
183
239
|
microtimestamp: string
|
|
184
240
|
amount: number
|
|
185
241
|
price: number
|
|
186
242
|
type: number
|
|
187
243
|
id: number
|
|
244
|
+
id_str?: string
|
|
245
|
+
}
|
|
246
|
+
>
|
|
247
|
+
type BitstampTicker = BitstampMessage<
|
|
248
|
+
'ticker',
|
|
249
|
+
{
|
|
250
|
+
market: string
|
|
251
|
+
open_interest: string
|
|
252
|
+
}
|
|
253
|
+
>
|
|
254
|
+
type BitstampFundingRate = BitstampMessage<
|
|
255
|
+
'funding_rate_saved',
|
|
256
|
+
{
|
|
257
|
+
market: string
|
|
258
|
+
funding_rate: string
|
|
259
|
+
mark_price: string
|
|
260
|
+
index_price: string
|
|
261
|
+
timestamp: string
|
|
262
|
+
next_funding_time: string
|
|
188
263
|
}
|
|
264
|
+
>
|
|
265
|
+
|
|
266
|
+
type LocalDepthInfo = {
|
|
267
|
+
bufferedUpdates: BitstampDiffOrderBook[]
|
|
268
|
+
snapshotProcessed?: boolean
|
|
269
|
+
lastUpdateTimestamp?: number
|
|
270
|
+
lastUpdateMicroTimestamp?: number
|
|
189
271
|
}
|
|
190
|
-
type BitstampBookLevel = [string, string]
|
|
191
272
|
|
|
192
|
-
type BitstampDiffOrderBook =
|
|
193
|
-
data
|
|
194
|
-
|
|
273
|
+
type BitstampDiffOrderBook = BitstampMessage<
|
|
274
|
+
'data',
|
|
275
|
+
{
|
|
195
276
|
timestamp: string
|
|
277
|
+
microtimestamp: string
|
|
196
278
|
bids: BitstampBookLevel[]
|
|
197
279
|
asks: BitstampBookLevel[]
|
|
198
280
|
}
|
|
199
|
-
|
|
200
|
-
channel: string
|
|
201
|
-
}
|
|
281
|
+
>
|
|
202
282
|
|
|
203
|
-
type BitstampDiffOrderBookSnapshot =
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
data: {
|
|
283
|
+
type BitstampDiffOrderBookSnapshot = BitstampMessage<
|
|
284
|
+
'snapshot',
|
|
285
|
+
{
|
|
207
286
|
timestamp: string
|
|
208
287
|
microtimestamp?: string
|
|
209
288
|
bids: BitstampBookLevel[]
|
|
210
289
|
asks: BitstampBookLevel[]
|
|
211
290
|
}
|
|
212
|
-
|
|
291
|
+
>
|
|
213
292
|
|
|
214
|
-
type
|
|
215
|
-
bufferedUpdates: BitstampDiffOrderBook[]
|
|
216
|
-
snapshotProcessed?: boolean
|
|
217
|
-
lastUpdateTimestamp?: number
|
|
218
|
-
lastUpdateMicroTimestamp?: number
|
|
219
|
-
}
|
|
293
|
+
type BitstampBookLevel = [string, string]
|
|
@@ -46,12 +46,16 @@ export const bybitMappers = exchangeMappers({
|
|
|
46
46
|
trades: () => new BybitV5TradesMapper('bybit-options'),
|
|
47
47
|
bookChanges: () => new BybitV5BookChangeMapper('bybit-options', { depth: 25 }),
|
|
48
48
|
optionsSummary: () => new BybitV5OptionSummaryMapper()
|
|
49
|
+
},
|
|
50
|
+
'bybit-spread': {
|
|
51
|
+
trades: () => new BybitV5TradesMapper('bybit-spread'),
|
|
52
|
+
bookChanges: () => new BybitV5BookChangeMapper('bybit-spread', { depth: 25 })
|
|
49
53
|
}
|
|
50
54
|
})
|
|
51
55
|
|
|
52
56
|
// v5 https://bybit-exchange.github.io/docs/v5/ws/connect
|
|
53
57
|
|
|
54
|
-
class BybitV5TradesMapper implements Mapper<'bybit' | 'bybit-spot' | 'bybit-options', Trade> {
|
|
58
|
+
class BybitV5TradesMapper implements Mapper<'bybit' | 'bybit-spot' | 'bybit-options' | 'bybit-spread', Trade> {
|
|
55
59
|
constructor(private readonly _exchange: Exchange) {}
|
|
56
60
|
|
|
57
61
|
canHandle(message: BybitV5Trade) {
|
|
@@ -90,7 +94,7 @@ class BybitV5TradesMapper implements Mapper<'bybit' | 'bybit-spot' | 'bybit-opti
|
|
|
90
94
|
}
|
|
91
95
|
}
|
|
92
96
|
|
|
93
|
-
class BybitV5BookChangeMapper implements Mapper<'bybit' | 'bybit-spot' | 'bybit-options', BookChange> {
|
|
97
|
+
class BybitV5BookChangeMapper implements Mapper<'bybit' | 'bybit-spot' | 'bybit-options' | 'bybit-spread', BookChange> {
|
|
94
98
|
private readonly _depth: number
|
|
95
99
|
|
|
96
100
|
constructor(
|
|
@@ -132,7 +132,7 @@ class FTXDerivativeTickerMapper implements Mapper<'ftx', DerivativeTicker> {
|
|
|
132
132
|
return [
|
|
133
133
|
{
|
|
134
134
|
channel: 'instrument',
|
|
135
|
-
symbols
|
|
135
|
+
symbols
|
|
136
136
|
} as const
|
|
137
137
|
]
|
|
138
138
|
}
|
|
@@ -1,10 +1,57 @@
|
|
|
1
|
+
import { Writable } from 'stream'
|
|
1
2
|
import { getJSON } from '../handy.ts'
|
|
2
3
|
import { Filter } from '../types.ts'
|
|
3
|
-
import { RealTimeFeedBase } from './realtimefeed.ts'
|
|
4
|
+
import { MultiConnectionRealTimeFeedBase, PoolingClientBase, RealTimeFeedBase } from './realtimefeed.ts'
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
const BITSTAMP_HTTP_URL = 'https://www.bitstamp.net/api/v2'
|
|
7
|
+
|
|
8
|
+
export class BitstampRealTimeFeed extends MultiConnectionRealTimeFeedBase {
|
|
9
|
+
protected *_getRealTimeFeeds(exchange: string, filters: Filter<string>[], timeoutIntervalMS?: number, onError?: (error: Error) => void) {
|
|
10
|
+
const wsFilters = filters.filter((f) => f.channel !== 'ticker')
|
|
11
|
+
if (wsFilters.length > 0) {
|
|
12
|
+
yield new BitstampWebSocketRealTimeFeed(exchange, wsFilters, timeoutIntervalMS, onError)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const tickerFilters = filters.filter((f) => f.channel === 'ticker')
|
|
16
|
+
if (tickerFilters.length > 0) {
|
|
17
|
+
yield new BitstampTickerClient(
|
|
18
|
+
exchange,
|
|
19
|
+
tickerFilters.flatMap((f) => f.symbols ?? []),
|
|
20
|
+
onError
|
|
21
|
+
)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Bitstamp WebSocket has no ticker channel; the recorder polls the REST ticker and stores it in this generated message shape.
|
|
27
|
+
class BitstampTickerClient extends PoolingClientBase {
|
|
28
|
+
constructor(
|
|
29
|
+
exchange: string,
|
|
30
|
+
private readonly _symbols: string[],
|
|
31
|
+
onError?: (error: Error) => void
|
|
32
|
+
) {
|
|
33
|
+
super(exchange, 6, onError)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
protected async poolDataToStream(outputStream: Writable) {
|
|
37
|
+
const { data: tickers } = await getJSON<{ market: string }[]>(`${BITSTAMP_HTTP_URL}/ticker/`, { timeout: 10000 })
|
|
38
|
+
|
|
39
|
+
for (const ticker of tickers) {
|
|
40
|
+
const symbol = ticker.market.replace('/', '').toLowerCase()
|
|
41
|
+
if (this._symbols.length > 0 && this._symbols.includes(symbol) === false) {
|
|
42
|
+
continue
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (outputStream.writable) {
|
|
46
|
+
outputStream.write({ data: ticker, channel: `ticker_${symbol}`, event: 'ticker', generated: true })
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
class BitstampWebSocketRealTimeFeed extends RealTimeFeedBase {
|
|
6
53
|
protected wssURL = 'wss://ws.bitstamp.net'
|
|
7
|
-
protected httpURL =
|
|
54
|
+
protected httpURL = BITSTAMP_HTTP_URL
|
|
8
55
|
|
|
9
56
|
protected mapToSubscribeMessages(filters: Filter<string>[]): any[] {
|
|
10
57
|
return filters
|
|
@@ -90,6 +90,10 @@ export class BybitSpotRealTimeDataFeed extends BybitSingleConnectionRealTimeData
|
|
|
90
90
|
protected wssURL: string = 'wss://stream.bybit.com/v5/public/spot'
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
export class BybitSpreadRealTimeDataFeed extends BybitSingleConnectionRealTimeDataFeed {
|
|
94
|
+
protected wssURL: string = 'wss://stream.bybit.com/v5/public/spread'
|
|
95
|
+
}
|
|
96
|
+
|
|
93
97
|
export class BybitOptionsRealTimeDataFeed extends BybitSingleConnectionRealTimeDataFeed {
|
|
94
98
|
protected wssURL: string = 'wss://stream.bybit.com/v5/public/option'
|
|
95
99
|
|
|
@@ -13,7 +13,7 @@ import { BitflyerRealTimeFeed } from './bitflyer.ts'
|
|
|
13
13
|
import { BithumbRealTimeFeed } from './bithumb.ts'
|
|
14
14
|
import { BitstampRealTimeFeed } from './bitstamp.ts'
|
|
15
15
|
import { BitvavoRealTimeFeed } from './bitvavo.ts'
|
|
16
|
-
import { BybitOptionsRealTimeDataFeed, BybitRealTimeDataFeed, BybitSpotRealTimeDataFeed } from './bybit.ts'
|
|
16
|
+
import { BybitOptionsRealTimeDataFeed, BybitRealTimeDataFeed, BybitSpotRealTimeDataFeed, BybitSpreadRealTimeDataFeed } from './bybit.ts'
|
|
17
17
|
import { CoinbaseRealTimeFeed } from './coinbase.ts'
|
|
18
18
|
import { CryptofacilitiesRealTimeFeed } from './cryptofacilities.ts'
|
|
19
19
|
import { DeribitRealTimeDataFeed } from './deribit.ts'
|
|
@@ -110,6 +110,7 @@ const realTimeFeedsMap: {
|
|
|
110
110
|
mango: MangoRealTimeFeed,
|
|
111
111
|
'bybit-spot': BybitSpotRealTimeDataFeed,
|
|
112
112
|
'bybit-options': BybitOptionsRealTimeDataFeed,
|
|
113
|
+
'bybit-spread': BybitSpreadRealTimeDataFeed,
|
|
113
114
|
'crypto-com': CryptoComRealTimeFeed,
|
|
114
115
|
kucoin: KucoinRealTimeFeed,
|
|
115
116
|
bitnomial: BitnomialRealTimeFeed,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tardis-machine",
|
|
3
|
-
"version": "18.
|
|
3
|
+
"version": "18.4.0",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=24.19"
|
|
6
6
|
},
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"license": "MPL-2.0",
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"debug": "^4.4.3",
|
|
79
|
-
"tardis-dev": "^18.
|
|
79
|
+
"tardis-dev": "^18.4.0",
|
|
80
80
|
"ws": "^8.21.3"
|
|
81
81
|
},
|
|
82
82
|
"bundleDependencies": true,
|
|
@@ -863,6 +863,7 @@ export const subscriptionsMappers: Record<Exchange, SubscriptionMapper> = {
|
|
|
863
863
|
'woo-x': wooxMapper,
|
|
864
864
|
'blockchain-com': blockchainComMapper,
|
|
865
865
|
'bybit-options': bybitMapper,
|
|
866
|
+
'bybit-spread': bybitMapper,
|
|
866
867
|
'binance-european-options': binanceMapper,
|
|
867
868
|
'okex-spreads': okexMapper,
|
|
868
869
|
'kucoin-futures': kucoinMapper,
|