@@ -13,7 +13,6 @@ import {
1313 WsMessageKlineFormatted ,
1414 WsMessageMarkPriceUpdateEventFormatted ,
1515 WsMessagePartialBookDepthEventFormatted ,
16- WsMessageRollingWindowTickerFormatted ,
1716 WsMessageSpotBalanceUpdateFormatted ,
1817 WsMessageSpotOutboundAccountPositionFormatted ,
1918 WsMessageSpotUserDataEventFormatted ,
@@ -49,13 +48,13 @@ export function neverGuard(x: never, msg: string): Error {
4948 * Typeguards for WsFormattedMessage event types:
5049 */
5150
52- export function isWsFormattedMarkPriceUpdateEvent ( // ok
51+ export function isWsFormattedMarkPriceUpdateEvent (
5352 data : WsFormattedMessage ,
5453) : data is WsMessageMarkPriceUpdateEventFormatted {
5554 return ! Array . isArray ( data ) && data . eventType === 'markPriceUpdate' ;
5655}
5756
58- export function isWsFormattedMarkPriceUpdateArray ( // ok
57+ export function isWsFormattedMarkPriceUpdateArray (
5958 data : WsFormattedMessage ,
6059) : data is WsMessageMarkPriceUpdateEventFormatted [ ] {
6160 return (
@@ -72,54 +71,73 @@ export function isWsFormattedMarkPriceUpdate(
7271 return isWsFormattedMarkPriceUpdateArray ( data ) ;
7372}
7473
75- export function isWsFormattedTrade ( // ok
74+ export function isWsFormattedTrade (
7675 data : WsFormattedMessage ,
7776) : data is WsMessageTradeFormatted {
7877 return ! Array . isArray ( data ) && data . eventType === 'trade' ;
7978}
8079
81- export function isWsFormattedKline ( // ok
80+ export function isWsFormattedKline (
8281 data : WsFormattedMessage ,
8382) : data is WsMessageKlineFormatted {
8483 return ! Array . isArray ( data ) && data . eventType === 'kline' ;
8584}
8685
87- export function isWsFormatted24hrTicker ( // ok
86+ export function isWsFormatted24hrTicker (
8887 data : WsFormattedMessage ,
8988) : data is WsMessage24hrTickerFormatted {
9089 return ! Array . isArray ( data ) && data . eventType === '24hrTicker' ;
9190}
9291
93- export function isWsFormattedForceOrder ( // ok
92+ export function isWsFormattedForceOrder (
9493 data : WsFormattedMessage ,
9594) : data is WsMessageForceOrderFormatted {
9695 return ! Array . isArray ( data ) && data . eventType === 'forceOrder' ;
9796}
9897
99- export function isWsFormatted24hrTickerArray ( // BROKEN
98+ /**
99+ * !ticker@arr
100+ * @param data
101+ * @returns
102+ */
103+ export function isWsFormatted24hrTickerArray (
100104 data : WsFormattedMessage ,
101105) : data is WsMessage24hrTickerFormatted [ ] {
102106 return (
103107 Array . isArray ( data ) &&
104108 data . length !== 0 &&
105- data [ 0 ] . eventType === '24hrTicker'
109+ // topic in ws url
110+ ( [ '24hrTicker' ] . includes ( data [ 0 ] . eventType ) || // multiplex subscriptions
111+ ( ! ! data [ 0 ] . streamName && [ '!ticker@arr' ] . includes ( data [ 0 ] . streamName ) ) )
106112 ) ;
107113}
108114
109- export function isWsFormattedRollingWindowTickerArray ( // dont exist anymore ??
115+ /**
116+ * !ticker_1h@arr
117+ *
118+ * @param data
119+ * @returns
120+ */
121+ export function isWsFormattedRollingWindowTickerArray (
110122 data : WsFormattedMessage ,
111- ) : data is WsMessageRollingWindowTickerFormatted [ ] {
123+ ) : data is WsMessage24hrTickerFormatted [ ] {
112124 return (
113125 Array . isArray ( data ) &&
114126 data . length !== 0 &&
115- [ '1hTicker' , '4hTicker' , '1dTicker' ] . includes ( data [ 0 ] . eventType )
127+ // topic in ws url
128+ ( [ '1hTicker' , '4hTicker' , '1dTicker' ] . includes ( data [ 0 ] . eventType ) ||
129+ // multiplex subscriptions
130+ ( ! ! data [ 0 ] . streamName &&
131+ [ '!ticker_1h@arr' , '!ticker_4h@arr' , '!ticker_1d@arr' ] . includes (
132+ data [ 0 ] . streamName ,
133+ ) ) )
116134 ) ;
117135}
118136
119137/**
120138 * Typeguard to validate a 'Compressed/Aggregate' trade
121139 */
122- export function isWsAggTradeFormatted ( // ok
140+ export function isWsAggTradeFormatted (
123141 data : WsFormattedMessage ,
124142) : data is WsMessageAggTradeFormatted {
125143 return ! Array . isArray ( data ) && data . eventType === 'aggTrade' ;
@@ -129,14 +147,22 @@ const partialBookDepthEventTypeMap = new Map()
129147 // For dedicated connection
130148 . set ( 'partialBookDepth' , true )
131149 // For multiplex connection
150+ . set ( 'depth5' , true )
151+ . set ( 'depth10' , true )
152+ . set ( 'depth20' , true )
132153 . set ( 'depth5@100ms' , true )
133154 . set ( 'depth10@100ms' , true )
134155 . set ( 'depth20@100ms' , true )
135156 . set ( 'depth5@1000ms' , true )
136157 . set ( 'depth10@1000ms' , true )
137158 . set ( 'depth20@1000ms' , true ) ;
138159
139- export function isWsPartialBookDepthEventFormatted ( // BROKEN
160+ /**
161+ * <symbol>@depth<levels> OR <symbol>@depth<levels>@100ms
162+ * @param data
163+ * @returns
164+ */
165+ export function isWsPartialBookDepthEventFormatted (
140166 data : WsFormattedMessage ,
141167) : data is WsMessagePartialBookDepthEventFormatted {
142168 return (
0 commit comments