@orderly.network/hooks 1.2.0 → 1.3.2
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/configProvider.d.ts +7 -1
- package/esm/configProvider.d.ts.map +1 -1
- package/esm/configProvider.js +44 -18
- package/esm/configProvider.js.map +1 -0
- package/esm/dataProvider.js +24 -19
- package/esm/dataProvider.js.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -1
- package/esm/index.js.map +1 -0
- package/esm/middleware/signatureMiddleware.js +9 -8
- package/esm/middleware/signatureMiddleware.js.map +1 -0
- package/esm/orderly/orderbook.service.js +39 -28
- package/esm/orderly/orderbook.service.js.map +1 -0
- package/esm/orderly/orderlyHooks.d.ts +3 -0
- package/esm/orderly/orderlyHooks.d.ts.map +1 -1
- package/esm/orderly/orderlyHooks.js +2 -0
- package/esm/orderly/orderlyHooks.js.map +1 -0
- package/esm/orderly/useAccountInfo.js +3 -1
- package/esm/orderly/useAccountInfo.js.map +1 -0
- package/esm/orderly/useChain.js +16 -9
- package/esm/orderly/useChain.js.map +1 -0
- package/esm/orderly/useChains.d.ts +11 -12
- package/esm/orderly/useChains.d.ts.map +1 -1
- package/esm/orderly/useChains.js +68 -46
- package/esm/orderly/useChains.js.map +1 -0
- package/esm/orderly/useCollateral.d.ts +3 -4
- package/esm/orderly/useCollateral.d.ts.map +1 -1
- package/esm/orderly/useCollateral.js +53 -20
- package/esm/orderly/useCollateral.js.map +1 -0
- package/esm/orderly/useDeposit.js +123 -125
- package/esm/orderly/useDeposit.js.map +1 -0
- package/esm/orderly/useFundingRate.js +14 -13
- package/esm/orderly/useFundingRate.js.map +1 -0
- package/esm/orderly/useFundingRates.js +6 -4
- package/esm/orderly/useFundingRates.js.map +1 -0
- package/esm/orderly/useHoldingStream.js +19 -15
- package/esm/orderly/useHoldingStream.js.map +1 -0
- package/esm/orderly/useIndexPrice.js +7 -5
- package/esm/orderly/useIndexPrice.js.map +1 -0
- package/esm/orderly/useLeverage.js +9 -12
- package/esm/orderly/useLeverage.js.map +1 -0
- package/esm/orderly/useMarginRatio.js +27 -13
- package/esm/orderly/useMarginRatio.js.map +1 -0
- package/esm/orderly/useMarkPrice.js +13 -7
- package/esm/orderly/useMarkPrice.js.map +1 -0
- package/esm/orderly/useMarkPricesStream.d.ts +1 -1
- package/esm/orderly/useMarkPricesStream.d.ts.map +1 -1
- package/esm/orderly/useMarkPricesStream.js +9 -8
- package/esm/orderly/useMarkPricesStream.js.map +1 -0
- package/esm/orderly/useMarketTradeStream.js +33 -18
- package/esm/orderly/useMarketTradeStream.js.map +1 -0
- package/esm/orderly/useMarkets.js +144 -81
- package/esm/orderly/useMarkets.js.map +1 -0
- package/esm/orderly/useMarketsStream.js +23 -28
- package/esm/orderly/useMarketsStream.js.map +1 -0
- package/esm/orderly/useMaxQty.d.ts +6 -0
- package/esm/orderly/useMaxQty.d.ts.map +1 -1
- package/esm/orderly/useMaxQty.js +26 -18
- package/esm/orderly/useMaxQty.js.map +1 -0
- package/esm/orderly/useOpenInterest.js +7 -5
- package/esm/orderly/useOpenInterest.js.map +1 -0
- package/esm/orderly/useOrderEntry.js +182 -160
- package/esm/orderly/useOrderEntry.js.map +1 -0
- package/esm/orderly/useOrderStream.js +85 -66
- package/esm/orderly/useOrderStream.js.map +1 -0
- package/esm/orderly/useOrderbookStream.d.ts +2 -3
- package/esm/orderly/useOrderbookStream.d.ts.map +1 -1
- package/esm/orderly/useOrderbookStream.js +173 -103
- package/esm/orderly/useOrderbookStream.js.map +1 -0
- package/esm/orderly/usePositionStream.js +82 -62
- package/esm/orderly/usePositionStream.js.map +1 -0
- package/esm/orderly/usePrivateDataObserver.js +55 -48
- package/esm/orderly/usePrivateDataObserver.js.map +1 -0
- package/esm/orderly/useSettleSubscription.js +8 -6
- package/esm/orderly/useSettleSubscription.js.map +1 -0
- package/esm/orderly/useSymbolPriceRange.js +14 -8
- package/esm/orderly/useSymbolPriceRange.js.map +1 -0
- package/esm/orderly/useSymbolsInfo.js +7 -5
- package/esm/orderly/useSymbolsInfo.js.map +1 -0
- package/esm/orderly/useTickerStream.d.ts +5 -1
- package/esm/orderly/useTickerStream.d.ts.map +1 -1
- package/esm/orderly/useTickerStream.js +26 -29
- package/esm/orderly/useTickerStream.js.map +1 -0
- package/esm/orderly/useWalletSubscription.js +8 -6
- package/esm/orderly/useWalletSubscription.js.map +1 -0
- package/esm/orderly/useWithdraw.js +19 -11
- package/esm/orderly/useWithdraw.js.map +1 -0
- package/esm/orderlyContext.d.ts +8 -1
- package/esm/orderlyContext.d.ts.map +1 -1
- package/esm/orderlyContext.js +2 -1
- package/esm/orderlyContext.js.map +1 -0
- package/esm/services/dataCenter.js +10 -8
- package/esm/services/dataCenter.js.map +1 -0
- package/esm/services/painter/backgroundPaint.js +11 -14
- package/esm/services/painter/backgroundPaint.js.map +1 -0
- package/esm/services/painter/basePaint.js +5 -1
- package/esm/services/painter/basePaint.js.map +1 -0
- package/esm/services/painter/dataPaint.js +53 -50
- package/esm/services/painter/dataPaint.js.map +1 -0
- package/esm/services/painter/layout.config.js +15 -13
- package/esm/services/painter/layout.config.js.map +1 -0
- package/esm/services/painter/painter.js +14 -13
- package/esm/services/painter/painter.js.map +1 -0
- package/esm/services/painter/resource.js +6 -4
- package/esm/services/painter/resource.js.map +1 -0
- package/esm/statusProvider.js +10 -3
- package/esm/statusProvider.js.map +1 -0
- package/esm/unuse/apiPrefixMiddleware.js +18 -16
- package/esm/unuse/apiPrefixMiddleware.js.map +1 -0
- package/esm/unuse/fn.js +3 -1
- package/esm/unuse/fn.js.map +1 -0
- package/esm/unuse/useBalance.js +6 -4
- package/esm/unuse/useBalance.js.map +1 -0
- package/esm/unuse/useFetures.js +26 -18
- package/esm/unuse/useFetures.js.map +1 -0
- package/esm/unuse/useRunOnce.js +10 -7
- package/esm/unuse/useRunOnce.js.map +1 -0
- package/esm/unuse/useSyncEnd.js +5 -4
- package/esm/unuse/useSyncEnd.js.map +1 -0
- package/esm/unuse/useTokenInfo.js +7 -5
- package/esm/unuse/useTokenInfo.js.map +1 -0
- package/esm/unuse/useUnsettlementPnL.js +7 -3
- package/esm/unuse/useUnsettlementPnL.js.map +1 -0
- package/esm/useAccount.js +18 -21
- package/esm/useAccount.js.map +1 -0
- package/esm/useAccountInstance.js +6 -7
- package/esm/useAccountInstance.js.map +1 -0
- package/esm/useBoolean.js +14 -5
- package/esm/useBoolean.js.map +1 -0
- package/esm/useConfig.js +3 -1
- package/esm/useConfig.js.map +1 -0
- package/esm/useEventEmitter.js +4 -2
- package/esm/useEventEmitter.js.map +1 -0
- package/esm/useLazyQuery.js +6 -7
- package/esm/useLazyQuery.js.map +1 -0
- package/esm/useLocalStorage.js +30 -20
- package/esm/useLocalStorage.js.map +1 -0
- package/esm/useMediaQuery.js +11 -9
- package/esm/useMediaQuery.js.map +1 -0
- package/esm/useMutation.js +26 -37
- package/esm/useMutation.js.map +1 -0
- package/esm/useObserve.js +4 -4
- package/esm/useObserve.js.map +1 -0
- package/esm/useParamsCheck.js +8 -10
- package/esm/useParamsCheck.js.map +1 -0
- package/esm/usePoster.js +56 -45
- package/esm/usePoster.js.map +1 -0
- package/esm/usePreloadData.js +9 -5
- package/esm/usePreloadData.js.map +1 -0
- package/esm/usePrivateInfiniteQuery.js +15 -9
- package/esm/usePrivateInfiniteQuery.js.map +1 -0
- package/esm/usePrivateQuery.js +15 -8
- package/esm/usePrivateQuery.js.map +1 -0
- package/esm/useQuery.js +6 -5
- package/esm/useQuery.js.map +1 -0
- package/esm/useSessionStorage.js +28 -19
- package/esm/useSessionStorage.js.map +1 -0
- package/esm/useWS.js +15 -13
- package/esm/useWS.js.map +1 -0
- package/esm/useWsStatus.js +12 -12
- package/esm/useWsStatus.js.map +1 -0
- package/esm/utils/createGetter.js +8 -8
- package/esm/utils/createGetter.js.map +1 -0
- package/esm/utils/createOrder.d.ts +1 -0
- package/esm/utils/createOrder.d.ts.map +1 -1
- package/esm/utils/createOrder.js +59 -43
- package/esm/utils/createOrder.js.map +1 -0
- package/esm/utils/dev.js +6 -4
- package/esm/utils/dev.js.map +1 -0
- package/esm/utils/fetcher.js +3 -1
- package/esm/utils/fetcher.js.map +1 -0
- package/esm/utils/json.js +3 -2
- package/esm/utils/json.js.map +1 -0
- package/esm/utils/orderEntryHelper.js +92 -63
- package/esm/utils/orderEntryHelper.js.map +1 -0
- package/esm/utils/parseHolding.js +10 -6
- package/esm/utils/parseHolding.js.map +1 -0
- package/esm/utils/swr.js +114 -104
- package/esm/utils/swr.js.map +1 -0
- package/esm/version.d.ts +1 -1
- package/esm/version.js +4 -3
- package/esm/version.js.map +1 -0
- package/esm/walletConnectorContext.js +4 -2
- package/esm/walletConnectorContext.js.map +1 -0
- package/lib/configProvider.d.ts +7 -1
- package/lib/configProvider.d.ts.map +1 -1
- package/lib/configProvider.js +108 -56
- package/lib/configProvider.js.map +1 -0
- package/lib/dataProvider.js +50 -29
- package/lib/dataProvider.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +191 -88
- package/lib/index.js.map +1 -0
- package/lib/middleware/signatureMiddleware.js +22 -15
- package/lib/middleware/signatureMiddleware.js.map +1 -0
- package/lib/orderly/orderbook.service.js +59 -33
- package/lib/orderly/orderbook.service.js.map +1 -0
- package/lib/orderly/orderlyHooks.d.ts +3 -0
- package/lib/orderly/orderlyHooks.d.ts.map +1 -1
- package/lib/orderly/orderlyHooks.js +124 -57
- package/lib/orderly/orderlyHooks.js.map +1 -0
- package/lib/orderly/useAccountInfo.js +14 -6
- package/lib/orderly/useAccountInfo.js.map +1 -0
- package/lib/orderly/useChain.js +30 -17
- package/lib/orderly/useChain.js.map +1 -0
- package/lib/orderly/useChains.d.ts +11 -12
- package/lib/orderly/useChains.d.ts.map +1 -1
- package/lib/orderly/useChains.js +100 -59
- package/lib/orderly/useChains.js.map +1 -0
- package/lib/orderly/useCollateral.d.ts +3 -4
- package/lib/orderly/useCollateral.d.ts.map +1 -1
- package/lib/orderly/useCollateral.js +81 -42
- package/lib/orderly/useCollateral.js.map +1 -0
- package/lib/orderly/useDeposit.js +154 -150
- package/lib/orderly/useDeposit.js.map +1 -0
- package/lib/orderly/useFundingRate.js +29 -22
- package/lib/orderly/useFundingRate.js.map +1 -0
- package/lib/orderly/useFundingRates.js +19 -11
- package/lib/orderly/useFundingRates.js.map +1 -0
- package/lib/orderly/useHoldingStream.js +39 -27
- package/lib/orderly/useHoldingStream.js.map +1 -0
- package/lib/orderly/useIndexPrice.js +24 -14
- package/lib/orderly/useIndexPrice.js.map +1 -0
- package/lib/orderly/useLeverage.js +27 -24
- package/lib/orderly/useLeverage.js.map +1 -0
- package/lib/orderly/useMarginRatio.js +49 -29
- package/lib/orderly/useMarginRatio.js.map +1 -0
- package/lib/orderly/useMarkPrice.js +26 -15
- package/lib/orderly/useMarkPrice.js.map +1 -0
- package/lib/orderly/useMarkPricesStream.d.ts +1 -1
- package/lib/orderly/useMarkPricesStream.d.ts.map +1 -1
- package/lib/orderly/useMarkPricesStream.js +26 -17
- package/lib/orderly/useMarkPricesStream.js.map +1 -0
- package/lib/orderly/useMarketTradeStream.js +47 -26
- package/lib/orderly/useMarketTradeStream.js.map +1 -0
- package/lib/orderly/useMarkets.js +172 -95
- package/lib/orderly/useMarkets.js.map +1 -0
- package/lib/orderly/useMarketsStream.js +44 -41
- package/lib/orderly/useMarketsStream.js.map +1 -0
- package/lib/orderly/useMaxQty.d.ts +6 -0
- package/lib/orderly/useMaxQty.d.ts.map +1 -1
- package/lib/orderly/useMaxQty.js +52 -43
- package/lib/orderly/useMaxQty.js.map +1 -0
- package/lib/orderly/useOpenInterest.js +24 -14
- package/lib/orderly/useOpenInterest.js.map +1 -0
- package/lib/orderly/useOrderEntry.js +238 -210
- package/lib/orderly/useOrderEntry.js.map +1 -0
- package/lib/orderly/useOrderStream.js +111 -84
- package/lib/orderly/useOrderStream.js.map +1 -0
- package/lib/orderly/useOrderbookStream.d.ts +2 -3
- package/lib/orderly/useOrderbookStream.d.ts.map +1 -1
- package/lib/orderly/useOrderbookStream.js +227 -148
- package/lib/orderly/useOrderbookStream.js.map +1 -0
- package/lib/orderly/usePositionStream.js +134 -100
- package/lib/orderly/usePositionStream.js.map +1 -0
- package/lib/orderly/usePrivateDataObserver.js +76 -63
- package/lib/orderly/usePrivateDataObserver.js.map +1 -0
- package/lib/orderly/useSettleSubscription.js +25 -15
- package/lib/orderly/useSettleSubscription.js.map +1 -0
- package/lib/orderly/useSymbolPriceRange.js +29 -23
- package/lib/orderly/useSymbolPriceRange.js.map +1 -0
- package/lib/orderly/useSymbolsInfo.js +23 -15
- package/lib/orderly/useSymbolsInfo.js.map +1 -0
- package/lib/orderly/useTickerStream.d.ts +5 -1
- package/lib/orderly/useTickerStream.d.ts.map +1 -1
- package/lib/orderly/useTickerStream.js +51 -48
- package/lib/orderly/useTickerStream.js.map +1 -0
- package/lib/orderly/useWalletSubscription.js +25 -15
- package/lib/orderly/useWalletSubscription.js.map +1 -0
- package/lib/orderly/useWithdraw.js +36 -22
- package/lib/orderly/useWithdraw.js.map +1 -0
- package/lib/orderlyContext.d.ts +8 -1
- package/lib/orderlyContext.d.ts.map +1 -1
- package/lib/orderlyContext.js +22 -6
- package/lib/orderlyContext.js.map +1 -0
- package/lib/services/dataCenter.js +15 -11
- package/lib/services/dataCenter.js.map +1 -0
- package/lib/services/painter/backgroundPaint.js +21 -18
- package/lib/services/painter/backgroundPaint.js.map +1 -0
- package/lib/services/painter/basePaint.js +14 -4
- package/lib/services/painter/basePaint.js.map +1 -0
- package/lib/services/painter/dataPaint.js +67 -58
- package/lib/services/painter/dataPaint.js.map +1 -0
- package/lib/services/painter/layout.config.js +25 -16
- package/lib/services/painter/layout.config.js.map +1 -0
- package/lib/services/painter/painter.js +27 -20
- package/lib/services/painter/painter.js.map +1 -0
- package/lib/services/painter/resource.js +15 -7
- package/lib/services/painter/resource.js.map +1 -0
- package/lib/statusProvider.js +31 -10
- package/lib/statusProvider.js.map +1 -0
- package/lib/unuse/apiPrefixMiddleware.js +30 -22
- package/lib/unuse/apiPrefixMiddleware.js.map +1 -0
- package/lib/unuse/fn.js +14 -5
- package/lib/unuse/fn.js.map +1 -0
- package/lib/unuse/useBalance.js +23 -13
- package/lib/unuse/useBalance.js.map +1 -0
- package/lib/unuse/useFetures.js +41 -28
- package/lib/unuse/useFetures.js.map +1 -0
- package/lib/unuse/useRunOnce.js +61 -11
- package/lib/unuse/useRunOnce.js.map +1 -0
- package/lib/unuse/useSyncEnd.js +17 -10
- package/lib/unuse/useSyncEnd.js.map +1 -0
- package/lib/unuse/useTokenInfo.js +20 -12
- package/lib/unuse/useTokenInfo.js.map +1 -0
- package/lib/unuse/useUnsettlementPnL.js +21 -11
- package/lib/unuse/useUnsettlementPnL.js.map +1 -0
- package/lib/useAccount.js +32 -29
- package/lib/useAccount.js.map +1 -0
- package/lib/useAccountInstance.js +27 -20
- package/lib/useAccountInstance.js.map +1 -0
- package/lib/useBoolean.js +25 -10
- package/lib/useBoolean.js.map +1 -0
- package/lib/useConfig.js +15 -7
- package/lib/useConfig.js.map +1 -0
- package/lib/useEventEmitter.js +23 -13
- package/lib/useEventEmitter.js.map +1 -0
- package/lib/useLazyQuery.js +25 -23
- package/lib/useLazyQuery.js.map +1 -0
- package/lib/useLocalStorage.js +44 -28
- package/lib/useLocalStorage.js.map +1 -0
- package/lib/useMediaQuery.js +22 -14
- package/lib/useMediaQuery.js.map +1 -0
- package/lib/useMutation.js +47 -52
- package/lib/useMutation.js.map +1 -0
- package/lib/useObserve.js +22 -8
- package/lib/useObserve.js.map +1 -0
- package/lib/useParamsCheck.js +18 -14
- package/lib/useParamsCheck.js.map +1 -0
- package/lib/usePoster.js +80 -74
- package/lib/usePoster.js.map +1 -0
- package/lib/usePreloadData.js +21 -11
- package/lib/usePreloadData.js.map +1 -0
- package/lib/usePrivateInfiniteQuery.js +36 -22
- package/lib/usePrivateInfiniteQuery.js.map +1 -0
- package/lib/usePrivateQuery.js +35 -25
- package/lib/usePrivateQuery.js.map +1 -0
- package/lib/useQuery.js +24 -20
- package/lib/useQuery.js.map +1 -0
- package/lib/useSessionStorage.js +41 -26
- package/lib/useSessionStorage.js.map +1 -0
- package/lib/useWS.js +42 -32
- package/lib/useWS.js.map +1 -0
- package/lib/useWsStatus.js +34 -20
- package/lib/useWsStatus.js.map +1 -0
- package/lib/utils/createGetter.js +19 -14
- package/lib/utils/createGetter.js.map +1 -0
- package/lib/utils/createOrder.d.ts +1 -0
- package/lib/utils/createOrder.d.ts.map +1 -1
- package/lib/utils/createOrder.js +133 -82
- package/lib/utils/createOrder.js.map +1 -0
- package/lib/utils/dev.js +13 -9
- package/lib/utils/dev.js.map +1 -0
- package/lib/utils/fetcher.js +13 -5
- package/lib/utils/fetcher.js.map +1 -0
- package/lib/utils/json.js +12 -5
- package/lib/utils/json.js.map +1 -0
- package/lib/utils/orderEntryHelper.js +125 -82
- package/lib/utils/orderEntryHelper.js.map +1 -0
- package/lib/utils/parseHolding.js +19 -9
- package/lib/utils/parseHolding.js.map +1 -0
- package/lib/utils/swr.js +134 -111
- package/lib/utils/swr.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +13 -4
- package/lib/version.js.map +1 -0
- package/lib/walletConnectorContext.js +23 -7
- package/lib/walletConnectorContext.js.map +1 -0
- package/package.json +17 -9
|
@@ -1,99 +1,113 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
pathOr_unsettledPnLPathOr: function() {
|
|
13
|
+
return pathOr_unsettledPnLPathOr;
|
|
14
|
+
},
|
|
15
|
+
usePositionStream: function() {
|
|
16
|
+
return usePositionStream;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _react = require("react");
|
|
20
|
+
const _usePrivateQuery = require("../usePrivateQuery");
|
|
21
|
+
const _perp = require("@orderly.network/perp");
|
|
22
|
+
const _createGetter = require("../utils/createGetter");
|
|
23
|
+
const _useFundingRates = require("./useFundingRates");
|
|
24
|
+
const _useSymbolsInfo = require("./useSymbolsInfo");
|
|
25
|
+
const _useMarkPricesStream = require("./useMarkPricesStream");
|
|
26
|
+
const _ramda = require("ramda");
|
|
27
|
+
const _parseHolding = require("../utils/parseHolding");
|
|
28
|
+
const _utils = require("@orderly.network/utils");
|
|
29
|
+
const _useMarketsStream = require("./useMarketsStream");
|
|
30
|
+
const usePositionStream = (/**
|
|
31
|
+
* If symbol is passed, only the position of that symbol will be returned.
|
|
32
|
+
*/ symbol, options)=>{
|
|
33
|
+
const symbolInfo = (0, _useSymbolsInfo.useSymbolsInfo)();
|
|
34
|
+
const { data: accountInfo } = (0, _usePrivateQuery.usePrivateQuery)("/v1/client/info");
|
|
35
|
+
const { data: holding } = (0, _usePrivateQuery.usePrivateQuery)("/v1/client/holding", {
|
|
36
|
+
formatter: (data)=>{
|
|
24
37
|
return data.holding;
|
|
25
|
-
}
|
|
38
|
+
}
|
|
26
39
|
});
|
|
27
|
-
const fundingRates = (0,
|
|
28
|
-
const { data, error, mutate: refreshPositions
|
|
40
|
+
const fundingRates = (0, _useFundingRates.useFundingRates)();
|
|
41
|
+
const { data, error, mutate: refreshPositions } = (0, _usePrivateQuery.usePrivateQuery)(`/v1/positions`, {
|
|
29
42
|
// revalidateOnFocus: false,
|
|
30
43
|
// revalidateOnReconnect: false,
|
|
31
44
|
// dedupingInterval: 200,
|
|
32
45
|
// keepPreviousData: false,
|
|
33
46
|
// revalidateIfStale: true,
|
|
34
47
|
...options,
|
|
35
|
-
formatter: (data)
|
|
36
|
-
onError: (err)
|
|
48
|
+
formatter: (data)=>data,
|
|
49
|
+
onError: (err)=>{}
|
|
37
50
|
});
|
|
38
|
-
const { data: markPrices } = (0,
|
|
39
|
-
const [priceMode, setPriceMode] = (0,
|
|
40
|
-
(0,
|
|
51
|
+
const { data: markPrices } = (0, _useMarkPricesStream.useMarkPricesStream)();
|
|
52
|
+
const [priceMode, setPriceMode] = (0, _react.useState)(options?.calcMode || "markPrice");
|
|
53
|
+
(0, _react.useEffect)(()=>{
|
|
41
54
|
if (options?.calcMode && priceMode !== options?.calcMode) {
|
|
42
55
|
setPriceMode(options?.calcMode);
|
|
43
56
|
}
|
|
44
|
-
}, [
|
|
45
|
-
|
|
57
|
+
}, [
|
|
58
|
+
options?.calcMode
|
|
59
|
+
]);
|
|
60
|
+
const { data: tickers } = (0, _useMarketsStream.useMarketsStream)();
|
|
46
61
|
// console.log("mark prices", markPrices);
|
|
47
62
|
// console.log("tickers", tickers);
|
|
48
|
-
const tickerPrices = (0,
|
|
63
|
+
const tickerPrices = (0, _react.useMemo)(()=>{
|
|
49
64
|
const data = Object.create(null);
|
|
50
|
-
tickers?.forEach((item)
|
|
65
|
+
tickers?.forEach((item)=>{
|
|
51
66
|
// @ts-ignore
|
|
52
67
|
data[item.symbol] = item["24h_close"];
|
|
53
68
|
});
|
|
54
69
|
return data;
|
|
55
|
-
}, [
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const formatted = filteredData.map((item) => {
|
|
70
|
+
}, [
|
|
71
|
+
tickers
|
|
72
|
+
]);
|
|
73
|
+
const formatedPositions = (0, _react.useMemo)(()=>{
|
|
74
|
+
if (!data?.rows || symbolInfo.isNil || !accountInfo) return null;
|
|
75
|
+
const filteredData = typeof symbol === "undefined" || symbol === "" ? data.rows : data.rows.filter((item)=>{
|
|
76
|
+
return item.symbol === symbol;
|
|
77
|
+
});
|
|
78
|
+
let unrealPnL_total = _utils.zero, notional_total = _utils.zero, unsettlementPnL_total = _utils.zero;
|
|
79
|
+
const formatted = filteredData.map((item)=>{
|
|
66
80
|
// const price = (markPrices as any)[item.symbol] ?? item.mark_price;
|
|
67
|
-
const unRealizedPrice = (0,
|
|
68
|
-
const price = (0,
|
|
81
|
+
const unRealizedPrice = (0, _ramda.propOr)(item.mark_price, item.symbol, priceMode === "markPrice" ? markPrices : tickerPrices);
|
|
82
|
+
const price = (0, _ramda.propOr)(item.mark_price, item.symbol, markPrices);
|
|
69
83
|
const info = symbolInfo[item.symbol];
|
|
70
84
|
//
|
|
71
|
-
const notional =
|
|
72
|
-
const unrealPnl =
|
|
85
|
+
const notional = _perp.positions.notional(item.position_qty, price);
|
|
86
|
+
const unrealPnl = _perp.positions.unrealizedPnL({
|
|
73
87
|
qty: item.position_qty,
|
|
74
88
|
openPrice: item?.average_open_price,
|
|
75
|
-
markPrice: unRealizedPrice
|
|
89
|
+
markPrice: unRealizedPrice
|
|
76
90
|
});
|
|
77
|
-
const imr =
|
|
91
|
+
const imr = _perp.account.IMR({
|
|
78
92
|
maxLeverage: accountInfo.max_leverage,
|
|
79
93
|
baseIMR: info("base_imr"),
|
|
80
94
|
IMR_Factor: accountInfo.imr_factor[item.symbol],
|
|
81
95
|
positionNotional: notional,
|
|
82
96
|
ordersNotional: 0,
|
|
83
|
-
IMR_factor_power: 4 / 5
|
|
97
|
+
IMR_factor_power: 4 / 5
|
|
84
98
|
});
|
|
85
|
-
const unrealPnlROI =
|
|
99
|
+
const unrealPnlROI = _perp.positions.unrealizedPnLROI({
|
|
86
100
|
positionQty: item.position_qty,
|
|
87
101
|
openPrice: item.average_open_price,
|
|
88
102
|
IMR: imr,
|
|
89
|
-
unrealizedPnL: unrealPnl
|
|
103
|
+
unrealizedPnL: unrealPnl
|
|
90
104
|
});
|
|
91
|
-
const unsettlementPnL =
|
|
105
|
+
const unsettlementPnL = _perp.positions.unsettlementPnL({
|
|
92
106
|
positionQty: item.position_qty,
|
|
93
107
|
markPrice: price,
|
|
94
108
|
costPosition: item.cost_position,
|
|
95
109
|
sumUnitaryFunding: fundingRates[item.symbol]?.("sum_unitary_funding", 0),
|
|
96
|
-
lastSumUnitaryFunding: item.last_sum_unitary_funding
|
|
110
|
+
lastSumUnitaryFunding: item.last_sum_unitary_funding
|
|
97
111
|
});
|
|
98
112
|
unrealPnL_total = unrealPnL_total.add(unrealPnl);
|
|
99
113
|
notional_total = notional_total.add(notional);
|
|
@@ -105,7 +119,7 @@ symbol, options) => {
|
|
|
105
119
|
notional,
|
|
106
120
|
unsettlement_pnl: unsettlementPnL,
|
|
107
121
|
unrealized_pnl: unrealPnl,
|
|
108
|
-
unrealized_pnl_ROI: unrealPnlROI
|
|
122
|
+
unrealized_pnl_ROI: unrealPnlROI
|
|
109
123
|
};
|
|
110
124
|
});
|
|
111
125
|
return [
|
|
@@ -113,8 +127,8 @@ symbol, options) => {
|
|
|
113
127
|
{
|
|
114
128
|
unrealPnL: unrealPnL_total.toNumber(),
|
|
115
129
|
notional: notional_total.toNumber(),
|
|
116
|
-
unsettledPnL: unsettlementPnL_total.toNumber()
|
|
117
|
-
}
|
|
130
|
+
unsettledPnL: unsettlementPnL_total.toNumber()
|
|
131
|
+
}
|
|
118
132
|
];
|
|
119
133
|
}, [
|
|
120
134
|
data?.rows,
|
|
@@ -124,57 +138,71 @@ symbol, options) => {
|
|
|
124
138
|
priceMode,
|
|
125
139
|
tickerPrices,
|
|
126
140
|
symbol,
|
|
127
|
-
holding
|
|
141
|
+
holding
|
|
128
142
|
]);
|
|
129
143
|
// const showSymbol = useCallback((symbol: string) => {
|
|
130
144
|
// setVisibleSymbol(symbol);
|
|
131
145
|
// }, []);
|
|
132
|
-
const [totalCollateral, totalValue, totalUnrealizedROI] = (0,
|
|
146
|
+
const [totalCollateral, totalValue, totalUnrealizedROI] = (0, _react.useMemo)(()=>{
|
|
133
147
|
if (!holding || !markPrices) {
|
|
134
|
-
return [
|
|
148
|
+
return [
|
|
149
|
+
_utils.zero,
|
|
150
|
+
_utils.zero,
|
|
151
|
+
0
|
|
152
|
+
];
|
|
135
153
|
}
|
|
136
|
-
const unsettlemnedPnL = (0,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
154
|
+
const unsettlemnedPnL = (0, _ramda.pathOr)(0, [
|
|
155
|
+
1,
|
|
156
|
+
"unsettledPnL"
|
|
157
|
+
])(formatedPositions);
|
|
158
|
+
const unrealizedPnL = (0, _ramda.pathOr)(0, [
|
|
159
|
+
1,
|
|
160
|
+
"unrealPnL"
|
|
161
|
+
])(formatedPositions);
|
|
162
|
+
const [USDC_holding, nonUSDC] = (0, _parseHolding.parseHolding)(holding, markPrices);
|
|
163
|
+
const totalCollateral = _perp.account.totalCollateral({
|
|
140
164
|
USDCHolding: USDC_holding,
|
|
141
165
|
nonUSDCHolding: nonUSDC,
|
|
142
|
-
unsettlementPnL: unsettlemnedPnL
|
|
166
|
+
unsettlementPnL: unsettlemnedPnL
|
|
143
167
|
});
|
|
144
|
-
const totalValue =
|
|
168
|
+
const totalValue = _perp.account.totalValue({
|
|
145
169
|
totalUnsettlementPnL: unsettlemnedPnL,
|
|
146
170
|
USDCHolding: USDC_holding,
|
|
147
|
-
nonUSDCHolding: nonUSDC
|
|
171
|
+
nonUSDCHolding: nonUSDC
|
|
148
172
|
});
|
|
149
|
-
const totalUnrealizedROI =
|
|
173
|
+
const totalUnrealizedROI = _perp.account.totalUnrealizedROI({
|
|
150
174
|
totalUnrealizedPnL: unrealizedPnL,
|
|
151
|
-
totalValue: totalValue.toNumber()
|
|
175
|
+
totalValue: totalValue.toNumber()
|
|
152
176
|
});
|
|
153
|
-
return [
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
177
|
+
return [
|
|
178
|
+
totalCollateral,
|
|
179
|
+
totalValue,
|
|
180
|
+
totalUnrealizedROI
|
|
181
|
+
];
|
|
182
|
+
}, [
|
|
183
|
+
holding,
|
|
184
|
+
formatedPositions,
|
|
185
|
+
markPrices
|
|
186
|
+
]);
|
|
187
|
+
const positionsRows = (0, _react.useMemo)(()=>{
|
|
188
|
+
if (!formatedPositions) return null;
|
|
189
|
+
if (!symbolInfo || !accountInfo) return formatedPositions[0];
|
|
160
190
|
const total = totalCollateral.toNumber();
|
|
161
|
-
let rows = formatedPositions[0]
|
|
162
|
-
.filter((item) => item.position_qty !== 0)
|
|
163
|
-
.map((item) => {
|
|
191
|
+
let rows = formatedPositions[0].filter((item)=>item.position_qty !== 0).map((item)=>{
|
|
164
192
|
const info = symbolInfo?.[item.symbol];
|
|
165
|
-
const MMR =
|
|
193
|
+
const MMR = _perp.positions.MMR({
|
|
166
194
|
baseMMR: info("base_mmr"),
|
|
167
195
|
baseIMR: info("base_imr"),
|
|
168
196
|
IMRFactor: accountInfo.imr_factor[item.symbol],
|
|
169
197
|
positionNotional: item.notional,
|
|
170
|
-
IMR_factor_power: 4 / 5
|
|
198
|
+
IMR_factor_power: 4 / 5
|
|
171
199
|
});
|
|
172
200
|
return {
|
|
173
201
|
...item,
|
|
174
|
-
mm:
|
|
202
|
+
mm: _perp.positions.maintenanceMargin({
|
|
175
203
|
positionQty: item.position_qty,
|
|
176
204
|
markPrice: item.mark_price,
|
|
177
|
-
MMR
|
|
205
|
+
MMR
|
|
178
206
|
}),
|
|
179
207
|
// est_liq_price: positions.liqPrice({
|
|
180
208
|
// markPrice: item.mark_price,
|
|
@@ -182,41 +210,46 @@ symbol, options) => {
|
|
|
182
210
|
// positionQty: item.position_qty,
|
|
183
211
|
// MMR,
|
|
184
212
|
// }),
|
|
185
|
-
mmr: MMR
|
|
213
|
+
mmr: MMR
|
|
186
214
|
};
|
|
187
215
|
});
|
|
188
216
|
// calculate est_liq_price
|
|
189
|
-
rows = rows.map((item)
|
|
190
|
-
const est_liq_price =
|
|
217
|
+
rows = rows.map((item)=>{
|
|
218
|
+
const est_liq_price = _perp.positions.liqPrice({
|
|
191
219
|
markPrice: item.mark_price,
|
|
192
220
|
totalCollateral: total,
|
|
193
221
|
positionQty: item.position_qty,
|
|
194
222
|
positions: rows,
|
|
195
|
-
MMR: item.mmr
|
|
223
|
+
MMR: item.mmr
|
|
196
224
|
});
|
|
197
225
|
return {
|
|
198
226
|
...item,
|
|
199
|
-
est_liq_price
|
|
227
|
+
est_liq_price
|
|
200
228
|
};
|
|
201
229
|
});
|
|
202
230
|
return rows;
|
|
203
|
-
}, [
|
|
231
|
+
}, [
|
|
232
|
+
formatedPositions,
|
|
233
|
+
symbolInfo,
|
|
234
|
+
accountInfo,
|
|
235
|
+
totalCollateral
|
|
236
|
+
]);
|
|
204
237
|
// useEffect(() => {
|
|
205
238
|
// ee.on("positions:changed", () => {
|
|
206
239
|
// updatePositions();
|
|
207
240
|
// });
|
|
208
241
|
// }, []);
|
|
209
|
-
const positionInfoGetter = (0,
|
|
242
|
+
const positionInfoGetter = (0, _createGetter.createGetter)(data, 1);
|
|
210
243
|
return [
|
|
211
244
|
{
|
|
212
245
|
rows: positionsRows,
|
|
213
246
|
aggregated: {
|
|
214
|
-
...
|
|
215
|
-
unrealPnlROI: totalUnrealizedROI
|
|
247
|
+
...formatedPositions?.[1] ?? {},
|
|
248
|
+
unrealPnlROI: totalUnrealizedROI
|
|
216
249
|
},
|
|
217
250
|
totalCollateral,
|
|
218
251
|
totalValue,
|
|
219
|
-
totalUnrealizedROI
|
|
252
|
+
totalUnrealizedROI
|
|
220
253
|
},
|
|
221
254
|
positionInfoGetter,
|
|
222
255
|
{
|
|
@@ -225,13 +258,14 @@ symbol, options) => {
|
|
|
225
258
|
// showSymbol,
|
|
226
259
|
error,
|
|
227
260
|
// loadMore: () => {},
|
|
228
|
-
refresh: refreshPositions
|
|
229
|
-
}
|
|
261
|
+
refresh: refreshPositions
|
|
262
|
+
}
|
|
230
263
|
];
|
|
231
264
|
};
|
|
232
|
-
|
|
233
|
-
exports.pathOr_unsettledPnLPathOr = (0, ramda_1.pathOr)(0, [
|
|
265
|
+
const pathOr_unsettledPnLPathOr = (0, _ramda.pathOr)(0, [
|
|
234
266
|
0,
|
|
235
267
|
"aggregated",
|
|
236
|
-
"unsettledPnL"
|
|
268
|
+
"unsettledPnL"
|
|
237
269
|
]);
|
|
270
|
+
|
|
271
|
+
//# sourceMappingURL=usePositionStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/usePositionStream.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState, useRef } from \"react\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { account, positions } from \"@orderly.network/perp\";\nimport { type SWRConfiguration } from \"swr\";\nimport useSWRSubscription from \"swr/subscription\";\nimport { createGetter } from \"../utils/createGetter\";\nimport { useFundingRates } from \"./useFundingRates\";\nimport { type API, OrderEntity } 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 { useWS } from \"../useWS\";\nimport { useMarketsStream } from \"./useMarketsStream\";\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 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 // console.log(\"mark prices\", markPrices);\n // console.log(\"tickers\", tickers);\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(() => {\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 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 // est_liq_price: positions.liqPrice({\n // markPrice: item.mark_price,\n // totalCollateral: total,\n // positionQty: item.position_qty,\n // MMR,\n // }),\n mmr: MMR,\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]);\n\n // useEffect(() => {\n // ee.on(\"positions:changed\", () => {\n // updatePositions();\n // });\n // }, []);\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":["pathOr_unsettledPnLPathOr","usePositionStream","symbol","options","symbolInfo","useSymbolsInfo","data","accountInfo","usePrivateQuery","holding","formatter","fundingRates","useFundingRates","error","mutate","refreshPositions","onError","err","markPrices","useMarkPricesStream","priceMode","setPriceMode","useState","calcMode","useEffect","tickers","useMarketsStream","tickerPrices","useMemo","Object","create","forEach","item","formatedPositions","rows","isNil","filteredData","filter","unrealPnL_total","zero","notional_total","unsettlementPnL_total","formatted","map","unRealizedPrice","propOr","mark_price","price","info","notional","positions","position_qty","unrealPnl","unrealizedPnL","qty","openPrice","average_open_price","markPrice","imr","account","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","pathOr","USDC_holding","nonUSDC","parseHolding","USDCHolding","nonUSDCHolding","totalUnsettlementPnL","totalUnrealizedPnL","positionsRows","total","MMR","baseMMR","IMRFactor","maintenanceMargin","mmr","est_liq_price","liqPrice","positionInfoGetter","createGetter","aggregated","loading","refresh"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,44 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "usePrivateDataObserver", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return usePrivateDataObserver;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _react = require("react");
|
|
12
|
+
const _useWS = require("../useWS");
|
|
13
|
+
const _swr = require("swr");
|
|
14
|
+
const _useAccount = require("../useAccount");
|
|
15
|
+
const _infinite = require("swr/infinite");
|
|
16
|
+
const _useEventEmitter = require("../useEventEmitter");
|
|
17
|
+
const _swr1 = require("../utils/swr");
|
|
18
|
+
const usePrivateDataObserver = (options)=>{
|
|
19
|
+
const ws = (0, _useWS.useWS)();
|
|
13
20
|
// const { mutate } = useSWRConfig();
|
|
14
|
-
const ee = (0,
|
|
15
|
-
const { state } = (0,
|
|
21
|
+
const ee = (0, _useEventEmitter.useEventEmitter)();
|
|
22
|
+
const { state } = (0, _useAccount.useAccount)();
|
|
16
23
|
// TODO: remove this when the WS service provides the correct data
|
|
17
|
-
const algoOrderCacheQuneue = (0,
|
|
18
|
-
const updateOrders = (data, isAlgoOrder)
|
|
24
|
+
const algoOrderCacheQuneue = (0, _react.useRef)([]);
|
|
25
|
+
const updateOrders = (data, isAlgoOrder)=>{
|
|
19
26
|
const map = options.getKeysMap("orders");
|
|
20
27
|
// console.log("$$$$$$$$$$$$", data, algoOrderCacheQuneue.current);
|
|
21
28
|
if (isAlgoOrder) {
|
|
22
29
|
/// TODO: remove this when the WS service provides the correct data
|
|
23
30
|
if (algoOrderCacheQuneue.current.length) {
|
|
24
|
-
const index = algoOrderCacheQuneue.current.findIndex((item)
|
|
31
|
+
const index = algoOrderCacheQuneue.current.findIndex((item)=>item.order_id === data.algoOrderId);
|
|
25
32
|
if (index > -1) {
|
|
26
33
|
data = {
|
|
27
34
|
...data,
|
|
28
|
-
...algoOrderCacheQuneue.current[index]
|
|
35
|
+
...algoOrderCacheQuneue.current[index]
|
|
29
36
|
};
|
|
30
37
|
algoOrderCacheQuneue.current.splice(index, 1);
|
|
31
38
|
}
|
|
32
39
|
}
|
|
33
40
|
}
|
|
34
|
-
map.forEach((getKey, key)
|
|
35
|
-
(0,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return (0,
|
|
41
|
+
map.forEach((getKey, key)=>{
|
|
42
|
+
(0, _swr.mutate)((0, _infinite.unstable_serialize)((index, prevData)=>[
|
|
43
|
+
getKey(index, prevData),
|
|
44
|
+
state.accountId
|
|
45
|
+
]), (prevData)=>{
|
|
46
|
+
return (0, _swr1.updateOrdersHandler)(key, data, prevData);
|
|
40
47
|
}, {
|
|
41
|
-
revalidate: false
|
|
48
|
+
revalidate: false
|
|
42
49
|
});
|
|
43
50
|
});
|
|
44
51
|
// emit events;
|
|
@@ -48,59 +55,62 @@ const usePrivateDataObserver = (options) => {
|
|
|
48
55
|
// });
|
|
49
56
|
ee.emit("orders:changed", {
|
|
50
57
|
...data,
|
|
51
|
-
status: data.status || data.algoStatus
|
|
58
|
+
status: data.status || data.algoStatus
|
|
52
59
|
});
|
|
53
60
|
};
|
|
54
61
|
// orders
|
|
55
|
-
(0,
|
|
56
|
-
if (!state.accountId)
|
|
57
|
-
return;
|
|
62
|
+
(0, _react.useEffect)(()=>{
|
|
63
|
+
if (!state.accountId) return;
|
|
58
64
|
const unsubscribe = ws.privateSubscribe("executionreport", {
|
|
59
|
-
onMessage: (data)
|
|
65
|
+
onMessage: (data)=>{
|
|
60
66
|
updateOrders(data, false);
|
|
61
|
-
}
|
|
67
|
+
}
|
|
62
68
|
});
|
|
63
|
-
return ()
|
|
64
|
-
}, [
|
|
69
|
+
return ()=>unsubscribe?.();
|
|
70
|
+
}, [
|
|
71
|
+
state.accountId
|
|
72
|
+
]);
|
|
65
73
|
// algo orders
|
|
66
|
-
(0,
|
|
67
|
-
if (!state.accountId)
|
|
68
|
-
return;
|
|
74
|
+
(0, _react.useEffect)(()=>{
|
|
75
|
+
if (!state.accountId) return;
|
|
69
76
|
const unsubscribe = ws.privateSubscribe("algoexecutionreport", {
|
|
70
|
-
onMessage: (data)
|
|
71
|
-
setTimeout(()
|
|
77
|
+
onMessage: (data)=>{
|
|
78
|
+
setTimeout(()=>{
|
|
72
79
|
if (Array.isArray(data)) {
|
|
73
|
-
data.forEach((item)
|
|
80
|
+
data.forEach((item)=>{
|
|
74
81
|
updateOrders(item, true);
|
|
75
|
-
|
|
82
|
+
// ee.emit("orders:changed", { ...item, status: item.algoStatus });
|
|
76
83
|
});
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
84
|
+
} else {
|
|
79
85
|
updateOrders(data, true);
|
|
80
|
-
|
|
86
|
+
// ee.emit("orders:changed", { ...data, status: data.algoStatus });
|
|
81
87
|
}
|
|
82
88
|
}, 100);
|
|
83
|
-
}
|
|
89
|
+
}
|
|
84
90
|
});
|
|
85
|
-
return ()
|
|
86
|
-
}, [
|
|
91
|
+
return ()=>unsubscribe?.();
|
|
92
|
+
}, [
|
|
93
|
+
state.accountId
|
|
94
|
+
]);
|
|
87
95
|
// positions
|
|
88
|
-
(0,
|
|
89
|
-
if (!state.accountId)
|
|
90
|
-
|
|
91
|
-
|
|
96
|
+
(0, _react.useEffect)(()=>{
|
|
97
|
+
if (!state.accountId) return;
|
|
98
|
+
const key = [
|
|
99
|
+
"/v1/positions",
|
|
100
|
+
state.accountId
|
|
101
|
+
];
|
|
92
102
|
const unsubscribe = ws.privateSubscribe("position", {
|
|
93
|
-
onMessage: (data)
|
|
103
|
+
onMessage: (data)=>{
|
|
94
104
|
const { positions: nextPostions } = data;
|
|
95
105
|
// console.log("ws----- positions data-----", data);
|
|
96
106
|
// updatePositions();
|
|
97
|
-
(0,
|
|
107
|
+
(0, _swr.mutate)(key, (prevPositions)=>{
|
|
98
108
|
// return nextPostions;
|
|
99
109
|
if (!!prevPositions) {
|
|
100
110
|
return {
|
|
101
111
|
...prevPositions,
|
|
102
|
-
rows: prevPositions.rows.map((row)
|
|
103
|
-
const item = nextPostions.find((item)
|
|
112
|
+
rows: prevPositions.rows.map((row)=>{
|
|
113
|
+
const item = nextPostions.find((item)=>item.symbol === row.symbol);
|
|
104
114
|
if (item) {
|
|
105
115
|
return {
|
|
106
116
|
symbol: item.symbol,
|
|
@@ -120,31 +130,34 @@ const usePrivateDataObserver = (options) => {
|
|
|
120
130
|
IMR_withdraw_orders: item.imrwithOrders,
|
|
121
131
|
MMR_with_orders: item.mmrwithOrders,
|
|
122
132
|
pnl_24_h: item.pnl24H,
|
|
123
|
-
fee_24_h: item.fee24H
|
|
133
|
+
fee_24_h: item.fee24H
|
|
124
134
|
};
|
|
125
135
|
}
|
|
126
136
|
return row;
|
|
127
|
-
})
|
|
137
|
+
})
|
|
128
138
|
};
|
|
129
139
|
}
|
|
130
140
|
}, {
|
|
131
|
-
revalidate: false
|
|
141
|
+
revalidate: false
|
|
132
142
|
});
|
|
133
|
-
}
|
|
143
|
+
}
|
|
134
144
|
});
|
|
135
|
-
return ()
|
|
145
|
+
return ()=>{
|
|
136
146
|
unsubscribe?.();
|
|
137
147
|
};
|
|
138
|
-
}, [
|
|
148
|
+
}, [
|
|
149
|
+
state.accountId
|
|
150
|
+
]);
|
|
139
151
|
// cache algo orders
|
|
140
|
-
(0,
|
|
141
|
-
const handler = (data)
|
|
152
|
+
(0, _react.useEffect)(()=>{
|
|
153
|
+
const handler = (data)=>{
|
|
142
154
|
algoOrderCacheQuneue.current.push(data);
|
|
143
155
|
};
|
|
144
156
|
ee.on("algoOrder:cache", handler);
|
|
145
|
-
return ()
|
|
157
|
+
return ()=>{
|
|
146
158
|
ee.off("algoOrder:cache", handler);
|
|
147
159
|
};
|
|
148
160
|
}, []);
|
|
149
161
|
};
|
|
150
|
-
|
|
162
|
+
|
|
163
|
+
//# sourceMappingURL=usePrivateDataObserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/usePrivateDataObserver.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage, API } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { parseJSON } from \"../utils/json\";\nimport { updateOrdersHandler } from \"../utils/swr\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const updateOrders = (\n data: WSMessage.AlgoOrder | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const map = options.getKeysMap(\"orders\");\n\n // console.log(\"$$$$$$$$$$$$\", data, algoOrderCacheQuneue.current);\n\n if (isAlgoOrder) {\n /// TODO: remove this when the WS service provides the correct data\n if (algoOrderCacheQuneue.current.length) {\n const index = algoOrderCacheQuneue.current.findIndex(\n (item: any) =>\n item.order_id === (data as WSMessage.AlgoOrder).algoOrderId\n );\n\n if (index > -1) {\n data = {\n ...data,\n ...algoOrderCacheQuneue.current[index],\n };\n algoOrderCacheQuneue.current.splice(index, 1);\n }\n }\n }\n\n map.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n return updateOrdersHandler(key, data, prevData);\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n ee.emit(\"orders:changed\", {\n ...data,\n status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n setTimeout(() => {\n if (Array.isArray(data)) {\n data.forEach((item) => {\n updateOrders(item, true);\n\n // ee.emit(\"orders:changed\", { ...item, status: item.algoStatus });\n });\n } else {\n updateOrders(data, true);\n // ee.emit(\"orders:changed\", { ...data, status: data.algoStatus });\n }\n }, 100);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // console.log(\"ws----- positions data-----\", data);\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n return {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const item = nextPostions.find(\n (item) => item.symbol === row.symbol\n );\n if (item) {\n return {\n symbol: item.symbol,\n position_qty: item.positionQty,\n cost_position: item.costPosition,\n last_sum_unitary_funding: item.lastSumUnitaryFunding,\n pending_long_qty: item.pendingLongQty,\n pending_short_qty: item.pendingShortQty,\n settle_price: item.settlePrice,\n average_open_price: item.averageOpenPrice,\n unsettled_pnl: item.unsettledPnl,\n mark_price: item.markPrice,\n est_liq_price: item.estLiqPrice,\n timestamp: Date.now(),\n imr: item.imr,\n mmr: item.mmr,\n IMR_withdraw_orders: item.imrwithOrders,\n MMR_with_orders: item.mmrwithOrders,\n pnl_24_h: item.pnl24H,\n fee_24_h: item.fee24H,\n };\n }\n\n return row;\n }),\n };\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n\n // cache algo orders\n useEffect(() => {\n const handler = (data: API.AlgoOrder) => {\n algoOrderCacheQuneue.current.push(data);\n };\n\n ee.on(\"algoOrder:cache\", handler);\n\n return () => {\n ee.off(\"algoOrder:cache\", handler);\n };\n }, []);\n};\n"],"names":["usePrivateDataObserver","options","ws","useWS","ee","useEventEmitter","state","useAccount","algoOrderCacheQuneue","useRef","updateOrders","data","isAlgoOrder","map","getKeysMap","current","length","index","findIndex","item","order_id","algoOrderId","splice","forEach","getKey","key","mutate","unstable_serialize","prevData","accountId","updateOrdersHandler","revalidate","emit","status","algoStatus","useEffect","unsubscribe","privateSubscribe","onMessage","setTimeout","Array","isArray","positions","nextPostions","prevPositions","rows","row","find","symbol","position_qty","positionQty","cost_position","costPosition","last_sum_unitary_funding","lastSumUnitaryFunding","pending_long_qty","pendingLongQty","pending_short_qty","pendingShortQty","settle_price","settlePrice","average_open_price","averageOpenPrice","unsettled_pnl","unsettledPnl","mark_price","markPrice","est_liq_price","estLiqPrice","timestamp","Date","now","imr","mmr","IMR_withdraw_orders","imrwithOrders","MMR_with_orders","mmrwithOrders","pnl_24_h","pnl24H","fee_24_h","fee24H","handler","push","on","off"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|