@orderly.network/hooks 1.3.2 → 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.
- package/esm/dataProvider.d.ts.map +1 -1
- package/esm/dataProvider.js +0 -2
- package/esm/dataProvider.js.map +1 -1
- package/esm/index.d.ts +4 -3
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -3
- package/esm/index.js.map +1 -1
- package/esm/orderly/orderlyHooks.d.ts +3 -2
- package/esm/orderly/orderlyHooks.d.ts.map +1 -1
- package/esm/orderly/orderlyHooks.js +3 -2
- package/esm/orderly/orderlyHooks.js.map +1 -1
- package/esm/orderly/useCollateral.js +2 -2
- package/esm/orderly/useCollateral.js.map +1 -1
- package/esm/orderly/useMarginRatio.js +1 -1
- package/esm/orderly/useMarginRatio.js.map +1 -1
- package/esm/orderly/useMaxQty.js +2 -2
- package/esm/orderly/useMaxQty.js.map +1 -1
- package/esm/orderly/useOrderEntry.d.ts.map +1 -1
- package/esm/orderly/useOrderEntry.js +15 -12
- package/esm/orderly/useOrderEntry.js.map +1 -1
- package/esm/orderly/useOrderEntryNext/index.d.ts +1 -0
- package/esm/orderly/useOrderEntryNext/index.d.ts.map +1 -0
- package/esm/orderly/useOrderEntryNext/index.js +2 -0
- package/esm/orderly/useOrderEntryNext/index.js.map +1 -0
- package/esm/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +19 -12
- package/esm/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
- package/esm/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +91 -26
- package/esm/orderly/useOrderStream/useOrderStream.js.map +1 -0
- package/esm/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
- package/esm/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
- package/esm/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
- package/esm/orderly/usePositionStream/usePositionStream.js.map +1 -0
- package/esm/orderly/usePositionStream/utils.d.ts +8 -0
- package/esm/orderly/usePositionStream/utils.d.ts.map +1 -0
- package/esm/orderly/usePositionStream/utils.js +34 -0
- package/esm/orderly/usePositionStream/utils.js.map +1 -0
- package/esm/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/esm/orderly/usePrivateDataObserver.js +30 -43
- package/esm/orderly/usePrivateDataObserver.js.map +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts +32 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.js +23 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +59 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js +211 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.js +226 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
- package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/baseAlgoCreator.d.ts +22 -0
- package/esm/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/baseAlgoCreator.js +57 -0
- package/esm/services/orderCreator/baseAlgoCreator.js.map +1 -0
- package/esm/services/orderCreator/baseCreator.d.ts +14 -0
- package/esm/services/orderCreator/baseCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/baseCreator.js +92 -0
- package/esm/services/orderCreator/baseCreator.js.map +1 -0
- package/esm/services/orderCreator/factory.d.ts +7 -0
- package/esm/services/orderCreator/factory.d.ts.map +1 -0
- package/esm/services/orderCreator/factory.js +45 -0
- package/esm/services/orderCreator/factory.js.map +1 -0
- package/esm/services/orderCreator/fokCreator.d.ts +4 -0
- package/esm/services/orderCreator/fokCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/fokCreator.js +5 -0
- package/esm/services/orderCreator/fokCreator.js.map +1 -0
- package/esm/services/orderCreator/generalCreator.d.ts +8 -0
- package/esm/services/orderCreator/generalCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/generalCreator.js +15 -0
- package/esm/services/orderCreator/generalCreator.js.map +1 -0
- package/esm/services/orderCreator/interface.d.ts +23 -0
- package/esm/services/orderCreator/interface.d.ts.map +1 -0
- package/esm/services/orderCreator/interface.js +3 -0
- package/esm/services/orderCreator/interface.js.map +1 -0
- package/esm/services/orderCreator/iocCreator.d.ts +4 -0
- package/esm/services/orderCreator/iocCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/iocCreator.js +5 -0
- package/esm/services/orderCreator/iocCreator.js.map +1 -0
- package/esm/services/orderCreator/limitOrderCreator.d.ts +8 -0
- package/esm/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/limitOrderCreator.js +69 -0
- package/esm/services/orderCreator/limitOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/marketOrderCreator.d.ts +24 -0
- package/esm/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/marketOrderCreator.js +18 -0
- package/esm/services/orderCreator/marketOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/postOnlyCreator.d.ts +4 -0
- package/esm/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/postOnlyCreator.js +5 -0
- package/esm/services/orderCreator/postOnlyCreator.js.map +1 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.js +84 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.js +46 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/tpslOrderCreator.d.ts +32 -0
- package/esm/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/tpslOrderCreator.js +88 -0
- package/esm/services/orderCreator/tpslOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.js +74 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.js +38 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
- package/esm/services/orderMerge/baseMergeHandler.d.ts +22 -0
- package/esm/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
- package/esm/services/orderMerge/baseMergeHandler.js +160 -0
- package/esm/services/orderMerge/baseMergeHandler.js.map +1 -0
- package/esm/services/orderMerge/interface.d.ts +8 -0
- package/esm/services/orderMerge/interface.d.ts.map +1 -0
- package/esm/services/orderMerge/interface.js +3 -0
- package/esm/services/orderMerge/interface.js.map +1 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.js +15 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
- package/esm/usePoster.d.ts +3 -0
- package/esm/usePoster.d.ts.map +1 -1
- package/esm/usePoster.js +3 -1
- package/esm/usePoster.js.map +1 -1
- package/esm/utils/createOrder.d.ts +0 -55
- package/esm/utils/createOrder.d.ts.map +1 -1
- package/esm/utils/createOrder.js +0 -334
- package/esm/utils/createOrder.js.map +1 -1
- package/esm/utils/fokCreator.d.ts +1 -0
- package/esm/utils/fokCreator.d.ts.map +1 -0
- package/esm/utils/fokCreator.js +2 -0
- package/esm/utils/fokCreator.js.map +1 -0
- package/esm/utils/index.d.ts +5 -0
- package/esm/utils/index.d.ts.map +1 -0
- package/esm/utils/index.js +6 -0
- package/esm/utils/index.js.map +1 -0
- package/esm/utils/order.d.ts +2 -0
- package/esm/utils/order.d.ts.map +1 -0
- package/esm/utils/order.js +3 -0
- package/esm/utils/order.js.map +1 -0
- package/esm/utils/swr.d.ts +3 -1
- package/esm/utils/swr.d.ts.map +1 -1
- package/esm/utils/swr.js +123 -89
- package/esm/utils/swr.js.map +1 -1
- package/esm/utils/ws.d.ts +2 -0
- package/esm/utils/ws.d.ts.map +1 -0
- package/esm/utils/ws.js +9 -0
- package/esm/utils/ws.js.map +1 -0
- package/esm/version.d.ts +1 -1
- package/esm/version.d.ts.map +1 -1
- package/esm/version.js +2 -2
- package/esm/version.js.map +1 -1
- package/lib/dataProvider.d.ts.map +1 -1
- package/lib/dataProvider.js +0 -2
- package/lib/dataProvider.js.map +1 -1
- package/lib/index.d.ts +4 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +10 -3
- package/lib/index.js.map +1 -1
- package/lib/orderly/orderlyHooks.d.ts +3 -2
- package/lib/orderly/orderlyHooks.d.ts.map +1 -1
- package/lib/orderly/orderlyHooks.js +6 -2
- package/lib/orderly/orderlyHooks.js.map +1 -1
- package/lib/orderly/useCollateral.js +2 -2
- package/lib/orderly/useCollateral.js.map +1 -1
- package/lib/orderly/useMarginRatio.js +1 -1
- package/lib/orderly/useMarginRatio.js.map +1 -1
- package/lib/orderly/useMaxQty.js +2 -2
- package/lib/orderly/useMaxQty.js.map +1 -1
- package/lib/orderly/useOrderEntry.d.ts.map +1 -1
- package/lib/orderly/useOrderEntry.js +14 -12
- package/lib/orderly/useOrderEntry.js.map +1 -1
- package/lib/orderly/useOrderEntryNext/index.d.ts +1 -0
- package/lib/orderly/useOrderEntryNext/index.d.ts.map +1 -0
- package/lib/orderly/useOrderEntryNext/index.js +3 -0
- package/lib/orderly/useOrderEntryNext/index.js.map +1 -0
- package/lib/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +19 -12
- package/lib/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
- package/lib/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +89 -25
- package/lib/orderly/useOrderStream/useOrderStream.js.map +1 -0
- package/lib/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
- package/lib/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
- package/lib/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
- package/lib/orderly/usePositionStream/usePositionStream.js.map +1 -0
- package/lib/orderly/usePositionStream/utils.d.ts +8 -0
- package/lib/orderly/usePositionStream/utils.d.ts.map +1 -0
- package/lib/orderly/usePositionStream/utils.js +55 -0
- package/lib/orderly/usePositionStream/utils.js.map +1 -0
- package/lib/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/lib/orderly/usePrivateDataObserver.js +28 -41
- package/lib/orderly/usePrivateDataObserver.js.map +1 -1
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts +32 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.js +33 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +59 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js +218 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.js +252 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
- package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/baseAlgoCreator.d.ts +22 -0
- package/lib/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/baseAlgoCreator.js +67 -0
- package/lib/services/orderCreator/baseAlgoCreator.js.map +1 -0
- package/lib/services/orderCreator/baseCreator.d.ts +14 -0
- package/lib/services/orderCreator/baseCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/baseCreator.js +102 -0
- package/lib/services/orderCreator/baseCreator.js.map +1 -0
- package/lib/services/orderCreator/factory.d.ts +7 -0
- package/lib/services/orderCreator/factory.d.ts.map +1 -0
- package/lib/services/orderCreator/factory.js +54 -0
- package/lib/services/orderCreator/factory.js.map +1 -0
- package/lib/services/orderCreator/fokCreator.d.ts +4 -0
- package/lib/services/orderCreator/fokCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/fokCreator.js +15 -0
- package/lib/services/orderCreator/fokCreator.js.map +1 -0
- package/lib/services/orderCreator/generalCreator.d.ts +8 -0
- package/lib/services/orderCreator/generalCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/generalCreator.js +25 -0
- package/lib/services/orderCreator/generalCreator.js.map +1 -0
- package/lib/services/orderCreator/interface.d.ts +23 -0
- package/lib/services/orderCreator/interface.d.ts.map +1 -0
- package/lib/services/orderCreator/interface.js +6 -0
- package/lib/services/orderCreator/interface.js.map +1 -0
- package/lib/services/orderCreator/iocCreator.d.ts +4 -0
- package/lib/services/orderCreator/iocCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/iocCreator.js +15 -0
- package/lib/services/orderCreator/iocCreator.js.map +1 -0
- package/lib/services/orderCreator/limitOrderCreator.d.ts +8 -0
- package/lib/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/limitOrderCreator.js +79 -0
- package/lib/services/orderCreator/limitOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/marketOrderCreator.d.ts +24 -0
- package/lib/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/marketOrderCreator.js +28 -0
- package/lib/services/orderCreator/marketOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/postOnlyCreator.d.ts +4 -0
- package/lib/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/postOnlyCreator.js +15 -0
- package/lib/services/orderCreator/postOnlyCreator.js.map +1 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.js +93 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.js +56 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/tpslOrderCreator.d.ts +32 -0
- package/lib/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/tpslOrderCreator.js +94 -0
- package/lib/services/orderCreator/tpslOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.js +83 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.js +48 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
- package/lib/services/orderMerge/baseMergeHandler.d.ts +22 -0
- package/lib/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
- package/lib/services/orderMerge/baseMergeHandler.js +170 -0
- package/lib/services/orderMerge/baseMergeHandler.js.map +1 -0
- package/lib/services/orderMerge/interface.d.ts +8 -0
- package/lib/services/orderMerge/interface.d.ts.map +1 -0
- package/lib/services/orderMerge/interface.js +6 -0
- package/lib/services/orderMerge/interface.js.map +1 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.js +25 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
- package/lib/usePoster.d.ts +3 -0
- package/lib/usePoster.d.ts.map +1 -1
- package/lib/usePoster.js +3 -1
- package/lib/usePoster.js.map +1 -1
- package/lib/utils/createOrder.d.ts +0 -55
- package/lib/utils/createOrder.d.ts.map +1 -1
- package/lib/utils/createOrder.js +3 -375
- package/lib/utils/createOrder.js.map +1 -1
- package/lib/utils/fokCreator.d.ts +1 -0
- package/lib/utils/fokCreator.d.ts.map +1 -0
- package/lib/utils/fokCreator.js +3 -0
- package/lib/utils/fokCreator.js.map +1 -0
- package/lib/utils/index.d.ts +5 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +36 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/order.d.ts +2 -0
- package/lib/utils/order.d.ts.map +1 -0
- package/lib/utils/order.js +6 -0
- package/lib/utils/order.js.map +1 -0
- package/lib/utils/swr.d.ts +3 -1
- package/lib/utils/swr.d.ts.map +1 -1
- package/lib/utils/swr.js +128 -89
- package/lib/utils/swr.js.map +1 -1
- package/lib/utils/ws.d.ts +2 -0
- package/lib/utils/ws.d.ts.map +1 -0
- package/lib/utils/ws.js +19 -0
- package/lib/utils/ws.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.d.ts.map +1 -1
- package/lib/version.js +2 -2
- package/lib/version.js.map +1 -1
- package/package.json +9 -7
- package/esm/orderly/useOrderStream.d.ts.map +0 -1
- package/esm/orderly/useOrderStream.js.map +0 -1
- package/esm/orderly/usePositionStream.d.ts.map +0 -1
- package/esm/orderly/usePositionStream.js.map +0 -1
- package/lib/orderly/useOrderStream.d.ts.map +0 -1
- package/lib/orderly/useOrderStream.js.map +0 -1
- package/lib/orderly/usePositionStream.d.ts.map +0 -1
- package/lib/orderly/usePositionStream.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orderly/useOrderEntryNext/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/orderly/useOrderEntryNext/index.ts"],"names":[],"rangeMappings":"","mappings":""}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import { OrderSide, OrderEntity, OrderStatus } from "@orderly.network/types";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
loading: boolean;
|
|
5
|
-
update: (order: any) => void;
|
|
6
|
-
cancel: (order: any) => void;
|
|
7
|
-
}
|
|
8
|
-
type Params = {
|
|
1
|
+
import { OrderSide, OrderEntity, OrderStatus, API, AlgoOrderRootType } from "@orderly.network/types";
|
|
2
|
+
type CombineOrderType = AlgoOrderRootType | "ALL";
|
|
3
|
+
export declare const useOrderStream: (params: {
|
|
9
4
|
symbol?: string;
|
|
10
5
|
status?: OrderStatus;
|
|
11
6
|
size?: number;
|
|
12
7
|
side?: OrderSide;
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Include the order type
|
|
10
|
+
* @default ["ALL"]
|
|
11
|
+
*/
|
|
12
|
+
includes?: CombineOrderType[];
|
|
13
|
+
/**
|
|
14
|
+
* Exclude the order type
|
|
15
|
+
* @default []
|
|
16
|
+
*/
|
|
17
|
+
excludes?: CombineOrderType[];
|
|
18
|
+
}, options?: {
|
|
15
19
|
/**
|
|
16
20
|
* Keep the state update alive
|
|
17
21
|
*/
|
|
@@ -21,15 +25,18 @@ export declare const useOrderStream: (params: Params, options?: {
|
|
|
21
25
|
*/
|
|
22
26
|
stopOnUnmount?: boolean;
|
|
23
27
|
}) => readonly [any[] | null, {
|
|
24
|
-
readonly total:
|
|
28
|
+
readonly total: number;
|
|
25
29
|
readonly isLoading: boolean;
|
|
26
30
|
readonly refresh: import("swr/_internal").KeyedMutator<any[]>;
|
|
27
31
|
readonly loadMore: () => void;
|
|
28
|
-
readonly cancelAllOrders: () =>
|
|
32
|
+
readonly cancelAllOrders: () => Promise<[any, any]>;
|
|
33
|
+
readonly cancelAllAlgoOrders: () => Promise<[any, any]>;
|
|
29
34
|
readonly updateOrder: (orderId: string, order: OrderEntity) => Promise<any>;
|
|
30
35
|
readonly cancelOrder: (orderId: number, symbol?: string) => Promise<any>;
|
|
31
36
|
readonly updateAlgoOrder: (orderId: string, order: OrderEntity) => Promise<any>;
|
|
32
37
|
readonly cancelAlgoOrder: (orderId: number, symbol?: string) => Promise<any>;
|
|
38
|
+
readonly cancelTPSLChildOrder: (orderId: number, rootAlgoOrderId: number) => Promise<any>;
|
|
39
|
+
readonly updateTPSLOrder: (orderId: number, childOrders: API.AlgoOrder["child_orders"]) => Promise<any>;
|
|
33
40
|
readonly errors: {
|
|
34
41
|
readonly cancelOrder: unknown;
|
|
35
42
|
readonly updateOrder: unknown;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOrderStream.d.ts","sourceRoot":"","sources":["../../../src/orderly/useOrderStream/useOrderStream.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,GAAG,EACH,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAWhC,KAAK,gBAAgB,GAAG,iBAAiB,GAAG,KAAK,CAAC;AAElD,eAAO,MAAM,cAAc,WAIjB;IACN,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B,YACS;IACR;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;;;;;;;oCAwKyC,MAAM,SAAS,WAAW;oCAoD1B,MAAM,WAAW,MAAM;wCA7CnB,MAAM,SAAS,WAAW;wCAoD1B,MAAM,WAAW,MAAM;6CAazD,MAAM,mBAAmB,MAAM,KAAG,QAAQ,GAAG,CAAC;wCAmB7C,MAAM,eACF,IAAI,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;EA0C/C,CAAC"}
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import { usePrivateInfiniteQuery } from "
|
|
1
|
+
import { usePrivateInfiniteQuery } from "../../usePrivateInfiniteQuery";
|
|
2
2
|
import { useCallback, useEffect, useMemo } from "react";
|
|
3
|
-
import { OrderStatus } from "@orderly.network/types";
|
|
4
|
-
import { useMarkPricesStream } from "
|
|
5
|
-
import { useMutation } from "
|
|
6
|
-
import version from "
|
|
7
|
-
import { useDataCenterContext } from "
|
|
8
|
-
import { generateKeyFun } from "
|
|
9
|
-
import {
|
|
3
|
+
import { OrderStatus, AlgoOrderRootType } from "@orderly.network/types";
|
|
4
|
+
import { useMarkPricesStream } from "../useMarkPricesStream";
|
|
5
|
+
import { useMutation } from "../../useMutation";
|
|
6
|
+
import version from "../../version";
|
|
7
|
+
import { useDataCenterContext } from "../../dataProvider";
|
|
8
|
+
import { generateKeyFun } from "../../utils/swr";
|
|
9
|
+
import { SDKError } from "@orderly.network/types";
|
|
10
10
|
export const useOrderStream = (/**
|
|
11
11
|
* Orders query params
|
|
12
12
|
*/ params, options)=>{
|
|
13
|
-
const { status, symbol, side, size = 100
|
|
13
|
+
const { status, symbol, side, size = 100, includes = [
|
|
14
|
+
"ALL"
|
|
15
|
+
], excludes = [] } = params;
|
|
14
16
|
const { data: markPrices = {} } = useMarkPricesStream();
|
|
15
|
-
const ee = useEventEmitter();
|
|
16
17
|
const { regesterKeyHandler, unregisterKeyHandler } = useDataCenterContext();
|
|
17
18
|
const [doCancelOrder, { error: cancelOrderError, isMutating: cancelMutating }] = useMutation("/v1/order", "DELETE");
|
|
19
|
+
const [doCancelAllOrders] = useMutation("/v1/orders", "DELETE");
|
|
18
20
|
const [doUpdateOrder, { error: updateOrderError, isMutating: updateMutating }] = useMutation("/v1/order", "PUT");
|
|
19
21
|
const [doCanceAlgolOrder, { error: cancelAlgoOrderError, isMutating: cancelAlgoMutating }] = useMutation("/v1/algo/order", "DELETE");
|
|
22
|
+
const [doCancelAllAlgoOrders] = useMutation("/v1/algo/orders", "DELETE");
|
|
20
23
|
const [doUpdateAlgoOrder, { error: updateAlgoOrderError, isMutating: updateAlgoMutating }] = useMutation("/v1/algo/order", "PUT");
|
|
21
24
|
useEffect(()=>{
|
|
22
25
|
const formatKey = (value)=>value ? `:${value}` : "";
|
|
@@ -55,9 +58,25 @@ export const useOrderStream = (/**
|
|
|
55
58
|
if (!ordersResponse.data) {
|
|
56
59
|
return null;
|
|
57
60
|
}
|
|
58
|
-
|
|
61
|
+
let orders = ordersResponse.data?.map((item)=>item.rows)?.flat();
|
|
62
|
+
// return ordersResponse.data?.map((item) => item.rows)?.flat();
|
|
63
|
+
if (includes.includes("ALL") && excludes.length === 0) {
|
|
64
|
+
return orders;
|
|
65
|
+
}
|
|
66
|
+
if (includes.includes("ALL") && excludes.length > 0) {
|
|
67
|
+
return orders?.filter((item)=>!excludes.includes(item.algo_type));
|
|
68
|
+
}
|
|
69
|
+
if (includes.length > 0 && excludes.length === 0) {
|
|
70
|
+
return orders?.filter((item)=>includes.includes(item.algo_type));
|
|
71
|
+
}
|
|
72
|
+
if (includes.length > 0 && excludes.length > 0) {
|
|
73
|
+
return orders?.filter((item)=>includes.includes(item.algo_type) && !excludes.includes(item.algo_type));
|
|
74
|
+
}
|
|
75
|
+
return orders;
|
|
59
76
|
}, [
|
|
60
|
-
ordersResponse.data
|
|
77
|
+
ordersResponse.data,
|
|
78
|
+
includes,
|
|
79
|
+
excludes
|
|
61
80
|
]);
|
|
62
81
|
// console.log(ordersResponse.data);
|
|
63
82
|
const orders = useMemo(()=>{
|
|
@@ -68,10 +87,17 @@ export const useOrderStream = (/**
|
|
|
68
87
|
return flattenOrders;
|
|
69
88
|
}
|
|
70
89
|
return flattenOrders.map((item)=>{
|
|
71
|
-
|
|
90
|
+
const order = {
|
|
72
91
|
...item,
|
|
73
92
|
mark_price: markPrices[item.symbol] ?? 0
|
|
74
93
|
};
|
|
94
|
+
///TODO: remove this when BE provides the correct data
|
|
95
|
+
// console.log("------------->>>>>>>>", order);
|
|
96
|
+
if (order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL || order.algo_type === AlgoOrderRootType.TP_SL) {
|
|
97
|
+
order.quantity = order.child_orders[0].quantity;
|
|
98
|
+
}
|
|
99
|
+
///-----------------todo end----------------
|
|
100
|
+
return order;
|
|
75
101
|
});
|
|
76
102
|
}, [
|
|
77
103
|
flattenOrders,
|
|
@@ -79,13 +105,33 @@ export const useOrderStream = (/**
|
|
|
79
105
|
status
|
|
80
106
|
]);
|
|
81
107
|
const total = useMemo(()=>{
|
|
82
|
-
return
|
|
108
|
+
return orders?.length || 0;
|
|
109
|
+
// return ordersResponse.data?.[0]?.meta?.total || 0;
|
|
83
110
|
}, [
|
|
84
|
-
|
|
111
|
+
orders?.length
|
|
85
112
|
]);
|
|
86
113
|
/**
|
|
87
114
|
* cancel all orders
|
|
88
|
-
*/ const cancelAllOrders = useCallback(()=>{
|
|
115
|
+
*/ const cancelAllOrders = useCallback(()=>{
|
|
116
|
+
return Promise.all([
|
|
117
|
+
doCancelAllOrders(null),
|
|
118
|
+
doCancelAllAlgoOrders(null, {
|
|
119
|
+
algo_type: "STOP"
|
|
120
|
+
})
|
|
121
|
+
]);
|
|
122
|
+
}, [
|
|
123
|
+
ordersResponse.data
|
|
124
|
+
]);
|
|
125
|
+
const cancelAllAlgoOrders = useCallback(()=>{
|
|
126
|
+
return Promise.all([
|
|
127
|
+
doCancelAllAlgoOrders(null, {
|
|
128
|
+
algo_type: "TP_SL"
|
|
129
|
+
}),
|
|
130
|
+
doCancelAllAlgoOrders(null, {
|
|
131
|
+
algo_type: "POSITIONAL_TP_SL"
|
|
132
|
+
})
|
|
133
|
+
]);
|
|
134
|
+
}, [
|
|
89
135
|
ordersResponse.data
|
|
90
136
|
]);
|
|
91
137
|
const _updateOrder = useCallback((orderId, order, type)=>{
|
|
@@ -112,16 +158,7 @@ export const useOrderStream = (/**
|
|
|
112
158
|
/**
|
|
113
159
|
* update algo order
|
|
114
160
|
*/ const updateAlgoOrder = useCallback((orderId, order)=>{
|
|
115
|
-
return _updateOrder(orderId, order, "algoOrder")
|
|
116
|
-
// TODO: remove this when the WS service provides the correct data
|
|
117
|
-
ee.emit("algoOrder:cache", {
|
|
118
|
-
// ...res.data.rows[0],
|
|
119
|
-
...order,
|
|
120
|
-
order_id: Number(orderId)
|
|
121
|
-
});
|
|
122
|
-
//------------fix end----------------
|
|
123
|
-
return res;
|
|
124
|
-
});
|
|
161
|
+
return _updateOrder(orderId, order, "algoOrder");
|
|
125
162
|
}, []);
|
|
126
163
|
const _cancelOrder = useCallback((orderId, type, symbol)=>{
|
|
127
164
|
switch(type){
|
|
@@ -171,6 +208,31 @@ export const useOrderStream = (/**
|
|
|
171
208
|
const loadMore = ()=>{
|
|
172
209
|
ordersResponse.setSize(ordersResponse.size + 1);
|
|
173
210
|
};
|
|
211
|
+
// const cancelTPSLOrder = useCallback((orderId:number, symbol:string)=>{
|
|
212
|
+
// return
|
|
213
|
+
// });
|
|
214
|
+
const cancelTPSLChildOrder = useCallback((orderId, rootAlgoOrderId)=>{
|
|
215
|
+
return doUpdateAlgoOrder({
|
|
216
|
+
order_id: rootAlgoOrderId,
|
|
217
|
+
child_orders: [
|
|
218
|
+
{
|
|
219
|
+
order_id: orderId,
|
|
220
|
+
is_activated: false
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
});
|
|
224
|
+
}, []);
|
|
225
|
+
const updateTPSLOrder = useCallback((/**
|
|
226
|
+
* the root algo order id
|
|
227
|
+
*/ orderId, childOrders)=>{
|
|
228
|
+
if (!Array.isArray(childOrders)) {
|
|
229
|
+
throw new SDKError("children orders is required");
|
|
230
|
+
}
|
|
231
|
+
return doUpdateAlgoOrder({
|
|
232
|
+
order_id: orderId,
|
|
233
|
+
children_orders: childOrders
|
|
234
|
+
});
|
|
235
|
+
}, []);
|
|
174
236
|
return [
|
|
175
237
|
orders,
|
|
176
238
|
{
|
|
@@ -179,10 +241,13 @@ export const useOrderStream = (/**
|
|
|
179
241
|
refresh: ordersResponse.mutate,
|
|
180
242
|
loadMore,
|
|
181
243
|
cancelAllOrders,
|
|
244
|
+
cancelAllAlgoOrders,
|
|
182
245
|
updateOrder,
|
|
183
246
|
cancelOrder,
|
|
184
247
|
updateAlgoOrder,
|
|
185
248
|
cancelAlgoOrder,
|
|
249
|
+
cancelTPSLChildOrder,
|
|
250
|
+
updateTPSLOrder,
|
|
186
251
|
errors: {
|
|
187
252
|
cancelOrder: cancelOrderError,
|
|
188
253
|
updateOrder: updateOrderError,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/orderly/useOrderStream/useOrderStream.ts"],"sourcesContent":["import { usePrivateInfiniteQuery } from \"../../usePrivateInfiniteQuery\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport {\n OrderSide,\n OrderEntity,\n OrderStatus,\n API,\n AlgoOrderRootType,\n} from \"@orderly.network/types\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { useMutation } from \"../../useMutation\";\nimport version from \"../../version\";\nimport { useDataCenterContext } from \"../../dataProvider\";\nimport { generateKeyFun } from \"../../utils/swr\";\nimport { useEventEmitter } from \"../../useEventEmitter\";\nimport { SDKError } from \"@orderly.network/types\";\n\ntype CreateOrderType = \"normalOrder\" | \"algoOrder\";\n\ntype CombineOrderType = AlgoOrderRootType | \"ALL\";\n\nexport const useOrderStream = (\n /**\n * Orders query params\n */\n params: {\n symbol?: string;\n status?: OrderStatus;\n size?: number;\n side?: OrderSide;\n /**\n * Include the order type\n * @default [\"ALL\"]\n */\n includes?: CombineOrderType[];\n /**\n * Exclude the order type\n * @default []\n */\n excludes?: CombineOrderType[];\n },\n options?: {\n /**\n * Keep the state update alive\n */\n keeplive?: boolean;\n /**\n * Stop the state update when the component unmount\n */\n stopOnUnmount?: boolean;\n }\n) => {\n const {\n status,\n symbol,\n side,\n size = 100,\n includes = [\"ALL\"],\n excludes = [],\n } = params;\n\n const { data: markPrices = {} } = useMarkPricesStream();\n\n const { regesterKeyHandler, unregisterKeyHandler } = useDataCenterContext();\n const [\n doCancelOrder,\n { error: cancelOrderError, isMutating: cancelMutating },\n ] = useMutation(\"/v1/order\", \"DELETE\");\n\n const [doCancelAllOrders] = useMutation(\"/v1/orders\", \"DELETE\");\n\n const [\n doUpdateOrder,\n { error: updateOrderError, isMutating: updateMutating },\n ] = useMutation(\"/v1/order\", \"PUT\");\n\n const [\n doCanceAlgolOrder,\n { error: cancelAlgoOrderError, isMutating: cancelAlgoMutating },\n ] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [doCancelAllAlgoOrders] = useMutation(\"/v1/algo/orders\", \"DELETE\");\n\n const [\n doUpdateAlgoOrder,\n { error: updateAlgoOrderError, isMutating: updateAlgoMutating },\n ] = useMutation(\"/v1/algo/order\", \"PUT\");\n\n useEffect(() => {\n const formatKey = (value?: string) => (value ? `:${value}` : \"\");\n const key = `orders${formatKey(status)}${formatKey(symbol)}${formatKey(\n side\n )}`;\n regesterKeyHandler?.(key, generateKeyFun({ status, symbol, side, size }));\n\n return () => {\n if (!options?.stopOnUnmount) return;\n\n unregisterKeyHandler(key);\n };\n }, [status, symbol, side, options?.keeplive]);\n\n const ordersResponse = usePrivateInfiniteQuery(\n generateKeyFun({ status, symbol, side, size }),\n {\n initialSize: 1,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const flattenOrders = useMemo(() => {\n if (!ordersResponse.data) {\n return null;\n }\n let orders = ordersResponse.data?.map((item) => item.rows)?.flat();\n\n // return ordersResponse.data?.map((item) => item.rows)?.flat();\n\n if (includes.includes(\"ALL\") && excludes.length === 0) {\n return orders;\n }\n\n if (includes.includes(\"ALL\") && excludes.length > 0) {\n return orders?.filter((item) => !excludes.includes(item.algo_type));\n }\n\n if (includes.length > 0 && excludes.length === 0) {\n return orders?.filter((item) => includes.includes(item.algo_type));\n }\n\n if (includes.length > 0 && excludes.length > 0) {\n return orders?.filter(\n (item) =>\n includes.includes(item.algo_type) &&\n !excludes.includes(item.algo_type)\n );\n }\n\n return orders;\n }, [ordersResponse.data, includes, excludes]);\n\n // console.log(ordersResponse.data);\n\n const orders = useMemo(() => {\n if (!flattenOrders) {\n return null;\n }\n\n if (status !== OrderStatus.NEW && status !== OrderStatus.INCOMPLETE) {\n return flattenOrders;\n }\n return flattenOrders.map((item) => {\n const order = {\n ...item,\n mark_price: (markPrices as any)[item.symbol] ?? 0,\n };\n\n ///TODO: remove this when BE provides the correct data\n // console.log(\"------------->>>>>>>>\", order);\n if (\n order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL ||\n order.algo_type === AlgoOrderRootType.TP_SL\n ) {\n order.quantity = order.child_orders[0].quantity;\n }\n ///-----------------todo end----------------\n\n return order;\n });\n }, [flattenOrders, markPrices, status]);\n\n const total = useMemo(() => {\n return orders?.length || 0;\n // return ordersResponse.data?.[0]?.meta?.total || 0;\n }, [orders?.length]);\n\n /**\n * cancel all orders\n */\n const cancelAllOrders = useCallback(() => {\n return Promise.all([\n doCancelAllOrders(null),\n doCancelAllAlgoOrders(null, { algo_type: \"STOP\" }),\n ]);\n }, [ordersResponse.data]);\n\n const cancelAllAlgoOrders = useCallback(() => {\n return Promise.all([\n doCancelAllAlgoOrders(null, { algo_type: \"TP_SL\" }),\n doCancelAllAlgoOrders(null, { algo_type: \"POSITIONAL_TP_SL\" }),\n ]);\n }, [ordersResponse.data]);\n\n const _updateOrder = useCallback(\n (orderId: string, order: OrderEntity, type: CreateOrderType) => {\n switch (type) {\n case \"algoOrder\":\n return doUpdateAlgoOrder({\n order_id: orderId,\n price: order[\"order_price\"],\n quantity: order[\"order_quantity\"],\n trigger_price: order[\"trigger_price\"],\n });\n default:\n return doUpdateOrder({ ...order, order_id: orderId });\n }\n },\n []\n );\n\n /**\n * update order\n */\n const updateOrder = useCallback((orderId: string, order: OrderEntity) => {\n return _updateOrder(orderId, order, \"normalOrder\");\n }, []);\n\n /**\n * update algo order\n */\n const updateAlgoOrder = useCallback((orderId: string, order: OrderEntity) => {\n return _updateOrder(orderId, order, \"algoOrder\");\n }, []);\n\n const _cancelOrder = useCallback(\n (orderId: number, type: CreateOrderType, symbol?: string) => {\n switch (type) {\n case \"algoOrder\":\n return doCanceAlgolOrder(null, {\n // @ts-ignore\n order_id: orderId,\n symbol,\n source: `SDK${version}`,\n }).then((res: any) => {\n if (res.success) {\n ordersResponse.mutate();\n return res;\n } else {\n throw new Error(res.message);\n }\n });\n default:\n return doCancelOrder(null, {\n order_id: orderId,\n symbol,\n source: `SDK_${version}`,\n }).then((res: any) => {\n if (res.success) {\n // return ordersResponse.mutate().then(() => {\n // return res;\n // });\n //Optimistic Updates\n // ordersResponse.mutate();\n return res;\n } else {\n throw new Error(res.message);\n }\n });\n }\n },\n []\n );\n /**\n * calcel order\n */\n const cancelOrder = useCallback((orderId: number, symbol?: string) => {\n return _cancelOrder(orderId, \"normalOrder\", symbol);\n }, []);\n\n /**\n * calcel algo order\n */\n const cancelAlgoOrder = useCallback((orderId: number, symbol?: string) => {\n return _cancelOrder(orderId, \"algoOrder\", symbol);\n }, []);\n\n const loadMore = () => {\n ordersResponse.setSize(ordersResponse.size + 1);\n };\n\n // const cancelTPSLOrder = useCallback((orderId:number, symbol:string)=>{\n // return\n // });\n\n const cancelTPSLChildOrder = useCallback(\n (orderId: number, rootAlgoOrderId: number): Promise<any> => {\n return doUpdateAlgoOrder({\n order_id: rootAlgoOrderId,\n child_orders: [\n {\n order_id: orderId,\n is_activated: false,\n },\n ],\n });\n },\n []\n );\n\n const updateTPSLOrder = useCallback(\n (\n /**\n * the root algo order id\n */\n orderId: number,\n childOrders: API.AlgoOrder[\"child_orders\"]\n ) => {\n if (!Array.isArray(childOrders)) {\n throw new SDKError(\"children orders is required\");\n }\n return doUpdateAlgoOrder({\n order_id: orderId,\n children_orders: childOrders,\n });\n },\n []\n );\n\n return [\n orders,\n {\n total,\n isLoading: ordersResponse.isLoading,\n refresh: ordersResponse.mutate,\n loadMore,\n cancelAllOrders,\n cancelAllAlgoOrders,\n updateOrder,\n cancelOrder,\n updateAlgoOrder,\n cancelAlgoOrder,\n cancelTPSLChildOrder,\n updateTPSLOrder,\n errors: {\n cancelOrder: cancelOrderError,\n updateOrder: updateOrderError,\n cancelAlgoOrder: cancelAlgoOrderError,\n updateAlgoOrder: updateAlgoOrderError,\n },\n submitting: {\n cancelOrder: cancelMutating,\n updateOrder: updateMutating,\n cancelAlgoOrder: cancelAlgoMutating,\n updateAlglOrder: updateAlgoMutating,\n },\n },\n ] as const;\n};\n"],"names":["usePrivateInfiniteQuery","useCallback","useEffect","useMemo","OrderStatus","AlgoOrderRootType","useMarkPricesStream","useMutation","version","useDataCenterContext","generateKeyFun","SDKError","useOrderStream","params","options","status","symbol","side","size","includes","excludes","data","markPrices","regesterKeyHandler","unregisterKeyHandler","doCancelOrder","error","cancelOrderError","isMutating","cancelMutating","doCancelAllOrders","doUpdateOrder","updateOrderError","updateMutating","doCanceAlgolOrder","cancelAlgoOrderError","cancelAlgoMutating","doCancelAllAlgoOrders","doUpdateAlgoOrder","updateAlgoOrderError","updateAlgoMutating","formatKey","value","key","stopOnUnmount","keeplive","ordersResponse","initialSize","formatter","revalidateOnFocus","flattenOrders","orders","map","item","rows","flat","length","filter","algo_type","NEW","INCOMPLETE","order","mark_price","POSITIONAL_TP_SL","TP_SL","quantity","child_orders","total","cancelAllOrders","Promise","all","cancelAllAlgoOrders","_updateOrder","orderId","type","order_id","price","trigger_price","updateOrder","updateAlgoOrder","_cancelOrder","source","then","res","success","mutate","Error","message","cancelOrder","cancelAlgoOrder","loadMore","setSize","cancelTPSLChildOrder","rootAlgoOrderId","is_activated","updateTPSLOrder","childOrders","Array","isArray","children_orders","isLoading","refresh","errors","submitting","updateAlglOrder"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export interface PositionReturn {
|
|
|
10
10
|
export declare const usePositionStream: (symbol?: string, options?: SWRConfiguration & {
|
|
11
11
|
calcMode?: PriceMode;
|
|
12
12
|
}) => readonly [{
|
|
13
|
-
readonly rows: API.
|
|
13
|
+
readonly rows: API.PositionTPSLExt[] | null;
|
|
14
14
|
readonly aggregated: any;
|
|
15
15
|
readonly totalCollateral: Decimal;
|
|
16
16
|
readonly totalValue: Decimal;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePositionStream.d.ts","sourceRoot":"","sources":["../../../src/orderly/usePositionStream/usePositionStream.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAG5C,OAAO,EACL,KAAK,GAAG,EACR,WAAW,EAIZ,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAAE,OAAO,EAAQ,MAAM,wBAAwB,CAAC;AASvD,KAAK,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,CACL,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,aAAa,GAAG,MAAM,CAAC,KAC5D,IAAI,CAAC;CACX;AAED,eAAO,MAAM,iBAAiB,YAInB,MAAM,YACL,gBAAgB,GAAG;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;EAiStD,CAAC;AAEF,eAAO,MAAM,yBAAyB,sBAIpC,CAAC"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { useEffect, useMemo, useState } from "react";
|
|
2
|
-
import { usePrivateQuery } from "
|
|
2
|
+
import { usePrivateQuery } from "../../usePrivateQuery";
|
|
3
3
|
import { account, positions } from "@orderly.network/perp";
|
|
4
|
-
import { createGetter } from "
|
|
5
|
-
import { useFundingRates } from "
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { createGetter } from "../../utils/createGetter";
|
|
5
|
+
import { useFundingRates } from "../useFundingRates";
|
|
6
|
+
import { AlgoOrderRootType, OrderStatus } from "@orderly.network/types";
|
|
7
|
+
import { useSymbolsInfo } from "../useSymbolsInfo";
|
|
8
|
+
import { useMarkPricesStream } from "../useMarkPricesStream";
|
|
8
9
|
import { pathOr, propOr } from "ramda";
|
|
9
|
-
import { parseHolding } from "
|
|
10
|
+
import { parseHolding } from "../../utils/parseHolding";
|
|
10
11
|
import { zero } from "@orderly.network/utils";
|
|
11
|
-
import { useMarketsStream } from "
|
|
12
|
+
import { useMarketsStream } from "../useMarketsStream";
|
|
13
|
+
import { useOrderStream } from "../orderlyHooks";
|
|
14
|
+
import { findPositionTPSLFromOrders, findTPSLFromOrder } from "./utils";
|
|
12
15
|
export const usePositionStream = (/**
|
|
13
16
|
* If symbol is passed, only the position of that symbol will be returned.
|
|
14
17
|
*/ symbol, options)=>{
|
|
@@ -31,6 +34,16 @@ export const usePositionStream = (/**
|
|
|
31
34
|
onError: (err)=>{}
|
|
32
35
|
});
|
|
33
36
|
const { data: markPrices } = useMarkPricesStream();
|
|
37
|
+
// get TP/SL orders;
|
|
38
|
+
const [tpslOrders] = useOrderStream({
|
|
39
|
+
status: OrderStatus.INCOMPLETE,
|
|
40
|
+
includes: [
|
|
41
|
+
AlgoOrderRootType.POSITIONAL_TP_SL,
|
|
42
|
+
AlgoOrderRootType.TP_SL
|
|
43
|
+
]
|
|
44
|
+
});
|
|
45
|
+
//
|
|
46
|
+
// console.log("---------------");
|
|
34
47
|
const [priceMode, setPriceMode] = useState(options?.calcMode || "markPrice");
|
|
35
48
|
useEffect(()=>{
|
|
36
49
|
if (options?.calcMode && priceMode !== options?.calcMode) {
|
|
@@ -40,8 +53,6 @@ export const usePositionStream = (/**
|
|
|
40
53
|
options?.calcMode
|
|
41
54
|
]);
|
|
42
55
|
const { data: tickers } = useMarketsStream();
|
|
43
|
-
// console.log("mark prices", markPrices);
|
|
44
|
-
// console.log("tickers", tickers);
|
|
45
56
|
const tickerPrices = useMemo(()=>{
|
|
46
57
|
const data = Object.create(null);
|
|
47
58
|
tickers?.forEach((item)=>{
|
|
@@ -172,6 +183,8 @@ export const usePositionStream = (/**
|
|
|
172
183
|
const total = totalCollateral.toNumber();
|
|
173
184
|
let rows = formatedPositions[0].filter((item)=>item.position_qty !== 0).map((item)=>{
|
|
174
185
|
const info = symbolInfo?.[item.symbol];
|
|
186
|
+
const related_order = Array.isArray(tpslOrders) ? findPositionTPSLFromOrders(tpslOrders, item.symbol) : undefined;
|
|
187
|
+
const tp_sl_pricer = !!related_order ? findTPSLFromOrder(related_order) : undefined;
|
|
175
188
|
const MMR = positions.MMR({
|
|
176
189
|
baseMMR: info("base_mmr"),
|
|
177
190
|
baseIMR: info("base_imr"),
|
|
@@ -186,13 +199,12 @@ export const usePositionStream = (/**
|
|
|
186
199
|
markPrice: item.mark_price,
|
|
187
200
|
MMR
|
|
188
201
|
}),
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
//
|
|
193
|
-
//
|
|
194
|
-
|
|
195
|
-
mmr: MMR
|
|
202
|
+
tp_trigger_price: tp_sl_pricer?.tp_trigger_price,
|
|
203
|
+
sl_trigger_price: tp_sl_pricer?.sl_trigger_price,
|
|
204
|
+
mmr: MMR,
|
|
205
|
+
// has_position_tp_sl:
|
|
206
|
+
// !tp_sl_pricer?.sl_trigger_price && !tp_sl_pricer?.tp_trigger_price,
|
|
207
|
+
algo_order: related_order
|
|
196
208
|
};
|
|
197
209
|
});
|
|
198
210
|
// calculate est_liq_price
|
|
@@ -214,13 +226,9 @@ export const usePositionStream = (/**
|
|
|
214
226
|
formatedPositions,
|
|
215
227
|
symbolInfo,
|
|
216
228
|
accountInfo,
|
|
217
|
-
totalCollateral
|
|
229
|
+
totalCollateral,
|
|
230
|
+
tpslOrders
|
|
218
231
|
]);
|
|
219
|
-
// useEffect(() => {
|
|
220
|
-
// ee.on("positions:changed", () => {
|
|
221
|
-
// updatePositions();
|
|
222
|
-
// });
|
|
223
|
-
// }, []);
|
|
224
232
|
const positionInfoGetter = createGetter(data, 1);
|
|
225
233
|
return [
|
|
226
234
|
{
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/orderly/usePositionStream/usePositionStream.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { account, positions } from \"@orderly.network/perp\";\nimport { type SWRConfiguration } from \"swr\";\nimport { createGetter } from \"../../utils/createGetter\";\nimport { useFundingRates } from \"../useFundingRates\";\nimport {\n type API,\n OrderEntity,\n AlgoOrderType,\n AlgoOrderRootType,\n OrderStatus,\n} from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { pathOr, propOr } from \"ramda\";\nimport { parseHolding } from \"../../utils/parseHolding\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { useMarketsStream } from \"../useMarketsStream\";\nimport { useOrderStream } from \"../orderlyHooks\";\nimport {\n findPositionTPSLFromOrders,\n findTPSLFromOrder,\n findTPSLFromOrders,\n} from \"./utils\";\n\ntype PriceMode = \"markPrice\" | \"lastPrice\";\n\nexport interface PositionReturn {\n data: any[];\n loading: boolean;\n close: (\n order: Pick<OrderEntity, \"order_type\" | \"order_price\" | \"side\">\n ) => void;\n}\n\nexport const usePositionStream = (\n /**\n * If symbol is passed, only the position of that symbol will be returned.\n */\n symbol?: string,\n options?: SWRConfiguration & { calcMode?: PriceMode }\n) => {\n const symbolInfo = useSymbolsInfo();\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const { data: holding } = usePrivateQuery<API.Holding[]>(\n \"/v1/client/holding\",\n {\n formatter: (data) => {\n return data.holding;\n },\n }\n );\n\n const fundingRates = useFundingRates();\n\n const {\n data,\n error,\n mutate: refreshPositions,\n } = usePrivateQuery<API.PositionInfo>(`/v1/positions`, {\n // revalidateOnFocus: false,\n // revalidateOnReconnect: false,\n // dedupingInterval: 200,\n // keepPreviousData: false,\n // revalidateIfStale: true,\n ...options,\n\n formatter: (data) => data,\n onError: (err) => {},\n });\n\n const { data: markPrices } = useMarkPricesStream();\n\n // get TP/SL orders;\n\n const [tpslOrders] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n });\n //\n\n // console.log(\"---------------\");\n\n const [priceMode, setPriceMode] = useState(options?.calcMode || \"markPrice\");\n\n useEffect(() => {\n if (options?.calcMode && priceMode !== options?.calcMode) {\n setPriceMode(options?.calcMode);\n }\n }, [options?.calcMode]);\n\n const { data: tickers } = useMarketsStream();\n\n const tickerPrices = useMemo(() => {\n const data: Record<string, number> = Object.create(null);\n tickers?.forEach((item) => {\n // @ts-ignore\n data[item.symbol] = item[\"24h_close\"];\n });\n return data;\n }, [tickers]);\n\n const formatedPositions = useMemo<[API.PositionExt[], any] | null>(() => {\n if (!data?.rows || symbolInfo.isNil || !accountInfo) return null;\n\n const filteredData =\n typeof symbol === \"undefined\" || symbol === \"\"\n ? data.rows\n : data.rows.filter((item) => {\n return item.symbol === symbol;\n });\n\n let unrealPnL_total = zero,\n notional_total = zero,\n unsettlementPnL_total = zero;\n\n const formatted = filteredData.map((item: API.Position) => {\n // const price = (markPrices as any)[item.symbol] ?? item.mark_price;\n const unRealizedPrice = propOr(\n item.mark_price,\n item.symbol,\n priceMode === \"markPrice\" ? markPrices : tickerPrices\n ) as unknown as number;\n\n const price = propOr(\n item.mark_price,\n item.symbol,\n markPrices\n ) as unknown as number;\n\n const info = symbolInfo[item.symbol];\n //\n\n const notional = positions.notional(item.position_qty, price);\n\n const unrealPnl = positions.unrealizedPnL({\n qty: item.position_qty,\n openPrice: item?.average_open_price,\n markPrice: unRealizedPrice,\n });\n\n const imr = account.IMR({\n maxLeverage: accountInfo.max_leverage,\n baseIMR: info(\"base_imr\"),\n IMR_Factor: accountInfo.imr_factor[item.symbol] as number,\n positionNotional: notional,\n ordersNotional: 0,\n IMR_factor_power: 4 / 5,\n });\n\n const unrealPnlROI = positions.unrealizedPnLROI({\n positionQty: item.position_qty,\n openPrice: item.average_open_price,\n IMR: imr,\n unrealizedPnL: unrealPnl,\n });\n\n const unsettlementPnL = positions.unsettlementPnL({\n positionQty: item.position_qty,\n markPrice: price,\n costPosition: item.cost_position,\n sumUnitaryFunding: fundingRates[item.symbol]?.(\n \"sum_unitary_funding\",\n 0\n ),\n lastSumUnitaryFunding: item.last_sum_unitary_funding,\n });\n\n unrealPnL_total = unrealPnL_total.add(unrealPnl);\n notional_total = notional_total.add(notional);\n unsettlementPnL_total = unsettlementPnL_total.add(unsettlementPnL);\n\n return {\n ...item,\n mark_price: price,\n mm: 0,\n notional,\n unsettlement_pnl: unsettlementPnL,\n unrealized_pnl: unrealPnl,\n unrealized_pnl_ROI: unrealPnlROI,\n };\n });\n\n return [\n formatted,\n {\n unrealPnL: unrealPnL_total.toNumber(),\n notional: notional_total.toNumber(),\n unsettledPnL: unsettlementPnL_total.toNumber(),\n },\n ];\n }, [\n data?.rows,\n symbolInfo,\n accountInfo,\n markPrices,\n priceMode,\n tickerPrices,\n symbol,\n holding,\n ]);\n\n // const showSymbol = useCallback((symbol: string) => {\n // setVisibleSymbol(symbol);\n // }, []);\n\n const [totalCollateral, totalValue, totalUnrealizedROI] = useMemo<\n [Decimal, Decimal, number]\n >(() => {\n if (!holding || !markPrices) {\n return [zero, zero, 0];\n }\n const unsettlemnedPnL = pathOr(0, [1, \"unsettledPnL\"])(formatedPositions);\n const unrealizedPnL = pathOr(0, [1, \"unrealPnL\"])(formatedPositions);\n\n const [USDC_holding, nonUSDC] = parseHolding(holding, markPrices);\n\n const totalCollateral = account.totalCollateral({\n USDCHolding: USDC_holding,\n nonUSDCHolding: nonUSDC,\n unsettlementPnL: unsettlemnedPnL,\n });\n\n const totalValue = account.totalValue({\n totalUnsettlementPnL: unsettlemnedPnL,\n USDCHolding: USDC_holding,\n nonUSDCHolding: nonUSDC,\n });\n\n const totalUnrealizedROI = account.totalUnrealizedROI({\n totalUnrealizedPnL: unrealizedPnL,\n totalValue: totalValue.toNumber(),\n });\n\n return [totalCollateral, totalValue, totalUnrealizedROI];\n }, [holding, formatedPositions, markPrices]);\n\n const positionsRows = useMemo<API.PositionTPSLExt[] | null>(() => {\n if (!formatedPositions) return null;\n\n if (!symbolInfo || !accountInfo) return formatedPositions[0];\n\n const total = totalCollateral.toNumber();\n\n let rows = formatedPositions[0]\n .filter((item) => item.position_qty !== 0)\n .map((item) => {\n const info = symbolInfo?.[item.symbol];\n\n const related_order = Array.isArray(tpslOrders)\n ? findPositionTPSLFromOrders(tpslOrders, item.symbol)\n : undefined;\n\n const tp_sl_pricer = !!related_order\n ? findTPSLFromOrder(related_order)\n : undefined;\n\n const MMR = positions.MMR({\n baseMMR: info(\"base_mmr\"),\n baseIMR: info(\"base_imr\"),\n IMRFactor: accountInfo.imr_factor[item.symbol] as number,\n positionNotional: item.notional,\n IMR_factor_power: 4 / 5,\n });\n\n return {\n ...item,\n mm: positions.maintenanceMargin({\n positionQty: item.position_qty,\n markPrice: item.mark_price,\n MMR,\n }),\n tp_trigger_price: tp_sl_pricer?.tp_trigger_price,\n sl_trigger_price: tp_sl_pricer?.sl_trigger_price,\n\n mmr: MMR,\n\n // has_position_tp_sl:\n // !tp_sl_pricer?.sl_trigger_price && !tp_sl_pricer?.tp_trigger_price,\n algo_order: related_order,\n };\n });\n\n // calculate est_liq_price\n rows = rows.map((item) => {\n const est_liq_price = positions.liqPrice({\n markPrice: item.mark_price,\n totalCollateral: total,\n positionQty: item.position_qty,\n positions: rows,\n MMR: item.mmr,\n });\n return {\n ...item,\n est_liq_price,\n };\n });\n\n return rows;\n }, [formatedPositions, symbolInfo, accountInfo, totalCollateral, tpslOrders]);\n\n const positionInfoGetter = createGetter<\n Omit<API.PositionInfo, \"rows\">,\n keyof Omit<API.PositionInfo, \"rows\">\n >(data as any, 1);\n\n return [\n {\n rows: positionsRows,\n aggregated: {\n ...(formatedPositions?.[1] ?? {}),\n unrealPnlROI: totalUnrealizedROI,\n },\n totalCollateral,\n totalValue,\n totalUnrealizedROI,\n },\n positionInfoGetter,\n {\n // close: onClosePosition,\n loading: false,\n // showSymbol,\n error,\n // loadMore: () => {},\n refresh: refreshPositions,\n },\n ] as const;\n};\n\nexport const pathOr_unsettledPnLPathOr = pathOr(0, [\n 0,\n \"aggregated\",\n \"unsettledPnL\",\n]);\n"],"names":["useEffect","useMemo","useState","usePrivateQuery","account","positions","createGetter","useFundingRates","AlgoOrderRootType","OrderStatus","useSymbolsInfo","useMarkPricesStream","pathOr","propOr","parseHolding","zero","useMarketsStream","useOrderStream","findPositionTPSLFromOrders","findTPSLFromOrder","usePositionStream","symbol","options","symbolInfo","data","accountInfo","holding","formatter","fundingRates","error","mutate","refreshPositions","onError","err","markPrices","tpslOrders","status","INCOMPLETE","includes","POSITIONAL_TP_SL","TP_SL","priceMode","setPriceMode","calcMode","tickers","tickerPrices","Object","create","forEach","item","formatedPositions","rows","isNil","filteredData","filter","unrealPnL_total","notional_total","unsettlementPnL_total","formatted","map","unRealizedPrice","mark_price","price","info","notional","position_qty","unrealPnl","unrealizedPnL","qty","openPrice","average_open_price","markPrice","imr","IMR","maxLeverage","max_leverage","baseIMR","IMR_Factor","imr_factor","positionNotional","ordersNotional","IMR_factor_power","unrealPnlROI","unrealizedPnLROI","positionQty","unsettlementPnL","costPosition","cost_position","sumUnitaryFunding","lastSumUnitaryFunding","last_sum_unitary_funding","add","mm","unsettlement_pnl","unrealized_pnl","unrealized_pnl_ROI","unrealPnL","toNumber","unsettledPnL","totalCollateral","totalValue","totalUnrealizedROI","unsettlemnedPnL","USDC_holding","nonUSDC","USDCHolding","nonUSDCHolding","totalUnsettlementPnL","totalUnrealizedPnL","positionsRows","total","related_order","Array","isArray","undefined","tp_sl_pricer","MMR","baseMMR","IMRFactor","maintenanceMargin","tp_trigger_price","sl_trigger_price","mmr","algo_order","est_liq_price","liqPrice","positionInfoGetter","aggregated","loading","refresh","pathOr_unsettledPnLPathOr"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAQ;AACrD,SAASC,eAAe,QAAQ,wBAAwB;AACxD,SAASC,OAAO,EAAEC,SAAS,QAAQ,wBAAwB;AAE3D,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,eAAe,QAAQ,qBAAqB;AACrD,SAIEC,iBAAiB,EACjBC,WAAW,QACN,yBAAyB;AAChC,SAASC,cAAc,QAAQ,oBAAoB;AACnD,SAASC,mBAAmB,QAAQ,yBAAyB;AAC7D,SAASC,MAAM,EAAEC,MAAM,QAAQ,QAAQ;AACvC,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAAkBC,IAAI,QAAQ,yBAAyB;AACvD,SAASC,gBAAgB,QAAQ,sBAAsB;AACvD,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SACEC,0BAA0B,EAC1BC,iBAAiB,QAEZ,UAAU;AAYjB,OAAO,MAAMC,oBAAoB,CAC/B;;GAEC,GACDC,QACAC;IAEA,MAAMC,aAAab;IACnB,MAAM,EAAEc,MAAMC,WAAW,EAAE,GACzBtB,gBAAiC;IAEnC,MAAM,EAAEqB,MAAME,OAAO,EAAE,GAAGvB,gBACxB,sBACA;QACEwB,WAAW,CAACH;YACV,OAAOA,KAAKE,OAAO;QACrB;IACF;IAGF,MAAME,eAAerB;IAErB,MAAM,EACJiB,IAAI,EACJK,KAAK,EACLC,QAAQC,gBAAgB,EACzB,GAAG5B,gBAAkC,CAAC,aAAa,CAAC,EAAE;QACrD,4BAA4B;QAC5B,gCAAgC;QAChC,yBAAyB;QACzB,2BAA2B;QAC3B,2BAA2B;QAC3B,GAAGmB,OAAO;QAEVK,WAAW,CAACH,OAASA;QACrBQ,SAAS,CAACC,OAAS;IACrB;IAEA,MAAM,EAAET,MAAMU,UAAU,EAAE,GAAGvB;IAE7B,oBAAoB;IAEpB,MAAM,CAACwB,WAAW,GAAGlB,eAAe;QAClCmB,QAAQ3B,YAAY4B,UAAU;QAC9BC,UAAU;YAAC9B,kBAAkB+B,gBAAgB;YAAE/B,kBAAkBgC,KAAK;SAAC;IACzE;IACA,EAAE;IAEF,kCAAkC;IAElC,MAAM,CAACC,WAAWC,aAAa,GAAGxC,SAASoB,SAASqB,YAAY;IAEhE3C,UAAU;QACR,IAAIsB,SAASqB,YAAYF,cAAcnB,SAASqB,UAAU;YACxDD,aAAapB,SAASqB;QACxB;IACF,GAAG;QAACrB,SAASqB;KAAS;IAEtB,MAAM,EAAEnB,MAAMoB,OAAO,EAAE,GAAG5B;IAE1B,MAAM6B,eAAe5C,QAAQ;QAC3B,MAAMuB,OAA+BsB,OAAOC,MAAM,CAAC;QACnDH,SAASI,QAAQ,CAACC;YAChB,aAAa;YACbzB,IAAI,CAACyB,KAAK5B,MAAM,CAAC,GAAG4B,IAAI,CAAC,YAAY;QACvC;QACA,OAAOzB;IACT,GAAG;QAACoB;KAAQ;IAEZ,MAAMM,oBAAoBjD,QAAyC;QACjE,IAAI,CAACuB,MAAM2B,QAAQ5B,WAAW6B,KAAK,IAAI,CAAC3B,aAAa,OAAO;QAE5D,MAAM4B,eACJ,OAAOhC,WAAW,eAAeA,WAAW,KACxCG,KAAK2B,IAAI,GACT3B,KAAK2B,IAAI,CAACG,MAAM,CAAC,CAACL;YAChB,OAAOA,KAAK5B,MAAM,KAAKA;QACzB;QAEN,IAAIkC,kBAAkBxC,MACpByC,iBAAiBzC,MACjB0C,wBAAwB1C;QAE1B,MAAM2C,YAAYL,aAAaM,GAAG,CAAC,CAACV;YAClC,qEAAqE;YACrE,MAAMW,kBAAkB/C,OACtBoC,KAAKY,UAAU,EACfZ,KAAK5B,MAAM,EACXoB,cAAc,cAAcP,aAAaW;YAG3C,MAAMiB,QAAQjD,OACZoC,KAAKY,UAAU,EACfZ,KAAK5B,MAAM,EACXa;YAGF,MAAM6B,OAAOxC,UAAU,CAAC0B,KAAK5B,MAAM,CAAC;YACpC,EAAE;YAEF,MAAM2C,WAAW3D,UAAU2D,QAAQ,CAACf,KAAKgB,YAAY,EAAEH;YAEvD,MAAMI,YAAY7D,UAAU8D,aAAa,CAAC;gBACxCC,KAAKnB,KAAKgB,YAAY;gBACtBI,WAAWpB,MAAMqB;gBACjBC,WAAWX;YACb;YAEA,MAAMY,MAAMpE,QAAQqE,GAAG,CAAC;gBACtBC,aAAajD,YAAYkD,YAAY;gBACrCC,SAASb,KAAK;gBACdc,YAAYpD,YAAYqD,UAAU,CAAC7B,KAAK5B,MAAM,CAAC;gBAC/C0D,kBAAkBf;gBAClBgB,gBAAgB;gBAChBC,kBAAkB,IAAI;YACxB;YAEA,MAAMC,eAAe7E,UAAU8E,gBAAgB,CAAC;gBAC9CC,aAAanC,KAAKgB,YAAY;gBAC9BI,WAAWpB,KAAKqB,kBAAkB;gBAClCG,KAAKD;gBACLL,eAAeD;YACjB;YAEA,MAAMmB,kBAAkBhF,UAAUgF,eAAe,CAAC;gBAChDD,aAAanC,KAAKgB,YAAY;gBAC9BM,WAAWT;gBACXwB,cAAcrC,KAAKsC,aAAa;gBAChCC,mBAAmB5D,YAAY,CAACqB,KAAK5B,MAAM,CAAC,GAC1C,uBACA;gBAEFoE,uBAAuBxC,KAAKyC,wBAAwB;YACtD;YAEAnC,kBAAkBA,gBAAgBoC,GAAG,CAACzB;YACtCV,iBAAiBA,eAAemC,GAAG,CAAC3B;YACpCP,wBAAwBA,sBAAsBkC,GAAG,CAACN;YAElD,OAAO;gBACL,GAAGpC,IAAI;gBACPY,YAAYC;gBACZ8B,IAAI;gBACJ5B;gBACA6B,kBAAkBR;gBAClBS,gBAAgB5B;gBAChB6B,oBAAoBb;YACtB;QACF;QAEA,OAAO;YACLxB;YACA;gBACEsC,WAAWzC,gBAAgB0C,QAAQ;gBACnCjC,UAAUR,eAAeyC,QAAQ;gBACjCC,cAAczC,sBAAsBwC,QAAQ;YAC9C;SACD;IACH,GAAG;QACDzE,MAAM2B;QACN5B;QACAE;QACAS;QACAO;QACAI;QACAxB;QACAK;KACD;IAED,uDAAuD;IACvD,8BAA8B;IAC9B,UAAU;IAEV,MAAM,CAACyE,iBAAiBC,YAAYC,mBAAmB,GAAGpG,QAExD;QACA,IAAI,CAACyB,WAAW,CAACQ,YAAY;YAC3B,OAAO;gBAACnB;gBAAMA;gBAAM;aAAE;QACxB;QACA,MAAMuF,kBAAkB1F,OAAO,GAAG;YAAC;YAAG;SAAe,EAAEsC;QACvD,MAAMiB,gBAAgBvD,OAAO,GAAG;YAAC;YAAG;SAAY,EAAEsC;QAElD,MAAM,CAACqD,cAAcC,QAAQ,GAAG1F,aAAaY,SAASQ;QAEtD,MAAMiE,kBAAkB/F,QAAQ+F,eAAe,CAAC;YAC9CM,aAAaF;YACbG,gBAAgBF;YAChBnB,iBAAiBiB;QACnB;QAEA,MAAMF,aAAahG,QAAQgG,UAAU,CAAC;YACpCO,sBAAsBL;YACtBG,aAAaF;YACbG,gBAAgBF;QAClB;QAEA,MAAMH,qBAAqBjG,QAAQiG,kBAAkB,CAAC;YACpDO,oBAAoBzC;YACpBiC,YAAYA,WAAWH,QAAQ;QACjC;QAEA,OAAO;YAACE;YAAiBC;YAAYC;SAAmB;IAC1D,GAAG;QAAC3E;QAASwB;QAAmBhB;KAAW;IAE3C,MAAM2E,gBAAgB5G,QAAsC;QAC1D,IAAI,CAACiD,mBAAmB,OAAO;QAE/B,IAAI,CAAC3B,cAAc,CAACE,aAAa,OAAOyB,iBAAiB,CAAC,EAAE;QAE5D,MAAM4D,QAAQX,gBAAgBF,QAAQ;QAEtC,IAAI9C,OAAOD,iBAAiB,CAAC,EAAE,CAC5BI,MAAM,CAAC,CAACL,OAASA,KAAKgB,YAAY,KAAK,GACvCN,GAAG,CAAC,CAACV;YACJ,MAAMc,OAAOxC,YAAY,CAAC0B,KAAK5B,MAAM,CAAC;YAEtC,MAAM0F,gBAAgBC,MAAMC,OAAO,CAAC9E,cAChCjB,2BAA2BiB,YAAYc,KAAK5B,MAAM,IAClD6F;YAEJ,MAAMC,eAAe,CAAC,CAACJ,gBACnB5F,kBAAkB4F,iBAClBG;YAEJ,MAAME,MAAM/G,UAAU+G,GAAG,CAAC;gBACxBC,SAAStD,KAAK;gBACda,SAASb,KAAK;gBACduD,WAAW7F,YAAYqD,UAAU,CAAC7B,KAAK5B,MAAM,CAAC;gBAC9C0D,kBAAkB9B,KAAKe,QAAQ;gBAC/BiB,kBAAkB,IAAI;YACxB;YAEA,OAAO;gBACL,GAAGhC,IAAI;gBACP2C,IAAIvF,UAAUkH,iBAAiB,CAAC;oBAC9BnC,aAAanC,KAAKgB,YAAY;oBAC9BM,WAAWtB,KAAKY,UAAU;oBAC1BuD;gBACF;gBACAI,kBAAkBL,cAAcK;gBAChCC,kBAAkBN,cAAcM;gBAEhCC,KAAKN;gBAEL,sBAAsB;gBACtB,wEAAwE;gBACxEO,YAAYZ;YACd;QACF;QAEF,0BAA0B;QAC1B5D,OAAOA,KAAKQ,GAAG,CAAC,CAACV;YACf,MAAM2E,gBAAgBvH,UAAUwH,QAAQ,CAAC;gBACvCtD,WAAWtB,KAAKY,UAAU;gBAC1BsC,iBAAiBW;gBACjB1B,aAAanC,KAAKgB,YAAY;gBAC9B5D,WAAW8C;gBACXiE,KAAKnE,KAAKyE,GAAG;YACf;YACA,OAAO;gBACL,GAAGzE,IAAI;gBACP2E;YACF;QACF;QAEA,OAAOzE;IACT,GAAG;QAACD;QAAmB3B;QAAYE;QAAa0E;QAAiBhE;KAAW;IAE5E,MAAM2F,qBAAqBxH,aAGzBkB,MAAa;IAEf,OAAO;QACL;YACE2B,MAAM0D;YACNkB,YAAY;gBACV,GAAI7E,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC;gBAChCgC,cAAcmB;YAChB;YACAF;YACAC;YACAC;QACF;QACAyB;QACA;YACE,0BAA0B;YAC1BE,SAAS;YACT,cAAc;YACdnG;YACA,sBAAsB;YACtBoG,SAASlG;QACX;KACD;AACH,EAAE;AAEF,OAAO,MAAMmG,4BAA4BtH,OAAO,GAAG;IACjD;IACA;IACA;CACD,EAAE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { API, AlgoOrderEntity } from "@orderly.network/types";
|
|
2
|
+
export declare const findTPSLFromOrders: (orders: API.AlgoOrder[], symbol: string) => Partial<AlgoOrderEntity> | undefined;
|
|
3
|
+
export declare const findTPSLFromOrder: (order: API.AlgoOrder) => {
|
|
4
|
+
tp_trigger_price?: number | undefined;
|
|
5
|
+
sl_trigger_price?: number | undefined;
|
|
6
|
+
};
|
|
7
|
+
export declare const findPositionTPSLFromOrders: (orders: API.AlgoOrder[], symbol: string) => API.AlgoOrder | undefined;
|
|
8
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/orderly/usePositionStream/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,eAAe,EAIhB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,kBAAkB,WACrB,IAAI,SAAS,EAAE,UACf,MAAM,KACb,QAAQ,eAAe,CAAC,GAAG,SAO7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACrB,IAAI,SAAS;;;CA6BrB,CAAC;AAEF,eAAO,MAAM,0BAA0B,WAC7B,IAAI,SAAS,EAAE,UACf,MAAM,KACb,IAAI,SAAS,GAAG,SAalB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { AlgoOrderType, AlgoOrderRootType, OrderStatus } from "@orderly.network/types";
|
|
2
|
+
export const findTPSLFromOrders = (orders, symbol)=>{
|
|
3
|
+
const order = findPositionTPSLFromOrders(orders, symbol);
|
|
4
|
+
// console.log("!!!!!", order);
|
|
5
|
+
if (!order) return;
|
|
6
|
+
return findTPSLFromOrder(order);
|
|
7
|
+
};
|
|
8
|
+
export const findTPSLFromOrder = (order)=>{
|
|
9
|
+
let tp_trigger_price;
|
|
10
|
+
let sl_trigger_price;
|
|
11
|
+
const tpOrder = order.child_orders.find((order)=>order.algo_type === AlgoOrderType.TAKE_PROFIT);
|
|
12
|
+
const slOrder = order.child_orders.find((order)=>order.algo_type === AlgoOrderType.STOP_LOSS);
|
|
13
|
+
if (tpOrder) {
|
|
14
|
+
tp_trigger_price = tpOrder.trigger_price;
|
|
15
|
+
// take_profit_qty = tpOrder.quantity ;
|
|
16
|
+
}
|
|
17
|
+
if (slOrder) {
|
|
18
|
+
sl_trigger_price = slOrder.trigger_price;
|
|
19
|
+
// stop_loss_qty = slOrder.quantity;
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
tp_trigger_price,
|
|
23
|
+
sl_trigger_price
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export const findPositionTPSLFromOrders = (orders, symbol)=>{
|
|
27
|
+
return orders?.find((order)=>{
|
|
28
|
+
// console.log(order.symbol, symbol, order.algo_type);
|
|
29
|
+
return order.symbol === symbol && order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL && (order.root_algo_status === OrderStatus.NEW || order.root_algo_status === OrderStatus.REPLACED || order.root_algo_status === OrderStatus.PARTIAL_FILLED);
|
|
30
|
+
});
|
|
31
|
+
// return order;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/orderly/usePositionStream/utils.ts"],"sourcesContent":["import {\n API,\n AlgoOrderEntity,\n AlgoOrderType,\n AlgoOrderRootType,\n OrderStatus,\n} from \"@orderly.network/types\";\n\nexport const findTPSLFromOrders = (\n orders: API.AlgoOrder[],\n symbol: string\n): Partial<AlgoOrderEntity> | undefined => {\n const order = findPositionTPSLFromOrders(orders, symbol);\n\n // console.log(\"!!!!!\", order);\n\n if (!order) return;\n return findTPSLFromOrder(order);\n};\n\nexport const findTPSLFromOrder = (\n order: API.AlgoOrder\n): {\n tp_trigger_price?: number;\n sl_trigger_price?: number;\n} => {\n let tp_trigger_price;\n\n let sl_trigger_price;\n\n const tpOrder = order.child_orders.find(\n (order: any) => order.algo_type === AlgoOrderType.TAKE_PROFIT\n );\n const slOrder = order.child_orders.find(\n (order: any) => order.algo_type === AlgoOrderType.STOP_LOSS\n );\n\n if (tpOrder) {\n tp_trigger_price = tpOrder.trigger_price;\n // take_profit_qty = tpOrder.quantity ;\n }\n if (slOrder) {\n sl_trigger_price = slOrder.trigger_price;\n // stop_loss_qty = slOrder.quantity;\n }\n\n return {\n tp_trigger_price,\n sl_trigger_price,\n };\n};\n\nexport const findPositionTPSLFromOrders = (\n orders: API.AlgoOrder[],\n symbol: string\n): API.AlgoOrder | undefined => {\n return orders?.find((order) => {\n // console.log(order.symbol, symbol, order.algo_type);\n return (\n order.symbol === symbol &&\n order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL &&\n (order.root_algo_status === OrderStatus.NEW ||\n order.root_algo_status === OrderStatus.REPLACED ||\n order.root_algo_status === OrderStatus.PARTIAL_FILLED)\n );\n });\n\n // return order;\n};\n"],"names":["AlgoOrderType","AlgoOrderRootType","OrderStatus","findTPSLFromOrders","orders","symbol","order","findPositionTPSLFromOrders","findTPSLFromOrder","tp_trigger_price","sl_trigger_price","tpOrder","child_orders","find","algo_type","TAKE_PROFIT","slOrder","STOP_LOSS","trigger_price","POSITIONAL_TP_SL","root_algo_status","NEW","REPLACED","PARTIAL_FILLED"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAGEA,aAAa,EACbC,iBAAiB,EACjBC,WAAW,QACN,yBAAyB;AAEhC,OAAO,MAAMC,qBAAqB,CAChCC,QACAC;IAEA,MAAMC,QAAQC,2BAA2BH,QAAQC;IAEjD,+BAA+B;IAE/B,IAAI,CAACC,OAAO;IACZ,OAAOE,kBAAkBF;AAC3B,EAAE;AAEF,OAAO,MAAME,oBAAoB,CAC/BF;IAKA,IAAIG;IAEJ,IAAIC;IAEJ,MAAMC,UAAUL,MAAMM,YAAY,CAACC,IAAI,CACrC,CAACP,QAAeA,MAAMQ,SAAS,KAAKd,cAAce,WAAW;IAE/D,MAAMC,UAAUV,MAAMM,YAAY,CAACC,IAAI,CACrC,CAACP,QAAeA,MAAMQ,SAAS,KAAKd,cAAciB,SAAS;IAG7D,IAAIN,SAAS;QACXF,mBAAmBE,QAAQO,aAAa;IACxC,wCAAwC;IAC1C;IACA,IAAIF,SAAS;QACXN,mBAAmBM,QAAQE,aAAa;IACxC,oCAAoC;IACtC;IAEA,OAAO;QACLT;QACAC;IACF;AACF,EAAE;AAEF,OAAO,MAAMH,6BAA6B,CACxCH,QACAC;IAEA,OAAOD,QAAQS,KAAK,CAACP;QACnB,sDAAsD;QACtD,OACEA,MAAMD,MAAM,KAAKA,UACjBC,MAAMQ,SAAS,KAAKb,kBAAkBkB,gBAAgB,IACrDb,CAAAA,MAAMc,gBAAgB,KAAKlB,YAAYmB,GAAG,IACzCf,MAAMc,gBAAgB,KAAKlB,YAAYoB,QAAQ,IAC/ChB,MAAMc,gBAAgB,KAAKlB,YAAYqB,cAAc,AAAD;IAE1D;AAEA,gBAAgB;AAClB,EAAE"}
|
|
@@ -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;
|
|
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"}
|
|
@@ -1,39 +1,35 @@
|
|
|
1
|
-
import { useEffect
|
|
1
|
+
import { useEffect } from "react";
|
|
2
2
|
import { useWS } from "../useWS";
|
|
3
3
|
import { mutate } from "swr";
|
|
4
4
|
import { useAccount } from "../useAccount";
|
|
5
5
|
import { unstable_serialize } from "swr/infinite";
|
|
6
6
|
import { useEventEmitter } from "../useEventEmitter";
|
|
7
|
-
import { updateOrdersHandler } from "../utils/swr";
|
|
7
|
+
import { updateOrdersHandler, updateAlgoOrdersHandler } from "../utils/swr";
|
|
8
|
+
import { AlgoOrderMergeHandler } from "../services/orderMerge/algoOrderMergeHandler";
|
|
9
|
+
import { object2underscore } from "../utils/ws";
|
|
8
10
|
export const usePrivateDataObserver = (options)=>{
|
|
9
11
|
const ws = useWS();
|
|
10
12
|
// const { mutate } = useSWRConfig();
|
|
11
13
|
const ee = useEventEmitter();
|
|
12
14
|
const { state } = useAccount();
|
|
13
15
|
// TODO: remove this when the WS service provides the correct data
|
|
14
|
-
const algoOrderCacheQuneue = useRef([]);
|
|
16
|
+
// const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);
|
|
15
17
|
const updateOrders = (data, isAlgoOrder)=>{
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
if (isAlgoOrder) {
|
|
19
|
-
/// TODO: remove this when the WS service provides the correct data
|
|
20
|
-
if (algoOrderCacheQuneue.current.length) {
|
|
21
|
-
const index = algoOrderCacheQuneue.current.findIndex((item)=>item.order_id === data.algoOrderId);
|
|
22
|
-
if (index > -1) {
|
|
23
|
-
data = {
|
|
24
|
-
...data,
|
|
25
|
-
...algoOrderCacheQuneue.current[index]
|
|
26
|
-
};
|
|
27
|
-
algoOrderCacheQuneue.current.splice(index, 1);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
map.forEach((getKey, key)=>{
|
|
18
|
+
const keysMap = options.getKeysMap("orders");
|
|
19
|
+
keysMap.forEach((getKey, key)=>{
|
|
32
20
|
mutate(unstable_serialize((index, prevData)=>[
|
|
33
21
|
getKey(index, prevData),
|
|
34
22
|
state.accountId
|
|
35
23
|
]), (prevData)=>{
|
|
36
|
-
|
|
24
|
+
try {
|
|
25
|
+
if (isAlgoOrder) {
|
|
26
|
+
const result = updateAlgoOrdersHandler(key, data, prevData);
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
return updateOrdersHandler(key, data, prevData);
|
|
30
|
+
} catch (error) {
|
|
31
|
+
return prevData;
|
|
32
|
+
}
|
|
37
33
|
}, {
|
|
38
34
|
revalidate: false
|
|
39
35
|
});
|
|
@@ -43,9 +39,10 @@ export const usePrivateDataObserver = (options)=>{
|
|
|
43
39
|
// ...data,
|
|
44
40
|
// status: data.status || (data as WSMessage.AlgoOrder).algoStatus,
|
|
45
41
|
// });
|
|
42
|
+
const formattedData = isAlgoOrder ? AlgoOrderMergeHandler.groupOrders(data) : object2underscore(data);
|
|
46
43
|
ee.emit("orders:changed", {
|
|
47
|
-
...
|
|
48
|
-
status:
|
|
44
|
+
...formattedData,
|
|
45
|
+
status: isAlgoOrder ? formattedData.algo_status : data.status
|
|
49
46
|
});
|
|
50
47
|
};
|
|
51
48
|
// orders
|
|
@@ -65,17 +62,7 @@ export const usePrivateDataObserver = (options)=>{
|
|
|
65
62
|
if (!state.accountId) return;
|
|
66
63
|
const unsubscribe = ws.privateSubscribe("algoexecutionreport", {
|
|
67
64
|
onMessage: (data)=>{
|
|
68
|
-
|
|
69
|
-
if (Array.isArray(data)) {
|
|
70
|
-
data.forEach((item)=>{
|
|
71
|
-
updateOrders(item, true);
|
|
72
|
-
// ee.emit("orders:changed", { ...item, status: item.algoStatus });
|
|
73
|
-
});
|
|
74
|
-
} else {
|
|
75
|
-
updateOrders(data, true);
|
|
76
|
-
// ee.emit("orders:changed", { ...data, status: data.algoStatus });
|
|
77
|
-
}
|
|
78
|
-
}, 100);
|
|
65
|
+
updateOrders(data, true);
|
|
79
66
|
}
|
|
80
67
|
});
|
|
81
68
|
return ()=>unsubscribe?.();
|
|
@@ -138,16 +125,16 @@ export const usePrivateDataObserver = (options)=>{
|
|
|
138
125
|
}, [
|
|
139
126
|
state.accountId
|
|
140
127
|
]);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
128
|
+
// cache algo orders
|
|
129
|
+
// useEffect(() => {
|
|
130
|
+
// const handler = (data: API.AlgoOrder) => {
|
|
131
|
+
// algoOrderCacheQuneue.current.push(data);
|
|
132
|
+
// };
|
|
133
|
+
// ee.on("algoOrder:cache", handler);
|
|
134
|
+
// return () => {
|
|
135
|
+
// ee.off("algoOrder:cache", handler);
|
|
136
|
+
// };
|
|
137
|
+
// }, []);
|
|
151
138
|
};
|
|
152
139
|
|
|
153
140
|
//# sourceMappingURL=usePrivateDataObserver.js.map
|