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
package/src/handy.ts CHANGED
@@ -1,21 +1,24 @@
1
1
  import crypto, { createHash } from 'crypto'
2
- import { createWriteStream, ensureDirSync, rename, removeSync } from 'fs-extra'
3
- import { RequestOptions, Agent } from 'https'
4
- import { https } from 'follow-redirects'
5
- import { HttpsProxyAgent } from 'https-proxy-agent'
6
- import got, { ExtendOptions } from 'got'
2
+ import { createWriteStream, mkdirSync, rmSync } from 'node:fs'
3
+ import { rename } from 'node:fs/promises'
4
+ import type { RequestOptions, Agent } from 'https'
5
+ import followRedirects from 'follow-redirects'
6
+ import * as httpsProxyAgentPkg from 'https-proxy-agent'
7
7
  import path from 'path'
8
- import { debug } from './debug'
9
- import { Mapper } from './mappers'
10
- import { Disconnect, Exchange, Filter, FilterForExchange } from './types'
11
- import { SocksProxyAgent } from 'socks-proxy-agent'
8
+ import { debug } from './debug.ts'
9
+ import { Mapper } from './mappers/index.ts'
10
+ import { Disconnect, Exchange, Filter, FilterForExchange } from './types.ts'
11
+ import * as socksProxyAgentPkg from 'socks-proxy-agent'
12
+ const { http, https } = followRedirects
13
+ const { HttpsProxyAgent } = httpsProxyAgentPkg
14
+ const { SocksProxyAgent } = socksProxyAgentPkg
12
15
 
13
16
  export function parseAsUTCDate(val: string) {
14
- // not sure about this one, but it should force parsing date as UTC date not as local timezone
17
+ // Treat date-only and minute-level strings as UTC instead of local time.
15
18
  if (val.endsWith('Z') === false) {
16
19
  val += 'Z'
17
20
  }
18
- var date = new Date(val)
21
+ const date = new Date(val)
19
22
  return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes()))
20
23
  }
21
24
 
@@ -73,6 +76,12 @@ export class HttpError extends Error {
73
76
  }
74
77
  }
75
78
 
79
+ class HttpClientError extends Error {
80
+ constructor(public readonly response: HttpResponse, public readonly method: string, public readonly url: string) {
81
+ super(`HTTP ${method} ${url} failed with status ${response.statusCode}`)
82
+ }
83
+ }
84
+
76
85
  export function* take(iterable: Iterable<any>, length: number) {
77
86
  if (length === 0) {
78
87
  return
@@ -249,6 +258,270 @@ export const httpsProxyAgent: Agent | undefined =
249
258
  ? new SocksProxyAgent(process.env.SOCKS_PROXY)
250
259
  : undefined
251
260
 
261
+ const DEFAULT_FETCH_RETRY_LIMIT = 2
262
+
263
+ type HttpRetryOptions =
264
+ | number
265
+ | {
266
+ limit?: number
267
+ statusCodes?: number[]
268
+ maxRetryAfter?: number
269
+ }
270
+
271
+ type HttpRequestOptions = {
272
+ headers?: Record<string, string>
273
+ body?: string | object
274
+ timeout?: number
275
+ retry?: HttpRetryOptions
276
+ }
277
+
278
+ type HttpResponse = {
279
+ statusCode: number
280
+ headers: Record<string, string>
281
+ body: string
282
+ }
283
+
284
+ type JSONResponse<T> = {
285
+ data: T
286
+ headers: Record<string, string>
287
+ statusCode: number
288
+ }
289
+
290
+ type RetrySettings = {
291
+ limit: number
292
+ maxRetryAfter?: number
293
+ statusCodes?: Set<number>
294
+ }
295
+
296
+ function getRetrySettings(method: string, retry?: HttpRetryOptions): RetrySettings {
297
+ const retryOptions = typeof retry === 'object' ? retry : undefined
298
+ const retryEnabled = method === 'GET' || retry !== undefined
299
+ const limit = typeof retry === 'number' ? retry : retryOptions?.limit ?? (retryEnabled ? DEFAULT_FETCH_RETRY_LIMIT : 0)
300
+
301
+ return {
302
+ limit,
303
+ maxRetryAfter: retryOptions?.maxRetryAfter,
304
+ statusCodes: retryOptions?.statusCodes ? new Set(retryOptions.statusCodes) : undefined
305
+ }
306
+ }
307
+
308
+ function parseResponseHeaders(headers: Headers) {
309
+ return Object.fromEntries(headers.entries())
310
+ }
311
+
312
+ function parseNodeResponseHeaders(headers: Record<string, string | string[] | undefined>) {
313
+ return Object.fromEntries(
314
+ Object.entries(headers).flatMap(([key, value]) => {
315
+ if (value === undefined) {
316
+ return []
317
+ }
318
+
319
+ return [[key.toLowerCase(), Array.isArray(value) ? value.join(', ') : value]]
320
+ })
321
+ )
322
+ }
323
+
324
+ function createHttpResponse(statusCode: number, headers: Record<string, string>, body: string): HttpResponse {
325
+ return {
326
+ statusCode,
327
+ headers,
328
+ body
329
+ }
330
+ }
331
+
332
+ function prepareRequest(method: string, options: HttpRequestOptions) {
333
+ if (options.body === undefined) {
334
+ return {
335
+ headers: options.headers,
336
+ body: undefined
337
+ }
338
+ }
339
+
340
+ const headers = { ...options.headers }
341
+ const body = typeof options.body === 'string' ? options.body : JSON.stringify(options.body)
342
+
343
+ if (method !== 'GET' && headers['Content-Type'] === undefined && headers['content-type'] === undefined) {
344
+ headers['Content-Type'] = 'application/json'
345
+ }
346
+
347
+ return {
348
+ headers,
349
+ body
350
+ }
351
+ }
352
+
353
+ function getRetryAfterDelayMS(headers: Record<string, string>, maxRetryAfter?: number) {
354
+ const retryAfterHeader = headers['retry-after']
355
+ if (retryAfterHeader === undefined) {
356
+ return
357
+ }
358
+
359
+ const parsedSeconds = Number.parseFloat(retryAfterHeader)
360
+ let delayMS: number | undefined
361
+
362
+ if (Number.isFinite(parsedSeconds)) {
363
+ delayMS = parsedSeconds * ONE_SEC_IN_MS
364
+ } else {
365
+ const parsedDate = Date.parse(retryAfterHeader)
366
+ if (Number.isFinite(parsedDate)) {
367
+ delayMS = parsedDate - Date.now()
368
+ }
369
+ }
370
+
371
+ if (delayMS === undefined || delayMS < 0) {
372
+ return
373
+ }
374
+
375
+ if (maxRetryAfter !== undefined && delayMS > maxRetryAfter) {
376
+ return
377
+ }
378
+
379
+ return delayMS
380
+ }
381
+
382
+ function getRetryDelayMS(attempt: number, headers: Record<string, string>, maxRetryAfter?: number) {
383
+ const retryAfterDelayMS = getRetryAfterDelayMS(headers, maxRetryAfter)
384
+ if (retryAfterDelayMS !== undefined) {
385
+ return retryAfterDelayMS
386
+ }
387
+
388
+ return Math.min(250 * 2 ** (attempt - 1), 5000)
389
+ }
390
+
391
+ function isRetryableStatus(statusCode: number, retrySettings: RetrySettings) {
392
+ if (retrySettings.statusCodes !== undefined) {
393
+ return retrySettings.statusCodes.has(statusCode)
394
+ }
395
+
396
+ return statusCode === 408 || statusCode === 429 || statusCode >= 500
397
+ }
398
+
399
+ function shouldRetryHttpStatus(attempt: number, response: HttpResponse, retrySettings: RetrySettings) {
400
+ return attempt <= retrySettings.limit && isRetryableStatus(response.statusCode, retrySettings)
401
+ }
402
+
403
+ function shouldRetryHttpError(attempt: number, retrySettings: RetrySettings) {
404
+ return attempt <= retrySettings.limit
405
+ }
406
+
407
+ async function requestViaFetch(method: string, url: string, options: HttpRequestOptions): Promise<HttpResponse> {
408
+ const controller = new AbortController()
409
+ const timeoutMS = options.timeout
410
+ const timeoutId = timeoutMS !== undefined ? setTimeout(() => controller.abort(), timeoutMS) : undefined
411
+ const preparedRequest = prepareRequest(method, options)
412
+
413
+ try {
414
+ const response = await fetch(url, {
415
+ method,
416
+ headers: preparedRequest.headers,
417
+ body: preparedRequest.body,
418
+ signal: controller.signal
419
+ })
420
+ const body = await response.text()
421
+
422
+ return createHttpResponse(response.status, parseResponseHeaders(response.headers), body)
423
+ } catch (error) {
424
+ if (controller.signal.aborted) {
425
+ throw new Error('Request timed out')
426
+ }
427
+
428
+ throw error
429
+ } finally {
430
+ if (timeoutId !== undefined) {
431
+ clearTimeout(timeoutId)
432
+ }
433
+ }
434
+ }
435
+
436
+ async function requestViaProxy(method: string, url: string, options: HttpRequestOptions): Promise<HttpResponse> {
437
+ const requestClient = new URL(url).protocol === 'http:' ? http : https
438
+ const preparedRequest = prepareRequest(method, options)
439
+
440
+ return await new Promise<HttpResponse>((resolve, reject) => {
441
+ const request = requestClient
442
+ .request(
443
+ url,
444
+ {
445
+ method,
446
+ agent: httpsProxyAgent,
447
+ headers: preparedRequest.headers,
448
+ timeout: options.timeout
449
+ },
450
+ (response) => {
451
+ response.setEncoding('utf8')
452
+ let body = ''
453
+ response.on('error', reject)
454
+ response.on('data', (chunk) => (body += chunk))
455
+ response.on('end', () => {
456
+ resolve(createHttpResponse(response.statusCode ?? 0, parseNodeResponseHeaders(response.headers), body))
457
+ })
458
+ }
459
+ )
460
+ .on('error', reject)
461
+ .on('timeout', () => {
462
+ reject(new Error('Request timed out'))
463
+ request.destroy()
464
+ })
465
+
466
+ if (preparedRequest.body !== undefined) {
467
+ request.write(preparedRequest.body)
468
+ }
469
+
470
+ request.end()
471
+ })
472
+ }
473
+
474
+ async function request(method: string, url: string, options: HttpRequestOptions = {}) {
475
+ const retrySettings = getRetrySettings(method, options.retry)
476
+
477
+ for (let attempt = 1; ; attempt += 1) {
478
+ try {
479
+ const response =
480
+ httpsProxyAgent === undefined ? await requestViaFetch(method, url, options) : await requestViaProxy(method, url, options)
481
+
482
+ if (response.statusCode >= 200 && response.statusCode < 300) {
483
+ return response
484
+ }
485
+
486
+ if (shouldRetryHttpStatus(attempt, response, retrySettings)) {
487
+ await wait(getRetryDelayMS(attempt, response.headers, retrySettings.maxRetryAfter))
488
+ continue
489
+ }
490
+
491
+ throw new HttpClientError(response, method, url)
492
+ } catch (error) {
493
+ if (error instanceof HttpClientError) {
494
+ throw error
495
+ }
496
+
497
+ if (shouldRetryHttpError(attempt, retrySettings)) {
498
+ await wait(Math.min(250 * 2 ** (attempt - 1), 5000))
499
+ continue
500
+ }
501
+
502
+ throw error
503
+ }
504
+ }
505
+ }
506
+
507
+ async function requestJSON<T>(method: string, url: string, options?: HttpRequestOptions): Promise<JSONResponse<T>> {
508
+ const response = await request(method, url, options)
509
+
510
+ return {
511
+ data: JSON.parse(response.body) as T,
512
+ headers: response.headers,
513
+ statusCode: response.statusCode
514
+ }
515
+ }
516
+
517
+ export function getJSON<T>(url: string, options?: HttpRequestOptions) {
518
+ return requestJSON<T>('GET', url, options)
519
+ }
520
+
521
+ export function postJSON<T>(url: string, options?: HttpRequestOptions) {
522
+ return requestJSON<T>('POST', url, options)
523
+ }
524
+
252
525
  export async function download({
253
526
  apiKey,
254
527
  downloadPath,
@@ -321,7 +594,7 @@ export function cleanTempFiles() {
321
594
 
322
595
  async function _downloadFile(requestOptions: RequestOptions, url: string, downloadPath: string) {
323
596
  // first ensure that directory where we want to download file exists
324
- ensureDirSync(path.dirname(downloadPath))
597
+ mkdirSync(path.dirname(downloadPath), { recursive: true })
325
598
 
326
599
  // create write file stream that we'll write data into - first as unconfirmed temp file
327
600
 
@@ -330,7 +603,7 @@ async function _downloadFile(requestOptions: RequestOptions, url: string, downlo
330
603
  const cleanup = () => {
331
604
  try {
332
605
  fileWriteStream.destroy()
333
- removeSync(tmpFilePath)
606
+ rmSync(tmpFilePath, { force: true })
334
607
  } catch {}
335
608
  }
336
609
  tmpFileCleanups.set(tmpFilePath, cleanup)
@@ -470,14 +743,6 @@ export function asNumberIfValid(val: string | number | undefined | null) {
470
743
  return asNumber
471
744
  }
472
745
 
473
- const gotDefaultOptions: ExtendOptions = {}
474
-
475
- if (httpsProxyAgent !== undefined) {
476
- gotDefaultOptions.agent = {
477
- https: httpsProxyAgent
478
- }
479
- }
480
-
481
746
  export function upperCaseSymbols(symbols?: string[]) {
482
747
  if (symbols !== undefined) {
483
748
  return symbols.map((s) => s.toUpperCase())
@@ -492,8 +757,6 @@ export function lowerCaseSymbols(symbols?: string[]) {
492
757
  return
493
758
  }
494
759
 
495
- export const httpClient = got.extend(gotDefaultOptions)
496
-
497
760
  export const fromMicroSecondsToDate = (micros: number) => {
498
761
  const isMicroseconds = micros > 1e15 // Check if the number is likely in microseconds
499
762
 
package/src/index.ts CHANGED
@@ -1,16 +1,16 @@
1
- export * from './apikeyaccessinfo'
2
- export * from './clearcache'
3
- export * from './combine'
4
- export * from './computable'
5
- export * from './consts'
6
- export * from './exchangedetails'
7
- export * from './mappers'
8
- export { init } from './options'
9
- export * from './orderbook'
10
- export * from './realtimefeeds'
11
- export * from './replay'
12
- export * from './stream'
13
- export * from './downloaddatasets'
14
- export * from './types'
15
- export * from './filter'
16
- export * from './instrumentinfo'
1
+ export * from './apikeyaccessinfo.ts'
2
+ export * from './clearcache.ts'
3
+ export * from './combine.ts'
4
+ export * from './computable/index.ts'
5
+ export * from './consts.ts'
6
+ export * from './exchangedetails.ts'
7
+ export * from './mappers/index.ts'
8
+ export { init } from './options.ts'
9
+ export * from './orderbook.ts'
10
+ export * from './realtimefeeds/index.ts'
11
+ export * from './replay.ts'
12
+ export * from './stream.ts'
13
+ export * from './downloaddatasets.ts'
14
+ export * from './types.ts'
15
+ export * from './filter.ts'
16
+ export * from './instrumentinfo.ts'
@@ -1,7 +1,7 @@
1
- import { getOptions } from './options'
2
- import type { SymbolType } from './exchangedetails'
3
- import type { Exchange } from './types'
4
- import { httpClient } from './handy'
1
+ import { getOptions } from './options.ts'
2
+ import type { SymbolType } from './exchangedetails.ts'
3
+ import type { Exchange } from './types.ts'
4
+ import { getJSON } from './handy.ts'
5
5
 
6
6
  export async function getInstrumentInfo(exchange: Exchange): Promise<InstrumentInfo[]>
7
7
  export async function getInstrumentInfo(exchange: Exchange | Exchange[], filter: InstrumentInfoFilter): Promise<InstrumentInfo[]>
@@ -29,11 +29,11 @@ async function getInstrumentInfoForExchange(exchange: Exchange, filterOrSymbol?:
29
29
  }
30
30
 
31
31
  try {
32
- return await httpClient
33
- .get(url, {
34
- headers: { Authorization: `Bearer ${options.apiKey}` }
35
- })
36
- .json()
32
+ const { data } = await getJSON(url, {
33
+ headers: { Authorization: `Bearer ${options.apiKey}` }
34
+ })
35
+
36
+ return data
37
37
  } catch (e: any) {
38
38
  // expose 400 error message from server
39
39
  if (e.response?.statusCode === 400) {
@@ -1,6 +1,6 @@
1
- import { upperCaseSymbols } from '../handy'
2
- import { BookChange, BookTicker, DerivativeTicker, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookTicker, DerivativeTicker, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  export class AscendexTradesMapper implements Mapper<'ascendex', Trade> {
6
6
  canHandle(message: AscendexTrade) {
@@ -1,7 +1,7 @@
1
- import { debug } from '../debug'
2
- import { CircularBuffer, fromMicroSecondsToDate, lowerCaseSymbols } from '../handy'
3
- import { BookChange, BookTicker, DerivativeTicker, Exchange, FilterForExchange, Liquidation, Trade } from '../types'
4
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { debug } from '../debug.ts'
2
+ import { CircularBuffer, fromMicroSecondsToDate, lowerCaseSymbols } from '../handy.ts'
3
+ import { BookChange, BookTicker, DerivativeTicker, Exchange, FilterForExchange, Liquidation, Trade } from '../types.ts'
4
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
5
5
 
6
6
  // https://github.com/binance-exchange/binance-official-api-docs/blob/master/web-socket-streams.md
7
7
 
@@ -1,6 +1,6 @@
1
- import { upperCaseSymbols } from '../handy'
2
- import { BookChange, BookTicker, Trade } from '../types'
3
- import { Mapper } from './mapper'
1
+ import { upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookTicker, Trade } from '../types.ts'
3
+ import { Mapper } from './mapper.ts'
4
4
 
5
5
  // https://docs.binance.org/api-reference/dex-api/ws-streams.html
6
6
 
@@ -1,6 +1,6 @@
1
- import { asNumberIfValid, lowerCaseSymbols, upperCaseSymbols } from '../handy'
2
- import { BookChange, BookTicker, OptionSummary, Trade } from '../types'
3
- import { Mapper } from './mapper'
1
+ import { asNumberIfValid, lowerCaseSymbols, upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookTicker, OptionSummary, Trade } from '../types.ts'
3
+ import { Mapper } from './mapper.ts'
4
4
 
5
5
  // https://binance-docs.github.io/apidocs/voptions/en/#websocket-market-streams
6
6
 
@@ -1,6 +1,6 @@
1
- import { upperCaseSymbols } from '../handy'
2
- import { BookChange, BookTicker, DerivativeTicker, Exchange, FilterForExchange, Liquidation, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookTicker, DerivativeTicker, Exchange, FilterForExchange, Liquidation, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  // https://docs.bitfinex.com/v2/docs/ws-general
6
6
 
@@ -1,6 +1,6 @@
1
- import { parseμs, upperCaseSymbols } from '../handy'
2
- import { BookChange, BookTicker, Trade } from '../types'
3
- import { Mapper } from './mapper'
1
+ import { parseμs, upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookTicker, Trade } from '../types.ts'
3
+ import { Mapper } from './mapper.ts'
4
4
 
5
5
  export const bitflyerTradesMapper: Mapper<'bitflyer', Trade> = {
6
6
  canHandle(message: BitflyerExecutions | BitflyerBoard) {
@@ -1,6 +1,6 @@
1
- import { upperCaseSymbols } from '../handy'
2
- import { BookChange, BookTicker, DerivativeTicker, Exchange, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookTicker, DerivativeTicker, Exchange, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  export class BitgetTradesMapper implements Mapper<'bitget' | 'bitget-futures', Trade> {
6
6
  constructor(private readonly _exchange: Exchange) {}
@@ -1,6 +1,6 @@
1
- import { asNumberIfValid, upperCaseSymbols } from '../handy'
2
- import { BookChange, BookPriceLevel, BookTicker, DerivativeTicker, FilterForExchange, Liquidation, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { asNumberIfValid, upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookPriceLevel, BookTicker, DerivativeTicker, FilterForExchange, Liquidation, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  // https://www.bitmex.com/app/wsAPI
6
6
 
@@ -1,6 +1,6 @@
1
- import { parseμs, upperCaseSymbols } from '../handy'
2
- import { BookChange, Trade } from '../types'
3
- import { Mapper } from './mapper'
1
+ import { parseμs, upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, Trade } from '../types.ts'
3
+ import { Mapper } from './mapper.ts'
4
4
 
5
5
  export const bitnomialTradesMapper: Mapper<'bitnomial', Trade> = {
6
6
  canHandle(message: BitnomialTrade) {
@@ -1,6 +1,6 @@
1
- import { lowerCaseSymbols } from '../handy'
2
- import { BookChange, Trade } from '../types'
3
- import { Mapper } from './mapper'
1
+ import { lowerCaseSymbols } from '../handy.ts'
2
+ import { BookChange, Trade } from '../types.ts'
3
+ import { Mapper } from './mapper.ts'
4
4
 
5
5
  // https://www.bitstamp.net/websocket/v2/
6
6
 
@@ -1,6 +1,6 @@
1
- import { upperCaseSymbols } from '../handy'
2
- import { BookChange, Trade } from '../types'
3
- import { Mapper } from './mapper'
1
+ import { upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, Trade } from '../types.ts'
3
+ import { Mapper } from './mapper.ts'
4
4
 
5
5
  export class BlockchainComTradesMapper implements Mapper<'blockchain-com', Trade> {
6
6
  canHandle(message: BlockchainComTradeMessage) {
@@ -1,6 +1,6 @@
1
- import { asNumberIfValid, upperCaseSymbols } from '../handy'
2
- import { BookChange, BookTicker, DerivativeTicker, Exchange, Liquidation, OptionSummary, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { asNumberIfValid, upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookTicker, DerivativeTicker, Exchange, Liquidation, OptionSummary, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  // v5 https://bybit-exchange.github.io/docs/v5/ws/connect
6
6
 
@@ -1,6 +1,6 @@
1
- import { upperCaseSymbols } from '../handy'
2
- import { BookChange, Exchange, BookTicker, Trade } from '../types'
3
- import { Mapper } from './mapper'
1
+ import { upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, Exchange, BookTicker, Trade } from '../types.ts'
3
+ import { Mapper } from './mapper.ts'
4
4
 
5
5
  export class BybitSpotTradesMapper implements Mapper<'bybit-spot', Trade> {
6
6
  constructor(private readonly _exchange: Exchange) {}
@@ -1,6 +1,6 @@
1
- import { parseμs, upperCaseSymbols } from '../handy'
2
- import { BookChange, BookPriceLevel, BookTicker, Trade } from '../types'
3
- import { Mapper } from './mapper'
1
+ import { parseμs, upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookPriceLevel, BookTicker, Trade } from '../types.ts'
3
+ import { Mapper } from './mapper.ts'
4
4
 
5
5
  // https://docs.pro.coinbase.com/#websocket-feed
6
6
 
@@ -1,6 +1,6 @@
1
- import { addMinutes, upperCaseSymbols } from '../handy'
2
- import { BookChange, BookPriceLevel, BookTicker, DerivativeTicker, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { addMinutes, upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookPriceLevel, BookTicker, DerivativeTicker, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  export const coinbaseInternationalTradesMapper: Mapper<'coinbase-international', Trade> = {
6
6
  canHandle(message: CoinbaseInternationalTradeMessage) {
@@ -1,6 +1,6 @@
1
- import { upperCaseSymbols } from '../handy'
2
- import { BookChange, DerivativeTicker, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, DerivativeTicker, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  // https://docs.coinflex.com/v2/#websocket-api-subscriptions-public
6
6
 
@@ -1,6 +1,6 @@
1
- import { upperCaseSymbols } from '../handy'
2
- import { BookChange, Exchange, BookTicker, Trade, DerivativeTicker } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, Exchange, BookTicker, Trade, DerivativeTicker } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  export class CryptoComTradesMapper implements Mapper<'crypto-com', Trade> {
6
6
  constructor(private readonly _exchange: Exchange) {}
@@ -1,6 +1,6 @@
1
- import { upperCaseSymbols } from '../handy'
2
- import { BookChange, BookTicker, DerivativeTicker, Liquidation, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookTicker, DerivativeTicker, Liquidation, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  // https://www.cryptofacilities.com/resources/hc/en-us/categories/115000132213-API
6
6
 
@@ -1,6 +1,6 @@
1
- import { fromMicroSecondsToDate, upperCaseSymbols } from '../handy'
2
- import { BookChange, BookTicker, DerivativeTicker, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { fromMicroSecondsToDate, upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookTicker, DerivativeTicker, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  export class DeltaTradesMapper implements Mapper<'delta', Trade> {
6
6
  constructor(private _useV2Channels: boolean) {}
@@ -1,6 +1,6 @@
1
- import { asNumberIfValid } from '../handy'
2
- import { BookChange, BookTicker, DerivativeTicker, Liquidation, OptionSummary, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { asNumberIfValid } from '../handy.ts'
2
+ import { BookChange, BookTicker, DerivativeTicker, Liquidation, OptionSummary, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  // https://docs.deribit.com/v2/#subscriptions
6
6
 
@@ -1,6 +1,6 @@
1
- import { upperCaseSymbols } from '../handy'
2
- import { BookChange, BookPriceLevel, DerivativeTicker, Trade } from '../types'
3
- import { Mapper, PendingTickerInfoHelper } from './mapper'
1
+ import { upperCaseSymbols } from '../handy.ts'
2
+ import { BookChange, BookPriceLevel, DerivativeTicker, Trade } from '../types.ts'
3
+ import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
4
4
 
5
5
  export class DydxTradesMapper implements Mapper<'dydx', Trade> {
6
6
  canHandle(message: DyDxTrade) {