bitget-api 2.3.6 → 3.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 (421) hide show
  1. package/README.md +272 -18
  2. package/{lib → dist/cjs}/broker-client.d.ts +3 -2
  3. package/{lib → dist/cjs}/broker-client.js +4 -4
  4. package/dist/cjs/broker-client.js.map +1 -0
  5. package/{lib → dist/cjs}/constants/enum.d.ts +3 -0
  6. package/{lib → dist/cjs}/constants/enum.js +3 -0
  7. package/dist/cjs/constants/enum.js.map +1 -0
  8. package/{lib → dist/cjs}/futures-client.d.ts +5 -2
  9. package/{lib → dist/cjs}/futures-client.js +18 -9
  10. package/dist/cjs/futures-client.js.map +1 -0
  11. package/dist/cjs/index.d.ts +50 -0
  12. package/dist/cjs/index.js +67 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/package.json +3 -0
  15. package/{lib → dist/cjs}/rest-client-v2.d.ts +17 -2
  16. package/{lib → dist/cjs}/rest-client-v2.js +62 -74
  17. package/dist/cjs/rest-client-v2.js.map +1 -0
  18. package/dist/cjs/rest-client-v3.d.ts +440 -0
  19. package/dist/cjs/rest-client-v3.js +573 -0
  20. package/dist/cjs/rest-client-v3.js.map +1 -0
  21. package/{lib → dist/cjs}/spot-client.d.ts +5 -2
  22. package/{lib → dist/cjs}/spot-client.js +21 -23
  23. package/dist/cjs/spot-client.js.map +1 -0
  24. package/{lib → dist/cjs}/types/request/shared.d.ts +4 -4
  25. package/dist/cjs/types/request/shared.js.map +1 -0
  26. package/{lib → dist/cjs}/types/request/v1/brokerV1.d.ts +1 -1
  27. package/dist/cjs/types/request/v1/brokerV1.js.map +1 -0
  28. package/{lib → dist/cjs}/types/request/v1/futuresV1.d.ts +10 -10
  29. package/dist/cjs/types/request/v1/futuresV1.js.map +1 -0
  30. package/{lib → dist/cjs}/types/request/v1/spotV1.d.ts +4 -4
  31. package/dist/cjs/types/request/v1/spotV1.js.map +1 -0
  32. package/{lib → dist/cjs}/types/request/v2/broker.d.ts +3 -3
  33. package/dist/cjs/types/request/v2/broker.js.map +1 -0
  34. package/{lib → dist/cjs}/types/request/v2/common.d.ts +1 -1
  35. package/dist/cjs/types/request/v2/common.js.map +1 -0
  36. package/{lib → dist/cjs}/types/request/v2/copytrading.d.ts +5 -5
  37. package/dist/cjs/types/request/v2/copytrading.js.map +1 -0
  38. package/dist/cjs/types/request/v2/earn.js.map +1 -0
  39. package/{lib → dist/cjs}/types/request/v2/futures.d.ts +9 -9
  40. package/dist/cjs/types/request/v2/futures.js.map +1 -0
  41. package/{lib → dist/cjs}/types/request/v2/margin.d.ts +5 -5
  42. package/dist/cjs/types/request/v2/margin.js.map +1 -0
  43. package/{lib → dist/cjs}/types/request/v2/spot.d.ts +12 -12
  44. package/dist/cjs/types/request/v2/spot.js.map +1 -0
  45. package/dist/cjs/types/request/v3/account.d.ts +162 -0
  46. package/dist/cjs/types/request/v3/account.js +4 -0
  47. package/dist/cjs/types/request/v3/account.js.map +1 -0
  48. package/dist/cjs/types/request/v3/loan.d.ts +31 -0
  49. package/dist/cjs/types/request/v3/loan.js +3 -0
  50. package/dist/cjs/types/request/v3/loan.js.map +1 -0
  51. package/dist/cjs/types/request/v3/public.d.ts +65 -0
  52. package/dist/cjs/types/request/v3/public.js +3 -0
  53. package/dist/cjs/types/request/v3/public.js.map +1 -0
  54. package/dist/cjs/types/request/v3/strategy.d.ts +46 -0
  55. package/dist/cjs/types/request/v3/strategy.js +3 -0
  56. package/dist/cjs/types/request/v3/strategy.js.map +1 -0
  57. package/dist/cjs/types/request/v3/trade.d.ts +112 -0
  58. package/dist/cjs/types/request/v3/trade.js +3 -0
  59. package/dist/cjs/types/request/v3/trade.js.map +1 -0
  60. package/{lib → dist/cjs}/types/response/v1/futures.d.ts +1 -1
  61. package/dist/cjs/types/response/v1/futures.js.map +1 -0
  62. package/dist/cjs/types/response/v1/shared.js.map +1 -0
  63. package/dist/cjs/types/response/v1/spot.js.map +1 -0
  64. package/dist/cjs/types/response/v2/broker.js.map +1 -0
  65. package/dist/cjs/types/response/v2/common.js.map +1 -0
  66. package/dist/cjs/types/response/v2/copy-trading.js.map +1 -0
  67. package/dist/cjs/types/response/v2/earn.js.map +1 -0
  68. package/{lib → dist/cjs}/types/response/v2/futures.d.ts +1 -1
  69. package/dist/cjs/types/response/v2/futures.js.map +1 -0
  70. package/dist/cjs/types/response/v2/margin.js.map +1 -0
  71. package/{lib → dist/cjs}/types/response/v2/spot.d.ts +1 -1
  72. package/dist/cjs/types/response/v2/spot.js.map +1 -0
  73. package/dist/cjs/types/response/v3/account.d.ts +197 -0
  74. package/dist/cjs/types/response/v3/account.js +3 -0
  75. package/dist/cjs/types/response/v3/account.js.map +1 -0
  76. package/dist/cjs/types/response/v3/loan.d.ts +85 -0
  77. package/dist/cjs/types/response/v3/loan.js +3 -0
  78. package/dist/cjs/types/response/v3/loan.js.map +1 -0
  79. package/dist/cjs/types/response/v3/public.d.ts +142 -0
  80. package/dist/cjs/types/response/v3/public.js +3 -0
  81. package/dist/cjs/types/response/v3/public.js.map +1 -0
  82. package/dist/cjs/types/response/v3/strategy.d.ts +26 -0
  83. package/dist/cjs/types/response/v3/strategy.js +3 -0
  84. package/dist/cjs/types/response/v3/strategy.js.map +1 -0
  85. package/dist/cjs/types/response/v3/trade.d.ts +193 -0
  86. package/dist/cjs/types/response/v3/trade.js +3 -0
  87. package/dist/cjs/types/response/v3/trade.js.map +1 -0
  88. package/dist/cjs/types/shared.d.ts +8 -0
  89. package/{lib → dist/cjs}/types/shared.js.map +1 -1
  90. package/dist/cjs/types/websockets/ws-api-request.d.ts +20 -0
  91. package/dist/cjs/types/websockets/ws-api-request.js +3 -0
  92. package/dist/cjs/types/websockets/ws-api-request.js.map +1 -0
  93. package/dist/cjs/types/websockets/ws-api-response.d.ts +6 -0
  94. package/dist/cjs/types/websockets/ws-api-response.js +3 -0
  95. package/dist/cjs/types/websockets/ws-api-response.js.map +1 -0
  96. package/dist/cjs/types/websockets/ws-api.d.ts +91 -0
  97. package/dist/cjs/types/websockets/ws-api.js +11 -0
  98. package/dist/cjs/types/websockets/ws-api.js.map +1 -0
  99. package/{lib/types/websockets/events.d.ts → dist/cjs/types/websockets/ws-events.d.ts} +6 -0
  100. package/dist/cjs/types/websockets/ws-events.js +11 -0
  101. package/dist/cjs/types/websockets/ws-events.js.map +1 -0
  102. package/dist/cjs/types/websockets/ws-general.d.ts +112 -0
  103. package/dist/cjs/types/websockets/ws-general.js +3 -0
  104. package/dist/cjs/types/websockets/ws-general.js.map +1 -0
  105. package/{lib → dist/cjs}/util/BaseRestClient.d.ts +3 -2
  106. package/dist/cjs/util/BaseRestClient.js +274 -0
  107. package/dist/cjs/util/BaseRestClient.js.map +1 -0
  108. package/dist/cjs/util/BaseWSClient.d.ts +197 -0
  109. package/dist/cjs/util/BaseWSClient.js +759 -0
  110. package/dist/cjs/util/BaseWSClient.js.map +1 -0
  111. package/dist/cjs/util/WsStore.d.ts +74 -0
  112. package/dist/cjs/util/WsStore.js +287 -0
  113. package/dist/cjs/util/WsStore.js.map +1 -0
  114. package/{lib → dist/cjs}/util/WsStore.types.d.ts +27 -1
  115. package/{lib → dist/cjs}/util/WsStore.types.js +3 -2
  116. package/dist/cjs/util/WsStore.types.js.map +1 -0
  117. package/dist/cjs/util/logger.d.ts +8 -0
  118. package/{lib → dist/cjs}/util/logger.js +2 -10
  119. package/dist/cjs/util/logger.js.map +1 -0
  120. package/{lib → dist/cjs}/util/requestUtils.d.ts +18 -1
  121. package/{lib → dist/cjs}/util/requestUtils.js +6 -5
  122. package/dist/cjs/util/requestUtils.js.map +1 -0
  123. package/{lib → dist/cjs}/util/type-guards.d.ts +4 -1
  124. package/{lib → dist/cjs}/util/type-guards.js +20 -10
  125. package/dist/cjs/util/type-guards.js.map +1 -0
  126. package/dist/cjs/util/webCryptoAPI.d.ts +14 -0
  127. package/dist/cjs/util/webCryptoAPI.js +80 -0
  128. package/dist/cjs/util/webCryptoAPI.js.map +1 -0
  129. package/dist/cjs/util/websocket-util.d.ts +88 -0
  130. package/dist/cjs/util/websocket-util.js +241 -0
  131. package/dist/cjs/util/websocket-util.js.map +1 -0
  132. package/dist/cjs/websocket-api-client.d.ts +89 -0
  133. package/dist/cjs/websocket-api-client.js +122 -0
  134. package/dist/cjs/websocket-api-client.js.map +1 -0
  135. package/{lib/websocket-client.d.ts → dist/cjs/websocket-client-legacy-v1.d.ts} +6 -6
  136. package/{lib/websocket-client.js → dist/cjs/websocket-client-legacy-v1.js} +211 -156
  137. package/dist/cjs/websocket-client-legacy-v1.js.map +1 -0
  138. package/dist/cjs/websocket-client-v2.d.ts +79 -0
  139. package/dist/cjs/websocket-client-v2.js +339 -0
  140. package/dist/cjs/websocket-client-v2.js.map +1 -0
  141. package/dist/cjs/websocket-client-v3.d.ts +84 -0
  142. package/dist/cjs/websocket-client-v3.js +408 -0
  143. package/dist/cjs/websocket-client-v3.js.map +1 -0
  144. package/dist/mjs/broker-client.d.ts +127 -0
  145. package/dist/mjs/broker-client.js +158 -0
  146. package/dist/mjs/broker-client.js.map +1 -0
  147. package/dist/mjs/constants/enum.d.ts +31 -0
  148. package/dist/mjs/constants/enum.js +32 -0
  149. package/dist/mjs/constants/enum.js.map +1 -0
  150. package/dist/mjs/futures-client.d.ts +184 -0
  151. package/dist/mjs/futures-client.js +473 -0
  152. package/dist/mjs/futures-client.js.map +1 -0
  153. package/dist/mjs/index.d.ts +50 -0
  154. package/dist/mjs/index.js +51 -0
  155. package/dist/mjs/index.js.map +1 -0
  156. package/dist/mjs/package.json +3 -0
  157. package/dist/mjs/rest-client-v2.d.ts +1098 -0
  158. package/dist/mjs/rest-client-v2.js +1092 -0
  159. package/dist/mjs/rest-client-v2.js.map +1 -0
  160. package/dist/mjs/rest-client-v3.d.ts +440 -0
  161. package/dist/mjs/rest-client-v3.js +566 -0
  162. package/dist/mjs/rest-client-v3.js.map +1 -0
  163. package/dist/mjs/spot-client.d.ts +154 -0
  164. package/dist/mjs/spot-client.js +273 -0
  165. package/dist/mjs/spot-client.js.map +1 -0
  166. package/dist/mjs/types/request/shared.d.ts +23 -0
  167. package/dist/mjs/types/request/shared.js +2 -0
  168. package/dist/mjs/types/request/shared.js.map +1 -0
  169. package/dist/mjs/types/request/v1/brokerV1.d.ts +23 -0
  170. package/dist/mjs/types/request/v1/brokerV1.js +2 -0
  171. package/dist/mjs/types/request/v1/brokerV1.js.map +1 -0
  172. package/dist/mjs/types/request/v1/futuresV1.d.ts +168 -0
  173. package/dist/mjs/types/request/v1/futuresV1.js +2 -0
  174. package/dist/mjs/types/request/v1/futuresV1.js.map +1 -0
  175. package/dist/mjs/types/request/v1/spotV1.d.ts +105 -0
  176. package/dist/mjs/types/request/v1/spotV1.js +2 -0
  177. package/dist/mjs/types/request/v1/spotV1.js.map +1 -0
  178. package/dist/mjs/types/request/v2/broker.d.ts +69 -0
  179. package/dist/mjs/types/request/v2/broker.js +7 -0
  180. package/dist/mjs/types/request/v2/broker.js.map +1 -0
  181. package/dist/mjs/types/request/v2/common.d.ts +163 -0
  182. package/dist/mjs/types/request/v2/common.js +2 -0
  183. package/dist/mjs/types/request/v2/common.js.map +1 -0
  184. package/dist/mjs/types/request/v2/copytrading.d.ts +196 -0
  185. package/dist/mjs/types/request/v2/copytrading.js +9 -0
  186. package/dist/mjs/types/request/v2/copytrading.js.map +1 -0
  187. package/dist/mjs/types/request/v2/earn.d.ts +121 -0
  188. package/dist/mjs/types/request/v2/earn.js +9 -0
  189. package/dist/mjs/types/request/v2/earn.js.map +1 -0
  190. package/dist/mjs/types/request/v2/futures.d.ts +363 -0
  191. package/dist/mjs/types/request/v2/futures.js +2 -0
  192. package/dist/mjs/types/request/v2/futures.js.map +1 -0
  193. package/dist/mjs/types/request/v2/margin.d.ts +121 -0
  194. package/dist/mjs/types/request/v2/margin.js +7 -0
  195. package/dist/mjs/types/request/v2/margin.js.map +1 -0
  196. package/dist/mjs/types/request/v2/spot.d.ts +265 -0
  197. package/dist/mjs/types/request/v2/spot.js +2 -0
  198. package/dist/mjs/types/request/v2/spot.js.map +1 -0
  199. package/dist/mjs/types/request/v3/account.d.ts +162 -0
  200. package/dist/mjs/types/request/v3/account.js +3 -0
  201. package/dist/mjs/types/request/v3/account.js.map +1 -0
  202. package/dist/mjs/types/request/v3/loan.d.ts +31 -0
  203. package/dist/mjs/types/request/v3/loan.js +2 -0
  204. package/dist/mjs/types/request/v3/loan.js.map +1 -0
  205. package/dist/mjs/types/request/v3/public.d.ts +65 -0
  206. package/dist/mjs/types/request/v3/public.js +2 -0
  207. package/dist/mjs/types/request/v3/public.js.map +1 -0
  208. package/dist/mjs/types/request/v3/strategy.d.ts +46 -0
  209. package/dist/mjs/types/request/v3/strategy.js +2 -0
  210. package/dist/mjs/types/request/v3/strategy.js.map +1 -0
  211. package/dist/mjs/types/request/v3/trade.d.ts +112 -0
  212. package/dist/mjs/types/request/v3/trade.js +2 -0
  213. package/dist/mjs/types/request/v3/trade.js.map +1 -0
  214. package/dist/mjs/types/response/v1/futures.d.ts +72 -0
  215. package/dist/mjs/types/response/v1/futures.js +2 -0
  216. package/dist/mjs/types/response/v1/futures.js.map +1 -0
  217. package/dist/mjs/types/response/v1/shared.d.ts +15 -0
  218. package/dist/mjs/types/response/v1/shared.js +2 -0
  219. package/dist/mjs/types/response/v1/shared.js.map +1 -0
  220. package/dist/mjs/types/response/v1/spot.d.ts +65 -0
  221. package/dist/mjs/types/response/v1/spot.js +2 -0
  222. package/dist/mjs/types/response/v1/spot.js.map +1 -0
  223. package/dist/mjs/types/response/v2/broker.d.ts +135 -0
  224. package/dist/mjs/types/response/v2/broker.js +7 -0
  225. package/dist/mjs/types/response/v2/broker.js.map +1 -0
  226. package/dist/mjs/types/response/v2/common.d.ts +384 -0
  227. package/dist/mjs/types/response/v2/common.js +7 -0
  228. package/dist/mjs/types/response/v2/common.js.map +1 -0
  229. package/dist/mjs/types/response/v2/copy-trading.d.ts +385 -0
  230. package/dist/mjs/types/response/v2/copy-trading.js +9 -0
  231. package/dist/mjs/types/response/v2/copy-trading.js.map +1 -0
  232. package/dist/mjs/types/response/v2/earn.d.ts +294 -0
  233. package/dist/mjs/types/response/v2/earn.js +9 -0
  234. package/dist/mjs/types/response/v2/earn.js.map +1 -0
  235. package/dist/mjs/types/response/v2/futures.d.ts +546 -0
  236. package/dist/mjs/types/response/v2/futures.js +7 -0
  237. package/dist/mjs/types/response/v2/futures.js.map +1 -0
  238. package/dist/mjs/types/response/v2/margin.d.ts +277 -0
  239. package/dist/mjs/types/response/v2/margin.js +7 -0
  240. package/dist/mjs/types/response/v2/margin.js.map +1 -0
  241. package/dist/mjs/types/response/v2/spot.d.ts +385 -0
  242. package/dist/mjs/types/response/v2/spot.js +7 -0
  243. package/dist/mjs/types/response/v2/spot.js.map +1 -0
  244. package/dist/mjs/types/response/v3/account.d.ts +197 -0
  245. package/dist/mjs/types/response/v3/account.js +2 -0
  246. package/dist/mjs/types/response/v3/account.js.map +1 -0
  247. package/dist/mjs/types/response/v3/loan.d.ts +85 -0
  248. package/dist/mjs/types/response/v3/loan.js +2 -0
  249. package/dist/mjs/types/response/v3/loan.js.map +1 -0
  250. package/dist/mjs/types/response/v3/public.d.ts +142 -0
  251. package/dist/mjs/types/response/v3/public.js +2 -0
  252. package/dist/mjs/types/response/v3/public.js.map +1 -0
  253. package/dist/mjs/types/response/v3/strategy.d.ts +26 -0
  254. package/dist/mjs/types/response/v3/strategy.js +2 -0
  255. package/dist/mjs/types/response/v3/strategy.js.map +1 -0
  256. package/dist/mjs/types/response/v3/trade.d.ts +193 -0
  257. package/dist/mjs/types/response/v3/trade.js +2 -0
  258. package/dist/mjs/types/response/v3/trade.js.map +1 -0
  259. package/dist/mjs/types/shared.d.ts +8 -0
  260. package/dist/mjs/types/shared.js +2 -0
  261. package/{lib/types/request → dist/mjs/types}/shared.js.map +1 -1
  262. package/dist/mjs/types/websockets/ws-api-request.d.ts +20 -0
  263. package/dist/mjs/types/websockets/ws-api-request.js +2 -0
  264. package/dist/mjs/types/websockets/ws-api-request.js.map +1 -0
  265. package/dist/mjs/types/websockets/ws-api-response.d.ts +6 -0
  266. package/dist/mjs/types/websockets/ws-api-response.js +2 -0
  267. package/dist/mjs/types/websockets/ws-api-response.js.map +1 -0
  268. package/dist/mjs/types/websockets/ws-api.d.ts +91 -0
  269. package/dist/mjs/types/websockets/ws-api.js +8 -0
  270. package/dist/mjs/types/websockets/ws-api.js.map +1 -0
  271. package/dist/mjs/types/websockets/ws-events.d.ts +81 -0
  272. package/dist/mjs/types/websockets/ws-events.js +8 -0
  273. package/dist/mjs/types/websockets/ws-events.js.map +1 -0
  274. package/dist/mjs/types/websockets/ws-general.d.ts +112 -0
  275. package/dist/mjs/types/websockets/ws-general.js +2 -0
  276. package/dist/mjs/types/websockets/ws-general.js.map +1 -0
  277. package/dist/mjs/util/BaseRestClient.d.ts +40 -0
  278. package/dist/mjs/util/BaseRestClient.js +268 -0
  279. package/dist/mjs/util/BaseRestClient.js.map +1 -0
  280. package/dist/mjs/util/BaseWSClient.d.ts +197 -0
  281. package/dist/mjs/util/BaseWSClient.js +752 -0
  282. package/dist/mjs/util/BaseWSClient.js.map +1 -0
  283. package/dist/mjs/util/WsStore.d.ts +74 -0
  284. package/dist/mjs/util/WsStore.js +282 -0
  285. package/dist/mjs/util/WsStore.js.map +1 -0
  286. package/dist/mjs/util/WsStore.types.d.ts +52 -0
  287. package/dist/mjs/util/WsStore.types.js +11 -0
  288. package/dist/mjs/util/WsStore.types.js.map +1 -0
  289. package/dist/mjs/util/logger.d.ts +8 -0
  290. package/dist/mjs/util/logger.js +14 -0
  291. package/dist/mjs/util/logger.js.map +1 -0
  292. package/dist/mjs/util/requestUtils.d.ts +61 -0
  293. package/dist/mjs/util/requestUtils.js +50 -0
  294. package/dist/mjs/util/requestUtils.js.map +1 -0
  295. package/dist/mjs/util/type-guards.d.ts +16 -0
  296. package/dist/mjs/util/type-guards.js +62 -0
  297. package/dist/mjs/util/type-guards.js.map +1 -0
  298. package/dist/mjs/util/webCryptoAPI.d.ts +14 -0
  299. package/dist/mjs/util/webCryptoAPI.js +76 -0
  300. package/dist/mjs/util/webCryptoAPI.js.map +1 -0
  301. package/dist/mjs/util/websocket-util.d.ts +88 -0
  302. package/dist/mjs/util/websocket-util.js +227 -0
  303. package/dist/mjs/util/websocket-util.js.map +1 -0
  304. package/dist/mjs/websocket-api-client.d.ts +89 -0
  305. package/dist/mjs/websocket-api-client.js +118 -0
  306. package/dist/mjs/websocket-api-client.js.map +1 -0
  307. package/{lib/util/BaseWSClient.d.ts → dist/mjs/websocket-client-legacy-v1.d.ts} +44 -27
  308. package/dist/mjs/websocket-client-legacy-v1.js +502 -0
  309. package/dist/mjs/websocket-client-legacy-v1.js.map +1 -0
  310. package/dist/mjs/websocket-client-v2.d.ts +79 -0
  311. package/dist/mjs/websocket-client-v2.js +335 -0
  312. package/dist/mjs/websocket-client-v2.js.map +1 -0
  313. package/dist/mjs/websocket-client-v3.d.ts +84 -0
  314. package/dist/mjs/websocket-client-v3.js +404 -0
  315. package/dist/mjs/websocket-client-v3.js.map +1 -0
  316. package/package.json +33 -15
  317. package/index.js +0 -1
  318. package/lib/broker-client.js.map +0 -1
  319. package/lib/constants/enum.js.map +0 -1
  320. package/lib/futures-client.js.map +0 -1
  321. package/lib/index.d.ts +0 -10
  322. package/lib/index.js +0 -27
  323. package/lib/index.js.map +0 -1
  324. package/lib/rest-client-v2.js.map +0 -1
  325. package/lib/spot-client.js.map +0 -1
  326. package/lib/types/index.d.ts +0 -4
  327. package/lib/types/index.js +0 -21
  328. package/lib/types/index.js.map +0 -1
  329. package/lib/types/request/index.d.ts +0 -11
  330. package/lib/types/request/index.js +0 -28
  331. package/lib/types/request/index.js.map +0 -1
  332. package/lib/types/request/v1/brokerV1.js.map +0 -1
  333. package/lib/types/request/v1/futuresV1.js.map +0 -1
  334. package/lib/types/request/v1/spotV1.js.map +0 -1
  335. package/lib/types/request/v2/broker.js.map +0 -1
  336. package/lib/types/request/v2/common.js.map +0 -1
  337. package/lib/types/request/v2/copytrading.js.map +0 -1
  338. package/lib/types/request/v2/earn.js.map +0 -1
  339. package/lib/types/request/v2/futures.js.map +0 -1
  340. package/lib/types/request/v2/margin.js.map +0 -1
  341. package/lib/types/request/v2/spot.js.map +0 -1
  342. package/lib/types/response/index.d.ts +0 -10
  343. package/lib/types/response/index.js +0 -27
  344. package/lib/types/response/index.js.map +0 -1
  345. package/lib/types/response/v1/futures.js.map +0 -1
  346. package/lib/types/response/v1/shared.js.map +0 -1
  347. package/lib/types/response/v1/spot.js.map +0 -1
  348. package/lib/types/response/v2/broker.js.map +0 -1
  349. package/lib/types/response/v2/common.js.map +0 -1
  350. package/lib/types/response/v2/copy-trading.js.map +0 -1
  351. package/lib/types/response/v2/earn.js.map +0 -1
  352. package/lib/types/response/v2/futures.js.map +0 -1
  353. package/lib/types/response/v2/margin.js.map +0 -1
  354. package/lib/types/response/v2/spot.js.map +0 -1
  355. package/lib/types/shared.d.ts +0 -8
  356. package/lib/types/websockets/client.d.ts +0 -76
  357. package/lib/types/websockets/client.js +0 -3
  358. package/lib/types/websockets/client.js.map +0 -1
  359. package/lib/types/websockets/events.js +0 -3
  360. package/lib/types/websockets/events.js.map +0 -1
  361. package/lib/types/websockets/index.d.ts +0 -2
  362. package/lib/types/websockets/index.js +0 -19
  363. package/lib/types/websockets/index.js.map +0 -1
  364. package/lib/util/BaseRestClient.js +0 -221
  365. package/lib/util/BaseRestClient.js.map +0 -1
  366. package/lib/util/BaseWSClient.js +0 -395
  367. package/lib/util/BaseWSClient.js.map +0 -1
  368. package/lib/util/WsStore.d.ts +0 -26
  369. package/lib/util/WsStore.js +0 -126
  370. package/lib/util/WsStore.js.map +0 -1
  371. package/lib/util/WsStore.types.js.map +0 -1
  372. package/lib/util/browser-support.d.ts +0 -1
  373. package/lib/util/browser-support.js +0 -45
  374. package/lib/util/browser-support.js.map +0 -1
  375. package/lib/util/index.d.ts +0 -6
  376. package/lib/util/index.js +0 -23
  377. package/lib/util/index.js.map +0 -1
  378. package/lib/util/logger.d.ts +0 -9
  379. package/lib/util/logger.js.map +0 -1
  380. package/lib/util/node-support.d.ts +0 -2
  381. package/lib/util/node-support.js +0 -34
  382. package/lib/util/node-support.js.map +0 -1
  383. package/lib/util/requestUtils.js.map +0 -1
  384. package/lib/util/type-guards.js.map +0 -1
  385. package/lib/util/websocket-util.d.ts +0 -47
  386. package/lib/util/websocket-util.js +0 -154
  387. package/lib/util/websocket-util.js.map +0 -1
  388. package/lib/websocket-client-v2.d.ts +0 -33
  389. package/lib/websocket-client-v2.js +0 -104
  390. package/lib/websocket-client-v2.js.map +0 -1
  391. package/lib/websocket-client.js.map +0 -1
  392. /package/{lib → dist/cjs}/types/request/shared.js +0 -0
  393. /package/{lib → dist/cjs}/types/request/v1/brokerV1.js +0 -0
  394. /package/{lib → dist/cjs}/types/request/v1/futuresV1.js +0 -0
  395. /package/{lib → dist/cjs}/types/request/v1/spotV1.js +0 -0
  396. /package/{lib → dist/cjs}/types/request/v2/broker.js +0 -0
  397. /package/{lib → dist/cjs}/types/request/v2/common.js +0 -0
  398. /package/{lib → dist/cjs}/types/request/v2/copytrading.js +0 -0
  399. /package/{lib → dist/cjs}/types/request/v2/earn.d.ts +0 -0
  400. /package/{lib → dist/cjs}/types/request/v2/earn.js +0 -0
  401. /package/{lib → dist/cjs}/types/request/v2/futures.js +0 -0
  402. /package/{lib → dist/cjs}/types/request/v2/margin.js +0 -0
  403. /package/{lib → dist/cjs}/types/request/v2/spot.js +0 -0
  404. /package/{lib → dist/cjs}/types/response/v1/futures.js +0 -0
  405. /package/{lib → dist/cjs}/types/response/v1/shared.d.ts +0 -0
  406. /package/{lib → dist/cjs}/types/response/v1/shared.js +0 -0
  407. /package/{lib → dist/cjs}/types/response/v1/spot.d.ts +0 -0
  408. /package/{lib → dist/cjs}/types/response/v1/spot.js +0 -0
  409. /package/{lib → dist/cjs}/types/response/v2/broker.d.ts +0 -0
  410. /package/{lib → dist/cjs}/types/response/v2/broker.js +0 -0
  411. /package/{lib → dist/cjs}/types/response/v2/common.d.ts +0 -0
  412. /package/{lib → dist/cjs}/types/response/v2/common.js +0 -0
  413. /package/{lib → dist/cjs}/types/response/v2/copy-trading.d.ts +0 -0
  414. /package/{lib → dist/cjs}/types/response/v2/copy-trading.js +0 -0
  415. /package/{lib → dist/cjs}/types/response/v2/earn.d.ts +0 -0
  416. /package/{lib → dist/cjs}/types/response/v2/earn.js +0 -0
  417. /package/{lib → dist/cjs}/types/response/v2/futures.js +0 -0
  418. /package/{lib → dist/cjs}/types/response/v2/margin.d.ts +0 -0
  419. /package/{lib → dist/cjs}/types/response/v2/margin.js +0 -0
  420. /package/{lib → dist/cjs}/types/response/v2/spot.js +0 -0
  421. /package/{lib → dist/cjs}/types/shared.js +0 -0
@@ -1,34 +1,39 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
14
5
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.WebsocketClient = void 0;
6
+ exports.WebsocketClientLegacyV1 = void 0;
16
7
  /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
17
8
  const events_1 = require("events");
18
9
  const isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
19
- const util_1 = require("./util");
20
- const WsStore_1 = __importDefault(require("./util/WsStore"));
21
- const WsStore_types_1 = require("./util/WsStore.types");
10
+ const logger_js_1 = require("./util/logger.js");
11
+ const requestUtils_js_1 = require("./util/requestUtils.js");
12
+ const webCryptoAPI_js_1 = require("./util/webCryptoAPI.js");
13
+ const websocket_util_js_1 = require("./util/websocket-util.js");
14
+ const WsStore_js_1 = __importDefault(require("./util/WsStore.js"));
15
+ const WsStore_types_js_1 = require("./util/WsStore.types.js");
22
16
  const LOGGER_CATEGORY = { category: 'bitget-ws' };
23
17
  /**
24
18
  * @deprecated use WebsocketClientV2 instead
25
19
  */
26
- class WebsocketClient extends events_1.EventEmitter {
20
+ class WebsocketClientLegacyV1 extends events_1.EventEmitter {
21
+ logger;
22
+ options;
23
+ wsStore;
27
24
  constructor(options, logger) {
28
25
  super();
29
- this.logger = logger || util_1.DefaultLogger;
30
- this.wsStore = new WsStore_1.default(this.logger);
31
- this.options = Object.assign({ pongTimeout: 1000, pingInterval: 10000, reconnectTimeout: 500, recvWindow: 0 }, options);
26
+ this.logger = logger || logger_js_1.DefaultLogger;
27
+ this.wsStore = new WsStore_js_1.default(this.logger);
28
+ this.options = {
29
+ pongTimeout: 1000,
30
+ pingInterval: 10000,
31
+ reconnectTimeout: 500,
32
+ recvWindow: 0,
33
+ authPrivateConnectionsOnConnect: true,
34
+ authPrivateRequests: false,
35
+ ...options,
36
+ };
32
37
  }
33
38
  /**
34
39
  * Subscribe to topics & track/persist them. They will be automatically resubscribed to if the connection drops/reconnects.
@@ -38,24 +43,22 @@ class WebsocketClient extends events_1.EventEmitter {
38
43
  subscribe(wsTopics, isPrivateTopic) {
39
44
  const topics = Array.isArray(wsTopics) ? wsTopics : [wsTopics];
40
45
  topics.forEach((topic) => {
41
- var _a;
42
- const wsKey = (0, util_1.getWsKeyForTopic)(topic, isPrivateTopic);
46
+ const wsKey = (0, websocket_util_js_1.getWsKeyForTopicV1)(topic, isPrivateTopic);
43
47
  // Persist this topic to the expected topics list
44
48
  this.wsStore.addTopic(wsKey, topic);
45
- // TODO: tidy up unsubscribe too, also in other connectors
46
49
  // if connected, send subscription request
47
- if (this.wsStore.isConnectionState(wsKey, WsStore_types_1.WsConnectionStateEnum.CONNECTED)) {
50
+ if (this.wsStore.isConnectionState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.CONNECTED)) {
48
51
  // if not authenticated, dont sub to private topics yet.
49
52
  // This'll happen automatically once authenticated
50
- const isAuthenticated = (_a = this.wsStore.get(wsKey)) === null || _a === void 0 ? void 0 : _a.isAuthenticated;
53
+ const isAuthenticated = this.wsStore.get(wsKey)?.isAuthenticated;
51
54
  if (!isAuthenticated) {
52
- return this.requestSubscribeTopics(wsKey, topics.filter((topic) => !(0, util_1.isPrivateChannel)(topic.channel)));
55
+ return this.requestSubscribeTopics(wsKey, topics.filter((topic) => !(0, websocket_util_js_1.isPrivateChannel)(topic.channel)));
53
56
  }
54
57
  return this.requestSubscribeTopics(wsKey, topics);
55
58
  }
56
59
  // start connection process if it hasn't yet begun. Topics are automatically subscribed to on-connect
57
- if (!this.wsStore.isConnectionState(wsKey, WsStore_types_1.WsConnectionStateEnum.CONNECTING) &&
58
- !this.wsStore.isConnectionState(wsKey, WsStore_types_1.WsConnectionStateEnum.RECONNECTING)) {
60
+ if (!this.wsStore.isConnectionState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.CONNECTING) &&
61
+ !this.wsStore.isConnectionState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.RECONNECTING)) {
59
62
  return this.connect(wsKey);
60
63
  }
61
64
  });
@@ -67,11 +70,10 @@ class WebsocketClient extends events_1.EventEmitter {
67
70
  */
68
71
  unsubscribe(wsTopics, isPrivateTopic) {
69
72
  const topics = Array.isArray(wsTopics) ? wsTopics : [wsTopics];
70
- topics.forEach((topic) => this.wsStore.deleteTopic((0, util_1.getWsKeyForTopic)(topic, isPrivateTopic), topic));
71
- // TODO: should this really happen on each wsKey?? seems weird
73
+ topics.forEach((topic) => this.wsStore.deleteTopic((0, websocket_util_js_1.getWsKeyForTopicV1)(topic, isPrivateTopic), topic));
72
74
  this.wsStore.getKeys().forEach((wsKey) => {
73
75
  // unsubscribe request only necessary if active connection exists
74
- if (this.wsStore.isConnectionState(wsKey, WsStore_types_1.WsConnectionStateEnum.CONNECTED)) {
76
+ if (this.wsStore.isConnectionState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.CONNECTED)) {
75
77
  this.requestUnsubscribeTopics(wsKey, topics);
76
78
  }
77
79
  });
@@ -81,13 +83,13 @@ class WebsocketClient extends events_1.EventEmitter {
81
83
  return this.wsStore;
82
84
  }
83
85
  close(wsKey, force) {
84
- this.logger.info('Closing connection', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
85
- this.setWsState(wsKey, WsStore_types_1.WsConnectionStateEnum.CLOSING);
86
+ this.logger.info('Closing connection', { ...LOGGER_CATEGORY, wsKey });
87
+ this.setWsState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.CLOSING);
86
88
  this.clearTimers(wsKey);
87
89
  const ws = this.getWs(wsKey);
88
- ws === null || ws === void 0 ? void 0 : ws.close();
90
+ ws?.close();
89
91
  if (force) {
90
- (0, util_1.safeTerminateWs)(ws);
92
+ (0, websocket_util_js_1.safeTerminateWs)(ws);
91
93
  }
92
94
  }
93
95
  closeAll(force) {
@@ -99,88 +101,104 @@ class WebsocketClient extends events_1.EventEmitter {
99
101
  * Request connection of all dependent (public & private) websockets, instead of waiting for automatic connection by library
100
102
  */
101
103
  connectAll() {
102
- return [this.connect(util_1.WS_KEY_MAP.spotv1), this.connect(util_1.WS_KEY_MAP.mixv1)];
104
+ return [this.connect(websocket_util_js_1.WS_KEY_MAP.spotv1), this.connect(websocket_util_js_1.WS_KEY_MAP.mixv1)];
103
105
  }
104
106
  /**
105
107
  * Request connection to a specific websocket, instead of waiting for automatic connection.
106
108
  */
107
- connect(wsKey) {
108
- return __awaiter(this, void 0, void 0, function* () {
109
- try {
110
- if (this.wsStore.isWsOpen(wsKey)) {
111
- this.logger.error('Refused to connect to ws with existing active connection', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
112
- return this.wsStore.getWs(wsKey);
113
- }
114
- if (this.wsStore.isConnectionState(wsKey, WsStore_types_1.WsConnectionStateEnum.CONNECTING)) {
115
- this.logger.error('Refused to connect to ws, connection attempt already active', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
116
- return;
117
- }
118
- if (!this.wsStore.getConnectionState(wsKey) ||
119
- this.wsStore.isConnectionState(wsKey, WsStore_types_1.WsConnectionStateEnum.INITIAL)) {
120
- this.setWsState(wsKey, WsStore_types_1.WsConnectionStateEnum.CONNECTING);
121
- }
122
- const url = this.getWsUrl(wsKey); // + authParams;
123
- const ws = this.connectToWsUrl(url, wsKey);
124
- return this.wsStore.setWs(wsKey, ws);
109
+ async connect(wsKey) {
110
+ try {
111
+ if (this.wsStore.isWsOpen(wsKey)) {
112
+ this.logger.error('Refused to connect to ws with existing active connection', { ...LOGGER_CATEGORY, wsKey });
113
+ return this.wsStore.getWs(wsKey);
114
+ }
115
+ if (this.wsStore.isConnectionState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.CONNECTING)) {
116
+ this.logger.error('Refused to connect to ws, connection attempt already active', { ...LOGGER_CATEGORY, wsKey });
117
+ return;
125
118
  }
126
- catch (err) {
127
- this.parseWsError('Connection failed', err, wsKey);
128
- this.reconnectWithDelay(wsKey, this.options.reconnectTimeout);
119
+ if (!this.wsStore.getConnectionState(wsKey) ||
120
+ this.wsStore.isConnectionState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.INITIAL)) {
121
+ this.setWsState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.CONNECTING);
129
122
  }
130
- });
123
+ const url = this.getWsUrl(wsKey); // + authParams;
124
+ const ws = this.connectToWsUrl(url, wsKey);
125
+ return this.wsStore.setWs(wsKey, ws);
126
+ }
127
+ catch (err) {
128
+ this.parseWsError('Connection failed', err, wsKey);
129
+ this.reconnectWithDelay(wsKey, this.options.reconnectTimeout);
130
+ }
131
131
  }
132
132
  parseWsError(context, error, wsKey) {
133
133
  if (!error.message) {
134
134
  this.logger.error(`${context} due to unexpected error: `, error);
135
- this.emit('response', Object.assign(Object.assign({}, error), { wsKey }));
136
- this.emit('exception', Object.assign(Object.assign({}, error), { wsKey }));
135
+ this.emit('response', { ...error, wsKey });
136
+ this.emit('exception', { ...error, wsKey });
137
137
  return;
138
138
  }
139
139
  switch (error.message) {
140
140
  case 'Unexpected server response: 401':
141
- this.logger.error(`${context} due to 401 authorization failure.`, Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
141
+ this.logger.error(`${context} due to 401 authorization failure.`, {
142
+ ...LOGGER_CATEGORY,
143
+ wsKey,
144
+ });
142
145
  break;
143
146
  default:
144
- this.logger.error(`${context} due to unexpected response error: "${(error === null || error === void 0 ? void 0 : error.msg) || (error === null || error === void 0 ? void 0 : error.message) || error}"`, Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey, error }));
147
+ this.logger.error(`${context} due to unexpected response error: "${error?.msg || error?.message || error}"`, { ...LOGGER_CATEGORY, wsKey, error });
145
148
  break;
146
149
  }
147
- this.emit('response', Object.assign(Object.assign({}, error), { wsKey }));
148
- this.emit('exception', Object.assign(Object.assign({}, error), { wsKey }));
150
+ this.emit('response', { ...error, wsKey });
151
+ this.emit('exception', { ...error, wsKey });
152
+ }
153
+ async getWsAuthSignature(apiKey, apiSecret, apiPass, recvWindow = 0) {
154
+ if (!apiKey || !apiSecret || !apiPass) {
155
+ throw new Error('Cannot auth - missing api key, secret or passcode in config');
156
+ }
157
+ const signatureExpiresAt = ((Date.now() + recvWindow) / 1000).toFixed(0);
158
+ const signature = await (0, webCryptoAPI_js_1.signMessage)(signatureExpiresAt + 'GET' + '/user/verify', apiSecret, 'base64', 'SHA-256');
159
+ return {
160
+ expiresAt: Number(signatureExpiresAt),
161
+ signature,
162
+ };
149
163
  }
150
164
  /** Get a signature, build the auth request and send it */
151
- sendAuthRequest(wsKey) {
152
- return __awaiter(this, void 0, void 0, function* () {
153
- try {
154
- const { apiKey, apiSecret, apiPass, recvWindow } = this.options;
155
- const { signature, expiresAt } = yield (0, util_1.getWsAuthSignature)(apiKey, apiSecret, apiPass, recvWindow);
156
- this.logger.info('Sending auth request...', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
157
- const request = {
158
- op: 'login',
159
- args: [
160
- {
161
- apiKey: this.options.apiKey,
162
- passphrase: this.options.apiPass,
163
- timestamp: expiresAt,
164
- sign: signature,
165
- },
166
- ],
167
- };
168
- // console.log('ws auth req', request);
169
- return this.tryWsSend(wsKey, JSON.stringify(request));
170
- }
171
- catch (e) {
172
- this.logger.silly(e, Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
173
- }
174
- });
165
+ async sendAuthRequest(wsKey) {
166
+ try {
167
+ const { apiKey, apiSecret, apiPass, recvWindow } = this.options;
168
+ const { signature, expiresAt } = await this.getWsAuthSignature(apiKey, apiSecret, apiPass, recvWindow);
169
+ this.logger.info('Sending auth request...', {
170
+ ...LOGGER_CATEGORY,
171
+ wsKey,
172
+ });
173
+ const request = {
174
+ op: 'login',
175
+ args: [
176
+ {
177
+ apiKey: this.options.apiKey,
178
+ passphrase: this.options.apiPass,
179
+ timestamp: expiresAt,
180
+ sign: signature,
181
+ },
182
+ ],
183
+ };
184
+ // console.log('ws auth req', request);
185
+ return this.tryWsSend(wsKey, JSON.stringify(request));
186
+ }
187
+ catch (e) {
188
+ this.logger.trace(e, { ...LOGGER_CATEGORY, wsKey });
189
+ }
175
190
  }
176
191
  reconnectWithDelay(wsKey, connectionDelayMs) {
177
192
  this.clearTimers(wsKey);
178
193
  if (this.wsStore.getConnectionState(wsKey) !==
179
- WsStore_types_1.WsConnectionStateEnum.CONNECTING) {
180
- this.setWsState(wsKey, WsStore_types_1.WsConnectionStateEnum.RECONNECTING);
194
+ WsStore_types_js_1.WsConnectionStateEnum.CONNECTING) {
195
+ this.setWsState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.RECONNECTING);
181
196
  }
182
197
  this.wsStore.get(wsKey, true).activeReconnectTimer = setTimeout(() => {
183
- this.logger.info('Reconnecting to websocket', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
198
+ this.logger.info('Reconnecting to websocket', {
199
+ ...LOGGER_CATEGORY,
200
+ wsKey,
201
+ });
184
202
  this.connect(wsKey);
185
203
  }, connectionDelayMs);
186
204
  }
@@ -189,11 +207,14 @@ class WebsocketClient extends events_1.EventEmitter {
189
207
  return;
190
208
  }
191
209
  this.clearPongTimer(wsKey);
192
- this.logger.silly('Sending ping', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
210
+ this.logger.trace('Sending ping', { ...LOGGER_CATEGORY, wsKey });
193
211
  this.tryWsSend(wsKey, 'ping');
194
212
  this.wsStore.get(wsKey, true).activePongTimer = setTimeout(() => {
195
- this.logger.info('Pong timeout - closing socket to reconnect', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
196
- (0, util_1.safeTerminateWs)(this.getWs(wsKey), true);
213
+ this.logger.info('Pong timeout - closing socket to reconnect', {
214
+ ...LOGGER_CATEGORY,
215
+ wsKey,
216
+ });
217
+ (0, websocket_util_js_1.safeTerminateWs)(this.getWs(wsKey), true);
197
218
  delete this.wsStore.get(wsKey, true).activePongTimer;
198
219
  }, this.options.pongTimeout);
199
220
  }
@@ -201,14 +222,14 @@ class WebsocketClient extends events_1.EventEmitter {
201
222
  this.clearPingTimer(wsKey);
202
223
  this.clearPongTimer(wsKey);
203
224
  const wsState = this.wsStore.get(wsKey);
204
- if (wsState === null || wsState === void 0 ? void 0 : wsState.activeReconnectTimer) {
225
+ if (wsState?.activeReconnectTimer) {
205
226
  clearTimeout(wsState.activeReconnectTimer);
206
227
  }
207
228
  }
208
229
  // Send a ping at intervals
209
230
  clearPingTimer(wsKey) {
210
231
  const wsState = this.wsStore.get(wsKey);
211
- if (wsState === null || wsState === void 0 ? void 0 : wsState.activePingTimer) {
232
+ if (wsState?.activePingTimer) {
212
233
  clearInterval(wsState.activePingTimer);
213
234
  wsState.activePingTimer = undefined;
214
235
  }
@@ -216,7 +237,7 @@ class WebsocketClient extends events_1.EventEmitter {
216
237
  // Expect a pong within a time limit
217
238
  clearPongTimer(wsKey) {
218
239
  const wsState = this.wsStore.get(wsKey);
219
- if (wsState === null || wsState === void 0 ? void 0 : wsState.activePongTimer) {
240
+ if (wsState?.activePongTimer) {
220
241
  clearTimeout(wsState.activePongTimer);
221
242
  wsState.activePongTimer = undefined;
222
243
  }
@@ -228,15 +249,15 @@ class WebsocketClient extends events_1.EventEmitter {
228
249
  if (!topics.length) {
229
250
  return;
230
251
  }
231
- const maxTopicsPerEvent = (0, util_1.getMaxTopicsPerSubscribeEvent)(wsKey);
252
+ const maxTopicsPerEvent = (0, websocket_util_js_1.getMaxTopicsPerSubscribeEvent)(wsKey);
232
253
  if (maxTopicsPerEvent && topics.length > maxTopicsPerEvent) {
233
- this.logger.silly(`Subscribing to topics in batches of ${maxTopicsPerEvent}`);
254
+ this.logger.trace(`Subscribing to topics in batches of ${maxTopicsPerEvent}`);
234
255
  for (let i = 0; i < topics.length; i += maxTopicsPerEvent) {
235
256
  const batch = topics.slice(i, i + maxTopicsPerEvent);
236
- this.logger.silly(`Subscribing to batch of ${batch.length}`);
257
+ this.logger.trace(`Subscribing to batch of ${batch.length}`);
237
258
  this.requestSubscribeTopics(wsKey, batch);
238
259
  }
239
- this.logger.silly(`Finished batch subscribing to ${topics.length} topics`);
260
+ this.logger.trace(`Finished batch subscribing to ${topics.length} topics`);
240
261
  return;
241
262
  }
242
263
  const wsMessage = JSON.stringify({
@@ -252,15 +273,15 @@ class WebsocketClient extends events_1.EventEmitter {
252
273
  if (!topics.length) {
253
274
  return;
254
275
  }
255
- const maxTopicsPerEvent = (0, util_1.getMaxTopicsPerSubscribeEvent)(wsKey);
276
+ const maxTopicsPerEvent = (0, websocket_util_js_1.getMaxTopicsPerSubscribeEvent)(wsKey);
256
277
  if (maxTopicsPerEvent && topics.length > maxTopicsPerEvent) {
257
- this.logger.silly(`Unsubscribing to topics in batches of ${maxTopicsPerEvent}`);
278
+ this.logger.trace(`Unsubscribing to topics in batches of ${maxTopicsPerEvent}`);
258
279
  for (let i = 0; i < topics.length; i += maxTopicsPerEvent) {
259
280
  const batch = topics.slice(i, i + maxTopicsPerEvent);
260
- this.logger.silly(`Unsubscribing to batch of ${batch.length}`);
281
+ this.logger.trace(`Unsubscribing to batch of ${batch.length}`);
261
282
  this.requestUnsubscribeTopics(wsKey, batch);
262
283
  }
263
- this.logger.silly(`Finished batch unsubscribing to ${topics.length} topics`);
284
+ this.logger.trace(`Finished batch unsubscribing to ${topics.length} topics`);
264
285
  return;
265
286
  }
266
287
  const wsMessage = JSON.stringify({
@@ -271,8 +292,11 @@ class WebsocketClient extends events_1.EventEmitter {
271
292
  }
272
293
  tryWsSend(wsKey, wsMessage) {
273
294
  try {
274
- this.logger.silly('Sending upstream ws message: ', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsMessage,
275
- wsKey }));
295
+ this.logger.trace('Sending upstream ws message: ', {
296
+ ...LOGGER_CATEGORY,
297
+ wsMessage,
298
+ wsKey,
299
+ });
276
300
  if (!wsKey) {
277
301
  throw new Error('Cannot send message due to no known websocket for this wsKey');
278
302
  }
@@ -283,50 +307,57 @@ class WebsocketClient extends events_1.EventEmitter {
283
307
  ws.send(wsMessage);
284
308
  }
285
309
  catch (e) {
286
- this.logger.error('Failed to send WS message', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsMessage,
287
- wsKey, exception: e }));
310
+ this.logger.error('Failed to send WS message', {
311
+ ...LOGGER_CATEGORY,
312
+ wsMessage,
313
+ wsKey,
314
+ exception: e,
315
+ });
288
316
  }
289
317
  }
290
318
  connectToWsUrl(url, wsKey) {
291
- var _a;
292
- this.logger.silly(`Opening WS connection to URL: ${url}`, Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
293
- const agent = (_a = this.options.requestOptions) === null || _a === void 0 ? void 0 : _a.agent;
294
- const ws = new isomorphic_ws_1.default(url, undefined, agent ? { agent } : undefined);
319
+ this.logger.trace(`Opening WS connection to URL: ${url}`, {
320
+ ...LOGGER_CATEGORY,
321
+ wsKey,
322
+ });
323
+ const { protocols = [], ...wsOptions } = this.options.wsOptions || {};
324
+ const ws = new isomorphic_ws_1.default(url, protocols, wsOptions);
295
325
  ws.onopen = (event) => this.onWsOpen(event, wsKey);
296
326
  ws.onmessage = (event) => this.onWsMessage(event, wsKey);
297
327
  ws.onerror = (event) => this.parseWsError('websocket error', event, wsKey);
298
328
  ws.onclose = (event) => this.onWsClose(event, wsKey);
299
329
  return ws;
300
330
  }
301
- onWsOpen(event, wsKey) {
302
- return __awaiter(this, void 0, void 0, function* () {
303
- if (this.wsStore.isConnectionState(wsKey, WsStore_types_1.WsConnectionStateEnum.CONNECTING)) {
304
- this.logger.info('Websocket connected', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
305
- this.emit('open', { wsKey, event });
306
- }
307
- else if (this.wsStore.isConnectionState(wsKey, WsStore_types_1.WsConnectionStateEnum.RECONNECTING)) {
308
- this.logger.info('Websocket reconnected', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
309
- this.emit('reconnected', { wsKey, event });
310
- }
311
- this.setWsState(wsKey, WsStore_types_1.WsConnectionStateEnum.CONNECTED);
312
- // Some websockets require an auth packet to be sent after opening the connection
313
- if (util_1.WS_AUTH_ON_CONNECT_KEYS.includes(wsKey)) {
314
- yield this.sendAuthRequest(wsKey);
315
- }
316
- // Reconnect to topics known before it connected
317
- // Private topics will be resubscribed to once reconnected
318
- const topics = [...this.wsStore.getTopics(wsKey)];
319
- const publicTopics = topics.filter((topic) => !(0, util_1.isPrivateChannel)(topic.channel));
320
- this.requestSubscribeTopics(wsKey, publicTopics);
321
- this.wsStore.get(wsKey, true).activePingTimer = setInterval(() => this.ping(wsKey), this.options.pingInterval);
322
- });
331
+ async onWsOpen(event, wsKey) {
332
+ if (this.wsStore.isConnectionState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.CONNECTING)) {
333
+ this.logger.info('Websocket connected', {
334
+ ...LOGGER_CATEGORY,
335
+ wsKey,
336
+ });
337
+ this.emit('open', { wsKey, event });
338
+ }
339
+ else if (this.wsStore.isConnectionState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.RECONNECTING)) {
340
+ this.logger.info('Websocket reconnected', { ...LOGGER_CATEGORY, wsKey });
341
+ this.emit('reconnected', { wsKey, event });
342
+ }
343
+ this.setWsState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.CONNECTED);
344
+ // Some websockets require an auth packet to be sent after opening the connection
345
+ if (websocket_util_js_1.WS_AUTH_ON_CONNECT_KEYS.includes(wsKey)) {
346
+ await this.sendAuthRequest(wsKey);
347
+ }
348
+ // Reconnect to topics known before it connected
349
+ // Private topics will be resubscribed to once reconnected
350
+ const topics = [...this.wsStore.getTopics(wsKey)];
351
+ const publicTopics = topics.filter((topic) => !(0, websocket_util_js_1.isPrivateChannel)(topic.channel));
352
+ this.requestSubscribeTopics(wsKey, publicTopics);
353
+ this.wsStore.get(wsKey, true).activePingTimer = setInterval(() => this.ping(wsKey), this.options.pingInterval);
323
354
  }
324
355
  /** Handle subscription to private topics _after_ authentication successfully completes asynchronously */
325
356
  onWsAuthenticated(wsKey) {
326
357
  const wsState = this.wsStore.get(wsKey, true);
327
358
  wsState.isAuthenticated = true;
328
359
  const topics = [...this.wsStore.getTopics(wsKey)];
329
- const privateTopics = topics.filter((topic) => (0, util_1.isPrivateChannel)(topic.channel));
360
+ const privateTopics = topics.filter((topic) => (0, websocket_util_js_1.isPrivateChannel)(topic.channel));
330
361
  if (privateTopics.length) {
331
362
  this.subscribe(privateTopics, true);
332
363
  }
@@ -335,16 +366,19 @@ class WebsocketClient extends events_1.EventEmitter {
335
366
  try {
336
367
  // any message can clear the pong timer - wouldn't get a message if the ws wasn't working
337
368
  this.clearPongTimer(wsKey);
338
- if ((0, util_1.isWsPong)(event)) {
339
- this.logger.silly('Received pong', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
369
+ if ((0, requestUtils_js_1.isWsPong)(event)) {
370
+ this.logger.trace('Received pong', { ...LOGGER_CATEGORY, wsKey });
340
371
  return;
341
372
  }
342
373
  const msg = JSON.parse((event && event['data']) || event);
343
- const emittableEvent = Object.assign(Object.assign({}, msg), { wsKey });
374
+ const emittableEvent = { ...msg, wsKey };
344
375
  if (typeof msg === 'object') {
345
376
  if (typeof msg['code'] === 'number') {
346
377
  if (msg.event === 'login' && msg.code === 0) {
347
- this.logger.info('Successfully authenticated WS client', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
378
+ this.logger.info('Successfully authenticated WS client', {
379
+ ...LOGGER_CATEGORY,
380
+ wsKey,
381
+ });
348
382
  this.emit('response', emittableEvent);
349
383
  this.emit('authenticated', emittableEvent);
350
384
  this.onWsAuthenticated(wsKey);
@@ -353,10 +387,14 @@ class WebsocketClient extends events_1.EventEmitter {
353
387
  }
354
388
  if (msg['event']) {
355
389
  if (msg.event === 'error') {
356
- this.logger.error('WS Error received', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey, message: msg || 'no message',
390
+ this.logger.error('WS Error received', {
391
+ ...LOGGER_CATEGORY,
392
+ wsKey,
393
+ message: msg || 'no message',
357
394
  // messageType: typeof msg,
358
395
  // messageString: JSON.stringify(msg),
359
- event }));
396
+ event,
397
+ });
360
398
  this.emit('exception', emittableEvent);
361
399
  this.emit('response', emittableEvent);
362
400
  return;
@@ -367,27 +405,37 @@ class WebsocketClient extends events_1.EventEmitter {
367
405
  return this.emit('update', emittableEvent);
368
406
  }
369
407
  }
370
- this.logger.warning('Unhandled/unrecognised ws event message', Object.assign(Object.assign({}, LOGGER_CATEGORY), { message: msg || 'no message',
408
+ this.logger.info('Unhandled/unrecognised ws event message', {
409
+ ...LOGGER_CATEGORY,
410
+ message: msg || 'no message',
371
411
  // messageType: typeof msg,
372
412
  // messageString: JSON.stringify(msg),
373
413
  event,
374
- wsKey }));
414
+ wsKey,
415
+ });
375
416
  // fallback emit anyway
376
417
  return this.emit('update', emittableEvent);
377
418
  }
378
419
  catch (e) {
379
- this.logger.error('Failed to parse ws event message', Object.assign(Object.assign({}, LOGGER_CATEGORY), { error: e, event,
380
- wsKey }));
420
+ this.logger.error('Failed to parse ws event message', {
421
+ ...LOGGER_CATEGORY,
422
+ error: e,
423
+ event,
424
+ wsKey,
425
+ });
381
426
  }
382
427
  }
383
428
  onWsClose(event, wsKey) {
384
- this.logger.info('Websocket connection closed', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
385
- if (this.wsStore.getConnectionState(wsKey) !== WsStore_types_1.WsConnectionStateEnum.CLOSING) {
429
+ this.logger.info('Websocket connection closed', {
430
+ ...LOGGER_CATEGORY,
431
+ wsKey,
432
+ });
433
+ if (this.wsStore.getConnectionState(wsKey) !== WsStore_types_js_1.WsConnectionStateEnum.CLOSING) {
386
434
  this.reconnectWithDelay(wsKey, this.options.reconnectTimeout);
387
435
  this.emit('reconnect', { wsKey, event });
388
436
  }
389
437
  else {
390
- this.setWsState(wsKey, WsStore_types_1.WsConnectionStateEnum.INITIAL);
438
+ this.setWsState(wsKey, WsStore_types_js_1.WsConnectionStateEnum.INITIAL);
391
439
  this.emit('close', { wsKey, event });
392
440
  }
393
441
  }
@@ -403,19 +451,26 @@ class WebsocketClient extends events_1.EventEmitter {
403
451
  }
404
452
  const networkKey = 'livenet';
405
453
  switch (wsKey) {
406
- case util_1.WS_KEY_MAP.spotv1: {
407
- return util_1.WS_BASE_URL_MAP.spotv1.all[networkKey];
454
+ case websocket_util_js_1.WS_KEY_MAP.spotv1: {
455
+ return websocket_util_js_1.WS_BASE_URL_MAP.spotv1.all[networkKey];
408
456
  }
409
- case util_1.WS_KEY_MAP.mixv1: {
410
- return util_1.WS_BASE_URL_MAP.mixv1.all[networkKey];
457
+ case websocket_util_js_1.WS_KEY_MAP.mixv1: {
458
+ return websocket_util_js_1.WS_BASE_URL_MAP.mixv1.all[networkKey];
411
459
  }
412
- case util_1.WS_KEY_MAP.v2Private:
413
- case util_1.WS_KEY_MAP.v2Public: {
460
+ case websocket_util_js_1.WS_KEY_MAP.v2Private:
461
+ case websocket_util_js_1.WS_KEY_MAP.v2Public: {
414
462
  throw new Error('Use the WebsocketClientV2 for V2 websockets');
415
463
  }
464
+ case websocket_util_js_1.WS_KEY_MAP.v3Private:
465
+ case websocket_util_js_1.WS_KEY_MAP.v3Public: {
466
+ throw new Error('Use the WebsocketClientV3 for V3 websockets');
467
+ }
416
468
  default: {
417
- this.logger.error('getWsUrl(): Unhandled wsKey: ', Object.assign(Object.assign({}, LOGGER_CATEGORY), { wsKey }));
418
- throw (0, util_1.neverGuard)(wsKey, 'getWsUrl(): Unhandled wsKey');
469
+ this.logger.error('getWsUrl(): Unhandled wsKey: ', {
470
+ ...LOGGER_CATEGORY,
471
+ wsKey,
472
+ });
473
+ throw (0, websocket_util_js_1.neverGuard)(wsKey, 'getWsUrl(): Unhandled wsKey');
419
474
  }
420
475
  }
421
476
  }
@@ -450,5 +505,5 @@ class WebsocketClient extends events_1.EventEmitter {
450
505
  });
451
506
  }
452
507
  }
453
- exports.WebsocketClient = WebsocketClient;
454
- //# sourceMappingURL=websocket-client.js.map
508
+ exports.WebsocketClientLegacyV1 = WebsocketClientLegacyV1;
509
+ //# sourceMappingURL=websocket-client-legacy-v1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client-legacy-v1.js","sourceRoot":"","sources":["../../src/websocket-client-legacy-v1.ts"],"names":[],"mappings":"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"}