@orderly.network/hooks 1.3.0-alpha.0 → 1.4.0-alpha.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 (355) hide show
  1. package/esm/dataProvider.d.ts.map +1 -1
  2. package/esm/dataProvider.js +0 -2
  3. package/esm/dataProvider.js.map +1 -1
  4. package/esm/index.d.ts +4 -3
  5. package/esm/index.d.ts.map +1 -1
  6. package/esm/index.js +4 -3
  7. package/esm/index.js.map +1 -1
  8. package/esm/orderly/orderlyHooks.d.ts +3 -2
  9. package/esm/orderly/orderlyHooks.d.ts.map +1 -1
  10. package/esm/orderly/orderlyHooks.js +3 -2
  11. package/esm/orderly/orderlyHooks.js.map +1 -1
  12. package/esm/orderly/useCollateral.js +2 -2
  13. package/esm/orderly/useCollateral.js.map +1 -1
  14. package/esm/orderly/useMarginRatio.js +1 -1
  15. package/esm/orderly/useMarginRatio.js.map +1 -1
  16. package/esm/orderly/useMaxQty.js +2 -2
  17. package/esm/orderly/useMaxQty.js.map +1 -1
  18. package/esm/orderly/useOrderEntry.d.ts.map +1 -1
  19. package/esm/orderly/useOrderEntry.js +15 -12
  20. package/esm/orderly/useOrderEntry.js.map +1 -1
  21. package/esm/orderly/useOrderEntryNext/index.d.ts +1 -0
  22. package/esm/orderly/useOrderEntryNext/index.d.ts.map +1 -0
  23. package/esm/orderly/useOrderEntryNext/index.js +2 -0
  24. package/esm/orderly/useOrderEntryNext/index.js.map +1 -0
  25. package/esm/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +19 -12
  26. package/esm/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
  27. package/esm/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +91 -26
  28. package/esm/orderly/useOrderStream/useOrderStream.js.map +1 -0
  29. package/esm/orderly/useOrderbookStream.d.ts.map +1 -1
  30. package/esm/orderly/useOrderbookStream.js +13 -6
  31. package/esm/orderly/useOrderbookStream.js.map +1 -1
  32. package/esm/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
  33. package/esm/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
  34. package/esm/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
  35. package/esm/orderly/usePositionStream/usePositionStream.js.map +1 -0
  36. package/esm/orderly/usePositionStream/utils.d.ts +8 -0
  37. package/esm/orderly/usePositionStream/utils.d.ts.map +1 -0
  38. package/esm/orderly/usePositionStream/utils.js +34 -0
  39. package/esm/orderly/usePositionStream/utils.js.map +1 -0
  40. package/esm/orderly/usePrivateDataObserver.d.ts.map +1 -1
  41. package/esm/orderly/usePrivateDataObserver.js +30 -43
  42. package/esm/orderly/usePrivateDataObserver.js.map +1 -1
  43. package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
  44. package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
  45. package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
  46. package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
  47. package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts +32 -0
  48. package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
  49. package/esm/orderly/useTakeProfitAndStopLoss/index.js +23 -0
  50. package/esm/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
  51. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +59 -0
  52. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
  53. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js +211 -0
  54. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
  55. package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
  56. package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
  57. package/esm/orderly/useTakeProfitAndStopLoss/utils.js +226 -0
  58. package/esm/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
  59. package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
  60. package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
  61. package/esm/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
  62. package/esm/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
  63. package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
  64. package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
  65. package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
  66. package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
  67. package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
  68. package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
  69. package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
  70. package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
  71. package/esm/services/orderCreator/baseAlgoCreator.d.ts +22 -0
  72. package/esm/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
  73. package/esm/services/orderCreator/baseAlgoCreator.js +57 -0
  74. package/esm/services/orderCreator/baseAlgoCreator.js.map +1 -0
  75. package/esm/services/orderCreator/baseCreator.d.ts +14 -0
  76. package/esm/services/orderCreator/baseCreator.d.ts.map +1 -0
  77. package/esm/services/orderCreator/baseCreator.js +92 -0
  78. package/esm/services/orderCreator/baseCreator.js.map +1 -0
  79. package/esm/services/orderCreator/factory.d.ts +7 -0
  80. package/esm/services/orderCreator/factory.d.ts.map +1 -0
  81. package/esm/services/orderCreator/factory.js +45 -0
  82. package/esm/services/orderCreator/factory.js.map +1 -0
  83. package/esm/services/orderCreator/fokCreator.d.ts +4 -0
  84. package/esm/services/orderCreator/fokCreator.d.ts.map +1 -0
  85. package/esm/services/orderCreator/fokCreator.js +5 -0
  86. package/esm/services/orderCreator/fokCreator.js.map +1 -0
  87. package/esm/services/orderCreator/generalCreator.d.ts +8 -0
  88. package/esm/services/orderCreator/generalCreator.d.ts.map +1 -0
  89. package/esm/services/orderCreator/generalCreator.js +15 -0
  90. package/esm/services/orderCreator/generalCreator.js.map +1 -0
  91. package/esm/services/orderCreator/interface.d.ts +23 -0
  92. package/esm/services/orderCreator/interface.d.ts.map +1 -0
  93. package/esm/services/orderCreator/interface.js +3 -0
  94. package/esm/services/orderCreator/interface.js.map +1 -0
  95. package/esm/services/orderCreator/iocCreator.d.ts +4 -0
  96. package/esm/services/orderCreator/iocCreator.d.ts.map +1 -0
  97. package/esm/services/orderCreator/iocCreator.js +5 -0
  98. package/esm/services/orderCreator/iocCreator.js.map +1 -0
  99. package/esm/services/orderCreator/limitOrderCreator.d.ts +8 -0
  100. package/esm/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
  101. package/esm/services/orderCreator/limitOrderCreator.js +69 -0
  102. package/esm/services/orderCreator/limitOrderCreator.js.map +1 -0
  103. package/esm/services/orderCreator/marketOrderCreator.d.ts +24 -0
  104. package/esm/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
  105. package/esm/services/orderCreator/marketOrderCreator.js +18 -0
  106. package/esm/services/orderCreator/marketOrderCreator.js.map +1 -0
  107. package/esm/services/orderCreator/postOnlyCreator.d.ts +4 -0
  108. package/esm/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
  109. package/esm/services/orderCreator/postOnlyCreator.js +5 -0
  110. package/esm/services/orderCreator/postOnlyCreator.js.map +1 -0
  111. package/esm/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
  112. package/esm/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
  113. package/esm/services/orderCreator/stopLimitOrderCreator.js +84 -0
  114. package/esm/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
  115. package/esm/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
  116. package/esm/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
  117. package/esm/services/orderCreator/stopMarketOrderCreator.js +46 -0
  118. package/esm/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
  119. package/esm/services/orderCreator/tpslOrderCreator.d.ts +32 -0
  120. package/esm/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
  121. package/esm/services/orderCreator/tpslOrderCreator.js +88 -0
  122. package/esm/services/orderCreator/tpslOrderCreator.js.map +1 -0
  123. package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
  124. package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
  125. package/esm/services/orderCreator/tpslPositionOrderCreator.js +74 -0
  126. package/esm/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
  127. package/esm/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
  128. package/esm/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
  129. package/esm/services/orderMerge/algoOrderMergeHandler.js +38 -0
  130. package/esm/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
  131. package/esm/services/orderMerge/baseMergeHandler.d.ts +22 -0
  132. package/esm/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
  133. package/esm/services/orderMerge/baseMergeHandler.js +160 -0
  134. package/esm/services/orderMerge/baseMergeHandler.js.map +1 -0
  135. package/esm/services/orderMerge/interface.d.ts +8 -0
  136. package/esm/services/orderMerge/interface.d.ts.map +1 -0
  137. package/esm/services/orderMerge/interface.js +3 -0
  138. package/esm/services/orderMerge/interface.js.map +1 -0
  139. package/esm/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
  140. package/esm/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
  141. package/esm/services/orderMerge/regularOrderMergeHandler.js +15 -0
  142. package/esm/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
  143. package/esm/usePoster.d.ts +3 -0
  144. package/esm/usePoster.d.ts.map +1 -1
  145. package/esm/usePoster.js +3 -1
  146. package/esm/usePoster.js.map +1 -1
  147. package/esm/utils/createOrder.d.ts +0 -55
  148. package/esm/utils/createOrder.d.ts.map +1 -1
  149. package/esm/utils/createOrder.js +0 -334
  150. package/esm/utils/createOrder.js.map +1 -1
  151. package/esm/utils/fokCreator.d.ts +1 -0
  152. package/esm/utils/fokCreator.d.ts.map +1 -0
  153. package/esm/utils/fokCreator.js +2 -0
  154. package/esm/utils/fokCreator.js.map +1 -0
  155. package/esm/utils/index.d.ts +5 -0
  156. package/esm/utils/index.d.ts.map +1 -0
  157. package/esm/utils/index.js +6 -0
  158. package/esm/utils/index.js.map +1 -0
  159. package/esm/utils/order.d.ts +2 -0
  160. package/esm/utils/order.d.ts.map +1 -0
  161. package/esm/utils/order.js +3 -0
  162. package/esm/utils/order.js.map +1 -0
  163. package/esm/utils/swr.d.ts +3 -1
  164. package/esm/utils/swr.d.ts.map +1 -1
  165. package/esm/utils/swr.js +123 -89
  166. package/esm/utils/swr.js.map +1 -1
  167. package/esm/utils/ws.d.ts +2 -0
  168. package/esm/utils/ws.d.ts.map +1 -0
  169. package/esm/utils/ws.js +9 -0
  170. package/esm/utils/ws.js.map +1 -0
  171. package/esm/version.d.ts +1 -1
  172. package/esm/version.js +2 -2
  173. package/esm/version.js.map +1 -1
  174. package/lib/dataProvider.d.ts.map +1 -1
  175. package/lib/dataProvider.js +0 -2
  176. package/lib/dataProvider.js.map +1 -1
  177. package/lib/index.d.ts +4 -3
  178. package/lib/index.d.ts.map +1 -1
  179. package/lib/index.js +10 -3
  180. package/lib/index.js.map +1 -1
  181. package/lib/orderly/orderlyHooks.d.ts +3 -2
  182. package/lib/orderly/orderlyHooks.d.ts.map +1 -1
  183. package/lib/orderly/orderlyHooks.js +6 -2
  184. package/lib/orderly/orderlyHooks.js.map +1 -1
  185. package/lib/orderly/useCollateral.js +2 -2
  186. package/lib/orderly/useCollateral.js.map +1 -1
  187. package/lib/orderly/useMarginRatio.js +1 -1
  188. package/lib/orderly/useMarginRatio.js.map +1 -1
  189. package/lib/orderly/useMaxQty.js +2 -2
  190. package/lib/orderly/useMaxQty.js.map +1 -1
  191. package/lib/orderly/useOrderEntry.d.ts.map +1 -1
  192. package/lib/orderly/useOrderEntry.js +14 -12
  193. package/lib/orderly/useOrderEntry.js.map +1 -1
  194. package/lib/orderly/useOrderEntryNext/index.d.ts +1 -0
  195. package/lib/orderly/useOrderEntryNext/index.d.ts.map +1 -0
  196. package/lib/orderly/useOrderEntryNext/index.js +3 -0
  197. package/lib/orderly/useOrderEntryNext/index.js.map +1 -0
  198. package/lib/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +19 -12
  199. package/lib/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
  200. package/lib/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +89 -25
  201. package/lib/orderly/useOrderStream/useOrderStream.js.map +1 -0
  202. package/lib/orderly/useOrderbookStream.d.ts.map +1 -1
  203. package/lib/orderly/useOrderbookStream.js +12 -5
  204. package/lib/orderly/useOrderbookStream.js.map +1 -1
  205. package/lib/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
  206. package/lib/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
  207. package/lib/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
  208. package/lib/orderly/usePositionStream/usePositionStream.js.map +1 -0
  209. package/lib/orderly/usePositionStream/utils.d.ts +8 -0
  210. package/lib/orderly/usePositionStream/utils.d.ts.map +1 -0
  211. package/lib/orderly/usePositionStream/utils.js +55 -0
  212. package/lib/orderly/usePositionStream/utils.js.map +1 -0
  213. package/lib/orderly/usePrivateDataObserver.d.ts.map +1 -1
  214. package/lib/orderly/usePrivateDataObserver.js +28 -41
  215. package/lib/orderly/usePrivateDataObserver.js.map +1 -1
  216. package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
  217. package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
  218. package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
  219. package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
  220. package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts +32 -0
  221. package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
  222. package/lib/orderly/useTakeProfitAndStopLoss/index.js +33 -0
  223. package/lib/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
  224. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +59 -0
  225. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
  226. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js +218 -0
  227. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
  228. package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
  229. package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
  230. package/lib/orderly/useTakeProfitAndStopLoss/utils.js +252 -0
  231. package/lib/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
  232. package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
  233. package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
  234. package/lib/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
  235. package/lib/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
  236. package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
  237. package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
  238. package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
  239. package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
  240. package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
  241. package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
  242. package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
  243. package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
  244. package/lib/services/orderCreator/baseAlgoCreator.d.ts +22 -0
  245. package/lib/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
  246. package/lib/services/orderCreator/baseAlgoCreator.js +67 -0
  247. package/lib/services/orderCreator/baseAlgoCreator.js.map +1 -0
  248. package/lib/services/orderCreator/baseCreator.d.ts +14 -0
  249. package/lib/services/orderCreator/baseCreator.d.ts.map +1 -0
  250. package/lib/services/orderCreator/baseCreator.js +102 -0
  251. package/lib/services/orderCreator/baseCreator.js.map +1 -0
  252. package/lib/services/orderCreator/factory.d.ts +7 -0
  253. package/lib/services/orderCreator/factory.d.ts.map +1 -0
  254. package/lib/services/orderCreator/factory.js +54 -0
  255. package/lib/services/orderCreator/factory.js.map +1 -0
  256. package/lib/services/orderCreator/fokCreator.d.ts +4 -0
  257. package/lib/services/orderCreator/fokCreator.d.ts.map +1 -0
  258. package/lib/services/orderCreator/fokCreator.js +15 -0
  259. package/lib/services/orderCreator/fokCreator.js.map +1 -0
  260. package/lib/services/orderCreator/generalCreator.d.ts +8 -0
  261. package/lib/services/orderCreator/generalCreator.d.ts.map +1 -0
  262. package/lib/services/orderCreator/generalCreator.js +25 -0
  263. package/lib/services/orderCreator/generalCreator.js.map +1 -0
  264. package/lib/services/orderCreator/interface.d.ts +23 -0
  265. package/lib/services/orderCreator/interface.d.ts.map +1 -0
  266. package/lib/services/orderCreator/interface.js +6 -0
  267. package/lib/services/orderCreator/interface.js.map +1 -0
  268. package/lib/services/orderCreator/iocCreator.d.ts +4 -0
  269. package/lib/services/orderCreator/iocCreator.d.ts.map +1 -0
  270. package/lib/services/orderCreator/iocCreator.js +15 -0
  271. package/lib/services/orderCreator/iocCreator.js.map +1 -0
  272. package/lib/services/orderCreator/limitOrderCreator.d.ts +8 -0
  273. package/lib/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
  274. package/lib/services/orderCreator/limitOrderCreator.js +79 -0
  275. package/lib/services/orderCreator/limitOrderCreator.js.map +1 -0
  276. package/lib/services/orderCreator/marketOrderCreator.d.ts +24 -0
  277. package/lib/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
  278. package/lib/services/orderCreator/marketOrderCreator.js +28 -0
  279. package/lib/services/orderCreator/marketOrderCreator.js.map +1 -0
  280. package/lib/services/orderCreator/postOnlyCreator.d.ts +4 -0
  281. package/lib/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
  282. package/lib/services/orderCreator/postOnlyCreator.js +15 -0
  283. package/lib/services/orderCreator/postOnlyCreator.js.map +1 -0
  284. package/lib/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
  285. package/lib/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
  286. package/lib/services/orderCreator/stopLimitOrderCreator.js +93 -0
  287. package/lib/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
  288. package/lib/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
  289. package/lib/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
  290. package/lib/services/orderCreator/stopMarketOrderCreator.js +56 -0
  291. package/lib/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
  292. package/lib/services/orderCreator/tpslOrderCreator.d.ts +32 -0
  293. package/lib/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
  294. package/lib/services/orderCreator/tpslOrderCreator.js +94 -0
  295. package/lib/services/orderCreator/tpslOrderCreator.js.map +1 -0
  296. package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
  297. package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
  298. package/lib/services/orderCreator/tpslPositionOrderCreator.js +83 -0
  299. package/lib/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
  300. package/lib/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
  301. package/lib/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
  302. package/lib/services/orderMerge/algoOrderMergeHandler.js +48 -0
  303. package/lib/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
  304. package/lib/services/orderMerge/baseMergeHandler.d.ts +22 -0
  305. package/lib/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
  306. package/lib/services/orderMerge/baseMergeHandler.js +170 -0
  307. package/lib/services/orderMerge/baseMergeHandler.js.map +1 -0
  308. package/lib/services/orderMerge/interface.d.ts +8 -0
  309. package/lib/services/orderMerge/interface.d.ts.map +1 -0
  310. package/lib/services/orderMerge/interface.js +6 -0
  311. package/lib/services/orderMerge/interface.js.map +1 -0
  312. package/lib/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
  313. package/lib/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
  314. package/lib/services/orderMerge/regularOrderMergeHandler.js +25 -0
  315. package/lib/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
  316. package/lib/usePoster.d.ts +3 -0
  317. package/lib/usePoster.d.ts.map +1 -1
  318. package/lib/usePoster.js +3 -1
  319. package/lib/usePoster.js.map +1 -1
  320. package/lib/utils/createOrder.d.ts +0 -55
  321. package/lib/utils/createOrder.d.ts.map +1 -1
  322. package/lib/utils/createOrder.js +3 -375
  323. package/lib/utils/createOrder.js.map +1 -1
  324. package/lib/utils/fokCreator.d.ts +1 -0
  325. package/lib/utils/fokCreator.d.ts.map +1 -0
  326. package/lib/utils/fokCreator.js +3 -0
  327. package/lib/utils/fokCreator.js.map +1 -0
  328. package/lib/utils/index.d.ts +5 -0
  329. package/lib/utils/index.d.ts.map +1 -0
  330. package/lib/utils/index.js +36 -0
  331. package/lib/utils/index.js.map +1 -0
  332. package/lib/utils/order.d.ts +2 -0
  333. package/lib/utils/order.d.ts.map +1 -0
  334. package/lib/utils/order.js +6 -0
  335. package/lib/utils/order.js.map +1 -0
  336. package/lib/utils/swr.d.ts +3 -1
  337. package/lib/utils/swr.d.ts.map +1 -1
  338. package/lib/utils/swr.js +128 -89
  339. package/lib/utils/swr.js.map +1 -1
  340. package/lib/utils/ws.d.ts +2 -0
  341. package/lib/utils/ws.d.ts.map +1 -0
  342. package/lib/utils/ws.js +19 -0
  343. package/lib/utils/ws.js.map +1 -0
  344. package/lib/version.d.ts +1 -1
  345. package/lib/version.js +2 -2
  346. package/lib/version.js.map +1 -1
  347. package/package.json +10 -8
  348. package/esm/orderly/useOrderStream.d.ts.map +0 -1
  349. package/esm/orderly/useOrderStream.js.map +0 -1
  350. package/esm/orderly/usePositionStream.d.ts.map +0 -1
  351. package/esm/orderly/usePositionStream.js.map +0 -1
  352. package/lib/orderly/useOrderStream.d.ts.map +0 -1
  353. package/lib/orderly/useOrderStream.js.map +0 -1
  354. package/lib/orderly/usePositionStream.d.ts.map +0 -1
  355. package/lib/orderly/usePositionStream.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,eAAO,MAAM,sBAAsB;uBAEd,MAAM,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;UA4K1D,CAAC"}
1
+ {"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMjD,eAAO,MAAM,sBAAsB;uBAEd,MAAM,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;UAgK1D,CAAC"}
@@ -15,35 +15,31 @@ const _useAccount = require("../useAccount");
15
15
  const _infinite = require("swr/infinite");
16
16
  const _useEventEmitter = require("../useEventEmitter");
17
17
  const _swr1 = require("../utils/swr");
18
+ const _algoOrderMergeHandler = require("../services/orderMerge/algoOrderMergeHandler");
19
+ const _ws = require("../utils/ws");
18
20
  const usePrivateDataObserver = (options)=>{
19
21
  const ws = (0, _useWS.useWS)();
20
22
  // const { mutate } = useSWRConfig();
21
23
  const ee = (0, _useEventEmitter.useEventEmitter)();
22
24
  const { state } = (0, _useAccount.useAccount)();
23
25
  // TODO: remove this when the WS service provides the correct data
24
- const algoOrderCacheQuneue = (0, _react.useRef)([]);
26
+ // const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);
25
27
  const updateOrders = (data, isAlgoOrder)=>{
26
- const map = options.getKeysMap("orders");
27
- // console.log("$$$$$$$$$$$$", data, algoOrderCacheQuneue.current);
28
- if (isAlgoOrder) {
29
- /// TODO: remove this when the WS service provides the correct data
30
- if (algoOrderCacheQuneue.current.length) {
31
- const index = algoOrderCacheQuneue.current.findIndex((item)=>item.order_id === data.algoOrderId);
32
- if (index > -1) {
33
- data = {
34
- ...data,
35
- ...algoOrderCacheQuneue.current[index]
36
- };
37
- algoOrderCacheQuneue.current.splice(index, 1);
38
- }
39
- }
40
- }
41
- map.forEach((getKey, key)=>{
28
+ const keysMap = options.getKeysMap("orders");
29
+ keysMap.forEach((getKey, key)=>{
42
30
  (0, _swr.mutate)((0, _infinite.unstable_serialize)((index, prevData)=>[
43
31
  getKey(index, prevData),
44
32
  state.accountId
45
33
  ]), (prevData)=>{
46
- return (0, _swr1.updateOrdersHandler)(key, data, prevData);
34
+ try {
35
+ if (isAlgoOrder) {
36
+ const result = (0, _swr1.updateAlgoOrdersHandler)(key, data, prevData);
37
+ return result;
38
+ }
39
+ return (0, _swr1.updateOrdersHandler)(key, data, prevData);
40
+ } catch (error) {
41
+ return prevData;
42
+ }
47
43
  }, {
48
44
  revalidate: false
49
45
  });
@@ -53,9 +49,10 @@ const usePrivateDataObserver = (options)=>{
53
49
  // ...data,
54
50
  // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,
55
51
  // });
52
+ const formattedData = isAlgoOrder ? _algoOrderMergeHandler.AlgoOrderMergeHandler.groupOrders(data) : (0, _ws.object2underscore)(data);
56
53
  ee.emit("orders:changed", {
57
- ...data,
58
- status: data.status || data.algoStatus
54
+ ...formattedData,
55
+ status: isAlgoOrder ? formattedData.algo_status : data.status
59
56
  });
60
57
  };
61
58
  // orders
@@ -75,17 +72,7 @@ const usePrivateDataObserver = (options)=>{
75
72
  if (!state.accountId) return;
76
73
  const unsubscribe = ws.privateSubscribe("algoexecutionreport", {
77
74
  onMessage: (data)=>{
78
- setTimeout(()=>{
79
- if (Array.isArray(data)) {
80
- data.forEach((item)=>{
81
- updateOrders(item, true);
82
- // ee.emit("orders:changed", { ...item, status: item.algoStatus });
83
- });
84
- } else {
85
- updateOrders(data, true);
86
- // ee.emit("orders:changed", { ...data, status: data.algoStatus });
87
- }
88
- }, 100);
75
+ updateOrders(data, true);
89
76
  }
90
77
  });
91
78
  return ()=>unsubscribe?.();
@@ -148,16 +135,16 @@ const usePrivateDataObserver = (options)=>{
148
135
  }, [
149
136
  state.accountId
150
137
  ]);
151
- // cache algo orders
152
- (0, _react.useEffect)(()=>{
153
- const handler = (data)=>{
154
- algoOrderCacheQuneue.current.push(data);
155
- };
156
- ee.on("algoOrder:cache", handler);
157
- return ()=>{
158
- ee.off("algoOrder:cache", handler);
159
- };
160
- }, []);
138
+ // cache algo orders
139
+ // useEffect(() => {
140
+ // const handler = (data: API.AlgoOrder) => {
141
+ // algoOrderCacheQuneue.current.push(data);
142
+ // };
143
+ // ee.on("algoOrder:cache", handler);
144
+ // return () => {
145
+ // ee.off("algoOrder:cache", handler);
146
+ // };
147
+ // }, []);
161
148
  };
162
149
 
163
150
  //# sourceMappingURL=usePrivateDataObserver.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/orderly/usePrivateDataObserver.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage, API } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { parseJSON } from \"../utils/json\";\nimport { updateOrdersHandler } from \"../utils/swr\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const updateOrders = (\n data: WSMessage.AlgoOrder | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const map = options.getKeysMap(\"orders\");\n\n // console.log(\"$$$$$$$$$$$$\", data, algoOrderCacheQuneue.current);\n\n if (isAlgoOrder) {\n /// TODO: remove this when the WS service provides the correct data\n if (algoOrderCacheQuneue.current.length) {\n const index = algoOrderCacheQuneue.current.findIndex(\n (item: any) =>\n item.order_id === (data as WSMessage.AlgoOrder).algoOrderId\n );\n\n if (index > -1) {\n data = {\n ...data,\n ...algoOrderCacheQuneue.current[index],\n };\n algoOrderCacheQuneue.current.splice(index, 1);\n }\n }\n }\n\n map.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n return updateOrdersHandler(key, data, prevData);\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n ee.emit(\"orders:changed\", {\n ...data,\n status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n setTimeout(() => {\n if (Array.isArray(data)) {\n data.forEach((item) => {\n updateOrders(item, true);\n\n // ee.emit(\"orders:changed\", { ...item, status: item.algoStatus });\n });\n } else {\n updateOrders(data, true);\n // ee.emit(\"orders:changed\", { ...data, status: data.algoStatus });\n }\n }, 100);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // console.log(\"ws----- positions data-----\", data);\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n return {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const item = nextPostions.find(\n (item) => item.symbol === row.symbol\n );\n if (item) {\n return {\n symbol: item.symbol,\n position_qty: item.positionQty,\n cost_position: item.costPosition,\n last_sum_unitary_funding: item.lastSumUnitaryFunding,\n pending_long_qty: item.pendingLongQty,\n pending_short_qty: item.pendingShortQty,\n settle_price: item.settlePrice,\n average_open_price: item.averageOpenPrice,\n unsettled_pnl: item.unsettledPnl,\n mark_price: item.markPrice,\n est_liq_price: item.estLiqPrice,\n timestamp: Date.now(),\n imr: item.imr,\n mmr: item.mmr,\n IMR_withdraw_orders: item.imrwithOrders,\n MMR_with_orders: item.mmrwithOrders,\n pnl_24_h: item.pnl24H,\n fee_24_h: item.fee24H,\n };\n }\n\n return row;\n }),\n };\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n\n // cache algo orders\n useEffect(() => {\n const handler = (data: API.AlgoOrder) => {\n algoOrderCacheQuneue.current.push(data);\n };\n\n ee.on(\"algoOrder:cache\", handler);\n\n return () => {\n ee.off(\"algoOrder:cache\", handler);\n };\n }, []);\n};\n"],"names":["usePrivateDataObserver","options","ws","useWS","ee","useEventEmitter","state","useAccount","algoOrderCacheQuneue","useRef","updateOrders","data","isAlgoOrder","map","getKeysMap","current","length","index","findIndex","item","order_id","algoOrderId","splice","forEach","getKey","key","mutate","unstable_serialize","prevData","accountId","updateOrdersHandler","revalidate","emit","status","algoStatus","useEffect","unsubscribe","privateSubscribe","onMessage","setTimeout","Array","isArray","positions","nextPostions","prevPositions","rows","row","find","symbol","position_qty","positionQty","cost_position","costPosition","last_sum_unitary_funding","lastSumUnitaryFunding","pending_long_qty","pendingLongQty","pending_short_qty","pendingShortQty","settle_price","settlePrice","average_open_price","averageOpenPrice","unsettled_pnl","unsettledPnl","mark_price","markPrice","est_liq_price","estLiqPrice","timestamp","Date","now","imr","mmr","IMR_withdraw_orders","imrwithOrders","MMR_with_orders","mmrwithOrders","pnl_24_h","pnl24H","fee_24_h","fee24H","handler","push","on","off"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/orderly/usePrivateDataObserver.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage, API } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { parseJSON } from \"../utils/json\";\nimport { updateOrdersHandler, updateAlgoOrdersHandler } from \"../utils/swr\";\nimport { AlgoOrderMergeHandler } from \"../services/orderMerge/algoOrderMergeHandler\";\nimport { object2underscore } from \"../utils/ws\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n // const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const updateOrders = (\n data: WSMessage.AlgoOrder[] | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const keysMap = options.getKeysMap(\"orders\");\n\n keysMap.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n try {\n if (isAlgoOrder) {\n const result = updateAlgoOrdersHandler(\n key,\n data as WSMessage.AlgoOrder[],\n prevData!\n );\n\n return result;\n }\n return updateOrdersHandler(key, data as WSMessage.Order, prevData);\n } catch (error) {\n return prevData;\n }\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n const formattedData = isAlgoOrder\n ? AlgoOrderMergeHandler.groupOrders(data as WSMessage.AlgoOrder[])\n : object2underscore(data);\n\n ee.emit(\"orders:changed\", {\n ...formattedData,\n status: isAlgoOrder\n ? formattedData.algo_status\n : (data as WSMessage.Order).status,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, true);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // console.log(\"ws----- positions data-----\", data);\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n return {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const item = nextPostions.find(\n (item) => item.symbol === row.symbol\n );\n if (item) {\n return {\n symbol: item.symbol,\n position_qty: item.positionQty,\n cost_position: item.costPosition,\n last_sum_unitary_funding: item.lastSumUnitaryFunding,\n pending_long_qty: item.pendingLongQty,\n pending_short_qty: item.pendingShortQty,\n settle_price: item.settlePrice,\n average_open_price: item.averageOpenPrice,\n unsettled_pnl: item.unsettledPnl,\n mark_price: item.markPrice,\n est_liq_price: item.estLiqPrice,\n timestamp: Date.now(),\n imr: item.imr,\n mmr: item.mmr,\n IMR_withdraw_orders: item.imrwithOrders,\n MMR_with_orders: item.mmrwithOrders,\n pnl_24_h: item.pnl24H,\n fee_24_h: item.fee24H,\n };\n }\n\n return row;\n }),\n };\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n\n // cache algo orders\n // useEffect(() => {\n // const handler = (data: API.AlgoOrder) => {\n // algoOrderCacheQuneue.current.push(data);\n // };\n\n // ee.on(\"algoOrder:cache\", handler);\n\n // return () => {\n // ee.off(\"algoOrder:cache\", handler);\n // };\n // }, []);\n};\n"],"names":["usePrivateDataObserver","options","ws","useWS","ee","useEventEmitter","state","useAccount","updateOrders","data","isAlgoOrder","keysMap","getKeysMap","forEach","getKey","key","mutate","unstable_serialize","index","prevData","accountId","result","updateAlgoOrdersHandler","updateOrdersHandler","error","revalidate","formattedData","AlgoOrderMergeHandler","groupOrders","object2underscore","emit","status","algo_status","useEffect","unsubscribe","privateSubscribe","onMessage","positions","nextPostions","prevPositions","rows","map","row","item","find","symbol","position_qty","positionQty","cost_position","costPosition","last_sum_unitary_funding","lastSumUnitaryFunding","pending_long_qty","pendingLongQty","pending_short_qty","pendingShortQty","settle_price","settlePrice","average_open_price","averageOpenPrice","unsettled_pnl","unsettledPnl","mark_price","markPrice","est_liq_price","estLiqPrice","timestamp","Date","now","imr","mmr","IMR_withdraw_orders","imrwithOrders","MMR_with_orders","mmrwithOrders","pnl_24_h","pnl24H","fee_24_h","fee24H"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAcaA;;;eAAAA;;;uBAdqB;uBACZ;qBACC;4BAEI;0BACQ;iCAEH;sBAG6B;uCACvB;oBACJ;AAE3B,MAAMA,yBAAyB,CAACC;IAIrC,MAAMC,KAAKC,IAAAA,YAAK;IAChB,qCAAqC;IACrC,MAAMC,KAAKC,IAAAA,gCAAe;IAC1B,MAAM,EAAEC,KAAK,EAAE,GAAGC,IAAAA,sBAAU;IAE5B,kEAAkE;IAClE,4DAA4D;IAE5D,MAAMC,eAAe,CACnBC,MACAC;QAEA,MAAMC,UAAUV,QAAQW,UAAU,CAAC;QAEnCD,QAAQE,OAAO,CAAC,CAACC,QAAQC;YACvBC,IAAAA,WAAM,EACJC,IAAAA,4BAAkB,EAAC,CAACC,OAAOC,WAAa;oBACtCL,OAAOI,OAAOC;oBACdb,MAAMc,SAAS;iBAChB,GACD,CAACD;gBACC,IAAI;oBACF,IAAIT,aAAa;wBACf,MAAMW,SAASC,IAAAA,6BAAuB,EACpCP,KACAN,MACAU;wBAGF,OAAOE;oBACT;oBACA,OAAOE,IAAAA,yBAAmB,EAACR,KAAKN,MAAyBU;gBAC3D,EAAE,OAAOK,OAAO;oBACd,OAAOL;gBACT;YACF,GACA;gBACEM,YAAY;YACd;QAEJ;QAEA,gBAAgB;QAChB,8BAA8B;QAC9B,aAAa;QACb,qEAAqE;QACrE,MAAM;QAEN,MAAMC,gBAAgBhB,cAClBiB,4CAAqB,CAACC,WAAW,CAACnB,QAClCoB,IAAAA,qBAAiB,EAACpB;QAEtBL,GAAG0B,IAAI,CAAC,kBAAkB;YACxB,GAAGJ,aAAa;YAChBK,QAAQrB,cACJgB,cAAcM,WAAW,GACzB,AAACvB,KAAyBsB,MAAM;QACtC;IACF;IAEA,SAAS;IACTE,IAAAA,gBAAS,EAAC;QACR,IAAI,CAAC3B,MAAMc,SAAS,EAAE;QACtB,MAAMc,cAAchC,GAAGiC,gBAAgB,CAAC,mBAAmB;YACzDC,WAAW,CAAC3B;gBACVD,aAAaC,MAAM;YACrB;QACF;QAEA,OAAO,IAAMyB;IACf,GAAG;QAAC5B,MAAMc,SAAS;KAAC;IAEpB,cAAc;IACda,IAAAA,gBAAS,EAAC;QACR,IAAI,CAAC3B,MAAMc,SAAS,EAAE;QACtB,MAAMc,cAAchC,GAAGiC,gBAAgB,CAAC,uBAAuB;YAC7DC,WAAW,CAAC3B;gBACVD,aAAaC,MAAM;YACrB;QACF;QAEA,OAAO,IAAMyB;IACf,GAAG;QAAC5B,MAAMc,SAAS;KAAC;IAEpB,YAAY;IACZa,IAAAA,gBAAS,EAAC;QACR,IAAI,CAAC3B,MAAMc,SAAS,EAAE;QACtB,MAAML,MAAM;YAAC;YAAiBT,MAAMc,SAAS;SAAC;QAC9C,MAAMc,cAAchC,GAAGiC,gBAAgB,CAAC,YAAY;YAClDC,WAAW,CAAC3B;gBACV,MAAM,EAAE4B,WAAWC,YAAY,EAAE,GAAG7B;gBAEpC,oDAAoD;gBAEpD,qBAAqB;gBAErBO,IAAAA,WAAM,EACJD,KACA,CAACwB;oBACC,uBAAuB;oBACvB,IAAI,CAAC,CAACA,eAAe;wBACnB,OAAO;4BACL,GAAGA,aAAa;4BAChBC,MAAMD,cAAcC,IAAI,CAACC,GAAG,CAAC,CAACC;gCAC5B,MAAMC,OAAOL,aAAaM,IAAI,CAC5B,CAACD,OAASA,KAAKE,MAAM,KAAKH,IAAIG,MAAM;gCAEtC,IAAIF,MAAM;oCACR,OAAO;wCACLE,QAAQF,KAAKE,MAAM;wCACnBC,cAAcH,KAAKI,WAAW;wCAC9BC,eAAeL,KAAKM,YAAY;wCAChCC,0BAA0BP,KAAKQ,qBAAqB;wCACpDC,kBAAkBT,KAAKU,cAAc;wCACrCC,mBAAmBX,KAAKY,eAAe;wCACvCC,cAAcb,KAAKc,WAAW;wCAC9BC,oBAAoBf,KAAKgB,gBAAgB;wCACzCC,eAAejB,KAAKkB,YAAY;wCAChCC,YAAYnB,KAAKoB,SAAS;wCAC1BC,eAAerB,KAAKsB,WAAW;wCAC/BC,WAAWC,KAAKC,GAAG;wCACnBC,KAAK1B,KAAK0B,GAAG;wCACbC,KAAK3B,KAAK2B,GAAG;wCACbC,qBAAqB5B,KAAK6B,aAAa;wCACvCC,iBAAiB9B,KAAK+B,aAAa;wCACnCC,UAAUhC,KAAKiC,MAAM;wCACrBC,UAAUlC,KAAKmC,MAAM;oCACvB;gCACF;gCAEA,OAAOpC;4BACT;wBACF;oBACF;gBACF,GACA;oBACEjB,YAAY;gBACd;YAEJ;QACF;QACA,OAAO;YACLS;QACF;IACF,GAAG;QAAC5B,MAAMc,SAAS;KAAC;AAEpB,oBAAoB;AACpB,oBAAoB;AACpB,+CAA+C;AAC/C,+CAA+C;AAC/C,OAAO;AAEP,uCAAuC;AAEvC,mBAAmB;AACnB,0CAA0C;AAC1C,OAAO;AACP,UAAU;AACZ"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=useTakeProfitAndStopLoss.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTakeProfitAndStopLoss.test.d.ts","sourceRoot":"","sources":["../../../../src/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../src/orderly/useTakeProfitAndStopLoss/__test__/utils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { API, AlgoOrderEntity } from "@orderly.network/types";
2
+ export declare const useStopOrder: (position: Partial<API.PositionTPSLExt> & Pick<API.PositionTPSLExt, "symbol" | "average_open_price" | "position_qty">, options?: {
3
+ /**
4
+ * You can set the default value for the take profit and stop loss order,
5
+ * it is usually used when editing order
6
+ */
7
+ defaultOrder?: API.AlgoOrder;
8
+ }) => [Partial<import("@orderly.network/types").Optional<import("@orderly.network/types").BaseAlgoOrderEntity<import("@orderly.network/types").AlgoOrderRootType.TP_SL & {
9
+ tp_pnl: number;
10
+ tp_offset: number;
11
+ tp_offset_percentage: number;
12
+ sl_pnl: number;
13
+ sl_offset: number;
14
+ sl_offset_percentage: number;
15
+ }>, "type" | "side" | "order_type" | "trigger_price">>, {
16
+ setValue: (key: string, value: string | number) => void;
17
+ setValues: (values: Partial<Partial<import("@orderly.network/types").Optional<import("@orderly.network/types").BaseAlgoOrderEntity<import("@orderly.network/types").AlgoOrderRootType.TP_SL & {
18
+ tp_pnl: number;
19
+ tp_offset: number;
20
+ tp_offset_percentage: number;
21
+ sl_pnl: number;
22
+ sl_offset: number;
23
+ sl_offset_percentage: number;
24
+ }>, "type" | "side" | "order_type" | "trigger_price">>>) => void;
25
+ submit: () => Promise<void>;
26
+ create: () => Promise<void>;
27
+ update: (orderId: number) => Promise<any>;
28
+ errors: import("./useTPSL").ValidateError | null;
29
+ validate: () => Promise<AlgoOrderEntity<import("@orderly.network/types").AlgoOrderRootType.TP_SL | import("@orderly.network/types").AlgoOrderRootType.POSITIONAL_TP_SL>>;
30
+ }];
31
+ export type { ComputedAlgoOrder } from "./useTPSL";
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orderly/useTakeProfitAndStopLoss/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAY,MAAM,wBAAwB,CAAC;AAIxE,eAAO,MAAM,YAAY,aAIb,QAAQ,IAAI,eAAe,CAAC,GACpC,KAAK,IAAI,eAAe,EAAE,QAAQ,GAAG,oBAAoB,GAAG,cAAc,CAAC,YACnE;IACR;;;OAGG;IACH,YAAY,CAAC,EAAE,IAAI,SAAS,CAAC;CAC9B;;;;;;;;;;;;;;;;;;;;;;EAuBF,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useStopOrder", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return useStopOrder;
9
+ }
10
+ });
11
+ const _types = require("@orderly.network/types");
12
+ const _useTPSL = require("./useTPSL");
13
+ const useStopOrder = (/**
14
+ * Position that needs to set take profit and stop loss
15
+ */ position, options)=>{
16
+ if (!position) {
17
+ throw new _types.SDKError("Position is required");
18
+ }
19
+ if (!position.symbol) {
20
+ throw new _types.SDKError("Symbol is required");
21
+ }
22
+ if (typeof position.average_open_price === "undefined") {
23
+ throw new _types.SDKError("Average open price is required");
24
+ }
25
+ if (typeof position.position_qty === "undefined") {
26
+ throw new _types.SDKError("Position quantity is required");
27
+ }
28
+ // const { data: markPrice } = useMarkPrice(position.symbol);
29
+ const result = (0, _useTPSL.useTaskProfitAndStopLossInternal)(position, options);
30
+ return result;
31
+ };
32
+
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/index.ts"],"sourcesContent":["import { API, AlgoOrderEntity, SDKError } from \"@orderly.network/types\";\nimport { useTaskProfitAndStopLossInternal } from \"./useTPSL\";\nimport { useMarkPrice } from \"../useMarkPrice\";\n\nexport const useStopOrder = (\n /**\n * Position that needs to set take profit and stop loss\n */\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n /**\n * You can set the default value for the take profit and stop loss order,\n * it is usually used when editing order\n */\n defaultOrder?: API.AlgoOrder;\n }\n): ReturnType<typeof useTaskProfitAndStopLossInternal> => {\n if (!position) {\n throw new SDKError(\"Position is required\");\n }\n\n if (!position.symbol) {\n throw new SDKError(\"Symbol is required\");\n }\n\n if (typeof position.average_open_price === \"undefined\") {\n throw new SDKError(\"Average open price is required\");\n }\n\n if (typeof position.position_qty === \"undefined\") {\n throw new SDKError(\"Position quantity is required\");\n }\n\n // const { data: markPrice } = useMarkPrice(position.symbol);\n\n const result = useTaskProfitAndStopLossInternal(position, options);\n\n return result;\n};\n\nexport type { ComputedAlgoOrder } from \"./useTPSL\";\n"],"names":["useStopOrder","position","options","SDKError","symbol","average_open_price","position_qty","result","useTaskProfitAndStopLossInternal"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAIaA;;;eAAAA;;;uBAJkC;yBACE;AAG1C,MAAMA,eAAe,CAC1B;;GAEC,GACDC,UAEAC;IAQA,IAAI,CAACD,UAAU;QACb,MAAM,IAAIE,eAAQ,CAAC;IACrB;IAEA,IAAI,CAACF,SAASG,MAAM,EAAE;QACpB,MAAM,IAAID,eAAQ,CAAC;IACrB;IAEA,IAAI,OAAOF,SAASI,kBAAkB,KAAK,aAAa;QACtD,MAAM,IAAIF,eAAQ,CAAC;IACrB;IAEA,IAAI,OAAOF,SAASK,YAAY,KAAK,aAAa;QAChD,MAAM,IAAIH,eAAQ,CAAC;IACrB;IAEA,6DAA6D;IAE7D,MAAMI,SAASC,IAAAA,yCAAgC,EAACP,UAAUC;IAE1D,OAAOK;AACT"}
@@ -0,0 +1,59 @@
1
+ import { API, AlgoOrderEntity } from "@orderly.network/types";
2
+ import { AlgoOrderRootType } from "@orderly.network/types";
3
+ export type ComputedAlgoOrder = Partial<AlgoOrderEntity<AlgoOrderRootType.TP_SL & {
4
+ /**
5
+ * Computed take profit
6
+ */
7
+ tp_pnl: number;
8
+ tp_offset: number;
9
+ tp_offset_percentage: number;
10
+ /**
11
+ * Computed stop loss
12
+ */
13
+ sl_pnl: number;
14
+ sl_offset: number;
15
+ sl_offset_percentage: number;
16
+ }>>;
17
+ export type ValidateError = {
18
+ [P in keyof ComputedAlgoOrder]?: {
19
+ type: string;
20
+ message: string;
21
+ };
22
+ };
23
+ /**
24
+ * @hidden
25
+ */
26
+ export declare const useTaskProfitAndStopLossInternal: (position: Partial<API.PositionTPSLExt> & Pick<API.PositionTPSLExt, "symbol" | "average_open_price" | "position_qty">, options?: {
27
+ defaultOrder?: API.AlgoOrder;
28
+ }) => [Partial<import("@orderly.network/types").Optional<import("@orderly.network/types").BaseAlgoOrderEntity<AlgoOrderRootType.TP_SL & {
29
+ /**
30
+ * Computed take profit
31
+ */
32
+ tp_pnl: number;
33
+ tp_offset: number;
34
+ tp_offset_percentage: number;
35
+ /**
36
+ * Computed stop loss
37
+ */
38
+ sl_pnl: number;
39
+ sl_offset: number;
40
+ sl_offset_percentage: number;
41
+ }>, "type" | "side" | "order_type" | "trigger_price">>, {
42
+ /**
43
+ * Update the take profit and stop loss order, this will merge the new data with the old one
44
+ */
45
+ setValue: (key: string, value: number | string) => void;
46
+ setValues: (values: Partial<ComputedAlgoOrder>) => void;
47
+ /**
48
+ * Submit the take profit and stop loss order
49
+ */
50
+ submit: () => Promise<void>;
51
+ /**
52
+ * Create the take profit and stop loss order, auto-detect the order type
53
+ */
54
+ create: () => Promise<void>;
55
+ update: (orderId: number) => Promise<any>;
56
+ errors: ValidateError | null;
57
+ validate: () => Promise<AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL>>;
58
+ }];
59
+ //# sourceMappingURL=useTPSL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTPSL.d.ts","sourceRoot":"","sources":["../../../src/orderly/useTakeProfitAndStopLoss/useTPSL.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,GAAG,EACH,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAO3D,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,eAAe,CACb,iBAAiB,CAAC,KAAK,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CACF,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,MAAM,iBAAiB,CAAC,CAAC,EAAE;QAC/B,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB;CACF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gCAAgC,aACjC,QAAQ,IAAI,eAAe,CAAC,GACpC,KAAK,IAAI,eAAe,EAAE,QAAQ,GAAG,oBAAoB,GAAG,cAAc,CAAC,YACnE;IACR,YAAY,CAAC,EAAE,IAAI,SAAS,CAAC;CAC9B;IAhCG;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;IAE5B;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;;IAwB9B;;OAEG;oBACa,MAAM,SAAS,MAAM,GAAG,MAAM,KAAK,IAAI;wBACnC,QAAQ,iBAAiB,CAAC,KAAK,IAAI;IAEvD;;OAEG;YACK,MAAM,QAAQ,IAAI,CAAC;IAC3B;;OAEG;YACK,MAAM,QAAQ,IAAI,CAAC;sBACT,MAAM,KAAK,QAAQ,GAAG,CAAC;YACjC,aAAa,GAAG,IAAI;cAClB,MAAM,QACd,gBACE,kBAAkB,gBAAgB,GAAG,kBAAkB,KAAK,CAC7D,CACF;EAgSJ,CAAC"}
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useTaskProfitAndStopLossInternal", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return useTaskProfitAndStopLossInternal;
9
+ }
10
+ });
11
+ const _react = require("react");
12
+ const _types = require("@orderly.network/types");
13
+ const _utils = require("./utils");
14
+ const _useMutation = require("../../useMutation");
15
+ const _factory = require("../../services/orderCreator/factory");
16
+ const _utils1 = require("../usePositionStream/utils");
17
+ const _useSymbolsInfo = require("../useSymbolsInfo");
18
+ const _useMarkPrice = require("../useMarkPrice");
19
+ const _ramda = require("ramda");
20
+ const useTaskProfitAndStopLossInternal = (position, options)=>{
21
+ const [order, setOrder] = (0, _react.useState)({
22
+ algo_order_id: options?.defaultOrder?.algo_order_id,
23
+ symbol: position.symbol,
24
+ side: Number(position.position_qty) > 0 ? _types.OrderSide.BUY : _types.OrderSide.SELL,
25
+ quantity: options?.defaultOrder?.quantity || Math.abs(position.position_qty),
26
+ algo_type: options?.defaultOrder?.algo_type
27
+ });
28
+ const symbolInfo = (0, _useSymbolsInfo.useSymbolsInfo)()[position.symbol]();
29
+ const { data: markPrice } = (0, _useMarkPrice.useMarkPrice)(order.symbol);
30
+ const [doCreateOrder] = (0, _useMutation.useMutation)("/v1/algo/order");
31
+ const [doUpdateOrder] = (0, _useMutation.useMutation)("/v1/algo/order", "PUT");
32
+ const [doDeleteOrder] = (0, _useMutation.useMutation)("/v1/algo/order", "DELETE");
33
+ const [errors, setErrors] = (0, _react.useState)(null);
34
+ (0, _react.useEffect)(()=>{
35
+ if (!options?.defaultOrder) return;
36
+ const trigger_prices = (0, _utils1.findTPSLFromOrder)(options.defaultOrder);
37
+ if (trigger_prices.tp_trigger_price) {
38
+ setOrderValue("tp_trigger_price", trigger_prices.tp_trigger_price, {
39
+ ignoreValidate: true
40
+ });
41
+ }
42
+ if (trigger_prices.sl_trigger_price) {
43
+ setOrderValue("sl_trigger_price", trigger_prices.sl_trigger_price, {
44
+ ignoreValidate: true
45
+ });
46
+ }
47
+ }, []);
48
+ const _setOrderValue = (key, value, options)=>{
49
+ ;
50
+ setOrder((prev)=>{
51
+ const side = position.position_qty > 0 ? _types.OrderSide.BUY : _types.OrderSide.SELL;
52
+ if (key === "sl_pnl") {
53
+ value = value ? `-${value}` : "";
54
+ }
55
+ const newValue = (0, _utils.calculateHelper)(key, {
56
+ key,
57
+ value,
58
+ entryPrice: position.average_open_price,
59
+ qty: side === _types.OrderSide.BUY ? Number(prev.quantity) : -Number(prev.quantity),
60
+ orderSide: side
61
+ }, {
62
+ symbol: symbolInfo
63
+ });
64
+ ;
65
+ return {
66
+ ...prev,
67
+ ...newValue,
68
+ ignoreValidate: options?.ignoreValidate
69
+ };
70
+ });
71
+ };
72
+ const setOrderValue = async (key, value, options)=>{
73
+ if (key === "quantity") {
74
+ setOrder((prev)=>({
75
+ ...prev,
76
+ quantity: value
77
+ }));
78
+ if (typeof order.sl_trigger_price !== "undefined") {
79
+ _setOrderValue("sl_trigger_price", order.sl_trigger_price, {
80
+ ignoreValidate: true
81
+ });
82
+ }
83
+ if (typeof order.tp_trigger_price !== "undefined") {
84
+ _setOrderValue("tp_trigger_price", order.tp_trigger_price, {
85
+ ignoreValidate: true
86
+ });
87
+ }
88
+ return;
89
+ }
90
+ _setOrderValue(key, value, options);
91
+ };
92
+ /**
93
+ * calculate value config
94
+ */ const valueConfig = {
95
+ symbol: symbolInfo,
96
+ maxQty: Math.abs(position.position_qty),
97
+ markPrice
98
+ };
99
+ // auto validate when order changed
100
+ (0, _react.useEffect)(()=>{
101
+ requestAnimationFrame(()=>{
102
+ if (order.ignoreValidate) return;
103
+ const orderCreator = getOrderCreator();
104
+ orderCreator.validate(order, valueConfig).then((errors)=>{
105
+ setErrors(errors);
106
+ });
107
+ });
108
+ }, [
109
+ order,
110
+ valueConfig.markPrice,
111
+ order.quantity
112
+ ]);
113
+ const setValues = (values)=>{
114
+ const keys = Object.keys(values);
115
+ keys.forEach((key)=>{
116
+ setOrderValue(key, values[key]);
117
+ });
118
+ };
119
+ const validate = ()=>{
120
+ const orderCreator = getOrderCreator();
121
+ return new Promise((resolve, reject)=>{
122
+ return orderCreator.validate(order, valueConfig).then((errors)=>{
123
+ ;
124
+ if (errors) {
125
+ setErrors(errors);
126
+ return reject(errors);
127
+ }
128
+ resolve(orderCreator.create(order, valueConfig));
129
+ });
130
+ });
131
+ };
132
+ (0, _react.useEffect)(()=>{
133
+ // setError(validate());
134
+ }, [
135
+ order
136
+ ]);
137
+ const compare = ()=>{
138
+ const quantityNum = Number(order.quantity);
139
+ if (isNaN(quantityNum)) return false;
140
+ return quantityNum === Math.abs(Number(position.position_qty));
141
+ };
142
+ const getOrderCreator = ()=>{
143
+ // if the order is existed, and the order type is POSITIONAL_TP_SL, always return POSITIONAL_TP_SL
144
+ // else use qty to determine the order type
145
+ if (options?.defaultOrder?.algo_type === _types.AlgoOrderRootType.TP_SL) {
146
+ return _factory.OrderFactory.create(_types.AlgoOrderRootType.TP_SL);
147
+ }
148
+ return _factory.OrderFactory.create(compare() ? _types.AlgoOrderRootType.POSITIONAL_TP_SL : _types.AlgoOrderRootType.TP_SL);
149
+ };
150
+ const submit = async ()=>{
151
+ const defaultOrder = options?.defaultOrder;
152
+ const orderId = defaultOrder?.algo_order_id;
153
+ const algoType = defaultOrder?.algo_type;
154
+ // if algo_order_id is not existed, create new order
155
+ if (!orderId) {
156
+ return createOrder();
157
+ }
158
+ // if algo_order_id is existed and algoType = POSITION_TP_SL
159
+ if (algoType === _types.AlgoOrderRootType.POSITIONAL_TP_SL) {
160
+ // if order.qty = position.qty, update order
161
+ if (compare()) {
162
+ return updateOrder(orderId);
163
+ }
164
+ // if order.qty != position.qty, create new tp/sl order
165
+ return createOrder();
166
+ }
167
+ // if algo_order_id is existed and algoType = TP_SL, delete order and create new order
168
+ return updateOrder(orderId);
169
+ };
170
+ const createOrder = ()=>{
171
+ const orderCreator = getOrderCreator();
172
+ const orderBody = orderCreator.create(order, valueConfig);
173
+ if (orderBody.child_orders.length === 0) {
174
+ throw new _types.SDKError("No child orders");
175
+ }
176
+ return doCreateOrder(orderBody);
177
+ };
178
+ const deleteOrder = (orderId, symbol)=>{
179
+ return doDeleteOrder(null, {
180
+ order_id: orderId,
181
+ symbol
182
+ });
183
+ };
184
+ const updateOrder = (orderId)=>{
185
+ const orderCreator = getOrderCreator();
186
+ const [updatedOrderEntity, orderEntity] = orderCreator.crateUpdateOrder(// @ts-ignore
187
+ order, options?.defaultOrder, valueConfig);
188
+ if (updatedOrderEntity.child_orders.length === 0) {
189
+ return Promise.resolve("Not any order needs to update");
190
+ }
191
+ const needDelete = orderEntity.child_orders.filter((order)=>typeof order.is_activated === "boolean" && !order.is_activated).length === 2;
192
+ if (needDelete) {
193
+ return deleteOrder(orderId, order.symbol);
194
+ }
195
+ return doUpdateOrder({
196
+ order_id: orderId,
197
+ ...updatedOrderEntity
198
+ });
199
+ };
200
+ return [
201
+ (0, _ramda.omit)([
202
+ "ignoreValidate"
203
+ ], order),
204
+ {
205
+ submit,
206
+ create: submit,
207
+ update: updateOrder,
208
+ setValue: setOrderValue,
209
+ setValues,
210
+ // createPositionTPSL: submit,
211
+ // createTPSL: submit,
212
+ validate,
213
+ errors
214
+ }
215
+ ];
216
+ };
217
+
218
+ //# sourceMappingURL=useTPSL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/useTPSL.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nimport {\n API,\n AlgoOrderEntity,\n OrderSide,\n SDKError,\n} from \"@orderly.network/types\";\nimport { UpdateOrderKey, calculateHelper } from \"./utils\";\nimport { useMutation } from \"../../useMutation\";\nimport { OrderFactory } from \"../../services/orderCreator/factory\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { TPSLPositionOrderCreator } from \"../../services/orderCreator/tpslPositionOrderCreator\";\nimport { findTPSLFromOrder } from \"../usePositionStream/utils\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPrice } from \"../useMarkPrice\";\nimport { omit } from \"ramda\";\n\nexport type ComputedAlgoOrder = Partial<\n AlgoOrderEntity<\n AlgoOrderRootType.TP_SL & {\n /**\n * Computed take profit\n */\n tp_pnl: number;\n tp_offset: number;\n tp_offset_percentage: number;\n\n /**\n * Computed stop loss\n */\n sl_pnl: number;\n sl_offset: number;\n sl_offset_percentage: number;\n }\n >\n>;\n\nexport type ValidateError = {\n [P in keyof ComputedAlgoOrder]?: {\n type: string;\n message: string;\n };\n};\n\n/**\n * @hidden\n */\nexport const useTaskProfitAndStopLossInternal = (\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n defaultOrder?: API.AlgoOrder;\n }\n): [\n ComputedAlgoOrder,\n {\n /**\n * Update the take profit and stop loss order, this will merge the new data with the old one\n */\n setValue: (key: string, value: number | string) => void;\n setValues: (values: Partial<ComputedAlgoOrder>) => void;\n // getOrderEntity: () => AlgoOrderEntity<AlgoOrderRootType.TP_SL|AlgoOrderRootType.POSITIONAL_TP_SL>;\n /**\n * Submit the take profit and stop loss order\n */\n submit: () => Promise<void>;\n /**\n * Create the take profit and stop loss order, auto-detect the order type\n */\n create: () => Promise<void>;\n update: (orderId: number) => Promise<any>;\n errors: ValidateError | null;\n validate: () => Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n >;\n }\n] => {\n const [order, setOrder] = useState<\n ComputedAlgoOrder & {\n ignoreValidate?: boolean;\n }\n >({\n algo_order_id: options?.defaultOrder?.algo_order_id,\n symbol: position.symbol as string,\n side: Number(position.position_qty) > 0 ? OrderSide.BUY : OrderSide.SELL,\n quantity:\n options?.defaultOrder?.quantity || Math.abs(position.position_qty),\n algo_type: options?.defaultOrder?.algo_type as AlgoOrderRootType,\n });\n\n const symbolInfo = useSymbolsInfo()[position.symbol!]();\n const { data: markPrice } = useMarkPrice(order.symbol!);\n\n const [doCreateOrder] = useMutation(\"/v1/algo/order\");\n const [doUpdateOrder] = useMutation(\"/v1/algo/order\", \"PUT\");\n const [doDeleteOrder] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [errors, setErrors] = useState<ValidateError | null>(null);\n\n useEffect(() => {\n if (!options?.defaultOrder) return;\n const trigger_prices = findTPSLFromOrder(options.defaultOrder!);\n if (trigger_prices.tp_trigger_price) {\n setOrderValue(\"tp_trigger_price\", trigger_prices.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n if (trigger_prices.sl_trigger_price) {\n setOrderValue(\"sl_trigger_price\", trigger_prices.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n }, []);\n\n const _setOrderValue = (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n console.log(\"[updateOrder:]\", key, value, order.quantity);\n\n setOrder((prev) => {\n const side = position.position_qty! > 0 ? OrderSide.BUY : OrderSide.SELL;\n\n if (key === \"sl_pnl\") {\n value = value ? `-${value}` : \"\";\n }\n\n const newValue = calculateHelper(\n key,\n {\n key,\n value,\n entryPrice: position.average_open_price!,\n qty:\n side === OrderSide.BUY\n ? Number(prev.quantity)!\n : -Number(prev.quantity)!,\n orderSide: side,\n },\n {\n symbol: symbolInfo,\n }\n );\n\n console.log(\"newValue::\", newValue);\n\n return {\n ...prev,\n ...newValue,\n ignoreValidate: options?.ignoreValidate,\n };\n });\n };\n\n const setOrderValue = async (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n if (key === \"quantity\") {\n setOrder((prev) => ({ ...prev, quantity: value }));\n\n if (typeof order.sl_trigger_price !== \"undefined\") {\n _setOrderValue(\"sl_trigger_price\", order.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n if (typeof order.tp_trigger_price !== \"undefined\") {\n _setOrderValue(\"tp_trigger_price\", order.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n return;\n }\n\n _setOrderValue(key, value, options);\n };\n\n /**\n * calculate value config\n */\n const valueConfig = {\n symbol: symbolInfo,\n maxQty: Math.abs(position.position_qty),\n markPrice,\n };\n\n // auto validate when order changed\n useEffect(() => {\n requestAnimationFrame(() => {\n if (order.ignoreValidate) return;\n const orderCreator = getOrderCreator();\n orderCreator\n .validate(order as AlgoOrderEntity, valueConfig)\n .then((errors) => {\n setErrors(errors);\n });\n });\n }, [order, valueConfig.markPrice, order.quantity]);\n\n const setValues = (values: Partial<ComputedAlgoOrder>) => {\n const keys = Object.keys(values);\n keys.forEach((key) => {\n setOrderValue(\n key as UpdateOrderKey,\n values[key as keyof ComputedAlgoOrder] as number | string\n );\n });\n };\n\n const validate = (): Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n > => {\n const orderCreator = getOrderCreator();\n\n return new Promise((resolve, reject) => {\n return orderCreator\n .validate(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n .then((errors) => {\n console.log(\"errors::\", errors);\n\n if (errors) {\n setErrors(errors);\n return reject(errors);\n }\n\n resolve(\n orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n );\n });\n });\n };\n\n useEffect(() => {\n // setError(validate());\n }, [order]);\n\n const compare = (): boolean => {\n const quantityNum = Number(order.quantity);\n if (isNaN(quantityNum)) return false;\n return quantityNum === Math.abs(Number(position.position_qty));\n };\n\n const getOrderCreator = () => {\n // if the order is existed, and the order type is POSITIONAL_TP_SL, always return POSITIONAL_TP_SL\n // else use qty to determine the order type\n if (options?.defaultOrder?.algo_type === AlgoOrderRootType.TP_SL) {\n return OrderFactory.create(AlgoOrderRootType.TP_SL);\n }\n return OrderFactory.create(\n compare() ? AlgoOrderRootType.POSITIONAL_TP_SL : AlgoOrderRootType.TP_SL\n );\n };\n\n const submit = async () => {\n const defaultOrder = options?.defaultOrder;\n const orderId = defaultOrder?.algo_order_id;\n const algoType = defaultOrder?.algo_type;\n\n // if algo_order_id is not existed, create new order\n if (!orderId) {\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = POSITION_TP_SL\n if (algoType === AlgoOrderRootType.POSITIONAL_TP_SL) {\n // if order.qty = position.qty, update order\n if (compare()) {\n return updateOrder(orderId!);\n }\n // if order.qty != position.qty, create new tp/sl order\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = TP_SL, delete order and create new order\n\n return updateOrder(orderId!);\n };\n\n const createOrder = () => {\n const orderCreator = getOrderCreator();\n\n const orderBody = orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n );\n\n if (orderBody.child_orders.length === 0) {\n throw new SDKError(\"No child orders\");\n }\n\n return doCreateOrder(orderBody);\n };\n\n const deleteOrder = (orderId: number, symbol: string): Promise<any> => {\n return doDeleteOrder(null, {\n order_id: orderId,\n symbol,\n });\n };\n\n const updateOrder = (orderId: number): Promise<any> => {\n const orderCreator = getOrderCreator() as TPSLPositionOrderCreator;\n\n const [updatedOrderEntity, orderEntity] = orderCreator.crateUpdateOrder(\n // @ts-ignore\n order,\n options?.defaultOrder,\n valueConfig\n );\n\n if (updatedOrderEntity.child_orders.length === 0) {\n return Promise.resolve(\"Not any order needs to update\");\n }\n\n const needDelete =\n orderEntity.child_orders.filter(\n (order) =>\n typeof order.is_activated === \"boolean\" && !order.is_activated\n ).length === 2;\n\n if (needDelete) {\n return deleteOrder(orderId, order.symbol!);\n }\n\n return doUpdateOrder({\n order_id: orderId,\n ...updatedOrderEntity,\n });\n };\n\n return [\n omit([\"ignoreValidate\"], order) as ComputedAlgoOrder,\n {\n submit,\n\n create: submit,\n\n update: updateOrder,\n setValue: setOrderValue,\n setValues,\n // createPositionTPSL: submit,\n // createTPSL: submit,\n validate,\n errors,\n },\n ];\n};\n"],"names":["useTaskProfitAndStopLossInternal","position","options","order","setOrder","useState","algo_order_id","defaultOrder","symbol","side","Number","position_qty","OrderSide","BUY","SELL","quantity","Math","abs","algo_type","symbolInfo","useSymbolsInfo","data","markPrice","useMarkPrice","doCreateOrder","useMutation","doUpdateOrder","doDeleteOrder","errors","setErrors","useEffect","trigger_prices","findTPSLFromOrder","tp_trigger_price","setOrderValue","ignoreValidate","sl_trigger_price","_setOrderValue","key","value","prev","newValue","calculateHelper","entryPrice","average_open_price","qty","orderSide","valueConfig","maxQty","requestAnimationFrame","orderCreator","getOrderCreator","validate","then","setValues","values","keys","Object","forEach","Promise","resolve","reject","create","compare","quantityNum","isNaN","AlgoOrderRootType","TP_SL","OrderFactory","POSITIONAL_TP_SL","submit","orderId","algoType","createOrder","updateOrder","orderBody","child_orders","length","SDKError","deleteOrder","order_id","updatedOrderEntity","orderEntity","crateUpdateOrder","needDelete","filter","is_activated","omit","update","setValue"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}