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,548 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.WebsocketClient = void 0;
5
+ const BaseWSClient_js_1 = require("./util/BaseWSClient.js");
6
+ const typeGuards_js_1 = require("./util/typeGuards.js");
7
+ const webCryptoAPI_js_1 = require("./util/webCryptoAPI.js");
8
+ const websocket_util_js_1 = require("./util/websocket-util.js");
9
+ class WebsocketClient extends BaseWSClient_js_1.BaseWebsocketClient {
10
+ constructor(options, logger) {
11
+ super(options, logger);
12
+ if (this.options.market === 'demo') {
13
+ throw new Error('ERROR: to use demo trading, set the "demoTrading: true" flag in the constructor. The "demo" market is not valid any more.');
14
+ }
15
+ }
16
+ /**
17
+ * Request connection of all dependent (public & private) websockets, instead of waiting for automatic connection by library
18
+ */
19
+ connectAll() {
20
+ return [this.connectPublic(), this.connectPrivate()];
21
+ }
22
+ connectPublic(businessEndpoint) {
23
+ const isPrivate = false;
24
+ const wsKey = (0, websocket_util_js_1.getWsKeyForMarket)(this.options.market, isPrivate, !!businessEndpoint);
25
+ return this.connect(websocket_util_js_1.WS_KEY_MAP[wsKey]);
26
+ }
27
+ connectPrivate(businessEndpoint) {
28
+ const isPrivate = true;
29
+ const wsKey = (0, websocket_util_js_1.getWsKeyForMarket)(this.options.market, isPrivate, !!businessEndpoint);
30
+ return this.connect(websocket_util_js_1.WS_KEY_MAP[wsKey]);
31
+ }
32
+ /**
33
+ * Ensures the WS API connection is active and ready.
34
+ *
35
+ * You do not need to call this, but if you call this before making any WS API requests,
36
+ * it can accelerate the first request (by preparing the connection in advance).
37
+ */
38
+ connectWSAPI() {
39
+ /** This call automatically ensures the connection is active AND authenticated before resolving */
40
+ return Promise.allSettled([
41
+ this.assertIsAuthenticated(this.getMarketWsKey('private')),
42
+ this.assertIsAuthenticated(this.getMarketWsKey('business')),
43
+ ]);
44
+ }
45
+ /**
46
+ * Subscribe to topics & track/persist them. They will be automatically resubscribed to if the connection drops/reconnects.
47
+ * @param wsEvents topic or list of topics
48
+ * @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)
49
+ */
50
+ subscribe(wsEvents, isPrivateTopic) {
51
+ const wsEventArgs = Array.isArray(wsEvents) ? wsEvents : [wsEvents];
52
+ const topicRequestsByWsKey = {};
53
+ // Format and batch topic requests by WsKey (resolved dynamically)
54
+ wsEventArgs.forEach((wsEvent) => {
55
+ const { channel, ...payload } = wsEvent;
56
+ const normalisedEvent = {
57
+ topic: channel,
58
+ payload,
59
+ };
60
+ const wsKey = (0, websocket_util_js_1.getWsKeyForTopicChannel)(this.options.market, channel, isPrivateTopic);
61
+ // Arrange into per-wsKey sorted lists
62
+ if (!topicRequestsByWsKey[wsKey]) {
63
+ topicRequestsByWsKey[wsKey] = [];
64
+ }
65
+ topicRequestsByWsKey[wsKey].push(normalisedEvent);
66
+ });
67
+ const subscribeRequestPromises = [];
68
+ for (const wsKeyUntyped in topicRequestsByWsKey) {
69
+ subscribeRequestPromises.push(this.subscribeTopicsForWsKey(topicRequestsByWsKey[wsKeyUntyped], wsKeyUntyped));
70
+ }
71
+ return subscribeRequestPromises;
72
+ }
73
+ /**
74
+ * Unsubscribe from topics & remove them from memory. They won't be re-subscribed to if the connection reconnects.
75
+ * @param wsTopics topic or list of topics
76
+ * @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)
77
+ */
78
+ unsubscribe(wsEvents, isPrivateTopic) {
79
+ const wsEventArgs = Array.isArray(wsEvents) ? wsEvents : [wsEvents];
80
+ const topicRequestsByWsKey = {};
81
+ // Format and batch topic requests by WsKey (resolved dynamically)
82
+ wsEventArgs.forEach((wsEvent) => {
83
+ const { channel, ...payload } = wsEvent;
84
+ const normalisedEvent = {
85
+ topic: channel,
86
+ payload,
87
+ };
88
+ const wsKey = (0, websocket_util_js_1.getWsKeyForTopicChannel)(this.options.market, channel, isPrivateTopic);
89
+ // Arrange into per-wsKey sorted lists
90
+ if (!topicRequestsByWsKey[wsKey]) {
91
+ topicRequestsByWsKey[wsKey] = [];
92
+ }
93
+ topicRequestsByWsKey[wsKey].push(normalisedEvent);
94
+ });
95
+ const unsubscribeRequestPromises = [];
96
+ for (const wsKeyUntyped in topicRequestsByWsKey) {
97
+ unsubscribeRequestPromises.push(this.unsubscribeTopicsForWsKey(topicRequestsByWsKey[wsKeyUntyped], wsKeyUntyped));
98
+ }
99
+ return unsubscribeRequestPromises;
100
+ }
101
+ /**
102
+ *
103
+ *
104
+ * Internal methods required to integrate with the BaseWSClient
105
+ *
106
+ *
107
+ */
108
+ getMarketWsKey(type) {
109
+ // returns private or business ws key for the active api market
110
+ // defaults to global
111
+ // automatically resolves to demo trading wsKeys under the hood (WSClient)
112
+ const isPrivateType = type === 'private';
113
+ const isBusinessType = type === 'business';
114
+ switch (this.options.market) {
115
+ case 'EEA': {
116
+ return isPrivateType
117
+ ? websocket_util_js_1.WS_KEY_MAP.eeaLivePrivate
118
+ : isBusinessType
119
+ ? websocket_util_js_1.WS_KEY_MAP.eeaLiveBusiness
120
+ : websocket_util_js_1.WS_KEY_MAP.eeaLivePublic;
121
+ }
122
+ case undefined:
123
+ case 'prod':
124
+ case 'GLOBAL': {
125
+ return isPrivateType
126
+ ? websocket_util_js_1.WS_KEY_MAP.eeaLivePrivate
127
+ : isBusinessType
128
+ ? websocket_util_js_1.WS_KEY_MAP.eeaLiveBusiness
129
+ : websocket_util_js_1.WS_KEY_MAP.eeaLivePublic;
130
+ }
131
+ case 'US': {
132
+ return isPrivateType
133
+ ? websocket_util_js_1.WS_KEY_MAP.usLivePrivate
134
+ : isBusinessType
135
+ ? websocket_util_js_1.WS_KEY_MAP.usLiveBusiness
136
+ : websocket_util_js_1.WS_KEY_MAP.usLivePublic;
137
+ }
138
+ default: {
139
+ throw (0, typeGuards_js_1.neverGuard)(this.options.market, `Unhandled market type "${this.options.market}"`);
140
+ }
141
+ }
142
+ }
143
+ sendPingEvent(wsKey) {
144
+ this.tryWsSend(wsKey, 'ping');
145
+ }
146
+ sendPongEvent(wsKey) {
147
+ this.tryWsSend(wsKey, 'pong');
148
+ }
149
+ isWsPing(data) {
150
+ if (data?.data === 'ping') {
151
+ return true;
152
+ }
153
+ return false;
154
+ }
155
+ isWsPong(data) {
156
+ return (0, websocket_util_js_1.isWsPong)(data);
157
+ }
158
+ isPrivateTopicRequest(_request, wsKey) {
159
+ return websocket_util_js_1.PRIVATE_WS_KEYS.includes(wsKey);
160
+ }
161
+ getPrivateWSKeys() {
162
+ return websocket_util_js_1.PRIVATE_WS_KEYS;
163
+ }
164
+ isAuthOnConnectWsKey(wsKey) {
165
+ return websocket_util_js_1.PRIVATE_WS_KEYS.includes(wsKey);
166
+ }
167
+ async getWsUrl(wsKey) {
168
+ return (0, websocket_util_js_1.getWsUrlForWsKey)(wsKey, this.options, this.logger);
169
+ }
170
+ getMaxTopicsPerSubscribeEvent() {
171
+ return null;
172
+ }
173
+ /**
174
+ * @returns one or more correctly structured request events for performing a operations over WS. This can vary per exchange spec.
175
+ */
176
+ async getWsRequestEvents(operation, requests) {
177
+ const wsRequestBuildingErrors = [];
178
+ const topics = requests.map((r) => r.topic + ',' + Object.values(r.payload || {}).join(','));
179
+ // Previously used to track topics in a request. Keeping this for subscribe/unsubscribe requests, no need for incremental values
180
+ const req_id = ['subscribe', 'unsubscribe'].includes(operation) && topics.length
181
+ ? topics.join(',')
182
+ : this.getNewRequestId().toFixed();
183
+ /**
184
+ {
185
+ "op":"subscribe",
186
+ "args":[
187
+ {
188
+ "channel": "tickers",
189
+ "instId": "BTC-USDT"
190
+ },
191
+ {
192
+ "channel": "tickers",
193
+ "instId": "BTC-USDT"
194
+ }
195
+ ]
196
+ }
197
+ */
198
+ const wsEvent = {
199
+ id: `${this.getNewRequestId()}`,
200
+ op: operation,
201
+ args: requests.map((request) => {
202
+ // const request = {
203
+ // topic: 'tickers',
204
+ // payload: { instId: 'BTC-USDT' },
205
+ // };
206
+ // becomes:
207
+ // const request = {
208
+ // channel: 'ticker',
209
+ // instId: 'BTC-USDT',
210
+ // };
211
+ return {
212
+ channel: request.topic,
213
+ ...request.payload,
214
+ };
215
+ }),
216
+ };
217
+ const midflightWsEvent = {
218
+ requestKey: req_id,
219
+ requestEvent: wsEvent,
220
+ };
221
+ if (wsRequestBuildingErrors.length) {
222
+ const label = wsRequestBuildingErrors.length === requests.length ? 'all' : 'some';
223
+ this.logger.error(`Failed to build/send ${wsRequestBuildingErrors.length} event(s) for ${label} WS requests due to exceptions`, {
224
+ ...websocket_util_js_1.WS_LOGGER_CATEGORY,
225
+ wsRequestBuildingErrors,
226
+ wsRequestBuildingErrorsStringified: JSON.stringify(wsRequestBuildingErrors, null, 2),
227
+ });
228
+ }
229
+ return [midflightWsEvent];
230
+ }
231
+ async signMessage(paramsStr, secret, method, algorithm) {
232
+ if (typeof this.options.customSignMessageFn === 'function') {
233
+ return this.options.customSignMessageFn(paramsStr, secret);
234
+ }
235
+ return await (0, webCryptoAPI_js_1.signMessage)(paramsStr, secret, method, algorithm);
236
+ }
237
+ async getWsAuthRequestEvent(wsKey) {
238
+ const isPublicWsKey = websocket_util_js_1.PUBLIC_WS_KEYS.includes(wsKey);
239
+ const accounts = this.options.accounts;
240
+ const hasAccountsToAuth = !!accounts?.length;
241
+ if (isPublicWsKey || !accounts || !hasAccountsToAuth) {
242
+ this.logger.trace('Starting public only websocket client.', {
243
+ ...websocket_util_js_1.WS_LOGGER_CATEGORY,
244
+ wsKey,
245
+ isPublicWsKey,
246
+ hasAccountsToAuth,
247
+ });
248
+ throw new Error('Cannot auth - missing api or secret or pass in config');
249
+ }
250
+ try {
251
+ const authAccountRequests = accounts.map(async (credentials) => {
252
+ try {
253
+ const { signature, timestamp } = await this.getWsAuthSignature(wsKey, credentials);
254
+ return {
255
+ apiKey: credentials.apiKey,
256
+ passphrase: credentials.apiPass,
257
+ timestamp: timestamp,
258
+ sign: signature,
259
+ };
260
+ }
261
+ catch (e) {
262
+ this.logger.error(`Account with key ${credentials.apiKey} could not be authenticated: ${e}`, e?.stack);
263
+ }
264
+ return;
265
+ });
266
+ const signedAuthAccountRequests = await Promise.all(authAccountRequests);
267
+ // Filter out failed accounts
268
+ const authRequests = signedAuthAccountRequests.filter((request) => !!request);
269
+ const authParams = {
270
+ id: `${this.getNewRequestId()}`,
271
+ op: 'login',
272
+ args: authRequests,
273
+ };
274
+ return authParams;
275
+ }
276
+ catch (e) {
277
+ this.logger.error({
278
+ ...websocket_util_js_1.WS_LOGGER_CATEGORY,
279
+ wsKey,
280
+ error: e,
281
+ });
282
+ throw e;
283
+ }
284
+ }
285
+ async getWsAuthSignature(wsKey, credentials) {
286
+ const { apiKey, apiSecret } = credentials;
287
+ if (!apiKey || !apiSecret) {
288
+ this.logger.info('Cannot authenticate websocket, either api or secret missing.', { ...websocket_util_js_1.WS_LOGGER_CATEGORY, wsKey });
289
+ throw new Error(`Cannot auth - missing api or secret in config (key: ${apiKey})`);
290
+ }
291
+ this.logger.trace("Getting auth'd request params", {
292
+ ...websocket_util_js_1.WS_LOGGER_CATEGORY,
293
+ wsKey,
294
+ });
295
+ const timestamp = (Date.now() / 1000).toFixed(0);
296
+ // const signatureExpiresAt = timestamp + 5;
297
+ const signatureRequest = timestamp + 'GET' + '/users/self/verify';
298
+ const signature = await this.signMessage(signatureRequest, apiSecret, 'base64', 'SHA-256');
299
+ return {
300
+ signature,
301
+ timestamp,
302
+ };
303
+ }
304
+ /**
305
+ * Abstraction called to sort ws events into emittable event types (response to a request, data update, etc)
306
+ */
307
+ resolveEmittableEvents(wsKey, event) {
308
+ const results = [];
309
+ const logContext = {
310
+ ...websocket_util_js_1.WS_LOGGER_CATEGORY,
311
+ wsKey,
312
+ method: 'resolveEmittableEvents',
313
+ };
314
+ try {
315
+ const msg = JSON.parse(event.data);
316
+ const emittableEvent = { ...msg, wsKey };
317
+ /**
318
+ * WS API response handling
319
+ */
320
+ if ((0, typeGuards_js_1.isWSAPIResponse)(emittableEvent)) {
321
+ // const eg1 = {
322
+ // id: '2',
323
+ // op: 'order',
324
+ // code: '1',
325
+ // msg: '',
326
+ // data: [
327
+ // {
328
+ // tag: '159881cb7207BCDE',
329
+ // ts: '1753783406701',
330
+ // ordId: '',
331
+ // clOrdId: '',
332
+ // sCode: '51008',
333
+ // sMsg: 'Order failed. Insufficient USDT balance in account.',
334
+ // },
335
+ // ],
336
+ // inTime: '1753783406701275',
337
+ // outTime: '1753783406702251',
338
+ // wsKey: 'prodPrivate',
339
+ // };
340
+ const retCode = emittableEvent.code;
341
+ const reqId = emittableEvent.id;
342
+ const isError = retCode !== '0';
343
+ // check getPromiseRefForWSAPIRequest
344
+ const promiseRef = [emittableEvent.id, emittableEvent.op].join('_');
345
+ const loggableContext = {
346
+ wsKey,
347
+ promiseRef,
348
+ parsedEvent: emittableEvent,
349
+ };
350
+ if (!reqId) {
351
+ this.logger.error('WS API response is missing reqId - promisified workflow could get stuck. If this happens, please get in touch with steps to reproduce. Trace:', loggableContext);
352
+ }
353
+ if (isError) {
354
+ try {
355
+ this.getWsStore().rejectDeferredPromise(wsKey, promiseRef, emittableEvent, true);
356
+ }
357
+ catch (e) {
358
+ this.logger.error('Exception trying to reject WSAPI promise', {
359
+ ...loggableContext,
360
+ error: e,
361
+ });
362
+ }
363
+ results.push({
364
+ eventType: 'exception',
365
+ event: emittableEvent,
366
+ isWSAPIResponse: true,
367
+ });
368
+ return results;
369
+ }
370
+ // WS API Success
371
+ try {
372
+ this.getWsStore().resolveDeferredPromise(wsKey, promiseRef, emittableEvent, true);
373
+ }
374
+ catch (e) {
375
+ this.logger.error('Exception trying to resolve WSAPI promise', {
376
+ ...loggableContext,
377
+ error: e,
378
+ });
379
+ }
380
+ results.push({
381
+ eventType: 'response',
382
+ event: emittableEvent,
383
+ isWSAPIResponse: true,
384
+ });
385
+ return results;
386
+ }
387
+ if ((0, typeGuards_js_1.isWsErrorEvent)(msg)) {
388
+ this.logger.error('WS Error received', {
389
+ ...logContext,
390
+ wsKey,
391
+ message: msg || 'no message',
392
+ // messageType: typeof msg,
393
+ // messageString: JSON.stringify(msg),
394
+ event,
395
+ });
396
+ results.push({
397
+ eventType: 'exception',
398
+ event: emittableEvent,
399
+ });
400
+ return results;
401
+ }
402
+ if ((0, typeGuards_js_1.isWsDataEvent)(msg)) {
403
+ results.push({
404
+ eventType: 'update',
405
+ event: emittableEvent,
406
+ });
407
+ return results;
408
+ }
409
+ if ((0, typeGuards_js_1.isWsLoginEvent)(msg)) {
410
+ // Successfully authenticated
411
+ if (msg.code === websocket_util_js_1.WS_EVENT_CODE_ENUM.OK) {
412
+ this.logger.info(`Authenticated successfully on wsKey(${wsKey})`, logContext);
413
+ results.push({
414
+ eventType: 'response',
415
+ event: emittableEvent,
416
+ });
417
+ results.push({
418
+ eventType: 'authenticated',
419
+ event: emittableEvent,
420
+ });
421
+ return results;
422
+ }
423
+ this.logger.error('Authentication failed: ', {
424
+ ...logContext,
425
+ ...msg,
426
+ wsKey,
427
+ });
428
+ results.push({
429
+ eventType: 'exception',
430
+ event: emittableEvent,
431
+ });
432
+ return results;
433
+ }
434
+ if ((0, typeGuards_js_1.isWsSubscribeEvent)(msg) || (0, typeGuards_js_1.isWsUnsubscribeEvent)(msg)) {
435
+ results.push({
436
+ eventType: 'response',
437
+ event: emittableEvent,
438
+ });
439
+ // this.logger.trace(`Ws subscribe reply:`, { ...msg, wsKey });
440
+ return results;
441
+ }
442
+ if ((0, typeGuards_js_1.isConnCountEvent)(msg)) {
443
+ results.push({
444
+ eventType: 'response',
445
+ event: emittableEvent,
446
+ });
447
+ return results;
448
+ }
449
+ this.logger.info('Unhandled/unrecognised ws event message', {
450
+ ...websocket_util_js_1.WS_LOGGER_CATEGORY,
451
+ message: msg || 'no message',
452
+ // messageType: typeof msg,
453
+ // messageString: JSON.stringify(msg),
454
+ event,
455
+ wsKey,
456
+ });
457
+ // fallback emit anyway
458
+ results.push({
459
+ eventType: 'update',
460
+ event: emittableEvent,
461
+ });
462
+ return results;
463
+ }
464
+ catch (e) {
465
+ this.logger.error('Failed to parse ws event message', {
466
+ ...websocket_util_js_1.WS_LOGGER_CATEGORY,
467
+ error: e,
468
+ event,
469
+ wsKey,
470
+ });
471
+ }
472
+ return results;
473
+ }
474
+ /**
475
+ * OKX supports order placement via WebSockets. This is the WS API:
476
+ * https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-place-order
477
+ *
478
+ * For convenient promise-wrapped usage of the WS API, instance the WebsocketAPIClient class exported by this SDK.
479
+ *
480
+ * For demo trading, set demoTrading:true in the WS Client config.
481
+ *
482
+ * @returns a promise that resolves/rejects when a matching response arrives
483
+ */
484
+ async sendWSAPIRequest(rawWsKey, operation, params, requestFlags) {
485
+ // If demo trading, enforce demo wskey for WS API calls
486
+ const wsKey = this.options.demoTrading ? (0, websocket_util_js_1.getDemoWsKey)(rawWsKey) : rawWsKey;
487
+ this.logger.trace(`sendWSAPIRequest(): assert "${wsKey}" is connected`);
488
+ await this.assertIsConnected(wsKey);
489
+ this.logger.trace('sendWSAPIRequest()->assertIsConnected() ok');
490
+ if (requestFlags?.authIsOptional !== true) {
491
+ this.logger.trace('sendWSAPIRequest(): assertIsAuthenticated(${wsKey})...');
492
+ await this.assertIsAuthenticated(wsKey);
493
+ this.logger.trace('sendWSAPIRequest(): assertIsAuthenticated(${wsKey}) ok');
494
+ }
495
+ const request = {
496
+ id: `${this.getNewRequestId()}`,
497
+ op: operation,
498
+ // Ensure "args" is always wrapped as array
499
+ args: Array.isArray(params) ? params : [params],
500
+ };
501
+ if (requestFlags?.expTime) {
502
+ request.expTime = requestFlags.expTime;
503
+ }
504
+ if ((0, websocket_util_js_1.requiresWSAPITag)(operation, wsKey)) {
505
+ (0, websocket_util_js_1.validateWSAPITag)(request, wsKey);
506
+ }
507
+ // Store deferred promise, resolved within the "resolveEmittableEvents" method while parsing incoming events
508
+ const promiseRef = (0, websocket_util_js_1.getPromiseRefForWSAPIRequest)(request);
509
+ const deferredPromise = this.getWsStore().createDeferredPromise(wsKey, promiseRef, false);
510
+ // Enrich returned promise with request context for easier debugging
511
+ deferredPromise.promise
512
+ ?.then((res) => {
513
+ if (!Array.isArray(res)) {
514
+ res.request = {
515
+ wsKey,
516
+ ...request,
517
+ };
518
+ }
519
+ return res;
520
+ })
521
+ .catch((e) => {
522
+ if (typeof e === 'string') {
523
+ this.logger.error('Unexpected string thrown without Error object:', {
524
+ e,
525
+ wsKey,
526
+ request,
527
+ });
528
+ return e;
529
+ }
530
+ e.request = {
531
+ wsKey,
532
+ operation,
533
+ params: params,
534
+ };
535
+ // throw e;
536
+ return e;
537
+ });
538
+ this.logger.trace(`sendWSAPIRequest(): sending raw request: ${JSON.stringify(request, null, 2)}`);
539
+ // Send event
540
+ const throwExceptions = false;
541
+ this.tryWsSend(wsKey, JSON.stringify(request), throwExceptions);
542
+ this.logger.trace(`sendWSAPIRequest(): sent "${operation}" event with promiseRef(${promiseRef})`);
543
+ // Return deferred promise, so caller can await this call
544
+ return deferredPromise.promise;
545
+ }
546
+ }
547
+ exports.WebsocketClient = WebsocketClient;
548
+ //# sourceMappingURL=websocket-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../../src/websocket-client.ts"],"names":[],"mappings":"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"}