tardis-dev 14.2.3 → 15.0.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.
Files changed (517) hide show
  1. package/README.md +42 -54
  2. package/dist/apikeyaccessinfo.d.ts +1 -1
  3. package/dist/apikeyaccessinfo.d.ts.map +1 -1
  4. package/dist/apikeyaccessinfo.js +7 -12
  5. package/dist/apikeyaccessinfo.js.map +1 -1
  6. package/dist/binarysplit.d.ts +2 -1
  7. package/dist/binarysplit.d.ts.map +1 -1
  8. package/dist/binarysplit.js +2 -6
  9. package/dist/binarysplit.js.map +1 -1
  10. package/dist/clearcache.d.ts +1 -1
  11. package/dist/clearcache.d.ts.map +1 -1
  12. package/dist/clearcache.js +19 -22
  13. package/dist/clearcache.js.map +1 -1
  14. package/dist/combine.js +5 -8
  15. package/dist/combine.js.map +1 -1
  16. package/dist/computable/booksnapshot.d.ts +3 -3
  17. package/dist/computable/booksnapshot.d.ts.map +1 -1
  18. package/dist/computable/booksnapshot.js +5 -9
  19. package/dist/computable/booksnapshot.js.map +1 -1
  20. package/dist/computable/computable.d.ts +1 -1
  21. package/dist/computable/computable.d.ts.map +1 -1
  22. package/dist/computable/computable.js +1 -4
  23. package/dist/computable/computable.js.map +1 -1
  24. package/dist/computable/index.d.ts +3 -3
  25. package/dist/computable/index.d.ts.map +1 -1
  26. package/dist/computable/index.js +3 -19
  27. package/dist/computable/index.js.map +1 -1
  28. package/dist/computable/tradebar.d.ts +2 -2
  29. package/dist/computable/tradebar.d.ts.map +1 -1
  30. package/dist/computable/tradebar.js +1 -5
  31. package/dist/computable/tradebar.js.map +1 -1
  32. package/dist/consts.js +2 -5
  33. package/dist/consts.js.map +1 -1
  34. package/dist/debug.js +2 -8
  35. package/dist/debug.js.map +1 -1
  36. package/dist/downloaddatasets.d.ts +2 -2
  37. package/dist/downloaddatasets.d.ts.map +1 -1
  38. package/dist/downloaddatasets.js +21 -28
  39. package/dist/downloaddatasets.js.map +1 -1
  40. package/dist/exchangedetails.d.ts +1 -1
  41. package/dist/exchangedetails.d.ts.map +1 -1
  42. package/dist/exchangedetails.js +6 -9
  43. package/dist/exchangedetails.js.map +1 -1
  44. package/dist/filter.d.ts +1 -1
  45. package/dist/filter.d.ts.map +1 -1
  46. package/dist/filter.js +4 -8
  47. package/dist/filter.js.map +1 -1
  48. package/dist/handy.d.ts +22 -4
  49. package/dist/handy.d.ts.map +1 -1
  50. package/dist/handy.js +257 -130
  51. package/dist/handy.js.map +1 -1
  52. package/dist/index.d.ts +16 -16
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +16 -34
  55. package/dist/index.js.map +1 -1
  56. package/dist/instrumentinfo.d.ts +2 -2
  57. package/dist/instrumentinfo.d.ts.map +1 -1
  58. package/dist/instrumentinfo.js +7 -11
  59. package/dist/instrumentinfo.js.map +1 -1
  60. package/dist/mappers/ascendex.d.ts +2 -2
  61. package/dist/mappers/ascendex.d.ts.map +1 -1
  62. package/dist/mappers/ascendex.js +11 -18
  63. package/dist/mappers/ascendex.js.map +1 -1
  64. package/dist/mappers/binance.d.ts +3 -3
  65. package/dist/mappers/binance.d.ts.map +1 -1
  66. package/dist/mappers/binance.js +26 -35
  67. package/dist/mappers/binance.js.map +1 -1
  68. package/dist/mappers/binancedex.d.ts +2 -2
  69. package/dist/mappers/binancedex.d.ts.map +1 -1
  70. package/dist/mappers/binancedex.js +7 -10
  71. package/dist/mappers/binancedex.js.map +1 -1
  72. package/dist/mappers/binanceeuropeanoptions.d.ts +2 -2
  73. package/dist/mappers/binanceeuropeanoptions.d.ts.map +1 -1
  74. package/dist/mappers/binanceeuropeanoptions.js +40 -50
  75. package/dist/mappers/binanceeuropeanoptions.js.map +1 -1
  76. package/dist/mappers/bitfinex.d.ts +2 -2
  77. package/dist/mappers/bitfinex.d.ts.map +1 -1
  78. package/dist/mappers/bitfinex.js +12 -20
  79. package/dist/mappers/bitfinex.js.map +1 -1
  80. package/dist/mappers/bitflyer.d.ts +2 -2
  81. package/dist/mappers/bitflyer.d.ts.map +1 -1
  82. package/dist/mappers/bitflyer.js +9 -13
  83. package/dist/mappers/bitflyer.js.map +1 -1
  84. package/dist/mappers/bitget.d.ts +2 -2
  85. package/dist/mappers/bitget.d.ts.map +1 -1
  86. package/dist/mappers/bitget.js +10 -17
  87. package/dist/mappers/bitget.js.map +1 -1
  88. package/dist/mappers/bitmex.d.ts +2 -2
  89. package/dist/mappers/bitmex.d.ts.map +1 -1
  90. package/dist/mappers/bitmex.js +17 -22
  91. package/dist/mappers/bitmex.js.map +1 -1
  92. package/dist/mappers/bitnomial.d.ts +2 -2
  93. package/dist/mappers/bitnomial.d.ts.map +1 -1
  94. package/dist/mappers/bitnomial.js +7 -11
  95. package/dist/mappers/bitnomial.js.map +1 -1
  96. package/dist/mappers/bitstamp.d.ts +2 -2
  97. package/dist/mappers/bitstamp.d.ts.map +1 -1
  98. package/dist/mappers/bitstamp.js +5 -9
  99. package/dist/mappers/bitstamp.js.map +1 -1
  100. package/dist/mappers/blockchaincom.d.ts +2 -2
  101. package/dist/mappers/blockchaincom.d.ts.map +1 -1
  102. package/dist/mappers/blockchaincom.js +5 -10
  103. package/dist/mappers/blockchaincom.js.map +1 -1
  104. package/dist/mappers/bybit.d.ts +2 -2
  105. package/dist/mappers/bybit.d.ts.map +1 -1
  106. package/dist/mappers/bybit.js +41 -55
  107. package/dist/mappers/bybit.js.map +1 -1
  108. package/dist/mappers/bybitspot.d.ts +2 -2
  109. package/dist/mappers/bybitspot.d.ts.map +1 -1
  110. package/dist/mappers/bybitspot.js +7 -13
  111. package/dist/mappers/bybitspot.js.map +1 -1
  112. package/dist/mappers/coinbase.d.ts +2 -2
  113. package/dist/mappers/coinbase.d.ts.map +1 -1
  114. package/dist/mappers/coinbase.js +11 -15
  115. package/dist/mappers/coinbase.js.map +1 -1
  116. package/dist/mappers/coinbaseinternational.d.ts +2 -2
  117. package/dist/mappers/coinbaseinternational.d.ts.map +1 -1
  118. package/dist/mappers/coinbaseinternational.js +12 -17
  119. package/dist/mappers/coinbaseinternational.js.map +1 -1
  120. package/dist/mappers/coinflex.d.ts +2 -2
  121. package/dist/mappers/coinflex.d.ts.map +1 -1
  122. package/dist/mappers/coinflex.js +9 -13
  123. package/dist/mappers/coinflex.js.map +1 -1
  124. package/dist/mappers/cryptocom.d.ts +2 -2
  125. package/dist/mappers/cryptocom.d.ts.map +1 -1
  126. package/dist/mappers/cryptocom.js +11 -18
  127. package/dist/mappers/cryptocom.js.map +1 -1
  128. package/dist/mappers/cryptofacilities.d.ts +2 -2
  129. package/dist/mappers/cryptofacilities.d.ts.map +1 -1
  130. package/dist/mappers/cryptofacilities.js +13 -17
  131. package/dist/mappers/cryptofacilities.js.map +1 -1
  132. package/dist/mappers/delta.d.ts +2 -2
  133. package/dist/mappers/delta.d.ts.map +1 -1
  134. package/dist/mappers/delta.js +17 -24
  135. package/dist/mappers/delta.js.map +1 -1
  136. package/dist/mappers/deribit.d.ts +2 -2
  137. package/dist/mappers/deribit.d.ts.map +1 -1
  138. package/dist/mappers/deribit.js +20 -25
  139. package/dist/mappers/deribit.js.map +1 -1
  140. package/dist/mappers/dydx.d.ts +2 -2
  141. package/dist/mappers/dydx.d.ts.map +1 -1
  142. package/dist/mappers/dydx.js +9 -15
  143. package/dist/mappers/dydx.js.map +1 -1
  144. package/dist/mappers/dydxv4.d.ts +2 -2
  145. package/dist/mappers/dydxv4.d.ts.map +1 -1
  146. package/dist/mappers/dydxv4.js +11 -18
  147. package/dist/mappers/dydxv4.js.map +1 -1
  148. package/dist/mappers/ftx.d.ts +2 -2
  149. package/dist/mappers/ftx.d.ts.map +1 -1
  150. package/dist/mappers/ftx.js +22 -31
  151. package/dist/mappers/ftx.js.map +1 -1
  152. package/dist/mappers/gateio.d.ts +3 -3
  153. package/dist/mappers/gateio.d.ts.map +1 -1
  154. package/dist/mappers/gateio.js +17 -26
  155. package/dist/mappers/gateio.js.map +1 -1
  156. package/dist/mappers/gateiofutures.d.ts +7 -7
  157. package/dist/mappers/gateiofutures.d.ts.map +1 -1
  158. package/dist/mappers/gateiofutures.js +22 -25
  159. package/dist/mappers/gateiofutures.js.map +1 -1
  160. package/dist/mappers/gemini.d.ts +2 -2
  161. package/dist/mappers/gemini.d.ts.map +1 -1
  162. package/dist/mappers/gemini.js +5 -8
  163. package/dist/mappers/gemini.js.map +1 -1
  164. package/dist/mappers/hitbtc.d.ts +2 -2
  165. package/dist/mappers/hitbtc.d.ts.map +1 -1
  166. package/dist/mappers/hitbtc.js +5 -8
  167. package/dist/mappers/hitbtc.js.map +1 -1
  168. package/dist/mappers/huobi.d.ts +4 -4
  169. package/dist/mappers/huobi.d.ts.map +1 -1
  170. package/dist/mappers/huobi.js +32 -42
  171. package/dist/mappers/huobi.js.map +1 -1
  172. package/dist/mappers/hyperliquid.d.ts +2 -2
  173. package/dist/mappers/hyperliquid.d.ts.map +1 -1
  174. package/dist/mappers/hyperliquid.js +6 -13
  175. package/dist/mappers/hyperliquid.js.map +1 -1
  176. package/dist/mappers/index.d.ts +38 -38
  177. package/dist/mappers/index.d.ts.map +1 -1
  178. package/dist/mappers/index.js +273 -296
  179. package/dist/mappers/index.js.map +1 -1
  180. package/dist/mappers/kraken.d.ts +2 -2
  181. package/dist/mappers/kraken.d.ts.map +1 -1
  182. package/dist/mappers/kraken.js +11 -14
  183. package/dist/mappers/kraken.js.map +1 -1
  184. package/dist/mappers/kucoin.d.ts +3 -3
  185. package/dist/mappers/kucoin.d.ts.map +1 -1
  186. package/dist/mappers/kucoin.js +10 -16
  187. package/dist/mappers/kucoin.js.map +1 -1
  188. package/dist/mappers/kucoinfutures.d.ts +3 -3
  189. package/dist/mappers/kucoinfutures.d.ts.map +1 -1
  190. package/dist/mappers/kucoinfutures.js +15 -22
  191. package/dist/mappers/kucoinfutures.js.map +1 -1
  192. package/dist/mappers/mapper.d.ts +1 -1
  193. package/dist/mappers/mapper.d.ts.map +1 -1
  194. package/dist/mappers/mapper.js +1 -5
  195. package/dist/mappers/mapper.js.map +1 -1
  196. package/dist/mappers/okex.d.ts +2 -2
  197. package/dist/mappers/okex.d.ts.map +1 -1
  198. package/dist/mappers/okex.js +65 -80
  199. package/dist/mappers/okex.js.map +1 -1
  200. package/dist/mappers/okexspreads.d.ts +2 -2
  201. package/dist/mappers/okexspreads.d.ts.map +1 -1
  202. package/dist/mappers/okexspreads.js +7 -13
  203. package/dist/mappers/okexspreads.js.map +1 -1
  204. package/dist/mappers/phemex.d.ts +2 -2
  205. package/dist/mappers/phemex.d.ts.map +1 -1
  206. package/dist/mappers/phemex.js +5 -9
  207. package/dist/mappers/phemex.js.map +1 -1
  208. package/dist/mappers/poloniex.d.ts +2 -2
  209. package/dist/mappers/poloniex.d.ts.map +1 -1
  210. package/dist/mappers/poloniex.js +9 -16
  211. package/dist/mappers/poloniex.js.map +1 -1
  212. package/dist/mappers/serum.d.ts +2 -2
  213. package/dist/mappers/serum.d.ts.map +1 -1
  214. package/dist/mappers/serum.js +11 -17
  215. package/dist/mappers/serum.js.map +1 -1
  216. package/dist/mappers/upbit.d.ts +2 -2
  217. package/dist/mappers/upbit.d.ts.map +1 -1
  218. package/dist/mappers/upbit.js +7 -12
  219. package/dist/mappers/upbit.js.map +1 -1
  220. package/dist/mappers/woox.d.ts +2 -2
  221. package/dist/mappers/woox.d.ts.map +1 -1
  222. package/dist/mappers/woox.js +11 -17
  223. package/dist/mappers/woox.js.map +1 -1
  224. package/dist/options.d.ts.map +1 -1
  225. package/dist/options.js +9 -14
  226. package/dist/options.js.map +1 -1
  227. package/dist/orderbook.d.ts +1 -1
  228. package/dist/orderbook.d.ts.map +1 -1
  229. package/dist/orderbook.js +4 -8
  230. package/dist/orderbook.js.map +1 -1
  231. package/dist/realtimefeeds/ascendex.d.ts +2 -2
  232. package/dist/realtimefeeds/ascendex.d.ts.map +1 -1
  233. package/dist/realtimefeeds/ascendex.js +5 -9
  234. package/dist/realtimefeeds/ascendex.js.map +1 -1
  235. package/dist/realtimefeeds/binance.d.ts +13 -2
  236. package/dist/realtimefeeds/binance.d.ts.map +1 -1
  237. package/dist/realtimefeeds/binance.js +69 -33
  238. package/dist/realtimefeeds/binance.js.map +1 -1
  239. package/dist/realtimefeeds/binancedex.d.ts +2 -2
  240. package/dist/realtimefeeds/binancedex.d.ts.map +1 -1
  241. package/dist/realtimefeeds/binancedex.js +5 -9
  242. package/dist/realtimefeeds/binancedex.js.map +1 -1
  243. package/dist/realtimefeeds/binanceeuropeanoptions.d.ts +2 -2
  244. package/dist/realtimefeeds/binanceeuropeanoptions.d.ts.map +1 -1
  245. package/dist/realtimefeeds/binanceeuropeanoptions.js +5 -9
  246. package/dist/realtimefeeds/binanceeuropeanoptions.js.map +1 -1
  247. package/dist/realtimefeeds/bitfinex.d.ts +2 -2
  248. package/dist/realtimefeeds/bitfinex.d.ts.map +1 -1
  249. package/dist/realtimefeeds/bitfinex.js +2 -6
  250. package/dist/realtimefeeds/bitfinex.js.map +1 -1
  251. package/dist/realtimefeeds/bitflyer.d.ts +2 -2
  252. package/dist/realtimefeeds/bitflyer.d.ts.map +1 -1
  253. package/dist/realtimefeeds/bitflyer.js +2 -6
  254. package/dist/realtimefeeds/bitflyer.js.map +1 -1
  255. package/dist/realtimefeeds/bitget.d.ts +2 -2
  256. package/dist/realtimefeeds/bitget.d.ts.map +1 -1
  257. package/dist/realtimefeeds/bitget.js +6 -11
  258. package/dist/realtimefeeds/bitget.js.map +1 -1
  259. package/dist/realtimefeeds/bitmex.d.ts +2 -2
  260. package/dist/realtimefeeds/bitmex.d.ts.map +1 -1
  261. package/dist/realtimefeeds/bitmex.js +4 -8
  262. package/dist/realtimefeeds/bitmex.js.map +1 -1
  263. package/dist/realtimefeeds/bitnomial.d.ts +2 -2
  264. package/dist/realtimefeeds/bitnomial.d.ts.map +1 -1
  265. package/dist/realtimefeeds/bitnomial.js +2 -6
  266. package/dist/realtimefeeds/bitnomial.js.map +1 -1
  267. package/dist/realtimefeeds/bitstamp.d.ts +2 -2
  268. package/dist/realtimefeeds/bitstamp.d.ts.map +1 -1
  269. package/dist/realtimefeeds/bitstamp.js +5 -9
  270. package/dist/realtimefeeds/bitstamp.js.map +1 -1
  271. package/dist/realtimefeeds/blockchaincom.d.ts +2 -2
  272. package/dist/realtimefeeds/blockchaincom.d.ts.map +1 -1
  273. package/dist/realtimefeeds/blockchaincom.js +4 -8
  274. package/dist/realtimefeeds/blockchaincom.js.map +1 -1
  275. package/dist/realtimefeeds/bybit.d.ts +2 -2
  276. package/dist/realtimefeeds/bybit.d.ts.map +1 -1
  277. package/dist/realtimefeeds/bybit.js +8 -14
  278. package/dist/realtimefeeds/bybit.js.map +1 -1
  279. package/dist/realtimefeeds/coinbase.d.ts +2 -2
  280. package/dist/realtimefeeds/coinbase.d.ts.map +1 -1
  281. package/dist/realtimefeeds/coinbase.js +4 -11
  282. package/dist/realtimefeeds/coinbase.js.map +1 -1
  283. package/dist/realtimefeeds/coinbaseinternational.d.ts +2 -2
  284. package/dist/realtimefeeds/coinbaseinternational.d.ts.map +1 -1
  285. package/dist/realtimefeeds/coinbaseinternational.js +4 -11
  286. package/dist/realtimefeeds/coinbaseinternational.js.map +1 -1
  287. package/dist/realtimefeeds/coinflex.d.ts +2 -2
  288. package/dist/realtimefeeds/coinflex.d.ts.map +1 -1
  289. package/dist/realtimefeeds/coinflex.js +2 -6
  290. package/dist/realtimefeeds/coinflex.js.map +1 -1
  291. package/dist/realtimefeeds/cryptocom.d.ts +2 -2
  292. package/dist/realtimefeeds/cryptocom.d.ts.map +1 -1
  293. package/dist/realtimefeeds/cryptocom.js +2 -6
  294. package/dist/realtimefeeds/cryptocom.js.map +1 -1
  295. package/dist/realtimefeeds/cryptofacilities.d.ts +2 -2
  296. package/dist/realtimefeeds/cryptofacilities.d.ts.map +1 -1
  297. package/dist/realtimefeeds/cryptofacilities.js +2 -6
  298. package/dist/realtimefeeds/cryptofacilities.js.map +1 -1
  299. package/dist/realtimefeeds/delta.d.ts +2 -2
  300. package/dist/realtimefeeds/delta.d.ts.map +1 -1
  301. package/dist/realtimefeeds/delta.js +2 -6
  302. package/dist/realtimefeeds/delta.js.map +1 -1
  303. package/dist/realtimefeeds/deribit.d.ts +2 -2
  304. package/dist/realtimefeeds/deribit.d.ts.map +1 -1
  305. package/dist/realtimefeeds/deribit.js +4 -8
  306. package/dist/realtimefeeds/deribit.js.map +1 -1
  307. package/dist/realtimefeeds/dydx.d.ts +2 -2
  308. package/dist/realtimefeeds/dydx.d.ts.map +1 -1
  309. package/dist/realtimefeeds/dydx.js +2 -6
  310. package/dist/realtimefeeds/dydx.js.map +1 -1
  311. package/dist/realtimefeeds/dydx_v4.d.ts +2 -2
  312. package/dist/realtimefeeds/dydx_v4.d.ts.map +1 -1
  313. package/dist/realtimefeeds/dydx_v4.js +2 -6
  314. package/dist/realtimefeeds/dydx_v4.js.map +1 -1
  315. package/dist/realtimefeeds/ftx.d.ts +2 -2
  316. package/dist/realtimefeeds/ftx.d.ts.map +1 -1
  317. package/dist/realtimefeeds/ftx.js +13 -18
  318. package/dist/realtimefeeds/ftx.js.map +1 -1
  319. package/dist/realtimefeeds/gateio.d.ts +2 -2
  320. package/dist/realtimefeeds/gateio.d.ts.map +1 -1
  321. package/dist/realtimefeeds/gateio.js +2 -6
  322. package/dist/realtimefeeds/gateio.js.map +1 -1
  323. package/dist/realtimefeeds/gateiofutures.d.ts +5 -2
  324. package/dist/realtimefeeds/gateiofutures.d.ts.map +1 -1
  325. package/dist/realtimefeeds/gateiofutures.js +4 -7
  326. package/dist/realtimefeeds/gateiofutures.js.map +1 -1
  327. package/dist/realtimefeeds/gemini.d.ts +2 -2
  328. package/dist/realtimefeeds/gemini.d.ts.map +1 -1
  329. package/dist/realtimefeeds/gemini.js +2 -6
  330. package/dist/realtimefeeds/gemini.js.map +1 -1
  331. package/dist/realtimefeeds/hitbtc.d.ts +2 -2
  332. package/dist/realtimefeeds/hitbtc.d.ts.map +1 -1
  333. package/dist/realtimefeeds/hitbtc.js +2 -6
  334. package/dist/realtimefeeds/hitbtc.js.map +1 -1
  335. package/dist/realtimefeeds/huobi.d.ts +2 -2
  336. package/dist/realtimefeeds/huobi.d.ts.map +1 -1
  337. package/dist/realtimefeeds/huobi.js +36 -44
  338. package/dist/realtimefeeds/huobi.js.map +1 -1
  339. package/dist/realtimefeeds/hyperliquid.d.ts +2 -2
  340. package/dist/realtimefeeds/hyperliquid.d.ts.map +1 -1
  341. package/dist/realtimefeeds/hyperliquid.js +2 -6
  342. package/dist/realtimefeeds/hyperliquid.js.map +1 -1
  343. package/dist/realtimefeeds/index.d.ts +4 -4
  344. package/dist/realtimefeeds/index.d.ts.map +1 -1
  345. package/dist/realtimefeeds/index.js +101 -120
  346. package/dist/realtimefeeds/index.js.map +1 -1
  347. package/dist/realtimefeeds/kraken.d.ts +2 -2
  348. package/dist/realtimefeeds/kraken.d.ts.map +1 -1
  349. package/dist/realtimefeeds/kraken.js +2 -6
  350. package/dist/realtimefeeds/kraken.js.map +1 -1
  351. package/dist/realtimefeeds/kucoin.d.ts +2 -2
  352. package/dist/realtimefeeds/kucoin.d.ts.map +1 -1
  353. package/dist/realtimefeeds/kucoin.js +10 -14
  354. package/dist/realtimefeeds/kucoin.js.map +1 -1
  355. package/dist/realtimefeeds/kucoinfutures.d.ts +2 -2
  356. package/dist/realtimefeeds/kucoinfutures.d.ts.map +1 -1
  357. package/dist/realtimefeeds/kucoinfutures.js +12 -19
  358. package/dist/realtimefeeds/kucoinfutures.js.map +1 -1
  359. package/dist/realtimefeeds/mango.d.ts +1 -1
  360. package/dist/realtimefeeds/mango.d.ts.map +1 -1
  361. package/dist/realtimefeeds/mango.js +2 -6
  362. package/dist/realtimefeeds/mango.js.map +1 -1
  363. package/dist/realtimefeeds/okex.d.ts +2 -2
  364. package/dist/realtimefeeds/okex.d.ts.map +1 -1
  365. package/dist/realtimefeeds/okex.js +9 -18
  366. package/dist/realtimefeeds/okex.js.map +1 -1
  367. package/dist/realtimefeeds/okexspreads.d.ts +2 -2
  368. package/dist/realtimefeeds/okexspreads.d.ts.map +1 -1
  369. package/dist/realtimefeeds/okexspreads.js +6 -13
  370. package/dist/realtimefeeds/okexspreads.js.map +1 -1
  371. package/dist/realtimefeeds/phemex.d.ts +2 -2
  372. package/dist/realtimefeeds/phemex.d.ts.map +1 -1
  373. package/dist/realtimefeeds/phemex.js +2 -6
  374. package/dist/realtimefeeds/phemex.js.map +1 -1
  375. package/dist/realtimefeeds/poloniex.d.ts +2 -2
  376. package/dist/realtimefeeds/poloniex.d.ts.map +1 -1
  377. package/dist/realtimefeeds/poloniex.js +2 -6
  378. package/dist/realtimefeeds/poloniex.js.map +1 -1
  379. package/dist/realtimefeeds/realtimefeed.d.ts +2 -1
  380. package/dist/realtimefeeds/realtimefeed.d.ts.map +1 -1
  381. package/dist/realtimefeeds/realtimefeed.js +33 -38
  382. package/dist/realtimefeeds/realtimefeed.js.map +1 -1
  383. package/dist/realtimefeeds/serum.d.ts +2 -2
  384. package/dist/realtimefeeds/serum.d.ts.map +1 -1
  385. package/dist/realtimefeeds/serum.js +2 -6
  386. package/dist/realtimefeeds/serum.js.map +1 -1
  387. package/dist/realtimefeeds/staratlas.d.ts +1 -1
  388. package/dist/realtimefeeds/staratlas.d.ts.map +1 -1
  389. package/dist/realtimefeeds/staratlas.js +2 -6
  390. package/dist/realtimefeeds/staratlas.js.map +1 -1
  391. package/dist/realtimefeeds/upbit.d.ts +2 -2
  392. package/dist/realtimefeeds/upbit.d.ts.map +1 -1
  393. package/dist/realtimefeeds/upbit.js +2 -6
  394. package/dist/realtimefeeds/upbit.js.map +1 -1
  395. package/dist/realtimefeeds/woox.d.ts +2 -2
  396. package/dist/realtimefeeds/woox.d.ts.map +1 -1
  397. package/dist/realtimefeeds/woox.js +5 -9
  398. package/dist/realtimefeeds/woox.js.map +1 -1
  399. package/dist/replay.d.ts +6 -3
  400. package/dist/replay.d.ts.map +1 -1
  401. package/dist/replay.js +62 -71
  402. package/dist/replay.js.map +1 -1
  403. package/dist/stream.d.ts +6 -3
  404. package/dist/stream.d.ts.map +1 -1
  405. package/dist/stream.js +9 -13
  406. package/dist/stream.js.map +1 -1
  407. package/dist/types.d.ts +1 -1
  408. package/dist/types.d.ts.map +1 -1
  409. package/dist/types.js +1 -2
  410. package/dist/worker.d.ts +1 -1
  411. package/dist/worker.d.ts.map +1 -1
  412. package/dist/worker.js +22 -27
  413. package/dist/worker.js.map +1 -1
  414. package/example.js +9 -9
  415. package/package.json +30 -15
  416. package/src/apikeyaccessinfo.ts +9 -11
  417. package/src/binarysplit.ts +2 -1
  418. package/src/clearcache.ts +8 -7
  419. package/src/computable/booksnapshot.ts +4 -4
  420. package/src/computable/computable.ts +1 -1
  421. package/src/computable/index.ts +3 -3
  422. package/src/computable/tradebar.ts +2 -2
  423. package/src/downloaddatasets.ts +7 -7
  424. package/src/exchangedetails.ts +5 -5
  425. package/src/filter.ts +2 -2
  426. package/src/handy.ts +286 -23
  427. package/src/index.ts +16 -16
  428. package/src/instrumentinfo.ts +9 -9
  429. package/src/mappers/ascendex.ts +3 -3
  430. package/src/mappers/binance.ts +4 -4
  431. package/src/mappers/binancedex.ts +3 -3
  432. package/src/mappers/binanceeuropeanoptions.ts +3 -3
  433. package/src/mappers/bitfinex.ts +3 -3
  434. package/src/mappers/bitflyer.ts +3 -3
  435. package/src/mappers/bitget.ts +3 -3
  436. package/src/mappers/bitmex.ts +3 -3
  437. package/src/mappers/bitnomial.ts +3 -3
  438. package/src/mappers/bitstamp.ts +3 -3
  439. package/src/mappers/blockchaincom.ts +3 -3
  440. package/src/mappers/bybit.ts +3 -3
  441. package/src/mappers/bybitspot.ts +3 -3
  442. package/src/mappers/coinbase.ts +3 -3
  443. package/src/mappers/coinbaseinternational.ts +3 -3
  444. package/src/mappers/coinflex.ts +3 -3
  445. package/src/mappers/cryptocom.ts +3 -3
  446. package/src/mappers/cryptofacilities.ts +3 -3
  447. package/src/mappers/delta.ts +3 -3
  448. package/src/mappers/deribit.ts +3 -3
  449. package/src/mappers/dydx.ts +3 -3
  450. package/src/mappers/dydxv4.ts +3 -3
  451. package/src/mappers/ftx.ts +3 -3
  452. package/src/mappers/gateio.ts +4 -4
  453. package/src/mappers/gateiofutures.ts +18 -14
  454. package/src/mappers/gemini.ts +3 -3
  455. package/src/mappers/hitbtc.ts +3 -3
  456. package/src/mappers/huobi.ts +3 -3
  457. package/src/mappers/hyperliquid.ts +2 -2
  458. package/src/mappers/index.ts +49 -44
  459. package/src/mappers/kraken.ts +3 -3
  460. package/src/mappers/kucoin.ts +4 -4
  461. package/src/mappers/kucoinfutures.ts +4 -4
  462. package/src/mappers/mapper.ts +1 -1
  463. package/src/mappers/okex.ts +3 -3
  464. package/src/mappers/okexspreads.ts +3 -3
  465. package/src/mappers/phemex.ts +2 -2
  466. package/src/mappers/poloniex.ts +3 -3
  467. package/src/mappers/serum.ts +3 -3
  468. package/src/mappers/upbit.ts +3 -3
  469. package/src/mappers/woox.ts +3 -3
  470. package/src/options.ts +5 -2
  471. package/src/orderbook.ts +3 -2
  472. package/src/realtimefeeds/ascendex.ts +3 -3
  473. package/src/realtimefeeds/binance.ts +111 -20
  474. package/src/realtimefeeds/binancedex.ts +5 -5
  475. package/src/realtimefeeds/binanceeuropeanoptions.ts +3 -3
  476. package/src/realtimefeeds/bitfinex.ts +2 -2
  477. package/src/realtimefeeds/bitflyer.ts +2 -2
  478. package/src/realtimefeeds/bitget.ts +3 -3
  479. package/src/realtimefeeds/bitmex.ts +3 -3
  480. package/src/realtimefeeds/bitnomial.ts +2 -2
  481. package/src/realtimefeeds/bitstamp.ts +5 -5
  482. package/src/realtimefeeds/blockchaincom.ts +3 -3
  483. package/src/realtimefeeds/bybit.ts +3 -3
  484. package/src/realtimefeeds/coinbase.ts +2 -2
  485. package/src/realtimefeeds/coinbaseinternational.ts +2 -2
  486. package/src/realtimefeeds/coinflex.ts +2 -2
  487. package/src/realtimefeeds/cryptocom.ts +2 -2
  488. package/src/realtimefeeds/cryptofacilities.ts +2 -2
  489. package/src/realtimefeeds/delta.ts +2 -2
  490. package/src/realtimefeeds/deribit.ts +3 -3
  491. package/src/realtimefeeds/dydx.ts +2 -2
  492. package/src/realtimefeeds/dydx_v4.ts +2 -2
  493. package/src/realtimefeeds/ftx.ts +8 -8
  494. package/src/realtimefeeds/gateio.ts +2 -3
  495. package/src/realtimefeeds/gateiofutures.ts +3 -2
  496. package/src/realtimefeeds/gemini.ts +2 -2
  497. package/src/realtimefeeds/hitbtc.ts +2 -2
  498. package/src/realtimefeeds/huobi.ts +18 -18
  499. package/src/realtimefeeds/hyperliquid.ts +2 -2
  500. package/src/realtimefeeds/index.ts +43 -43
  501. package/src/realtimefeeds/kraken.ts +2 -2
  502. package/src/realtimefeeds/kucoin.ts +9 -9
  503. package/src/realtimefeeds/kucoinfutures.ts +9 -11
  504. package/src/realtimefeeds/mango.ts +1 -1
  505. package/src/realtimefeeds/okex.ts +3 -3
  506. package/src/realtimefeeds/okexspreads.ts +3 -3
  507. package/src/realtimefeeds/phemex.ts +2 -2
  508. package/src/realtimefeeds/poloniex.ts +2 -2
  509. package/src/realtimefeeds/realtimefeed.ts +8 -3
  510. package/src/realtimefeeds/serum.ts +2 -2
  511. package/src/realtimefeeds/staratlas.ts +1 -1
  512. package/src/realtimefeeds/upbit.ts +2 -2
  513. package/src/realtimefeeds/woox.ts +3 -3
  514. package/src/replay.ts +31 -35
  515. package/src/stream.ts +12 -23
  516. package/src/types.ts +1 -1
  517. package/src/worker.ts +3 -4
@@ -1,7 +1,7 @@
1
1
  import { Writable } from 'stream'
2
- import { batch, httpClient, wait } from '../handy'
3
- import { Filter } from '../types'
4
- import { MultiConnectionRealTimeFeedBase, PoolingClientBase, RealTimeFeedBase } from './realtimefeed'
2
+ import { batch, getJSON, wait } from '../handy.ts'
3
+ import { Filter } from '../types.ts'
4
+ import { MultiConnectionRealTimeFeedBase, PoolingClientBase, RealTimeFeedBase } from './realtimefeed.ts'
5
5
 
6
6
  const binanceHttpOptions = {
7
7
  timeout: 10 * 1000,
@@ -18,14 +18,19 @@ const OPEN_INTEREST_BATCH_SIZE = 10
18
18
  const OPEN_INTEREST_REQUEST_WEIGHT = 1
19
19
  const OPEN_INTEREST_POLLING_RECOVERY_MS = 1000
20
20
  const OPEN_INTEREST_MAX_POLLING_INTERVAL_MS = 60 * 1000
21
+ const BINANCE_FUTURES_PUBLIC_CHANNELS = new Set(['bookTicker', 'depth', 'depthSnapshot', 'trade'])
22
+ const BINANCE_FUTURES_DEFAULT_WS_BASE_URL = 'wss://fstream.binance.com'
23
+ const BINANCE_FUTURES_PUBLIC_STREAM_PATH = '/public/stream'
24
+ const BINANCE_FUTURES_MARKET_STREAM_PATH = '/market/stream'
21
25
 
22
- function parseBinanceWeightHeader(headerValue: string | string[] | undefined) {
26
+ type BinanceFuturesStreamPath = typeof BINANCE_FUTURES_PUBLIC_STREAM_PATH | typeof BINANCE_FUTURES_MARKET_STREAM_PATH
27
+
28
+ function parseBinanceWeightHeader(headerValue: string | undefined) {
23
29
  if (headerValue === undefined) {
24
30
  return undefined
25
31
  }
26
32
 
27
- const header = Array.isArray(headerValue) ? headerValue[0] : headerValue
28
- const parsed = Number.parseInt(header, 10)
33
+ const parsed = Number.parseInt(headerValue, 10)
29
34
 
30
35
  return Number.isFinite(parsed) ? parsed : undefined
31
36
  }
@@ -43,6 +48,26 @@ function getExchangeScopedNumberEnv(exchange: string, suffix: string, fallback:
43
48
  return Number.isFinite(parsed) ? parsed : fallback
44
49
  }
45
50
 
51
+ function getExchangeScopedWssUrlEnv(exchange: string) {
52
+ const envName = `WSS_URL_${exchange.toUpperCase().replace(/-/g, '_')}`
53
+
54
+ return process.env[envName]
55
+ }
56
+
57
+ function normalizeBinanceSplitWsBaseUrl(wssUrl: string) {
58
+ return wssUrl
59
+ .replace(/\/(public|market|private)\/stream$/u, '')
60
+ .replace(/\/stream$/u, '')
61
+ .replace(/\/(public|market|private)$/u, '')
62
+ }
63
+
64
+ function getBinanceFuturesWebSocketUrl(exchange: string, streamPath: BinanceFuturesStreamPath) {
65
+ const configuredWssUrl = getExchangeScopedWssUrlEnv(exchange) ?? BINANCE_FUTURES_DEFAULT_WS_BASE_URL
66
+ const normalizedBaseUrl = normalizeBinanceSplitWsBaseUrl(configuredWssUrl)
67
+
68
+ return `${normalizedBaseUrl}${streamPath}`
69
+ }
70
+
46
71
  function getBinanceRequestWeightLimit(exchange: string, exchangeInfo: any) {
47
72
  const configuredLimit = getExchangeScopedNumberEnv(exchange, 'REQUEST_WEIGHT_LIMIT', 0)
48
73
  if (configuredLimit > 0) {
@@ -161,15 +186,15 @@ class BinanceFuturesOpenInterestClient extends PoolingClientBase {
161
186
 
162
187
  const results = await Promise.allSettled(
163
188
  instrumentsBatch.map(async (instrument) => {
164
- const openInterestResponse = await httpClient.get(
189
+ const openInterestResponse = await getJSON<any>(
165
190
  `${this._httpURL}/openInterest?symbol=${instrument.toUpperCase()}`,
166
191
  binanceHttpOptions
167
192
  )
168
193
 
169
194
  return {
170
195
  instrument,
171
- usedWeight: parseBinanceWeightHeader(openInterestResponse.headers['x-mbx-used-weight-1m'] as string | string[] | undefined),
172
- data: JSON.parse(openInterestResponse.body)
196
+ usedWeight: parseBinanceWeightHeader(openInterestResponse.headers['x-mbx-used-weight-1m']),
197
+ data: openInterestResponse.data
173
198
  }
174
199
  })
175
200
  )
@@ -234,15 +259,12 @@ class BinanceFuturesOpenInterestClient extends PoolingClientBase {
234
259
  }
235
260
 
236
261
  private async _initializeRateLimitInfo() {
237
- const exchangeInfoResponse = await httpClient.get(`${this._httpURL}/exchangeInfo`, binanceHttpOptions)
238
- const exchangeInfo = JSON.parse(exchangeInfoResponse.body)
262
+ const exchangeInfoResponse = await getJSON<any>(`${this._httpURL}/exchangeInfo`, binanceHttpOptions)
263
+ const exchangeInfo = exchangeInfoResponse.data
239
264
 
240
265
  this._requestWeightLimit = getBinanceRequestWeightLimit(this._exchange, exchangeInfo)
241
266
 
242
- this._updateUsedWeight(
243
- parseBinanceWeightHeader(exchangeInfoResponse.headers['x-mbx-used-weight-1m'] as string | string[] | undefined),
244
- OPEN_INTEREST_REQUEST_WEIGHT
245
- )
267
+ this._updateUsedWeight(parseBinanceWeightHeader(exchangeInfoResponse.headers['x-mbx-used-weight-1m']), OPEN_INTEREST_REQUEST_WEIGHT)
246
268
  }
247
269
 
248
270
  private _getBatchSize() {
@@ -332,8 +354,8 @@ class BinanceSingleConnectionRealTimeFeed extends RealTimeFeedBase {
332
354
  return
333
355
  }
334
356
 
335
- const exchangeInfoResponse = await httpClient.get(`${this._httpURL}/exchangeInfo`, binanceHttpOptions)
336
- const exchangeInfo = JSON.parse(exchangeInfoResponse.body)
357
+ const exchangeInfoResponse = await getJSON<any>(`${this._httpURL}/exchangeInfo`, binanceHttpOptions)
358
+ const exchangeInfo = exchangeInfoResponse.data
337
359
 
338
360
  const DELAY_ENV = `${this._exchange.toUpperCase().replace(/-/g, '_')}_SNAPSHOTS_DELAY_MS`
339
361
  const currentWeightLimit = getBinanceRequestWeightLimit(this._exchange, exchangeInfo)
@@ -386,7 +408,7 @@ class BinanceSingleConnectionRealTimeFeed extends RealTimeFeedBase {
386
408
  await wait(delayMS)
387
409
  }
388
410
 
389
- const depthSnapshotResponse = await httpClient.get(
411
+ const depthSnapshotResponse = await getJSON<any>(
390
412
  `${this._httpURL}/depth?symbol=${symbol.toUpperCase()}&limit=1000`,
391
413
  binanceHttpOptions
392
414
  )
@@ -394,7 +416,7 @@ class BinanceSingleConnectionRealTimeFeed extends RealTimeFeedBase {
394
416
  const snapshot = {
395
417
  stream: `${symbol}@depthSnapshot`,
396
418
  generated: true,
397
- data: JSON.parse(depthSnapshotResponse.body)
419
+ data: depthSnapshotResponse.data
398
420
  }
399
421
 
400
422
  this.manualSnapshotsBuffer.push(snapshot)
@@ -417,6 +439,34 @@ class BinanceSingleConnectionRealTimeFeed extends RealTimeFeedBase {
417
439
  }
418
440
  }
419
441
 
442
+ class BinanceFuturesSingleConnectionRealTimeFeed extends BinanceSingleConnectionRealTimeFeed {
443
+ constructor(
444
+ exchange: string,
445
+ filters: Filter<string>[],
446
+ private readonly _streamPath: BinanceFuturesStreamPath,
447
+ httpURL: string,
448
+ suffixes: { [key: string]: string },
449
+ depthRequestRequestWeight: number,
450
+ timeoutIntervalMS: number | undefined,
451
+ onError?: (error: Error) => void
452
+ ) {
453
+ super(
454
+ exchange,
455
+ filters,
456
+ getBinanceFuturesWebSocketUrl(exchange, _streamPath),
457
+ httpURL,
458
+ suffixes,
459
+ depthRequestRequestWeight,
460
+ timeoutIntervalMS,
461
+ onError
462
+ )
463
+ }
464
+
465
+ protected async getWebSocketUrl() {
466
+ return getBinanceFuturesWebSocketUrl(this._exchange, this._streamPath)
467
+ }
468
+ }
469
+
420
470
  export class BinanceRealTimeFeed extends BinanceRealTimeFeedBase {
421
471
  protected wssURL = 'wss://stream.binance.com/stream?timeUnit=microsecond'
422
472
  protected httpURL = 'https://api.binance.com/api/v1'
@@ -451,7 +501,7 @@ export class BinanceUSRealTimeFeed extends BinanceRealTimeFeedBase {
451
501
  }
452
502
 
453
503
  export class BinanceFuturesRealTimeFeed extends BinanceRealTimeFeedBase {
454
- protected wssURL = 'wss://fstream.binance.com/stream'
504
+ protected wssURL = `${BINANCE_FUTURES_DEFAULT_WS_BASE_URL}${BINANCE_FUTURES_PUBLIC_STREAM_PATH}`
455
505
  protected httpURL = 'https://fapi.binance.com/fapi/v1'
456
506
 
457
507
  protected suffixes = {
@@ -460,6 +510,47 @@ export class BinanceFuturesRealTimeFeed extends BinanceRealTimeFeedBase {
460
510
  }
461
511
 
462
512
  protected depthRequestRequestWeight = 20
513
+
514
+ protected *_getRealTimeFeeds(exchange: string, filters: Filter<string>[], timeoutIntervalMS?: number, onError?: (error: Error) => void) {
515
+ const wsFilters = filters.filter(
516
+ (f) => f.channel !== 'openInterest' && f.channel !== 'recentTrades' && f.channel !== 'fundingInfo' && f.channel !== 'insuranceBalance'
517
+ )
518
+
519
+ const publicWsFilters = wsFilters.filter((f) => BINANCE_FUTURES_PUBLIC_CHANNELS.has(f.channel))
520
+ if (publicWsFilters.length > 0) {
521
+ yield new BinanceFuturesSingleConnectionRealTimeFeed(
522
+ exchange,
523
+ publicWsFilters,
524
+ BINANCE_FUTURES_PUBLIC_STREAM_PATH,
525
+ this.httpURL,
526
+ this.suffixes,
527
+ this.depthRequestRequestWeight,
528
+ timeoutIntervalMS,
529
+ onError
530
+ )
531
+ }
532
+
533
+ const marketWsFilters = wsFilters.filter((f) => BINANCE_FUTURES_PUBLIC_CHANNELS.has(f.channel) === false)
534
+ if (marketWsFilters.length > 0) {
535
+ yield new BinanceFuturesSingleConnectionRealTimeFeed(
536
+ exchange,
537
+ marketWsFilters,
538
+ BINANCE_FUTURES_MARKET_STREAM_PATH,
539
+ this.httpURL,
540
+ this.suffixes,
541
+ this.depthRequestRequestWeight,
542
+ timeoutIntervalMS,
543
+ onError
544
+ )
545
+ }
546
+
547
+ const openInterestFilters = filters.filter((f) => f.channel === 'openInterest')
548
+ if (openInterestFilters.length > 0) {
549
+ const instruments = openInterestFilters.flatMap((s) => s.symbols!)
550
+
551
+ yield new BinanceFuturesOpenInterestClient(exchange, this.httpURL, instruments, onError)
552
+ }
553
+ }
463
554
  }
464
555
 
465
556
  export class BinanceDeliveryRealTimeFeed extends BinanceRealTimeFeedBase {
@@ -1,6 +1,6 @@
1
- import { httpClient } from '../handy'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { getJSON } from '../handy.ts'
2
+ import { Filter } from '../types.ts'
3
+ import { RealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  export class BinanceDexRealTimeFeed extends RealTimeFeedBase {
6
6
  protected wssURL = 'wss://dex.binance.org/api/ws'
@@ -42,14 +42,14 @@ export class BinanceDexRealTimeFeed extends RealTimeFeedBase {
42
42
  return
43
43
  }
44
44
 
45
- const depthSnapshotResponse = (await httpClient.get(`${this.httpURL}/depth?symbol=${symbol}&limit=1000`).json()) as any
45
+ const { data } = await getJSON<any>(`${this.httpURL}/depth?symbol=${symbol}&limit=1000`)
46
46
 
47
47
  const snapshot = {
48
48
  stream: `depthSnapshot`,
49
49
  generated: true,
50
50
  data: {
51
51
  symbol,
52
- ...depthSnapshotResponse
52
+ ...data
53
53
  }
54
54
  }
55
55
 
@@ -1,6 +1,6 @@
1
- import { onlyUnique } from '../handy'
2
- import { Filter } from '../types'
3
- import { MultiConnectionRealTimeFeedBase, RealTimeFeedBase } from './realtimefeed'
1
+ import { onlyUnique } from '../handy.ts'
2
+ import { Filter } from '../types.ts'
3
+ import { MultiConnectionRealTimeFeedBase, RealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  export class BinanceEuropeanOptionsRealTimeFeed extends MultiConnectionRealTimeFeedBase {
6
6
  protected *_getRealTimeFeeds(exchange: string, filters: Filter<string>[], timeoutIntervalMS?: number, onError?: (error: Error) => void) {
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
  const TIMESTAMP = 32768
4
4
  const SEQ_ALL = 65536
5
5
 
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class BitflyerRealTimeFeed extends RealTimeFeedBase {
5
5
  protected wssURL = 'wss://ws.lightstream.bitflyer.com/json-rpc'
@@ -1,6 +1,6 @@
1
- import { batchObjects } from '../handy'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { batchObjects } from '../handy.ts'
2
+ import { Filter } from '../types.ts'
3
+ import { RealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  abstract class BitgetRealTimeFeedBase extends RealTimeFeedBase {
6
6
  protected throttleSubscribeMS = 100
@@ -1,6 +1,6 @@
1
- import { batch } from '../handy'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { batch } from '../handy.ts'
2
+ import { Filter } from '../types.ts'
3
+ import { RealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  export class BitmexRealTimeFeed extends RealTimeFeedBase {
6
6
  protected readonly wssURL = 'wss://ws.bitmex.com/realtime'
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class BitnomialRealTimeFeed extends RealTimeFeedBase {
5
5
  protected wssURL = 'wss://bitnomial.com/exchange/ws'
@@ -1,6 +1,6 @@
1
- import { httpClient } from '../handy'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { getJSON } from '../handy.ts'
2
+ import { Filter } from '../types.ts'
3
+ import { RealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  export class BitstampRealTimeFeed extends RealTimeFeedBase {
6
6
  protected wssURL = 'wss://ws.bitstamp.net'
@@ -50,10 +50,10 @@ export class BitstampRealTimeFeed extends RealTimeFeedBase {
50
50
  return
51
51
  }
52
52
 
53
- const depthSnapshotResponse = await httpClient.get(`${this.httpURL}/order_book/${symbol}?group=1`).json()
53
+ const { data } = await getJSON(`${this.httpURL}/order_book/${symbol}?group=1`)
54
54
 
55
55
  const snapshot = {
56
- data: depthSnapshotResponse,
56
+ data,
57
57
  event: 'snapshot',
58
58
  channel: `diff_order_book_${symbol}`,
59
59
  generated: true
@@ -1,6 +1,6 @@
1
- import { wait } from '../handy'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { wait } from '../handy.ts'
2
+ import { Filter } from '../types.ts'
3
+ import { RealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  export class BlockchainComRealTimeFeed extends RealTimeFeedBase {
6
6
  protected readonly wssURL = 'wss://ws.blockchain.info/mercury-gateway/v1/ws'
@@ -1,6 +1,6 @@
1
- import { batch } from '../handy'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase, MultiConnectionRealTimeFeedBase } from './realtimefeed'
1
+ import { batch } from '../handy.ts'
2
+ import { Filter } from '../types.ts'
3
+ import { RealTimeFeedBase, MultiConnectionRealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  export class BybitRealTimeDataFeed extends MultiConnectionRealTimeFeedBase {
6
6
  protected *_getRealTimeFeeds(exchange: string, filters: Filter<string>[], timeoutIntervalMS?: number, onError?: (error: Error) => void) {
@@ -1,6 +1,6 @@
1
1
  import crypto from 'crypto'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase } from './realtimefeed'
2
+ import { Filter } from '../types.ts'
3
+ import { RealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  export class CoinbaseRealTimeFeed extends RealTimeFeedBase {
6
6
  private _hasCredentials =
@@ -1,6 +1,6 @@
1
1
  import crypto from 'crypto'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase } from './realtimefeed'
2
+ import { Filter } from '../types.ts'
3
+ import { RealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  export class CoinbaseInternationalRealTimeFeed extends RealTimeFeedBase {
6
6
  private _hasCredentials =
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class CoinflexRealTimeFeed extends RealTimeFeedBase {
5
5
  protected readonly wssURL = 'wss://v2api.coinflex.com/v2/websocket'
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class CryptoComRealTimeFeed extends RealTimeFeedBase {
5
5
  protected wssURL = 'wss://stream.crypto.com/exchange/v1/market'
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class CryptofacilitiesRealTimeFeed extends RealTimeFeedBase {
5
5
  protected wssURL = 'wss://futures.kraken.com/ws/v1'
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class DeltaRealTimeFeed extends RealTimeFeedBase {
5
5
  protected readonly wssURL = 'wss://socket.delta.exchange'
@@ -1,6 +1,6 @@
1
- import { wait } from '../handy'
2
- import { Filter, FilterForExchange } from '../types'
3
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { wait } from '../handy.ts'
2
+ import { Filter, FilterForExchange } from '../types.ts'
3
+ import { RealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  export class DeribitRealTimeDataFeed extends RealTimeFeedBase {
6
6
  protected get wssURL() {
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class DydxRealTimeFeed extends RealTimeFeedBase {
5
5
  protected readonly wssURL = 'wss://api.dydx.exchange/v3/ws'
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class DydxV4RealTimeFeed extends RealTimeFeedBase {
5
5
  protected readonly wssURL = 'wss://indexer.dydx.trade/v4/ws'
@@ -1,8 +1,8 @@
1
1
  import { Writable } from 'stream'
2
2
 
3
- import { Filter } from '../types'
4
- import { RealTimeFeedBase, PoolingClientBase, MultiConnectionRealTimeFeedBase } from './realtimefeed'
5
- import { batch, httpClient } from '../handy'
3
+ import { Filter } from '../types.ts'
4
+ import { RealTimeFeedBase, PoolingClientBase, MultiConnectionRealTimeFeedBase } from './realtimefeed.ts'
5
+ import { batch, getJSON } from '../handy.ts'
6
6
 
7
7
  abstract class FTXRealTimeFeedBase extends MultiConnectionRealTimeFeedBase {
8
8
  protected abstract wssURL: string
@@ -93,11 +93,11 @@ class FTXInstrumentInfoClient extends PoolingClientBase {
93
93
 
94
94
  try {
95
95
  const responses = await Promise.all([
96
- httpClient.get(`${this._httpURL}/futures/${instrument}/stats`, { timeout: 10000 }).json() as any,
97
- httpClient.get(`${this._httpURL}/futures/${instrument}`, { timeout: 10000 }).json() as any
96
+ getJSON<any>(`${this._httpURL}/futures/${instrument}/stats`, { timeout: 10000 }),
97
+ getJSON<any>(`${this._httpURL}/futures/${instrument}`, { timeout: 10000 })
98
98
  ])
99
99
 
100
- if (responses.some((r) => r.success === false)) {
100
+ if (responses.some((response) => response.data.success === false)) {
101
101
  return
102
102
  }
103
103
 
@@ -107,8 +107,8 @@ class FTXInstrumentInfoClient extends PoolingClientBase {
107
107
  market: instrument,
108
108
  type: 'update',
109
109
  data: {
110
- stats: responses[0].result,
111
- info: responses[1].result
110
+ stats: responses[0].data.result,
111
+ info: responses[1].data.result
112
112
  }
113
113
  }
114
114
 
@@ -1,6 +1,5 @@
1
- import { httpClient } from '../handy'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
4
3
 
5
4
  export class GateIORealTimeFeed extends RealTimeFeedBase {
6
5
  protected readonly wssURL = 'wss://api.gateio.ws/ws/v4/'
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase, MultiConnectionRealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase, MultiConnectionRealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class GateIOFuturesRealTimeFeed extends MultiConnectionRealTimeFeedBase {
5
5
  protected *_getRealTimeFeeds(exchange: string, filters: Filter<string>[], timeoutIntervalMS?: number, onError?: (error: Error) => void) {
@@ -42,6 +42,7 @@ export class GateIOFuturesRealTimeFeed extends MultiConnectionRealTimeFeedBase {
42
42
 
43
43
  class GateIOFuturesSingleConnectionRealTimeFeed extends RealTimeFeedBase {
44
44
  protected readonly wssURL: string
45
+ protected readonly extraHeaders = { 'X-Gate-Size-Decimal': '1' }
45
46
 
46
47
  constructor(
47
48
  wsURLSuffix: string,
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class GeminiRealTimeFeed extends RealTimeFeedBase {
5
5
  protected wssURL = 'wss://api.gemini.com/v2/marketdata'
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class HitBtcRealTimeFeed extends RealTimeFeedBase {
5
5
  protected wssURL = 'wss://api.hitbtc.com/api/2/ws'
@@ -1,7 +1,7 @@
1
1
  import { unzipSync } from 'zlib'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase, MultiConnectionRealTimeFeedBase, PoolingClientBase } from './realtimefeed'
4
- import { wait, ONE_SEC_IN_MS, batch, httpClient } from '../handy'
2
+ import { Filter } from '../types.ts'
3
+ import { RealTimeFeedBase, MultiConnectionRealTimeFeedBase, PoolingClientBase } from './realtimefeed.ts'
4
+ import { wait, ONE_SEC_IN_MS, batch, getJSON } from '../handy.ts'
5
5
  import { Writable } from 'stream'
6
6
 
7
7
  abstract class HuobiRealTimeFeedBase extends MultiConnectionRealTimeFeedBase {
@@ -248,17 +248,17 @@ class HuobiOpenInterestClient extends PoolingClientBase {
248
248
  return
249
249
  }
250
250
  const url = `${this._httpURL}/${this._getURLPath(instrument)}`
251
- const openInterestResponse = (await httpClient.get(url, { timeout: 10000 }).json()) as any
251
+ const { data: body } = await getJSON<any>(url, { timeout: 10000 })
252
252
 
253
- if (openInterestResponse.status !== 'ok') {
254
- throw new Error(`open interest response error:${JSON.stringify(openInterestResponse)}, url:${url}`)
253
+ if (body.status !== 'ok') {
254
+ throw new Error(`open interest response error:${JSON.stringify(body)}, url:${url}`)
255
255
  }
256
256
 
257
257
  const openInterestMessage = {
258
258
  ch: `market.${instrument}.open_interest`,
259
259
  generated: true,
260
- data: openInterestResponse.data,
261
- ts: openInterestResponse.ts
260
+ data: body.data,
261
+ ts: body.ts
262
262
  }
263
263
 
264
264
  if (outputStream.writable) {
@@ -283,17 +283,17 @@ class HuobiOptionsMarketIndexClient extends PoolingClientBase {
283
283
  return
284
284
  }
285
285
  const url = `${this._httpURL}/option_market_index?contract_code=${instrument}`
286
- const marketIndexResponse = (await httpClient.get(url, { timeout: 10000 }).json()) as any
286
+ const { data: body } = await getJSON<any>(url, { timeout: 10000 })
287
287
 
288
- if (marketIndexResponse.status !== 'ok') {
289
- throw new Error(`open interest response error:${JSON.stringify(marketIndexResponse)}, url:${url}`)
288
+ if (body.status !== 'ok') {
289
+ throw new Error(`open interest response error:${JSON.stringify(body)}, url:${url}`)
290
290
  }
291
291
 
292
292
  const marketIndexMessage = {
293
293
  ch: `market.${instrument}.option_market_index`,
294
294
  generated: true,
295
- data: marketIndexResponse.data[0],
296
- ts: marketIndexResponse.ts
295
+ data: body.data[0],
296
+ ts: body.ts
297
297
  }
298
298
 
299
299
  if (outputStream.writable) {
@@ -318,17 +318,17 @@ class HuobiOptionsIndexClient extends PoolingClientBase {
318
318
  return
319
319
  }
320
320
  const url = `${this._httpURL}/option_index?symbol=${instrument}`
321
- const optionIndexResponse = (await httpClient.get(url, { timeout: 10000 }).json()) as any
321
+ const { data: body } = await getJSON<any>(url, { timeout: 10000 })
322
322
 
323
- if (optionIndexResponse.status !== 'ok') {
324
- throw new Error(`open interest response error:${JSON.stringify(optionIndexResponse)}, url:${url}`)
323
+ if (body.status !== 'ok') {
324
+ throw new Error(`open interest response error:${JSON.stringify(body)}, url:${url}`)
325
325
  }
326
326
 
327
327
  const optionIndexMessage = {
328
328
  ch: `market.${instrument}.option_index`,
329
329
  generated: true,
330
- data: optionIndexResponse.data[0],
331
- ts: optionIndexResponse.ts
330
+ data: body.data[0],
331
+ ts: body.ts
332
332
  }
333
333
 
334
334
  if (outputStream.writable) {
@@ -1,5 +1,5 @@
1
- import { Filter } from '../types'
2
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { Filter } from '../types.ts'
2
+ import { RealTimeFeedBase } from './realtimefeed.ts'
3
3
 
4
4
  export class HyperliquidRealTimeFeed extends RealTimeFeedBase {
5
5
  protected wssURL = 'wss://api.hyperliquid.xyz/ws'