@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/useMutation.ts"],"sourcesContent":["import useSWRMutation, {\n TriggerWithOptionsArgs,\n type SWRMutationConfiguration,\n TriggerWithoutArgs,\n} from \"swr/mutation\";\nimport { mutate } from \"@orderly.network/net\";\nimport {\n type MessageFactor,\n type SignedMessagePayload,\n} from \"@orderly.network/core\";\nimport { useAccountInstance } from \"./useAccountInstance\";\nimport { useConfig } from \"./useConfig\";\n\ntype HTTP_METHOD = \"POST\" | \"PUT\" | \"DELETE\";\n\nconst fetcher = (\n url: string,\n options: {\n arg: {\n data?: any;\n params?: any;\n method: HTTP_METHOD;\n signature: SignedMessagePayload;\n };\n }\n) => {\n const init: RequestInit = {\n method: options.arg.method,\n headers: {\n ...options.arg.signature,\n },\n };\n\n if (options.arg.data) {\n init.body = JSON.stringify(options.arg.data);\n }\n\n if (\n typeof options.arg.params === \"object\" &&\n Object.keys(options.arg.params).length\n ) {\n let search = new URLSearchParams(options.arg.params);\n url = `${url}?${search.toString()}`;\n }\n\n return mutate(url, init);\n};\n\n/**\n * This hook is used to execute API requests for data mutation, such as POST, DELETE, PUT, etc.\n */\nexport const useMutation = <T, E>(\n /**\n * The URL to send the request to. If the URL does not start with \"http\",\n * it will be prefixed with the API base URL.\n */\n url: string,\n /**\n * The HTTP method to use for the request. Defaults to \"POST\".\n */\n method: HTTP_METHOD = \"POST\",\n /**\n * The configuration object for the mutation.\n * @see [useSWRMutation](https://swr.vercel.app/docs/mutation#api)\n *\n * @link https://swr.vercel.app/docs/mutation#api\n */\n options?: SWRMutationConfiguration<T, E>\n) => {\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n\n let fullUrl = url;\n if (!url.startsWith(\"http\")) {\n fullUrl = `${apiBaseUrl}${url}`;\n }\n\n const account = useAccountInstance();\n const signer = account.signer;\n const { trigger, data, error, reset, isMutating } = useSWRMutation(\n fullUrl,\n // method === \"POST\" ? fetcher : deleteFetcher,\n fetcher,\n options\n );\n\n const mutation = async (\n /**\n * The data to send with the request.\n */\n data: Record<string, any> | null,\n /**\n * The query parameters to send with the request.\n */\n params?: Record<string, any>,\n options?: SWRMutationConfiguration<T, E>\n ): Promise<any> => {\n let newUrl = url;\n if (typeof params === \"object\" && Object.keys(params).length) {\n let search = new URLSearchParams(params);\n newUrl = `${url}?${search.toString()}`;\n }\n\n const payload: MessageFactor = {\n method,\n url: newUrl,\n data,\n };\n\n const signature = await signer.sign(payload);\n\n return trigger(\n {\n data,\n params,\n method,\n signature: {\n ...signature,\n \"orderly-account-id\": account.accountId,\n },\n },\n options\n );\n };\n\n return [\n mutation,\n {\n data,\n error,\n reset,\n isMutating,\n },\n ] as const;\n};\n"],"names":["useSWRMutation","mutate","useAccountInstance","useConfig","fetcher","url","options","init","method","arg","headers","signature","data","body","JSON","stringify","params","Object","keys","length","search","URLSearchParams","toString","useMutation","apiBaseUrl","fullUrl","startsWith","account","signer","trigger","error","reset","isMutating","mutation","newUrl","payload","sign","accountId"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,oBAIA,eAAe;AACtB,SAASC,MAAM,QAAQ,uBAAuB;AAK9C,SAASC,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,SAAS,QAAQ,cAAc;AAIxC,MAAMC,UAAU,CACdC,KACAC;IASA,MAAMC,OAAoB;QACxBC,QAAQF,QAAQG,GAAG,CAACD,MAAM;QAC1BE,SAAS;YACP,GAAGJ,QAAQG,GAAG,CAACE,SAAS;QAC1B;IACF;IAEA,IAAIL,QAAQG,GAAG,CAACG,IAAI,EAAE;QACpBL,KAAKM,IAAI,GAAGC,KAAKC,SAAS,CAACT,QAAQG,GAAG,CAACG,IAAI;IAC7C;IAEA,IACE,OAAON,QAAQG,GAAG,CAACO,MAAM,KAAK,YAC9BC,OAAOC,IAAI,CAACZ,QAAQG,GAAG,CAACO,MAAM,EAAEG,MAAM,EACtC;QACA,IAAIC,SAAS,IAAIC,gBAAgBf,QAAQG,GAAG,CAACO,MAAM;QACnDX,MAAM,CAAC,EAAEA,IAAI,CAAC,EAAEe,OAAOE,QAAQ,GAAG,CAAC;IACrC;IAEA,OAAOrB,OAAOI,KAAKE;AACrB;AAEA;;CAEC,GACD,OAAO,MAAMgB,cAAc,CACzB;;;GAGC,GACDlB,KACA;;GAEC,GACDG,SAAsB,MAAM,EAC5B;;;;;GAKC,GACDF;IAEA,MAAMkB,aAAarB,UAAU;IAE7B,IAAIsB,UAAUpB;IACd,IAAI,CAACA,IAAIqB,UAAU,CAAC,SAAS;QAC3BD,UAAU,CAAC,EAAED,WAAW,EAAEnB,IAAI,CAAC;IACjC;IAEA,MAAMsB,UAAUzB;IAChB,MAAM0B,SAASD,QAAQC,MAAM;IAC7B,MAAM,EAAEC,OAAO,EAAEjB,IAAI,EAAEkB,KAAK,EAAEC,KAAK,EAAEC,UAAU,EAAE,GAAGhC,eAClDyB,SACA,+CAA+C;IAC/CrB,SACAE;IAGF,MAAM2B,WAAW,OACf;;KAEC,GACDrB,MACA;;KAEC,GACDI,QACAV;QAEA,IAAI4B,SAAS7B;QACb,IAAI,OAAOW,WAAW,YAAYC,OAAOC,IAAI,CAACF,QAAQG,MAAM,EAAE;YAC5D,IAAIC,SAAS,IAAIC,gBAAgBL;YACjCkB,SAAS,CAAC,EAAE7B,IAAI,CAAC,EAAEe,OAAOE,QAAQ,GAAG,CAAC;QACxC;QAEA,MAAMa,UAAyB;YAC7B3B;YACAH,KAAK6B;YACLtB;QACF;QAEA,MAAMD,YAAY,MAAMiB,OAAOQ,IAAI,CAACD;QAEpC,OAAON,QACL;YACEjB;YACAI;YACAR;YACAG,WAAW;gBACT,GAAGA,SAAS;gBACZ,sBAAsBgB,QAAQU,SAAS;YACzC;QACF,GACA/B;IAEJ;IAEA,OAAO;QACL2B;QACA;YACErB;YACAkB;YACAC;YACAC;QACF;KACD;AACH,EAAE"}
|
package/esm/useObserve.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export var Subjects;
|
|
2
|
-
(function
|
|
2
|
+
(function(Subjects) {
|
|
3
3
|
Subjects["Orders"] = "orders";
|
|
4
4
|
Subjects["Positions"] = "positions";
|
|
5
5
|
})(Subjects || (Subjects = {}));
|
|
6
|
-
export const useObserve = (key, initialValue
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
export const useObserve = (key, initialValue)=>{};
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=useObserve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/useObserve.ts"],"sourcesContent":["import { useState } from \"react\";\n\nexport enum Subjects {\n Orders = \"orders\",\n Positions = \"positions\",\n}\n\nexport const useObserve = <T>(\n key: string,\n initialValue: T\n // @ts-ignore\n): [T, (value: T) => void] => {};\n"],"names":["Subjects","useObserve","key","initialValue"],"rangeMappings":";;;;;","mappings":";UAEYA;;;GAAAA,aAAAA;AAKZ,OAAO,MAAMC,aAAa,CACxBC,KACAC,gBAE6B,EAAE"}
|
package/esm/useParamsCheck.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
|
-
export const useParamsCheck = (params)
|
|
3
|
-
useEffect(()
|
|
2
|
+
export const useParamsCheck = (params)=>{
|
|
3
|
+
useEffect(()=>{
|
|
4
4
|
if (!params.brokerId || params.brokerId === "orderly") {
|
|
5
|
-
|
|
6
|
-
"\n" +
|
|
7
|
-
"========================" +
|
|
8
|
-
"\n" +
|
|
9
|
-
"[OrderlyConfigProvider]: please provide your brokerId" +
|
|
10
|
-
"\n" +
|
|
11
|
-
"========================");
|
|
5
|
+
;
|
|
12
6
|
}
|
|
13
|
-
}, [
|
|
7
|
+
}, [
|
|
8
|
+
params.brokerId
|
|
9
|
+
]);
|
|
14
10
|
};
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=useParamsCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/useParamsCheck.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nexport const useParamsCheck = (params: { brokerId?: string }) => {\n useEffect(() => {\n if (!params.brokerId || params.brokerId === \"orderly\") {\n console.warn(\n \"WARNING:\" +\n \"\\n\" +\n \"========================\" +\n \"\\n\" +\n \"[OrderlyConfigProvider]: please provide your brokerId\" +\n \"\\n\" +\n \"========================\"\n );\n }\n }, [params.brokerId]);\n};\n"],"names":["useEffect","useParamsCheck","params","brokerId"],"rangeMappings":";;;;;;;;;","mappings":"AAAA,SAASA,SAAS,QAAQ,QAAQ;AAElC,OAAO,MAAMC,iBAAiB,CAACC;IAC7BF,UAAU;QACR,IAAI,CAACE,OAAOC,QAAQ,IAAID,OAAOC,QAAQ,KAAK,WAAW;;QAUvD;IACF,GAAG;QAACD,OAAOC,QAAQ;KAAC;AACtB,EAAE"}
|
package/esm/usePoster.js
CHANGED
|
@@ -14,52 +14,59 @@ import { SDKError } from "@orderly.network/types";
|
|
|
14
14
|
* profitColor: "rgb(0,181,159)",
|
|
15
15
|
* ...
|
|
16
16
|
* });
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
* The options to draw the poster
|
|
21
|
-
*/
|
|
22
|
-
data, options) => {
|
|
17
|
+
*/ export const usePoster = (/**
|
|
18
|
+
* The options to draw the poster
|
|
19
|
+
*/ data, options)=>{
|
|
23
20
|
const [error, setError] = useState(null);
|
|
24
|
-
const [canCopy, setCanCopy] = useState(()
|
|
21
|
+
const [canCopy, setCanCopy] = useState(()=>typeof navigator.clipboard !== "undefined");
|
|
25
22
|
const painterRef = useRef(null);
|
|
26
23
|
const [target, setTarget] = useState(null);
|
|
27
|
-
useEffect(()
|
|
24
|
+
useEffect(()=>{
|
|
28
25
|
// Create the painter instance
|
|
29
26
|
if (target && !painterRef.current) {
|
|
30
27
|
painterRef.current = new PosterPainter(target, {
|
|
31
28
|
ratio: 1,
|
|
32
|
-
...options
|
|
29
|
+
...options
|
|
33
30
|
});
|
|
34
|
-
painterRef.current.draw(mergeDeepRight({
|
|
31
|
+
painterRef.current.draw(mergeDeepRight({
|
|
32
|
+
layout: DefaultLayoutConfig,
|
|
33
|
+
fontFamily: "Manrope"
|
|
34
|
+
}, data));
|
|
35
35
|
}
|
|
36
|
-
}, [
|
|
37
|
-
|
|
36
|
+
}, [
|
|
37
|
+
target
|
|
38
|
+
]);
|
|
39
|
+
useEffect(()=>{
|
|
38
40
|
if (painterRef.current) {
|
|
39
|
-
painterRef.current.draw(mergeDeepRight({
|
|
41
|
+
painterRef.current.draw(mergeDeepRight({
|
|
42
|
+
layout: DefaultLayoutConfig,
|
|
43
|
+
fontFamily: "Manrope"
|
|
44
|
+
}, data));
|
|
40
45
|
}
|
|
41
|
-
}, [
|
|
42
|
-
|
|
46
|
+
}, [
|
|
47
|
+
data
|
|
48
|
+
]);
|
|
49
|
+
const toDataURL = (type, encoderOptions)=>{
|
|
43
50
|
if (!target) {
|
|
44
51
|
throw new SDKError("The ref must be a canvas element");
|
|
45
52
|
}
|
|
46
53
|
return target.toDataURL(type, encoderOptions);
|
|
47
54
|
};
|
|
48
55
|
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return new Promise((resolve) => {
|
|
56
|
+
* Converts the poster to a blob
|
|
57
|
+
*/ const toBlob = useCallback((type, encoderOptions)=>{
|
|
58
|
+
return new Promise((resolve)=>{
|
|
53
59
|
if (!target) {
|
|
54
60
|
resolve(null);
|
|
55
61
|
return;
|
|
56
62
|
}
|
|
57
63
|
target.toBlob(resolve, type, encoderOptions);
|
|
58
64
|
});
|
|
59
|
-
}, [
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
65
|
+
}, [
|
|
66
|
+
target
|
|
67
|
+
]);
|
|
68
|
+
const ref = (ref)=>{
|
|
69
|
+
if (!ref) return;
|
|
63
70
|
if (ref.tagName.toUpperCase() !== "CANVAS") {
|
|
64
71
|
// throw new Error("The ref must be a canvas element");
|
|
65
72
|
setError(new SDKError("The ref must be a canvas element"));
|
|
@@ -67,7 +74,7 @@ data, options) => {
|
|
|
67
74
|
}
|
|
68
75
|
setTarget(ref);
|
|
69
76
|
};
|
|
70
|
-
const download = useCallback((filename, type = "image/png", encoderOptions)
|
|
77
|
+
const download = useCallback((filename, type = "image/png", encoderOptions)=>{
|
|
71
78
|
if (!target) {
|
|
72
79
|
throw new SDKError("The ref must be a canvas element");
|
|
73
80
|
}
|
|
@@ -77,47 +84,51 @@ data, options) => {
|
|
|
77
84
|
link.href = img.src;
|
|
78
85
|
link.download = filename;
|
|
79
86
|
link.click();
|
|
80
|
-
}, [
|
|
81
|
-
|
|
87
|
+
}, [
|
|
88
|
+
target
|
|
89
|
+
]);
|
|
90
|
+
const copy = useCallback(()=>{
|
|
82
91
|
if (!target) {
|
|
83
92
|
throw new SDKError("The ref must be a canvas element");
|
|
84
93
|
}
|
|
85
94
|
// copy image to clipboard
|
|
86
|
-
return new Promise((resolve, reject)
|
|
95
|
+
return new Promise((resolve, reject)=>{
|
|
87
96
|
if (!navigator.clipboard) {
|
|
88
97
|
reject(new SDKError("Clipboard API is not supported"));
|
|
89
98
|
return;
|
|
90
99
|
}
|
|
91
|
-
target.toBlob((blob)
|
|
100
|
+
target.toBlob((blob)=>{
|
|
92
101
|
if (!blob) {
|
|
93
102
|
reject(new SDKError("Failed to create blob"));
|
|
94
103
|
return;
|
|
95
104
|
}
|
|
96
|
-
return navigator.clipboard
|
|
97
|
-
|
|
98
|
-
|
|
105
|
+
return navigator.clipboard.write([
|
|
106
|
+
new ClipboardItem({
|
|
107
|
+
[blob.type]: blob
|
|
108
|
+
})
|
|
109
|
+
]).then(resolve, reject);
|
|
99
110
|
});
|
|
100
111
|
});
|
|
101
|
-
}, [
|
|
112
|
+
}, [
|
|
113
|
+
target
|
|
114
|
+
]);
|
|
102
115
|
return {
|
|
103
116
|
error,
|
|
104
117
|
ref,
|
|
105
118
|
/**
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
toDataURL,
|
|
119
|
+
* Converts the poster to a data URL
|
|
120
|
+
*/ toDataURL,
|
|
109
121
|
/**
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
toBlob,
|
|
122
|
+
* Converts the poster to a blob
|
|
123
|
+
*/ toBlob,
|
|
113
124
|
/**
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
download,
|
|
125
|
+
* Downloads the poster as an image
|
|
126
|
+
*/ download,
|
|
117
127
|
/**
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
copy,
|
|
128
|
+
* Browser if supports copy image to clipboard
|
|
129
|
+
*/ canCopy,
|
|
130
|
+
copy
|
|
122
131
|
};
|
|
123
132
|
};
|
|
133
|
+
|
|
134
|
+
//# sourceMappingURL=usePoster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/usePoster.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { mergeDeepRight } from \"ramda\";\nimport { PosterPainter } from \"./services/painter/painter\";\nimport { type DrawOptions } from \"./services/painter/basePaint\";\nimport { DefaultLayoutConfig } from \"./services/painter/layout.config\";\nimport { SDKError } from \"@orderly.network/types\";\n\n/**\n * Generates a poster image based on position information. You can set the size, background color, font color, font size, and content position of the poster.\n * @example\n * ```tsx\n * const { ref, toDataURL, toBlob, download, copy } = usePoster({\n * backgroundColor: \"#0b8c70\",\n * backgroundImg: \"/images/poster_bg.png\",\n * color: \"rgba(255, 255, 255, 0.98)\",\n * profitColor: \"rgb(0,181,159)\",\n * ...\n * });\n */\nexport const usePoster = (\n /**\n * The options to draw the poster\n */\n data: DrawOptions,\n options?: {\n /**\n * The ratio of the poster\n */\n ratio?: number;\n }\n) => {\n const [error, setError] = useState<Error | null>(null);\n const [canCopy, setCanCopy] = useState<boolean>(\n () => typeof navigator.clipboard !== \"undefined\"\n );\n\n const painterRef = useRef<PosterPainter | null>(null);\n\n const [target, setTarget] = useState<HTMLCanvasElement | null>(null);\n\n useEffect(() => {\n // Create the painter instance\n if (target && !painterRef.current) {\n painterRef.current = new PosterPainter(target, {\n ratio: 1,\n ...options,\n });\n painterRef.current.draw(\n mergeDeepRight<Partial<DrawOptions>, DrawOptions>(\n { layout: DefaultLayoutConfig, fontFamily: \"Manrope\" },\n data\n )\n );\n }\n }, [target]);\n\n useEffect(() => {\n if (painterRef.current) {\n painterRef.current.draw(\n mergeDeepRight<Partial<DrawOptions>, DrawOptions>(\n { layout: DefaultLayoutConfig, fontFamily: \"Manrope\" },\n data\n )\n );\n }\n }, [data]);\n\n const toDataURL = (type?: string, encoderOptions?: number) => {\n if (!target) {\n throw new SDKError(\"The ref must be a canvas element\");\n }\n return target.toDataURL(type, encoderOptions);\n };\n\n /**\n * Converts the poster to a blob\n */\n const toBlob = useCallback(\n (type?: string, encoderOptions?: number): Promise<Blob | null> => {\n return new Promise<Blob | null>((resolve) => {\n if (!target) {\n resolve(null);\n return;\n }\n target.toBlob(resolve, type, encoderOptions);\n });\n },\n [target]\n );\n\n const ref = (ref: HTMLCanvasElement | null) => {\n if (!ref) return;\n if (ref.tagName.toUpperCase() !== \"CANVAS\") {\n // throw new Error(\"The ref must be a canvas element\");\n setError(new SDKError(\"The ref must be a canvas element\"));\n return;\n }\n setTarget(ref);\n };\n\n const download = useCallback(\n (filename: string, type: string = \"image/png\", encoderOptions?: number) => {\n if (!target) {\n throw new SDKError(\"The ref must be a canvas element\");\n }\n const img = new Image();\n img.src = target.toDataURL(type, encoderOptions);\n const link = document.createElement(\"a\");\n link.href = img.src;\n link.download = filename;\n link.click();\n },\n [target]\n );\n\n const copy = useCallback(() => {\n if (!target) {\n throw new SDKError(\"The ref must be a canvas element\");\n }\n // copy image to clipboard\n return new Promise<void>((resolve, reject) => {\n if (!navigator.clipboard) {\n reject(new SDKError(\"Clipboard API is not supported\"));\n return;\n }\n target.toBlob((blob) => {\n if (!blob) {\n reject(new SDKError(\"Failed to create blob\"));\n return;\n }\n return navigator.clipboard\n .write([new ClipboardItem({ [blob.type]: blob })])\n .then(resolve, reject);\n });\n });\n }, [target]);\n\n return {\n error,\n ref,\n /**\n * Converts the poster to a data URL\n */\n toDataURL,\n /**\n * Converts the poster to a blob\n */\n toBlob,\n /**\n * Downloads the poster as an image\n */\n download,\n /**\n * Browser if supports copy image to clipboard\n */\n canCopy,\n copy,\n } as const;\n};\n"],"names":["useCallback","useEffect","useRef","useState","mergeDeepRight","PosterPainter","DefaultLayoutConfig","SDKError","usePoster","data","options","error","setError","canCopy","setCanCopy","navigator","clipboard","painterRef","target","setTarget","current","ratio","draw","layout","fontFamily","toDataURL","type","encoderOptions","toBlob","Promise","resolve","ref","tagName","toUpperCase","download","filename","img","Image","src","link","document","createElement","href","click","copy","reject","blob","write","ClipboardItem","then"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AACjE,SAASC,cAAc,QAAQ,QAAQ;AACvC,SAASC,aAAa,QAAQ,6BAA6B;AAE3D,SAASC,mBAAmB,QAAQ,mCAAmC;AACvE,SAASC,QAAQ,QAAQ,yBAAyB;AAElD;;;;;;;;;;;CAWC,GACD,OAAO,MAAMC,YAAY,CACvB;;GAEC,GACDC,MACAC;IAOA,MAAM,CAACC,OAAOC,SAAS,GAAGT,SAAuB;IACjD,MAAM,CAACU,SAASC,WAAW,GAAGX,SAC5B,IAAM,OAAOY,UAAUC,SAAS,KAAK;IAGvC,MAAMC,aAAaf,OAA6B;IAEhD,MAAM,CAACgB,QAAQC,UAAU,GAAGhB,SAAmC;IAE/DF,UAAU;QACR,8BAA8B;QAC9B,IAAIiB,UAAU,CAACD,WAAWG,OAAO,EAAE;YACjCH,WAAWG,OAAO,GAAG,IAAIf,cAAca,QAAQ;gBAC7CG,OAAO;gBACP,GAAGX,OAAO;YACZ;YACAO,WAAWG,OAAO,CAACE,IAAI,CACrBlB,eACE;gBAAEmB,QAAQjB;gBAAqBkB,YAAY;YAAU,GACrDf;QAGN;IACF,GAAG;QAACS;KAAO;IAEXjB,UAAU;QACR,IAAIgB,WAAWG,OAAO,EAAE;YACtBH,WAAWG,OAAO,CAACE,IAAI,CACrBlB,eACE;gBAAEmB,QAAQjB;gBAAqBkB,YAAY;YAAU,GACrDf;QAGN;IACF,GAAG;QAACA;KAAK;IAET,MAAMgB,YAAY,CAACC,MAAeC;QAChC,IAAI,CAACT,QAAQ;YACX,MAAM,IAAIX,SAAS;QACrB;QACA,OAAOW,OAAOO,SAAS,CAACC,MAAMC;IAChC;IAEA;;GAEC,GACD,MAAMC,SAAS5B,YACb,CAAC0B,MAAeC;QACd,OAAO,IAAIE,QAAqB,CAACC;YAC/B,IAAI,CAACZ,QAAQ;gBACXY,QAAQ;gBACR;YACF;YACAZ,OAAOU,MAAM,CAACE,SAASJ,MAAMC;QAC/B;IACF,GACA;QAACT;KAAO;IAGV,MAAMa,MAAM,CAACA;QACX,IAAI,CAACA,KAAK;QACV,IAAIA,IAAIC,OAAO,CAACC,WAAW,OAAO,UAAU;YAC1C,uDAAuD;YACvDrB,SAAS,IAAIL,SAAS;YACtB;QACF;QACAY,UAAUY;IACZ;IAEA,MAAMG,WAAWlC,YACf,CAACmC,UAAkBT,OAAe,WAAW,EAAEC;QAC7C,IAAI,CAACT,QAAQ;YACX,MAAM,IAAIX,SAAS;QACrB;QACA,MAAM6B,MAAM,IAAIC;QAChBD,IAAIE,GAAG,GAAGpB,OAAOO,SAAS,CAACC,MAAMC;QACjC,MAAMY,OAAOC,SAASC,aAAa,CAAC;QACpCF,KAAKG,IAAI,GAAGN,IAAIE,GAAG;QACnBC,KAAKL,QAAQ,GAAGC;QAChBI,KAAKI,KAAK;IACZ,GACA;QAACzB;KAAO;IAGV,MAAM0B,OAAO5C,YAAY;QACvB,IAAI,CAACkB,QAAQ;YACX,MAAM,IAAIX,SAAS;QACrB;QACA,0BAA0B;QAC1B,OAAO,IAAIsB,QAAc,CAACC,SAASe;YACjC,IAAI,CAAC9B,UAAUC,SAAS,EAAE;gBACxB6B,OAAO,IAAItC,SAAS;gBACpB;YACF;YACAW,OAAOU,MAAM,CAAC,CAACkB;gBACb,IAAI,CAACA,MAAM;oBACTD,OAAO,IAAItC,SAAS;oBACpB;gBACF;gBACA,OAAOQ,UAAUC,SAAS,CACvB+B,KAAK,CAAC;oBAAC,IAAIC,cAAc;wBAAE,CAACF,KAAKpB,IAAI,CAAC,EAAEoB;oBAAK;iBAAG,EAChDG,IAAI,CAACnB,SAASe;YACnB;QACF;IACF,GAAG;QAAC3B;KAAO;IAEX,OAAO;QACLP;QACAoB;QACA;;KAEC,GACDN;QACA;;KAEC,GACDG;QACA;;KAEC,GACDM;QACA;;KAEC,GACDrB;QACA+B;IACF;AACF,EAAE"}
|
package/esm/usePreloadData.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
2
|
import { useQuery } from ".";
|
|
3
|
-
export const usePreLoadData = ()
|
|
3
|
+
export const usePreLoadData = ()=>{
|
|
4
4
|
const { error: tokenError, data: tokenData } = useQuery("https://api-evm.orderly.org/v1/public/token", {
|
|
5
|
-
revalidateOnFocus: false
|
|
5
|
+
revalidateOnFocus: false
|
|
6
6
|
});
|
|
7
|
-
const isDone = useMemo(()
|
|
7
|
+
const isDone = useMemo(()=>{
|
|
8
8
|
return !!tokenData;
|
|
9
|
-
}, [
|
|
9
|
+
}, [
|
|
10
|
+
tokenData
|
|
11
|
+
]);
|
|
10
12
|
return {
|
|
11
13
|
error: tokenError,
|
|
12
|
-
done: isDone
|
|
14
|
+
done: isDone
|
|
13
15
|
};
|
|
14
16
|
};
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=usePreloadData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/usePreloadData.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useQuery } from \".\";\n\nexport const usePreLoadData = () => {\n const { error: tokenError, data: tokenData } = useQuery(\n \"https://api-evm.orderly.org/v1/public/token\",\n {\n revalidateOnFocus: false,\n }\n );\n\n const isDone = useMemo(() => {\n return !!tokenData;\n }, [tokenData]);\n\n return {\n error: tokenError,\n done: isDone,\n };\n};\n"],"names":["useMemo","useQuery","usePreLoadData","error","tokenError","data","tokenData","revalidateOnFocus","isDone","done"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,QAAQ,QAAQ;AAChC,SAASC,QAAQ,QAAQ,IAAI;AAE7B,OAAO,MAAMC,iBAAiB;IAC5B,MAAM,EAAEC,OAAOC,UAAU,EAAEC,MAAMC,SAAS,EAAE,GAAGL,SAC7C,+CACA;QACEM,mBAAmB;IACrB;IAGF,MAAMC,SAASR,QAAQ;QACrB,OAAO,CAAC,CAACM;IACX,GAAG;QAACA;KAAU;IAEd,OAAO;QACLH,OAAOC;QACPK,MAAMD;IACR;AACF,EAAE"}
|
|
@@ -3,23 +3,29 @@ import { signatureMiddleware } from "./middleware/signatureMiddleware";
|
|
|
3
3
|
import { get } from "@orderly.network/net";
|
|
4
4
|
import { useAccount } from "./useAccount";
|
|
5
5
|
import { AccountStatusEnum } from "@orderly.network/types";
|
|
6
|
-
export const usePrivateInfiniteQuery = (getKey, options)
|
|
6
|
+
export const usePrivateInfiniteQuery = (getKey, options)=>{
|
|
7
7
|
const { formatter, ...restOptions } = options || {};
|
|
8
8
|
const account = useAccount();
|
|
9
|
-
const middleware = Array.isArray(restOptions?.use)
|
|
10
|
-
|
|
11
|
-
: [];
|
|
12
|
-
const result = useSWRInfinite((pageIndex, previousPageData) => {
|
|
9
|
+
const middleware = Array.isArray(restOptions?.use) ? restOptions?.use ?? [] : [];
|
|
10
|
+
const result = useSWRInfinite((pageIndex, previousPageData)=>{
|
|
13
11
|
const queryKey = getKey(pageIndex, previousPageData);
|
|
14
12
|
if (account.state.status < AccountStatusEnum.EnableTrading || !queryKey) {
|
|
15
13
|
return null;
|
|
16
14
|
}
|
|
17
|
-
return [
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
return [
|
|
16
|
+
queryKey,
|
|
17
|
+
account.state.accountId
|
|
18
|
+
];
|
|
19
|
+
}, (url, init)=>{
|
|
20
|
+
return restOptions.fetcher?.(url, init) || get(url, init, formatter);
|
|
20
21
|
}, {
|
|
21
22
|
...restOptions,
|
|
22
|
-
use: [
|
|
23
|
+
use: [
|
|
24
|
+
signatureMiddleware,
|
|
25
|
+
...middleware
|
|
26
|
+
]
|
|
23
27
|
});
|
|
24
28
|
return result;
|
|
25
29
|
};
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=usePrivateInfiniteQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/usePrivateInfiniteQuery.ts"],"sourcesContent":["import useSWRInfinite, {\n type SWRInfiniteKeyLoader,\n type SWRInfiniteConfiguration,\n} from \"swr/infinite\";\nimport { signatureMiddleware } from \"./middleware/signatureMiddleware\";\nimport { get } from \"@orderly.network/net\";\nimport { useAccount } from \"./useAccount\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\n\nexport const usePrivateInfiniteQuery = (\n getKey: SWRInfiniteKeyLoader,\n options?: SWRInfiniteConfiguration & {\n formatter?: (data: any) => any;\n }\n) => {\n const { formatter, ...restOptions } = options || {};\n const account = useAccount();\n\n const middleware = Array.isArray(restOptions?.use)\n ? restOptions?.use ?? []\n : [];\n\n const result = useSWRInfinite(\n (pageIndex: number, previousPageData) => {\n const queryKey = getKey(pageIndex, previousPageData);\n if (account.state.status < AccountStatusEnum.EnableTrading || !queryKey) {\n return null;\n }\n return [queryKey, account.state.accountId];\n },\n (url: string, init: RequestInit) => {\n return restOptions.fetcher?.(url, init) || get(url, init, formatter);\n },\n {\n ...restOptions,\n use: [signatureMiddleware, ...middleware],\n }\n );\n\n return result;\n};\n"],"names":["useSWRInfinite","signatureMiddleware","get","useAccount","AccountStatusEnum","usePrivateInfiniteQuery","getKey","options","formatter","restOptions","account","middleware","Array","isArray","use","result","pageIndex","previousPageData","queryKey","state","status","EnableTrading","accountId","url","init","fetcher"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,oBAGA,eAAe;AACtB,SAASC,mBAAmB,QAAQ,mCAAmC;AACvE,SAASC,GAAG,QAAQ,uBAAuB;AAC3C,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,iBAAiB,QAAQ,yBAAyB;AAE3D,OAAO,MAAMC,0BAA0B,CACrCC,QACAC;IAIA,MAAM,EAAEC,SAAS,EAAE,GAAGC,aAAa,GAAGF,WAAW,CAAC;IAClD,MAAMG,UAAUP;IAEhB,MAAMQ,aAAaC,MAAMC,OAAO,CAACJ,aAAaK,OAC1CL,aAAaK,OAAO,EAAE,GACtB,EAAE;IAEN,MAAMC,SAASf,eACb,CAACgB,WAAmBC;QAClB,MAAMC,WAAWZ,OAAOU,WAAWC;QACnC,IAAIP,QAAQS,KAAK,CAACC,MAAM,GAAGhB,kBAAkBiB,aAAa,IAAI,CAACH,UAAU;YACvE,OAAO;QACT;QACA,OAAO;YAACA;YAAUR,QAAQS,KAAK,CAACG,SAAS;SAAC;IAC5C,GACA,CAACC,KAAaC;QACZ,OAAOf,YAAYgB,OAAO,GAAGF,KAAKC,SAAStB,IAAIqB,KAAKC,MAAMhB;IAC5D,GACA;QACE,GAAGC,WAAW;QACdK,KAAK;YAACb;eAAwBU;SAAW;IAC3C;IAGF,OAAOI;AACT,EAAE"}
|
package/esm/usePrivateQuery.js
CHANGED
|
@@ -8,19 +8,26 @@ import { AccountStatusEnum } from "@orderly.network/types";
|
|
|
8
8
|
* @description for private api
|
|
9
9
|
* @param query
|
|
10
10
|
* @param options
|
|
11
|
-
*/
|
|
12
|
-
export const usePrivateQuery = (query, options) => {
|
|
11
|
+
*/ export const usePrivateQuery = (query, options)=>{
|
|
13
12
|
const { formatter, ...swrOptions } = options || {};
|
|
14
13
|
const account = useAccount();
|
|
15
14
|
const middleware = Array.isArray(options?.use) ? options?.use ?? [] : [];
|
|
16
15
|
// @ts-ignore
|
|
17
|
-
return useSWR(()
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
return useSWR(()=>account.state.status >= AccountStatusEnum.EnableTrading ? [
|
|
17
|
+
query,
|
|
18
|
+
account.state.accountId
|
|
19
|
+
] : null, (url, init)=>{
|
|
20
|
+
return fetcher(url, init, {
|
|
21
|
+
formatter
|
|
22
|
+
});
|
|
21
23
|
}, {
|
|
22
24
|
...swrOptions,
|
|
23
|
-
use: [
|
|
24
|
-
|
|
25
|
+
use: [
|
|
26
|
+
signatureMiddleware,
|
|
27
|
+
...middleware
|
|
28
|
+
],
|
|
29
|
+
onError: (err)=>{}
|
|
25
30
|
});
|
|
26
31
|
};
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=usePrivateQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/usePrivateQuery.ts"],"sourcesContent":["import useSWR, { SWRResponse } from \"swr\";\nimport { signatureMiddleware } from \"./middleware/signatureMiddleware\";\nimport { fetcher, useQueryOptions } from \"./utils/fetcher\";\nimport { useAccount } from \"./useAccount\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\n\n/**\n * usePrivateQuery\n * @description for private api\n * @param query\n * @param options\n */\nexport const usePrivateQuery = <T>(\n query: string,\n options?: useQueryOptions<T>\n): SWRResponse<T> => {\n const { formatter, ...swrOptions } = options || {};\n const account = useAccount();\n const middleware = Array.isArray(options?.use) ? options?.use ?? [] : [];\n\n // @ts-ignore\n return useSWR<T>(\n () =>\n account.state.status >= AccountStatusEnum.EnableTrading\n ? [query, account.state.accountId]\n : null,\n (url: string, init: RequestInit) => {\n return fetcher(url, init, { formatter });\n },\n {\n ...swrOptions,\n use: [signatureMiddleware, ...middleware],\n onError: (err) => {},\n }\n );\n};\n"],"names":["useSWR","signatureMiddleware","fetcher","useAccount","AccountStatusEnum","usePrivateQuery","query","options","formatter","swrOptions","account","middleware","Array","isArray","use","state","status","EnableTrading","accountId","url","init","onError","err"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,YAA6B,MAAM;AAC1C,SAASC,mBAAmB,QAAQ,mCAAmC;AACvE,SAASC,OAAO,QAAyB,kBAAkB;AAC3D,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,iBAAiB,QAAQ,yBAAyB;AAE3D;;;;;CAKC,GACD,OAAO,MAAMC,kBAAkB,CAC7BC,OACAC;IAEA,MAAM,EAAEC,SAAS,EAAE,GAAGC,YAAY,GAAGF,WAAW,CAAC;IACjD,MAAMG,UAAUP;IAChB,MAAMQ,aAAaC,MAAMC,OAAO,CAACN,SAASO,OAAOP,SAASO,OAAO,EAAE,GAAG,EAAE;IAExE,aAAa;IACb,OAAOd,OACL,IACEU,QAAQK,KAAK,CAACC,MAAM,IAAIZ,kBAAkBa,aAAa,GACnD;YAACX;YAAOI,QAAQK,KAAK,CAACG,SAAS;SAAC,GAChC,MACN,CAACC,KAAaC;QACZ,OAAOlB,QAAQiB,KAAKC,MAAM;YAAEZ;QAAU;IACxC,GACA;QACE,GAAGC,UAAU;QACbK,KAAK;YAACb;eAAwBU;SAAW;QACzCU,SAAS,CAACC,OAAS;IACrB;AAEJ,EAAE"}
|
package/esm/useQuery.js
CHANGED
|
@@ -6,15 +6,16 @@ import { useConfig } from "./useConfig";
|
|
|
6
6
|
* @description for public api
|
|
7
7
|
* @param query
|
|
8
8
|
* @param options
|
|
9
|
-
*/
|
|
10
|
-
export const useQuery = (query, options) => {
|
|
9
|
+
*/ export const useQuery = (query, options)=>{
|
|
11
10
|
const apiBaseUrl = useConfig("apiBaseUrl");
|
|
12
11
|
const { formatter, ...swrOptions } = options || {};
|
|
13
12
|
if (typeof apiBaseUrl === "undefined") {
|
|
14
13
|
throw new Error("please add OrderlyConfigProvider to your app");
|
|
15
14
|
}
|
|
16
15
|
// @ts-ignore
|
|
17
|
-
return useSWR(query, (url, init)
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
return useSWR(query, (url, init)=>fetcher(url.startsWith("http") ? url : `${apiBaseUrl}${url}`, init, {
|
|
17
|
+
formatter
|
|
18
|
+
}), swrOptions);
|
|
20
19
|
};
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=useQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/useQuery.ts"],"sourcesContent":["import useSWR, { SWRResponse } from \"swr\";\nimport { fetcher, useQueryOptions } from \"./utils/fetcher\";\nimport { useConfig } from \"./useConfig\";\n\n/**\n * useQuery\n * @description for public api\n * @param query\n * @param options\n */\nexport const useQuery = <T>(\n query: Parameters<typeof useSWR>[\"0\"],\n options?: useQueryOptions<T>\n): SWRResponse<T> => {\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n const { formatter, ...swrOptions } = options || {};\n\n if (typeof apiBaseUrl === \"undefined\") {\n throw new Error(\"please add OrderlyConfigProvider to your app\");\n }\n\n // @ts-ignore\n return useSWR<T>(\n query,\n (url, init) =>\n fetcher(url.startsWith(\"http\") ? url : `${apiBaseUrl}${url}`, init, {\n formatter,\n }),\n swrOptions\n );\n};\n"],"names":["useSWR","fetcher","useConfig","useQuery","query","options","apiBaseUrl","formatter","swrOptions","Error","url","init","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,YAA6B,MAAM;AAC1C,SAASC,OAAO,QAAyB,kBAAkB;AAC3D,SAASC,SAAS,QAAQ,cAAc;AAExC;;;;;CAKC,GACD,OAAO,MAAMC,WAAW,CACtBC,OACAC;IAEA,MAAMC,aAAaJ,UAAU;IAC7B,MAAM,EAAEK,SAAS,EAAE,GAAGC,YAAY,GAAGH,WAAW,CAAC;IAEjD,IAAI,OAAOC,eAAe,aAAa;QACrC,MAAM,IAAIG,MAAM;IAClB;IAEA,aAAa;IACb,OAAOT,OACLI,OACA,CAACM,KAAKC,OACJV,QAAQS,IAAIE,UAAU,CAAC,UAAUF,MAAM,CAAC,EAAEJ,WAAW,EAAEI,IAAI,CAAC,EAAEC,MAAM;YAClEJ;QACF,IACFC;AAEJ,EAAE"}
|
package/esm/useSessionStorage.js
CHANGED
|
@@ -3,7 +3,7 @@ import { parseJSON } from "./utils/json";
|
|
|
3
3
|
export function useSessionStorage(key, initialValue) {
|
|
4
4
|
// Get from session storage then
|
|
5
5
|
// parse stored json or return initialValue
|
|
6
|
-
const readValue = useCallback(()
|
|
6
|
+
const readValue = useCallback(()=>{
|
|
7
7
|
// Prevent build error "window is undefined" but keep keep working
|
|
8
8
|
if (typeof window === "undefined") {
|
|
9
9
|
return initialValue;
|
|
@@ -11,17 +11,19 @@ export function useSessionStorage(key, initialValue) {
|
|
|
11
11
|
try {
|
|
12
12
|
const item = window.sessionStorage.getItem(key);
|
|
13
13
|
return item ? parseJSON(item) : initialValue;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
console.warn(`Error reading sessionStorage key “${key}”:`, error);
|
|
14
|
+
} catch (error) {
|
|
15
|
+
;
|
|
17
16
|
return initialValue;
|
|
18
17
|
}
|
|
19
|
-
}, [
|
|
18
|
+
}, [
|
|
19
|
+
initialValue,
|
|
20
|
+
key
|
|
21
|
+
]);
|
|
20
22
|
const [storedValue, setStoredValue] = useState(readValue);
|
|
21
|
-
const setValue = (value)
|
|
23
|
+
const setValue = (value)=>{
|
|
22
24
|
// Prevent build error "window is undefined" but keeps working
|
|
23
25
|
if (typeof window == "undefined") {
|
|
24
|
-
|
|
26
|
+
;
|
|
25
27
|
}
|
|
26
28
|
try {
|
|
27
29
|
// Allow value to be a function so we have the same API as useState
|
|
@@ -30,31 +32,38 @@ export function useSessionStorage(key, initialValue) {
|
|
|
30
32
|
window.sessionStorage.setItem(key, JSON.stringify(newValue));
|
|
31
33
|
// Save state
|
|
32
34
|
setStoredValue(newValue);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
console.warn(`Error setting sessionStorage key “${key}”:`, error);
|
|
35
|
+
// We dispatch a custom event so every useSessionStorage hook are notified
|
|
36
|
+
// window.dispatchEvent(new Event("session-storage"));
|
|
37
|
+
} catch (error) {
|
|
38
|
+
;
|
|
38
39
|
}
|
|
39
40
|
};
|
|
40
|
-
useEffect(()
|
|
41
|
+
useEffect(()=>{
|
|
41
42
|
setStoredValue(readValue());
|
|
42
|
-
|
|
43
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
43
44
|
}, []);
|
|
44
|
-
useEffect(()
|
|
45
|
+
useEffect(()=>{
|
|
45
46
|
if (typeof window == "undefined") {
|
|
46
47
|
return;
|
|
47
48
|
}
|
|
48
49
|
window.addEventListener("storage", handleStorageChange);
|
|
49
|
-
return ()
|
|
50
|
+
return ()=>{
|
|
50
51
|
window.removeEventListener("storage", handleStorageChange);
|
|
51
52
|
};
|
|
52
53
|
});
|
|
53
|
-
const handleStorageChange = useCallback((event)
|
|
54
|
+
const handleStorageChange = useCallback((event)=>{
|
|
54
55
|
if (event?.key && event.key !== key) {
|
|
55
56
|
return;
|
|
56
57
|
}
|
|
57
58
|
setStoredValue(readValue());
|
|
58
|
-
}, [
|
|
59
|
-
|
|
59
|
+
}, [
|
|
60
|
+
key,
|
|
61
|
+
readValue
|
|
62
|
+
]);
|
|
63
|
+
return [
|
|
64
|
+
storedValue,
|
|
65
|
+
setValue
|
|
66
|
+
];
|
|
60
67
|
}
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=useSessionStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/useSessionStorage.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useSessionStorage<T>(\n key: string,\n initialValue: T\n): [T, (data: any) => void] {\n // Get from session storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keep keep working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.sessionStorage.getItem(key);\n return item ? (parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading sessionStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n const setValue: React.Dispatch<T> = (value: any) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window == \"undefined\") {\n console.warn(\n `Tried setting sessionStorage key “${key}” even though environment is not a client`\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to session storage\n window.sessionStorage.setItem(key, JSON.stringify(newValue));\n\n // Save state\n setStoredValue(newValue);\n\n // We dispatch a custom event so every useSessionStorage hook are notified\n // window.dispatchEvent(new Event(\"session-storage\"));\n } catch (error) {\n console.warn(`Error setting sessionStorage key “${key}”:`, error);\n }\n };\n\n useEffect(() => {\n setStoredValue(readValue());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (typeof window == \"undefined\") {\n return;\n }\n window.addEventListener(\"storage\", handleStorageChange);\n\n return () => {\n window.removeEventListener(\"storage\", handleStorageChange);\n };\n });\n\n const handleStorageChange = useCallback(\n (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n\n return [storedValue, setValue];\n}\n"],"names":["useCallback","useEffect","useState","parseJSON","useSessionStorage","key","initialValue","readValue","window","item","sessionStorage","getItem","error","storedValue","setStoredValue","setValue","value","newValue","Function","setItem","JSON","stringify","addEventListener","handleStorageChange","removeEventListener","event"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AACzD,SAASC,SAAS,QAAQ,eAAe;AAEzC,OAAO,SAASC,kBACdC,GAAW,EACXC,YAAe;IAEf,gCAAgC;IAChC,2CAA2C;IAC3C,MAAMC,YAAYP,YAAY;QAC5B,kEAAkE;QAClE,IAAI,OAAOQ,WAAW,aAAa;YACjC,OAAOF;QACT;QAEA,IAAI;YACF,MAAMG,OAAOD,OAAOE,cAAc,CAACC,OAAO,CAACN;YAC3C,OAAOI,OAAQN,UAAUM,QAAcH;QACzC,EAAE,OAAOM,OAAO;;YAEd,OAAON;QACT;IACF,GAAG;QAACA;QAAcD;KAAI;IACtB,MAAM,CAACQ,aAAaC,eAAe,GAAGZ,SAAYK;IAElD,MAAMQ,WAA8B,CAACC;QACnC,8DAA8D;QAC9D,IAAI,OAAOR,UAAU,aAAa;;QAIlC;QAEA,IAAI;YACF,mEAAmE;YACnE,MAAMS,WAAWD,iBAAiBE,WAAWF,MAAMH,eAAeG;YAElE,0BAA0B;YAC1BR,OAAOE,cAAc,CAACS,OAAO,CAACd,KAAKe,KAAKC,SAAS,CAACJ;YAElD,aAAa;YACbH,eAAeG;QAEf,0EAA0E;QAC1E,sDAAsD;QACxD,EAAE,OAAOL,OAAO;;QAEhB;IACF;IAEAX,UAAU;QACRa,eAAeP;IACf,uDAAuD;IACzD,GAAG,EAAE;IAELN,UAAU;QACR,IAAI,OAAOO,UAAU,aAAa;YAChC;QACF;QACAA,OAAOc,gBAAgB,CAAC,WAAWC;QAEnC,OAAO;YACLf,OAAOgB,mBAAmB,CAAC,WAAWD;QACxC;IACF;IAEA,MAAMA,sBAAsBvB,YAC1B,CAACyB;QACC,IAAI,AAACA,OAAwBpB,OAAO,AAACoB,MAAuBpB,GAAG,KAAKA,KAAK;YACvE;QACF;QACAS,eAAeP;IACjB,GACA;QAACF;QAAKE;KAAU;IAGlB,OAAO;QAACM;QAAaE;KAAS;AAChC"}
|
package/esm/useWS.js
CHANGED
|
@@ -6,10 +6,10 @@ import { AccountStatusEnum } from "@orderly.network/types";
|
|
|
6
6
|
import { OrderlyContext } from "./orderlyContext";
|
|
7
7
|
import { getGlobalObject } from "@orderly.network/utils";
|
|
8
8
|
const WS_NAME = "nativeWebsocketClient";
|
|
9
|
-
export const useWS = ()
|
|
9
|
+
export const useWS = ()=>{
|
|
10
10
|
const { configStore } = useContext(OrderlyContext);
|
|
11
11
|
// const prevAccountState = useRef<AccountState | null>(null);
|
|
12
|
-
const ws = useConstant(()
|
|
12
|
+
const ws = useConstant(()=>{
|
|
13
13
|
let websocketClient = SimpleDI.get(WS_NAME);
|
|
14
14
|
const account = SimpleDI.get(Account.instanceName);
|
|
15
15
|
if (!websocketClient) {
|
|
@@ -17,28 +17,28 @@ export const useWS = () => {
|
|
|
17
17
|
networkId: configStore.get("networkId"),
|
|
18
18
|
publicUrl: configStore.get("publicWsUrl"),
|
|
19
19
|
privateUrl: configStore.get("privateWsUrl"),
|
|
20
|
-
onSigntureRequest: async (accountId)
|
|
20
|
+
onSigntureRequest: async (accountId)=>{
|
|
21
21
|
const signer = account.signer;
|
|
22
22
|
const timestamp = new Date().getTime();
|
|
23
23
|
const result = await signer.signText(timestamp.toString());
|
|
24
|
-
return {
|
|
25
|
-
|
|
24
|
+
return {
|
|
25
|
+
...result,
|
|
26
|
+
timestamp
|
|
27
|
+
};
|
|
28
|
+
}
|
|
26
29
|
});
|
|
27
30
|
// if user login, open the private websocket
|
|
28
|
-
if (account.stateValue.status === AccountStatusEnum.EnableTrading &&
|
|
29
|
-
account.stateValue.accountId) {
|
|
31
|
+
if (account.stateValue.status === AccountStatusEnum.EnableTrading && account.stateValue.accountId) {
|
|
30
32
|
websocketClient.openPrivate(account.stateValue.accountId);
|
|
31
33
|
}
|
|
32
34
|
// open the pirvate websocket when user login
|
|
33
|
-
account.on("change:status", (nextState)
|
|
34
|
-
if (nextState.status === AccountStatusEnum.EnableTrading &&
|
|
35
|
-
nextState.accountId) {
|
|
35
|
+
account.on("change:status", (nextState)=>{
|
|
36
|
+
if (nextState.status === AccountStatusEnum.EnableTrading && nextState.accountId) {
|
|
36
37
|
websocketClient.openPrivate(nextState.accountId);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
38
|
+
} else {
|
|
39
39
|
websocketClient.closePrivate(1000, "switch account");
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
// prevAccountState.current = nextState;
|
|
42
42
|
});
|
|
43
43
|
if (typeof window !== "undefined") {
|
|
44
44
|
getGlobalObject()["__Orderly_WS"] = websocketClient;
|
|
@@ -50,3 +50,5 @@ export const useWS = () => {
|
|
|
50
50
|
// auto open private when user login;
|
|
51
51
|
return ws;
|
|
52
52
|
};
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=useWS.js.map
|
package/esm/useWS.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/useWS.ts"],"sourcesContent":["import { useContext, useRef } from \"react\";\nimport { Account, AccountState, SimpleDI } from \"@orderly.network/core\";\nimport { WS } from \"@orderly.network/net\";\nimport useConstant from \"use-constant\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { OrderlyContext } from \"./orderlyContext\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\n\nconst WS_NAME = \"nativeWebsocketClient\";\n\nexport const useWS = () => {\n const { configStore } = useContext(OrderlyContext);\n // const prevAccountState = useRef<AccountState | null>(null);\n\n const ws = useConstant(() => {\n let websocketClient = SimpleDI.get<WS>(WS_NAME);\n const account = SimpleDI.get<Account>(Account.instanceName);\n\n if (!websocketClient) {\n websocketClient = new WS({\n networkId: configStore.get(\"networkId\"),\n publicUrl: configStore.get(\"publicWsUrl\"),\n privateUrl: configStore.get(\"privateWsUrl\"),\n onSigntureRequest: async (accountId: string) => {\n const signer = account.signer;\n const timestamp = new Date().getTime();\n const result = await signer.signText(timestamp.toString());\n\n return { ...result, timestamp };\n },\n });\n\n // if user login, open the private websocket\n if (\n account.stateValue.status === AccountStatusEnum.EnableTrading &&\n account.stateValue.accountId\n ) {\n websocketClient.openPrivate(account.stateValue.accountId);\n }\n\n // open the pirvate websocket when user login\n account.on(\"change:status\", (nextState: AccountState) => {\n if (\n nextState.status === AccountStatusEnum.EnableTrading &&\n nextState.accountId\n ) {\n websocketClient.openPrivate(nextState.accountId);\n } else {\n websocketClient.closePrivate(1000, \"switch account\");\n }\n\n // prevAccountState.current = nextState;\n });\n\n if (typeof window !== \"undefined\") {\n (getGlobalObject() as any)[\"__Orderly_WS\"] = websocketClient;\n }\n\n SimpleDI.registerByName(WS_NAME, websocketClient);\n }\n\n return websocketClient;\n });\n\n // auto open private when user login;\n\n return ws;\n};\n"],"names":["useContext","Account","SimpleDI","WS","useConstant","AccountStatusEnum","OrderlyContext","getGlobalObject","WS_NAME","useWS","configStore","ws","websocketClient","get","account","instanceName","networkId","publicUrl","privateUrl","onSigntureRequest","accountId","signer","timestamp","Date","getTime","result","signText","toString","stateValue","status","EnableTrading","openPrivate","on","nextState","closePrivate","window","registerByName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,UAAU,QAAgB,QAAQ;AAC3C,SAASC,OAAO,EAAgBC,QAAQ,QAAQ,wBAAwB;AACxE,SAASC,EAAE,QAAQ,uBAAuB;AAC1C,OAAOC,iBAAiB,eAAe;AACvC,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,eAAe,QAAQ,yBAAyB;AAEzD,MAAMC,UAAU;AAEhB,OAAO,MAAMC,QAAQ;IACnB,MAAM,EAAEC,WAAW,EAAE,GAAGV,WAAWM;IACnC,8DAA8D;IAE9D,MAAMK,KAAKP,YAAY;QACrB,IAAIQ,kBAAkBV,SAASW,GAAG,CAAKL;QACvC,MAAMM,UAAUZ,SAASW,GAAG,CAAUZ,QAAQc,YAAY;QAE1D,IAAI,CAACH,iBAAiB;YACpBA,kBAAkB,IAAIT,GAAG;gBACvBa,WAAWN,YAAYG,GAAG,CAAC;gBAC3BI,WAAWP,YAAYG,GAAG,CAAC;gBAC3BK,YAAYR,YAAYG,GAAG,CAAC;gBAC5BM,mBAAmB,OAAOC;oBACxB,MAAMC,SAASP,QAAQO,MAAM;oBAC7B,MAAMC,YAAY,IAAIC,OAAOC,OAAO;oBACpC,MAAMC,SAAS,MAAMJ,OAAOK,QAAQ,CAACJ,UAAUK,QAAQ;oBAEvD,OAAO;wBAAE,GAAGF,MAAM;wBAAEH;oBAAU;gBAChC;YACF;YAEA,4CAA4C;YAC5C,IACER,QAAQc,UAAU,CAACC,MAAM,KAAKxB,kBAAkByB,aAAa,IAC7DhB,QAAQc,UAAU,CAACR,SAAS,EAC5B;gBACAR,gBAAgBmB,WAAW,CAACjB,QAAQc,UAAU,CAACR,SAAS;YAC1D;YAEA,6CAA6C;YAC7CN,QAAQkB,EAAE,CAAC,iBAAiB,CAACC;gBAC3B,IACEA,UAAUJ,MAAM,KAAKxB,kBAAkByB,aAAa,IACpDG,UAAUb,SAAS,EACnB;oBACAR,gBAAgBmB,WAAW,CAACE,UAAUb,SAAS;gBACjD,OAAO;oBACLR,gBAAgBsB,YAAY,CAAC,MAAM;gBACrC;YAEA,wCAAwC;YAC1C;YAEA,IAAI,OAAOC,WAAW,aAAa;gBAChC5B,iBAAyB,CAAC,eAAe,GAAGK;YAC/C;YAEAV,SAASkC,cAAc,CAAC5B,SAASI;QACnC;QAEA,OAAOA;IACT;IAEA,qCAAqC;IAErC,OAAOD;AACT,EAAE"}
|
package/esm/useWsStatus.js
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { useWS } from "./useWS";
|
|
3
3
|
export var WsNetworkStatus;
|
|
4
|
-
(function
|
|
4
|
+
(function(WsNetworkStatus) {
|
|
5
5
|
WsNetworkStatus["Connected"] = "connected";
|
|
6
6
|
WsNetworkStatus["Unstable"] = "unstable";
|
|
7
7
|
WsNetworkStatus["Disconnected"] = "disconnected";
|
|
8
8
|
})(WsNetworkStatus || (WsNetworkStatus = {}));
|
|
9
9
|
export function useWsStatus() {
|
|
10
10
|
const ws = useWS();
|
|
11
|
-
const [wsStatus, setWsStatus] = useState(ws.client.public.readyState
|
|
12
|
-
? WsNetworkStatus.Connected
|
|
13
|
-
: WsNetworkStatus.Disconnected);
|
|
11
|
+
const [wsStatus, setWsStatus] = useState(ws.client.public.readyState ? "connected" : "disconnected");
|
|
14
12
|
const connectCount = useRef(0);
|
|
15
|
-
useEffect(()
|
|
16
|
-
ws.on("status:change", (status)
|
|
17
|
-
|
|
13
|
+
useEffect(()=>{
|
|
14
|
+
ws.on("status:change", (status)=>{
|
|
15
|
+
;
|
|
18
16
|
const { type, isPrivate } = status;
|
|
19
17
|
if (!isPrivate) {
|
|
20
|
-
switch
|
|
18
|
+
switch(type){
|
|
21
19
|
case "open":
|
|
22
20
|
connectCount.current = 0;
|
|
23
|
-
setWsStatus(
|
|
21
|
+
setWsStatus("connected");
|
|
24
22
|
break;
|
|
25
23
|
case "close":
|
|
26
24
|
connectCount.current = 0;
|
|
27
|
-
setWsStatus(
|
|
25
|
+
setWsStatus("disconnected");
|
|
28
26
|
break;
|
|
29
27
|
case "reconnecting":
|
|
30
28
|
connectCount.current++;
|
|
31
29
|
if (connectCount.current >= 3) {
|
|
32
|
-
setWsStatus(
|
|
30
|
+
setWsStatus("unstable");
|
|
33
31
|
}
|
|
34
32
|
break;
|
|
35
33
|
}
|
|
36
34
|
}
|
|
37
35
|
});
|
|
38
|
-
return ()
|
|
36
|
+
return ()=>ws.off("websocket:status", ()=>{});
|
|
39
37
|
}, []);
|
|
40
38
|
return wsStatus;
|
|
41
39
|
}
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=useWsStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/useWsStatus.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { useWS } from \"./useWS\";\n\nexport enum WsNetworkStatus {\n Connected = \"connected\",\n Unstable = \"unstable\",\n Disconnected = \"disconnected\",\n}\n\nexport function useWsStatus() {\n const ws = useWS();\n const [wsStatus, setWsStatus] = useState<WsNetworkStatus>(\n ws.client.public.readyState\n ? WsNetworkStatus.Connected\n : WsNetworkStatus.Disconnected\n );\n\n const connectCount = useRef(0);\n\n useEffect(() => {\n ws.on(\"status:change\", (status: any) => {\n console.log(\"status:change\", status);\n\n const { type, isPrivate } = status;\n if (!isPrivate) {\n switch (type) {\n case \"open\":\n connectCount.current = 0;\n setWsStatus(WsNetworkStatus.Connected);\n break;\n case \"close\":\n connectCount.current = 0;\n setWsStatus(WsNetworkStatus.Disconnected);\n break;\n case \"reconnecting\":\n connectCount.current++;\n if (connectCount.current >= 3) {\n setWsStatus(WsNetworkStatus.Unstable);\n }\n break;\n }\n }\n });\n return () => ws.off(\"websocket:status\", () => {});\n }, []);\n\n return wsStatus;\n}\n"],"names":["useEffect","useRef","useState","useWS","WsNetworkStatus","useWsStatus","ws","wsStatus","setWsStatus","client","public","readyState","connectCount","on","status","type","isPrivate","current","off"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AACpD,SAASC,KAAK,QAAQ,UAAU;;UAEpBC;;;;GAAAA,oBAAAA;AAMZ,OAAO,SAASC;IACd,MAAMC,KAAKH;IACX,MAAM,CAACI,UAAUC,YAAY,GAAGN,SAC9BI,GAAGG,MAAM,CAACC,MAAM,CAACC,UAAU;IAK7B,MAAMC,eAAeX,OAAO;IAE5BD,UAAU;QACRM,GAAGO,EAAE,CAAC,iBAAiB,CAACC;;YAGtB,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,GAAGF;YAC5B,IAAI,CAACE,WAAW;gBACd,OAAQD;oBACN,KAAK;wBACHH,aAAaK,OAAO,GAAG;wBACvBT;wBACA;oBACF,KAAK;wBACHI,aAAaK,OAAO,GAAG;wBACvBT;wBACA;oBACF,KAAK;wBACHI,aAAaK,OAAO;wBACpB,IAAIL,aAAaK,OAAO,IAAI,GAAG;4BAC7BT;wBACF;wBACA;gBACJ;YACF;QACF;QACA,OAAO,IAAMF,GAAGY,GAAG,CAAC,oBAAoB,KAAO;IACjD,GAAG,EAAE;IAEL,OAAOX;AACT"}
|