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,59 +1,59 @@
1
- import { Exchange, Filter } from '../types'
1
+ import { Exchange, Filter } from '../types.ts'
2
2
  import {
3
3
  BinanceFuturesRealTimeFeed,
4
4
  BinanceJerseyRealTimeFeed,
5
5
  BinanceRealTimeFeed,
6
6
  BinanceUSRealTimeFeed,
7
7
  BinanceDeliveryRealTimeFeed
8
- } from './binance'
9
- import { BinanceDexRealTimeFeed } from './binancedex'
10
- import { BitfinexRealTimeFeed } from './bitfinex'
11
- import { BitflyerRealTimeFeed } from './bitflyer'
12
- import { BitmexRealTimeFeed } from './bitmex'
13
- import { BitstampRealTimeFeed } from './bitstamp'
14
- import { BybitOptionsRealTimeDataFeed, BybitRealTimeDataFeed, BybitSpotRealTimeDataFeed } from './bybit'
15
- import { CoinbaseRealTimeFeed } from './coinbase'
16
- import { CryptofacilitiesRealTimeFeed } from './cryptofacilities'
17
- import { DeribitRealTimeDataFeed } from './deribit'
18
- import { FtxRealTimeFeed, FtxUSRealTimeFeed } from './ftx'
19
- import { GeminiRealTimeFeed } from './gemini'
20
- import { HitBtcRealTimeFeed } from './hitbtc'
8
+ } from './binance.ts'
9
+ import { BinanceDexRealTimeFeed } from './binancedex.ts'
10
+ import { BitfinexRealTimeFeed } from './bitfinex.ts'
11
+ import { BitflyerRealTimeFeed } from './bitflyer.ts'
12
+ import { BitmexRealTimeFeed } from './bitmex.ts'
13
+ import { BitstampRealTimeFeed } from './bitstamp.ts'
14
+ import { BybitOptionsRealTimeDataFeed, BybitRealTimeDataFeed, BybitSpotRealTimeDataFeed } from './bybit.ts'
15
+ import { CoinbaseRealTimeFeed } from './coinbase.ts'
16
+ import { CryptofacilitiesRealTimeFeed } from './cryptofacilities.ts'
17
+ import { DeribitRealTimeDataFeed } from './deribit.ts'
18
+ import { FtxRealTimeFeed, FtxUSRealTimeFeed } from './ftx.ts'
19
+ import { GeminiRealTimeFeed } from './gemini.ts'
20
+ import { HitBtcRealTimeFeed } from './hitbtc.ts'
21
21
  import {
22
22
  HuobiDMRealTimeFeed,
23
23
  HuobiRealTimeFeed,
24
24
  HuobiDMSwapRealTimeFeed,
25
25
  HuobiDMLinearSwapRealTimeFeed,
26
26
  HuobiDMOptionsRealTimeFeed
27
- } from './huobi'
28
- import { KrakenRealTimeFeed } from './kraken'
29
- import { OKCoinRealTimeFeed, OkexOptionsRealTimeFeed, OkexRealTimeFeed } from './okex'
30
- import { RealTimeFeed } from './realtimefeed'
31
- import { PhemexRealTimeFeed } from './phemex'
32
- import { DeltaRealTimeFeed } from './delta'
33
- import { GateIORealTimeFeed } from './gateio'
34
- import { GateIOFuturesRealTimeFeed } from './gateiofutures'
35
- import { PoloniexRealTimeFeed } from './poloniex'
36
- import { CoinflexRealTimeFeed } from './coinflex'
37
- import { UpbitRealTimeFeed } from './upbit'
38
- import { AscendexRealTimeFeed } from './ascendex'
39
- import { DydxRealTimeFeed } from './dydx'
40
- import { SerumRealTimeFeed } from './serum'
41
- import { StarAtlasRealTimeFeed } from './staratlas'
42
- import { MangoRealTimeFeed } from './mango'
43
- import { CryptoComRealTimeFeed } from './cryptocom'
44
- import { KucoinRealTimeFeed } from './kucoin'
45
- import { BitnomialRealTimeFeed } from './bitnomial'
46
- import { WooxRealTimeFeed } from './woox'
47
- import { BlockchainComRealTimeFeed } from './blockchaincom'
48
- import { BinanceEuropeanOptionsRealTimeFeed } from './binanceeuropeanoptions'
49
- import { OkexSpreadsRealTimeFeed } from './okexspreads'
50
- import { KucoinFuturesRealTimeFeed } from './kucoinfutures'
51
- import { DydxV4RealTimeFeed } from './dydx_v4'
52
- import { BitgetFuturesRealTimeFeed, BitgetRealTimeFeed } from './bitget'
53
- import { CoinbaseInternationalRealTimeFeed } from './coinbaseinternational'
54
- import { HyperliquidRealTimeFeed } from './hyperliquid'
27
+ } from './huobi.ts'
28
+ import { KrakenRealTimeFeed } from './kraken.ts'
29
+ import { OKCoinRealTimeFeed, OkexOptionsRealTimeFeed, OkexRealTimeFeed } from './okex.ts'
30
+ import { RealTimeFeed } from './realtimefeed.ts'
31
+ import { PhemexRealTimeFeed } from './phemex.ts'
32
+ import { DeltaRealTimeFeed } from './delta.ts'
33
+ import { GateIORealTimeFeed } from './gateio.ts'
34
+ import { GateIOFuturesRealTimeFeed } from './gateiofutures.ts'
35
+ import { PoloniexRealTimeFeed } from './poloniex.ts'
36
+ import { CoinflexRealTimeFeed } from './coinflex.ts'
37
+ import { UpbitRealTimeFeed } from './upbit.ts'
38
+ import { AscendexRealTimeFeed } from './ascendex.ts'
39
+ import { DydxRealTimeFeed } from './dydx.ts'
40
+ import { SerumRealTimeFeed } from './serum.ts'
41
+ import { StarAtlasRealTimeFeed } from './staratlas.ts'
42
+ import { MangoRealTimeFeed } from './mango.ts'
43
+ import { CryptoComRealTimeFeed } from './cryptocom.ts'
44
+ import { KucoinRealTimeFeed } from './kucoin.ts'
45
+ import { BitnomialRealTimeFeed } from './bitnomial.ts'
46
+ import { WooxRealTimeFeed } from './woox.ts'
47
+ import { BlockchainComRealTimeFeed } from './blockchaincom.ts'
48
+ import { BinanceEuropeanOptionsRealTimeFeed } from './binanceeuropeanoptions.ts'
49
+ import { OkexSpreadsRealTimeFeed } from './okexspreads.ts'
50
+ import { KucoinFuturesRealTimeFeed } from './kucoinfutures.ts'
51
+ import { DydxV4RealTimeFeed } from './dydx_v4.ts'
52
+ import { BitgetFuturesRealTimeFeed, BitgetRealTimeFeed } from './bitget.ts'
53
+ import { CoinbaseInternationalRealTimeFeed } from './coinbaseinternational.ts'
54
+ import { HyperliquidRealTimeFeed } from './hyperliquid.ts'
55
55
 
56
- export * from './realtimefeed'
56
+ export * from './realtimefeed.ts'
57
57
 
58
58
  const realTimeFeedsMap: {
59
59
  [key in Exchange]?: RealTimeFeed
@@ -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 KrakenRealTimeFeed extends RealTimeFeedBase {
5
5
  protected wssURL = 'wss://ws.kraken.com'
@@ -1,15 +1,15 @@
1
- import { httpClient, getRandomString, wait } from '../handy'
2
- import { Filter } from '../types'
3
- import { RealTimeFeedBase } from './realtimefeed'
1
+ import { getRandomString, getJSON, postJSON, wait } from '../handy.ts'
2
+ import { Filter } from '../types.ts'
3
+ import { RealTimeFeedBase } from './realtimefeed.ts'
4
4
 
5
5
  export class KucoinRealTimeFeed extends RealTimeFeedBase {
6
6
  protected wssURL = ''
7
7
  private _httpURL = 'https://api.kucoin.com/api'
8
8
 
9
9
  protected async getWebSocketUrl() {
10
- const response = (await httpClient.post(`${this._httpURL}/v1/bullet-public`, { retry: 3, timeout: 10000 }).json()) as any
10
+ const { data: body } = await postJSON<any>(`${this._httpURL}/v1/bullet-public`, { retry: 3, timeout: 10000 })
11
11
 
12
- return `${response.data.instanceServers[0].endpoint}?token=${response.data.token}&connectId=${getRandomString()}`
12
+ return `${body.data.instanceServers[0].endpoint}?token=${body.data.token}&connectId=${getRandomString()}`
13
13
  }
14
14
 
15
15
  protected mapToSubscribeMessages(filters: Filter<string>[]): any[] {
@@ -42,16 +42,16 @@ export class KucoinRealTimeFeed extends RealTimeFeedBase {
42
42
  return
43
43
  }
44
44
 
45
- const depthSnapshotResponse = (await httpClient
46
- .get(`${this._httpURL}/v1/market/orderbook/level2_100?symbol=${symbol}`, { timeout: 10000 })
47
- .json()) as any
45
+ const { data } = await getJSON<any>(`${this._httpURL}/v1/market/orderbook/level2_100?symbol=${symbol}`, {
46
+ timeout: 10000
47
+ })
48
48
 
49
49
  const snapshot = {
50
50
  type: 'message',
51
51
  generated: true,
52
52
  topic: `/market/level2Snapshot:${symbol}`,
53
53
  subject: 'trade.l2Snapshot',
54
- ...depthSnapshotResponse
54
+ ...data
55
55
  }
56
56
 
57
57
  this.manualSnapshotsBuffer.push(snapshot)
@@ -1,7 +1,7 @@
1
1
  import { Writable } from 'stream'
2
- import { httpClient, getRandomString, wait } from '../handy'
3
- import { Filter } from '../types'
4
- import { MultiConnectionRealTimeFeedBase, PoolingClientBase, RealTimeFeedBase } from './realtimefeed'
2
+ import { getJSON, getRandomString, postJSON } from '../handy.ts'
3
+ import { Filter } from '../types.ts'
4
+ import { MultiConnectionRealTimeFeedBase, PoolingClientBase, RealTimeFeedBase } from './realtimefeed.ts'
5
5
 
6
6
  const kucoinHttpOptions = {
7
7
  timeout: 10 * 1000,
@@ -42,9 +42,9 @@ export class KucoinFuturesSingleConnectionRealTimeFeed extends RealTimeFeedBase
42
42
  protected wssURL = ''
43
43
 
44
44
  protected async getWebSocketUrl() {
45
- const response = (await httpClient.post(`${this._httpURL}/v1/bullet-public`, { retry: 3, timeout: 10000 }).json()) as any
45
+ const { data: body } = await postJSON<any>(`${this._httpURL}/v1/bullet-public`, { retry: 3, timeout: 10000 })
46
46
 
47
- return `${response.data.instanceServers[0].endpoint}?token=${response.data.token}&connectId=${getRandomString()}`
47
+ return `${body.data.instanceServers[0].endpoint}?token=${body.data.token}&connectId=${getRandomString()}`
48
48
  }
49
49
 
50
50
  protected mapToSubscribeMessages(filters: Filter<string>[]): any[] {
@@ -76,16 +76,14 @@ export class KucoinFuturesSingleConnectionRealTimeFeed extends RealTimeFeedBase
76
76
  return
77
77
  }
78
78
 
79
- const depthSnapshotResponse = (await httpClient
80
- .get(`${this._httpURL}/v1/level2/snapshot?symbol=${symbol}`, kucoinHttpOptions)
81
- .json()) as any
79
+ const { data } = await getJSON<any>(`${this._httpURL}/v1/level2/snapshot?symbol=${symbol}`, kucoinHttpOptions)
82
80
 
83
81
  const snapshot = {
84
82
  type: 'message',
85
83
  generated: true,
86
84
  topic: `/contractMarket/level2Snapshot:${symbol}`,
87
85
  subject: 'level2Snapshot',
88
- ...depthSnapshotResponse
86
+ ...data
89
87
  }
90
88
 
91
89
  this.manualSnapshotsBuffer.push(snapshot)
@@ -116,9 +114,9 @@ class KucoinFuturesContractDetailsClient extends PoolingClientBase {
116
114
  }
117
115
 
118
116
  protected async poolDataToStream(outputStream: Writable) {
119
- const openInterestResponse = (await httpClient.get(`${this._httpURL}/v1/contracts/active`, kucoinHttpOptions).json()) as any
117
+ const { data: body } = await getJSON<any>(`${this._httpURL}/v1/contracts/active`, kucoinHttpOptions)
120
118
 
121
- for (const instrument of openInterestResponse.data) {
119
+ for (const instrument of body.data) {
122
120
  const openInterestMessage = {
123
121
  topic: `/contract/details:${instrument.symbol}`,
124
122
  type: 'message',
@@ -1,4 +1,4 @@
1
- import { SerumRealTimeFeed } from './serum'
1
+ import { SerumRealTimeFeed } from './serum.ts'
2
2
 
3
3
  export class MangoRealTimeFeed extends SerumRealTimeFeed {
4
4
  protected wssURL = 'wss://api.mango-bowl.com/v1/ws'
@@ -1,7 +1,7 @@
1
1
  import crypto from 'crypto'
2
- import { wait } from '../handy'
3
- import { Filter } from '../types'
4
- import { MultiConnectionRealTimeFeedBase, RealTimeFeedBase } from './realtimefeed'
2
+ import { wait } from '../handy.ts'
3
+ import { Filter } from '../types.ts'
4
+ import { MultiConnectionRealTimeFeedBase, RealTimeFeedBase } from './realtimefeed.ts'
5
5
 
6
6
  export class OkexRealTimeFeed extends MultiConnectionRealTimeFeedBase {
7
7
  protected *_getRealTimeFeeds(exchange: string, filters: Filter<string>[], timeoutIntervalMS?: number, onError?: (error: Error) => void) {
@@ -1,7 +1,7 @@
1
1
  import crypto from 'crypto'
2
- import { wait } from '../handy'
3
- import { Filter } from '../types'
4
- import { RealTimeFeedBase } from './realtimefeed'
2
+ import { wait } from '../handy.ts'
3
+ import { Filter } from '../types.ts'
4
+ import { RealTimeFeedBase } from './realtimefeed.ts'
5
5
 
6
6
  export class OkexSpreadsRealTimeFeed extends RealTimeFeedBase {
7
7
  protected wssURL = 'wss://ws.okx.com:8443/ws/v5/business'
@@ -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 PhemexRealTimeFeed extends RealTimeFeedBase {
5
5
  protected readonly wssURL = 'wss://ws.phemex.com/'
@@ -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 PoloniexRealTimeFeed extends RealTimeFeedBase {
5
5
  protected readonly wssURL = 'wss://ws.poloniex.com/ws/public'
@@ -1,10 +1,10 @@
1
1
  import dbg from 'debug'
2
2
  import WebSocket from 'ws'
3
- import { ClientRequestArgs } from 'http'
3
+ import type { ClientRequestArgs } from 'http'
4
4
  import { PassThrough, Writable } from 'stream'
5
5
  import { once } from 'events'
6
- import { httpsProxyAgent, ONE_SEC_IN_MS, optimizeFilters, wait } from '../handy'
7
- import { Exchange, Filter } from '../types'
6
+ import { httpsProxyAgent, ONE_SEC_IN_MS, optimizeFilters, wait } from '../handy.ts'
7
+ import { Exchange, Filter } from '../types.ts'
8
8
 
9
9
  export type RealTimeFeed = {
10
10
  new (
@@ -34,6 +34,7 @@ export abstract class RealTimeFeedBase implements RealTimeFeedIterable {
34
34
  private _connectionId = -1
35
35
  private _wsClientOptions: WebSocket.ClientOptions | ClientRequestArgs
36
36
  protected readonly originHeader: string | undefined = undefined
37
+ protected readonly extraHeaders: Record<string, string> | undefined = undefined
37
38
 
38
39
  constructor(
39
40
  protected readonly _exchange: string,
@@ -90,6 +91,10 @@ export abstract class RealTimeFeedBase implements RealTimeFeedIterable {
90
91
  ;(this._wsClientOptions as any).headers['origin'] = this.originHeader
91
92
  }
92
93
 
94
+ if (this.extraHeaders !== undefined) {
95
+ Object.assign((this._wsClientOptions as any).headers, this.extraHeaders)
96
+ }
97
+
93
98
  this._ws = new WebSocket(finalWssUrl, this._wsClientOptions)
94
99
  this._ws.onopen = this._onConnectionEstabilished
95
100
  this._ws.onclose = this._onConnectionClosed
@@ -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 SerumRealTimeFeed extends RealTimeFeedBase {
5
5
  protected wssURL = 'wss://api.serum-vial.dev/v1/ws'
@@ -1,4 +1,4 @@
1
- import { SerumRealTimeFeed } from './serum'
1
+ import { SerumRealTimeFeed } from './serum.ts'
2
2
 
3
3
  export class StarAtlasRealTimeFeed extends SerumRealTimeFeed {
4
4
  protected wssURL = 'wss://serum-vial.staratlas.cloud/v1/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 UpbitRealTimeFeed extends RealTimeFeedBase {
5
5
  protected readonly wssURL = 'wss://api.upbit.com/websocket/v1'
@@ -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 WooxRealTimeFeed extends RealTimeFeedBase {
6
6
  protected wssURL = 'wss://wss.woo.org/ws/stream/OqdphuyCtYWxwzhxyLLjOWNdFP7sQt8RPWzmb5xY'
package/src/replay.ts CHANGED
@@ -1,17 +1,22 @@
1
- import { createReadStream, remove } from 'fs-extra'
2
- import path from 'path'
3
- import { EventEmitter } from 'stream'
1
+ import { createReadStream } from 'node:fs'
2
+ import { rm } from 'node:fs/promises'
3
+ import { EventEmitter } from 'events'
4
4
  import { Worker } from 'worker_threads'
5
5
  import { constants, createGunzip } from 'zlib'
6
- import { BinarySplitStream } from './binarysplit'
7
- import { clearCacheSync } from './clearcache'
8
- import { EXCHANGES, EXCHANGE_CHANNELS_INFO } from './consts'
9
- import { debug } from './debug'
10
- import { addDays, getFilters, normalizeMessages, parseAsUTCDate, parseμs, wait } from './handy'
11
- import { MapperFactory, normalizeBookChanges } from './mappers'
12
- import { getOptions } from './options'
13
- import { Disconnect, Exchange, FilterForExchange } from './types'
14
- import { WorkerJobPayload, WorkerMessage, WorkerSignal } from './worker'
6
+ import { BinarySplitStream } from './binarysplit.ts'
7
+ import { clearCacheSync } from './clearcache.ts'
8
+ import { EXCHANGES, EXCHANGE_CHANNELS_INFO } from './consts.ts'
9
+ import { debug } from './debug.ts'
10
+ import { addDays, getFilters, normalizeMessages, parseAsUTCDate, wait } from './handy.ts'
11
+ import { MapperFactory, normalizeBookChanges } from './mappers/index.ts'
12
+ import { getOptions } from './options.ts'
13
+ import { Disconnect, Exchange, FilterForExchange } from './types.ts'
14
+ import { WorkerJobPayload, WorkerMessage, WorkerSignal } from './worker.ts'
15
+
16
+ type MapperOutput<T> = T extends MapperFactory<any, infer U> ? U : never
17
+ type ReplayNormalizedMessage<U extends readonly MapperFactory<any, any>[], Z extends boolean> = Z extends true
18
+ ? MapperOutput<U[number]> | Disconnect
19
+ : MapperOutput<U[number]>
15
20
 
16
21
  export async function* replay<T extends Exchange, U extends boolean = false, Z extends boolean = false>({
17
22
  exchange,
@@ -77,7 +82,7 @@ export async function* replay<T extends Exchange, U extends boolean = false, Z e
77
82
  // see https://github.com/request/request/pull/2492 and https://github.com/node-fetch/node-fetch/pull/239
78
83
 
79
84
  const ZLIB_OPTIONS = {
80
- chunkSize: 128 * 1024,
85
+ chunkSize: 256 * 1024,
81
86
  flush: constants.Z_SYNC_FLUSH,
82
87
  finishFlush: constants.Z_SYNC_FLUSH
83
88
  }
@@ -110,7 +115,7 @@ export async function* replay<T extends Exchange, U extends boolean = false, Z e
110
115
  }
111
116
 
112
117
  // response is a path to file on disk let' read it as stream
113
- const linesStream = createReadStream(cachedSlicePath, { highWaterMark: 128 * 1024 })
118
+ const linesStream = createReadStream(cachedSlicePath, { highWaterMark: 256 * 1024 })
114
119
  // unzip it
115
120
  .pipe(createGunzip(ZLIB_OPTIONS))
116
121
  .on('error', function onGunzipError(err) {
@@ -130,16 +135,14 @@ export async function* replay<T extends Exchange, U extends boolean = false, Z e
130
135
  linesCount++
131
136
  if (bufferLine.length > 0) {
132
137
  lastMessageWasUndefined = false
133
- const localTimestampBuffer = bufferLine.slice(0, DATE_MESSAGE_SPLIT_INDEX)
134
- const messageBuffer = bufferLine.slice(DATE_MESSAGE_SPLIT_INDEX + 1)
135
138
  // as any due to https://github.com/Microsoft/TypeScript/issues/24929
136
139
  if (skipDecoding === true) {
137
140
  yield {
138
- localTimestamp: localTimestampBuffer,
139
- message: messageBuffer
141
+ localTimestamp: bufferLine.slice(0, DATE_MESSAGE_SPLIT_INDEX),
142
+ message: bufferLine.slice(DATE_MESSAGE_SPLIT_INDEX + 1)
140
143
  } as any
141
144
  } else {
142
- let messageString = messageBuffer.toString()
145
+ let messageString = bufferLine.toString('utf8', DATE_MESSAGE_SPLIT_INDEX + 1)
143
146
 
144
147
  // hack to handle huobi long numeric id for trades
145
148
  if (exchange.startsWith('huobi-') && messageString.includes('.trade.detail')) {
@@ -152,12 +155,9 @@ export async function* replay<T extends Exchange, U extends boolean = false, Z e
152
155
 
153
156
  const message = JSON.parse(messageString)
154
157
 
155
- const localTimestampString = localTimestampBuffer.toString()
156
- const localTimestamp = new Date(localTimestampString)
158
+ const localTimestamp = new Date(bufferLine.toString('utf8', 0, DATE_MESSAGE_SPLIT_INDEX))
157
159
  if (withMicroseconds) {
158
- // provide additionally fractions of millisecond at microsecond resolution
159
- // local timestamp always has format like this 2019-06-01T00:03:03.1238784Z
160
- localTimestamp.μs = parseμs(localTimestampString)
160
+ localTimestamp.μs = parseReplayMicroseconds(bufferLine)
161
161
  }
162
162
 
163
163
  yield {
@@ -227,12 +227,16 @@ export async function* replay<T extends Exchange, U extends boolean = false, Z e
227
227
 
228
228
  async function cleanupSlice(slicePath: string) {
229
229
  try {
230
- await remove(slicePath)
230
+ await rm(slicePath, { force: true })
231
231
  } catch (e) {
232
232
  debug('cleanupSlice error %s %o', slicePath, e)
233
233
  }
234
234
  }
235
235
 
236
+ function parseReplayMicroseconds(bufferLine: Buffer) {
237
+ return (bufferLine[23] - 48) * 100 + (bufferLine[24] - 48) * 10 + (bufferLine[25] - 48)
238
+ }
239
+
236
240
  // gracefully terminate worker
237
241
  async function terminateWorker(worker: Worker, waitTimeout: number) {
238
242
  let cancelWait = () => {}
@@ -262,15 +266,7 @@ export function replayNormalized<T extends Exchange, U extends MapperFactory<T,
262
266
  waitWhenDataNotYetAvailable = undefined
263
267
  }: ReplayNormalizedOptions<T, Z>,
264
268
  ...normalizers: U
265
- ): AsyncIterableIterator<
266
- Z extends true
267
- ? U extends MapperFactory<infer _, infer X>[]
268
- ? X | Disconnect
269
- : never
270
- : U extends MapperFactory<infer _, infer X>[]
271
- ? X
272
- : never
273
- > {
269
+ ): AsyncIterableIterator<ReplayNormalizedMessage<U, Z>> {
274
270
  const fromDate = parseAsUTCDate(from)
275
271
 
276
272
  validateReplayNormalizedOptions(fromDate, normalizers)
@@ -359,7 +355,7 @@ class ReliableWorker extends EventEmitter {
359
355
  }
360
356
 
361
357
  private _initWorker() {
362
- this._worker = new Worker(path.resolve(__dirname, 'worker.js'), {
358
+ this._worker = new Worker(new URL('./worker.js', import.meta.url), {
363
359
  workerData: this._payload
364
360
  })
365
361
 
package/src/stream.ts CHANGED
@@ -1,8 +1,13 @@
1
- import { debug } from './debug'
2
- import { getFilters, normalizeMessages } from './handy'
3
- import { MapperFactory } from './mappers'
4
- import { createRealTimeFeed } from './realtimefeeds'
5
- import { Disconnect, Exchange, Filter, FilterForExchange } from './types'
1
+ import { debug } from './debug.ts'
2
+ import { getFilters, normalizeMessages } from './handy.ts'
3
+ import { MapperFactory } from './mappers/index.ts'
4
+ import { createRealTimeFeed } from './realtimefeeds/index.ts'
5
+ import { Disconnect, Exchange, Filter, FilterForExchange } from './types.ts'
6
+
7
+ type MapperOutput<T> = T extends MapperFactory<any, infer U> ? U : never
8
+ type StreamNormalizedMessage<U extends readonly MapperFactory<any, any>[], Z extends boolean> = Z extends true
9
+ ? MapperOutput<U[number]> | Disconnect
10
+ : MapperOutput<U[number]>
6
11
 
7
12
  async function* _stream<T extends Exchange, U extends boolean = false>({
8
13
  exchange,
@@ -52,15 +57,7 @@ export function stream<T extends Exchange, U extends boolean = false>({
52
57
  async function* _streamNormalized<T extends Exchange, U extends MapperFactory<T, any>[], Z extends boolean = false>(
53
58
  { exchange, symbols, timeoutIntervalMS = 10000, withDisconnectMessages = undefined, onError = undefined }: StreamNormalizedOptions<T, Z>,
54
59
  ...normalizers: U
55
- ): AsyncIterableIterator<
56
- Z extends true
57
- ? U extends MapperFactory<infer _, infer X>[]
58
- ? X | Disconnect
59
- : never
60
- : U extends MapperFactory<infer _, infer X>[]
61
- ? X
62
- : never
63
- > {
60
+ ): AsyncIterableIterator<StreamNormalizedMessage<U, Z>> {
64
61
  while (true) {
65
62
  try {
66
63
  const createMappers = (localTimestamp: Date) => normalizers.map((m) => m(exchange, localTimestamp))
@@ -150,15 +147,7 @@ export type StreamNormalizedOptions<T extends Exchange, U extends boolean = fals
150
147
  export function streamNormalized<T extends Exchange, U extends MapperFactory<T, any>[], Z extends boolean = false>(
151
148
  { exchange, symbols, timeoutIntervalMS = 10000, withDisconnectMessages = undefined, onError = undefined }: StreamNormalizedOptions<T, Z>,
152
149
  ...normalizers: U
153
- ): AsyncIterableIterator<
154
- Z extends true
155
- ? U extends MapperFactory<infer _, infer X>[]
156
- ? X | Disconnect
157
- : never
158
- : U extends MapperFactory<infer _, infer X>[]
159
- ? X
160
- : never
161
- > {
150
+ ): AsyncIterableIterator<StreamNormalizedMessage<U, Z>> {
162
151
  let _iterator = _streamNormalized({ exchange, symbols, timeoutIntervalMS, withDisconnectMessages, onError }, ...normalizers)
163
152
 
164
153
  ;(_iterator as any).__realtime__ = true
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { EXCHANGES, EXCHANGE_CHANNELS_INFO } from './consts'
1
+ import { EXCHANGES, EXCHANGE_CHANNELS_INFO } from './consts.ts'
2
2
 
3
3
  export type Exchange = (typeof EXCHANGES)[number]
4
4
 
package/src/worker.ts CHANGED
@@ -1,10 +1,9 @@
1
1
  import dbg from 'debug'
2
- import { existsSync } from 'fs-extra'
2
+ import { existsSync } from 'node:fs'
3
3
  import pMap from 'p-map'
4
4
  import { isMainThread, parentPort, workerData } from 'worker_threads'
5
- import { addMinutes, download, formatDateToPath, optimizeFilters, sequence, sha256, wait, cleanTempFiles } from './handy'
6
- import { Exchange, Filter } from './types'
7
-
5
+ import { addMinutes, download, formatDateToPath, optimizeFilters, sequence, sha256, wait, cleanTempFiles } from './handy.ts'
6
+ import { Exchange, Filter } from './types.ts'
8
7
  const debug = dbg('tardis-dev')
9
8
 
10
9
  if (isMainThread) {