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