@orderly.network/hooks 1.3.2 → 1.4.0-alpha.1

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 (365) hide show
  1. package/esm/configProvider.d.ts.map +1 -1
  2. package/esm/configProvider.js +3 -2
  3. package/esm/configProvider.js.map +1 -1
  4. package/esm/dataProvider.d.ts.map +1 -1
  5. package/esm/dataProvider.js +0 -2
  6. package/esm/dataProvider.js.map +1 -1
  7. package/esm/dev/proxyConfigStore.d.ts +15 -0
  8. package/esm/dev/proxyConfigStore.d.ts.map +1 -0
  9. package/esm/dev/proxyConfigStore.js +41 -0
  10. package/esm/dev/proxyConfigStore.js.map +1 -0
  11. package/esm/index.d.ts +4 -3
  12. package/esm/index.d.ts.map +1 -1
  13. package/esm/index.js +4 -3
  14. package/esm/index.js.map +1 -1
  15. package/esm/orderly/orderlyHooks.d.ts +3 -2
  16. package/esm/orderly/orderlyHooks.d.ts.map +1 -1
  17. package/esm/orderly/orderlyHooks.js +3 -2
  18. package/esm/orderly/orderlyHooks.js.map +1 -1
  19. package/esm/orderly/useCollateral.js +2 -2
  20. package/esm/orderly/useCollateral.js.map +1 -1
  21. package/esm/orderly/useMarginRatio.js +1 -1
  22. package/esm/orderly/useMarginRatio.js.map +1 -1
  23. package/esm/orderly/useMaxQty.js +2 -2
  24. package/esm/orderly/useMaxQty.js.map +1 -1
  25. package/esm/orderly/useOrderEntry.d.ts.map +1 -1
  26. package/esm/orderly/useOrderEntry.js +15 -12
  27. package/esm/orderly/useOrderEntry.js.map +1 -1
  28. package/esm/orderly/useOrderEntryNext/index.d.ts +1 -0
  29. package/esm/orderly/useOrderEntryNext/index.d.ts.map +1 -0
  30. package/esm/orderly/useOrderEntryNext/index.js +2 -0
  31. package/esm/orderly/useOrderEntryNext/index.js.map +1 -0
  32. package/esm/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +20 -12
  33. package/esm/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
  34. package/esm/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +102 -26
  35. package/esm/orderly/useOrderStream/useOrderStream.js.map +1 -0
  36. package/esm/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
  37. package/esm/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
  38. package/esm/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
  39. package/esm/orderly/usePositionStream/usePositionStream.js.map +1 -0
  40. package/esm/orderly/usePositionStream/utils.d.ts +8 -0
  41. package/esm/orderly/usePositionStream/utils.d.ts.map +1 -0
  42. package/esm/orderly/usePositionStream/utils.js +34 -0
  43. package/esm/orderly/usePositionStream/utils.js.map +1 -0
  44. package/esm/orderly/usePrivateDataObserver.d.ts.map +1 -1
  45. package/esm/orderly/usePrivateDataObserver.js +30 -43
  46. package/esm/orderly/usePrivateDataObserver.js.map +1 -1
  47. package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
  48. package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
  49. package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
  50. package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
  51. package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts +30 -0
  52. package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
  53. package/esm/orderly/useTakeProfitAndStopLoss/index.js +23 -0
  54. package/esm/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
  55. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +57 -0
  56. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
  57. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js +210 -0
  58. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
  59. package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
  60. package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
  61. package/esm/orderly/useTakeProfitAndStopLoss/utils.js +239 -0
  62. package/esm/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
  63. package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
  64. package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
  65. package/esm/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
  66. package/esm/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
  67. package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
  68. package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
  69. package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
  70. package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
  71. package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
  72. package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
  73. package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
  74. package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
  75. package/esm/services/orderCreator/baseAlgoCreator.d.ts +22 -0
  76. package/esm/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
  77. package/esm/services/orderCreator/baseAlgoCreator.js +57 -0
  78. package/esm/services/orderCreator/baseAlgoCreator.js.map +1 -0
  79. package/esm/services/orderCreator/baseCreator.d.ts +14 -0
  80. package/esm/services/orderCreator/baseCreator.d.ts.map +1 -0
  81. package/esm/services/orderCreator/baseCreator.js +92 -0
  82. package/esm/services/orderCreator/baseCreator.js.map +1 -0
  83. package/esm/services/orderCreator/factory.d.ts +7 -0
  84. package/esm/services/orderCreator/factory.d.ts.map +1 -0
  85. package/esm/services/orderCreator/factory.js +45 -0
  86. package/esm/services/orderCreator/factory.js.map +1 -0
  87. package/esm/services/orderCreator/fokCreator.d.ts +4 -0
  88. package/esm/services/orderCreator/fokCreator.d.ts.map +1 -0
  89. package/esm/services/orderCreator/fokCreator.js +5 -0
  90. package/esm/services/orderCreator/fokCreator.js.map +1 -0
  91. package/esm/services/orderCreator/generalCreator.d.ts +8 -0
  92. package/esm/services/orderCreator/generalCreator.d.ts.map +1 -0
  93. package/esm/services/orderCreator/generalCreator.js +15 -0
  94. package/esm/services/orderCreator/generalCreator.js.map +1 -0
  95. package/esm/services/orderCreator/interface.d.ts +23 -0
  96. package/esm/services/orderCreator/interface.d.ts.map +1 -0
  97. package/esm/services/orderCreator/interface.js +3 -0
  98. package/esm/services/orderCreator/interface.js.map +1 -0
  99. package/esm/services/orderCreator/iocCreator.d.ts +4 -0
  100. package/esm/services/orderCreator/iocCreator.d.ts.map +1 -0
  101. package/esm/services/orderCreator/iocCreator.js +5 -0
  102. package/esm/services/orderCreator/iocCreator.js.map +1 -0
  103. package/esm/services/orderCreator/limitOrderCreator.d.ts +8 -0
  104. package/esm/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
  105. package/esm/services/orderCreator/limitOrderCreator.js +69 -0
  106. package/esm/services/orderCreator/limitOrderCreator.js.map +1 -0
  107. package/esm/services/orderCreator/marketOrderCreator.d.ts +24 -0
  108. package/esm/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
  109. package/esm/services/orderCreator/marketOrderCreator.js +18 -0
  110. package/esm/services/orderCreator/marketOrderCreator.js.map +1 -0
  111. package/esm/services/orderCreator/postOnlyCreator.d.ts +4 -0
  112. package/esm/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
  113. package/esm/services/orderCreator/postOnlyCreator.js +5 -0
  114. package/esm/services/orderCreator/postOnlyCreator.js.map +1 -0
  115. package/esm/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
  116. package/esm/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
  117. package/esm/services/orderCreator/stopLimitOrderCreator.js +84 -0
  118. package/esm/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
  119. package/esm/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
  120. package/esm/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
  121. package/esm/services/orderCreator/stopMarketOrderCreator.js +46 -0
  122. package/esm/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
  123. package/esm/services/orderCreator/tpslOrderCreator.d.ts +32 -0
  124. package/esm/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
  125. package/esm/services/orderCreator/tpslOrderCreator.js +88 -0
  126. package/esm/services/orderCreator/tpslOrderCreator.js.map +1 -0
  127. package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
  128. package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
  129. package/esm/services/orderCreator/tpslPositionOrderCreator.js +74 -0
  130. package/esm/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
  131. package/esm/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
  132. package/esm/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
  133. package/esm/services/orderMerge/algoOrderMergeHandler.js +38 -0
  134. package/esm/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
  135. package/esm/services/orderMerge/baseMergeHandler.d.ts +22 -0
  136. package/esm/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
  137. package/esm/services/orderMerge/baseMergeHandler.js +160 -0
  138. package/esm/services/orderMerge/baseMergeHandler.js.map +1 -0
  139. package/esm/services/orderMerge/interface.d.ts +8 -0
  140. package/esm/services/orderMerge/interface.d.ts.map +1 -0
  141. package/esm/services/orderMerge/interface.js +3 -0
  142. package/esm/services/orderMerge/interface.js.map +1 -0
  143. package/esm/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
  144. package/esm/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
  145. package/esm/services/orderMerge/regularOrderMergeHandler.js +15 -0
  146. package/esm/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
  147. package/esm/usePoster.d.ts +3 -0
  148. package/esm/usePoster.d.ts.map +1 -1
  149. package/esm/usePoster.js +3 -1
  150. package/esm/usePoster.js.map +1 -1
  151. package/esm/utils/createOrder.d.ts +0 -55
  152. package/esm/utils/createOrder.d.ts.map +1 -1
  153. package/esm/utils/createOrder.js +0 -334
  154. package/esm/utils/createOrder.js.map +1 -1
  155. package/esm/utils/fokCreator.d.ts +1 -0
  156. package/esm/utils/fokCreator.d.ts.map +1 -0
  157. package/esm/utils/fokCreator.js +2 -0
  158. package/esm/utils/fokCreator.js.map +1 -0
  159. package/esm/utils/index.d.ts +5 -0
  160. package/esm/utils/index.d.ts.map +1 -0
  161. package/esm/utils/index.js +6 -0
  162. package/esm/utils/index.js.map +1 -0
  163. package/esm/utils/order.d.ts +2 -0
  164. package/esm/utils/order.d.ts.map +1 -0
  165. package/esm/utils/order.js +3 -0
  166. package/esm/utils/order.js.map +1 -0
  167. package/esm/utils/swr.d.ts +3 -1
  168. package/esm/utils/swr.d.ts.map +1 -1
  169. package/esm/utils/swr.js +123 -89
  170. package/esm/utils/swr.js.map +1 -1
  171. package/esm/utils/ws.d.ts +2 -0
  172. package/esm/utils/ws.d.ts.map +1 -0
  173. package/esm/utils/ws.js +9 -0
  174. package/esm/utils/ws.js.map +1 -0
  175. package/esm/version.d.ts +1 -1
  176. package/esm/version.d.ts.map +1 -1
  177. package/esm/version.js +2 -2
  178. package/esm/version.js.map +1 -1
  179. package/lib/configProvider.d.ts.map +1 -1
  180. package/lib/configProvider.js +3 -2
  181. package/lib/configProvider.js.map +1 -1
  182. package/lib/dataProvider.d.ts.map +1 -1
  183. package/lib/dataProvider.js +0 -2
  184. package/lib/dataProvider.js.map +1 -1
  185. package/lib/dev/proxyConfigStore.d.ts +15 -0
  186. package/lib/dev/proxyConfigStore.d.ts.map +1 -0
  187. package/lib/dev/proxyConfigStore.js +51 -0
  188. package/lib/dev/proxyConfigStore.js.map +1 -0
  189. package/lib/index.d.ts +4 -3
  190. package/lib/index.d.ts.map +1 -1
  191. package/lib/index.js +10 -3
  192. package/lib/index.js.map +1 -1
  193. package/lib/orderly/orderlyHooks.d.ts +3 -2
  194. package/lib/orderly/orderlyHooks.d.ts.map +1 -1
  195. package/lib/orderly/orderlyHooks.js +6 -2
  196. package/lib/orderly/orderlyHooks.js.map +1 -1
  197. package/lib/orderly/useCollateral.js +2 -2
  198. package/lib/orderly/useCollateral.js.map +1 -1
  199. package/lib/orderly/useMarginRatio.js +1 -1
  200. package/lib/orderly/useMarginRatio.js.map +1 -1
  201. package/lib/orderly/useMaxQty.js +2 -2
  202. package/lib/orderly/useMaxQty.js.map +1 -1
  203. package/lib/orderly/useOrderEntry.d.ts.map +1 -1
  204. package/lib/orderly/useOrderEntry.js +14 -12
  205. package/lib/orderly/useOrderEntry.js.map +1 -1
  206. package/lib/orderly/useOrderEntryNext/index.d.ts +1 -0
  207. package/lib/orderly/useOrderEntryNext/index.d.ts.map +1 -0
  208. package/lib/orderly/useOrderEntryNext/index.js +3 -0
  209. package/lib/orderly/useOrderEntryNext/index.js.map +1 -0
  210. package/lib/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +20 -12
  211. package/lib/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
  212. package/lib/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +100 -25
  213. package/lib/orderly/useOrderStream/useOrderStream.js.map +1 -0
  214. package/lib/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
  215. package/lib/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
  216. package/lib/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
  217. package/lib/orderly/usePositionStream/usePositionStream.js.map +1 -0
  218. package/lib/orderly/usePositionStream/utils.d.ts +8 -0
  219. package/lib/orderly/usePositionStream/utils.d.ts.map +1 -0
  220. package/lib/orderly/usePositionStream/utils.js +55 -0
  221. package/lib/orderly/usePositionStream/utils.js.map +1 -0
  222. package/lib/orderly/usePrivateDataObserver.d.ts.map +1 -1
  223. package/lib/orderly/usePrivateDataObserver.js +28 -41
  224. package/lib/orderly/usePrivateDataObserver.js.map +1 -1
  225. package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
  226. package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
  227. package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
  228. package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
  229. package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts +30 -0
  230. package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
  231. package/lib/orderly/useTakeProfitAndStopLoss/index.js +33 -0
  232. package/lib/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
  233. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +57 -0
  234. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
  235. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js +217 -0
  236. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
  237. package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
  238. package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
  239. package/lib/orderly/useTakeProfitAndStopLoss/utils.js +254 -0
  240. package/lib/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
  241. package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
  242. package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
  243. package/lib/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
  244. package/lib/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
  245. package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
  246. package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
  247. package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
  248. package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
  249. package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
  250. package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
  251. package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
  252. package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
  253. package/lib/services/orderCreator/baseAlgoCreator.d.ts +22 -0
  254. package/lib/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
  255. package/lib/services/orderCreator/baseAlgoCreator.js +67 -0
  256. package/lib/services/orderCreator/baseAlgoCreator.js.map +1 -0
  257. package/lib/services/orderCreator/baseCreator.d.ts +14 -0
  258. package/lib/services/orderCreator/baseCreator.d.ts.map +1 -0
  259. package/lib/services/orderCreator/baseCreator.js +102 -0
  260. package/lib/services/orderCreator/baseCreator.js.map +1 -0
  261. package/lib/services/orderCreator/factory.d.ts +7 -0
  262. package/lib/services/orderCreator/factory.d.ts.map +1 -0
  263. package/lib/services/orderCreator/factory.js +54 -0
  264. package/lib/services/orderCreator/factory.js.map +1 -0
  265. package/lib/services/orderCreator/fokCreator.d.ts +4 -0
  266. package/lib/services/orderCreator/fokCreator.d.ts.map +1 -0
  267. package/lib/services/orderCreator/fokCreator.js +15 -0
  268. package/lib/services/orderCreator/fokCreator.js.map +1 -0
  269. package/lib/services/orderCreator/generalCreator.d.ts +8 -0
  270. package/lib/services/orderCreator/generalCreator.d.ts.map +1 -0
  271. package/lib/services/orderCreator/generalCreator.js +25 -0
  272. package/lib/services/orderCreator/generalCreator.js.map +1 -0
  273. package/lib/services/orderCreator/interface.d.ts +23 -0
  274. package/lib/services/orderCreator/interface.d.ts.map +1 -0
  275. package/lib/services/orderCreator/interface.js +6 -0
  276. package/lib/services/orderCreator/interface.js.map +1 -0
  277. package/lib/services/orderCreator/iocCreator.d.ts +4 -0
  278. package/lib/services/orderCreator/iocCreator.d.ts.map +1 -0
  279. package/lib/services/orderCreator/iocCreator.js +15 -0
  280. package/lib/services/orderCreator/iocCreator.js.map +1 -0
  281. package/lib/services/orderCreator/limitOrderCreator.d.ts +8 -0
  282. package/lib/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
  283. package/lib/services/orderCreator/limitOrderCreator.js +79 -0
  284. package/lib/services/orderCreator/limitOrderCreator.js.map +1 -0
  285. package/lib/services/orderCreator/marketOrderCreator.d.ts +24 -0
  286. package/lib/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
  287. package/lib/services/orderCreator/marketOrderCreator.js +28 -0
  288. package/lib/services/orderCreator/marketOrderCreator.js.map +1 -0
  289. package/lib/services/orderCreator/postOnlyCreator.d.ts +4 -0
  290. package/lib/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
  291. package/lib/services/orderCreator/postOnlyCreator.js +15 -0
  292. package/lib/services/orderCreator/postOnlyCreator.js.map +1 -0
  293. package/lib/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
  294. package/lib/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
  295. package/lib/services/orderCreator/stopLimitOrderCreator.js +93 -0
  296. package/lib/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
  297. package/lib/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
  298. package/lib/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
  299. package/lib/services/orderCreator/stopMarketOrderCreator.js +56 -0
  300. package/lib/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
  301. package/lib/services/orderCreator/tpslOrderCreator.d.ts +32 -0
  302. package/lib/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
  303. package/lib/services/orderCreator/tpslOrderCreator.js +94 -0
  304. package/lib/services/orderCreator/tpslOrderCreator.js.map +1 -0
  305. package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
  306. package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
  307. package/lib/services/orderCreator/tpslPositionOrderCreator.js +83 -0
  308. package/lib/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
  309. package/lib/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
  310. package/lib/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
  311. package/lib/services/orderMerge/algoOrderMergeHandler.js +48 -0
  312. package/lib/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
  313. package/lib/services/orderMerge/baseMergeHandler.d.ts +22 -0
  314. package/lib/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
  315. package/lib/services/orderMerge/baseMergeHandler.js +170 -0
  316. package/lib/services/orderMerge/baseMergeHandler.js.map +1 -0
  317. package/lib/services/orderMerge/interface.d.ts +8 -0
  318. package/lib/services/orderMerge/interface.d.ts.map +1 -0
  319. package/lib/services/orderMerge/interface.js +6 -0
  320. package/lib/services/orderMerge/interface.js.map +1 -0
  321. package/lib/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
  322. package/lib/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
  323. package/lib/services/orderMerge/regularOrderMergeHandler.js +25 -0
  324. package/lib/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
  325. package/lib/usePoster.d.ts +3 -0
  326. package/lib/usePoster.d.ts.map +1 -1
  327. package/lib/usePoster.js +3 -1
  328. package/lib/usePoster.js.map +1 -1
  329. package/lib/utils/createOrder.d.ts +0 -55
  330. package/lib/utils/createOrder.d.ts.map +1 -1
  331. package/lib/utils/createOrder.js +3 -375
  332. package/lib/utils/createOrder.js.map +1 -1
  333. package/lib/utils/fokCreator.d.ts +1 -0
  334. package/lib/utils/fokCreator.d.ts.map +1 -0
  335. package/lib/utils/fokCreator.js +3 -0
  336. package/lib/utils/fokCreator.js.map +1 -0
  337. package/lib/utils/index.d.ts +5 -0
  338. package/lib/utils/index.d.ts.map +1 -0
  339. package/lib/utils/index.js +36 -0
  340. package/lib/utils/index.js.map +1 -0
  341. package/lib/utils/order.d.ts +2 -0
  342. package/lib/utils/order.d.ts.map +1 -0
  343. package/lib/utils/order.js +6 -0
  344. package/lib/utils/order.js.map +1 -0
  345. package/lib/utils/swr.d.ts +3 -1
  346. package/lib/utils/swr.d.ts.map +1 -1
  347. package/lib/utils/swr.js +128 -89
  348. package/lib/utils/swr.js.map +1 -1
  349. package/lib/utils/ws.d.ts +2 -0
  350. package/lib/utils/ws.d.ts.map +1 -0
  351. package/lib/utils/ws.js +19 -0
  352. package/lib/utils/ws.js.map +1 -0
  353. package/lib/version.d.ts +1 -1
  354. package/lib/version.d.ts.map +1 -1
  355. package/lib/version.js +2 -2
  356. package/lib/version.js.map +1 -1
  357. package/package.json +9 -7
  358. package/esm/orderly/useOrderStream.d.ts.map +0 -1
  359. package/esm/orderly/useOrderStream.js.map +0 -1
  360. package/esm/orderly/usePositionStream.d.ts.map +0 -1
  361. package/esm/orderly/usePositionStream.js.map +0 -1
  362. package/lib/orderly/useOrderStream.d.ts.map +0 -1
  363. package/lib/orderly/useOrderStream.js.map +0 -1
  364. package/lib/orderly/usePositionStream.d.ts.map +0 -1
  365. package/lib/orderly/usePositionStream.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stopMarketOrderCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/stopMarketOrderCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EAEjB,SAAS,EACT,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,qBAAa,sBAAuB,SAAQ,gBAAgB,CAAC,eAAe,CAAC;IAC3E,MAAM,CACJ,MAAM,EAAE,eAAe,GAAG;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACrB;;;;;;;;;;;;;;;;;;;;IA+BH,QAAQ,CACN,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,YAAY,CAAC;CAgBzB"}
@@ -0,0 +1,46 @@
1
+ import { AlgoOrderRootType, OrderType, TriggerPriceType } from "@orderly.network/types";
2
+ import { pick } from "ramda";
3
+ import { BaseOrderCreator } from "./baseCreator";
4
+ export class StopMarketOrderCreator extends BaseOrderCreator {
5
+ create(values) {
6
+ const order = {
7
+ ...this.baseOrder(values),
8
+ // order_price: values.order_price,
9
+ trigger_price: values.trigger_price,
10
+ algo_type: AlgoOrderRootType.STOP,
11
+ type: OrderType.MARKET,
12
+ quantity: values["order_quantity"],
13
+ // price: values["order_price"],
14
+ trigger_price_type: TriggerPriceType.MARK_PRICE
15
+ };
16
+ return pick([
17
+ "symbol",
18
+ "trigger_price",
19
+ "algo_type",
20
+ "type",
21
+ "quantity",
22
+ // "price",
23
+ "trigger_price_type",
24
+ "side",
25
+ "reduce_only",
26
+ "visible_quantity"
27
+ ], order);
28
+ // return order;
29
+ }
30
+ validate(values, config) {
31
+ return this.baseValidate(values, config).then((errors)=>{
32
+ // const errors = this.baseValidate(values, config);
33
+ // @ts-ignore
34
+ const { order_price, trigger_price, side } = values;
35
+ if (!trigger_price) {
36
+ errors.trigger_price = {
37
+ type: "required",
38
+ message: "Trigger price is required"
39
+ };
40
+ }
41
+ return errors;
42
+ });
43
+ }
44
+ }
45
+
46
+ //# sourceMappingURL=stopMarketOrderCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/orderCreator/stopMarketOrderCreator.ts"],"sourcesContent":["import {\n AlgoOrderEntity,\n AlgoOrderRootType,\n OrderEntity,\n OrderType,\n TriggerPriceType,\n} from \"@orderly.network/types\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\n\nimport { pick } from \"ramda\";\nimport { BaseOrderCreator } from \"./baseCreator\";\n\nexport class StopMarketOrderCreator extends BaseOrderCreator<AlgoOrderEntity> {\n create(\n values: AlgoOrderEntity & {\n order_quantity: number;\n order_price: number;\n }\n ) {\n const order = {\n ...this.baseOrder(values as unknown as OrderEntity),\n // order_price: values.order_price,\n trigger_price: values.trigger_price!,\n algo_type: AlgoOrderRootType.STOP,\n type: OrderType.MARKET,\n quantity: values[\"order_quantity\"]!,\n // price: values[\"order_price\"],\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n };\n\n return pick(\n [\n \"symbol\",\n \"trigger_price\",\n \"algo_type\",\n \"type\",\n \"quantity\",\n // \"price\",\n \"trigger_price_type\",\n \"side\",\n \"reduce_only\",\n \"visible_quantity\",\n ],\n order\n );\n\n // return order;\n }\n validate(\n values: OrderFormEntity,\n config: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, config).then((errors) => {\n // const errors = this.baseValidate(values, config);\n // @ts-ignore\n const { order_price, trigger_price, side } = values;\n\n if (!trigger_price) {\n errors.trigger_price = {\n type: \"required\",\n message: \"Trigger price is required\",\n };\n }\n\n return errors;\n });\n }\n}\n"],"names":["AlgoOrderRootType","OrderType","TriggerPriceType","pick","BaseOrderCreator","StopMarketOrderCreator","create","values","order","baseOrder","trigger_price","algo_type","STOP","type","MARKET","quantity","trigger_price_type","MARK_PRICE","validate","config","baseValidate","then","errors","order_price","side","message"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAEEA,iBAAiB,EAEjBC,SAAS,EACTC,gBAAgB,QACX,yBAAyB;AAGhC,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAASC,gBAAgB,QAAQ,gBAAgB;AAEjD,OAAO,MAAMC,+BAA+BD;IAC1CE,OACEC,MAGC,EACD;QACA,MAAMC,QAAQ;YACZ,GAAG,IAAI,CAACC,SAAS,CAACF,OAAiC;YACnD,mCAAmC;YACnCG,eAAeH,OAAOG,aAAa;YACnCC,WAAWX,kBAAkBY,IAAI;YACjCC,MAAMZ,UAAUa,MAAM;YACtBC,UAAUR,MAAM,CAAC,iBAAiB;YAClC,gCAAgC;YAChCS,oBAAoBd,iBAAiBe,UAAU;QACjD;QAEA,OAAOd,KACL;YACE;YACA;YACA;YACA;YACA;YACA,WAAW;YACX;YACA;YACA;YACA;SACD,EACDK;IAGF,gBAAgB;IAClB;IACAU,SACEX,MAAuB,EACvBY,MAAuB,EACA;QACvB,OAAO,IAAI,CAACC,YAAY,CAACb,QAAQY,QAAQE,IAAI,CAAC,CAACC;YAC7C,oDAAoD;YACpD,aAAa;YACb,MAAM,EAAEC,WAAW,EAAEb,aAAa,EAAEc,IAAI,EAAE,GAAGjB;YAE7C,IAAI,CAACG,eAAe;gBAClBY,OAAOZ,aAAa,GAAG;oBACrBG,MAAM;oBACNY,SAAS;gBACX;YACF;YAEA,OAAOH;QACT;IACF;AACF"}
@@ -0,0 +1,32 @@
1
+ import { AlgoOrderEntity, OrderType, API } from "@orderly.network/types";
2
+ import { TriggerPriceType } from "@orderly.network/types";
3
+ import { AlgoOrderType } from "@orderly.network/types";
4
+ import { AlgoOrderRootType } from "@orderly.network/types";
5
+ import { OrderSide } from "@orderly.network/types";
6
+ import { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from "./baseAlgoCreator";
7
+ import { ValuesDepConfig } from "./interface";
8
+ export declare class TPSLOrderCreator extends BaseAlgoOrderCreator<AlgoOrderEntity<AlgoOrderRootType.TP_SL>> {
9
+ create(values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>, config: ValuesDepConfig): {
10
+ algo_type: AlgoOrderRootType;
11
+ trigger_price_type: TriggerPriceType;
12
+ reduce_only: boolean;
13
+ quantity: string | number;
14
+ symbol: string;
15
+ child_orders: {
16
+ algo_type: AlgoOrderType;
17
+ reduce_only: boolean;
18
+ side: OrderSide;
19
+ type: OrderType;
20
+ trigger_price: string | number;
21
+ symbol: string;
22
+ is_activated: boolean;
23
+ }[];
24
+ };
25
+ crateUpdateOrder(values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>, oldValue: API.AlgoOrder, config: ValuesDepConfig): [
26
+ {
27
+ child_orders: AlgoOrderUpdateEntity[];
28
+ },
29
+ AlgoOrderEntity<AlgoOrderRootType.TP_SL>
30
+ ];
31
+ }
32
+ //# sourceMappingURL=tpslOrderCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tpslOrderCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/tpslOrderCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,qBAAa,gBAAiB,SAAQ,oBAAoB,CACxD,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CACzC;IACC,MAAM,CACJ,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAChD,MAAM,EAAE,eAAe;;;;;;;;;;;;;;;;IAoDzB,gBAAgB,CACd,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAChD,QAAQ,EAAE,GAAG,CAAC,SAAS,EACvB,MAAM,EAAE,eAAe,GACtB;QACD;YAAE,YAAY,EAAE,qBAAqB,EAAE,CAAA;SAAE;QACzC,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC;KACzC;CAsDF"}
@@ -0,0 +1,88 @@
1
+ import { OrderType } from "@orderly.network/types";
2
+ import { TriggerPriceType } from "@orderly.network/types";
3
+ import { AlgoOrderType } from "@orderly.network/types";
4
+ import { AlgoOrderRootType } from "@orderly.network/types";
5
+ import { OrderSide } from "@orderly.network/types";
6
+ import { BaseAlgoOrderCreator } from "./baseAlgoCreator";
7
+ import { Decimal } from "@orderly.network/utils";
8
+ export class TPSLOrderCreator extends BaseAlgoOrderCreator {
9
+ create(values, config) {
10
+ const side = values.side === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;
11
+ const child_orders = [];
12
+ if (typeof values.tp_trigger_price !== "undefined") {
13
+ const tp_trigger_price = !!values.tp_trigger_price ? new Decimal(values.tp_trigger_price).todp(config.symbol.quote_dp).toNumber() : values.tp_trigger_price;
14
+ child_orders.push({
15
+ algo_type: AlgoOrderType.TAKE_PROFIT,
16
+ reduce_only: true,
17
+ side,
18
+ type: OrderType.MARKET,
19
+ trigger_price: tp_trigger_price,
20
+ symbol: values.symbol,
21
+ is_activated: !!values.tp_trigger_price
22
+ });
23
+ }
24
+ if (typeof values.sl_trigger_price !== "undefined") {
25
+ const sl_trigger_price = !!values.sl_trigger_price ? new Decimal(values.sl_trigger_price).todp(config.symbol.quote_dp).toNumber() : values.sl_trigger_price;
26
+ child_orders.push({
27
+ algo_type: AlgoOrderType.STOP_LOSS,
28
+ reduce_only: true,
29
+ side,
30
+ type: OrderType.MARKET,
31
+ trigger_price: sl_trigger_price,
32
+ symbol: values.symbol,
33
+ is_activated: !!values.sl_trigger_price
34
+ });
35
+ }
36
+ return {
37
+ algo_type: AlgoOrderRootType.TP_SL,
38
+ trigger_price_type: TriggerPriceType.MARK_PRICE,
39
+ reduce_only: true,
40
+ quantity: values.quantity,
41
+ symbol: values.symbol,
42
+ child_orders
43
+ };
44
+ }
45
+ crateUpdateOrder(values, oldValue, config) {
46
+ const data = this.create(values, config);
47
+ const newData = [];
48
+ const needUpdateQty = values.quantity !== oldValue.quantity;
49
+ data.child_orders.forEach((order)=>{
50
+ // find the old order
51
+ let _order = Object.create(null);
52
+ if (needUpdateQty) {
53
+ _order["quantity"] = data.quantity;
54
+ }
55
+ const oldOrder = oldValue.child_orders?.find((oldOrder)=>oldOrder.algo_type === order.algo_type);
56
+ if (oldOrder) {
57
+ if (!order.is_activated) {
58
+ _order["is_activated"] = false;
59
+ } else if (oldOrder.trigger_price !== order.trigger_price) {
60
+ // _order["order_id"] = Number(oldOrder.algo_order_id);
61
+ _order["trigger_price"] = order.trigger_price;
62
+ }
63
+ if (Object.keys(_order).length > 0) {
64
+ _order["order_id"] = Number(oldOrder.algo_order_id);
65
+ newData.push(_order);
66
+ }
67
+ }
68
+ });
69
+ if (needUpdateQty && newData.length < 2) {
70
+ // if quantity is changed, need to update all child orders
71
+ const missingOrders = oldValue.child_orders.filter((order)=>order.algo_order_id !== newData[0].order_id);
72
+ if (missingOrders.length) {
73
+ newData.push({
74
+ quantity: Number(data.quantity),
75
+ order_id: missingOrders[0].algo_order_id
76
+ });
77
+ }
78
+ }
79
+ return [
80
+ {
81
+ child_orders: newData
82
+ },
83
+ data
84
+ ];
85
+ }
86
+ }
87
+
88
+ //# sourceMappingURL=tpslOrderCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/orderCreator/tpslOrderCreator.ts"],"sourcesContent":["import { AlgoOrderEntity, OrderType, API } from \"@orderly.network/types\";\nimport { TriggerPriceType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from \"./baseAlgoCreator\";\nimport { ValuesDepConfig } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport class TPSLOrderCreator extends BaseAlgoOrderCreator<\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n> {\n create(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n config: ValuesDepConfig\n ) {\n const side =\n values.side! === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;\n\n const child_orders = [];\n\n if (typeof values.tp_trigger_price !== \"undefined\") {\n const tp_trigger_price = !!values.tp_trigger_price\n ? new Decimal(values.tp_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.tp_trigger_price;\n\n child_orders.push({\n algo_type: AlgoOrderType.TAKE_PROFIT,\n reduce_only: true,\n side,\n type: OrderType.MARKET,\n trigger_price: tp_trigger_price,\n symbol: values.symbol,\n is_activated: !!values.tp_trigger_price,\n });\n }\n\n if (typeof values.sl_trigger_price !== \"undefined\") {\n const sl_trigger_price = !!values.sl_trigger_price\n ? new Decimal(values.sl_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.sl_trigger_price;\n child_orders.push({\n algo_type: AlgoOrderType.STOP_LOSS,\n reduce_only: true,\n side,\n type: OrderType.MARKET,\n trigger_price: sl_trigger_price,\n symbol: values.symbol,\n is_activated: !!values.sl_trigger_price,\n });\n }\n\n return {\n algo_type: AlgoOrderRootType.TP_SL,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n reduce_only: true,\n quantity: values.quantity,\n symbol: values.symbol,\n child_orders,\n };\n }\n\n crateUpdateOrder(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n oldValue: API.AlgoOrder,\n config: ValuesDepConfig\n ): [\n { child_orders: AlgoOrderUpdateEntity[] },\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n ] {\n const data = this.create(values, config);\n const newData: AlgoOrderUpdateEntity[] = [];\n\n const needUpdateQty = values.quantity !== oldValue.quantity;\n\n data.child_orders.forEach((order) => {\n // find the old order\n let _order = Object.create(null);\n\n if (needUpdateQty) {\n _order[\"quantity\"] = data.quantity;\n }\n\n const oldOrder = oldValue.child_orders?.find(\n (oldOrder) => oldOrder.algo_type === order.algo_type\n );\n\n if (oldOrder) {\n if (!order.is_activated) {\n _order[\"is_activated\"] = false;\n } else if (oldOrder.trigger_price !== order.trigger_price) {\n // _order[\"order_id\"] = Number(oldOrder.algo_order_id);\n _order[\"trigger_price\"] = order.trigger_price as number;\n }\n\n if (Object.keys(_order).length > 0) {\n _order[\"order_id\"] = Number(oldOrder.algo_order_id);\n newData.push(_order);\n }\n }\n });\n\n if (needUpdateQty && newData.length < 2) {\n // if quantity is changed, need to update all child orders\n const missingOrders = oldValue.child_orders.filter(\n (order) => order.algo_order_id !== newData[0].order_id\n );\n\n if (missingOrders.length) {\n newData.push({\n quantity: Number(data.quantity),\n order_id: missingOrders[0].algo_order_id,\n });\n }\n }\n\n return [\n {\n child_orders: newData,\n },\n data,\n ];\n }\n}\n"],"names":["OrderType","TriggerPriceType","AlgoOrderType","AlgoOrderRootType","OrderSide","BaseAlgoOrderCreator","Decimal","TPSLOrderCreator","create","values","config","side","BUY","SELL","child_orders","tp_trigger_price","todp","symbol","quote_dp","toNumber","push","algo_type","TAKE_PROFIT","reduce_only","type","MARKET","trigger_price","is_activated","sl_trigger_price","STOP_LOSS","TP_SL","trigger_price_type","MARK_PRICE","quantity","crateUpdateOrder","oldValue","data","newData","needUpdateQty","forEach","order","_order","Object","oldOrder","find","keys","length","Number","algo_order_id","missingOrders","filter","order_id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { AlgoOrderEntity, AlgoOrderType, OrderType, TriggerPriceType, AlgoOrderRootType } from "@orderly.network/types";
2
+ import { OrderSide } from "@orderly.network/types";
3
+ import { API } from "@orderly.network/types";
4
+ import { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from "./baseAlgoCreator";
5
+ import { ValuesDepConfig } from "./interface";
6
+ export declare class TPSLPositionOrderCreator extends BaseAlgoOrderCreator<AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>> {
7
+ create(values: AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>, config: ValuesDepConfig): {
8
+ algo_type: AlgoOrderRootType;
9
+ trigger_price_type: TriggerPriceType;
10
+ symbol: string;
11
+ child_orders: {
12
+ algo_type: AlgoOrderType;
13
+ reduce_only: boolean;
14
+ side: OrderSide;
15
+ type: OrderType;
16
+ trigger_price: string | number;
17
+ trigger_price_type: TriggerPriceType;
18
+ symbol: string;
19
+ is_activated: boolean;
20
+ }[];
21
+ };
22
+ crateUpdateOrder(values: AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>,
23
+ /**
24
+ * The old value of the order
25
+ */
26
+ oldValue: API.AlgoOrder, config: ValuesDepConfig): [
27
+ {
28
+ child_orders: AlgoOrderUpdateEntity[];
29
+ },
30
+ AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>
31
+ ];
32
+ }
33
+ //# sourceMappingURL=tpslPositionOrderCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tpslPositionOrderCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/tpslPositionOrderCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,qBAAa,wBAAyB,SAAQ,oBAAoB,CAChE,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CACpD;IACC,MAAM,CACJ,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAC3D,MAAM,EAAE,eAAe;;;;;;;;;;;;;;;IAqDzB,gBAAgB,CACd,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IAC3D;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,SAAS,EACvB,MAAM,EAAE,eAAe,GACtB;QACD;YAAE,YAAY,EAAE,qBAAqB,EAAE,CAAA;SAAE;QACzC,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;KACpD;CAoCF"}
@@ -0,0 +1,74 @@
1
+ import { AlgoOrderType, OrderType, TriggerPriceType, AlgoOrderRootType } from "@orderly.network/types";
2
+ import { OrderSide } from "@orderly.network/types";
3
+ import { BaseAlgoOrderCreator } from "./baseAlgoCreator";
4
+ import { Decimal } from "@orderly.network/utils";
5
+ export class TPSLPositionOrderCreator extends BaseAlgoOrderCreator {
6
+ create(values, config) {
7
+ const side = values.side === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;
8
+ const child_orders = [];
9
+ if (typeof values.tp_trigger_price !== "undefined") {
10
+ const tp_trigger_price = !!values.tp_trigger_price ? new Decimal(values.tp_trigger_price).todp(config.symbol.quote_dp).toNumber() : values.tp_trigger_price;
11
+ child_orders.push({
12
+ algo_type: AlgoOrderType.TAKE_PROFIT,
13
+ reduce_only: true,
14
+ side,
15
+ type: OrderType.CLOSE_POSITION,
16
+ trigger_price: tp_trigger_price,
17
+ trigger_price_type: TriggerPriceType.MARK_PRICE,
18
+ symbol: values.symbol,
19
+ is_activated: !!values.tp_trigger_price
20
+ });
21
+ }
22
+ if (typeof values.sl_trigger_price !== "undefined") {
23
+ const sl_trigger_price = !!values.sl_trigger_price ? new Decimal(values.sl_trigger_price).todp(config.symbol.quote_dp).toNumber() : values.sl_trigger_price;
24
+ child_orders.push({
25
+ algo_type: AlgoOrderType.STOP_LOSS,
26
+ reduce_only: true,
27
+ side,
28
+ type: OrderType.CLOSE_POSITION,
29
+ trigger_price: sl_trigger_price,
30
+ trigger_price_type: TriggerPriceType.MARK_PRICE,
31
+ symbol: values.symbol,
32
+ is_activated: !!values.sl_trigger_price
33
+ });
34
+ }
35
+ return {
36
+ algo_type: AlgoOrderRootType.POSITIONAL_TP_SL,
37
+ trigger_price_type: TriggerPriceType.MARK_PRICE,
38
+ // reduce_only: true,
39
+ symbol: values.symbol,
40
+ child_orders
41
+ };
42
+ }
43
+ crateUpdateOrder(values, /**
44
+ * The old value of the order
45
+ */ oldValue, config) {
46
+ const data = this.create(values, config);
47
+ const newData = [];
48
+ data.child_orders.forEach((order)=>{
49
+ // find the old order
50
+ const oldOrder = oldValue.child_orders?.find((oldOrder)=>oldOrder.algo_type === order.algo_type);
51
+ if (oldOrder) {
52
+ if (!order.is_activated) {
53
+ newData.push({
54
+ is_activated: false,
55
+ order_id: Number(oldOrder.algo_order_id)
56
+ });
57
+ } else if (oldOrder.trigger_price !== order.trigger_price) {
58
+ newData.push({
59
+ trigger_price: order.trigger_price,
60
+ order_id: Number(oldOrder.algo_order_id)
61
+ });
62
+ }
63
+ }
64
+ });
65
+ return [
66
+ {
67
+ child_orders: newData
68
+ },
69
+ data
70
+ ];
71
+ }
72
+ }
73
+
74
+ //# sourceMappingURL=tpslPositionOrderCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/orderCreator/tpslPositionOrderCreator.ts"],"sourcesContent":["import {\n AlgoOrderEntity,\n AlgoOrderType,\n OrderType,\n TriggerPriceType,\n AlgoOrderRootType,\n} from \"@orderly.network/types\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { API } from \"@orderly.network/types\";\nimport { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from \"./baseAlgoCreator\";\nimport { ValuesDepConfig } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport class TPSLPositionOrderCreator extends BaseAlgoOrderCreator<\n AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>\n> {\n create(\n values: AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>,\n config: ValuesDepConfig\n ) {\n const side =\n values.side! === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;\n\n const child_orders = [];\n\n if (typeof values.tp_trigger_price !== \"undefined\") {\n const tp_trigger_price = !!values.tp_trigger_price\n ? new Decimal(values.tp_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.tp_trigger_price;\n\n child_orders.push({\n algo_type: AlgoOrderType.TAKE_PROFIT,\n reduce_only: true,\n side,\n type: OrderType.CLOSE_POSITION,\n trigger_price: tp_trigger_price,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n symbol: values.symbol,\n is_activated: !!values.tp_trigger_price,\n });\n }\n\n if (typeof values.sl_trigger_price !== \"undefined\") {\n const sl_trigger_price = !!values.sl_trigger_price\n ? new Decimal(values.sl_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.sl_trigger_price;\n child_orders.push({\n algo_type: AlgoOrderType.STOP_LOSS,\n reduce_only: true,\n side,\n type: OrderType.CLOSE_POSITION,\n trigger_price: sl_trigger_price,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n symbol: values.symbol,\n is_activated: !!values.sl_trigger_price,\n });\n }\n\n return {\n algo_type: AlgoOrderRootType.POSITIONAL_TP_SL,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n // reduce_only: true,\n symbol: values.symbol,\n child_orders,\n };\n }\n\n crateUpdateOrder(\n values: AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>,\n /**\n * The old value of the order\n */\n oldValue: API.AlgoOrder,\n config: ValuesDepConfig\n ): [\n { child_orders: AlgoOrderUpdateEntity[] },\n AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>\n ] {\n const data = this.create(values, config);\n const newData: {\n trigger_price?: number;\n order_id: number;\n is_activated?: boolean;\n }[] = [];\n data.child_orders.forEach((order) => {\n // find the old order\n\n const oldOrder = oldValue.child_orders?.find(\n (oldOrder) => oldOrder.algo_type === order.algo_type\n );\n\n if (oldOrder) {\n if (!order.is_activated) {\n newData.push({\n is_activated: false,\n order_id: Number(oldOrder.algo_order_id),\n });\n } else if (oldOrder.trigger_price !== order.trigger_price) {\n newData.push({\n trigger_price: order.trigger_price as number,\n order_id: Number(oldOrder.algo_order_id),\n });\n }\n }\n });\n\n return [\n {\n child_orders: newData,\n },\n data,\n ];\n }\n}\n"],"names":["AlgoOrderType","OrderType","TriggerPriceType","AlgoOrderRootType","OrderSide","BaseAlgoOrderCreator","Decimal","TPSLPositionOrderCreator","create","values","config","side","BUY","SELL","child_orders","tp_trigger_price","todp","symbol","quote_dp","toNumber","push","algo_type","TAKE_PROFIT","reduce_only","type","CLOSE_POSITION","trigger_price","trigger_price_type","MARK_PRICE","is_activated","sl_trigger_price","STOP_LOSS","POSITIONAL_TP_SL","crateUpdateOrder","oldValue","data","newData","forEach","order","oldOrder","find","order_id","Number","algo_order_id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAEEA,aAAa,EACbC,SAAS,EACTC,gBAAgB,EAChBC,iBAAiB,QACZ,yBAAyB;AAChC,SAASC,SAAS,QAAQ,yBAAyB;AAEnD,SAAgCC,oBAAoB,QAAQ,oBAAoB;AAEhF,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,OAAO,MAAMC,iCAAiCF;IAG5CG,OACEC,MAA2D,EAC3DC,MAAuB,EACvB;QACA,MAAMC,OACJF,OAAOE,IAAI,KAAMP,UAAUQ,GAAG,GAAGR,UAAUS,IAAI,GAAGT,UAAUQ,GAAG;QAEjE,MAAME,eAAe,EAAE;QAEvB,IAAI,OAAOL,OAAOM,gBAAgB,KAAK,aAAa;YAClD,MAAMA,mBAAmB,CAAC,CAACN,OAAOM,gBAAgB,GAC9C,IAAIT,QAAQG,OAAOM,gBAAgB,EAChCC,IAAI,CAACN,OAAOO,MAAM,CAACC,QAAQ,EAC3BC,QAAQ,KACXV,OAAOM,gBAAgB;YAE3BD,aAAaM,IAAI,CAAC;gBAChBC,WAAWrB,cAAcsB,WAAW;gBACpCC,aAAa;gBACbZ;gBACAa,MAAMvB,UAAUwB,cAAc;gBAC9BC,eAAeX;gBACfY,oBAAoBzB,iBAAiB0B,UAAU;gBAC/CX,QAAQR,OAAOQ,MAAM;gBACrBY,cAAc,CAAC,CAACpB,OAAOM,gBAAgB;YACzC;QACF;QAEA,IAAI,OAAON,OAAOqB,gBAAgB,KAAK,aAAa;YAClD,MAAMA,mBAAmB,CAAC,CAACrB,OAAOqB,gBAAgB,GAC9C,IAAIxB,QAAQG,OAAOqB,gBAAgB,EAChCd,IAAI,CAACN,OAAOO,MAAM,CAACC,QAAQ,EAC3BC,QAAQ,KACXV,OAAOqB,gBAAgB;YAC3BhB,aAAaM,IAAI,CAAC;gBAChBC,WAAWrB,cAAc+B,SAAS;gBAClCR,aAAa;gBACbZ;gBACAa,MAAMvB,UAAUwB,cAAc;gBAC9BC,eAAeI;gBACfH,oBAAoBzB,iBAAiB0B,UAAU;gBAC/CX,QAAQR,OAAOQ,MAAM;gBACrBY,cAAc,CAAC,CAACpB,OAAOqB,gBAAgB;YACzC;QACF;QAEA,OAAO;YACLT,WAAWlB,kBAAkB6B,gBAAgB;YAC7CL,oBAAoBzB,iBAAiB0B,UAAU;YAC/C,qBAAqB;YACrBX,QAAQR,OAAOQ,MAAM;YACrBH;QACF;IACF;IAEAmB,iBACExB,MAA2D,EAC3D;;KAEC,GACDyB,QAAuB,EACvBxB,MAAuB,EAIvB;QACA,MAAMyB,OAAO,IAAI,CAAC3B,MAAM,CAACC,QAAQC;QACjC,MAAM0B,UAIA,EAAE;QACRD,KAAKrB,YAAY,CAACuB,OAAO,CAAC,CAACC;YACzB,qBAAqB;YAErB,MAAMC,WAAWL,SAASpB,YAAY,EAAE0B,KACtC,CAACD,WAAaA,SAASlB,SAAS,KAAKiB,MAAMjB,SAAS;YAGtD,IAAIkB,UAAU;gBACZ,IAAI,CAACD,MAAMT,YAAY,EAAE;oBACvBO,QAAQhB,IAAI,CAAC;wBACXS,cAAc;wBACdY,UAAUC,OAAOH,SAASI,aAAa;oBACzC;gBACF,OAAO,IAAIJ,SAASb,aAAa,KAAKY,MAAMZ,aAAa,EAAE;oBACzDU,QAAQhB,IAAI,CAAC;wBACXM,eAAeY,MAAMZ,aAAa;wBAClCe,UAAUC,OAAOH,SAASI,aAAa;oBACzC;gBACF;YACF;QACF;QAEA,OAAO;YACL;gBACE7B,cAAcsB;YAChB;YACAD;SACD;IACH;AACF"}
@@ -0,0 +1,9 @@
1
+ import { API, WSMessage } from "@orderly.network/types";
2
+ import { BaseMergeHandler } from "./baseMergeHandler";
3
+ export declare class AlgoOrderMergeHandler extends BaseMergeHandler<WSMessage.AlgoOrder[], API.AlgoOrder> {
4
+ get orderId(): number;
5
+ get status(): string;
6
+ pre(message: WSMessage.AlgoOrder[], prevData?: API.OrderResponse[]): API.AlgoOrder;
7
+ static groupOrders(orders: WSMessage.AlgoOrder[]): API.AlgoOrder;
8
+ }
9
+ //# sourceMappingURL=algoOrderMergeHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algoOrderMergeHandler.d.ts","sourceRoot":"","sources":["../../../src/services/orderMerge/algoOrderMergeHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,qBAAa,qBAAsB,SAAQ,gBAAgB,CACzD,SAAS,CAAC,SAAS,EAAE,EACrB,GAAG,CAAC,SAAS,CACd;IACC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAeD,GAAG,CACD,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,EAC9B,QAAQ,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAC7B,GAAG,CAAC,SAAS;IAIhB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,SAAS;CAsBjE"}
@@ -0,0 +1,38 @@
1
+ import { BaseMergeHandler } from "./baseMergeHandler";
2
+ import { object2underscore } from "../../utils/ws";
3
+ export class AlgoOrderMergeHandler extends BaseMergeHandler {
4
+ get orderId() {
5
+ return this.data.algo_order_id;
6
+ }
7
+ get status() {
8
+ return this.data.root_algo_status;
9
+ }
10
+ // merge(
11
+ // key: string,
12
+ // message: WSMessage.AlgoOrder[],
13
+ // prevData: API.OrderResponse[]
14
+ // ): API.OrderResponse[] | undefined {
15
+ // switch (this.status) {
16
+ // case "TRIGGER": {
17
+ // }
18
+ // default:
19
+ // return super.merge(key, message, prevData);
20
+ // }
21
+ // }
22
+ pre(message, prevData) {
23
+ return AlgoOrderMergeHandler.groupOrders(message);
24
+ }
25
+ static groupOrders(orders) {
26
+ const rootOrderIndex = orders.findIndex((order)=>order.parentAlgoOrderId === 0 && order.algoOrderId === order.rootAlgoOrderId);
27
+ if (rootOrderIndex === -1) {
28
+ throw new Error("Root order not found");
29
+ }
30
+ const rootOrder_ = object2underscore(orders[rootOrderIndex]);
31
+ rootOrder_.child_orders = orders.filter((_, index)=>index !== rootOrderIndex).map((order)=>{
32
+ return object2underscore(order);
33
+ });
34
+ return rootOrder_;
35
+ }
36
+ }
37
+
38
+ //# sourceMappingURL=algoOrderMergeHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/orderMerge/algoOrderMergeHandler.ts"],"sourcesContent":["import { API, WSMessage } from \"@orderly.network/types\";\nimport { BaseMergeHandler } from \"./baseMergeHandler\";\nimport { object2underscore } from \"../../utils/ws\";\n\nexport class AlgoOrderMergeHandler extends BaseMergeHandler<\n WSMessage.AlgoOrder[],\n API.AlgoOrder\n> {\n get orderId(): number {\n return this.data.algo_order_id;\n }\n\n get status(): string {\n return this.data.root_algo_status;\n }\n\n // merge(\n // key: string,\n // message: WSMessage.AlgoOrder[],\n // prevData: API.OrderResponse[]\n // ): API.OrderResponse[] | undefined {\n // switch (this.status) {\n // case \"TRIGGER\": {\n // }\n // default:\n // return super.merge(key, message, prevData);\n // }\n // }\n\n pre(\n message: WSMessage.AlgoOrder[],\n prevData?: API.OrderResponse[]\n ): API.AlgoOrder {\n return AlgoOrderMergeHandler.groupOrders(message);\n }\n\n static groupOrders(orders: WSMessage.AlgoOrder[]): API.AlgoOrder {\n const rootOrderIndex = orders.findIndex(\n (order) =>\n order.parentAlgoOrderId === 0 &&\n order.algoOrderId === order.rootAlgoOrderId\n );\n if (rootOrderIndex === -1) {\n throw new Error(\"Root order not found\");\n }\n\n const rootOrder_ = object2underscore(\n orders[rootOrderIndex]\n ) as unknown as API.AlgoOrder;\n\n rootOrder_.child_orders = orders\n .filter((_, index) => index !== rootOrderIndex)\n .map((order) => {\n return object2underscore(order) as unknown as API.AlgoOrder;\n });\n\n return rootOrder_;\n }\n}\n"],"names":["BaseMergeHandler","object2underscore","AlgoOrderMergeHandler","orderId","data","algo_order_id","status","root_algo_status","pre","message","prevData","groupOrders","orders","rootOrderIndex","findIndex","order","parentAlgoOrderId","algoOrderId","rootAlgoOrderId","Error","rootOrder_","child_orders","filter","_","index","map"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,gBAAgB,QAAQ,qBAAqB;AACtD,SAASC,iBAAiB,QAAQ,iBAAiB;AAEnD,OAAO,MAAMC,8BAA8BF;IAIzC,IAAIG,UAAkB;QACpB,OAAO,IAAI,CAACC,IAAI,CAACC,aAAa;IAChC;IAEA,IAAIC,SAAiB;QACnB,OAAO,IAAI,CAACF,IAAI,CAACG,gBAAgB;IACnC;IAEA,WAAW;IACX,mBAAmB;IACnB,sCAAsC;IACtC,oCAAoC;IACpC,yCAAyC;IACzC,6BAA6B;IAC7B,0BAA0B;IAC1B,UAAU;IACV,iBAAiB;IACjB,sDAAsD;IACtD,QAAQ;IACR,MAAM;IAENC,IACEC,OAA8B,EAC9BC,QAA8B,EACf;QACf,OAAOR,sBAAsBS,WAAW,CAACF;IAC3C;IAEA,OAAOE,YAAYC,MAA6B,EAAiB;QAC/D,MAAMC,iBAAiBD,OAAOE,SAAS,CACrC,CAACC,QACCA,MAAMC,iBAAiB,KAAK,KAC5BD,MAAME,WAAW,KAAKF,MAAMG,eAAe;QAE/C,IAAIL,mBAAmB,CAAC,GAAG;YACzB,MAAM,IAAIM,MAAM;QAClB;QAEA,MAAMC,aAAanB,kBACjBW,MAAM,CAACC,eAAe;QAGxBO,WAAWC,YAAY,GAAGT,OACvBU,MAAM,CAAC,CAACC,GAAGC,QAAUA,UAAUX,gBAC/BY,GAAG,CAAC,CAACV;YACJ,OAAOd,kBAAkBc;QAC3B;QAEF,OAAOK;IACT;AACF"}
@@ -0,0 +1,22 @@
1
+ import { WSMessage, API } from "@orderly.network/types";
2
+ import { IOrderMergeHandler } from "./interface";
3
+ export declare abstract class BaseMergeHandler<T extends WSMessage.AlgoOrder[] | WSMessage.Order, D extends API.AlgoOrder | API.Order> implements IOrderMergeHandler<T, D> {
4
+ private message;
5
+ data: D;
6
+ constructor(message: T);
7
+ abstract get status(): string;
8
+ abstract get orderId(): number;
9
+ abstract pre(message: T, prevData?: API.OrderResponse[]): D;
10
+ /**
11
+ * format the order data;
12
+ */
13
+ formatOrder(message: T): D;
14
+ merge(key: string, message: T, prevData: API.OrderResponse[]): API.OrderResponse[];
15
+ insert(orders?: API.OrderResponse[] | undefined): API.OrderResponse[];
16
+ insetOrUpdate(orders: API.OrderResponse[]): API.OrderResponse[];
17
+ update(prevData: API.OrderResponse[]): API.OrderResponse[];
18
+ remove(prevData: API.OrderResponse[]): API.OrderResponse[];
19
+ findOrderIndex(orders: API.OrderResponse[]): number[] | undefined;
20
+ orderIsExisting(orders: API.OrderResponse[]): boolean;
21
+ }
22
+ //# sourceMappingURL=baseMergeHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseMergeHandler.d.ts","sourceRoot":"","sources":["../../../src/services/orderMerge/baseMergeHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,8BAAsB,gBAAgB,CACpC,CAAC,SAAS,SAAS,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,KAAK,EACjD,CAAC,SAAS,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK,CACnC,YAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;IAGvB,OAAO,CAAC,OAAO;IAD3B,IAAI,EAAE,CAAC,CAAC;gBACY,OAAO,EAAE,CAAC;IAG9B,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC;IAC9B,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC;IAE3D;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC;IAc1B,KAAK,CACH,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,GAC5B,GAAG,CAAC,aAAa,EAAE;IA0EtB,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,SAAS,GAAG,GAAG,CAAC,aAAa,EAAE;IAgBrE,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE;IAO/D,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE;IAqB1D,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE;IAiB1D,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS;IA+BjE,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,OAAO;CAItD"}
@@ -0,0 +1,160 @@
1
+ import { lensIndex, over } from "ramda";
2
+ export class BaseMergeHandler {
3
+ message;
4
+ data;
5
+ constructor(message){
6
+ this.message = message;
7
+ this.data = this.formatOrder(message);
8
+ }
9
+ /**
10
+ * format the order data;
11
+ */ formatOrder(message) {
12
+ const data = this.pre(message);
13
+ if (!data.created_time) {
14
+ data.created_time = data.timestamp;
15
+ }
16
+ if (data.type && data.type.endsWith("_ORDER")) {
17
+ data.type = data.type.replace("_ORDER", "");
18
+ }
19
+ return data;
20
+ }
21
+ merge(key, message, prevData) {
22
+ switch(this.status){
23
+ case "NEW":
24
+ {
25
+ if (key.startsWith("orders:CANCELLED") || key.startsWith("orders:FILLED") || key.startsWith("orders:REJECTED")) {
26
+ return prevData;
27
+ }
28
+ return this.insetOrUpdate(prevData);
29
+ }
30
+ case "CANCELLED":
31
+ {
32
+ if (key.startsWith("orders:FILLED") || key.startsWith("orders:REJECTED")) {
33
+ return prevData;
34
+ }
35
+ if (key.startsWith("orders:NEW") || key.startsWith("orders:INCOMPLETE")) {
36
+ return this.remove(prevData);
37
+ }
38
+ if (key.startsWith("orders:CANCELLED")) {
39
+ return this.insert(prevData);
40
+ }
41
+ return this.update(prevData);
42
+ }
43
+ case "REPLACED":
44
+ return this.update(prevData);
45
+ case "FILLED":
46
+ {
47
+ if (this.orderIsExisting(prevData)) {
48
+ // for new list, remove the order if it exists
49
+ if (key.startsWith("orders:INCOMPLETE") || key.startsWith("orders:NEW")) {
50
+ // if fullfilled, remove from the list
51
+ if ("total_executed_quantity" in this.data && this.data.total_executed_quantity === this.data.quantity) {
52
+ return this.remove(prevData);
53
+ }
54
+ // update
55
+ return this.update(prevData);
56
+ }
57
+ } else {
58
+ // for filled list, insert the order if it doesn't exist
59
+ if (key.startsWith("orders:CANCELLED") || key.startsWith("orders:INCOMPLETE") || key.startsWith("orders:NEW")) {
60
+ return prevData;
61
+ }
62
+ // if filled/history list:
63
+ return this.insert(prevData);
64
+ }
65
+ }
66
+ default:
67
+ return prevData || [];
68
+ }
69
+ }
70
+ insert(orders) {
71
+ const index = lensIndex(0);
72
+ return over(//@ts-ignore
73
+ index, (item)=>({
74
+ meta: {
75
+ ...item.meta,
76
+ total: item.meta.total + 1
77
+ },
78
+ rows: [
79
+ this.data,
80
+ ...item.rows
81
+ ]
82
+ }), orders);
83
+ }
84
+ insetOrUpdate(orders) {
85
+ if (this.orderIsExisting(orders)) {
86
+ return this.update(orders);
87
+ }
88
+ return this.insert(orders);
89
+ }
90
+ update(prevData) {
91
+ const idx = this.findOrderIndex(prevData);
92
+ if (!Array.isArray(idx)) {
93
+ return prevData || [];
94
+ }
95
+ const [index, index2] = idx;
96
+ return prevData.map((item, i)=>{
97
+ return {
98
+ meta: {
99
+ ...item.meta
100
+ },
101
+ rows: item.rows.map((order, j)=>{
102
+ if (index === i && index2 === j) {
103
+ return {
104
+ ...order,
105
+ ...this.data
106
+ };
107
+ }
108
+ return order;
109
+ })
110
+ };
111
+ });
112
+ }
113
+ remove(prevData) {
114
+ const idx = this.findOrderIndex(prevData);
115
+ if (!Array.isArray(idx)) {
116
+ return prevData;
117
+ }
118
+ const [index, index2] = idx;
119
+ return prevData.map((item, i)=>{
120
+ return {
121
+ meta: {
122
+ ...item.meta,
123
+ total: item.meta.total - 1
124
+ },
125
+ rows: index === i ? item.rows.filter((_, i)=>i !== index2) : item.rows
126
+ };
127
+ });
128
+ }
129
+ findOrderIndex(orders) {
130
+ let index = 0;
131
+ let index2;
132
+ for(; index < orders.length; index++){
133
+ // index = idx;
134
+ const item = orders[index];
135
+ for(let idx2 = 0; idx2 < item.rows.length; idx2++){
136
+ const element = item.rows[idx2];
137
+ if (element.algo_order_id === this.orderId || element.order_id === this.orderId) {
138
+ index2 = idx2;
139
+ break;
140
+ }
141
+ }
142
+ if (typeof index2 !== "undefined") {
143
+ break;
144
+ }
145
+ }
146
+ if (typeof index2 === "undefined") {
147
+ return;
148
+ }
149
+ return [
150
+ index,
151
+ index2
152
+ ];
153
+ }
154
+ orderIsExisting(orders) {
155
+ const index = this.findOrderIndex(orders);
156
+ return Array.isArray(index);
157
+ }
158
+ }
159
+
160
+ //# sourceMappingURL=baseMergeHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/orderMerge/baseMergeHandler.ts"],"sourcesContent":["import { WSMessage, API } from \"@orderly.network/types\";\nimport { IOrderMergeHandler } from \"./interface\";\nimport { lensIndex, over } from \"ramda\";\n\nexport abstract class BaseMergeHandler<\n T extends WSMessage.AlgoOrder[] | WSMessage.Order,\n D extends API.AlgoOrder | API.Order\n> implements IOrderMergeHandler<T, D>\n{\n data: D;\n constructor(private message: T) {\n this.data = this.formatOrder(message);\n }\n abstract get status(): string;\n abstract get orderId(): number;\n abstract pre(message: T, prevData?: API.OrderResponse[]): D;\n\n /**\n * format the order data;\n */\n formatOrder(message: T): D {\n const data = this.pre(message);\n\n if (!data.created_time) {\n data.created_time = (data as any).timestamp;\n }\n\n if (data.type && data.type.endsWith(\"_ORDER\")) {\n data.type = data.type.replace(\"_ORDER\", \"\");\n }\n\n return data;\n }\n\n merge(\n key: string,\n message: T,\n prevData: API.OrderResponse[]\n ): API.OrderResponse[] {\n switch (this.status) {\n case \"NEW\": {\n if (\n key.startsWith(\"orders:CANCELLED\") ||\n key.startsWith(\"orders:FILLED\") ||\n key.startsWith(\"orders:REJECTED\")\n ) {\n return prevData;\n }\n return this.insetOrUpdate(prevData);\n }\n case \"CANCELLED\": {\n if (\n key.startsWith(\"orders:FILLED\") ||\n key.startsWith(\"orders:REJECTED\")\n ) {\n return prevData;\n }\n if (\n key.startsWith(\"orders:NEW\") ||\n key.startsWith(\"orders:INCOMPLETE\")\n ) {\n return this.remove(prevData);\n }\n\n if (key.startsWith(\"orders:CANCELLED\")) {\n return this.insert(prevData);\n }\n\n return this.update(prevData);\n }\n\n case \"REPLACED\":\n return this.update(prevData);\n\n case \"FILLED\": {\n if (this.orderIsExisting(prevData)) {\n // for new list, remove the order if it exists\n if (\n key.startsWith(\"orders:INCOMPLETE\") ||\n key.startsWith(\"orders:NEW\")\n ) {\n // if fullfilled, remove from the list\n if (\n \"total_executed_quantity\" in this.data &&\n this.data.total_executed_quantity === this.data.quantity\n ) {\n return this.remove(prevData);\n }\n\n // update\n return this.update(prevData);\n }\n } else {\n // for filled list, insert the order if it doesn't exist\n\n if (\n key.startsWith(\"orders:CANCELLED\") ||\n key.startsWith(\"orders:INCOMPLETE\") ||\n key.startsWith(\"orders:NEW\")\n ) {\n return prevData;\n }\n // if filled/history list:\n return this.insert(prevData);\n }\n }\n\n default:\n return prevData || [];\n }\n }\n\n insert(orders?: API.OrderResponse[] | undefined): API.OrderResponse[] {\n const index = lensIndex<API.OrderResponse>(0);\n return over(\n //@ts-ignore\n index,\n (item: any) => ({\n meta: {\n ...item.meta,\n total: item.meta.total + 1,\n },\n rows: [this.data, ...item.rows],\n }),\n orders\n ) as API.OrderResponse[];\n }\n\n insetOrUpdate(orders: API.OrderResponse[]): API.OrderResponse[] {\n if (this.orderIsExisting(orders)) {\n return this.update(orders);\n }\n return this.insert(orders);\n }\n\n update(prevData: API.OrderResponse[]): API.OrderResponse[] {\n const idx = this.findOrderIndex(prevData);\n if (!Array.isArray(idx)) {\n return prevData || [];\n }\n\n const [index, index2] = idx;\n\n return prevData.map((item, i) => {\n return {\n meta: { ...item.meta },\n rows: item.rows.map((order, j) => {\n if (index === i && index2 === j) {\n return { ...order, ...this.data };\n }\n return order;\n }),\n };\n });\n }\n\n remove(prevData: API.OrderResponse[]): API.OrderResponse[] {\n const idx = this.findOrderIndex(prevData);\n if (!Array.isArray(idx)) {\n return prevData;\n }\n\n const [index, index2] = idx;\n\n return prevData.map((item, i) => {\n return {\n meta: { ...item.meta, total: item.meta.total - 1 },\n rows:\n index === i ? item.rows.filter((_, i) => i !== index2) : item.rows,\n };\n });\n }\n\n findOrderIndex(orders: API.OrderResponse[]): number[] | undefined {\n let index: number = 0;\n let index2: number | undefined;\n\n for (; index < orders.length; index++) {\n // index = idx;\n const item = orders[index];\n\n for (let idx2 = 0; idx2 < item.rows.length; idx2++) {\n const element = item.rows[idx2];\n if (\n (element as API.AlgoOrder).algo_order_id === this.orderId ||\n (element as API.Order).order_id === this.orderId\n ) {\n index2 = idx2;\n\n break;\n }\n }\n if (typeof index2 !== \"undefined\") {\n break;\n }\n }\n\n if (typeof index2 === \"undefined\") {\n return;\n }\n\n return [index, index2];\n }\n\n orderIsExisting(orders: API.OrderResponse[]): boolean {\n const index = this.findOrderIndex(orders);\n return Array.isArray(index);\n }\n}\n"],"names":["lensIndex","over","BaseMergeHandler","data","constructor","message","formatOrder","pre","created_time","timestamp","type","endsWith","replace","merge","key","prevData","status","startsWith","insetOrUpdate","remove","insert","update","orderIsExisting","total_executed_quantity","quantity","orders","index","item","meta","total","rows","idx","findOrderIndex","Array","isArray","index2","map","i","order","j","filter","_","length","idx2","element","algo_order_id","orderId","order_id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { API } from "@orderly.network/types";
2
+ export interface IOrderMergeHandler<T, D> {
3
+ merge(key: string, updatedOrder: T, prevData: API.OrderResponse[]): API.OrderResponse[];
4
+ insert(prevData: API.OrderResponse[]): API.OrderResponse[];
5
+ update(prevData: API.OrderResponse[]): API.OrderResponse[];
6
+ remove(prevData: API.OrderResponse[]): API.OrderResponse[];
7
+ }
8
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/services/orderMerge/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAa,MAAM,wBAAwB,CAAC;AAExD,MAAM,WAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACtC,KAAK,CACH,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,EACf,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,GAC5B,GAAG,CAAC,aAAa,EAAE,CAAC;IACvB,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;IAC3D,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;IAC3D,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;CAC5D"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/orderMerge/interface.ts"],"sourcesContent":["import { API, WSMessage } from \"@orderly.network/types\";\n\nexport interface IOrderMergeHandler<T, D> {\n merge(\n key: string,\n updatedOrder: T,\n prevData: API.OrderResponse[]\n ): API.OrderResponse[];\n insert(prevData: API.OrderResponse[]): API.OrderResponse[];\n update(prevData: API.OrderResponse[]): API.OrderResponse[];\n remove(prevData: API.OrderResponse[]): API.OrderResponse[];\n}\n"],"names":[],"rangeMappings":"","mappings":"AAEA,WASC"}