tardis-dev 13.4.9 → 13.4.12

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.
Files changed (74) hide show
  1. package/dist/consts.d.ts +4 -2
  2. package/dist/consts.d.ts.map +1 -1
  3. package/dist/consts.js +19 -2
  4. package/dist/consts.js.map +1 -1
  5. package/dist/mappers/bybit.d.ts +1 -1
  6. package/dist/mappers/bybitspot.d.ts +96 -0
  7. package/dist/mappers/bybitspot.d.ts.map +1 -0
  8. package/dist/mappers/bybitspot.js +102 -0
  9. package/dist/mappers/bybitspot.js.map +1 -0
  10. package/dist/mappers/huobi.d.ts +3 -3
  11. package/dist/mappers/huobi.js +1 -1
  12. package/dist/mappers/index.d.ts +3 -3
  13. package/dist/mappers/index.d.ts.map +1 -1
  14. package/dist/mappers/index.js +16 -5
  15. package/dist/mappers/index.js.map +1 -1
  16. package/dist/mappers/poloniex.d.ts +60 -0
  17. package/dist/mappers/poloniex.d.ts.map +1 -1
  18. package/dist/mappers/poloniex.js +73 -2
  19. package/dist/mappers/poloniex.js.map +1 -1
  20. package/dist/mappers/serum.d.ts +12 -0
  21. package/dist/mappers/serum.d.ts.map +1 -1
  22. package/dist/mappers/serum.js +2 -2
  23. package/dist/mappers/serum.js.map +1 -1
  24. package/dist/realtimefeeds/ascendex.d.ts +2 -0
  25. package/dist/realtimefeeds/ascendex.d.ts.map +1 -1
  26. package/dist/realtimefeeds/ascendex.js +6 -0
  27. package/dist/realtimefeeds/ascendex.js.map +1 -1
  28. package/dist/realtimefeeds/bybit.d.ts +2 -0
  29. package/dist/realtimefeeds/bybit.d.ts.map +1 -1
  30. package/dist/realtimefeeds/bybit.js +6 -0
  31. package/dist/realtimefeeds/bybit.js.map +1 -1
  32. package/dist/realtimefeeds/bybitspot.d.ts +10 -0
  33. package/dist/realtimefeeds/bybitspot.d.ts.map +1 -0
  34. package/dist/realtimefeeds/bybitspot.js +40 -0
  35. package/dist/realtimefeeds/bybitspot.js.map +1 -0
  36. package/dist/realtimefeeds/delta.d.ts +2 -0
  37. package/dist/realtimefeeds/delta.d.ts.map +1 -1
  38. package/dist/realtimefeeds/delta.js +6 -0
  39. package/dist/realtimefeeds/delta.js.map +1 -1
  40. package/dist/realtimefeeds/ftx.d.ts +2 -0
  41. package/dist/realtimefeeds/ftx.d.ts.map +1 -1
  42. package/dist/realtimefeeds/ftx.js +6 -0
  43. package/dist/realtimefeeds/ftx.js.map +1 -1
  44. package/dist/realtimefeeds/index.d.ts.map +1 -1
  45. package/dist/realtimefeeds/index.js +5 -1
  46. package/dist/realtimefeeds/index.js.map +1 -1
  47. package/dist/realtimefeeds/mango.d.ts +5 -0
  48. package/dist/realtimefeeds/mango.d.ts.map +1 -0
  49. package/dist/realtimefeeds/mango.js +12 -0
  50. package/dist/realtimefeeds/mango.js.map +1 -0
  51. package/dist/realtimefeeds/poloniex.d.ts +6 -3
  52. package/dist/realtimefeeds/poloniex.d.ts.map +1 -1
  53. package/dist/realtimefeeds/poloniex.js +14 -9
  54. package/dist/realtimefeeds/poloniex.js.map +1 -1
  55. package/dist/realtimefeeds/realtimefeed.d.ts +1 -0
  56. package/dist/realtimefeeds/realtimefeed.d.ts.map +1 -1
  57. package/dist/realtimefeeds/realtimefeed.js +7 -1
  58. package/dist/realtimefeeds/realtimefeed.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/consts.ts +21 -2
  61. package/src/mappers/bybitspot.ts +129 -0
  62. package/src/mappers/huobi.ts +1 -1
  63. package/src/mappers/index.ts +21 -7
  64. package/src/mappers/poloniex.ts +134 -1
  65. package/src/mappers/serum.ts +27 -13
  66. package/src/realtimefeeds/ascendex.ts +8 -0
  67. package/src/realtimefeeds/bybit.ts +8 -0
  68. package/src/realtimefeeds/bybitspot.ts +39 -0
  69. package/src/realtimefeeds/delta.ts +8 -0
  70. package/src/realtimefeeds/ftx.ts +8 -0
  71. package/src/realtimefeeds/index.ts +5 -1
  72. package/src/realtimefeeds/mango.ts +5 -0
  73. package/src/realtimefeeds/poloniex.ts +16 -10
  74. package/src/realtimefeeds/realtimefeed.ts +7 -1
@@ -38,6 +38,14 @@ export class AscendexRealTimeFeed extends RealTimeFeedBase {
38
38
  return message.m === 'error'
39
39
  }
40
40
 
41
+ protected sendCustomPing = () => {
42
+ this.send({ op: 'ping' })
43
+ }
44
+
45
+ protected messageIsHeartbeat(msg: any) {
46
+ return msg.m === 'pong'
47
+ }
48
+
41
49
  protected async provideManualSnapshots(filters: Filter<string>[], shouldCancel: () => boolean) {
42
50
  const depthSnapshotChannel = filters.find((f) => f.channel === 'depth-snapshot-realtime')
43
51
  if (!depthSnapshotChannel) {
@@ -90,4 +90,12 @@ class BybitSingleConnectionRealTimeDataFeed extends RealTimeFeedBase {
90
90
  protected messageIsError(message: any): boolean {
91
91
  return message.success === false
92
92
  }
93
+
94
+ protected sendCustomPing = () => {
95
+ this.send({ op: 'ping' })
96
+ }
97
+
98
+ protected messageIsHeartbeat(msg: any) {
99
+ return msg.ret_msg === 'pong' || msg.op == 'pong'
100
+ }
93
101
  }
@@ -0,0 +1,39 @@
1
+ import { Filter } from '../types'
2
+ import { RealTimeFeedBase } from './realtimefeed'
3
+
4
+ export class BybitSpotRealTimeFeed extends RealTimeFeedBase {
5
+ protected wssURL = 'wss://stream.bybit.com/spot/quote/ws/v2'
6
+
7
+ protected mapToSubscribeMessages(filters: Filter<string>[]): any[] {
8
+ return filters
9
+ .map((filter) => {
10
+ if (!filter.symbols || filter.symbols.length === 0) {
11
+ throw new Error('BybitSpotRealTimeFeed requires explicitly specified symbols when subscribing to live feed')
12
+ }
13
+
14
+ return filter.symbols.map((symbol) => {
15
+ return {
16
+ event: 'sub',
17
+ topic: filter.channel,
18
+ params: {
19
+ binary: false,
20
+ symbol: symbol
21
+ }
22
+ }
23
+ })
24
+ })
25
+ .flatMap((c) => c)
26
+ }
27
+
28
+ protected messageIsError(message: any): boolean {
29
+ return message.code !== undefined && message.code !== '0'
30
+ }
31
+
32
+ protected sendCustomPing = () => {
33
+ this.send({ ping: new Date().valueOf() })
34
+ }
35
+
36
+ protected messageIsHeartbeat(msg: any) {
37
+ return msg.pong !== undefined
38
+ }
39
+ }
@@ -24,4 +24,12 @@ export class DeltaRealTimeFeed extends RealTimeFeedBase {
24
24
  protected messageIsError(message: any): boolean {
25
25
  return message.error !== undefined && message.error !== null
26
26
  }
27
+
28
+ protected sendCustomPing = () => {
29
+ this.send({ type: 'ping' })
30
+ }
31
+
32
+ protected messageIsHeartbeat(msg: any) {
33
+ return msg.type === 'pong'
34
+ }
27
35
  }
@@ -63,6 +63,14 @@ class FtxSingleConnectionRealTimeFeed extends RealTimeFeedBase {
63
63
  // ignore market not found errors
64
64
  return message.code == 404
65
65
  }
66
+
67
+ protected sendCustomPing = () => {
68
+ this.send({ op: 'ping' })
69
+ }
70
+
71
+ protected messageIsHeartbeat(msg: any) {
72
+ return msg.type === 'pong'
73
+ }
66
74
  }
67
75
 
68
76
  class FTXInstrumentInfoClient extends PoolingClientBase {
@@ -40,6 +40,8 @@ import { AscendexRealTimeFeed } from './ascendex'
40
40
  import { DydxRealTimeFeed } from './dydx'
41
41
  import { SerumRealTimeFeed } from './serum'
42
42
  import { StarAtlasRealTimeFeed } from './staratlas'
43
+ import { MangoRealTimeFeed } from './mango'
44
+ import { BybitSpotRealTimeFeed } from './bybitspot'
43
45
 
44
46
  export * from './realtimefeed'
45
47
 
@@ -87,7 +89,9 @@ const realTimeFeedsMap: {
87
89
  dydx: DydxRealTimeFeed,
88
90
  serum: SerumRealTimeFeed,
89
91
  'star-atlas': StarAtlasRealTimeFeed,
90
- 'huobi-dm-options': HuobiDMOptionsRealTimeFeed
92
+ 'huobi-dm-options': HuobiDMOptionsRealTimeFeed,
93
+ mango: MangoRealTimeFeed,
94
+ 'bybit-spot': BybitSpotRealTimeFeed
91
95
  }
92
96
 
93
97
  export function getRealTimeFeedFactory(exchange: Exchange): RealTimeFeed {
@@ -0,0 +1,5 @@
1
+ import { SerumRealTimeFeed } from './serum'
2
+
3
+ export class MangoRealTimeFeed extends SerumRealTimeFeed {
4
+ protected wssURL = 'wss://api.mango-bowl.com/v1/ws'
5
+ }
@@ -2,27 +2,33 @@ import { Filter } from '../types'
2
2
  import { RealTimeFeedBase } from './realtimefeed'
3
3
 
4
4
  export class PoloniexRealTimeFeed extends RealTimeFeedBase {
5
- protected readonly wssURL = 'wss://api2.poloniex.com'
5
+ protected readonly wssURL = 'wss://ws.poloniex.com/ws/public'
6
6
 
7
7
  protected mapToSubscribeMessages(filters: Filter<string>[]) {
8
- const allSymbols = filters.flatMap((filter) => {
8
+ return filters.flatMap((filter) => {
9
9
  if (!filter.symbols || filter.symbols.length === 0) {
10
10
  throw new Error('PoloniexRealTimeFeed requires explicitly specified symbols when subscribing to live feed')
11
11
  }
12
- return filter.symbols
13
- })
14
-
15
- const uniqueSymbols = [...new Set(allSymbols)]
16
12
 
17
- return uniqueSymbols.map((symbol) => {
18
13
  return {
19
- command: 'subscribe',
20
- channel: symbol
14
+ event: 'subscribe',
15
+ channel: [filter.channel],
16
+ symbols: filter.symbols
21
17
  }
22
18
  })
23
19
  }
24
20
 
21
+ protected sendCustomPing = () => {
22
+ this.send({
23
+ event: 'ping'
24
+ })
25
+ }
26
+
27
+ protected messageIsHeartbeat(msg: any) {
28
+ return msg.event === 'pong'
29
+ }
30
+
25
31
  protected messageIsError(message: any): boolean {
26
- return message.error !== undefined && message.error !== null
32
+ return message.event === 'error'
27
33
  }
28
34
  }
@@ -202,6 +202,8 @@ export abstract class RealTimeFeedBase implements RealTimeFeedIterable {
202
202
 
203
203
  protected abstract messageIsError(message: any): boolean
204
204
 
205
+ protected sendCustomPing: (() => void) | undefined = undefined
206
+
205
207
  protected isIgnoredError(_message: any) {
206
208
  return false
207
209
  }
@@ -247,7 +249,11 @@ export abstract class RealTimeFeedBase implements RealTimeFeedIterable {
247
249
  return
248
250
  }
249
251
 
250
- this._ws.ping()
252
+ if (this.sendCustomPing !== undefined) {
253
+ this.sendCustomPing()
254
+ } else {
255
+ this._ws.ping()
256
+ }
251
257
  }, 5 * ONE_SEC_IN_MS)
252
258
  }
253
259