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
@@ -0,0 +1,502 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
2
+ import { EventEmitter } from 'events';
3
+ import WebSocket from 'isomorphic-ws';
4
+ import { DefaultLogger } from './util/logger.js';
5
+ import { isWsPong } from './util/requestUtils.js';
6
+ import { signMessage } from './util/webCryptoAPI.js';
7
+ import { getMaxTopicsPerSubscribeEvent, getWsKeyForTopicV1, isPrivateChannel, neverGuard, safeTerminateWs, WS_AUTH_ON_CONNECT_KEYS, WS_BASE_URL_MAP, WS_KEY_MAP, } from './util/websocket-util.js';
8
+ import WsStore from './util/WsStore.js';
9
+ import { WsConnectionStateEnum } from './util/WsStore.types.js';
10
+ const LOGGER_CATEGORY = { category: 'bitget-ws' };
11
+ /**
12
+ * @deprecated use WebsocketClientV2 instead
13
+ */
14
+ export class WebsocketClientLegacyV1 extends EventEmitter {
15
+ logger;
16
+ options;
17
+ wsStore;
18
+ constructor(options, logger) {
19
+ super();
20
+ this.logger = logger || DefaultLogger;
21
+ this.wsStore = new WsStore(this.logger);
22
+ this.options = {
23
+ pongTimeout: 1000,
24
+ pingInterval: 10000,
25
+ reconnectTimeout: 500,
26
+ recvWindow: 0,
27
+ authPrivateConnectionsOnConnect: true,
28
+ authPrivateRequests: false,
29
+ ...options,
30
+ };
31
+ }
32
+ /**
33
+ * Subscribe to topics & track/persist them. They will be automatically resubscribed to if the connection drops/reconnects.
34
+ * @param wsTopics topic or list of topics
35
+ * @param isPrivateTopic optional - the library will try to detect private topics, you can use this to mark a topic as private (if the topic isn't recognised yet)
36
+ */
37
+ subscribe(wsTopics, isPrivateTopic) {
38
+ const topics = Array.isArray(wsTopics) ? wsTopics : [wsTopics];
39
+ topics.forEach((topic) => {
40
+ const wsKey = getWsKeyForTopicV1(topic, isPrivateTopic);
41
+ // Persist this topic to the expected topics list
42
+ this.wsStore.addTopic(wsKey, topic);
43
+ // if connected, send subscription request
44
+ if (this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.CONNECTED)) {
45
+ // if not authenticated, dont sub to private topics yet.
46
+ // This'll happen automatically once authenticated
47
+ const isAuthenticated = this.wsStore.get(wsKey)?.isAuthenticated;
48
+ if (!isAuthenticated) {
49
+ return this.requestSubscribeTopics(wsKey, topics.filter((topic) => !isPrivateChannel(topic.channel)));
50
+ }
51
+ return this.requestSubscribeTopics(wsKey, topics);
52
+ }
53
+ // start connection process if it hasn't yet begun. Topics are automatically subscribed to on-connect
54
+ if (!this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.CONNECTING) &&
55
+ !this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.RECONNECTING)) {
56
+ return this.connect(wsKey);
57
+ }
58
+ });
59
+ }
60
+ /**
61
+ * Unsubscribe from topics & remove them from memory. They won't be re-subscribed to if the connection reconnects.
62
+ * @param wsTopics topic or list of topics
63
+ * @param isPrivateTopic optional - the library will try to detect private topics, you can use this to mark a topic as private (if the topic isn't recognised yet)
64
+ */
65
+ unsubscribe(wsTopics, isPrivateTopic) {
66
+ const topics = Array.isArray(wsTopics) ? wsTopics : [wsTopics];
67
+ topics.forEach((topic) => this.wsStore.deleteTopic(getWsKeyForTopicV1(topic, isPrivateTopic), topic));
68
+ this.wsStore.getKeys().forEach((wsKey) => {
69
+ // unsubscribe request only necessary if active connection exists
70
+ if (this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.CONNECTED)) {
71
+ this.requestUnsubscribeTopics(wsKey, topics);
72
+ }
73
+ });
74
+ }
75
+ /** Get the WsStore that tracks websockets & topics */
76
+ getWsStore() {
77
+ return this.wsStore;
78
+ }
79
+ close(wsKey, force) {
80
+ this.logger.info('Closing connection', { ...LOGGER_CATEGORY, wsKey });
81
+ this.setWsState(wsKey, WsConnectionStateEnum.CLOSING);
82
+ this.clearTimers(wsKey);
83
+ const ws = this.getWs(wsKey);
84
+ ws?.close();
85
+ if (force) {
86
+ safeTerminateWs(ws);
87
+ }
88
+ }
89
+ closeAll(force) {
90
+ this.wsStore.getKeys().forEach((key) => {
91
+ this.close(key, force);
92
+ });
93
+ }
94
+ /**
95
+ * Request connection of all dependent (public & private) websockets, instead of waiting for automatic connection by library
96
+ */
97
+ connectAll() {
98
+ return [this.connect(WS_KEY_MAP.spotv1), this.connect(WS_KEY_MAP.mixv1)];
99
+ }
100
+ /**
101
+ * Request connection to a specific websocket, instead of waiting for automatic connection.
102
+ */
103
+ async connect(wsKey) {
104
+ try {
105
+ if (this.wsStore.isWsOpen(wsKey)) {
106
+ this.logger.error('Refused to connect to ws with existing active connection', { ...LOGGER_CATEGORY, wsKey });
107
+ return this.wsStore.getWs(wsKey);
108
+ }
109
+ if (this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.CONNECTING)) {
110
+ this.logger.error('Refused to connect to ws, connection attempt already active', { ...LOGGER_CATEGORY, wsKey });
111
+ return;
112
+ }
113
+ if (!this.wsStore.getConnectionState(wsKey) ||
114
+ this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.INITIAL)) {
115
+ this.setWsState(wsKey, WsConnectionStateEnum.CONNECTING);
116
+ }
117
+ const url = this.getWsUrl(wsKey); // + authParams;
118
+ const ws = this.connectToWsUrl(url, wsKey);
119
+ return this.wsStore.setWs(wsKey, ws);
120
+ }
121
+ catch (err) {
122
+ this.parseWsError('Connection failed', err, wsKey);
123
+ this.reconnectWithDelay(wsKey, this.options.reconnectTimeout);
124
+ }
125
+ }
126
+ parseWsError(context, error, wsKey) {
127
+ if (!error.message) {
128
+ this.logger.error(`${context} due to unexpected error: `, error);
129
+ this.emit('response', { ...error, wsKey });
130
+ this.emit('exception', { ...error, wsKey });
131
+ return;
132
+ }
133
+ switch (error.message) {
134
+ case 'Unexpected server response: 401':
135
+ this.logger.error(`${context} due to 401 authorization failure.`, {
136
+ ...LOGGER_CATEGORY,
137
+ wsKey,
138
+ });
139
+ break;
140
+ default:
141
+ this.logger.error(`${context} due to unexpected response error: "${error?.msg || error?.message || error}"`, { ...LOGGER_CATEGORY, wsKey, error });
142
+ break;
143
+ }
144
+ this.emit('response', { ...error, wsKey });
145
+ this.emit('exception', { ...error, wsKey });
146
+ }
147
+ async getWsAuthSignature(apiKey, apiSecret, apiPass, recvWindow = 0) {
148
+ if (!apiKey || !apiSecret || !apiPass) {
149
+ throw new Error('Cannot auth - missing api key, secret or passcode in config');
150
+ }
151
+ const signatureExpiresAt = ((Date.now() + recvWindow) / 1000).toFixed(0);
152
+ const signature = await signMessage(signatureExpiresAt + 'GET' + '/user/verify', apiSecret, 'base64', 'SHA-256');
153
+ return {
154
+ expiresAt: Number(signatureExpiresAt),
155
+ signature,
156
+ };
157
+ }
158
+ /** Get a signature, build the auth request and send it */
159
+ async sendAuthRequest(wsKey) {
160
+ try {
161
+ const { apiKey, apiSecret, apiPass, recvWindow } = this.options;
162
+ const { signature, expiresAt } = await this.getWsAuthSignature(apiKey, apiSecret, apiPass, recvWindow);
163
+ this.logger.info('Sending auth request...', {
164
+ ...LOGGER_CATEGORY,
165
+ wsKey,
166
+ });
167
+ const request = {
168
+ op: 'login',
169
+ args: [
170
+ {
171
+ apiKey: this.options.apiKey,
172
+ passphrase: this.options.apiPass,
173
+ timestamp: expiresAt,
174
+ sign: signature,
175
+ },
176
+ ],
177
+ };
178
+ // console.log('ws auth req', request);
179
+ return this.tryWsSend(wsKey, JSON.stringify(request));
180
+ }
181
+ catch (e) {
182
+ this.logger.trace(e, { ...LOGGER_CATEGORY, wsKey });
183
+ }
184
+ }
185
+ reconnectWithDelay(wsKey, connectionDelayMs) {
186
+ this.clearTimers(wsKey);
187
+ if (this.wsStore.getConnectionState(wsKey) !==
188
+ WsConnectionStateEnum.CONNECTING) {
189
+ this.setWsState(wsKey, WsConnectionStateEnum.RECONNECTING);
190
+ }
191
+ this.wsStore.get(wsKey, true).activeReconnectTimer = setTimeout(() => {
192
+ this.logger.info('Reconnecting to websocket', {
193
+ ...LOGGER_CATEGORY,
194
+ wsKey,
195
+ });
196
+ this.connect(wsKey);
197
+ }, connectionDelayMs);
198
+ }
199
+ ping(wsKey) {
200
+ if (this.wsStore.get(wsKey, true).activePongTimer) {
201
+ return;
202
+ }
203
+ this.clearPongTimer(wsKey);
204
+ this.logger.trace('Sending ping', { ...LOGGER_CATEGORY, wsKey });
205
+ this.tryWsSend(wsKey, 'ping');
206
+ this.wsStore.get(wsKey, true).activePongTimer = setTimeout(() => {
207
+ this.logger.info('Pong timeout - closing socket to reconnect', {
208
+ ...LOGGER_CATEGORY,
209
+ wsKey,
210
+ });
211
+ safeTerminateWs(this.getWs(wsKey), true);
212
+ delete this.wsStore.get(wsKey, true).activePongTimer;
213
+ }, this.options.pongTimeout);
214
+ }
215
+ clearTimers(wsKey) {
216
+ this.clearPingTimer(wsKey);
217
+ this.clearPongTimer(wsKey);
218
+ const wsState = this.wsStore.get(wsKey);
219
+ if (wsState?.activeReconnectTimer) {
220
+ clearTimeout(wsState.activeReconnectTimer);
221
+ }
222
+ }
223
+ // Send a ping at intervals
224
+ clearPingTimer(wsKey) {
225
+ const wsState = this.wsStore.get(wsKey);
226
+ if (wsState?.activePingTimer) {
227
+ clearInterval(wsState.activePingTimer);
228
+ wsState.activePingTimer = undefined;
229
+ }
230
+ }
231
+ // Expect a pong within a time limit
232
+ clearPongTimer(wsKey) {
233
+ const wsState = this.wsStore.get(wsKey);
234
+ if (wsState?.activePongTimer) {
235
+ clearTimeout(wsState.activePongTimer);
236
+ wsState.activePongTimer = undefined;
237
+ }
238
+ }
239
+ /**
240
+ * @private Use the `subscribe(topics)` method to subscribe to topics. Send WS message to subscribe to topics.
241
+ */
242
+ requestSubscribeTopics(wsKey, topics) {
243
+ if (!topics.length) {
244
+ return;
245
+ }
246
+ const maxTopicsPerEvent = getMaxTopicsPerSubscribeEvent(wsKey);
247
+ if (maxTopicsPerEvent && topics.length > maxTopicsPerEvent) {
248
+ this.logger.trace(`Subscribing to topics in batches of ${maxTopicsPerEvent}`);
249
+ for (let i = 0; i < topics.length; i += maxTopicsPerEvent) {
250
+ const batch = topics.slice(i, i + maxTopicsPerEvent);
251
+ this.logger.trace(`Subscribing to batch of ${batch.length}`);
252
+ this.requestSubscribeTopics(wsKey, batch);
253
+ }
254
+ this.logger.trace(`Finished batch subscribing to ${topics.length} topics`);
255
+ return;
256
+ }
257
+ const wsMessage = JSON.stringify({
258
+ op: 'subscribe',
259
+ args: topics,
260
+ });
261
+ this.tryWsSend(wsKey, wsMessage);
262
+ }
263
+ /**
264
+ * @private Use the `unsubscribe(topics)` method to unsubscribe from topics. Send WS message to unsubscribe from topics.
265
+ */
266
+ requestUnsubscribeTopics(wsKey, topics) {
267
+ if (!topics.length) {
268
+ return;
269
+ }
270
+ const maxTopicsPerEvent = getMaxTopicsPerSubscribeEvent(wsKey);
271
+ if (maxTopicsPerEvent && topics.length > maxTopicsPerEvent) {
272
+ this.logger.trace(`Unsubscribing to topics in batches of ${maxTopicsPerEvent}`);
273
+ for (let i = 0; i < topics.length; i += maxTopicsPerEvent) {
274
+ const batch = topics.slice(i, i + maxTopicsPerEvent);
275
+ this.logger.trace(`Unsubscribing to batch of ${batch.length}`);
276
+ this.requestUnsubscribeTopics(wsKey, batch);
277
+ }
278
+ this.logger.trace(`Finished batch unsubscribing to ${topics.length} topics`);
279
+ return;
280
+ }
281
+ const wsMessage = JSON.stringify({
282
+ op: 'unsubscribe',
283
+ args: topics,
284
+ });
285
+ this.tryWsSend(wsKey, wsMessage);
286
+ }
287
+ tryWsSend(wsKey, wsMessage) {
288
+ try {
289
+ this.logger.trace('Sending upstream ws message: ', {
290
+ ...LOGGER_CATEGORY,
291
+ wsMessage,
292
+ wsKey,
293
+ });
294
+ if (!wsKey) {
295
+ throw new Error('Cannot send message due to no known websocket for this wsKey');
296
+ }
297
+ const ws = this.getWs(wsKey);
298
+ if (!ws) {
299
+ throw new Error(`${wsKey} socket not connected yet, call "connectAll()" first then try again when the "open" event arrives`);
300
+ }
301
+ ws.send(wsMessage);
302
+ }
303
+ catch (e) {
304
+ this.logger.error('Failed to send WS message', {
305
+ ...LOGGER_CATEGORY,
306
+ wsMessage,
307
+ wsKey,
308
+ exception: e,
309
+ });
310
+ }
311
+ }
312
+ connectToWsUrl(url, wsKey) {
313
+ this.logger.trace(`Opening WS connection to URL: ${url}`, {
314
+ ...LOGGER_CATEGORY,
315
+ wsKey,
316
+ });
317
+ const { protocols = [], ...wsOptions } = this.options.wsOptions || {};
318
+ const ws = new WebSocket(url, protocols, wsOptions);
319
+ ws.onopen = (event) => this.onWsOpen(event, wsKey);
320
+ ws.onmessage = (event) => this.onWsMessage(event, wsKey);
321
+ ws.onerror = (event) => this.parseWsError('websocket error', event, wsKey);
322
+ ws.onclose = (event) => this.onWsClose(event, wsKey);
323
+ return ws;
324
+ }
325
+ async onWsOpen(event, wsKey) {
326
+ if (this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.CONNECTING)) {
327
+ this.logger.info('Websocket connected', {
328
+ ...LOGGER_CATEGORY,
329
+ wsKey,
330
+ });
331
+ this.emit('open', { wsKey, event });
332
+ }
333
+ else if (this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.RECONNECTING)) {
334
+ this.logger.info('Websocket reconnected', { ...LOGGER_CATEGORY, wsKey });
335
+ this.emit('reconnected', { wsKey, event });
336
+ }
337
+ this.setWsState(wsKey, WsConnectionStateEnum.CONNECTED);
338
+ // Some websockets require an auth packet to be sent after opening the connection
339
+ if (WS_AUTH_ON_CONNECT_KEYS.includes(wsKey)) {
340
+ await this.sendAuthRequest(wsKey);
341
+ }
342
+ // Reconnect to topics known before it connected
343
+ // Private topics will be resubscribed to once reconnected
344
+ const topics = [...this.wsStore.getTopics(wsKey)];
345
+ const publicTopics = topics.filter((topic) => !isPrivateChannel(topic.channel));
346
+ this.requestSubscribeTopics(wsKey, publicTopics);
347
+ this.wsStore.get(wsKey, true).activePingTimer = setInterval(() => this.ping(wsKey), this.options.pingInterval);
348
+ }
349
+ /** Handle subscription to private topics _after_ authentication successfully completes asynchronously */
350
+ onWsAuthenticated(wsKey) {
351
+ const wsState = this.wsStore.get(wsKey, true);
352
+ wsState.isAuthenticated = true;
353
+ const topics = [...this.wsStore.getTopics(wsKey)];
354
+ const privateTopics = topics.filter((topic) => isPrivateChannel(topic.channel));
355
+ if (privateTopics.length) {
356
+ this.subscribe(privateTopics, true);
357
+ }
358
+ }
359
+ onWsMessage(event, wsKey) {
360
+ try {
361
+ // any message can clear the pong timer - wouldn't get a message if the ws wasn't working
362
+ this.clearPongTimer(wsKey);
363
+ if (isWsPong(event)) {
364
+ this.logger.trace('Received pong', { ...LOGGER_CATEGORY, wsKey });
365
+ return;
366
+ }
367
+ const msg = JSON.parse((event && event['data']) || event);
368
+ const emittableEvent = { ...msg, wsKey };
369
+ if (typeof msg === 'object') {
370
+ if (typeof msg['code'] === 'number') {
371
+ if (msg.event === 'login' && msg.code === 0) {
372
+ this.logger.info('Successfully authenticated WS client', {
373
+ ...LOGGER_CATEGORY,
374
+ wsKey,
375
+ });
376
+ this.emit('response', emittableEvent);
377
+ this.emit('authenticated', emittableEvent);
378
+ this.onWsAuthenticated(wsKey);
379
+ return;
380
+ }
381
+ }
382
+ if (msg['event']) {
383
+ if (msg.event === 'error') {
384
+ this.logger.error('WS Error received', {
385
+ ...LOGGER_CATEGORY,
386
+ wsKey,
387
+ message: msg || 'no message',
388
+ // messageType: typeof msg,
389
+ // messageString: JSON.stringify(msg),
390
+ event,
391
+ });
392
+ this.emit('exception', emittableEvent);
393
+ this.emit('response', emittableEvent);
394
+ return;
395
+ }
396
+ return this.emit('response', emittableEvent);
397
+ }
398
+ if (msg['arg']) {
399
+ return this.emit('update', emittableEvent);
400
+ }
401
+ }
402
+ this.logger.info('Unhandled/unrecognised ws event message', {
403
+ ...LOGGER_CATEGORY,
404
+ message: msg || 'no message',
405
+ // messageType: typeof msg,
406
+ // messageString: JSON.stringify(msg),
407
+ event,
408
+ wsKey,
409
+ });
410
+ // fallback emit anyway
411
+ return this.emit('update', emittableEvent);
412
+ }
413
+ catch (e) {
414
+ this.logger.error('Failed to parse ws event message', {
415
+ ...LOGGER_CATEGORY,
416
+ error: e,
417
+ event,
418
+ wsKey,
419
+ });
420
+ }
421
+ }
422
+ onWsClose(event, wsKey) {
423
+ this.logger.info('Websocket connection closed', {
424
+ ...LOGGER_CATEGORY,
425
+ wsKey,
426
+ });
427
+ if (this.wsStore.getConnectionState(wsKey) !== WsConnectionStateEnum.CLOSING) {
428
+ this.reconnectWithDelay(wsKey, this.options.reconnectTimeout);
429
+ this.emit('reconnect', { wsKey, event });
430
+ }
431
+ else {
432
+ this.setWsState(wsKey, WsConnectionStateEnum.INITIAL);
433
+ this.emit('close', { wsKey, event });
434
+ }
435
+ }
436
+ getWs(wsKey) {
437
+ return this.wsStore.getWs(wsKey);
438
+ }
439
+ setWsState(wsKey, state) {
440
+ this.wsStore.setConnectionState(wsKey, state);
441
+ }
442
+ getWsUrl(wsKey) {
443
+ if (this.options.wsUrl) {
444
+ return this.options.wsUrl;
445
+ }
446
+ const networkKey = 'livenet';
447
+ switch (wsKey) {
448
+ case WS_KEY_MAP.spotv1: {
449
+ return WS_BASE_URL_MAP.spotv1.all[networkKey];
450
+ }
451
+ case WS_KEY_MAP.mixv1: {
452
+ return WS_BASE_URL_MAP.mixv1.all[networkKey];
453
+ }
454
+ case WS_KEY_MAP.v2Private:
455
+ case WS_KEY_MAP.v2Public: {
456
+ throw new Error('Use the WebsocketClientV2 for V2 websockets');
457
+ }
458
+ case WS_KEY_MAP.v3Private:
459
+ case WS_KEY_MAP.v3Public: {
460
+ throw new Error('Use the WebsocketClientV3 for V3 websockets');
461
+ }
462
+ default: {
463
+ this.logger.error('getWsUrl(): Unhandled wsKey: ', {
464
+ ...LOGGER_CATEGORY,
465
+ wsKey,
466
+ });
467
+ throw neverGuard(wsKey, 'getWsUrl(): Unhandled wsKey');
468
+ }
469
+ }
470
+ }
471
+ /**
472
+ * Subscribe to a topic
473
+ * @param instType instrument type (refer to API docs).
474
+ * @param topic topic name (e.g. "ticker").
475
+ * @param instId instrument ID (e.g. "BTCUSDT"). Use "default" for private topics.
476
+ *
477
+ * @deprecated use WebsocketClientV2 instead
478
+ */
479
+ subscribeTopic(instType, topic, instId = 'default') {
480
+ return this.subscribe({
481
+ instType,
482
+ instId,
483
+ channel: topic,
484
+ });
485
+ }
486
+ /**
487
+ * Unsubscribe from a topic
488
+ * @param instType instrument type (refer to API docs).
489
+ * @param topic topic name (e.g. "ticker").
490
+ * @param instId instrument ID (e.g. "BTCUSDT"). Use "default" for private topics to get all symbols.
491
+ *
492
+ * @deprecated use WebsocketClientV2 instead
493
+ */
494
+ unsubscribeTopic(instType, topic, instId = 'default') {
495
+ return this.unsubscribe({
496
+ instType,
497
+ instId,
498
+ channel: topic,
499
+ });
500
+ }
501
+ }
502
+ //# 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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"}
@@ -0,0 +1,79 @@
1
+ import { WSOperation, WSOperationLoginParams, WsRequestOperationBitget } from './types/websockets/ws-api.js';
2
+ import { MessageEventLike } from './types/websockets/ws-events.js';
3
+ import { BitgetInstTypeV2, WsKey, WsTopicV2 } from './types/websockets/ws-general.js';
4
+ import { BaseWebsocketClient, EmittableEvent, MidflightWsRequestEvent } from './util/BaseWSClient.js';
5
+ import { WsTopicRequest } from './util/websocket-util.js';
6
+ import { WSConnectedResult } from './util/WsStore.types.js';
7
+ export declare class WebsocketClientV2 extends BaseWebsocketClient<WsKey, WsRequestOperationBitget<object>> {
8
+ /**
9
+ * Request connection of all dependent (public & private) websockets, instead of waiting for automatic connection by library
10
+ */
11
+ connectAll(): Promise<WSConnectedResult | undefined>[];
12
+ /** Some private channels use `coin` instead of `instId`. This method handles building the sub/unsub request */
13
+ private getSubRequest;
14
+ /**
15
+ * Subscribe to a topic
16
+ * @param instType instrument type (refer to API docs).
17
+ * @param topic topic name (e.g. "ticker").
18
+ * @param instId instrument ID (e.g. "BTCUSDT"). Use "default" for private topics.
19
+ */
20
+ subscribeTopic(instType: BitgetInstTypeV2, topic: WsTopicV2, coin?: string): Promise<unknown>;
21
+ /**
22
+ * Unsubscribe from a topic
23
+ * @param instType instrument type (refer to API docs).
24
+ * @param topic topic name (e.g. "ticker").
25
+ * @param instId instrument ID (e.g. "BTCUSDT"). Use "default" for private topics to get all symbols.
26
+ */
27
+ unsubscribeTopic(instType: BitgetInstTypeV2, topic: WsTopicV2, coin?: string): Promise<unknown>;
28
+ /**
29
+ * Request subscription to one or more topics. Pass topics as either an array of strings,
30
+ * or array of objects (if the topic has parameters).
31
+ *
32
+ * Objects should be formatted as {topic: string, params: object, category: CategoryV5}.
33
+ *
34
+ * - Subscriptions are automatically routed to the correct websocket connection.
35
+ * - Authentication/connection is automatic.
36
+ * - Resubscribe after network issues is automatic.
37
+ *
38
+ * Call `unsubscribe(topics)` to remove topics
39
+ */
40
+ subscribe(requests: (WsTopicRequest<WsTopicV2 | string> | WsTopicV2) | (WsTopicRequest<WsTopicV2 | string> | WsTopicV2)[], wsKey: WsKey): Promise<unknown>;
41
+ /**
42
+ * Unsubscribe from one or more topics. Similar to subscribe() but in reverse.
43
+ *
44
+ * - Requests are automatically routed to the correct websocket connection.
45
+ * - These topics will be removed from the topic cache, so they won't be subscribed to again.
46
+ */
47
+ unsubscribe(requests: (WsTopicRequest<WsTopicV2 | string> | WsTopicV2) | (WsTopicRequest<WsTopicV2 | string> | WsTopicV2)[], wsKey: WsKey): Promise<unknown>;
48
+ /**
49
+ *
50
+ *
51
+ * Internal methods required to integrate with the BaseWSClient
52
+ *
53
+ *
54
+ */
55
+ protected sendPingEvent(wsKey: WsKey): void;
56
+ protected sendPongEvent(wsKey: WsKey): void;
57
+ protected isWsPing(data: any): boolean;
58
+ protected isWsPong(data: any): boolean;
59
+ protected isPrivateTopicRequest(_request: WsTopicRequest<string>, wsKey: WsKey): boolean;
60
+ protected getPrivateWSKeys(): WsKey[];
61
+ protected isAuthOnConnectWsKey(wsKey: WsKey): boolean;
62
+ protected getWsUrl(wsKey: WsKey): Promise<string>;
63
+ protected getMaxTopicsPerSubscribeEvent(wsKey: WsKey): number | null;
64
+ /**
65
+ * @returns one or more correctly structured request events for performing a operations over WS. This can vary per exchange spec.
66
+ */
67
+ protected getWsRequestEvents(operation: WSOperation, requests: WsTopicRequest<string, object>[]): Promise<MidflightWsRequestEvent<WsRequestOperationBitget<object>>[]>;
68
+ private getWsAuthSignature;
69
+ private signMessage;
70
+ protected getWsAuthRequestEvent(wsKey: WsKey): Promise<WsRequestOperationBitget<WSOperationLoginParams>>;
71
+ /**
72
+ * Abstraction called to sort ws events into emittable event types (response to a request, data update, etc)
73
+ */
74
+ protected resolveEmittableEvents(wsKey: WsKey, event: MessageEventLike): EmittableEvent[];
75
+ /**
76
+ * @deprecrated not supported by Bitget's V2 API offering
77
+ */
78
+ sendWSAPIRequest(): Promise<unknown>;
79
+ }