okx-api 2.0.7 → 3.0.0-beta.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 (382) hide show
  1. package/README.md +336 -11
  2. package/dist/cjs/constants/funding.js.map +1 -0
  3. package/dist/cjs/index.d.ts +43 -0
  4. package/dist/cjs/index.js +64 -0
  5. package/dist/cjs/index.js.map +1 -0
  6. package/dist/cjs/package.json +3 -0
  7. package/{lib → dist/cjs}/rest-client.d.ts +28 -15
  8. package/{lib → dist/cjs}/rest-client.js +41 -68
  9. package/dist/cjs/rest-client.js.map +1 -0
  10. package/dist/cjs/types/rest/client.d.ts +36 -0
  11. package/{lib → dist/cjs}/types/rest/client.js.map +1 -1
  12. package/{lib → dist/cjs}/types/rest/request/account.d.ts +1 -1
  13. package/dist/cjs/types/rest/request/account.js.map +1 -0
  14. package/{lib → dist/cjs}/types/rest/request/block-trading.d.ts +1 -1
  15. package/dist/cjs/types/rest/request/block-trading.js.map +1 -0
  16. package/dist/cjs/types/rest/request/convert.js.map +1 -0
  17. package/dist/cjs/types/rest/request/copy-trading.js.map +1 -0
  18. package/dist/cjs/types/rest/request/funding.js.map +1 -0
  19. package/dist/cjs/types/rest/request/grid-trading.js.map +1 -0
  20. package/dist/cjs/types/rest/request/public.js.map +1 -0
  21. package/dist/cjs/types/rest/request/recurring-buy.js.map +1 -0
  22. package/{lib → dist/cjs}/types/rest/request/shared.d.ts +1 -1
  23. package/dist/cjs/types/rest/request/shared.js.map +1 -0
  24. package/dist/cjs/types/rest/request/signal-bot.js.map +1 -0
  25. package/dist/cjs/types/rest/request/simple-earn.js.map +1 -0
  26. package/dist/cjs/types/rest/request/spread-trading.js.map +1 -0
  27. package/dist/cjs/types/rest/request/subaccount.js.map +1 -0
  28. package/{lib → dist/cjs}/types/rest/request/trade.d.ts +1 -1
  29. package/dist/cjs/types/rest/request/trade.js.map +1 -0
  30. package/{lib → dist/cjs}/types/rest/response/private-account.d.ts +1 -1
  31. package/dist/cjs/types/rest/response/private-account.js.map +1 -0
  32. package/{lib → dist/cjs}/types/rest/response/private-block-trading.d.ts +1 -1
  33. package/dist/cjs/types/rest/response/private-block-trading.js.map +1 -0
  34. package/dist/cjs/types/rest/response/private-copy-trading.js.map +1 -0
  35. package/dist/cjs/types/rest/response/private-flexible-loan.js.map +1 -0
  36. package/{lib → dist/cjs}/types/rest/response/private-funding.d.ts +1 -1
  37. package/dist/cjs/types/rest/response/private-funding.js.map +1 -0
  38. package/dist/cjs/types/rest/response/private-recurring-buy.js.map +1 -0
  39. package/dist/cjs/types/rest/response/private-signal-bot.js.map +1 -0
  40. package/dist/cjs/types/rest/response/private-spread-trading.js.map +1 -0
  41. package/dist/cjs/types/rest/response/private-subaccount.js.map +1 -0
  42. package/{lib → dist/cjs}/types/rest/response/private-trade.d.ts +1 -1
  43. package/dist/cjs/types/rest/response/private-trade.js.map +1 -0
  44. package/{lib → dist/cjs}/types/rest/response/public-data.d.ts +1 -1
  45. package/dist/cjs/types/rest/response/public-data.js.map +1 -0
  46. package/{lib → dist/cjs}/types/rest/shared.d.ts +2 -2
  47. package/dist/cjs/types/rest/shared.js.map +1 -0
  48. package/dist/cjs/types/shared.d.ts +13 -0
  49. package/{lib → dist/cjs}/types/shared.js.map +1 -1
  50. package/dist/cjs/types/websockets/ws-api-request.d.ts +61 -0
  51. package/dist/cjs/types/websockets/ws-api-request.js +3 -0
  52. package/dist/cjs/types/websockets/ws-api-request.js.map +1 -0
  53. package/dist/cjs/types/websockets/ws-api-response.d.ts +28 -0
  54. package/dist/cjs/types/websockets/ws-api-response.js +3 -0
  55. package/dist/cjs/types/websockets/ws-api-response.js.map +1 -0
  56. package/dist/cjs/types/websockets/ws-api.d.ts +139 -0
  57. package/dist/cjs/types/websockets/ws-api.js +38 -0
  58. package/dist/cjs/types/websockets/ws-api.js.map +1 -0
  59. package/{lib/types/websockets/event.d.ts → dist/cjs/types/websockets/ws-events.d.ts} +7 -1
  60. package/dist/cjs/types/websockets/ws-events.js +11 -0
  61. package/dist/cjs/types/websockets/ws-events.js.map +1 -0
  62. package/dist/cjs/types/websockets/ws-general.d.ts +48 -0
  63. package/dist/cjs/types/websockets/ws-general.js +3 -0
  64. package/dist/cjs/types/websockets/ws-general.js.map +1 -0
  65. package/{lib/types/websockets/request.d.ts → dist/cjs/types/websockets/ws-request.d.ts} +0 -22
  66. package/dist/cjs/types/websockets/ws-request.js +3 -0
  67. package/dist/cjs/types/websockets/ws-request.js.map +1 -0
  68. package/{lib → dist/cjs}/util/BaseRestClient.d.ts +1 -1
  69. package/dist/cjs/util/BaseRestClient.js +237 -0
  70. package/dist/cjs/util/BaseRestClient.js.map +1 -0
  71. package/dist/cjs/util/BaseWSClient.d.ts +198 -0
  72. package/dist/cjs/util/BaseWSClient.js +770 -0
  73. package/dist/cjs/util/BaseWSClient.js.map +1 -0
  74. package/dist/cjs/util/WsStore.d.ts +75 -0
  75. package/dist/cjs/util/WsStore.js +303 -0
  76. package/dist/cjs/util/WsStore.js.map +1 -0
  77. package/dist/cjs/util/WsStore.types.d.ts +51 -0
  78. package/dist/cjs/util/WsStore.types.js +14 -0
  79. package/dist/cjs/util/WsStore.types.js.map +1 -0
  80. package/dist/cjs/util/logger.d.ts +8 -0
  81. package/{lib → dist/cjs}/util/logger.js +3 -11
  82. package/dist/cjs/util/logger.js.map +1 -0
  83. package/{lib → dist/cjs}/util/requestUtils.d.ts +2 -1
  84. package/{lib → dist/cjs}/util/requestUtils.js +9 -1
  85. package/dist/cjs/util/requestUtils.js.map +1 -0
  86. package/{lib → dist/cjs}/util/typeGuards.d.ts +4 -2
  87. package/{lib → dist/cjs}/util/typeGuards.js +34 -0
  88. package/dist/cjs/util/typeGuards.js.map +1 -0
  89. package/dist/cjs/util/webCryptoAPI.d.ts +15 -0
  90. package/dist/cjs/util/webCryptoAPI.js +82 -0
  91. package/dist/cjs/util/webCryptoAPI.js.map +1 -0
  92. package/dist/cjs/util/websocket-util.d.ts +142 -0
  93. package/dist/cjs/util/websocket-util.js +533 -0
  94. package/dist/cjs/util/websocket-util.js.map +1 -0
  95. package/dist/cjs/websocket-api-client.d.ts +135 -0
  96. package/dist/cjs/websocket-api-client.js +171 -0
  97. package/dist/cjs/websocket-api-client.js.map +1 -0
  98. package/{lib/websocket-client.d.ts → dist/cjs/websocket-client-legacy.d.ts} +16 -38
  99. package/dist/cjs/websocket-client-legacy.js +524 -0
  100. package/dist/cjs/websocket-client-legacy.js.map +1 -0
  101. package/dist/cjs/websocket-client.d.ts +81 -0
  102. package/dist/cjs/websocket-client.js +548 -0
  103. package/dist/cjs/websocket-client.js.map +1 -0
  104. package/dist/mjs/constants/funding.d.ts +139 -0
  105. package/dist/mjs/constants/funding.js +140 -0
  106. package/dist/mjs/constants/funding.js.map +1 -0
  107. package/dist/mjs/index.d.ts +43 -0
  108. package/dist/mjs/index.js +48 -0
  109. package/dist/mjs/index.js.map +1 -0
  110. package/dist/mjs/package.json +3 -0
  111. package/dist/mjs/rest-client.d.ts +1173 -0
  112. package/dist/mjs/rest-client.js +1271 -0
  113. package/dist/mjs/rest-client.js.map +1 -0
  114. package/dist/mjs/types/rest/client.d.ts +36 -0
  115. package/dist/mjs/types/rest/client.js +2 -0
  116. package/{lib/types/websockets → dist/mjs/types/rest}/client.js.map +1 -1
  117. package/dist/mjs/types/rest/request/account.d.ts +144 -0
  118. package/dist/mjs/types/rest/request/account.js +2 -0
  119. package/dist/mjs/types/rest/request/account.js.map +1 -0
  120. package/dist/mjs/types/rest/request/block-trading.d.ts +76 -0
  121. package/dist/mjs/types/rest/request/block-trading.js +2 -0
  122. package/dist/mjs/types/rest/request/block-trading.js.map +1 -0
  123. package/dist/mjs/types/rest/request/convert.d.ts +19 -0
  124. package/dist/mjs/types/rest/request/convert.js +2 -0
  125. package/dist/mjs/types/rest/request/convert.js.map +1 -0
  126. package/dist/mjs/types/rest/request/copy-trading.d.ts +117 -0
  127. package/dist/mjs/types/rest/request/copy-trading.js +2 -0
  128. package/dist/mjs/types/rest/request/copy-trading.js.map +1 -0
  129. package/dist/mjs/types/rest/request/funding.d.ts +43 -0
  130. package/dist/mjs/types/rest/request/funding.js +2 -0
  131. package/dist/mjs/types/rest/request/funding.js.map +1 -0
  132. package/dist/mjs/types/rest/request/grid-trading.d.ts +66 -0
  133. package/dist/mjs/types/rest/request/grid-trading.js +2 -0
  134. package/dist/mjs/types/rest/request/grid-trading.js.map +1 -0
  135. package/dist/mjs/types/rest/request/public.d.ts +55 -0
  136. package/dist/mjs/types/rest/request/public.js +2 -0
  137. package/dist/mjs/types/rest/request/public.js.map +1 -0
  138. package/dist/mjs/types/rest/request/recurring-buy.d.ts +28 -0
  139. package/dist/mjs/types/rest/request/recurring-buy.js +2 -0
  140. package/dist/mjs/types/rest/request/recurring-buy.js.map +1 -0
  141. package/dist/mjs/types/rest/request/shared.d.ts +7 -0
  142. package/dist/mjs/types/rest/request/shared.js +2 -0
  143. package/dist/mjs/types/rest/request/shared.js.map +1 -0
  144. package/dist/mjs/types/rest/request/signal-bot.d.ts +97 -0
  145. package/dist/mjs/types/rest/request/signal-bot.js +2 -0
  146. package/dist/mjs/types/rest/request/signal-bot.js.map +1 -0
  147. package/dist/mjs/types/rest/request/simple-earn.d.ts +23 -0
  148. package/dist/mjs/types/rest/request/simple-earn.js +2 -0
  149. package/dist/mjs/types/rest/request/simple-earn.js.map +1 -0
  150. package/dist/mjs/types/rest/request/spread-trading.d.ts +69 -0
  151. package/dist/mjs/types/rest/request/spread-trading.js +2 -0
  152. package/dist/mjs/types/rest/request/spread-trading.js.map +1 -0
  153. package/dist/mjs/types/rest/request/subaccount.d.ts +33 -0
  154. package/dist/mjs/types/rest/request/subaccount.js +2 -0
  155. package/dist/mjs/types/rest/request/subaccount.js.map +1 -0
  156. package/dist/mjs/types/rest/request/trade.d.ts +194 -0
  157. package/dist/mjs/types/rest/request/trade.js +2 -0
  158. package/dist/mjs/types/rest/request/trade.js.map +1 -0
  159. package/dist/mjs/types/rest/response/private-account.d.ts +448 -0
  160. package/dist/mjs/types/rest/response/private-account.js +2 -0
  161. package/dist/mjs/types/rest/response/private-account.js.map +1 -0
  162. package/dist/mjs/types/rest/response/private-block-trading.d.ts +124 -0
  163. package/dist/mjs/types/rest/response/private-block-trading.js +2 -0
  164. package/dist/mjs/types/rest/response/private-block-trading.js.map +1 -0
  165. package/dist/mjs/types/rest/response/private-copy-trading.d.ts +259 -0
  166. package/dist/mjs/types/rest/response/private-copy-trading.js +2 -0
  167. package/dist/mjs/types/rest/response/private-copy-trading.js.map +1 -0
  168. package/dist/mjs/types/rest/response/private-flexible-loan.d.ts +72 -0
  169. package/dist/mjs/types/rest/response/private-flexible-loan.js +2 -0
  170. package/dist/mjs/types/rest/response/private-flexible-loan.js.map +1 -0
  171. package/dist/mjs/types/rest/response/private-funding.d.ts +102 -0
  172. package/dist/mjs/types/rest/response/private-funding.js +2 -0
  173. package/dist/mjs/types/rest/response/private-funding.js.map +1 -0
  174. package/dist/mjs/types/rest/response/private-recurring-buy.d.ts +63 -0
  175. package/dist/mjs/types/rest/response/private-recurring-buy.js +2 -0
  176. package/dist/mjs/types/rest/response/private-recurring-buy.js.map +1 -0
  177. package/dist/mjs/types/rest/response/private-signal-bot.d.ts +22 -0
  178. package/dist/mjs/types/rest/response/private-signal-bot.js +2 -0
  179. package/dist/mjs/types/rest/response/private-signal-bot.js.map +1 -0
  180. package/dist/mjs/types/rest/response/private-spread-trading.d.ts +126 -0
  181. package/dist/mjs/types/rest/response/private-spread-trading.js +2 -0
  182. package/dist/mjs/types/rest/response/private-spread-trading.js.map +1 -0
  183. package/dist/mjs/types/rest/response/private-subaccount.d.ts +80 -0
  184. package/dist/mjs/types/rest/response/private-subaccount.js +2 -0
  185. package/dist/mjs/types/rest/response/private-subaccount.js.map +1 -0
  186. package/dist/mjs/types/rest/response/private-trade.d.ts +355 -0
  187. package/dist/mjs/types/rest/response/private-trade.js +2 -0
  188. package/dist/mjs/types/rest/response/private-trade.js.map +1 -0
  189. package/dist/mjs/types/rest/response/public-data.d.ts +174 -0
  190. package/dist/mjs/types/rest/response/public-data.js +2 -0
  191. package/dist/mjs/types/rest/response/public-data.js.map +1 -0
  192. package/dist/mjs/types/rest/shared.d.ts +45 -0
  193. package/dist/mjs/types/rest/shared.js +2 -0
  194. package/dist/mjs/types/rest/shared.js.map +1 -0
  195. package/dist/mjs/types/shared.d.ts +13 -0
  196. package/dist/mjs/types/shared.js +2 -0
  197. package/{lib/types/rest → dist/mjs/types}/shared.js.map +1 -1
  198. package/dist/mjs/types/websockets/ws-api-request.d.ts +61 -0
  199. package/dist/mjs/types/websockets/ws-api-request.js +2 -0
  200. package/dist/mjs/types/websockets/ws-api-request.js.map +1 -0
  201. package/dist/mjs/types/websockets/ws-api-response.d.ts +28 -0
  202. package/dist/mjs/types/websockets/ws-api-response.js +2 -0
  203. package/dist/mjs/types/websockets/ws-api-response.js.map +1 -0
  204. package/dist/mjs/types/websockets/ws-api.d.ts +139 -0
  205. package/dist/mjs/types/websockets/ws-api.js +35 -0
  206. package/dist/mjs/types/websockets/ws-api.js.map +1 -0
  207. package/dist/mjs/types/websockets/ws-events.d.ts +33 -0
  208. package/dist/mjs/types/websockets/ws-events.js +8 -0
  209. package/dist/mjs/types/websockets/ws-events.js.map +1 -0
  210. package/dist/mjs/types/websockets/ws-general.d.ts +48 -0
  211. package/dist/mjs/types/websockets/ws-general.js +2 -0
  212. package/dist/mjs/types/websockets/ws-general.js.map +1 -0
  213. package/dist/mjs/types/websockets/ws-request.d.ts +93 -0
  214. package/dist/mjs/types/websockets/ws-request.js +2 -0
  215. package/dist/mjs/types/websockets/ws-request.js.map +1 -0
  216. package/dist/mjs/util/BaseRestClient.d.ts +29 -0
  217. package/dist/mjs/util/BaseRestClient.js +230 -0
  218. package/dist/mjs/util/BaseRestClient.js.map +1 -0
  219. package/dist/mjs/util/BaseWSClient.d.ts +198 -0
  220. package/dist/mjs/util/BaseWSClient.js +763 -0
  221. package/dist/mjs/util/BaseWSClient.js.map +1 -0
  222. package/dist/mjs/util/WsStore.d.ts +75 -0
  223. package/dist/mjs/util/WsStore.js +298 -0
  224. package/dist/mjs/util/WsStore.js.map +1 -0
  225. package/dist/mjs/util/WsStore.types.d.ts +51 -0
  226. package/dist/mjs/util/WsStore.types.js +11 -0
  227. package/dist/mjs/util/WsStore.types.js.map +1 -0
  228. package/dist/mjs/util/logger.d.ts +8 -0
  229. package/dist/mjs/util/logger.js +14 -0
  230. package/dist/mjs/util/logger.js.map +1 -0
  231. package/dist/mjs/util/requestUtils.d.ts +8 -0
  232. package/dist/mjs/util/requestUtils.js +51 -0
  233. package/dist/mjs/util/requestUtils.js.map +1 -0
  234. package/dist/mjs/util/typeGuards.d.ts +19 -0
  235. package/dist/mjs/util/typeGuards.js +85 -0
  236. package/dist/mjs/util/typeGuards.js.map +1 -0
  237. package/dist/mjs/util/webCryptoAPI.d.ts +15 -0
  238. package/dist/mjs/util/webCryptoAPI.js +77 -0
  239. package/dist/mjs/util/webCryptoAPI.js.map +1 -0
  240. package/dist/mjs/util/websocket-util.d.ts +142 -0
  241. package/dist/mjs/util/websocket-util.js +517 -0
  242. package/dist/mjs/util/websocket-util.js.map +1 -0
  243. package/dist/mjs/websocket-api-client.d.ts +135 -0
  244. package/dist/mjs/websocket-api-client.js +167 -0
  245. package/dist/mjs/websocket-api-client.js.map +1 -0
  246. package/dist/mjs/websocket-client-legacy.d.ts +76 -0
  247. package/dist/mjs/websocket-client-legacy.js +517 -0
  248. package/dist/mjs/websocket-client-legacy.js.map +1 -0
  249. package/dist/mjs/websocket-client.d.ts +81 -0
  250. package/dist/mjs/websocket-client.js +544 -0
  251. package/dist/mjs/websocket-client.js.map +1 -0
  252. package/llms.txt +5604 -3719
  253. package/package.json +28 -13
  254. package/index.js +0 -1
  255. package/lib/constants/funding.js.map +0 -1
  256. package/lib/constants/index.d.ts +0 -1
  257. package/lib/constants/index.js +0 -18
  258. package/lib/constants/index.js.map +0 -1
  259. package/lib/index.d.ts +0 -5
  260. package/lib/index.js +0 -22
  261. package/lib/index.js.map +0 -1
  262. package/lib/rest-client.js.map +0 -1
  263. package/lib/types/index.d.ts +0 -3
  264. package/lib/types/index.js +0 -20
  265. package/lib/types/index.js.map +0 -1
  266. package/lib/types/rest/client.d.ts +0 -20
  267. package/lib/types/rest/index.d.ts +0 -4
  268. package/lib/types/rest/index.js +0 -21
  269. package/lib/types/rest/index.js.map +0 -1
  270. package/lib/types/rest/request/account.js.map +0 -1
  271. package/lib/types/rest/request/announement.d.ts +0 -0
  272. package/lib/types/rest/request/announement.js +0 -1
  273. package/lib/types/rest/request/announement.js.map +0 -1
  274. package/lib/types/rest/request/block-trading.js.map +0 -1
  275. package/lib/types/rest/request/convert.js.map +0 -1
  276. package/lib/types/rest/request/copy-trading.js.map +0 -1
  277. package/lib/types/rest/request/funding.js.map +0 -1
  278. package/lib/types/rest/request/grid-trading.js.map +0 -1
  279. package/lib/types/rest/request/index.d.ts +0 -14
  280. package/lib/types/rest/request/index.js +0 -31
  281. package/lib/types/rest/request/index.js.map +0 -1
  282. package/lib/types/rest/request/public.js.map +0 -1
  283. package/lib/types/rest/request/recurring-buy.js.map +0 -1
  284. package/lib/types/rest/request/shared.js.map +0 -1
  285. package/lib/types/rest/request/signal-bot.js.map +0 -1
  286. package/lib/types/rest/request/simple-earn.js.map +0 -1
  287. package/lib/types/rest/request/spread-trading.js.map +0 -1
  288. package/lib/types/rest/request/subaccount.js.map +0 -1
  289. package/lib/types/rest/request/trade.js.map +0 -1
  290. package/lib/types/rest/response/index.d.ts +0 -11
  291. package/lib/types/rest/response/index.js +0 -28
  292. package/lib/types/rest/response/index.js.map +0 -1
  293. package/lib/types/rest/response/private-account.js.map +0 -1
  294. package/lib/types/rest/response/private-block-trading.js.map +0 -1
  295. package/lib/types/rest/response/private-copy-trading.js.map +0 -1
  296. package/lib/types/rest/response/private-flexible-loan.js.map +0 -1
  297. package/lib/types/rest/response/private-funding.js.map +0 -1
  298. package/lib/types/rest/response/private-recurring-buy.js.map +0 -1
  299. package/lib/types/rest/response/private-signal-bot.js.map +0 -1
  300. package/lib/types/rest/response/private-spread-trading.js.map +0 -1
  301. package/lib/types/rest/response/private-subaccount.js.map +0 -1
  302. package/lib/types/rest/response/private-trade.js.map +0 -1
  303. package/lib/types/rest/response/public-data.js.map +0 -1
  304. package/lib/types/shared.d.ts +0 -6
  305. package/lib/types/websockets/client.d.ts +0 -22
  306. package/lib/types/websockets/client.js +0 -3
  307. package/lib/types/websockets/event.js +0 -3
  308. package/lib/types/websockets/event.js.map +0 -1
  309. package/lib/types/websockets/index.d.ts +0 -3
  310. package/lib/types/websockets/index.js +0 -20
  311. package/lib/types/websockets/index.js.map +0 -1
  312. package/lib/types/websockets/request.js +0 -3
  313. package/lib/types/websockets/request.js.map +0 -1
  314. package/lib/util/BaseRestClient.js +0 -217
  315. package/lib/util/BaseRestClient.js.map +0 -1
  316. package/lib/util/WsStore.d.ts +0 -66
  317. package/lib/util/WsStore.js +0 -168
  318. package/lib/util/WsStore.js.map +0 -1
  319. package/lib/util/browser-support.d.ts +0 -6
  320. package/lib/util/browser-support.js +0 -48
  321. package/lib/util/browser-support.js.map +0 -1
  322. package/lib/util/index.d.ts +0 -4
  323. package/lib/util/index.js +0 -21
  324. package/lib/util/index.js.map +0 -1
  325. package/lib/util/logger.d.ts +0 -9
  326. package/lib/util/logger.js.map +0 -1
  327. package/lib/util/node-support.d.ts +0 -1
  328. package/lib/util/node-support.js +0 -8
  329. package/lib/util/node-support.js.map +0 -1
  330. package/lib/util/requestUtils.js.map +0 -1
  331. package/lib/util/typeGuards.js.map +0 -1
  332. package/lib/util/websocket-util.d.ts +0 -35
  333. package/lib/util/websocket-util.js +0 -282
  334. package/lib/util/websocket-util.js.map +0 -1
  335. package/lib/websocket-client.js +0 -472
  336. package/lib/websocket-client.js.map +0 -1
  337. /package/{lib → dist/cjs}/constants/funding.d.ts +0 -0
  338. /package/{lib → dist/cjs}/constants/funding.js +0 -0
  339. /package/{lib → dist/cjs}/types/rest/client.js +0 -0
  340. /package/{lib → dist/cjs}/types/rest/request/account.js +0 -0
  341. /package/{lib → dist/cjs}/types/rest/request/block-trading.js +0 -0
  342. /package/{lib → dist/cjs}/types/rest/request/convert.d.ts +0 -0
  343. /package/{lib → dist/cjs}/types/rest/request/convert.js +0 -0
  344. /package/{lib → dist/cjs}/types/rest/request/copy-trading.d.ts +0 -0
  345. /package/{lib → dist/cjs}/types/rest/request/copy-trading.js +0 -0
  346. /package/{lib → dist/cjs}/types/rest/request/funding.d.ts +0 -0
  347. /package/{lib → dist/cjs}/types/rest/request/funding.js +0 -0
  348. /package/{lib → dist/cjs}/types/rest/request/grid-trading.d.ts +0 -0
  349. /package/{lib → dist/cjs}/types/rest/request/grid-trading.js +0 -0
  350. /package/{lib → dist/cjs}/types/rest/request/public.d.ts +0 -0
  351. /package/{lib → dist/cjs}/types/rest/request/public.js +0 -0
  352. /package/{lib → dist/cjs}/types/rest/request/recurring-buy.d.ts +0 -0
  353. /package/{lib → dist/cjs}/types/rest/request/recurring-buy.js +0 -0
  354. /package/{lib → dist/cjs}/types/rest/request/shared.js +0 -0
  355. /package/{lib → dist/cjs}/types/rest/request/signal-bot.d.ts +0 -0
  356. /package/{lib → dist/cjs}/types/rest/request/signal-bot.js +0 -0
  357. /package/{lib → dist/cjs}/types/rest/request/simple-earn.d.ts +0 -0
  358. /package/{lib → dist/cjs}/types/rest/request/simple-earn.js +0 -0
  359. /package/{lib → dist/cjs}/types/rest/request/spread-trading.d.ts +0 -0
  360. /package/{lib → dist/cjs}/types/rest/request/spread-trading.js +0 -0
  361. /package/{lib → dist/cjs}/types/rest/request/subaccount.d.ts +0 -0
  362. /package/{lib → dist/cjs}/types/rest/request/subaccount.js +0 -0
  363. /package/{lib → dist/cjs}/types/rest/request/trade.js +0 -0
  364. /package/{lib → dist/cjs}/types/rest/response/private-account.js +0 -0
  365. /package/{lib → dist/cjs}/types/rest/response/private-block-trading.js +0 -0
  366. /package/{lib → dist/cjs}/types/rest/response/private-copy-trading.d.ts +0 -0
  367. /package/{lib → dist/cjs}/types/rest/response/private-copy-trading.js +0 -0
  368. /package/{lib → dist/cjs}/types/rest/response/private-flexible-loan.d.ts +0 -0
  369. /package/{lib → dist/cjs}/types/rest/response/private-flexible-loan.js +0 -0
  370. /package/{lib → dist/cjs}/types/rest/response/private-funding.js +0 -0
  371. /package/{lib → dist/cjs}/types/rest/response/private-recurring-buy.d.ts +0 -0
  372. /package/{lib → dist/cjs}/types/rest/response/private-recurring-buy.js +0 -0
  373. /package/{lib → dist/cjs}/types/rest/response/private-signal-bot.d.ts +0 -0
  374. /package/{lib → dist/cjs}/types/rest/response/private-signal-bot.js +0 -0
  375. /package/{lib → dist/cjs}/types/rest/response/private-spread-trading.d.ts +0 -0
  376. /package/{lib → dist/cjs}/types/rest/response/private-spread-trading.js +0 -0
  377. /package/{lib → dist/cjs}/types/rest/response/private-subaccount.d.ts +0 -0
  378. /package/{lib → dist/cjs}/types/rest/response/private-subaccount.js +0 -0
  379. /package/{lib → dist/cjs}/types/rest/response/private-trade.js +0 -0
  380. /package/{lib → dist/cjs}/types/rest/response/public-data.js +0 -0
  381. /package/{lib → dist/cjs}/types/rest/shared.js +0 -0
  382. /package/{lib → dist/cjs}/types/shared.js +0 -0
@@ -0,0 +1,517 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
3
+ import { EventEmitter } from 'events';
4
+ import WebSocket from 'isomorphic-ws';
5
+ import { DefaultLogger } from './util/logger.js';
6
+ import { isConnCountEvent, isWsDataEvent, isWsErrorEvent, isWsLoginEvent, isWsSubscribeEvent, isWsUnsubscribeEvent, } from './util/typeGuards.js';
7
+ import { signMessage } from './util/webCryptoAPI.js';
8
+ import { getMaxTopicsPerSubscribeEventForMarket, getWsKeyForMarket, getWsKeyForTopicChannel, getWsUrlForWsKey, isWsPong, PRIVATE_WS_KEYS, PUBLIC_WS_KEYS, safeTerminateWs, WS_EVENT_CODE_ENUM, WS_KEY_MAP, WS_LOGGER_CATEGORY, } from './util/websocket-util.js';
9
+ import WsStore from './util/WsStore.js';
10
+ import { WsConnectionStateEnum } from './util/WsStore.types.js';
11
+ /**
12
+ * @deprecated This is the old WebsocketClient that was part of the SDK prior to the V3 release. This legacy WebsocketClient is temporarily included but will be removed with the next major release.
13
+ */
14
+ export class WebsocketClientLegacy 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
+ market: 'prod',
24
+ pongTimeout: 2000,
25
+ pingInterval: 10000,
26
+ reconnectTimeout: 500,
27
+ // Automatically send an authentication op/request after a connection opens, for private connections.
28
+ authPrivateConnectionsOnConnect: true,
29
+ // Individual requests do not require a signature, so this is disabled.
30
+ authPrivateRequests: false,
31
+ useNativeHeartbeats: false,
32
+ ...options,
33
+ };
34
+ if (this.options.market === 'demo') {
35
+ throw new Error('ERROR: to use demo trading, set the "demoTrading: true" flag in the constructor. The "demo" market is not valid any more.');
36
+ }
37
+ }
38
+ /**
39
+ * Subscribe to topics & track/persist them. They will be automatically resubscribed to if the connection drops/reconnects.
40
+ * @param wsEvents topic or list of topics
41
+ * @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)
42
+ */
43
+ subscribe(wsEvents, isPrivateTopic) {
44
+ const wsEventArgs = Array.isArray(wsEvents) ? wsEvents : [wsEvents];
45
+ wsEventArgs.forEach((wsEventArg) => {
46
+ const wsKey = getWsKeyForTopicChannel(this.options.market, wsEventArg.channel, isPrivateTopic);
47
+ // Persist topic for reconnects
48
+ this.wsStore.addTopic(wsKey, wsEventArg);
49
+ // if connected, send subscription request
50
+ if (this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.CONNECTED)) {
51
+ return this.requestSubscribeTopics(wsKey, [wsEventArg]);
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 wsEventArgs = Array.isArray(wsTopics) ? wsTopics : [wsTopics];
67
+ wsEventArgs.forEach((wsEventArg) => {
68
+ const wsKey = getWsKeyForTopicChannel(this.options.market, wsEventArg.channel, isPrivateTopic);
69
+ // Remove topic from persistence for reconnects
70
+ this.wsStore.deleteTopic(wsKey, wsEventArg);
71
+ // unsubscribe request only necessary if active connection exists
72
+ if (this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.CONNECTED)) {
73
+ this.requestUnsubscribeTopics(wsKey, [wsEventArg]);
74
+ }
75
+ });
76
+ }
77
+ /** Get the WsStore that tracks websocket & topic state */
78
+ getWsStore() {
79
+ return this.wsStore;
80
+ }
81
+ close(wsKey, force) {
82
+ this.logger.info('Closing connection', { ...WS_LOGGER_CATEGORY, wsKey });
83
+ this.wsStore.setConnectionState(wsKey, WsConnectionStateEnum.CLOSING);
84
+ this.clearTimers(wsKey);
85
+ const ws = this.wsStore.getWs(wsKey);
86
+ ws?.close();
87
+ if (force) {
88
+ safeTerminateWs(ws);
89
+ }
90
+ }
91
+ closeAll(force) {
92
+ const keys = this.wsStore.getKeys();
93
+ this.logger.info(`Closing all ws connections: ${keys}`);
94
+ keys.forEach((key) => {
95
+ this.close(key, force);
96
+ });
97
+ }
98
+ /**
99
+ * Request connection of all dependent (public & private) websockets, instead of waiting for automatic connection by library
100
+ */
101
+ connectAll() {
102
+ return [this.connectPublic(), this.connectPrivate()];
103
+ }
104
+ connectPublic(businessEndpoint) {
105
+ const isPrivate = false;
106
+ const wsKey = getWsKeyForMarket(this.options.market, isPrivate, !!businessEndpoint);
107
+ return this.connect(WS_KEY_MAP[wsKey]);
108
+ }
109
+ connectPrivate(businessEndpoint) {
110
+ const isPrivate = true;
111
+ const wsKey = getWsKeyForMarket(this.options.market, isPrivate, !!businessEndpoint);
112
+ return this.connect(WS_KEY_MAP[wsKey]);
113
+ }
114
+ async connect(wsKey) {
115
+ try {
116
+ if (this.wsStore.isWsOpen(wsKey)) {
117
+ this.logger.error('Refused to connect to ws with existing active connection', { ...WS_LOGGER_CATEGORY, wsKey });
118
+ return this.wsStore.getWs(wsKey);
119
+ }
120
+ if (this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.CONNECTING)) {
121
+ this.logger.error('Refused to connect to ws, connection attempt already active', { ...WS_LOGGER_CATEGORY, wsKey });
122
+ return;
123
+ }
124
+ if (!this.wsStore.getConnectionState(wsKey) ||
125
+ this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.INITIAL)) {
126
+ this.wsStore.setConnectionState(wsKey, WsConnectionStateEnum.CONNECTING);
127
+ }
128
+ const url = getWsUrlForWsKey(wsKey, this.options, this.logger);
129
+ const ws = this.connectToWsUrl(url, wsKey);
130
+ return this.wsStore.setWs(wsKey, ws);
131
+ }
132
+ catch (err) {
133
+ this.parseWsError('Connection failed', err, wsKey);
134
+ this.reconnectWithDelay(wsKey, this.options.reconnectTimeout);
135
+ }
136
+ }
137
+ parseWsError(context, error, wsKey) {
138
+ if (!error.message) {
139
+ this.logger.error(`${context} due to unexpected error: `, error);
140
+ this.emit('exception', error);
141
+ return;
142
+ }
143
+ switch (error.message) {
144
+ default:
145
+ if (this.wsStore.getConnectionState(wsKey) !==
146
+ WsConnectionStateEnum.CLOSING) {
147
+ this.logger.error(`${context} due to unexpected response error: "${error?.msg || error?.message || error}"`, { ...WS_LOGGER_CATEGORY, wsKey, error });
148
+ this.executeReconnectableClose(wsKey, 'unhandled onWsError');
149
+ }
150
+ else {
151
+ this.logger.info(`${wsKey} socket forcefully closed. Will not reconnect.`);
152
+ }
153
+ break;
154
+ }
155
+ this.emit('exception', error);
156
+ }
157
+ /**
158
+ * Return params required to make authorized request
159
+ */
160
+ async getWsAuthRequest(wsKey) {
161
+ const isPublicWsKey = PUBLIC_WS_KEYS.includes(wsKey);
162
+ const accounts = this.options.accounts;
163
+ const hasAccountsToAuth = !!accounts?.length;
164
+ if (isPublicWsKey || !accounts || !hasAccountsToAuth) {
165
+ this.logger.trace('Starting public only websocket client.', {
166
+ ...WS_LOGGER_CATEGORY,
167
+ wsKey,
168
+ isPublicWsKey,
169
+ hasAccountsToAuth,
170
+ });
171
+ return;
172
+ }
173
+ try {
174
+ const authAccountRequests = accounts.map(async (credentials) => {
175
+ try {
176
+ const { signature, timestamp } = await this.getWsAuthSignature(wsKey, credentials);
177
+ return {
178
+ apiKey: credentials.apiKey,
179
+ passphrase: credentials.apiPass,
180
+ timestamp: timestamp,
181
+ sign: signature,
182
+ };
183
+ }
184
+ catch (e) {
185
+ this.logger.error(`Account with key ${credentials.apiKey} could not be authenticateD: ${e}`);
186
+ }
187
+ return;
188
+ });
189
+ const signedAuthAccountRequests = await Promise.all(authAccountRequests);
190
+ // Filter out failed accounts
191
+ const authRequests = signedAuthAccountRequests.filter((request) => !!request);
192
+ const authParams = {
193
+ op: 'login',
194
+ args: authRequests,
195
+ };
196
+ return authParams;
197
+ }
198
+ catch (e) {
199
+ this.logger.error(e, { ...WS_LOGGER_CATEGORY, wsKey });
200
+ return;
201
+ }
202
+ }
203
+ async getWsAuthSignature(wsKey, credentials) {
204
+ const { apiKey, apiSecret } = credentials;
205
+ if (!apiKey || !apiSecret) {
206
+ this.logger.info('Cannot authenticate websocket, either api or secret missing.', { ...WS_LOGGER_CATEGORY, wsKey });
207
+ throw new Error(`Cannot auth - missing api or secret in config (key: ${apiKey})`);
208
+ }
209
+ this.logger.trace("Getting auth'd request params", {
210
+ ...WS_LOGGER_CATEGORY,
211
+ wsKey,
212
+ });
213
+ const timestamp = (Date.now() / 1000).toFixed(0);
214
+ // const signatureExpiresAt = timestamp + 5;
215
+ const signatureRequest = timestamp + 'GET' + '/users/self/verify';
216
+ const signature = await signMessage(signatureRequest, apiSecret, 'base64', 'SHA-256');
217
+ return {
218
+ signature,
219
+ timestamp,
220
+ };
221
+ }
222
+ async sendAuthRequest(wsKey) {
223
+ const logContext = {
224
+ ...WS_LOGGER_CATEGORY,
225
+ wsKey,
226
+ method: 'sendAuthRequest',
227
+ };
228
+ this.logger.info('Sending auth request...', logContext);
229
+ try {
230
+ const authRequest = await this.getWsAuthRequest(wsKey);
231
+ if (!authRequest) {
232
+ throw new Error('Cannot authenticate this connection');
233
+ }
234
+ this.logger.info(`Sending authentication request on wsKey(${wsKey})`, logContext);
235
+ this.logger.trace(`Authenticating with event: ${JSON.stringify(authRequest, null, 2)} on wsKey(${wsKey})`, logContext);
236
+ return this.tryWsSend(wsKey, JSON.stringify(authRequest));
237
+ }
238
+ catch (e) {
239
+ this.logger.error(e, logContext);
240
+ }
241
+ }
242
+ reconnectWithDelay(wsKey, connectionDelayMs) {
243
+ this.clearTimers(wsKey);
244
+ if (this.wsStore.getConnectionState(wsKey) !==
245
+ WsConnectionStateEnum.CONNECTING) {
246
+ this.wsStore.setConnectionState(wsKey, WsConnectionStateEnum.RECONNECTING);
247
+ }
248
+ if (this.wsStore.get(wsKey)?.activeReconnectTimer) {
249
+ this.clearReconnectTimer(wsKey);
250
+ }
251
+ this.wsStore.get(wsKey, true).activeReconnectTimer = setTimeout(() => {
252
+ this.logger.info('Reconnecting to websocket', {
253
+ ...WS_LOGGER_CATEGORY,
254
+ wsKey,
255
+ });
256
+ this.clearReconnectTimer(wsKey);
257
+ this.connect(wsKey);
258
+ }, connectionDelayMs);
259
+ }
260
+ ping(wsKey) {
261
+ if (this.wsStore.get(wsKey, true).activePongTimer) {
262
+ return;
263
+ }
264
+ this.clearPongTimer(wsKey);
265
+ this.logger.trace('Sending ping', { ...WS_LOGGER_CATEGORY, wsKey });
266
+ this.tryWsSend(wsKey, 'ping');
267
+ this.wsStore.get(wsKey, true).activePongTimer = setTimeout(() => this.executeReconnectableClose(wsKey, 'Pong timeout'), this.options.pongTimeout);
268
+ }
269
+ /**
270
+ * Closes a connection, if it's even open. If open, this will trigger a reconnect asynchronously.
271
+ * If closed, trigger a reconnect immediately
272
+ */
273
+ executeReconnectableClose(wsKey, reason) {
274
+ this.logger.info(`${reason} - closing socket to reconnect`, {
275
+ ...WS_LOGGER_CATEGORY,
276
+ wsKey,
277
+ reason,
278
+ });
279
+ const wasOpen = this.wsStore.isWsOpen(wsKey);
280
+ if (wasOpen) {
281
+ safeTerminateWs(this.wsStore.getWs(wsKey), true);
282
+ }
283
+ delete this.wsStore.get(wsKey, true).activePongTimer;
284
+ this.clearPingTimer(wsKey);
285
+ this.clearPongTimer(wsKey);
286
+ if (!wasOpen) {
287
+ this.logger.info(`${reason} - socket already closed - trigger immediate reconnect`, {
288
+ ...WS_LOGGER_CATEGORY,
289
+ wsKey,
290
+ reason,
291
+ });
292
+ this.reconnectWithDelay(wsKey, this.options.reconnectTimeout);
293
+ }
294
+ }
295
+ clearTimers(wsKey) {
296
+ this.clearPingTimer(wsKey);
297
+ this.clearPongTimer(wsKey);
298
+ this.clearReconnectTimer(wsKey);
299
+ }
300
+ // Send a ping at intervals
301
+ clearPingTimer(wsKey) {
302
+ const wsState = this.wsStore.get(wsKey);
303
+ if (wsState?.activePingTimer) {
304
+ clearInterval(wsState.activePingTimer);
305
+ wsState.activePingTimer = undefined;
306
+ }
307
+ }
308
+ // Expect a pong within a time limit
309
+ clearPongTimer(wsKey) {
310
+ const wsState = this.wsStore.get(wsKey);
311
+ if (wsState?.activePongTimer) {
312
+ clearTimeout(wsState.activePongTimer);
313
+ wsState.activePongTimer = undefined;
314
+ }
315
+ }
316
+ clearReconnectTimer(wsKey) {
317
+ const wsState = this.wsStore.get(wsKey);
318
+ if (wsState?.activeReconnectTimer) {
319
+ clearTimeout(wsState.activeReconnectTimer);
320
+ wsState.activeReconnectTimer = undefined;
321
+ }
322
+ }
323
+ /**
324
+ * @private Use the `subscribe(topics)` method to subscribe to topics. Send WS message to subscribe to topics.
325
+ */
326
+ requestSubscribeTopics(wsKey, topics) {
327
+ if (!topics.length) {
328
+ return;
329
+ }
330
+ const maxTopicsPerEvent = getMaxTopicsPerSubscribeEventForMarket(this.options.market);
331
+ if (maxTopicsPerEvent && topics.length > maxTopicsPerEvent) {
332
+ this.logger.trace(`Subscribing to topics in batches of ${maxTopicsPerEvent}`);
333
+ for (let i = 0; i < topics.length; i += maxTopicsPerEvent) {
334
+ const batch = topics.slice(i, i + maxTopicsPerEvent);
335
+ this.logger.trace(`Subscribing to batch of ${batch.length}`);
336
+ this.requestSubscribeTopics(wsKey, batch);
337
+ }
338
+ this.logger.trace(`Finished batch subscribing to ${topics.length} topics`);
339
+ return;
340
+ }
341
+ const request = {
342
+ op: 'subscribe',
343
+ args: topics,
344
+ };
345
+ const wsMessage = JSON.stringify(request);
346
+ this.tryWsSend(wsKey, wsMessage);
347
+ }
348
+ /**
349
+ * @private Use the `unsubscribe(topics)` method to unsubscribe from topics. Send WS message to unsubscribe from topics.
350
+ */
351
+ requestUnsubscribeTopics(wsKey, topics) {
352
+ if (!topics.length) {
353
+ return;
354
+ }
355
+ const maxTopicsPerEvent = getMaxTopicsPerSubscribeEventForMarket(this.options.market);
356
+ if (maxTopicsPerEvent && topics.length > maxTopicsPerEvent) {
357
+ this.logger.trace(`Unsubscribing to topics in batches of ${maxTopicsPerEvent}`);
358
+ for (let i = 0; i < topics.length; i += maxTopicsPerEvent) {
359
+ const batch = topics.slice(i, i + maxTopicsPerEvent);
360
+ this.logger.trace(`Unsubscribing to batch of ${batch.length}`);
361
+ this.requestUnsubscribeTopics(wsKey, batch);
362
+ }
363
+ this.logger.trace(`Finished batch unsubscribing to ${topics.length} topics`);
364
+ return;
365
+ }
366
+ const request = {
367
+ op: 'unsubscribe',
368
+ args: topics,
369
+ };
370
+ const wsMessage = JSON.stringify(request);
371
+ this.tryWsSend(wsKey, wsMessage);
372
+ }
373
+ tryWsSend(wsKey, wsMessage) {
374
+ try {
375
+ this.logger.trace('Sending upstream ws message: ', {
376
+ ...WS_LOGGER_CATEGORY,
377
+ wsMessage,
378
+ wsKey,
379
+ });
380
+ if (!wsKey) {
381
+ throw new Error(`Cannot send message (wsKey not provided: wsKey(${wsKey}))`);
382
+ }
383
+ const ws = this.wsStore.getWs(wsKey);
384
+ if (!ws) {
385
+ throw new Error(`${wsKey} socket not connected yet, call "connect(${wsKey}) first then try again when the "open" event arrives`);
386
+ }
387
+ ws.send(wsMessage);
388
+ }
389
+ catch (e) {
390
+ this.logger.error('Failed to send WS message', {
391
+ ...WS_LOGGER_CATEGORY,
392
+ wsMessage,
393
+ wsKey,
394
+ exception: e,
395
+ });
396
+ }
397
+ }
398
+ connectToWsUrl(url, wsKey) {
399
+ this.logger.trace(`Opening WS connection to URL: ${url}`, {
400
+ ...WS_LOGGER_CATEGORY,
401
+ wsKey,
402
+ });
403
+ const { protocols = [], ...wsOptions } = this.options.wsOptions || {};
404
+ const ws = new WebSocket(url, protocols, wsOptions);
405
+ ws.onopen = (event) => this.onWsOpen(event, wsKey, url, ws);
406
+ ws.onmessage = (event) => this.onWsMessage(event, wsKey, ws);
407
+ ws.onerror = (event) => this.parseWsError('Websocket onWsError', event, wsKey);
408
+ ws.onclose = (event) => this.onWsClose(event, wsKey);
409
+ return ws;
410
+ }
411
+ async onWsOpen(event, wsKey, url, ws) {
412
+ if (this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.CONNECTING)) {
413
+ this.logger.info('Websocket connected', {
414
+ ...WS_LOGGER_CATEGORY,
415
+ wsKey,
416
+ market: this.options.market,
417
+ });
418
+ this.emit('open', { wsKey, event, wsUrl: url, ws });
419
+ }
420
+ else if (this.wsStore.isConnectionState(wsKey, WsConnectionStateEnum.RECONNECTING)) {
421
+ this.logger.info('Websocket reconnected', {
422
+ ...WS_LOGGER_CATEGORY,
423
+ wsKey,
424
+ });
425
+ this.emit('reconnected', { wsKey, event, wsUrl: url, ws });
426
+ }
427
+ this.wsStore.setConnectionState(wsKey, WsConnectionStateEnum.CONNECTED);
428
+ this.wsStore.get(wsKey, true).activePingTimer = setInterval(() => this.ping(wsKey), this.options.pingInterval);
429
+ // Private websockets require an auth packet to be sent after opening the connection
430
+ if (PRIVATE_WS_KEYS.includes(wsKey)) {
431
+ // Any requested private topics will be subscribed to once authentication succeeds (in onWsMessage handler)
432
+ await this.sendAuthRequest(wsKey);
433
+ // Private topics will be subscribed to once authentication is confirmed as successful
434
+ return;
435
+ }
436
+ // Public topics can be subscribed to immediately
437
+ const topics = [
438
+ ...this.wsStore.getTopics(wsKey),
439
+ ];
440
+ // Since public channels have their own ws key, these topics must be public ones already
441
+ this.requestSubscribeTopics(wsKey, topics);
442
+ }
443
+ onWsMessage(event, wsKey, _ws) {
444
+ const logContext = { ...WS_LOGGER_CATEGORY, wsKey, method: 'onWsMessage' };
445
+ try {
446
+ // any message can clear the pong timer - wouldn't get a message if the ws dropped
447
+ this.clearPongTimer(wsKey);
448
+ if (isWsPong(event)) {
449
+ this.logger.trace('Received pong', logContext);
450
+ return;
451
+ }
452
+ const msg = JSON.parse(event?.data || event);
453
+ if (isWsErrorEvent(msg)) {
454
+ this.logger.error('WS error event: ', { ...msg, wsKey });
455
+ return this.emit('exception', { ...msg, wsKey });
456
+ }
457
+ if (isWsDataEvent(msg)) {
458
+ return this.emit('update', { ...msg, wsKey });
459
+ }
460
+ if (isWsLoginEvent(msg)) {
461
+ // Successfully authenticated
462
+ if (msg.code === WS_EVENT_CODE_ENUM.OK) {
463
+ this.logger.info(`Authenticated successfully on wsKey(${wsKey})`, logContext);
464
+ this.emit('response', { ...msg, wsKey });
465
+ const topics = [
466
+ ...this.wsStore.getTopics(wsKey),
467
+ ];
468
+ // Since private topics have a dedicated WsKey, these are automatically all private topics (no filtering required before the subscribe call)
469
+ this.requestSubscribeTopics(wsKey, topics);
470
+ return;
471
+ }
472
+ this.logger.error('Authentication failed: ', {
473
+ ...logContext,
474
+ ...msg,
475
+ wsKey,
476
+ });
477
+ return this.emit('exception', { ...msg, wsKey });
478
+ }
479
+ if (isWsSubscribeEvent(msg) || isWsUnsubscribeEvent(msg)) {
480
+ // this.logger.trace(`Ws subscribe reply:`, { ...msg, wsKey });
481
+ return this.emit('response', { ...msg, wsKey });
482
+ }
483
+ if (isConnCountEvent(msg)) {
484
+ return this.emit('response', { ...msg, wsKey });
485
+ }
486
+ this.logger.error('Unhandled/unrecognised ws event message', {
487
+ ...logContext,
488
+ eventName: msg.event,
489
+ msg: JSON.stringify(msg, null, 2),
490
+ wsKey,
491
+ });
492
+ }
493
+ catch (e) {
494
+ this.logger.error('Failed to parse ws event message', {
495
+ ...logContext,
496
+ error: e,
497
+ event,
498
+ wsKey,
499
+ });
500
+ }
501
+ }
502
+ onWsClose(event, wsKey) {
503
+ this.logger.info('Websocket connection closed', {
504
+ ...WS_LOGGER_CATEGORY,
505
+ wsKey,
506
+ });
507
+ if (this.wsStore.getConnectionState(wsKey) !== WsConnectionStateEnum.CLOSING) {
508
+ this.reconnectWithDelay(wsKey, this.options.reconnectTimeout);
509
+ this.emit('reconnect', { wsKey, event });
510
+ }
511
+ else {
512
+ this.wsStore.setConnectionState(wsKey, WsConnectionStateEnum.INITIAL);
513
+ this.emit('close', { wsKey, event });
514
+ }
515
+ }
516
+ }
517
+ //# sourceMappingURL=websocket-client-legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client-legacy.js","sourceRoot":"","sources":["../../src/websocket-client-legacy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { WsAPIOperationResponseMap, WSAPIRequestFlags, WsAPITopicRequestParamMap, WsAPIWsKeyTopicMap, WSOperation, WsRequestOperationOKX } from './types/websockets/ws-api.js';
2
+ import { MessageEventLike, WsDataEvent } from './types/websockets/ws-events.js';
3
+ import { WSClientConfigurableOptions } from './types/websockets/ws-general.js';
4
+ import { WsAuthRequestArg, WsChannelSubUnSubRequestArg } from './types/websockets/ws-request.js';
5
+ import { BaseWebsocketClient, EmittableEvent, MidflightWsRequestEvent, WSClientEventMap } from './util/BaseWSClient.js';
6
+ import { DefaultLogger } from './util/logger.js';
7
+ import { WsKey, WsTopicRequest } from './util/websocket-util.js';
8
+ import { WSConnectedResult } from './util/WsStore.types.js';
9
+ export declare interface WebsocketClient {
10
+ on<U extends keyof WSClientEventMap<WsKey, WsDataEvent>>(event: U, listener: WSClientEventMap<WsKey>[U]): this;
11
+ emit<U extends keyof WSClientEventMap<WsKey, WsDataEvent>>(event: U, ...args: Parameters<WSClientEventMap<WsKey>[U]>): boolean;
12
+ }
13
+ export declare class WebsocketClient extends BaseWebsocketClient<WsKey, WsRequestOperationOKX<object>> {
14
+ constructor(options?: WSClientConfigurableOptions, logger?: DefaultLogger);
15
+ /**
16
+ * Request connection of all dependent (public & private) websockets, instead of waiting for automatic connection by library
17
+ */
18
+ connectAll(): Promise<WSConnectedResult | undefined>[];
19
+ connectPublic(businessEndpoint?: boolean): Promise<WSConnectedResult | undefined>;
20
+ connectPrivate(businessEndpoint?: boolean): Promise<WSConnectedResult | undefined>;
21
+ /**
22
+ * Ensures the WS API connection is active and ready.
23
+ *
24
+ * You do not need to call this, but if you call this before making any WS API requests,
25
+ * it can accelerate the first request (by preparing the connection in advance).
26
+ */
27
+ connectWSAPI(): Promise<unknown[]>;
28
+ /**
29
+ * Subscribe to topics & track/persist them. They will be automatically resubscribed to if the connection drops/reconnects.
30
+ * @param wsEvents topic or list of topics
31
+ * @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)
32
+ */
33
+ subscribe(wsEvents: WsChannelSubUnSubRequestArg[] | WsChannelSubUnSubRequestArg, isPrivateTopic?: boolean): Promise<unknown>[];
34
+ /**
35
+ * Unsubscribe from topics & remove them from memory. They won't be re-subscribed to if the connection reconnects.
36
+ * @param wsTopics topic or list of topics
37
+ * @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)
38
+ */
39
+ unsubscribe(wsEvents: WsChannelSubUnSubRequestArg[] | WsChannelSubUnSubRequestArg, isPrivateTopic?: boolean): Promise<unknown>[];
40
+ /**
41
+ *
42
+ *
43
+ * Internal methods required to integrate with the BaseWSClient
44
+ *
45
+ *
46
+ */
47
+ getMarketWsKey(type: 'private' | 'business'): WsKey;
48
+ protected sendPingEvent(wsKey: WsKey): void;
49
+ protected sendPongEvent(wsKey: WsKey): void;
50
+ protected isWsPing(data: any): boolean;
51
+ protected isWsPong(data: any): boolean;
52
+ protected isPrivateTopicRequest(_request: WsTopicRequest<string>, wsKey: WsKey): boolean;
53
+ protected getPrivateWSKeys(): WsKey[];
54
+ protected isAuthOnConnectWsKey(wsKey: WsKey): boolean;
55
+ protected getWsUrl(wsKey: WsKey): Promise<string>;
56
+ protected getMaxTopicsPerSubscribeEvent(): number | null;
57
+ /**
58
+ * @returns one or more correctly structured request events for performing a operations over WS. This can vary per exchange spec.
59
+ */
60
+ protected getWsRequestEvents(operation: WSOperation, requests: WsTopicRequest<string, object>[]): Promise<MidflightWsRequestEvent<WsRequestOperationOKX<object>>[]>;
61
+ private signMessage;
62
+ protected getWsAuthRequestEvent(wsKey: WsKey): Promise<WsRequestOperationOKX<WsAuthRequestArg>>;
63
+ private getWsAuthSignature;
64
+ /**
65
+ * Abstraction called to sort ws events into emittable event types (response to a request, data update, etc)
66
+ */
67
+ protected resolveEmittableEvents(wsKey: WsKey, event: MessageEventLike): EmittableEvent[];
68
+ /**
69
+ * OKX supports order placement via WebSockets. This is the WS API:
70
+ * https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-place-order
71
+ *
72
+ * For convenient promise-wrapped usage of the WS API, instance the WebsocketAPIClient class exported by this SDK.
73
+ *
74
+ * For demo trading, set demoTrading:true in the WS Client config.
75
+ *
76
+ * @returns a promise that resolves/rejects when a matching response arrives
77
+ */
78
+ sendWSAPIRequest<TWSKey extends keyof WsAPIWsKeyTopicMap, TWSOperation extends WsAPIWsKeyTopicMap[TWSKey], TWSParams extends WsAPITopicRequestParamMap[TWSOperation], TWSAPIResponse extends WsAPIOperationResponseMap[TWSOperation] = WsAPIOperationResponseMap[TWSOperation]>(rawWsKey: WsKey, operation: TWSOperation, params: TWSParams & {
79
+ signRequest?: boolean;
80
+ }, requestFlags?: WSAPIRequestFlags): Promise<TWSAPIResponse>;
81
+ }