tardis-dev 12.7.9 → 13.1.2
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/consts.d.ts +4 -4
- package/dist/consts.d.ts.map +1 -1
- package/dist/consts.js +58 -4
- package/dist/consts.js.map +1 -1
- package/dist/handy.d.ts +2 -0
- package/dist/handy.d.ts.map +1 -1
- package/dist/handy.js +15 -1
- package/dist/handy.js.map +1 -1
- package/dist/mappers/ascendex.d.ts +1 -1
- package/dist/mappers/ascendex.d.ts.map +1 -1
- package/dist/mappers/ascendex.js +5 -0
- package/dist/mappers/ascendex.js.map +1 -1
- package/dist/mappers/binance.d.ts +1 -1
- package/dist/mappers/binance.d.ts.map +1 -1
- package/dist/mappers/binance.js +5 -11
- package/dist/mappers/binance.js.map +1 -1
- package/dist/mappers/binancedex.d.ts +1 -1
- package/dist/mappers/binancedex.d.ts.map +1 -1
- package/dist/mappers/binancedex.js +4 -0
- package/dist/mappers/binancedex.js.map +1 -1
- package/dist/mappers/binanceoptions.d.ts.map +1 -1
- package/dist/mappers/binanceoptions.js +3 -0
- package/dist/mappers/binanceoptions.js.map +1 -1
- package/dist/mappers/bitfinex.d.ts +1 -1
- package/dist/mappers/bitfinex.d.ts.map +1 -1
- package/dist/mappers/bitfinex.js +5 -0
- package/dist/mappers/bitfinex.js.map +1 -1
- package/dist/mappers/bitflyer.d.ts +1 -1
- package/dist/mappers/bitflyer.d.ts.map +1 -1
- package/dist/mappers/bitflyer.js +3 -0
- package/dist/mappers/bitflyer.js.map +1 -1
- package/dist/mappers/bitmex.d.ts +1 -1
- package/dist/mappers/bitmex.d.ts.map +1 -1
- package/dist/mappers/bitmex.js +5 -0
- package/dist/mappers/bitmex.js.map +1 -1
- package/dist/mappers/bitstamp.d.ts.map +1 -1
- package/dist/mappers/bitstamp.js +3 -8
- package/dist/mappers/bitstamp.js.map +1 -1
- package/dist/mappers/bybit.d.ts.map +1 -1
- package/dist/mappers/bybit.js +5 -0
- package/dist/mappers/bybit.js.map +1 -1
- package/dist/mappers/coinbase.d.ts.map +1 -1
- package/dist/mappers/coinbase.js +3 -0
- package/dist/mappers/coinbase.js.map +1 -1
- package/dist/mappers/coinflex.d.ts +1 -1
- package/dist/mappers/coinflex.d.ts.map +1 -1
- package/dist/mappers/coinflex.js +4 -0
- package/dist/mappers/coinflex.js.map +1 -1
- package/dist/mappers/cryptofacilities.d.ts +1 -1
- package/dist/mappers/cryptofacilities.d.ts.map +1 -1
- package/dist/mappers/cryptofacilities.js +6 -0
- package/dist/mappers/cryptofacilities.js.map +1 -1
- package/dist/mappers/delta.d.ts +1 -1
- package/dist/mappers/delta.d.ts.map +1 -1
- package/dist/mappers/delta.js +4 -0
- package/dist/mappers/delta.js.map +1 -1
- package/dist/mappers/deribit.d.ts +1 -1
- package/dist/mappers/deribit.d.ts.map +1 -1
- package/dist/mappers/deribit.js +6 -0
- package/dist/mappers/deribit.js.map +1 -1
- package/dist/mappers/dydx.d.ts +1 -1
- package/dist/mappers/dydx.d.ts.map +1 -1
- package/dist/mappers/dydx.js +4 -0
- package/dist/mappers/dydx.js.map +1 -1
- package/dist/mappers/ftx.d.ts +1 -1
- package/dist/mappers/ftx.d.ts.map +1 -1
- package/dist/mappers/ftx.js +5 -0
- package/dist/mappers/ftx.js.map +1 -1
- package/dist/mappers/gateio.d.ts.map +1 -1
- package/dist/mappers/gateio.js +3 -0
- package/dist/mappers/gateio.js.map +1 -1
- package/dist/mappers/gateiofutures.d.ts +1 -1
- package/dist/mappers/gateiofutures.d.ts.map +1 -1
- package/dist/mappers/gateiofutures.js +4 -0
- package/dist/mappers/gateiofutures.js.map +1 -1
- package/dist/mappers/gemini.d.ts.map +1 -1
- package/dist/mappers/gemini.js +3 -0
- package/dist/mappers/gemini.js.map +1 -1
- package/dist/mappers/hitbtc.d.ts.map +1 -1
- package/dist/mappers/hitbtc.js +3 -0
- package/dist/mappers/hitbtc.js.map +1 -1
- package/dist/mappers/huobi.d.ts +2 -2
- package/dist/mappers/huobi.d.ts.map +1 -1
- package/dist/mappers/huobi.js +3 -1
- package/dist/mappers/huobi.js.map +1 -1
- package/dist/mappers/index.d.ts +3 -3
- package/dist/mappers/index.d.ts.map +1 -1
- package/dist/mappers/index.js +43 -23
- package/dist/mappers/index.js.map +1 -1
- package/dist/mappers/kraken.d.ts.map +1 -1
- package/dist/mappers/kraken.js +3 -0
- package/dist/mappers/kraken.js.map +1 -1
- package/dist/mappers/okex.d.ts +245 -1
- package/dist/mappers/okex.d.ts.map +1 -1
- package/dist/mappers/okex.js +396 -1
- package/dist/mappers/okex.js.map +1 -1
- package/dist/mappers/poloniex.d.ts.map +1 -1
- package/dist/mappers/poloniex.js +3 -0
- package/dist/mappers/poloniex.js.map +1 -1
- package/dist/mappers/serum.d.ts +1 -1
- package/dist/mappers/serum.d.ts.map +1 -1
- package/dist/mappers/serum.js +12 -3
- package/dist/mappers/serum.js.map +1 -1
- package/dist/mappers/upbit.d.ts +1 -1
- package/dist/mappers/upbit.d.ts.map +1 -1
- package/dist/mappers/upbit.js +3 -0
- package/dist/mappers/upbit.js.map +1 -1
- package/dist/realtimefeeds/okex.d.ts +4 -2
- package/dist/realtimefeeds/okex.d.ts.map +1 -1
- package/dist/realtimefeeds/okex.js +38 -10
- package/dist/realtimefeeds/okex.js.map +1 -1
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +2 -6
- package/dist/replay.js.map +1 -1
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +2 -6
- package/dist/stream.js.map +1 -1
- package/package.json +13 -13
- package/src/consts.ts +62 -4
- package/src/handy.ts +14 -0
- package/src/mappers/ascendex.ts +6 -1
- package/src/mappers/binance.ts +2 -9
- package/src/mappers/binancedex.ts +6 -1
- package/src/mappers/binanceoptions.ts +7 -1
- package/src/mappers/bitfinex.ts +10 -1
- package/src/mappers/bitflyer.ts +8 -2
- package/src/mappers/bitmex.ts +12 -2
- package/src/mappers/bitstamp.ts +1 -7
- package/src/mappers/bybit.ts +9 -0
- package/src/mappers/coinbase.ts +7 -1
- package/src/mappers/coinflex.ts +8 -1
- package/src/mappers/cryptofacilities.ts +12 -1
- package/src/mappers/delta.ts +8 -1
- package/src/mappers/deribit.ts +14 -2
- package/src/mappers/dydx.ts +8 -1
- package/src/mappers/ftx.ts +12 -2
- package/src/mappers/gateio.ts +5 -0
- package/src/mappers/gateiofutures.ts +8 -1
- package/src/mappers/gemini.ts +5 -0
- package/src/mappers/hitbtc.ts +5 -0
- package/src/mappers/huobi.ts +6 -2
- package/src/mappers/index.ts +77 -24
- package/src/mappers/kraken.ts +7 -1
- package/src/mappers/okex.ts +591 -2
- package/src/mappers/poloniex.ts +5 -0
- package/src/mappers/serum.ts +17 -5
- package/src/mappers/upbit.ts +6 -1
- package/src/realtimefeeds/okex.ts +42 -10
- package/src/replay.ts +2 -7
- package/src/stream.ts +3 -7
package/src/mappers/serum.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { asNumberIfValid, upperCaseSymbols } from '../handy'
|
|
2
|
+
import { BookChange, BookTicker, Exchange, Trade } from '../types'
|
|
1
3
|
import { Mapper } from './mapper'
|
|
2
|
-
import { Trade, BookChange, BookTicker, Exchange } from '../types'
|
|
3
|
-
import { asNumberIfValid } from '../handy'
|
|
4
4
|
|
|
5
5
|
export class SerumTradesMapper implements Mapper<'serum' | 'star-atlas', Trade> {
|
|
6
6
|
constructor(private readonly _exchange: Exchange) {}
|
|
@@ -10,6 +10,10 @@ export class SerumTradesMapper implements Mapper<'serum' | 'star-atlas', Trade>
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
getFilters(symbols?: string[]) {
|
|
13
|
+
if (this._exchange === 'serum') {
|
|
14
|
+
symbols = upperCaseSymbols(symbols)
|
|
15
|
+
}
|
|
16
|
+
|
|
13
17
|
return [
|
|
14
18
|
{
|
|
15
19
|
channel: 'trade',
|
|
@@ -21,7 +25,7 @@ export class SerumTradesMapper implements Mapper<'serum' | 'star-atlas', Trade>
|
|
|
21
25
|
*map(message: SerumVialTrade, localTimestamp: Date): IterableIterator<Trade> {
|
|
22
26
|
yield {
|
|
23
27
|
type: 'trade',
|
|
24
|
-
symbol: message.market,
|
|
28
|
+
symbol: message.market.toUpperCase(),
|
|
25
29
|
exchange: this._exchange,
|
|
26
30
|
id: message.id,
|
|
27
31
|
price: Number(message.price),
|
|
@@ -41,6 +45,10 @@ export class SerumBookChangeMapper implements Mapper<'serum' | 'star-atlas', Boo
|
|
|
41
45
|
}
|
|
42
46
|
|
|
43
47
|
getFilters(symbols?: string[]) {
|
|
48
|
+
if (this._exchange === 'serum') {
|
|
49
|
+
symbols = upperCaseSymbols(symbols)
|
|
50
|
+
}
|
|
51
|
+
|
|
44
52
|
return [
|
|
45
53
|
{
|
|
46
54
|
channel: 'l2snapshot',
|
|
@@ -56,7 +64,7 @@ export class SerumBookChangeMapper implements Mapper<'serum' | 'star-atlas', Boo
|
|
|
56
64
|
*map(message: SerumVialL2Snapshot | SerumVialL2Update, localTimestamp: Date): IterableIterator<BookChange> {
|
|
57
65
|
yield {
|
|
58
66
|
type: 'book_change',
|
|
59
|
-
symbol: message.market,
|
|
67
|
+
symbol: message.market.toUpperCase(),
|
|
60
68
|
exchange: this._exchange,
|
|
61
69
|
isSnapshot: message.type === 'l2snapshot',
|
|
62
70
|
bids: message.bids.map(this.mapBookLevel),
|
|
@@ -81,6 +89,10 @@ export class SerumBookTickerMapper implements Mapper<'serum' | 'star-atlas', Boo
|
|
|
81
89
|
}
|
|
82
90
|
|
|
83
91
|
getFilters(symbols?: string[]) {
|
|
92
|
+
if (this._exchange === 'serum') {
|
|
93
|
+
symbols = upperCaseSymbols(symbols)
|
|
94
|
+
}
|
|
95
|
+
|
|
84
96
|
return [
|
|
85
97
|
{
|
|
86
98
|
channel: 'quote',
|
|
@@ -92,7 +104,7 @@ export class SerumBookTickerMapper implements Mapper<'serum' | 'star-atlas', Boo
|
|
|
92
104
|
*map(message: SerumVialQuote, localTimestamp: Date): IterableIterator<BookTicker> {
|
|
93
105
|
yield {
|
|
94
106
|
type: 'book_ticker',
|
|
95
|
-
symbol: message.market,
|
|
107
|
+
symbol: message.market.toUpperCase(),
|
|
96
108
|
exchange: this._exchange,
|
|
97
109
|
|
|
98
110
|
askAmount: message.bestAsk !== undefined ? asNumberIfValid(message.bestAsk[1]) : undefined,
|
package/src/mappers/upbit.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { upperCaseSymbols } from '../handy'
|
|
2
|
+
import { BookChange, BookPriceLevel, Trade } from '../types'
|
|
1
3
|
import { Mapper } from './mapper'
|
|
2
|
-
import { Trade, BookChange, BookPriceLevel } from '../types'
|
|
3
4
|
|
|
4
5
|
export class UpbitTradesMapper implements Mapper<'upbit', Trade> {
|
|
5
6
|
canHandle(message: UpbitTrade) {
|
|
@@ -7,6 +8,8 @@ export class UpbitTradesMapper implements Mapper<'upbit', Trade> {
|
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
getFilters(symbols?: string[]) {
|
|
11
|
+
symbols = upperCaseSymbols(symbols)
|
|
12
|
+
|
|
10
13
|
return [
|
|
11
14
|
{
|
|
12
15
|
channel: 'trade',
|
|
@@ -36,6 +39,8 @@ export class UpbitBookChangeMapper implements Mapper<'upbit', BookChange> {
|
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
getFilters(symbols?: string[]) {
|
|
42
|
+
symbols = upperCaseSymbols(symbols)
|
|
43
|
+
|
|
39
44
|
return [
|
|
40
45
|
{
|
|
41
46
|
channel: 'orderbook',
|
|
@@ -3,14 +3,40 @@ import { Filter } from '../types'
|
|
|
3
3
|
import { RealTimeFeedBase } from './realtimefeed'
|
|
4
4
|
|
|
5
5
|
export class OkexRealTimeFeed extends RealTimeFeedBase {
|
|
6
|
-
protected wssURL = 'wss://
|
|
6
|
+
protected wssURL = 'wss://ws.okex.com:8443/ws/v5/public'
|
|
7
7
|
|
|
8
|
-
protected
|
|
9
|
-
|
|
8
|
+
protected mapToSubscribeMessages(filters: Filter<string>[]): any[] {
|
|
9
|
+
const args = filters
|
|
10
|
+
.map((filter) => {
|
|
11
|
+
if (!filter.symbols || filter.symbols.length === 0) {
|
|
12
|
+
throw new Error(`${this._exchange} RealTimeFeed requires explicitly specified symbols when subscribing to live feed`)
|
|
13
|
+
}
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
return filter.symbols.map((symbol) => {
|
|
16
|
+
return {
|
|
17
|
+
channel: filter.channel,
|
|
18
|
+
instId: symbol
|
|
19
|
+
}
|
|
20
|
+
})
|
|
21
|
+
})
|
|
22
|
+
.flatMap((s) => s)
|
|
23
|
+
|
|
24
|
+
return [
|
|
25
|
+
{
|
|
26
|
+
op: 'subscribe',
|
|
27
|
+
args: [...new Set(args)]
|
|
28
|
+
}
|
|
29
|
+
]
|
|
12
30
|
}
|
|
13
31
|
|
|
32
|
+
protected messageIsError(message: any): boolean {
|
|
33
|
+
return message.event === 'error'
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export class OKCoinRealTimeFeed extends RealTimeFeedBase {
|
|
38
|
+
protected wssURL = 'wss://real.okcoin.com:8443/ws/v3'
|
|
39
|
+
|
|
14
40
|
protected mapToSubscribeMessages(filters: Filter<string>[]): any[] {
|
|
15
41
|
const args = filters
|
|
16
42
|
.map((filter) => {
|
|
@@ -35,17 +61,19 @@ export class OkexRealTimeFeed extends RealTimeFeedBase {
|
|
|
35
61
|
protected messageIsError(message: any): boolean {
|
|
36
62
|
return message.event === 'error'
|
|
37
63
|
}
|
|
38
|
-
}
|
|
39
64
|
|
|
40
|
-
|
|
41
|
-
|
|
65
|
+
protected decompress = (message: any) => {
|
|
66
|
+
message = inflateRawSync(message) as Buffer
|
|
67
|
+
|
|
68
|
+
return message
|
|
69
|
+
}
|
|
42
70
|
}
|
|
43
71
|
|
|
44
72
|
export class OkexOptionsRealTimeFeed extends OkexRealTimeFeed {
|
|
45
|
-
private _defaultIndexes = ['BTC-USD', 'ETH-USD'
|
|
73
|
+
private _defaultIndexes = ['BTC-USD', 'ETH-USD']
|
|
46
74
|
|
|
47
75
|
private _channelRequiresIndexNotSymbol(channel: string) {
|
|
48
|
-
if (channel === 'index
|
|
76
|
+
if (channel === 'index-tickers' || channel === 'opt-summary') {
|
|
49
77
|
return true
|
|
50
78
|
}
|
|
51
79
|
return false
|
|
@@ -70,7 +98,11 @@ export class OkexOptionsRealTimeFeed extends OkexRealTimeFeed {
|
|
|
70
98
|
const symbolParts = symbol.split('-')
|
|
71
99
|
finalSymbol = `${symbolParts[0]}-${symbolParts[1]}`
|
|
72
100
|
}
|
|
73
|
-
return
|
|
101
|
+
return {
|
|
102
|
+
channel: filter.channel,
|
|
103
|
+
instId: filter.channel !== 'opt-summary' ? finalSymbol : undefined,
|
|
104
|
+
uly: filter.channel === 'opt-summary' ? finalSymbol : undefined
|
|
105
|
+
}
|
|
74
106
|
})
|
|
75
107
|
})
|
|
76
108
|
.flatMap((s) => s)
|
package/src/replay.ts
CHANGED
|
@@ -247,12 +247,6 @@ export function replayNormalized<T extends Exchange, U extends MapperFactory<T,
|
|
|
247
247
|
? X
|
|
248
248
|
: never
|
|
249
249
|
> {
|
|
250
|
-
// mappers assume that symbols are uppercased by default
|
|
251
|
-
// if user by mistake provide lowercase one let's automatically fix it
|
|
252
|
-
if (symbols !== undefined) {
|
|
253
|
-
symbols = symbols.map((s) => s.toUpperCase())
|
|
254
|
-
}
|
|
255
|
-
|
|
256
250
|
const fromDate = parseAsUTCDate(from)
|
|
257
251
|
|
|
258
252
|
validateReplayNormalizedOptions(fromDate, normalizers)
|
|
@@ -275,8 +269,9 @@ export function replayNormalized<T extends Exchange, U extends MapperFactory<T,
|
|
|
275
269
|
|
|
276
270
|
// filter normalized messages by symbol as some exchanges do not provide server side filtering so we could end up with messages
|
|
277
271
|
// for symbols we've not requested for
|
|
272
|
+
const upperCaseSymbols = symbols !== undefined ? symbols.map((s) => s.toUpperCase()) : undefined
|
|
278
273
|
const filter = (symbol: string) => {
|
|
279
|
-
return
|
|
274
|
+
return upperCaseSymbols === undefined || upperCaseSymbols.length === 0 || upperCaseSymbols.includes(symbol)
|
|
280
275
|
}
|
|
281
276
|
|
|
282
277
|
return normalizeMessages(exchange, messages, mappers, createMappers, withDisconnectMessages, filter)
|
package/src/stream.ts
CHANGED
|
@@ -61,12 +61,6 @@ async function* _streamNormalized<T extends Exchange, U extends MapperFactory<T,
|
|
|
61
61
|
? X
|
|
62
62
|
: never
|
|
63
63
|
> {
|
|
64
|
-
// mappers assume that symbols are uppercased by default
|
|
65
|
-
// if user by mistake provide lowercase one let's automatically fix it
|
|
66
|
-
if (symbols !== undefined) {
|
|
67
|
-
symbols = symbols.map((s) => s.toUpperCase())
|
|
68
|
-
}
|
|
69
|
-
|
|
70
64
|
while (true) {
|
|
71
65
|
try {
|
|
72
66
|
const createMappers = (localTimestamp: Date) => normalizers.map((m) => m(exchange, localTimestamp))
|
|
@@ -83,8 +77,10 @@ async function* _streamNormalized<T extends Exchange, U extends MapperFactory<T,
|
|
|
83
77
|
|
|
84
78
|
// filter normalized messages by symbol as some exchanges do not offer subscribing to specific symbols for some of the channels
|
|
85
79
|
// for example Phemex market24h channel
|
|
80
|
+
|
|
81
|
+
const upperCaseSymbols = symbols !== undefined ? symbols.map((s) => s.toUpperCase()) : undefined
|
|
86
82
|
const filter = (symbol: string) => {
|
|
87
|
-
return
|
|
83
|
+
return upperCaseSymbols === undefined || upperCaseSymbols.length === 0 || upperCaseSymbols.includes(symbol)
|
|
88
84
|
}
|
|
89
85
|
|
|
90
86
|
const normalizedMessages = normalizeMessages(exchange, messages, mappers, createMappers, withDisconnectMessages, filter, new Date())
|