@orderly.network/hooks 1.4.0-alpha.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/configProvider.d.ts.map +1 -1
- package/esm/configProvider.js +3 -2
- package/esm/configProvider.js.map +1 -1
- package/esm/dev/proxyConfigStore.d.ts +15 -0
- package/esm/dev/proxyConfigStore.d.ts.map +1 -0
- package/esm/dev/proxyConfigStore.js +41 -0
- package/esm/dev/proxyConfigStore.js.map +1 -0
- package/esm/orderly/orderlyHooks.d.ts +1 -1
- package/esm/orderly/orderlyHooks.js +1 -1
- package/esm/orderly/orderlyHooks.js.map +1 -1
- package/esm/orderly/useOrderStream/useOrderStream.d.ts +2 -1
- package/esm/orderly/useOrderStream/useOrderStream.d.ts.map +1 -1
- package/esm/orderly/useOrderStream/useOrderStream.js +21 -10
- package/esm/orderly/useOrderStream/useOrderStream.js.map +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts +3 -5
- package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/index.js +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/index.js.map +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +3 -5
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js +9 -10
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/utils.js +24 -11
- package/esm/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -1
- package/esm/services/orderCreator/tpslOrderCreator.js +1 -1
- package/esm/services/orderCreator/tpslOrderCreator.js.map +1 -1
- package/esm/version.d.ts +1 -1
- package/esm/version.d.ts.map +1 -1
- package/esm/version.js +2 -2
- package/esm/version.js.map +1 -1
- package/lib/configProvider.d.ts.map +1 -1
- package/lib/configProvider.js +3 -2
- package/lib/configProvider.js.map +1 -1
- package/lib/dev/proxyConfigStore.d.ts +15 -0
- package/lib/dev/proxyConfigStore.d.ts.map +1 -0
- package/lib/dev/proxyConfigStore.js +51 -0
- package/lib/dev/proxyConfigStore.js.map +1 -0
- package/lib/orderly/orderlyHooks.d.ts +1 -1
- package/lib/orderly/orderlyHooks.js +3 -3
- package/lib/orderly/orderlyHooks.js.map +1 -1
- package/lib/orderly/useOrderStream/useOrderStream.d.ts +2 -1
- package/lib/orderly/useOrderStream/useOrderStream.d.ts.map +1 -1
- package/lib/orderly/useOrderStream/useOrderStream.js +21 -10
- package/lib/orderly/useOrderStream/useOrderStream.js.map +1 -1
- package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts +3 -5
- package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -1
- package/lib/orderly/useTakeProfitAndStopLoss/index.js +3 -3
- package/lib/orderly/useTakeProfitAndStopLoss/index.js.map +1 -1
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +3 -5
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -1
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js +9 -10
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -1
- package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -1
- package/lib/orderly/useTakeProfitAndStopLoss/utils.js +12 -10
- package/lib/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -1
- package/lib/services/orderCreator/tpslOrderCreator.js +1 -1
- package/lib/services/orderCreator/tpslOrderCreator.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.d.ts.map +1 -1
- package/lib/version.js +2 -2
- package/lib/version.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configProvider.d.ts","sourceRoot":"","sources":["../src/configProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAM,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,EACL,WAAW,EAGX,eAAe,EACf,oBAAoB,EAMpB,SAAS,EACV,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,KAAK,EACL,SAAS,EAGV,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"configProvider.d.ts","sourceRoot":"","sources":["../src/configProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAM,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,EACL,WAAW,EAGX,eAAe,EACf,oBAAoB,EAMpB,SAAS,EACV,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,KAAK,EACL,SAAS,EAGV,MAAM,wBAAwB,CAAC;AAahC,KAAK,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACjE;KACG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACnE,CAAC,CAAC,CAAC,CAAC;AAEP,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;CACnB,CAAC;AAEF,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,cAAc,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IAErB,WAAW,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAC;CACjD;AAED,eAAO,MAAM,qBAAqB,UACzB,kBACL,kBAAkB,mBAAmB,EAAE,UAAU,GAAG,aAAa,CAAC,CACnE,mDAkGF,CAAC"}
|
package/esm/configProvider.js
CHANGED
|
@@ -8,6 +8,7 @@ import useConstant from "use-constant";
|
|
|
8
8
|
import { DataCenterProvider } from "./dataProvider";
|
|
9
9
|
import { StatusProvider } from "./statusProvider";
|
|
10
10
|
import { SDKError } from "@orderly.network/types";
|
|
11
|
+
import { ProxyConfigStore } from "./dev/proxyConfigStore";
|
|
11
12
|
export const OrderlyConfigProvider = (props)=>{
|
|
12
13
|
const [account, setAccount] = React.useState(null);
|
|
13
14
|
const { configStore, keyStore, getWalletAdapter, brokerId, networkId, contracts, chainFilter } = props;
|
|
@@ -19,10 +20,10 @@ export const OrderlyConfigProvider = (props)=>{
|
|
|
19
20
|
throw new SDKError("if configStore is provided, brokerId is required in configStore");
|
|
20
21
|
}
|
|
21
22
|
const innerConfigStore = useConstant(()=>{
|
|
22
|
-
return configStore || new DefaultConfigStore({
|
|
23
|
+
return new ProxyConfigStore(configStore || new DefaultConfigStore({
|
|
23
24
|
brokerId,
|
|
24
25
|
networkId
|
|
25
|
-
});
|
|
26
|
+
}));
|
|
26
27
|
});
|
|
27
28
|
const innerKeyStore = useConstant(()=>{
|
|
28
29
|
return keyStore || new LocalStorageStore(networkId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/configProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport React, { useEffect, useMemo } from \"react\";\nimport { OrderlyProvider } from \"./orderlyContext\";\nimport {\n ConfigStore,\n // MemoryConfigStore,\n DefaultConfigStore,\n OrderlyKeyStore,\n getWalletAdapterFunc,\n WalletAdapterOptions,\n LocalStorageStore,\n EtherAdapter,\n SimpleDI,\n Account,\n IContract,\n} from \"@orderly.network/core\";\n\nimport useConstant from \"use-constant\";\nimport {\n Chain,\n NetworkId,\n defaultMainnetChains,\n defaultTestnetChains,\n} from \"@orderly.network/types\";\n// import { usePreLoadData } from \"./usePreloadData\";\nimport { DataCenterProvider } from \"./dataProvider\";\nimport { StatusProvider } from \"./statusProvider\";\nimport { SDKError } from \"@orderly.network/types\";\n// import { useParamsCheck } from \"./useParamsCheck\";\n\ntype RequireOnlyOne<T, U extends keyof T = keyof T> = Omit<T, U> &\n {\n [K in U]-?: Required<Pick<T, K>> & Partial<Record<Exclude<U, K>, never>>;\n }[U];\n\ntype RequireAtLeastOne<T, R extends keyof T = keyof T> = Omit<T, R> &\n {\n [K in R]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<R, K>>>;\n }[R];\n\ntype filteredChains = {\n mainnet?: Chain[];\n testnet?: Chain[];\n};\n\ntype filterChainsFunc = (config: ConfigStore) => filteredChains;\nexport interface ConfigProviderProps {\n configStore?: ConfigStore;\n keyStore?: OrderlyKeyStore;\n contracts?: IContract;\n getWalletAdapter?: getWalletAdapterFunc;\n brokerId: string;\n networkId: NetworkId;\n\n chainFilter?: filteredChains | filterChainsFunc;\n}\n\nexport const OrderlyConfigProvider = (\n props: PropsWithChildren<\n RequireAtLeastOne<ConfigProviderProps, \"brokerId\" | \"configStore\">\n >\n) => {\n const [account, setAccount] = React.useState<Account | null>(null);\n const {\n configStore,\n keyStore,\n getWalletAdapter,\n brokerId,\n networkId,\n contracts,\n chainFilter,\n } = props;\n\n if (!brokerId && typeof configStore === \"undefined\") {\n console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n }\n\n if (typeof configStore !== \"undefined\" && !configStore.get(\"brokerId\")) {\n // console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n throw new SDKError(\n \"if configStore is provided, brokerId is required in configStore\"\n );\n }\n\n const innerConfigStore = useConstant<ConfigStore>(() => {\n return configStore || new DefaultConfigStore({ brokerId, networkId });\n });\n\n const innerKeyStore = useConstant<OrderlyKeyStore>(() => {\n return keyStore || new LocalStorageStore(networkId);\n });\n\n const innerGetWalletAdapter = useConstant<getWalletAdapterFunc>(() => {\n return (\n getWalletAdapter ||\n ((options: WalletAdapterOptions) => new EtherAdapter(options))\n );\n });\n\n // check params, if has mismatch, throw warning message to console\n // useParamsCheck({ brokerId: innerConfigStore.get(\"brokerId\") });\n\n useEffect(() => {\n let account = SimpleDI.get<Account>(Account.instanceName);\n\n if (!account) {\n account = new Account(\n innerConfigStore,\n innerKeyStore,\n innerGetWalletAdapter,\n {\n contracts,\n }\n );\n\n SimpleDI.registerByName(Account.instanceName, account);\n }\n\n setAccount(account);\n }, []);\n\n const filteredChains = useMemo(() => {\n if (typeof chainFilter === \"function\") {\n return chainFilter(innerConfigStore);\n }\n\n return chainFilter;\n\n // const { mainnet, testnet } = props.chains || {};\n\n // return {\n // mainnet: mainnet || defaultMainnetChains,\n // testnet: testnet || defaultTestnetChains,\n // };\n }, [props.chainFilter, innerConfigStore]);\n\n if (!account) {\n return null;\n }\n\n return (\n <OrderlyProvider\n value={{\n configStore: innerConfigStore,\n keyStore: innerKeyStore,\n getWalletAdapter: innerGetWalletAdapter,\n networkId: networkId,\n filteredChains: filteredChains,\n // apiBaseUrl,\n }}\n >\n <StatusProvider>\n <DataCenterProvider>{props.children}</DataCenterProvider>\n </StatusProvider>\n </OrderlyProvider>\n );\n};\n\n// const DataPreload = () => {\n// const { error, done } = usePreLoadData();\n// };\n"],"names":["React","useEffect","useMemo","OrderlyProvider","DefaultConfigStore","LocalStorageStore","EtherAdapter","SimpleDI","Account","useConstant","DataCenterProvider","StatusProvider","SDKError","OrderlyConfigProvider","props","account","setAccount","useState","configStore","keyStore","getWalletAdapter","brokerId","networkId","contracts","chainFilter","console","error","get","innerConfigStore","innerKeyStore","innerGetWalletAdapter","options","instanceName","registerByName","filteredChains","value","children"],"rangeMappings":"
|
|
1
|
+
{"version":3,"sources":["../src/configProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport React, { useEffect, useMemo } from \"react\";\nimport { OrderlyProvider } from \"./orderlyContext\";\nimport {\n ConfigStore,\n // MemoryConfigStore,\n DefaultConfigStore,\n OrderlyKeyStore,\n getWalletAdapterFunc,\n WalletAdapterOptions,\n LocalStorageStore,\n EtherAdapter,\n SimpleDI,\n Account,\n IContract,\n} from \"@orderly.network/core\";\n\nimport useConstant from \"use-constant\";\nimport {\n Chain,\n NetworkId,\n defaultMainnetChains,\n defaultTestnetChains,\n} from \"@orderly.network/types\";\n// import { usePreLoadData } from \"./usePreloadData\";\nimport { DataCenterProvider } from \"./dataProvider\";\nimport { StatusProvider } from \"./statusProvider\";\nimport { SDKError } from \"@orderly.network/types\";\nimport { ProxyConfigStore } from \"./dev/proxyConfigStore\";\n// import { useParamsCheck } from \"./useParamsCheck\";\n\ntype RequireOnlyOne<T, U extends keyof T = keyof T> = Omit<T, U> &\n {\n [K in U]-?: Required<Pick<T, K>> & Partial<Record<Exclude<U, K>, never>>;\n }[U];\n\ntype RequireAtLeastOne<T, R extends keyof T = keyof T> = Omit<T, R> &\n {\n [K in R]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<R, K>>>;\n }[R];\n\ntype filteredChains = {\n mainnet?: Chain[];\n testnet?: Chain[];\n};\n\ntype filterChainsFunc = (config: ConfigStore) => filteredChains;\n\nexport interface ConfigProviderProps {\n configStore?: ConfigStore;\n keyStore?: OrderlyKeyStore;\n contracts?: IContract;\n getWalletAdapter?: getWalletAdapterFunc;\n brokerId: string;\n networkId: NetworkId;\n\n chainFilter?: filteredChains | filterChainsFunc;\n}\n\nexport const OrderlyConfigProvider = (\n props: PropsWithChildren<\n RequireAtLeastOne<ConfigProviderProps, \"brokerId\" | \"configStore\">\n >\n) => {\n const [account, setAccount] = React.useState<Account | null>(null);\n const {\n configStore,\n keyStore,\n getWalletAdapter,\n brokerId,\n networkId,\n contracts,\n chainFilter,\n } = props;\n\n if (!brokerId && typeof configStore === \"undefined\") {\n console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n }\n\n if (typeof configStore !== \"undefined\" && !configStore.get(\"brokerId\")) {\n // console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n throw new SDKError(\n \"if configStore is provided, brokerId is required in configStore\"\n );\n }\n\n const innerConfigStore = useConstant<ConfigStore>(() => {\n return new ProxyConfigStore(\n configStore || new DefaultConfigStore({ brokerId, networkId })\n );\n });\n\n const innerKeyStore = useConstant<OrderlyKeyStore>(() => {\n return keyStore || new LocalStorageStore(networkId);\n });\n\n const innerGetWalletAdapter = useConstant<getWalletAdapterFunc>(() => {\n return (\n getWalletAdapter ||\n ((options: WalletAdapterOptions) => new EtherAdapter(options))\n );\n });\n\n // check params, if has mismatch, throw warning message to console\n // useParamsCheck({ brokerId: innerConfigStore.get(\"brokerId\") });\n\n useEffect(() => {\n let account = SimpleDI.get<Account>(Account.instanceName);\n\n if (!account) {\n account = new Account(\n innerConfigStore,\n innerKeyStore,\n innerGetWalletAdapter,\n {\n contracts,\n }\n );\n\n SimpleDI.registerByName(Account.instanceName, account);\n }\n\n setAccount(account);\n }, []);\n\n const filteredChains = useMemo(() => {\n if (typeof chainFilter === \"function\") {\n return chainFilter(innerConfigStore);\n }\n\n return chainFilter;\n\n // const { mainnet, testnet } = props.chains || {};\n\n // return {\n // mainnet: mainnet || defaultMainnetChains,\n // testnet: testnet || defaultTestnetChains,\n // };\n }, [props.chainFilter, innerConfigStore]);\n\n if (!account) {\n return null;\n }\n\n return (\n <OrderlyProvider\n value={{\n configStore: innerConfigStore,\n keyStore: innerKeyStore,\n getWalletAdapter: innerGetWalletAdapter,\n networkId: networkId,\n filteredChains: filteredChains,\n // apiBaseUrl,\n }}\n >\n <StatusProvider>\n <DataCenterProvider>{props.children}</DataCenterProvider>\n </StatusProvider>\n </OrderlyProvider>\n );\n};\n\n// const DataPreload = () => {\n// const { error, done } = usePreLoadData();\n// };\n"],"names":["React","useEffect","useMemo","OrderlyProvider","DefaultConfigStore","LocalStorageStore","EtherAdapter","SimpleDI","Account","useConstant","DataCenterProvider","StatusProvider","SDKError","ProxyConfigStore","OrderlyConfigProvider","props","account","setAccount","useState","configStore","keyStore","getWalletAdapter","brokerId","networkId","contracts","chainFilter","console","error","get","innerConfigStore","innerKeyStore","innerGetWalletAdapter","options","instanceName","registerByName","filteredChains","value","children"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AACA,OAAOA,SAASC,SAAS,EAAEC,OAAO,QAAQ,QAAQ;AAClD,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAGEC,AADA,qBAAqB;AACrBA,kBAAkB,EAIlBC,iBAAiB,EACjBC,YAAY,EACZC,QAAQ,EACRC,OAAO,QAEF,wBAAwB;AAE/B,OAAOC,iBAAiB,eAAe;AAOvC,qDAAqD;AACrD,SAASC,kBAAkB,QAAQ,iBAAiB;AACpD,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,QAAQ,QAAQ,yBAAyB;AAClD,SAASC,gBAAgB,QAAQ,yBAAyB;AA+B1D,OAAO,MAAMC,wBAAwB,CACnCC;IAIA,MAAM,CAACC,SAASC,WAAW,GAAGjB,MAAMkB,QAAQ,CAAiB;IAC7D,MAAM,EACJC,WAAW,EACXC,QAAQ,EACRC,gBAAgB,EAChBC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,WAAW,EACZ,GAAGV;IAEJ,IAAI,CAACO,YAAY,OAAOH,gBAAgB,aAAa;QACnDO,QAAQC,KAAK,CAAC;IAChB;IAEA,IAAI,OAAOR,gBAAgB,eAAe,CAACA,YAAYS,GAAG,CAAC,aAAa;QACtE,kEAAkE;QAClE,MAAM,IAAIhB,SACR;IAEJ;IAEA,MAAMiB,mBAAmBpB,YAAyB;QAChD,OAAO,IAAII,iBACTM,eAAe,IAAIf,mBAAmB;YAAEkB;YAAUC;QAAU;IAEhE;IAEA,MAAMO,gBAAgBrB,YAA6B;QACjD,OAAOW,YAAY,IAAIf,kBAAkBkB;IAC3C;IAEA,MAAMQ,wBAAwBtB,YAAkC;QAC9D,OACEY,oBACC,CAAA,CAACW,UAAkC,IAAI1B,aAAa0B,QAAO;IAEhE;IAEA,kEAAkE;IAClE,kEAAkE;IAElE/B,UAAU;QACR,IAAIe,UAAUT,SAASqB,GAAG,CAAUpB,QAAQyB,YAAY;QAExD,IAAI,CAACjB,SAAS;YACZA,UAAU,IAAIR,QACZqB,kBACAC,eACAC,uBACA;gBACEP;YACF;YAGFjB,SAAS2B,cAAc,CAAC1B,QAAQyB,YAAY,EAAEjB;QAChD;QAEAC,WAAWD;IACb,GAAG,EAAE;IAEL,MAAMmB,iBAAiBjC,QAAQ;QAC7B,IAAI,OAAOuB,gBAAgB,YAAY;YACrC,OAAOA,YAAYI;QACrB;QAEA,OAAOJ;IAEP,mDAAmD;IAEnD,WAAW;IACX,8CAA8C;IAC9C,8CAA8C;IAC9C,KAAK;IACP,GAAG;QAACV,MAAMU,WAAW;QAAEI;KAAiB;IAExC,IAAI,CAACb,SAAS;QACZ,OAAO;IACT;IAEA,qBACE,KAACb;QACCiC,OAAO;YACLjB,aAAaU;YACbT,UAAUU;YACVT,kBAAkBU;YAClBR,WAAWA;YACXY,gBAAgBA;QAElB;kBAEA,cAAA,KAACxB;sBACC,cAAA,KAACD;0BAAoBK,MAAMsB,QAAQ;;;;AAI3C,EAAE,CAEF,8BAA8B;CAC9B,8CAA8C;CAC9C,KAAK"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ConfigKey, ConfigStore } from "@orderly.network/core";
|
|
2
|
+
export declare class ProxyConfigStore implements ConfigStore {
|
|
3
|
+
private readonly _originConfigStore;
|
|
4
|
+
private _proxyConfigStore?;
|
|
5
|
+
constructor(_originConfigStore: ConfigStore);
|
|
6
|
+
get<T>(key: ConfigKey): T;
|
|
7
|
+
getOr<T>(key: ConfigKey, defaultValue: T): T;
|
|
8
|
+
set<T>(key: ConfigKey, value: T): void;
|
|
9
|
+
clear(): void;
|
|
10
|
+
getFromOrigin<T>(key: ConfigKey): T;
|
|
11
|
+
getOrFromOrigin<T>(key: ConfigKey, defaultValue: T): T;
|
|
12
|
+
setToOrigin<T>(key: ConfigKey, value: T): void;
|
|
13
|
+
clearOrigin(): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=proxyConfigStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxyConfigStore.d.ts","sourceRoot":"","sources":["../../src/dev/proxyConfigStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAG/D,qBAAa,gBAAiB,YAAW,WAAW;IAGtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAF/C,OAAO,CAAC,iBAAiB,CAAC,CAAc;gBAEX,kBAAkB,EAAE,WAAW;IAO5D,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC;IAQzB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;IAO5C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAItC,KAAK,IAAI,IAAI;IAIb,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC;IAInC,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;IAItD,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI9C,WAAW,IAAI,IAAI;CAGpB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { windowGuard } from "@orderly.network/utils";
|
|
2
|
+
export class ProxyConfigStore {
|
|
3
|
+
_originConfigStore;
|
|
4
|
+
_proxyConfigStore;
|
|
5
|
+
constructor(_originConfigStore){
|
|
6
|
+
this._originConfigStore = _originConfigStore;
|
|
7
|
+
windowGuard(()=>{
|
|
8
|
+
this._proxyConfigStore = window.__ORDERLY_CONFIG_STORE__ || _originConfigStore;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
get(key) {
|
|
12
|
+
const value = this._proxyConfigStore?.get(key);
|
|
13
|
+
if (typeof value === "undefined") {
|
|
14
|
+
return this._originConfigStore.get(key);
|
|
15
|
+
}
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
getOr(key, defaultValue) {
|
|
19
|
+
return (this._proxyConfigStore ?? this._originConfigStore).getOr(key, defaultValue);
|
|
20
|
+
}
|
|
21
|
+
set(key, value) {
|
|
22
|
+
(this._proxyConfigStore ?? this._originConfigStore).set(key, value);
|
|
23
|
+
}
|
|
24
|
+
clear() {
|
|
25
|
+
throw new Error("Method not implemented.");
|
|
26
|
+
}
|
|
27
|
+
getFromOrigin(key) {
|
|
28
|
+
return this._originConfigStore.get(key);
|
|
29
|
+
}
|
|
30
|
+
getOrFromOrigin(key, defaultValue) {
|
|
31
|
+
return this._originConfigStore.getOr(key, defaultValue);
|
|
32
|
+
}
|
|
33
|
+
setToOrigin(key, value) {
|
|
34
|
+
this._originConfigStore.set(key, value);
|
|
35
|
+
}
|
|
36
|
+
clearOrigin() {
|
|
37
|
+
this._originConfigStore.clear();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=proxyConfigStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/dev/proxyConfigStore.ts"],"sourcesContent":["import { ConfigKey, ConfigStore } from \"@orderly.network/core\";\nimport { windowGuard } from \"@orderly.network/utils\";\n\nexport class ProxyConfigStore implements ConfigStore {\n private _proxyConfigStore?: ConfigStore;\n\n constructor(private readonly _originConfigStore: ConfigStore) {\n windowGuard(() => {\n this._proxyConfigStore =\n (window as any).__ORDERLY_CONFIG_STORE__ || _originConfigStore;\n });\n }\n\n get<T>(key: ConfigKey): T {\n const value = this._proxyConfigStore?.get(key);\n if (typeof value === \"undefined\") {\n return this._originConfigStore.get(key);\n }\n return value as T;\n }\n\n getOr<T>(key: ConfigKey, defaultValue: T): T {\n return (this._proxyConfigStore ?? this._originConfigStore).getOr(\n key,\n defaultValue\n );\n }\n\n set<T>(key: ConfigKey, value: T): void {\n (this._proxyConfigStore ?? this._originConfigStore).set(key, value);\n }\n\n clear(): void {\n throw new Error(\"Method not implemented.\");\n }\n\n getFromOrigin<T>(key: ConfigKey): T {\n return this._originConfigStore.get(key);\n }\n\n getOrFromOrigin<T>(key: ConfigKey, defaultValue: T): T {\n return this._originConfigStore.getOr(key, defaultValue);\n }\n\n setToOrigin<T>(key: ConfigKey, value: T): void {\n this._originConfigStore.set(key, value);\n }\n\n clearOrigin(): void {\n this._originConfigStore.clear();\n }\n}\n"],"names":["windowGuard","ProxyConfigStore","_proxyConfigStore","constructor","_originConfigStore","window","__ORDERLY_CONFIG_STORE__","get","key","value","getOr","defaultValue","set","clear","Error","getFromOrigin","getOrFromOrigin","setToOrigin","clearOrigin"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,WAAW,QAAQ,yBAAyB;AAErD,OAAO,MAAMC;;IACHC,kBAAgC;IAExCC,YAAY,AAAiBC,kBAA+B,CAAE;aAAjCA,qBAAAA;QAC3BJ,YAAY;YACV,IAAI,CAACE,iBAAiB,GACpB,AAACG,OAAeC,wBAAwB,IAAIF;QAChD;IACF;IAEAG,IAAOC,GAAc,EAAK;QACxB,MAAMC,QAAQ,IAAI,CAACP,iBAAiB,EAAEK,IAAIC;QAC1C,IAAI,OAAOC,UAAU,aAAa;YAChC,OAAO,IAAI,CAACL,kBAAkB,CAACG,GAAG,CAACC;QACrC;QACA,OAAOC;IACT;IAEAC,MAASF,GAAc,EAAEG,YAAe,EAAK;QAC3C,OAAO,AAAC,CAAA,IAAI,CAACT,iBAAiB,IAAI,IAAI,CAACE,kBAAkB,AAAD,EAAGM,KAAK,CAC9DF,KACAG;IAEJ;IAEAC,IAAOJ,GAAc,EAAEC,KAAQ,EAAQ;QACpC,CAAA,IAAI,CAACP,iBAAiB,IAAI,IAAI,CAACE,kBAAkB,AAAD,EAAGQ,GAAG,CAACJ,KAAKC;IAC/D;IAEAI,QAAc;QACZ,MAAM,IAAIC,MAAM;IAClB;IAEAC,cAAiBP,GAAc,EAAK;QAClC,OAAO,IAAI,CAACJ,kBAAkB,CAACG,GAAG,CAACC;IACrC;IAEAQ,gBAAmBR,GAAc,EAAEG,YAAe,EAAK;QACrD,OAAO,IAAI,CAACP,kBAAkB,CAACM,KAAK,CAACF,KAAKG;IAC5C;IAEAM,YAAeT,GAAc,EAAEC,KAAQ,EAAQ;QAC7C,IAAI,CAACL,kBAAkB,CAACQ,GAAG,CAACJ,KAAKC;IACnC;IAEAS,cAAoB;QAClB,IAAI,CAACd,kBAAkB,CAACS,KAAK;IAC/B;AACF"}
|
|
@@ -30,5 +30,5 @@ export { useWalletSubscription } from "./useWalletSubscription";
|
|
|
30
30
|
export { useSettleSubscription } from "./useSettleSubscription";
|
|
31
31
|
export { usePrivateDataObserver } from "./usePrivateDataObserver";
|
|
32
32
|
export { useSymbolPriceRange } from "./useSymbolPriceRange";
|
|
33
|
-
export {
|
|
33
|
+
export { useTPSLOrder, type ComputedAlgoOrder, } from "./useTakeProfitAndStopLoss";
|
|
34
34
|
//# sourceMappingURL=orderlyHooks.d.ts.map
|
|
@@ -25,6 +25,6 @@ export { useWalletSubscription } from "./useWalletSubscription";
|
|
|
25
25
|
export { useSettleSubscription } from "./useSettleSubscription";
|
|
26
26
|
export { usePrivateDataObserver } from "./usePrivateDataObserver";
|
|
27
27
|
export { useSymbolPriceRange } from "./useSymbolPriceRange";
|
|
28
|
-
export {
|
|
28
|
+
export { useTPSLOrder } from "./useTakeProfitAndStopLoss";
|
|
29
29
|
|
|
30
30
|
//# sourceMappingURL=orderlyHooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/orderly/orderlyHooks.ts"],"sourcesContent":["export { useOrderbookStream } from \"./useOrderbookStream\";\nexport type {\n OrderbookData,\n OrderBookItem,\n OrderbookOptions,\n} from \"./useOrderbookStream\";\nexport { useOrderEntry } from \"./useOrderEntry\";\nexport type { UseOrderEntryMetaState, OrderParams } from \"./useOrderEntry\";\nexport { useSymbolsInfo } from \"./useSymbolsInfo\";\nexport { useAccountInfo } from \"./useAccountInfo\";\n\nexport { useMarketsStream } from \"./useMarketsStream\";\nexport { useMarkets, MarketsType } from \"./useMarkets\";\nexport type { FavoriteTab, Favorite, Recent } from \"./useMarkets\";\nexport { useMarkPricesStream } from \"./useMarkPricesStream\";\nexport { useMarkPrice } from \"./useMarkPrice\";\nexport { useIndexPrice } from \"./useIndexPrice\";\nexport { useLeverage } from \"./useLeverage\";\n\nexport { useTickerStream } from \"./useTickerStream\";\nexport { useFundingRate } from \"./useFundingRate\";\nexport { usePositionStream } from \"./usePositionStream/usePositionStream\";\nexport { useOrderStream } from \"./useOrderStream/useOrderStream\";\nexport { useMarketTradeStream } from \"./useMarketTradeStream\";\n\nexport { useCollateral } from \"./useCollateral\";\nexport type { CollateralOutputs } from \"./useCollateral\";\nexport { useMaxQty } from \"./useMaxQty\";\nexport { useMarginRatio } from \"./useMarginRatio\";\n\nexport { useChains } from \"./useChains\";\nexport type {\n UseChainsOptions,\n Chain,\n Chains,\n UseChainsReturnObject,\n} from \"./useChains\";\nexport { useChain } from \"./useChain\";\nexport { useWithdraw } from \"./useWithdraw\";\nexport { useDeposit } from \"./useDeposit\";\n\nexport { useHoldingStream } from \"./useHoldingStream\";\nexport { useWalletSubscription } from \"./useWalletSubscription\";\nexport { useSettleSubscription } from \"./useSettleSubscription\";\nexport { usePrivateDataObserver } from \"./usePrivateDataObserver\";\n\nexport { useSymbolPriceRange } from \"./useSymbolPriceRange\";\n\nexport {\n
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/orderlyHooks.ts"],"sourcesContent":["export { useOrderbookStream } from \"./useOrderbookStream\";\nexport type {\n OrderbookData,\n OrderBookItem,\n OrderbookOptions,\n} from \"./useOrderbookStream\";\nexport { useOrderEntry } from \"./useOrderEntry\";\nexport type { UseOrderEntryMetaState, OrderParams } from \"./useOrderEntry\";\nexport { useSymbolsInfo } from \"./useSymbolsInfo\";\nexport { useAccountInfo } from \"./useAccountInfo\";\n\nexport { useMarketsStream } from \"./useMarketsStream\";\nexport { useMarkets, MarketsType } from \"./useMarkets\";\nexport type { FavoriteTab, Favorite, Recent } from \"./useMarkets\";\nexport { useMarkPricesStream } from \"./useMarkPricesStream\";\nexport { useMarkPrice } from \"./useMarkPrice\";\nexport { useIndexPrice } from \"./useIndexPrice\";\nexport { useLeverage } from \"./useLeverage\";\n\nexport { useTickerStream } from \"./useTickerStream\";\nexport { useFundingRate } from \"./useFundingRate\";\nexport { usePositionStream } from \"./usePositionStream/usePositionStream\";\nexport { useOrderStream } from \"./useOrderStream/useOrderStream\";\nexport { useMarketTradeStream } from \"./useMarketTradeStream\";\n\nexport { useCollateral } from \"./useCollateral\";\nexport type { CollateralOutputs } from \"./useCollateral\";\nexport { useMaxQty } from \"./useMaxQty\";\nexport { useMarginRatio } from \"./useMarginRatio\";\n\nexport { useChains } from \"./useChains\";\nexport type {\n UseChainsOptions,\n Chain,\n Chains,\n UseChainsReturnObject,\n} from \"./useChains\";\nexport { useChain } from \"./useChain\";\nexport { useWithdraw } from \"./useWithdraw\";\nexport { useDeposit } from \"./useDeposit\";\n\nexport { useHoldingStream } from \"./useHoldingStream\";\nexport { useWalletSubscription } from \"./useWalletSubscription\";\nexport { useSettleSubscription } from \"./useSettleSubscription\";\nexport { usePrivateDataObserver } from \"./usePrivateDataObserver\";\n\nexport { useSymbolPriceRange } from \"./useSymbolPriceRange\";\n\nexport {\n useTPSLOrder,\n type ComputedAlgoOrder,\n} from \"./useTakeProfitAndStopLoss\";\n"],"names":["useOrderbookStream","useOrderEntry","useSymbolsInfo","useAccountInfo","useMarketsStream","useMarkets","MarketsType","useMarkPricesStream","useMarkPrice","useIndexPrice","useLeverage","useTickerStream","useFundingRate","usePositionStream","useOrderStream","useMarketTradeStream","useCollateral","useMaxQty","useMarginRatio","useChains","useChain","useWithdraw","useDeposit","useHoldingStream","useWalletSubscription","useSettleSubscription","usePrivateDataObserver","useSymbolPriceRange","useTPSLOrder"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,kBAAkB,QAAQ,uBAAuB;AAM1D,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,cAAc,QAAQ,mBAAmB;AAElD,SAASC,gBAAgB,QAAQ,qBAAqB;AACtD,SAASC,UAAU,EAAEC,WAAW,QAAQ,eAAe;AAEvD,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,WAAW,QAAQ,gBAAgB;AAE5C,SAASC,eAAe,QAAQ,oBAAoB;AACpD,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,iBAAiB,QAAQ,wCAAwC;AAC1E,SAASC,cAAc,QAAQ,kCAAkC;AACjE,SAASC,oBAAoB,QAAQ,yBAAyB;AAE9D,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,cAAc,QAAQ,mBAAmB;AAElD,SAASC,SAAS,QAAQ,cAAc;AAOxC,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,UAAU,QAAQ,eAAe;AAE1C,SAASC,gBAAgB,QAAQ,qBAAqB;AACtD,SAASC,qBAAqB,QAAQ,0BAA0B;AAChE,SAASC,qBAAqB,QAAQ,0BAA0B;AAChE,SAASC,sBAAsB,QAAQ,2BAA2B;AAElE,SAASC,mBAAmB,QAAQ,wBAAwB;AAE5D,SACEC,YAAY,QAEP,6BAA6B"}
|
|
@@ -30,7 +30,8 @@ export declare const useOrderStream: (params: {
|
|
|
30
30
|
readonly refresh: import("swr/_internal").KeyedMutator<any[]>;
|
|
31
31
|
readonly loadMore: () => void;
|
|
32
32
|
readonly cancelAllOrders: () => Promise<[any, any]>;
|
|
33
|
-
readonly
|
|
33
|
+
readonly cancelAllTPSLOrders: () => Promise<any[]>;
|
|
34
|
+
readonly cancelAlgoOrdersByTypes: (types: AlgoOrderRootType[]) => Promise<any[]>;
|
|
34
35
|
readonly updateOrder: (orderId: string, order: OrderEntity) => Promise<any>;
|
|
35
36
|
readonly cancelOrder: (orderId: number, symbol?: string) => Promise<any>;
|
|
36
37
|
readonly updateAlgoOrder: (orderId: string, order: OrderEntity) => Promise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOrderStream.d.ts","sourceRoot":"","sources":["../../../src/orderly/useOrderStream/useOrderStream.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,GAAG,EACH,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"useOrderStream.d.ts","sourceRoot":"","sources":["../../../src/orderly/useOrderStream/useOrderStream.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,GAAG,EACH,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAYhC,KAAK,gBAAgB,GAAG,iBAAiB,GAAG,KAAK,CAAC;AAElD,eAAO,MAAM,cAAc,WAIjB;IACN,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B,YACS;IACR;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;;;;;;;8CAmIuC,iBAAiB,EAAE;oCAuDjB,MAAM,SAAS,WAAW;oCAoD1B,MAAM,WAAW,MAAM;wCA7CnB,MAAM,SAAS,WAAW;wCAoD1B,MAAM,WAAW,MAAM;6CAazD,MAAM,mBAAmB,MAAM,KAAG,QAAQ,GAAG,CAAC;wCAmB7C,MAAM,eACF,IAAI,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;EA2C/C,CAAC"}
|
|
@@ -110,6 +110,20 @@ export const useOrderStream = (/**
|
|
|
110
110
|
}, [
|
|
111
111
|
orders?.length
|
|
112
112
|
]);
|
|
113
|
+
const cancelAlgoOrdersByTypes = (types)=>{
|
|
114
|
+
if (!types) {
|
|
115
|
+
throw new SDKError("types is required");
|
|
116
|
+
}
|
|
117
|
+
if (!Array.isArray(types)) {
|
|
118
|
+
throw new SDKError("types should be an array");
|
|
119
|
+
}
|
|
120
|
+
// TODO: order type check
|
|
121
|
+
return Promise.all(types.map((type)=>{
|
|
122
|
+
return doCancelAllAlgoOrders(null, {
|
|
123
|
+
algo_type: type
|
|
124
|
+
});
|
|
125
|
+
}));
|
|
126
|
+
};
|
|
113
127
|
/**
|
|
114
128
|
* cancel all orders
|
|
115
129
|
*/ const cancelAllOrders = useCallback(()=>{
|
|
@@ -122,14 +136,10 @@ export const useOrderStream = (/**
|
|
|
122
136
|
}, [
|
|
123
137
|
ordersResponse.data
|
|
124
138
|
]);
|
|
125
|
-
const
|
|
126
|
-
return
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}),
|
|
130
|
-
doCancelAllAlgoOrders(null, {
|
|
131
|
-
algo_type: "POSITIONAL_TP_SL"
|
|
132
|
-
})
|
|
139
|
+
const cancelAllTPSLOrders = useCallback(()=>{
|
|
140
|
+
return cancelAlgoOrdersByTypes([
|
|
141
|
+
AlgoOrderRootType.POSITIONAL_TP_SL,
|
|
142
|
+
AlgoOrderRootType.TP_SL
|
|
133
143
|
]);
|
|
134
144
|
}, [
|
|
135
145
|
ordersResponse.data
|
|
@@ -230,7 +240,7 @@ export const useOrderStream = (/**
|
|
|
230
240
|
}
|
|
231
241
|
return doUpdateAlgoOrder({
|
|
232
242
|
order_id: orderId,
|
|
233
|
-
|
|
243
|
+
child_orders: childOrders
|
|
234
244
|
});
|
|
235
245
|
}, []);
|
|
236
246
|
return [
|
|
@@ -241,7 +251,8 @@ export const useOrderStream = (/**
|
|
|
241
251
|
refresh: ordersResponse.mutate,
|
|
242
252
|
loadMore,
|
|
243
253
|
cancelAllOrders,
|
|
244
|
-
|
|
254
|
+
cancelAllTPSLOrders,
|
|
255
|
+
cancelAlgoOrdersByTypes,
|
|
245
256
|
updateOrder,
|
|
246
257
|
cancelOrder,
|
|
247
258
|
updateAlgoOrder,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/orderly/useOrderStream/useOrderStream.ts"],"sourcesContent":["import { usePrivateInfiniteQuery } from \"../../usePrivateInfiniteQuery\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport {\n OrderSide,\n OrderEntity,\n OrderStatus,\n API,\n AlgoOrderRootType,\n} from \"@orderly.network/types\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { useMutation } from \"../../useMutation\";\nimport version from \"../../version\";\nimport { useDataCenterContext } from \"../../dataProvider\";\nimport { generateKeyFun } from \"../../utils/swr\";\nimport { useEventEmitter } from \"../../useEventEmitter\";\nimport { SDKError } from \"@orderly.network/types\";\n\ntype CreateOrderType = \"normalOrder\" | \"algoOrder\";\n\ntype CombineOrderType = AlgoOrderRootType | \"ALL\";\n\nexport const useOrderStream = (\n /**\n * Orders query params\n */\n params: {\n symbol?: string;\n status?: OrderStatus;\n size?: number;\n side?: OrderSide;\n /**\n * Include the order type\n * @default [\"ALL\"]\n */\n includes?: CombineOrderType[];\n /**\n * Exclude the order type\n * @default []\n */\n excludes?: CombineOrderType[];\n },\n options?: {\n /**\n * Keep the state update alive\n */\n keeplive?: boolean;\n /**\n * Stop the state update when the component unmount\n */\n stopOnUnmount?: boolean;\n }\n) => {\n const {\n status,\n symbol,\n side,\n size = 100,\n includes = [\"ALL\"],\n excludes = [],\n } = params;\n\n const { data: markPrices = {} } = useMarkPricesStream();\n\n const { regesterKeyHandler, unregisterKeyHandler } = useDataCenterContext();\n const [\n doCancelOrder,\n { error: cancelOrderError, isMutating: cancelMutating },\n ] = useMutation(\"/v1/order\", \"DELETE\");\n\n const [doCancelAllOrders] = useMutation(\"/v1/orders\", \"DELETE\");\n\n const [\n doUpdateOrder,\n { error: updateOrderError, isMutating: updateMutating },\n ] = useMutation(\"/v1/order\", \"PUT\");\n\n const [\n doCanceAlgolOrder,\n { error: cancelAlgoOrderError, isMutating: cancelAlgoMutating },\n ] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [doCancelAllAlgoOrders] = useMutation(\"/v1/algo/orders\", \"DELETE\");\n\n const [\n doUpdateAlgoOrder,\n { error: updateAlgoOrderError, isMutating: updateAlgoMutating },\n ] = useMutation(\"/v1/algo/order\", \"PUT\");\n\n useEffect(() => {\n const formatKey = (value?: string) => (value ? `:${value}` : \"\");\n const key = `orders${formatKey(status)}${formatKey(symbol)}${formatKey(\n side\n )}`;\n regesterKeyHandler?.(key, generateKeyFun({ status, symbol, side, size }));\n\n return () => {\n if (!options?.stopOnUnmount) return;\n\n unregisterKeyHandler(key);\n };\n }, [status, symbol, side, options?.keeplive]);\n\n const ordersResponse = usePrivateInfiniteQuery(\n generateKeyFun({ status, symbol, side, size }),\n {\n initialSize: 1,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const flattenOrders = useMemo(() => {\n if (!ordersResponse.data) {\n return null;\n }\n let orders = ordersResponse.data?.map((item) => item.rows)?.flat();\n\n // return ordersResponse.data?.map((item) => item.rows)?.flat();\n\n if (includes.includes(\"ALL\") && excludes.length === 0) {\n return orders;\n }\n\n if (includes.includes(\"ALL\") && excludes.length > 0) {\n return orders?.filter((item) => !excludes.includes(item.algo_type));\n }\n\n if (includes.length > 0 && excludes.length === 0) {\n return orders?.filter((item) => includes.includes(item.algo_type));\n }\n\n if (includes.length > 0 && excludes.length > 0) {\n return orders?.filter(\n (item) =>\n includes.includes(item.algo_type) &&\n !excludes.includes(item.algo_type)\n );\n }\n\n return orders;\n }, [ordersResponse.data, includes, excludes]);\n\n // console.log(ordersResponse.data);\n\n const orders = useMemo(() => {\n if (!flattenOrders) {\n return null;\n }\n\n if (status !== OrderStatus.NEW && status !== OrderStatus.INCOMPLETE) {\n return flattenOrders;\n }\n return flattenOrders.map((item) => {\n const order = {\n ...item,\n mark_price: (markPrices as any)[item.symbol] ?? 0,\n };\n\n ///TODO: remove this when BE provides the correct data\n // console.log(\"------------->>>>>>>>\", order);\n if (\n order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL ||\n order.algo_type === AlgoOrderRootType.TP_SL\n ) {\n order.quantity = order.child_orders[0].quantity;\n }\n ///-----------------todo end----------------\n\n return order;\n });\n }, [flattenOrders, markPrices, status]);\n\n const total = useMemo(() => {\n return orders?.length || 0;\n // return ordersResponse.data?.[0]?.meta?.total || 0;\n }, [orders?.length]);\n\n /**\n * cancel all orders\n */\n const cancelAllOrders = useCallback(() => {\n return Promise.all([\n doCancelAllOrders(null),\n doCancelAllAlgoOrders(null, { algo_type: \"STOP\" }),\n ]);\n }, [ordersResponse.data]);\n\n const cancelAllAlgoOrders = useCallback(() => {\n return Promise.all([\n doCancelAllAlgoOrders(null, { algo_type: \"TP_SL\" }),\n doCancelAllAlgoOrders(null, { algo_type: \"POSITIONAL_TP_SL\" }),\n ]);\n }, [ordersResponse.data]);\n\n const _updateOrder = useCallback(\n (orderId: string, order: OrderEntity, type: CreateOrderType) => {\n switch (type) {\n case \"algoOrder\":\n return doUpdateAlgoOrder({\n order_id: orderId,\n price: order[\"order_price\"],\n quantity: order[\"order_quantity\"],\n trigger_price: order[\"trigger_price\"],\n });\n default:\n return doUpdateOrder({ ...order, order_id: orderId });\n }\n },\n []\n );\n\n /**\n * update order\n */\n const updateOrder = useCallback((orderId: string, order: OrderEntity) => {\n return _updateOrder(orderId, order, \"normalOrder\");\n }, []);\n\n /**\n * update algo order\n */\n const updateAlgoOrder = useCallback((orderId: string, order: OrderEntity) => {\n return _updateOrder(orderId, order, \"algoOrder\");\n }, []);\n\n const _cancelOrder = useCallback(\n (orderId: number, type: CreateOrderType, symbol?: string) => {\n switch (type) {\n case \"algoOrder\":\n return doCanceAlgolOrder(null, {\n // @ts-ignore\n order_id: orderId,\n symbol,\n source: `SDK${version}`,\n }).then((res: any) => {\n if (res.success) {\n ordersResponse.mutate();\n return res;\n } else {\n throw new Error(res.message);\n }\n });\n default:\n return doCancelOrder(null, {\n order_id: orderId,\n symbol,\n source: `SDK_${version}`,\n }).then((res: any) => {\n if (res.success) {\n // return ordersResponse.mutate().then(() => {\n // return res;\n // });\n //Optimistic Updates\n // ordersResponse.mutate();\n return res;\n } else {\n throw new Error(res.message);\n }\n });\n }\n },\n []\n );\n /**\n * calcel order\n */\n const cancelOrder = useCallback((orderId: number, symbol?: string) => {\n return _cancelOrder(orderId, \"normalOrder\", symbol);\n }, []);\n\n /**\n * calcel algo order\n */\n const cancelAlgoOrder = useCallback((orderId: number, symbol?: string) => {\n return _cancelOrder(orderId, \"algoOrder\", symbol);\n }, []);\n\n const loadMore = () => {\n ordersResponse.setSize(ordersResponse.size + 1);\n };\n\n // const cancelTPSLOrder = useCallback((orderId:number, symbol:string)=>{\n // return\n // });\n\n const cancelTPSLChildOrder = useCallback(\n (orderId: number, rootAlgoOrderId: number): Promise<any> => {\n return doUpdateAlgoOrder({\n order_id: rootAlgoOrderId,\n child_orders: [\n {\n order_id: orderId,\n is_activated: false,\n },\n ],\n });\n },\n []\n );\n\n const updateTPSLOrder = useCallback(\n (\n /**\n * the root algo order id\n */\n orderId: number,\n childOrders: API.AlgoOrder[\"child_orders\"]\n ) => {\n if (!Array.isArray(childOrders)) {\n throw new SDKError(\"children orders is required\");\n }\n return doUpdateAlgoOrder({\n order_id: orderId,\n children_orders: childOrders,\n });\n },\n []\n );\n\n return [\n orders,\n {\n total,\n isLoading: ordersResponse.isLoading,\n refresh: ordersResponse.mutate,\n loadMore,\n cancelAllOrders,\n cancelAllAlgoOrders,\n updateOrder,\n cancelOrder,\n updateAlgoOrder,\n cancelAlgoOrder,\n cancelTPSLChildOrder,\n updateTPSLOrder,\n errors: {\n cancelOrder: cancelOrderError,\n updateOrder: updateOrderError,\n cancelAlgoOrder: cancelAlgoOrderError,\n updateAlgoOrder: updateAlgoOrderError,\n },\n submitting: {\n cancelOrder: cancelMutating,\n updateOrder: updateMutating,\n cancelAlgoOrder: cancelAlgoMutating,\n updateAlglOrder: updateAlgoMutating,\n },\n },\n ] as const;\n};\n"],"names":["usePrivateInfiniteQuery","useCallback","useEffect","useMemo","OrderStatus","AlgoOrderRootType","useMarkPricesStream","useMutation","version","useDataCenterContext","generateKeyFun","SDKError","useOrderStream","params","options","status","symbol","side","size","includes","excludes","data","markPrices","regesterKeyHandler","unregisterKeyHandler","doCancelOrder","error","cancelOrderError","isMutating","cancelMutating","doCancelAllOrders","doUpdateOrder","updateOrderError","updateMutating","doCanceAlgolOrder","cancelAlgoOrderError","cancelAlgoMutating","doCancelAllAlgoOrders","doUpdateAlgoOrder","updateAlgoOrderError","updateAlgoMutating","formatKey","value","key","stopOnUnmount","keeplive","ordersResponse","initialSize","formatter","revalidateOnFocus","flattenOrders","orders","map","item","rows","flat","length","filter","algo_type","NEW","INCOMPLETE","order","mark_price","POSITIONAL_TP_SL","TP_SL","quantity","child_orders","total","cancelAllOrders","Promise","all","cancelAllAlgoOrders","_updateOrder","orderId","type","order_id","price","trigger_price","updateOrder","updateAlgoOrder","_cancelOrder","source","then","res","success","mutate","Error","message","cancelOrder","cancelAlgoOrder","loadMore","setSize","cancelTPSLChildOrder","rootAlgoOrderId","is_activated","updateTPSLOrder","childOrders","Array","isArray","children_orders","isLoading","refresh","errors","submitting","updateAlglOrder"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/orderly/useOrderStream/useOrderStream.ts"],"sourcesContent":["import { usePrivateInfiniteQuery } from \"../../usePrivateInfiniteQuery\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport {\n OrderSide,\n OrderEntity,\n OrderStatus,\n API,\n AlgoOrderRootType,\n} from \"@orderly.network/types\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { useMutation } from \"../../useMutation\";\nimport version from \"../../version\";\nimport { useDataCenterContext } from \"../../dataProvider\";\nimport { generateKeyFun } from \"../../utils/swr\";\nimport { useEventEmitter } from \"../../useEventEmitter\";\nimport { SDKError } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\n\ntype CreateOrderType = \"normalOrder\" | \"algoOrder\";\n\ntype CombineOrderType = AlgoOrderRootType | \"ALL\";\n\nexport const useOrderStream = (\n /**\n * Orders query params\n */\n params: {\n symbol?: string;\n status?: OrderStatus;\n size?: number;\n side?: OrderSide;\n /**\n * Include the order type\n * @default [\"ALL\"]\n */\n includes?: CombineOrderType[];\n /**\n * Exclude the order type\n * @default []\n */\n excludes?: CombineOrderType[];\n },\n options?: {\n /**\n * Keep the state update alive\n */\n keeplive?: boolean;\n /**\n * Stop the state update when the component unmount\n */\n stopOnUnmount?: boolean;\n }\n) => {\n const {\n status,\n symbol,\n side,\n size = 100,\n includes = [\"ALL\"],\n excludes = [],\n } = params;\n\n const { data: markPrices = {} } = useMarkPricesStream();\n\n const { regesterKeyHandler, unregisterKeyHandler } = useDataCenterContext();\n const [\n doCancelOrder,\n { error: cancelOrderError, isMutating: cancelMutating },\n ] = useMutation(\"/v1/order\", \"DELETE\");\n\n const [doCancelAllOrders] = useMutation(\"/v1/orders\", \"DELETE\");\n\n const [\n doUpdateOrder,\n { error: updateOrderError, isMutating: updateMutating },\n ] = useMutation(\"/v1/order\", \"PUT\");\n\n const [\n doCanceAlgolOrder,\n { error: cancelAlgoOrderError, isMutating: cancelAlgoMutating },\n ] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [doCancelAllAlgoOrders] = useMutation(\"/v1/algo/orders\", \"DELETE\");\n\n const [\n doUpdateAlgoOrder,\n { error: updateAlgoOrderError, isMutating: updateAlgoMutating },\n ] = useMutation(\"/v1/algo/order\", \"PUT\");\n\n useEffect(() => {\n const formatKey = (value?: string) => (value ? `:${value}` : \"\");\n const key = `orders${formatKey(status)}${formatKey(symbol)}${formatKey(\n side\n )}`;\n regesterKeyHandler?.(key, generateKeyFun({ status, symbol, side, size }));\n\n return () => {\n if (!options?.stopOnUnmount) return;\n\n unregisterKeyHandler(key);\n };\n }, [status, symbol, side, options?.keeplive]);\n\n const ordersResponse = usePrivateInfiniteQuery(\n generateKeyFun({ status, symbol, side, size }),\n {\n initialSize: 1,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const flattenOrders = useMemo(() => {\n if (!ordersResponse.data) {\n return null;\n }\n let orders = ordersResponse.data?.map((item) => item.rows)?.flat();\n\n // return ordersResponse.data?.map((item) => item.rows)?.flat();\n\n if (includes.includes(\"ALL\") && excludes.length === 0) {\n return orders;\n }\n\n if (includes.includes(\"ALL\") && excludes.length > 0) {\n return orders?.filter((item) => !excludes.includes(item.algo_type));\n }\n\n if (includes.length > 0 && excludes.length === 0) {\n return orders?.filter((item) => includes.includes(item.algo_type));\n }\n\n if (includes.length > 0 && excludes.length > 0) {\n return orders?.filter(\n (item) =>\n includes.includes(item.algo_type) &&\n !excludes.includes(item.algo_type)\n );\n }\n\n return orders;\n }, [ordersResponse.data, includes, excludes]);\n\n // console.log(ordersResponse.data);\n\n const orders = useMemo(() => {\n if (!flattenOrders) {\n return null;\n }\n\n if (status !== OrderStatus.NEW && status !== OrderStatus.INCOMPLETE) {\n return flattenOrders;\n }\n return flattenOrders.map((item) => {\n const order = {\n ...item,\n mark_price: (markPrices as any)[item.symbol] ?? 0,\n };\n\n ///TODO: remove this when BE provides the correct data\n // console.log(\"------------->>>>>>>>\", order);\n if (\n order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL ||\n order.algo_type === AlgoOrderRootType.TP_SL\n ) {\n order.quantity = order.child_orders[0].quantity;\n }\n ///-----------------todo end----------------\n\n return order;\n });\n }, [flattenOrders, markPrices, status]);\n\n const total = useMemo(() => {\n return orders?.length || 0;\n // return ordersResponse.data?.[0]?.meta?.total || 0;\n }, [orders?.length]);\n\n const cancelAlgoOrdersByTypes = (types: AlgoOrderRootType[]) => {\n if (!types) {\n throw new SDKError(\"types is required\");\n }\n\n if (!Array.isArray(types)) {\n throw new SDKError(\"types should be an array\");\n }\n\n // TODO: order type check\n\n return Promise.all(\n types.map((type) => {\n return doCancelAllAlgoOrders(null, { algo_type: type });\n })\n );\n };\n\n /**\n * cancel all orders\n */\n const cancelAllOrders = useCallback(() => {\n return Promise.all([\n doCancelAllOrders(null),\n doCancelAllAlgoOrders(null, { algo_type: \"STOP\" }),\n ]);\n }, [ordersResponse.data]);\n\n const cancelAllTPSLOrders = useCallback(() => {\n return cancelAlgoOrdersByTypes([\n AlgoOrderRootType.POSITIONAL_TP_SL,\n AlgoOrderRootType.TP_SL,\n ]);\n }, [ordersResponse.data]);\n\n const _updateOrder = useCallback(\n (orderId: string, order: OrderEntity, type: CreateOrderType) => {\n switch (type) {\n case \"algoOrder\":\n return doUpdateAlgoOrder({\n order_id: orderId,\n price: order[\"order_price\"],\n quantity: order[\"order_quantity\"],\n trigger_price: order[\"trigger_price\"],\n });\n default:\n return doUpdateOrder({ ...order, order_id: orderId });\n }\n },\n []\n );\n\n /**\n * update order\n */\n const updateOrder = useCallback((orderId: string, order: OrderEntity) => {\n return _updateOrder(orderId, order, \"normalOrder\");\n }, []);\n\n /**\n * update algo order\n */\n const updateAlgoOrder = useCallback((orderId: string, order: OrderEntity) => {\n return _updateOrder(orderId, order, \"algoOrder\");\n }, []);\n\n const _cancelOrder = useCallback(\n (orderId: number, type: CreateOrderType, symbol?: string) => {\n switch (type) {\n case \"algoOrder\":\n return doCanceAlgolOrder(null, {\n // @ts-ignore\n order_id: orderId,\n symbol,\n source: `SDK${version}`,\n }).then((res: any) => {\n if (res.success) {\n ordersResponse.mutate();\n return res;\n } else {\n throw new Error(res.message);\n }\n });\n default:\n return doCancelOrder(null, {\n order_id: orderId,\n symbol,\n source: `SDK_${version}`,\n }).then((res: any) => {\n if (res.success) {\n // return ordersResponse.mutate().then(() => {\n // return res;\n // });\n //Optimistic Updates\n // ordersResponse.mutate();\n return res;\n } else {\n throw new Error(res.message);\n }\n });\n }\n },\n []\n );\n /**\n * calcel order\n */\n const cancelOrder = useCallback((orderId: number, symbol?: string) => {\n return _cancelOrder(orderId, \"normalOrder\", symbol);\n }, []);\n\n /**\n * calcel algo order\n */\n const cancelAlgoOrder = useCallback((orderId: number, symbol?: string) => {\n return _cancelOrder(orderId, \"algoOrder\", symbol);\n }, []);\n\n const loadMore = () => {\n ordersResponse.setSize(ordersResponse.size + 1);\n };\n\n // const cancelTPSLOrder = useCallback((orderId:number, symbol:string)=>{\n // return\n // });\n\n const cancelTPSLChildOrder = useCallback(\n (orderId: number, rootAlgoOrderId: number): Promise<any> => {\n return doUpdateAlgoOrder({\n order_id: rootAlgoOrderId,\n child_orders: [\n {\n order_id: orderId,\n is_activated: false,\n },\n ],\n });\n },\n []\n );\n\n const updateTPSLOrder = useCallback(\n (\n /**\n * the root algo order id\n */\n orderId: number,\n childOrders: API.AlgoOrder[\"child_orders\"]\n ) => {\n if (!Array.isArray(childOrders)) {\n throw new SDKError(\"children orders is required\");\n }\n return doUpdateAlgoOrder({\n order_id: orderId,\n child_orders: childOrders,\n });\n },\n []\n );\n\n return [\n orders,\n {\n total,\n isLoading: ordersResponse.isLoading,\n refresh: ordersResponse.mutate,\n loadMore,\n cancelAllOrders,\n cancelAllTPSLOrders,\n cancelAlgoOrdersByTypes,\n updateOrder,\n cancelOrder,\n updateAlgoOrder,\n cancelAlgoOrder,\n cancelTPSLChildOrder,\n updateTPSLOrder,\n errors: {\n cancelOrder: cancelOrderError,\n updateOrder: updateOrderError,\n cancelAlgoOrder: cancelAlgoOrderError,\n updateAlgoOrder: updateAlgoOrderError,\n },\n submitting: {\n cancelOrder: cancelMutating,\n updateOrder: updateMutating,\n cancelAlgoOrder: cancelAlgoMutating,\n updateAlglOrder: updateAlgoMutating,\n },\n },\n ] as const;\n};\n"],"names":["usePrivateInfiniteQuery","useCallback","useEffect","useMemo","OrderStatus","AlgoOrderRootType","useMarkPricesStream","useMutation","version","useDataCenterContext","generateKeyFun","SDKError","useOrderStream","params","options","status","symbol","side","size","includes","excludes","data","markPrices","regesterKeyHandler","unregisterKeyHandler","doCancelOrder","error","cancelOrderError","isMutating","cancelMutating","doCancelAllOrders","doUpdateOrder","updateOrderError","updateMutating","doCanceAlgolOrder","cancelAlgoOrderError","cancelAlgoMutating","doCancelAllAlgoOrders","doUpdateAlgoOrder","updateAlgoOrderError","updateAlgoMutating","formatKey","value","key","stopOnUnmount","keeplive","ordersResponse","initialSize","formatter","revalidateOnFocus","flattenOrders","orders","map","item","rows","flat","length","filter","algo_type","NEW","INCOMPLETE","order","mark_price","POSITIONAL_TP_SL","TP_SL","quantity","child_orders","total","cancelAlgoOrdersByTypes","types","Array","isArray","Promise","all","type","cancelAllOrders","cancelAllTPSLOrders","_updateOrder","orderId","order_id","price","trigger_price","updateOrder","updateAlgoOrder","_cancelOrder","source","then","res","success","mutate","Error","message","cancelOrder","cancelAlgoOrder","loadMore","setSize","cancelTPSLChildOrder","rootAlgoOrderId","is_activated","updateTPSLOrder","childOrders","isLoading","refresh","errors","submitting","updateAlglOrder"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,uBAAuB,QAAQ,gCAAgC;AACxE,SAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,QAAQ,QAAQ;AACxD,SAGEC,WAAW,EAEXC,iBAAiB,QACZ,yBAAyB;AAChC,SAASC,mBAAmB,QAAQ,yBAAyB;AAC7D,SAASC,WAAW,QAAQ,oBAAoB;AAChD,OAAOC,aAAa,gBAAgB;AACpC,SAASC,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,cAAc,QAAQ,kBAAkB;AAEjD,SAASC,QAAQ,QAAQ,yBAAyB;AAOlD,OAAO,MAAMC,iBAAiB,CAC5B;;GAEC,GACDC,QAgBAC;IAWA,MAAM,EACJC,MAAM,EACNC,MAAM,EACNC,IAAI,EACJC,OAAO,GAAG,EACVC,WAAW;QAAC;KAAM,EAClBC,WAAW,EAAE,EACd,GAAGP;IAEJ,MAAM,EAAEQ,MAAMC,aAAa,CAAC,CAAC,EAAE,GAAGhB;IAElC,MAAM,EAAEiB,kBAAkB,EAAEC,oBAAoB,EAAE,GAAGf;IACrD,MAAM,CACJgB,eACA,EAAEC,OAAOC,gBAAgB,EAAEC,YAAYC,cAAc,EAAE,CACxD,GAAGtB,YAAY,aAAa;IAE7B,MAAM,CAACuB,kBAAkB,GAAGvB,YAAY,cAAc;IAEtD,MAAM,CACJwB,eACA,EAAEL,OAAOM,gBAAgB,EAAEJ,YAAYK,cAAc,EAAE,CACxD,GAAG1B,YAAY,aAAa;IAE7B,MAAM,CACJ2B,mBACA,EAAER,OAAOS,oBAAoB,EAAEP,YAAYQ,kBAAkB,EAAE,CAChE,GAAG7B,YAAY,kBAAkB;IAElC,MAAM,CAAC8B,sBAAsB,GAAG9B,YAAY,mBAAmB;IAE/D,MAAM,CACJ+B,mBACA,EAAEZ,OAAOa,oBAAoB,EAAEX,YAAYY,kBAAkB,EAAE,CAChE,GAAGjC,YAAY,kBAAkB;IAElCL,UAAU;QACR,MAAMuC,YAAY,CAACC,QAAoBA,QAAQ,CAAC,CAAC,EAAEA,MAAM,CAAC,GAAG;QAC7D,MAAMC,MAAM,CAAC,MAAM,EAAEF,UAAU1B,QAAQ,EAAE0B,UAAUzB,QAAQ,EAAEyB,UAC3DxB,MACA,CAAC;QACHM,qBAAqBoB,KAAKjC,eAAe;YAAEK;YAAQC;YAAQC;YAAMC;QAAK;QAEtE,OAAO;YACL,IAAI,CAACJ,SAAS8B,eAAe;YAE7BpB,qBAAqBmB;QACvB;IACF,GAAG;QAAC5B;QAAQC;QAAQC;QAAMH,SAAS+B;KAAS;IAE5C,MAAMC,iBAAiB9C,wBACrBU,eAAe;QAAEK;QAAQC;QAAQC;QAAMC;IAAK,IAC5C;QACE6B,aAAa;QACb,8BAA8B;QAC9B,sBAAsB;QACtB,4CAA4C;QAC5C,KAAK;QACLC,WAAW,CAAC3B,OAASA;QACrB4B,mBAAmB;IACrB;IAGF,MAAMC,gBAAgB/C,QAAQ;QAC5B,IAAI,CAAC2C,eAAezB,IAAI,EAAE;YACxB,OAAO;QACT;QACA,IAAI8B,SAASL,eAAezB,IAAI,EAAE+B,IAAI,CAACC,OAASA,KAAKC,IAAI,GAAGC;QAE5D,gEAAgE;QAEhE,IAAIpC,SAASA,QAAQ,CAAC,UAAUC,SAASoC,MAAM,KAAK,GAAG;YACrD,OAAOL;QACT;QAEA,IAAIhC,SAASA,QAAQ,CAAC,UAAUC,SAASoC,MAAM,GAAG,GAAG;YACnD,OAAOL,QAAQM,OAAO,CAACJ,OAAS,CAACjC,SAASD,QAAQ,CAACkC,KAAKK,SAAS;QACnE;QAEA,IAAIvC,SAASqC,MAAM,GAAG,KAAKpC,SAASoC,MAAM,KAAK,GAAG;YAChD,OAAOL,QAAQM,OAAO,CAACJ,OAASlC,SAASA,QAAQ,CAACkC,KAAKK,SAAS;QAClE;QAEA,IAAIvC,SAASqC,MAAM,GAAG,KAAKpC,SAASoC,MAAM,GAAG,GAAG;YAC9C,OAAOL,QAAQM,OACb,CAACJ,OACClC,SAASA,QAAQ,CAACkC,KAAKK,SAAS,KAChC,CAACtC,SAASD,QAAQ,CAACkC,KAAKK,SAAS;QAEvC;QAEA,OAAOP;IACT,GAAG;QAACL,eAAezB,IAAI;QAAEF;QAAUC;KAAS;IAE5C,oCAAoC;IAEpC,MAAM+B,SAAShD,QAAQ;QACrB,IAAI,CAAC+C,eAAe;YAClB,OAAO;QACT;QAEA,IAAInC,WAAWX,YAAYuD,GAAG,IAAI5C,WAAWX,YAAYwD,UAAU,EAAE;YACnE,OAAOV;QACT;QACA,OAAOA,cAAcE,GAAG,CAAC,CAACC;YACxB,MAAMQ,QAAQ;gBACZ,GAAGR,IAAI;gBACPS,YAAY,AAACxC,UAAkB,CAAC+B,KAAKrC,MAAM,CAAC,IAAI;YAClD;YAEA,sDAAsD;YACtD,+CAA+C;YAC/C,IACE6C,MAAMH,SAAS,KAAKrD,kBAAkB0D,gBAAgB,IACtDF,MAAMH,SAAS,KAAKrD,kBAAkB2D,KAAK,EAC3C;gBACAH,MAAMI,QAAQ,GAAGJ,MAAMK,YAAY,CAAC,EAAE,CAACD,QAAQ;YACjD;YACA,4CAA4C;YAE5C,OAAOJ;QACT;IACF,GAAG;QAACX;QAAe5B;QAAYP;KAAO;IAEtC,MAAMoD,QAAQhE,QAAQ;QACpB,OAAOgD,QAAQK,UAAU;IACzB,qDAAqD;IACvD,GAAG;QAACL,QAAQK;KAAO;IAEnB,MAAMY,0BAA0B,CAACC;QAC/B,IAAI,CAACA,OAAO;YACV,MAAM,IAAI1D,SAAS;QACrB;QAEA,IAAI,CAAC2D,MAAMC,OAAO,CAACF,QAAQ;YACzB,MAAM,IAAI1D,SAAS;QACrB;QAEA,yBAAyB;QAEzB,OAAO6D,QAAQC,GAAG,CAChBJ,MAAMjB,GAAG,CAAC,CAACsB;YACT,OAAOrC,sBAAsB,MAAM;gBAAEqB,WAAWgB;YAAK;QACvD;IAEJ;IAEA;;GAEC,GACD,MAAMC,kBAAkB1E,YAAY;QAClC,OAAOuE,QAAQC,GAAG,CAAC;YACjB3C,kBAAkB;YAClBO,sBAAsB,MAAM;gBAAEqB,WAAW;YAAO;SACjD;IACH,GAAG;QAACZ,eAAezB,IAAI;KAAC;IAExB,MAAMuD,sBAAsB3E,YAAY;QACtC,OAAOmE,wBAAwB;YAC7B/D,kBAAkB0D,gBAAgB;YAClC1D,kBAAkB2D,KAAK;SACxB;IACH,GAAG;QAAClB,eAAezB,IAAI;KAAC;IAExB,MAAMwD,eAAe5E,YACnB,CAAC6E,SAAiBjB,OAAoBa;QACpC,OAAQA;YACN,KAAK;gBACH,OAAOpC,kBAAkB;oBACvByC,UAAUD;oBACVE,OAAOnB,KAAK,CAAC,cAAc;oBAC3BI,UAAUJ,KAAK,CAAC,iBAAiB;oBACjCoB,eAAepB,KAAK,CAAC,gBAAgB;gBACvC;YACF;gBACE,OAAO9B,cAAc;oBAAE,GAAG8B,KAAK;oBAAEkB,UAAUD;gBAAQ;QACvD;IACF,GACA,EAAE;IAGJ;;GAEC,GACD,MAAMI,cAAcjF,YAAY,CAAC6E,SAAiBjB;QAChD,OAAOgB,aAAaC,SAASjB,OAAO;IACtC,GAAG,EAAE;IAEL;;GAEC,GACD,MAAMsB,kBAAkBlF,YAAY,CAAC6E,SAAiBjB;QACpD,OAAOgB,aAAaC,SAASjB,OAAO;IACtC,GAAG,EAAE;IAEL,MAAMuB,eAAenF,YACnB,CAAC6E,SAAiBJ,MAAuB1D;QACvC,OAAQ0D;YACN,KAAK;gBACH,OAAOxC,kBAAkB,MAAM;oBAC7B,aAAa;oBACb6C,UAAUD;oBACV9D;oBACAqE,QAAQ,CAAC,GAAG,EAAE7E,QAAQ,CAAC;gBACzB,GAAG8E,IAAI,CAAC,CAACC;oBACP,IAAIA,IAAIC,OAAO,EAAE;wBACf1C,eAAe2C,MAAM;wBACrB,OAAOF;oBACT,OAAO;wBACL,MAAM,IAAIG,MAAMH,IAAII,OAAO;oBAC7B;gBACF;YACF;gBACE,OAAOlE,cAAc,MAAM;oBACzBsD,UAAUD;oBACV9D;oBACAqE,QAAQ,CAAC,IAAI,EAAE7E,QAAQ,CAAC;gBAC1B,GAAG8E,IAAI,CAAC,CAACC;oBACP,IAAIA,IAAIC,OAAO,EAAE;wBACf,8CAA8C;wBAC9C,gBAAgB;wBAChB,MAAM;wBACN,oBAAoB;wBACpB,2BAA2B;wBAC3B,OAAOD;oBACT,OAAO;wBACL,MAAM,IAAIG,MAAMH,IAAII,OAAO;oBAC7B;gBACF;QACJ;IACF,GACA,EAAE;IAEJ;;GAEC,GACD,MAAMC,cAAc3F,YAAY,CAAC6E,SAAiB9D;QAChD,OAAOoE,aAAaN,SAAS,eAAe9D;IAC9C,GAAG,EAAE;IAEL;;GAEC,GACD,MAAM6E,kBAAkB5F,YAAY,CAAC6E,SAAiB9D;QACpD,OAAOoE,aAAaN,SAAS,aAAa9D;IAC5C,GAAG,EAAE;IAEL,MAAM8E,WAAW;QACfhD,eAAeiD,OAAO,CAACjD,eAAe5B,IAAI,GAAG;IAC/C;IAEA,yEAAyE;IACzE,WAAW;IACX,MAAM;IAEN,MAAM8E,uBAAuB/F,YAC3B,CAAC6E,SAAiBmB;QAChB,OAAO3D,kBAAkB;YACvByC,UAAUkB;YACV/B,cAAc;gBACZ;oBACEa,UAAUD;oBACVoB,cAAc;gBAChB;aACD;QACH;IACF,GACA,EAAE;IAGJ,MAAMC,kBAAkBlG,YACtB,CACE;;OAEC,GACD6E,SACAsB;QAEA,IAAI,CAAC9B,MAAMC,OAAO,CAAC6B,cAAc;YAC/B,MAAM,IAAIzF,SAAS;QACrB;QACA,OAAO2B,kBAAkB;YACvByC,UAAUD;YACVZ,cAAckC;QAChB;IACF,GACA,EAAE;IAGJ,OAAO;QACLjD;QACA;YACEgB;YACAkC,WAAWvD,eAAeuD,SAAS;YACnCC,SAASxD,eAAe2C,MAAM;YAC9BK;YACAnB;YACAC;YACAR;YACAc;YACAU;YACAT;YACAU;YACAG;YACAG;YACAI,QAAQ;gBACNX,aAAajE;gBACbuD,aAAalD;gBACb6D,iBAAiB1D;gBACjBgD,iBAAiB5C;YACnB;YACAiE,YAAY;gBACVZ,aAAa/D;gBACbqD,aAAajD;gBACb4D,iBAAiBzD;gBACjBqE,iBAAiBjE;YACnB;QACF;KACD;AACH,EAAE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { API
|
|
2
|
-
export declare const
|
|
1
|
+
import { API } from "@orderly.network/types";
|
|
2
|
+
export declare const useTPSLOrder: (position: Partial<API.PositionTPSLExt> & Pick<API.PositionTPSLExt, "symbol" | "average_open_price" | "position_qty">, options?: {
|
|
3
3
|
/**
|
|
4
4
|
* You can set the default value for the take profit and stop loss order,
|
|
5
5
|
* it is usually used when editing order
|
|
@@ -23,10 +23,8 @@ export declare const useStopOrder: (position: Partial<API.PositionTPSLExt> & Pic
|
|
|
23
23
|
sl_offset_percentage: number;
|
|
24
24
|
}>, "type" | "side" | "order_type" | "trigger_price">>>) => void;
|
|
25
25
|
submit: () => Promise<void>;
|
|
26
|
-
create: () => Promise<void>;
|
|
27
|
-
update: (orderId: number) => Promise<any>;
|
|
28
26
|
errors: import("./useTPSL").ValidateError | null;
|
|
29
|
-
validate: () => Promise<AlgoOrderEntity<import("@orderly.network/types").AlgoOrderRootType.TP_SL | import("@orderly.network/types").AlgoOrderRootType.POSITIONAL_TP_SL>>;
|
|
27
|
+
validate: () => Promise<import("@orderly.network/types").AlgoOrderEntity<import("@orderly.network/types").AlgoOrderRootType.TP_SL | import("@orderly.network/types").AlgoOrderRootType.POSITIONAL_TP_SL>>;
|
|
30
28
|
}];
|
|
31
29
|
export type { ComputedAlgoOrder } from "./useTPSL";
|
|
32
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orderly/useTakeProfitAndStopLoss/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orderly/useTakeProfitAndStopLoss/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAY,MAAM,wBAAwB,CAAC;AAGvD,eAAO,MAAM,YAAY,aAIb,QAAQ,IAAI,eAAe,CAAC,GACpC,KAAK,IAAI,eAAe,EAAE,QAAQ,GAAG,oBAAoB,GAAG,cAAc,CAAC,YACnE;IACR;;;OAGG;IACH,YAAY,CAAC,EAAE,IAAI,SAAS,CAAC;CAC9B;;;;;;;;;;;;;;;;;;;;EAuBF,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SDKError } from "@orderly.network/types";
|
|
2
2
|
import { useTaskProfitAndStopLossInternal } from "./useTPSL";
|
|
3
|
-
export const
|
|
3
|
+
export const useTPSLOrder = (/**
|
|
4
4
|
* Position that needs to set take profit and stop loss
|
|
5
5
|
*/ position, options)=>{
|
|
6
6
|
if (!position) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/index.ts"],"sourcesContent":["import { API,
|
|
1
|
+
{"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/index.ts"],"sourcesContent":["import { API, SDKError } from \"@orderly.network/types\";\nimport { useTaskProfitAndStopLossInternal } from \"./useTPSL\";\n\nexport const useTPSLOrder = (\n /**\n * Position that needs to set take profit and stop loss\n */\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n /**\n * You can set the default value for the take profit and stop loss order,\n * it is usually used when editing order\n */\n defaultOrder?: API.AlgoOrder;\n }\n): ReturnType<typeof useTaskProfitAndStopLossInternal> => {\n if (!position) {\n throw new SDKError(\"Position is required\");\n }\n\n if (!position.symbol) {\n throw new SDKError(\"Symbol is required\");\n }\n\n if (typeof position.average_open_price === \"undefined\") {\n throw new SDKError(\"Average open price is required\");\n }\n\n if (typeof position.position_qty === \"undefined\") {\n throw new SDKError(\"Position quantity is required\");\n }\n\n // const { data: markPrice } = useMarkPrice(position.symbol);\n\n const result = useTaskProfitAndStopLossInternal(position, options);\n\n return result;\n};\n\nexport type { ComputedAlgoOrder } from \"./useTPSL\";\n"],"names":["SDKError","useTaskProfitAndStopLossInternal","useTPSLOrder","position","options","symbol","average_open_price","position_qty","result"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAAcA,QAAQ,QAAQ,yBAAyB;AACvD,SAASC,gCAAgC,QAAQ,YAAY;AAE7D,OAAO,MAAMC,eAAe,CAC1B;;GAEC,GACDC,UAEAC;IAQA,IAAI,CAACD,UAAU;QACb,MAAM,IAAIH,SAAS;IACrB;IAEA,IAAI,CAACG,SAASE,MAAM,EAAE;QACpB,MAAM,IAAIL,SAAS;IACrB;IAEA,IAAI,OAAOG,SAASG,kBAAkB,KAAK,aAAa;QACtD,MAAM,IAAIN,SAAS;IACrB;IAEA,IAAI,OAAOG,SAASI,YAAY,KAAK,aAAa;QAChD,MAAM,IAAIP,SAAS;IACrB;IAEA,6DAA6D;IAE7D,MAAMQ,SAASP,iCAAiCE,UAAUC;IAE1D,OAAOI;AACT,EAAE"}
|
|
@@ -45,15 +45,13 @@ export declare const useTaskProfitAndStopLossInternal: (position: Partial<API.Po
|
|
|
45
45
|
setValue: (key: string, value: number | string) => void;
|
|
46
46
|
setValues: (values: Partial<ComputedAlgoOrder>) => void;
|
|
47
47
|
/**
|
|
48
|
-
* Submit the
|
|
48
|
+
* Submit the TP/SL order
|
|
49
49
|
*/
|
|
50
50
|
submit: () => Promise<void>;
|
|
51
|
+
errors: ValidateError | null;
|
|
51
52
|
/**
|
|
52
|
-
*
|
|
53
|
+
*
|
|
53
54
|
*/
|
|
54
|
-
create: () => Promise<void>;
|
|
55
|
-
update: (orderId: number) => Promise<any>;
|
|
56
|
-
errors: ValidateError | null;
|
|
57
55
|
validate: () => Promise<AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL>>;
|
|
58
56
|
}];
|
|
59
57
|
//# sourceMappingURL=useTPSL.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTPSL.d.ts","sourceRoot":"","sources":["../../../src/orderly/useTakeProfitAndStopLoss/useTPSL.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,GAAG,EACH,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAO3D,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,eAAe,CACb,iBAAiB,CAAC,KAAK,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CACF,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,MAAM,iBAAiB,CAAC,CAAC,EAAE;QAC/B,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB;CACF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gCAAgC,aACjC,QAAQ,IAAI,eAAe,CAAC,GACpC,KAAK,IAAI,eAAe,EAAE,QAAQ,GAAG,oBAAoB,GAAG,cAAc,CAAC,YACnE;IACR,YAAY,CAAC,EAAE,IAAI,SAAS,CAAC;CAC9B;IAhCG;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;IAE5B;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;;
|
|
1
|
+
{"version":3,"file":"useTPSL.d.ts","sourceRoot":"","sources":["../../../src/orderly/useTakeProfitAndStopLoss/useTPSL.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,GAAG,EACH,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAO3D,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,eAAe,CACb,iBAAiB,CAAC,KAAK,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CACF,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,MAAM,iBAAiB,CAAC,CAAC,EAAE;QAC/B,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB;CACF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gCAAgC,aACjC,QAAQ,IAAI,eAAe,CAAC,GACpC,KAAK,IAAI,eAAe,EAAE,QAAQ,GAAG,oBAAoB,GAAG,cAAc,CAAC,YACnE;IACR,YAAY,CAAC,EAAE,IAAI,SAAS,CAAC;CAC9B;IAhCG;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;IAE5B;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;;IA2B9B;;OAEG;oBACa,MAAM,SAAS,MAAM,GAAG,MAAM,KAAK,IAAI;wBACnC,QAAQ,iBAAiB,CAAC,KAAK,IAAI;IAEvD;;OAEG;YACK,MAAM,QAAQ,IAAI,CAAC;YAMnB,aAAa,GAAG,IAAI;IAC5B;;OAEG;cACO,MAAM,QACd,gBACE,kBAAkB,gBAAgB,GAAG,kBAAkB,KAAK,CAC7D,CACF;EAmSJ,CAAC"}
|
|
@@ -39,7 +39,7 @@ import { omit } from "ramda";
|
|
|
39
39
|
}
|
|
40
40
|
}, []);
|
|
41
41
|
const _setOrderValue = (key, value, options)=>{
|
|
42
|
-
;
|
|
42
|
+
// console.log("[updateOrder:]", key, value, order.quantity);
|
|
43
43
|
setOrder((prev)=>{
|
|
44
44
|
const side = position.position_qty > 0 ? OrderSide.BUY : OrderSide.SELL;
|
|
45
45
|
if (key === "sl_pnl") {
|
|
@@ -54,7 +54,6 @@ import { omit } from "ramda";
|
|
|
54
54
|
}, {
|
|
55
55
|
symbol: symbolInfo
|
|
56
56
|
});
|
|
57
|
-
;
|
|
58
57
|
return {
|
|
59
58
|
...prev,
|
|
60
59
|
...newValue,
|
|
@@ -122,11 +121,9 @@ import { omit } from "ramda";
|
|
|
122
121
|
});
|
|
123
122
|
});
|
|
124
123
|
};
|
|
125
|
-
useEffect(()=>{
|
|
126
|
-
// setError(validate());
|
|
127
|
-
}, [
|
|
128
|
-
order
|
|
129
|
-
]);
|
|
124
|
+
// useEffect(() => {
|
|
125
|
+
// // setError(validate());
|
|
126
|
+
// }, [order]);
|
|
130
127
|
const compare = ()=>{
|
|
131
128
|
const quantityNum = Number(order.quantity);
|
|
132
129
|
if (isNaN(quantityNum)) return false;
|
|
@@ -166,6 +163,8 @@ import { omit } from "ramda";
|
|
|
166
163
|
if (orderBody.child_orders.length === 0) {
|
|
167
164
|
throw new SDKError("No child orders");
|
|
168
165
|
}
|
|
166
|
+
// filter the order that is not activated
|
|
167
|
+
orderBody.child_orders = orderBody.child_orders.filter((order)=>order.is_activated);
|
|
169
168
|
return doCreateOrder(orderBody);
|
|
170
169
|
};
|
|
171
170
|
const deleteOrder = (orderId, symbol)=>{
|
|
@@ -181,7 +180,7 @@ import { omit } from "ramda";
|
|
|
181
180
|
if (updatedOrderEntity.child_orders.length === 0) {
|
|
182
181
|
return Promise.resolve("Not any order needs to update");
|
|
183
182
|
}
|
|
184
|
-
const needDelete = orderEntity.child_orders.filter((order)=>typeof order.is_activated === "boolean" && !order.is_activated).length ===
|
|
183
|
+
const needDelete = orderEntity.child_orders.filter((order)=>typeof order.is_activated === "boolean" && !order.is_activated).length === orderEntity.child_orders.length;
|
|
185
184
|
if (needDelete) {
|
|
186
185
|
return deleteOrder(orderId, order.symbol);
|
|
187
186
|
}
|
|
@@ -196,8 +195,8 @@ import { omit } from "ramda";
|
|
|
196
195
|
], order),
|
|
197
196
|
{
|
|
198
197
|
submit,
|
|
199
|
-
create: submit,
|
|
200
|
-
update: updateOrder
|
|
198
|
+
// create: submit,
|
|
199
|
+
// update: updateOrder,/
|
|
201
200
|
setValue: setOrderValue,
|
|
202
201
|
setValues,
|
|
203
202
|
// createPositionTPSL: submit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/useTPSL.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nimport {\n API,\n AlgoOrderEntity,\n OrderSide,\n SDKError,\n} from \"@orderly.network/types\";\nimport { UpdateOrderKey, calculateHelper } from \"./utils\";\nimport { useMutation } from \"../../useMutation\";\nimport { OrderFactory } from \"../../services/orderCreator/factory\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { TPSLPositionOrderCreator } from \"../../services/orderCreator/tpslPositionOrderCreator\";\nimport { findTPSLFromOrder } from \"../usePositionStream/utils\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPrice } from \"../useMarkPrice\";\nimport { omit } from \"ramda\";\n\nexport type ComputedAlgoOrder = Partial<\n AlgoOrderEntity<\n AlgoOrderRootType.TP_SL & {\n /**\n * Computed take profit\n */\n tp_pnl: number;\n tp_offset: number;\n tp_offset_percentage: number;\n\n /**\n * Computed stop loss\n */\n sl_pnl: number;\n sl_offset: number;\n sl_offset_percentage: number;\n }\n >\n>;\n\nexport type ValidateError = {\n [P in keyof ComputedAlgoOrder]?: {\n type: string;\n message: string;\n };\n};\n\n/**\n * @hidden\n */\nexport const useTaskProfitAndStopLossInternal = (\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n defaultOrder?: API.AlgoOrder;\n }\n): [\n ComputedAlgoOrder,\n {\n /**\n * Update the take profit and stop loss order, this will merge the new data with the old one\n */\n setValue: (key: string, value: number | string) => void;\n setValues: (values: Partial<ComputedAlgoOrder>) => void;\n // getOrderEntity: () => AlgoOrderEntity<AlgoOrderRootType.TP_SL|AlgoOrderRootType.POSITIONAL_TP_SL>;\n /**\n * Submit the take profit and stop loss order\n */\n submit: () => Promise<void>;\n /**\n * Create the take profit and stop loss order, auto-detect the order type\n */\n create: () => Promise<void>;\n update: (orderId: number) => Promise<any>;\n errors: ValidateError | null;\n validate: () => Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n >;\n }\n] => {\n const [order, setOrder] = useState<\n ComputedAlgoOrder & {\n ignoreValidate?: boolean;\n }\n >({\n algo_order_id: options?.defaultOrder?.algo_order_id,\n symbol: position.symbol as string,\n side: Number(position.position_qty) > 0 ? OrderSide.BUY : OrderSide.SELL,\n quantity:\n options?.defaultOrder?.quantity || Math.abs(position.position_qty),\n algo_type: options?.defaultOrder?.algo_type as AlgoOrderRootType,\n });\n\n const symbolInfo = useSymbolsInfo()[position.symbol!]();\n const { data: markPrice } = useMarkPrice(order.symbol!);\n\n const [doCreateOrder] = useMutation(\"/v1/algo/order\");\n const [doUpdateOrder] = useMutation(\"/v1/algo/order\", \"PUT\");\n const [doDeleteOrder] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [errors, setErrors] = useState<ValidateError | null>(null);\n\n useEffect(() => {\n if (!options?.defaultOrder) return;\n const trigger_prices = findTPSLFromOrder(options.defaultOrder!);\n if (trigger_prices.tp_trigger_price) {\n setOrderValue(\"tp_trigger_price\", trigger_prices.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n if (trigger_prices.sl_trigger_price) {\n setOrderValue(\"sl_trigger_price\", trigger_prices.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n }, []);\n\n const _setOrderValue = (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n console.log(\"[updateOrder:]\", key, value, order.quantity);\n\n setOrder((prev) => {\n const side = position.position_qty! > 0 ? OrderSide.BUY : OrderSide.SELL;\n\n if (key === \"sl_pnl\") {\n value = value ? `-${value}` : \"\";\n }\n\n const newValue = calculateHelper(\n key,\n {\n key,\n value,\n entryPrice: position.average_open_price!,\n qty:\n side === OrderSide.BUY\n ? Number(prev.quantity)!\n : -Number(prev.quantity)!,\n orderSide: side,\n },\n {\n symbol: symbolInfo,\n }\n );\n\n console.log(\"newValue::\", newValue);\n\n return {\n ...prev,\n ...newValue,\n ignoreValidate: options?.ignoreValidate,\n };\n });\n };\n\n const setOrderValue = async (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n if (key === \"quantity\") {\n setOrder((prev) => ({ ...prev, quantity: value }));\n\n if (typeof order.sl_trigger_price !== \"undefined\") {\n _setOrderValue(\"sl_trigger_price\", order.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n if (typeof order.tp_trigger_price !== \"undefined\") {\n _setOrderValue(\"tp_trigger_price\", order.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n return;\n }\n\n _setOrderValue(key, value, options);\n };\n\n /**\n * calculate value config\n */\n const valueConfig = {\n symbol: symbolInfo,\n maxQty: Math.abs(position.position_qty),\n markPrice,\n };\n\n // auto validate when order changed\n useEffect(() => {\n requestAnimationFrame(() => {\n if (order.ignoreValidate) return;\n const orderCreator = getOrderCreator();\n orderCreator\n .validate(order as AlgoOrderEntity, valueConfig)\n .then((errors) => {\n setErrors(errors);\n });\n });\n }, [order, valueConfig.markPrice, order.quantity]);\n\n const setValues = (values: Partial<ComputedAlgoOrder>) => {\n const keys = Object.keys(values);\n keys.forEach((key) => {\n setOrderValue(\n key as UpdateOrderKey,\n values[key as keyof ComputedAlgoOrder] as number | string\n );\n });\n };\n\n const validate = (): Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n > => {\n const orderCreator = getOrderCreator();\n\n return new Promise((resolve, reject) => {\n return orderCreator\n .validate(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n .then((errors) => {\n console.log(\"errors::\", errors);\n\n if (errors) {\n setErrors(errors);\n return reject(errors);\n }\n\n resolve(\n orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n );\n });\n });\n };\n\n useEffect(() => {\n // setError(validate());\n }, [order]);\n\n const compare = (): boolean => {\n const quantityNum = Number(order.quantity);\n if (isNaN(quantityNum)) return false;\n return quantityNum === Math.abs(Number(position.position_qty));\n };\n\n const getOrderCreator = () => {\n // if the order is existed, and the order type is POSITIONAL_TP_SL, always return POSITIONAL_TP_SL\n // else use qty to determine the order type\n if (options?.defaultOrder?.algo_type === AlgoOrderRootType.TP_SL) {\n return OrderFactory.create(AlgoOrderRootType.TP_SL);\n }\n return OrderFactory.create(\n compare() ? AlgoOrderRootType.POSITIONAL_TP_SL : AlgoOrderRootType.TP_SL\n );\n };\n\n const submit = async () => {\n const defaultOrder = options?.defaultOrder;\n const orderId = defaultOrder?.algo_order_id;\n const algoType = defaultOrder?.algo_type;\n\n // if algo_order_id is not existed, create new order\n if (!orderId) {\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = POSITION_TP_SL\n if (algoType === AlgoOrderRootType.POSITIONAL_TP_SL) {\n // if order.qty = position.qty, update order\n if (compare()) {\n return updateOrder(orderId!);\n }\n // if order.qty != position.qty, create new tp/sl order\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = TP_SL, delete order and create new order\n\n return updateOrder(orderId!);\n };\n\n const createOrder = () => {\n const orderCreator = getOrderCreator();\n\n const orderBody = orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n );\n\n if (orderBody.child_orders.length === 0) {\n throw new SDKError(\"No child orders\");\n }\n\n return doCreateOrder(orderBody);\n };\n\n const deleteOrder = (orderId: number, symbol: string): Promise<any> => {\n return doDeleteOrder(null, {\n order_id: orderId,\n symbol,\n });\n };\n\n const updateOrder = (orderId: number): Promise<any> => {\n const orderCreator = getOrderCreator() as TPSLPositionOrderCreator;\n\n const [updatedOrderEntity, orderEntity] = orderCreator.crateUpdateOrder(\n // @ts-ignore\n order,\n options?.defaultOrder,\n valueConfig\n );\n\n if (updatedOrderEntity.child_orders.length === 0) {\n return Promise.resolve(\"Not any order needs to update\");\n }\n\n const needDelete =\n orderEntity.child_orders.filter(\n (order) =>\n typeof order.is_activated === \"boolean\" && !order.is_activated\n ).length === 2;\n\n if (needDelete) {\n return deleteOrder(orderId, order.symbol!);\n }\n\n return doUpdateOrder({\n order_id: orderId,\n ...updatedOrderEntity,\n });\n };\n\n return [\n omit([\"ignoreValidate\"], order) as ComputedAlgoOrder,\n {\n submit,\n\n create: submit,\n\n update: updateOrder,\n setValue: setOrderValue,\n setValues,\n // createPositionTPSL: submit,\n // createTPSL: submit,\n validate,\n errors,\n },\n ];\n};\n"],"names":["useEffect","useState","OrderSide","SDKError","calculateHelper","useMutation","OrderFactory","AlgoOrderRootType","findTPSLFromOrder","useSymbolsInfo","useMarkPrice","omit","useTaskProfitAndStopLossInternal","position","options","order","setOrder","algo_order_id","defaultOrder","symbol","side","Number","position_qty","BUY","SELL","quantity","Math","abs","algo_type","symbolInfo","data","markPrice","doCreateOrder","doUpdateOrder","doDeleteOrder","errors","setErrors","trigger_prices","tp_trigger_price","setOrderValue","ignoreValidate","sl_trigger_price","_setOrderValue","key","value","prev","newValue","entryPrice","average_open_price","qty","orderSide","valueConfig","maxQty","requestAnimationFrame","orderCreator","getOrderCreator","validate","then","setValues","values","keys","Object","forEach","Promise","resolve","reject","create","compare","quantityNum","isNaN","TP_SL","POSITIONAL_TP_SL","submit","orderId","algoType","createOrder","updateOrder","orderBody","child_orders","length","deleteOrder","order_id","updatedOrderEntity","orderEntity","crateUpdateOrder","needDelete","filter","is_activated","update","setValue"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/useTPSL.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nimport {\n API,\n AlgoOrderEntity,\n OrderSide,\n SDKError,\n} from \"@orderly.network/types\";\nimport { UpdateOrderKey, calculateHelper } from \"./utils\";\nimport { useMutation } from \"../../useMutation\";\nimport { OrderFactory } from \"../../services/orderCreator/factory\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { TPSLPositionOrderCreator } from \"../../services/orderCreator/tpslPositionOrderCreator\";\nimport { findTPSLFromOrder } from \"../usePositionStream/utils\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPrice } from \"../useMarkPrice\";\nimport { omit } from \"ramda\";\n\nexport type ComputedAlgoOrder = Partial<\n AlgoOrderEntity<\n AlgoOrderRootType.TP_SL & {\n /**\n * Computed take profit\n */\n tp_pnl: number;\n tp_offset: number;\n tp_offset_percentage: number;\n\n /**\n * Computed stop loss\n */\n sl_pnl: number;\n sl_offset: number;\n sl_offset_percentage: number;\n }\n >\n>;\n\nexport type ValidateError = {\n [P in keyof ComputedAlgoOrder]?: {\n type: string;\n message: string;\n };\n};\n\n/**\n * @hidden\n */\nexport const useTaskProfitAndStopLossInternal = (\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n defaultOrder?: API.AlgoOrder;\n }\n): [\n /**\n * return the computed & formatted order\n */\n ComputedAlgoOrder,\n {\n /**\n * Update the take profit and stop loss order, this will merge the new data with the old one\n */\n setValue: (key: string, value: number | string) => void;\n setValues: (values: Partial<ComputedAlgoOrder>) => void;\n // getOrderEntity: () => AlgoOrderEntity<AlgoOrderRootType.TP_SL|AlgoOrderRootType.POSITIONAL_TP_SL>;\n /**\n * Submit the TP/SL order\n */\n submit: () => Promise<void>;\n // /**\n // * Create the take profit and stop loss order, auto-detect the order type\n // */\n // create: () => Promise<void>;\n // update: (orderId: number) => Promise<any>;\n errors: ValidateError | null;\n /**\n *\n */\n validate: () => Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n >;\n }\n] => {\n const [order, setOrder] = useState<\n ComputedAlgoOrder & {\n ignoreValidate?: boolean;\n }\n >({\n algo_order_id: options?.defaultOrder?.algo_order_id,\n symbol: position.symbol as string,\n side: Number(position.position_qty) > 0 ? OrderSide.BUY : OrderSide.SELL,\n quantity:\n options?.defaultOrder?.quantity || Math.abs(position.position_qty),\n algo_type: options?.defaultOrder?.algo_type as AlgoOrderRootType,\n });\n\n const symbolInfo = useSymbolsInfo()[position.symbol!]();\n const { data: markPrice } = useMarkPrice(order.symbol!);\n\n const [doCreateOrder] = useMutation(\"/v1/algo/order\");\n const [doUpdateOrder] = useMutation(\"/v1/algo/order\", \"PUT\");\n const [doDeleteOrder] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [errors, setErrors] = useState<ValidateError | null>(null);\n\n useEffect(() => {\n if (!options?.defaultOrder) return;\n const trigger_prices = findTPSLFromOrder(options.defaultOrder!);\n if (trigger_prices.tp_trigger_price) {\n setOrderValue(\"tp_trigger_price\", trigger_prices.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n if (trigger_prices.sl_trigger_price) {\n setOrderValue(\"sl_trigger_price\", trigger_prices.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n }, []);\n\n const _setOrderValue = (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n // console.log(\"[updateOrder:]\", key, value, order.quantity);\n\n setOrder((prev) => {\n const side = position.position_qty! > 0 ? OrderSide.BUY : OrderSide.SELL;\n\n if (key === \"sl_pnl\") {\n value = value ? `-${value}` : \"\";\n }\n\n const newValue = calculateHelper(\n key,\n {\n key,\n value,\n entryPrice: position.average_open_price!,\n qty:\n side === OrderSide.BUY\n ? Number(prev.quantity)!\n : -Number(prev.quantity)!,\n orderSide: side,\n },\n {\n symbol: symbolInfo,\n }\n );\n\n return {\n ...prev,\n ...newValue,\n ignoreValidate: options?.ignoreValidate,\n };\n });\n };\n\n const setOrderValue = async (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n if (key === \"quantity\") {\n setOrder((prev) => ({ ...prev, quantity: value }));\n\n if (typeof order.sl_trigger_price !== \"undefined\") {\n _setOrderValue(\"sl_trigger_price\", order.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n if (typeof order.tp_trigger_price !== \"undefined\") {\n _setOrderValue(\"tp_trigger_price\", order.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n return;\n }\n\n _setOrderValue(key, value, options);\n };\n\n /**\n * calculate value config\n */\n const valueConfig = {\n symbol: symbolInfo,\n maxQty: Math.abs(position.position_qty),\n markPrice,\n };\n\n // auto validate when order changed\n useEffect(() => {\n requestAnimationFrame(() => {\n if (order.ignoreValidate) return;\n const orderCreator = getOrderCreator();\n orderCreator\n .validate(order as AlgoOrderEntity, valueConfig)\n .then((errors) => {\n setErrors(errors);\n });\n });\n }, [order, valueConfig.markPrice, order.quantity]);\n\n const setValues = (values: Partial<ComputedAlgoOrder>) => {\n const keys = Object.keys(values);\n keys.forEach((key) => {\n setOrderValue(\n key as UpdateOrderKey,\n values[key as keyof ComputedAlgoOrder] as number | string\n );\n });\n };\n\n const validate = (): Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n > => {\n const orderCreator = getOrderCreator();\n\n return new Promise((resolve, reject) => {\n return orderCreator\n .validate(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n .then((errors) => {\n console.log(\"errors::\", errors);\n\n if (errors) {\n setErrors(errors);\n return reject(errors);\n }\n\n resolve(\n orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n );\n });\n });\n };\n\n // useEffect(() => {\n // // setError(validate());\n // }, [order]);\n\n const compare = (): boolean => {\n const quantityNum = Number(order.quantity);\n if (isNaN(quantityNum)) return false;\n return quantityNum === Math.abs(Number(position.position_qty));\n };\n\n const getOrderCreator = () => {\n // if the order is existed, and the order type is POSITIONAL_TP_SL, always return POSITIONAL_TP_SL\n // else use qty to determine the order type\n if (options?.defaultOrder?.algo_type === AlgoOrderRootType.TP_SL) {\n return OrderFactory.create(AlgoOrderRootType.TP_SL);\n }\n return OrderFactory.create(\n compare() ? AlgoOrderRootType.POSITIONAL_TP_SL : AlgoOrderRootType.TP_SL\n );\n };\n\n const submit = async () => {\n const defaultOrder = options?.defaultOrder;\n const orderId = defaultOrder?.algo_order_id;\n const algoType = defaultOrder?.algo_type;\n\n // if algo_order_id is not existed, create new order\n if (!orderId) {\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = POSITION_TP_SL\n if (algoType === AlgoOrderRootType.POSITIONAL_TP_SL) {\n // if order.qty = position.qty, update order\n if (compare()) {\n return updateOrder(orderId!);\n }\n // if order.qty != position.qty, create new tp/sl order\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = TP_SL, delete order and create new order\n\n return updateOrder(orderId!);\n };\n\n const createOrder = () => {\n const orderCreator = getOrderCreator();\n\n const orderBody = orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n );\n\n if (orderBody.child_orders.length === 0) {\n throw new SDKError(\"No child orders\");\n }\n\n // filter the order that is not activated\n orderBody.child_orders = orderBody.child_orders.filter(\n (order: API.AlgoOrderExt) => order.is_activated\n );\n\n return doCreateOrder(orderBody);\n };\n\n const deleteOrder = (orderId: number, symbol: string): Promise<any> => {\n return doDeleteOrder(null, {\n order_id: orderId,\n symbol,\n });\n };\n\n const updateOrder = (orderId: number): Promise<any> => {\n const orderCreator = getOrderCreator() as TPSLPositionOrderCreator;\n\n const [updatedOrderEntity, orderEntity] = orderCreator.crateUpdateOrder(\n // @ts-ignore\n order,\n options?.defaultOrder,\n valueConfig\n );\n\n if (updatedOrderEntity.child_orders.length === 0) {\n return Promise.resolve(\"Not any order needs to update\");\n }\n\n const needDelete =\n orderEntity.child_orders.filter(\n (order) =>\n typeof order.is_activated === \"boolean\" && !order.is_activated\n ).length === orderEntity.child_orders.length;\n\n if (needDelete) {\n return deleteOrder(orderId, order.symbol!);\n }\n\n return doUpdateOrder({\n order_id: orderId,\n ...updatedOrderEntity,\n });\n };\n\n return [\n omit([\"ignoreValidate\"], order) as ComputedAlgoOrder,\n {\n submit,\n\n // create: submit,\n\n // update: updateOrder,/\n setValue: setOrderValue,\n setValues,\n // createPositionTPSL: submit,\n // createTPSL: submit,\n validate,\n errors,\n },\n ];\n};\n"],"names":["useEffect","useState","OrderSide","SDKError","calculateHelper","useMutation","OrderFactory","AlgoOrderRootType","findTPSLFromOrder","useSymbolsInfo","useMarkPrice","omit","useTaskProfitAndStopLossInternal","position","options","order","setOrder","algo_order_id","defaultOrder","symbol","side","Number","position_qty","BUY","SELL","quantity","Math","abs","algo_type","symbolInfo","data","markPrice","doCreateOrder","doUpdateOrder","doDeleteOrder","errors","setErrors","trigger_prices","tp_trigger_price","setOrderValue","ignoreValidate","sl_trigger_price","_setOrderValue","key","value","prev","newValue","entryPrice","average_open_price","qty","orderSide","valueConfig","maxQty","requestAnimationFrame","orderCreator","getOrderCreator","validate","then","setValues","values","keys","Object","forEach","Promise","resolve","reject","create","compare","quantityNum","isNaN","TP_SL","POSITIONAL_TP_SL","submit","orderId","algoType","createOrder","updateOrder","orderBody","child_orders","length","filter","is_activated","deleteOrder","order_id","updatedOrderEntity","orderEntity","crateUpdateOrder","needDelete","setValue"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/orderly/useTakeProfitAndStopLoss/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAgB,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,sBAAsB,GACtB,QAAQ,GACR,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,sBAAsB,GACtB,QAAQ,GACR,WAAW,CAAC;AAEhB;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,sBAoBA;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE;IACN,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,EACD,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;CAAO,UA2BzC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,sBAgCA;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,sBAyBA;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,sBA+BA;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE;IACN,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,EACD,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;CAAO,GACvC,MAAM,CAkCR;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/orderly/useTakeProfitAndStopLoss/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAgB,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,sBAAsB,GACtB,QAAQ,GACR,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,sBAAsB,GACtB,QAAQ,GACR,WAAW,CAAC;AAEhB;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,sBAoBA;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE;IACN,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,EACD,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;CAAO,UA2BzC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,sBAgCA;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,sBAyBA;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,sBA+BA;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE;IACN,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;CAC1B,EACD,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;CAAO,GACvC,MAAM,CAkCR;AAeD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE;IACN,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,SAAS,CAAC;CACtB,EACD,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;CAAO;;EAuJzC"}
|