@orderly.network/hooks 1.4.0-alpha.0 → 1.4.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.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.js +2 -2
- package/lib/version.js.map +1 -1
- package/package.json +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OrderSide } from "@orderly.network/types";
|
|
2
2
|
import { AlgoOrderType } from "@orderly.network/types";
|
|
3
|
-
import { Decimal, zero } from "@orderly.network/utils";
|
|
3
|
+
import { Decimal, todpIfNeed, zero } from "@orderly.network/utils";
|
|
4
4
|
/**
|
|
5
5
|
* offset -> TP/SL price
|
|
6
6
|
*/ export function offsetToPrice(inputs) {
|
|
@@ -36,7 +36,7 @@ export function priceToOffset(inputs, options = {}) {
|
|
|
36
36
|
decimal = new Decimal(entryPrice).minus(new Decimal(price));
|
|
37
37
|
}
|
|
38
38
|
if (symbol) {
|
|
39
|
-
return decimal.abs().todp(symbol.quote_dp,
|
|
39
|
+
return decimal.abs().todp(symbol.quote_dp, Decimal.ROUND_UP).toNumber();
|
|
40
40
|
}
|
|
41
41
|
return decimal.abs().toNumber();
|
|
42
42
|
}
|
|
@@ -75,7 +75,7 @@ export function priceToOffsetPercentage(inputs) {
|
|
|
75
75
|
* pnl -> TP/SL price
|
|
76
76
|
*/ export function pnlToPrice(inputs) {
|
|
77
77
|
const { qty, pnl, entryPrice, orderType, orderSide } = inputs;
|
|
78
|
-
;
|
|
78
|
+
// console.log("pnlToPrice", inputs);
|
|
79
79
|
if (!pnl) {
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
@@ -111,10 +111,21 @@ export function priceToOffsetPercentage(inputs) {
|
|
|
111
111
|
decimal = new Decimal(qty).mul(new Decimal(price).minus(new Decimal(entryPrice)));
|
|
112
112
|
}
|
|
113
113
|
if (symbol) {
|
|
114
|
-
return decimal.todp(symbol.quote_dp,
|
|
114
|
+
return decimal.todp(symbol.quote_dp, Decimal.ROUND_DOWN).toNumber();
|
|
115
115
|
}
|
|
116
116
|
return decimal.toNumber();
|
|
117
117
|
}
|
|
118
|
+
// function formatPrice(price: number | string, symbol?: API.SymbolExt) {
|
|
119
|
+
// if (typeof price !== "string") {
|
|
120
|
+
// price = `${price}`;
|
|
121
|
+
// }
|
|
122
|
+
// if (price.endsWith(".") || !symbol) {
|
|
123
|
+
// return price;
|
|
124
|
+
// }
|
|
125
|
+
// return new Decimal(Number(price))
|
|
126
|
+
// .todp(symbol.quote_dp, Decimal.ROUND_UP)
|
|
127
|
+
// .toNumber();
|
|
128
|
+
// }
|
|
118
129
|
export function calculateHelper(key, inputs, options = {}) {
|
|
119
130
|
const { symbol } = options;
|
|
120
131
|
// if not need to be computed, return the value directly
|
|
@@ -134,6 +145,8 @@ export function calculateHelper(key, inputs, options = {}) {
|
|
|
134
145
|
[key]: inputs.value
|
|
135
146
|
};
|
|
136
147
|
let trigger_price, offset, offset_percentage, pnl;
|
|
148
|
+
const entryPrice = new Decimal(inputs.entryPrice).todp(options.symbol?.quote_dp ?? 2, Decimal.ROUND_UP).toNumber();
|
|
149
|
+
// console.log("******* entryPrice", options.symbol?.quote_dp, entryPrice);
|
|
137
150
|
switch(key){
|
|
138
151
|
case "tp_trigger_price":
|
|
139
152
|
case "sl_trigger_price":
|
|
@@ -157,7 +170,7 @@ export function calculateHelper(key, inputs, options = {}) {
|
|
|
157
170
|
trigger_price = pnlToPrice({
|
|
158
171
|
qty,
|
|
159
172
|
pnl: Number(inputs.value),
|
|
160
|
-
entryPrice
|
|
173
|
+
entryPrice,
|
|
161
174
|
orderSide: inputs.orderSide,
|
|
162
175
|
orderType
|
|
163
176
|
});
|
|
@@ -170,7 +183,7 @@ export function calculateHelper(key, inputs, options = {}) {
|
|
|
170
183
|
trigger_price = offsetToPrice({
|
|
171
184
|
qty,
|
|
172
185
|
offset: Number(inputs.value),
|
|
173
|
-
entryPrice
|
|
186
|
+
entryPrice,
|
|
174
187
|
orderSide: inputs.orderSide,
|
|
175
188
|
orderType: key === "tp_offset" ? AlgoOrderType.TAKE_PROFIT : AlgoOrderType.STOP_LOSS
|
|
176
189
|
});
|
|
@@ -183,7 +196,7 @@ export function calculateHelper(key, inputs, options = {}) {
|
|
|
183
196
|
trigger_price = offsetPercentageToPrice({
|
|
184
197
|
qty,
|
|
185
198
|
percentage: Number(inputs.value),
|
|
186
|
-
entryPrice
|
|
199
|
+
entryPrice,
|
|
187
200
|
orderSide: inputs.orderSide,
|
|
188
201
|
orderType
|
|
189
202
|
});
|
|
@@ -198,25 +211,25 @@ export function calculateHelper(key, inputs, options = {}) {
|
|
|
198
211
|
[key]: inputs.value
|
|
199
212
|
};
|
|
200
213
|
return {
|
|
201
|
-
[`${keyPrefix}trigger_price`]:
|
|
214
|
+
[`${keyPrefix}trigger_price`]: todpIfNeed(trigger_price, symbol?.quote_dp ?? 2),
|
|
202
215
|
[`${keyPrefix}offset`]: offset ?? priceToOffset({
|
|
203
216
|
qty,
|
|
204
217
|
price: Number(trigger_price),
|
|
205
|
-
entryPrice
|
|
218
|
+
entryPrice,
|
|
206
219
|
orderSide: inputs.orderSide,
|
|
207
220
|
orderType
|
|
208
221
|
}, options),
|
|
209
222
|
[`${keyPrefix}offset_percentage`]: offset_percentage ?? priceToOffsetPercentage({
|
|
210
223
|
qty,
|
|
211
224
|
price: Number(trigger_price),
|
|
212
|
-
entryPrice
|
|
225
|
+
entryPrice,
|
|
213
226
|
orderSide: inputs.orderSide,
|
|
214
227
|
orderType
|
|
215
228
|
}),
|
|
216
229
|
[`${keyPrefix}pnl`]: pnl ?? priceToPnl({
|
|
217
230
|
qty,
|
|
218
231
|
price: Number(trigger_price),
|
|
219
|
-
entryPrice
|
|
232
|
+
entryPrice,
|
|
220
233
|
orderSide: inputs.orderSide,
|
|
221
234
|
orderType
|
|
222
235
|
}, options)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/utils.ts"],"sourcesContent":["import { API, OrderSide, PositionSide } from \"@orderly.network/types\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\n\nexport type UpdateOrderKey =\n | \"tp_trigger_price\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"tp_offset\"\n | \"quantity\"\n | \"sl_trigger_price\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\"\n | \"sl_offset\";\n\n/**\n * offset -> TP/SL price\n */\nexport function offsetToPrice(inputs: {\n qty: number;\n offset: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, offset, entryPrice, orderType, orderSide } = inputs;\n\n if (!offset) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n}\n\nexport function priceToOffset(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal: Decimal;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(entryPrice).minus(new Decimal(price));\n }\n\n if (symbol) {\n return decimal!.abs().todp(symbol.quote_dp, 4).toNumber();\n }\n\n return decimal!.abs().toNumber();\n}\n\nexport function offsetPercentageToPrice(inputs: {\n qty: number;\n percentage: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, percentage, entryPrice, orderType, orderSide } = inputs;\n\n if (!percentage) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n}\n\nexport function priceToOffsetPercentage(inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(price)\n .div(new Decimal(entryPrice))\n .minus(1)\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n return new Decimal(price).div(new Decimal(entryPrice)).minus(1).toNumber();\n }\n}\n\n/**\n * pnl -> TP/SL price\n */\nexport function pnlToPrice(inputs: {\n qty: number;\n pnl: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, pnl, entryPrice, orderType, orderSide } = inputs;\n\n console.log(\"pnlToPrice\", inputs);\n\n if (!pnl) {\n return;\n }\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .plus(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n}\n\n/**\n * TP/SL price -> pnl\n */\nexport function priceToPnl(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n): number {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal = zero;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (symbol) {\n return decimal.todp(symbol.quote_dp, 4).toNumber();\n }\n\n return decimal.toNumber();\n}\n\nexport function calculateHelper(\n key: string,\n inputs: {\n key: string;\n value: string | number;\n entryPrice: number;\n qty: number;\n orderSide: OrderSide;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { symbol } = options;\n // if not need to be computed, return the value directly\n if (\n key !== \"quantity\" &&\n key !== \"tp_trigger_price\" &&\n key !== \"sl_trigger_price\" &&\n key !== \"tp_pnl\" &&\n key !== \"sl_pnl\" &&\n key !== \"tp_offset\" &&\n key !== \"sl_offset\" &&\n key !== \"tp_offset_percentage\" &&\n key !== \"sl_offset_percentage\"\n ) {\n return {\n [key]: inputs.value,\n };\n }\n\n const orderType = key.startsWith(\"tp_\")\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS;\n const keyPrefix = key.slice(0, 3);\n\n let qty = Number(key === \"quantity\" ? inputs.value : inputs.qty);\n\n if (qty === 0)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n // [`${keyPrefix}offset`]: \"\",\n // [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n let trigger_price, offset, offset_percentage, pnl;\n\n switch (key) {\n case \"tp_trigger_price\":\n case \"sl_trigger_price\": {\n trigger_price = inputs.value;\n // if trigger price is empty and the key is `*_trigger_price`, reset the offset and pnl\n if (inputs.value === \"\") {\n return {\n [`${keyPrefix}trigger_price`]: trigger_price,\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n };\n }\n break;\n }\n\n case \"tp_pnl\":\n case \"sl_pnl\": {\n pnl = inputs.value;\n trigger_price = pnlToPrice({\n qty,\n pnl: Number(inputs.value),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n\n case \"tp_offset\":\n case \"sl_offset\": {\n offset = inputs.value;\n trigger_price = offsetToPrice({\n qty,\n offset: Number(inputs.value),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType:\n key === \"tp_offset\"\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS,\n });\n break;\n }\n\n case \"tp_offset_percentage\":\n case \"sl_offset_percentage\": {\n offset_percentage = inputs.value;\n trigger_price = offsetPercentageToPrice({\n qty,\n percentage: Number(inputs.value),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n }\n\n if (!trigger_price)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n return {\n [`${keyPrefix}trigger_price`]: symbol\n ? new Decimal(Number(trigger_price)).todp(symbol.quote_dp, 4).toNumber()\n : trigger_price,\n [`${keyPrefix}offset`]:\n offset ??\n priceToOffset(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n [`${keyPrefix}offset_percentage`]:\n offset_percentage ??\n priceToOffsetPercentage({\n qty,\n price: Number(trigger_price!),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n }),\n [`${keyPrefix}pnl`]:\n pnl ??\n priceToPnl(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n };\n}\n"],"names":["OrderSide","AlgoOrderType","Decimal","zero","offsetToPrice","inputs","qty","offset","entryPrice","orderType","orderSide","BUY","TAKE_PROFIT","add","toNumber","minus","SELL","priceToOffset","options","price","symbol","decimal","abs","todp","quote_dp","offsetPercentageToPrice","percentage","mul","priceToOffsetPercentage","div","pnlToPrice","pnl","plus","priceToPnl","calculateHelper","key","value","startsWith","STOP_LOSS","keyPrefix","slice","Number","trigger_price","offset_percentage"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/utils.ts"],"sourcesContent":["import { API, OrderSide, PositionSide } from \"@orderly.network/types\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { Decimal, todpIfNeed, zero } from \"@orderly.network/utils\";\n\nexport type UpdateOrderKey =\n | \"tp_trigger_price\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"tp_offset\"\n | \"quantity\"\n | \"sl_trigger_price\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\"\n | \"sl_offset\";\n\n/**\n * offset -> TP/SL price\n */\nexport function offsetToPrice(inputs: {\n qty: number;\n offset: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, offset, entryPrice, orderType, orderSide } = inputs;\n\n if (!offset) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n}\n\nexport function priceToOffset(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal: Decimal;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(entryPrice).minus(new Decimal(price));\n }\n\n if (symbol) {\n return decimal!.abs().todp(symbol.quote_dp, Decimal.ROUND_UP).toNumber();\n }\n\n return decimal!.abs().toNumber();\n}\n\nexport function offsetPercentageToPrice(inputs: {\n qty: number;\n percentage: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, percentage, entryPrice, orderType, orderSide } = inputs;\n\n if (!percentage) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n}\n\nexport function priceToOffsetPercentage(inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(price)\n .div(new Decimal(entryPrice))\n .minus(1)\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n return new Decimal(price).div(new Decimal(entryPrice)).minus(1).toNumber();\n }\n}\n\n/**\n * pnl -> TP/SL price\n */\nexport function pnlToPrice(inputs: {\n qty: number;\n pnl: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, pnl, entryPrice, orderType, orderSide } = inputs;\n\n // console.log(\"pnlToPrice\", inputs);\n\n if (!pnl) {\n return;\n }\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .plus(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n}\n\n/**\n * TP/SL price -> pnl\n */\nexport function priceToPnl(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n): number {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal = zero;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (symbol) {\n return decimal.todp(symbol.quote_dp, Decimal.ROUND_DOWN).toNumber();\n }\n\n return decimal.toNumber();\n}\n\n// function formatPrice(price: number | string, symbol?: API.SymbolExt) {\n// if (typeof price !== \"string\") {\n// price = `${price}`;\n// }\n\n// if (price.endsWith(\".\") || !symbol) {\n// return price;\n// }\n// return new Decimal(Number(price))\n// .todp(symbol.quote_dp, Decimal.ROUND_UP)\n// .toNumber();\n// }\n\nexport function calculateHelper(\n key: string,\n inputs: {\n key: string;\n value: string | number;\n entryPrice: number;\n qty: number;\n orderSide: OrderSide;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { symbol } = options;\n // if not need to be computed, return the value directly\n if (\n key !== \"quantity\" &&\n key !== \"tp_trigger_price\" &&\n key !== \"sl_trigger_price\" &&\n key !== \"tp_pnl\" &&\n key !== \"sl_pnl\" &&\n key !== \"tp_offset\" &&\n key !== \"sl_offset\" &&\n key !== \"tp_offset_percentage\" &&\n key !== \"sl_offset_percentage\"\n ) {\n return {\n [key]: inputs.value,\n };\n }\n\n const orderType = key.startsWith(\"tp_\")\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS;\n const keyPrefix = key.slice(0, 3);\n\n let qty = Number(key === \"quantity\" ? inputs.value : inputs.qty);\n\n if (qty === 0)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n // [`${keyPrefix}offset`]: \"\",\n // [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n let trigger_price, offset, offset_percentage, pnl;\n\n const entryPrice = new Decimal(inputs.entryPrice)\n .todp(options.symbol?.quote_dp ?? 2, Decimal.ROUND_UP)\n .toNumber();\n\n // console.log(\"******* entryPrice\", options.symbol?.quote_dp, entryPrice);\n\n switch (key) {\n case \"tp_trigger_price\":\n case \"sl_trigger_price\": {\n trigger_price = inputs.value;\n // if trigger price is empty and the key is `*_trigger_price`, reset the offset and pnl\n if (inputs.value === \"\") {\n return {\n [`${keyPrefix}trigger_price`]: trigger_price,\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n };\n }\n break;\n }\n\n case \"tp_pnl\":\n case \"sl_pnl\": {\n pnl = inputs.value;\n trigger_price = pnlToPrice({\n qty,\n pnl: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n\n case \"tp_offset\":\n case \"sl_offset\": {\n offset = inputs.value;\n trigger_price = offsetToPrice({\n qty,\n offset: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType:\n key === \"tp_offset\"\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS,\n });\n break;\n }\n\n case \"tp_offset_percentage\":\n case \"sl_offset_percentage\": {\n offset_percentage = inputs.value;\n trigger_price = offsetPercentageToPrice({\n qty,\n percentage: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n }\n\n if (!trigger_price)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n return {\n [`${keyPrefix}trigger_price`]: todpIfNeed(\n trigger_price,\n symbol?.quote_dp ?? 2\n ),\n [`${keyPrefix}offset`]:\n offset ??\n priceToOffset(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n [`${keyPrefix}offset_percentage`]:\n offset_percentage ??\n priceToOffsetPercentage({\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n }),\n [`${keyPrefix}pnl`]:\n pnl ??\n priceToPnl(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n };\n}\n"],"names":["OrderSide","AlgoOrderType","Decimal","todpIfNeed","zero","offsetToPrice","inputs","qty","offset","entryPrice","orderType","orderSide","BUY","TAKE_PROFIT","add","toNumber","minus","SELL","priceToOffset","options","price","symbol","decimal","abs","todp","quote_dp","ROUND_UP","offsetPercentageToPrice","percentage","mul","priceToOffsetPercentage","div","pnlToPrice","pnl","plus","priceToPnl","ROUND_DOWN","calculateHelper","key","value","startsWith","STOP_LOSS","keyPrefix","slice","Number","trigger_price","offset_percentage"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export class TPSLOrderCreator extends BaseAlgoOrderCreator {
|
|
|
10
10
|
const side = values.side === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;
|
|
11
11
|
const child_orders = [];
|
|
12
12
|
if (typeof values.tp_trigger_price !== "undefined") {
|
|
13
|
-
const tp_trigger_price = !!values.
|
|
13
|
+
const tp_trigger_price = !!values.tp_trigger_price ? new Decimal(values.tp_trigger_price).todp(config.symbol.quote_dp).toNumber() : values.tp_trigger_price;
|
|
14
14
|
child_orders.push({
|
|
15
15
|
algo_type: AlgoOrderType.TAKE_PROFIT,
|
|
16
16
|
reduce_only: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/orderCreator/tpslOrderCreator.ts"],"sourcesContent":["import { AlgoOrderEntity, OrderType, API } from \"@orderly.network/types\";\nimport { TriggerPriceType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from \"./baseAlgoCreator\";\nimport { ValuesDepConfig } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport class TPSLOrderCreator extends BaseAlgoOrderCreator<\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n> {\n create(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n config: ValuesDepConfig\n ) {\n const side =\n values.side! === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;\n\n const child_orders = [];\n\n if (typeof values.tp_trigger_price !== \"undefined\") {\n const tp_trigger_price = !!values.
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/tpslOrderCreator.ts"],"sourcesContent":["import { AlgoOrderEntity, OrderType, API } from \"@orderly.network/types\";\nimport { TriggerPriceType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from \"./baseAlgoCreator\";\nimport { ValuesDepConfig } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport class TPSLOrderCreator extends BaseAlgoOrderCreator<\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n> {\n create(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n config: ValuesDepConfig\n ) {\n const side =\n values.side! === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;\n\n const child_orders = [];\n\n if (typeof values.tp_trigger_price !== \"undefined\") {\n const tp_trigger_price = !!values.tp_trigger_price\n ? new Decimal(values.tp_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.tp_trigger_price;\n\n child_orders.push({\n algo_type: AlgoOrderType.TAKE_PROFIT,\n reduce_only: true,\n side,\n type: OrderType.MARKET,\n trigger_price: tp_trigger_price,\n symbol: values.symbol,\n is_activated: !!values.tp_trigger_price,\n });\n }\n\n if (typeof values.sl_trigger_price !== \"undefined\") {\n const sl_trigger_price = !!values.sl_trigger_price\n ? new Decimal(values.sl_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.sl_trigger_price;\n child_orders.push({\n algo_type: AlgoOrderType.STOP_LOSS,\n reduce_only: true,\n side,\n type: OrderType.MARKET,\n trigger_price: sl_trigger_price,\n symbol: values.symbol,\n is_activated: !!values.sl_trigger_price,\n });\n }\n\n return {\n algo_type: AlgoOrderRootType.TP_SL,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n reduce_only: true,\n quantity: values.quantity,\n symbol: values.symbol,\n child_orders,\n };\n }\n\n crateUpdateOrder(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n oldValue: API.AlgoOrder,\n config: ValuesDepConfig\n ): [\n { child_orders: AlgoOrderUpdateEntity[] },\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n ] {\n const data = this.create(values, config);\n const newData: AlgoOrderUpdateEntity[] = [];\n\n const needUpdateQty = values.quantity !== oldValue.quantity;\n\n data.child_orders.forEach((order) => {\n // find the old order\n let _order = Object.create(null);\n\n if (needUpdateQty) {\n _order[\"quantity\"] = data.quantity;\n }\n\n const oldOrder = oldValue.child_orders?.find(\n (oldOrder) => oldOrder.algo_type === order.algo_type\n );\n\n if (oldOrder) {\n if (!order.is_activated) {\n _order[\"is_activated\"] = false;\n } else if (oldOrder.trigger_price !== order.trigger_price) {\n // _order[\"order_id\"] = Number(oldOrder.algo_order_id);\n _order[\"trigger_price\"] = order.trigger_price as number;\n }\n\n if (Object.keys(_order).length > 0) {\n _order[\"order_id\"] = Number(oldOrder.algo_order_id);\n newData.push(_order);\n }\n }\n });\n\n if (needUpdateQty && newData.length < 2) {\n // if quantity is changed, need to update all child orders\n const missingOrders = oldValue.child_orders.filter(\n (order) => order.algo_order_id !== newData[0].order_id\n );\n\n if (missingOrders.length) {\n newData.push({\n quantity: Number(data.quantity),\n order_id: missingOrders[0].algo_order_id,\n });\n }\n }\n\n return [\n {\n child_orders: newData,\n },\n data,\n ];\n }\n}\n"],"names":["OrderType","TriggerPriceType","AlgoOrderType","AlgoOrderRootType","OrderSide","BaseAlgoOrderCreator","Decimal","TPSLOrderCreator","create","values","config","side","BUY","SELL","child_orders","tp_trigger_price","todp","symbol","quote_dp","toNumber","push","algo_type","TAKE_PROFIT","reduce_only","type","MARKET","trigger_price","is_activated","sl_trigger_price","STOP_LOSS","TP_SL","trigger_price_type","MARK_PRICE","quantity","crateUpdateOrder","oldValue","data","newData","needUpdateQty","forEach","order","_order","Object","oldOrder","find","keys","length","Number","algo_order_id","missingOrders","filter","order_id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
package/esm/version.d.ts
CHANGED
package/esm/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
if (typeof window !== 'undefined') {
|
|
2
2
|
window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
|
|
3
|
-
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.4.0-alpha.
|
|
3
|
+
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.4.0-alpha.1";
|
|
4
4
|
}
|
|
5
|
-
export default "1.4.0-alpha.
|
|
5
|
+
export default "1.4.0-alpha.1";
|
|
6
6
|
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
package/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.4.0-alpha.
|
|
1
|
+
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.4.0-alpha.1\";\n};\n\nexport default \"1.4.0-alpha.1\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;","mappings":"AAQA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;AAEA,eAAe,gBAAgB"}
|
|
@@ -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/lib/configProvider.js
CHANGED
|
@@ -16,6 +16,7 @@ const _useconstant = /*#__PURE__*/ _interop_require_default(require("use-constan
|
|
|
16
16
|
const _dataProvider = require("./dataProvider");
|
|
17
17
|
const _statusProvider = require("./statusProvider");
|
|
18
18
|
const _types = require("@orderly.network/types");
|
|
19
|
+
const _proxyConfigStore = require("./dev/proxyConfigStore");
|
|
19
20
|
function _interop_require_default(obj) {
|
|
20
21
|
return obj && obj.__esModule ? obj : {
|
|
21
22
|
default: obj
|
|
@@ -73,10 +74,10 @@ const OrderlyConfigProvider = (props)=>{
|
|
|
73
74
|
throw new _types.SDKError("if configStore is provided, brokerId is required in configStore");
|
|
74
75
|
}
|
|
75
76
|
const innerConfigStore = (0, _useconstant.default)(()=>{
|
|
76
|
-
return configStore || new _core.DefaultConfigStore({
|
|
77
|
+
return new _proxyConfigStore.ProxyConfigStore(configStore || new _core.DefaultConfigStore({
|
|
77
78
|
brokerId,
|
|
78
79
|
networkId
|
|
79
|
-
});
|
|
80
|
+
}));
|
|
80
81
|
});
|
|
81
82
|
const innerKeyStore = (0, _useconstant.default)(()=>{
|
|
82
83
|
return keyStore || new _core.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":["OrderlyConfigProvider","props","account","setAccount","React","useState","configStore","keyStore","getWalletAdapter","brokerId","networkId","contracts","chainFilter","console","error","get","SDKError","innerConfigStore","useConstant","DefaultConfigStore","innerKeyStore","LocalStorageStore","innerGetWalletAdapter","options","EtherAdapter","useEffect","SimpleDI","Account","instanceName","registerByName","filteredChains","useMemo","OrderlyProvider","value","StatusProvider","DataCenterProvider","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":["OrderlyConfigProvider","props","account","setAccount","React","useState","configStore","keyStore","getWalletAdapter","brokerId","networkId","contracts","chainFilter","console","error","get","SDKError","innerConfigStore","useConstant","ProxyConfigStore","DefaultConfigStore","innerKeyStore","LocalStorageStore","innerGetWalletAdapter","options","EtherAdapter","useEffect","SimpleDI","Account","instanceName","registerByName","filteredChains","useMemo","OrderlyProvider","value","StatusProvider","DataCenterProvider","children"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BA2DaA;;;eAAAA;;;;+DA1D6B;gCACV;sBAazB;oEAEiB;8BAQW;gCACJ;uBACN;kCACQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+B1B,MAAMA,wBAAwB,CACnCC;IAIA,MAAM,CAACC,SAASC,WAAW,GAAGC,cAAK,CAACC,QAAQ,CAAiB;IAC7D,MAAM,EACJC,WAAW,EACXC,QAAQ,EACRC,gBAAgB,EAChBC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,WAAW,EACZ,GAAGX;IAEJ,IAAI,CAACQ,YAAY,OAAOH,gBAAgB,aAAa;QACnDO,QAAQC,KAAK,CAAC;IAChB;IAEA,IAAI,OAAOR,gBAAgB,eAAe,CAACA,YAAYS,GAAG,CAAC,aAAa;QACtE,kEAAkE;QAClE,MAAM,IAAIC,eAAQ,CAChB;IAEJ;IAEA,MAAMC,mBAAmBC,IAAAA,oBAAW,EAAc;QAChD,OAAO,IAAIC,kCAAgB,CACzBb,eAAe,IAAIc,wBAAkB,CAAC;YAAEX;YAAUC;QAAU;IAEhE;IAEA,MAAMW,gBAAgBH,IAAAA,oBAAW,EAAkB;QACjD,OAAOX,YAAY,IAAIe,uBAAiB,CAACZ;IAC3C;IAEA,MAAMa,wBAAwBL,IAAAA,oBAAW,EAAuB;QAC9D,OACEV,oBACC,CAAA,CAACgB,UAAkC,IAAIC,kBAAY,CAACD,QAAO;IAEhE;IAEA,kEAAkE;IAClE,kEAAkE;IAElEE,IAAAA,gBAAS,EAAC;QACR,IAAIxB,UAAUyB,cAAQ,CAACZ,GAAG,CAAUa,aAAO,CAACC,YAAY;QAExD,IAAI,CAAC3B,SAAS;YACZA,UAAU,IAAI0B,aAAO,CACnBX,kBACAI,eACAE,uBACA;gBACEZ;YACF;YAGFgB,cAAQ,CAACG,cAAc,CAACF,aAAO,CAACC,YAAY,EAAE3B;QAChD;QAEAC,WAAWD;IACb,GAAG,EAAE;IAEL,MAAM6B,iBAAiBC,IAAAA,cAAO,EAAC;QAC7B,IAAI,OAAOpB,gBAAgB,YAAY;YACrC,OAAOA,YAAYK;QACrB;QAEA,OAAOL;IAEP,mDAAmD;IAEnD,WAAW;IACX,8CAA8C;IAC9C,8CAA8C;IAC9C,KAAK;IACP,GAAG;QAACX,MAAMW,WAAW;QAAEK;KAAiB;IAExC,IAAI,CAACf,SAAS;QACZ,OAAO;IACT;IAEA,qBACE,qBAAC+B,+BAAe;QACdC,OAAO;YACL5B,aAAaW;YACbV,UAAUc;YACVb,kBAAkBe;YAClBb,WAAWA;YACXqB,gBAAgBA;QAElB;kBAEA,cAAA,qBAACI,8BAAc;sBACb,cAAA,qBAACC,gCAAkB;0BAAEnC,MAAMoC,QAAQ;;;;AAI3C,GAEA,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,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ProxyConfigStore", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ProxyConfigStore;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _utils = require("@orderly.network/utils");
|
|
12
|
+
class ProxyConfigStore {
|
|
13
|
+
_originConfigStore;
|
|
14
|
+
_proxyConfigStore;
|
|
15
|
+
constructor(_originConfigStore){
|
|
16
|
+
this._originConfigStore = _originConfigStore;
|
|
17
|
+
(0, _utils.windowGuard)(()=>{
|
|
18
|
+
this._proxyConfigStore = window.__ORDERLY_CONFIG_STORE__ || _originConfigStore;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
get(key) {
|
|
22
|
+
const value = this._proxyConfigStore?.get(key);
|
|
23
|
+
if (typeof value === "undefined") {
|
|
24
|
+
return this._originConfigStore.get(key);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
getOr(key, defaultValue) {
|
|
29
|
+
return (this._proxyConfigStore ?? this._originConfigStore).getOr(key, defaultValue);
|
|
30
|
+
}
|
|
31
|
+
set(key, value) {
|
|
32
|
+
(this._proxyConfigStore ?? this._originConfigStore).set(key, value);
|
|
33
|
+
}
|
|
34
|
+
clear() {
|
|
35
|
+
throw new Error("Method not implemented.");
|
|
36
|
+
}
|
|
37
|
+
getFromOrigin(key) {
|
|
38
|
+
return this._originConfigStore.get(key);
|
|
39
|
+
}
|
|
40
|
+
getOrFromOrigin(key, defaultValue) {
|
|
41
|
+
return this._originConfigStore.getOr(key, defaultValue);
|
|
42
|
+
}
|
|
43
|
+
setToOrigin(key, value) {
|
|
44
|
+
this._originConfigStore.set(key, value);
|
|
45
|
+
}
|
|
46
|
+
clearOrigin() {
|
|
47
|
+
this._originConfigStore.clear();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
//# 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":["ProxyConfigStore","_proxyConfigStore","constructor","_originConfigStore","windowGuard","window","__ORDERLY_CONFIG_STORE__","get","key","value","getOr","defaultValue","set","clear","Error","getFromOrigin","getOrFromOrigin","setToOrigin","clearOrigin"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAGaA;;;eAAAA;;;uBAFe;AAErB,MAAMA;;IACHC,kBAAgC;IAExCC,YAAY,AAAiBC,kBAA+B,CAAE;aAAjCA,qBAAAA;QAC3BC,IAAAA,kBAAW,EAAC;YACV,IAAI,CAACH,iBAAiB,GACpB,AAACI,OAAeC,wBAAwB,IAAIH;QAChD;IACF;IAEAI,IAAOC,GAAc,EAAK;QACxB,MAAMC,QAAQ,IAAI,CAACR,iBAAiB,EAAEM,IAAIC;QAC1C,IAAI,OAAOC,UAAU,aAAa;YAChC,OAAO,IAAI,CAACN,kBAAkB,CAACI,GAAG,CAACC;QACrC;QACA,OAAOC;IACT;IAEAC,MAASF,GAAc,EAAEG,YAAe,EAAK;QAC3C,OAAO,AAAC,CAAA,IAAI,CAACV,iBAAiB,IAAI,IAAI,CAACE,kBAAkB,AAAD,EAAGO,KAAK,CAC9DF,KACAG;IAEJ;IAEAC,IAAOJ,GAAc,EAAEC,KAAQ,EAAQ;QACpC,CAAA,IAAI,CAACR,iBAAiB,IAAI,IAAI,CAACE,kBAAkB,AAAD,EAAGS,GAAG,CAACJ,KAAKC;IAC/D;IAEAI,QAAc;QACZ,MAAM,IAAIC,MAAM;IAClB;IAEAC,cAAiBP,GAAc,EAAK;QAClC,OAAO,IAAI,CAACL,kBAAkB,CAACI,GAAG,CAACC;IACrC;IAEAQ,gBAAmBR,GAAc,EAAEG,YAAe,EAAK;QACrD,OAAO,IAAI,CAACR,kBAAkB,CAACO,KAAK,CAACF,KAAKG;IAC5C;IAEAM,YAAeT,GAAc,EAAEC,KAAQ,EAAQ;QAC7C,IAAI,CAACN,kBAAkB,CAACS,GAAG,CAACJ,KAAKC;IACnC;IAEAS,cAAoB;QAClB,IAAI,CAACf,kBAAkB,CAACU,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
|
|
@@ -78,15 +78,15 @@ _export(exports, {
|
|
|
78
78
|
useSettleSubscription: function() {
|
|
79
79
|
return _useSettleSubscription.useSettleSubscription;
|
|
80
80
|
},
|
|
81
|
-
useStopOrder: function() {
|
|
82
|
-
return _useTakeProfitAndStopLoss.useStopOrder;
|
|
83
|
-
},
|
|
84
81
|
useSymbolPriceRange: function() {
|
|
85
82
|
return _useSymbolPriceRange.useSymbolPriceRange;
|
|
86
83
|
},
|
|
87
84
|
useSymbolsInfo: function() {
|
|
88
85
|
return _useSymbolsInfo.useSymbolsInfo;
|
|
89
86
|
},
|
|
87
|
+
useTPSLOrder: function() {
|
|
88
|
+
return _useTakeProfitAndStopLoss.useTPSLOrder;
|
|
89
|
+
},
|
|
90
90
|
useTickerStream: function() {
|
|
91
91
|
return _useTickerStream.useTickerStream;
|
|
92
92
|
},
|
|
@@ -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":["MarketsType","useAccountInfo","useChain","useChains","useCollateral","useDeposit","useFundingRate","useHoldingStream","useIndexPrice","useLeverage","useMarginRatio","useMarkPrice","useMarkPricesStream","useMarketTradeStream","useMarkets","useMarketsStream","useMaxQty","useOrderEntry","useOrderStream","useOrderbookStream","usePositionStream","usePrivateDataObserver","useSettleSubscription","useSymbolPriceRange","useSymbolsInfo","useTPSLOrder","useTickerStream","useWalletSubscription","useWithdraw"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAYqBA,WAAW;eAAXA,uBAAW;;IAHvBC,cAAc;eAAdA,8BAAc;;IA4BdC,QAAQ;eAARA,kBAAQ;;IAPRC,SAAS;eAATA,oBAAS;;IALTC,aAAa;eAAbA,4BAAa;;IAcbC,UAAU;eAAVA,sBAAU;;IAnBVC,cAAc;eAAdA,8BAAc;;IAqBdC,gBAAgB;eAAhBA,kCAAgB;;IAzBhBC,aAAa;eAAbA,4BAAa;;IACbC,WAAW;eAAXA,wBAAW;;IAWXC,cAAc;eAAdA,8BAAc;;IAbdC,YAAY;eAAZA,0BAAY;;IADZC,mBAAmB;eAAnBA,wCAAmB;;IASnBC,oBAAoB;eAApBA,0CAAoB;;IAXpBC,UAAU;eAAVA,sBAAU;;IADVC,gBAAgB;eAAhBA,kCAAgB;;IAgBhBC,SAAS;eAATA,oBAAS;;IArBTC,aAAa;eAAbA,4BAAa;;IAgBbC,cAAc;eAAdA,8BAAc;;IAtBdC,kBAAkB;eAAlBA,sCAAkB;;IAqBlBC,iBAAiB;eAAjBA,oCAAiB;;IAuBjBC,sBAAsB;eAAtBA,8CAAsB;;IADtBC,qBAAqB;eAArBA,4CAAqB;;IAGrBC,mBAAmB;eAAnBA,wCAAmB;;IAtCnBC,cAAc;eAAdA,8BAAc;;IAyCrBC,YAAY;eAAZA,sCAAY;;IA9BLC,eAAe;eAAfA,gCAAe;;IAuBfC,qBAAqB;eAArBA,4CAAqB;;IAJrBC,WAAW;eAAXA,wBAAW;;;oCAtCe;+BAML;gCAEC;gCACA;kCAEE;4BACO;qCAEJ;8BACP;+BACC;6BACF;iCAEI;gCACD;mCACG;gCACH;sCACM;+BAEP;2BAEJ;gCACK;2BAEL;0BAOD;6BACG;4BACD;kCAEM;uCACK;uCACA;wCACC;qCAEH;0CAK7B"}
|
|
@@ -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"}
|
|
@@ -124,6 +124,20 @@ const useOrderStream = (/**
|
|
|
124
124
|
}, [
|
|
125
125
|
orders?.length
|
|
126
126
|
]);
|
|
127
|
+
const cancelAlgoOrdersByTypes = (types)=>{
|
|
128
|
+
if (!types) {
|
|
129
|
+
throw new _types.SDKError("types is required");
|
|
130
|
+
}
|
|
131
|
+
if (!Array.isArray(types)) {
|
|
132
|
+
throw new _types.SDKError("types should be an array");
|
|
133
|
+
}
|
|
134
|
+
// TODO: order type check
|
|
135
|
+
return Promise.all(types.map((type)=>{
|
|
136
|
+
return doCancelAllAlgoOrders(null, {
|
|
137
|
+
algo_type: type
|
|
138
|
+
});
|
|
139
|
+
}));
|
|
140
|
+
};
|
|
127
141
|
/**
|
|
128
142
|
* cancel all orders
|
|
129
143
|
*/ const cancelAllOrders = (0, _react.useCallback)(()=>{
|
|
@@ -136,14 +150,10 @@ const useOrderStream = (/**
|
|
|
136
150
|
}, [
|
|
137
151
|
ordersResponse.data
|
|
138
152
|
]);
|
|
139
|
-
const
|
|
140
|
-
return
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}),
|
|
144
|
-
doCancelAllAlgoOrders(null, {
|
|
145
|
-
algo_type: "POSITIONAL_TP_SL"
|
|
146
|
-
})
|
|
153
|
+
const cancelAllTPSLOrders = (0, _react.useCallback)(()=>{
|
|
154
|
+
return cancelAlgoOrdersByTypes([
|
|
155
|
+
_types.AlgoOrderRootType.POSITIONAL_TP_SL,
|
|
156
|
+
_types.AlgoOrderRootType.TP_SL
|
|
147
157
|
]);
|
|
148
158
|
}, [
|
|
149
159
|
ordersResponse.data
|
|
@@ -244,7 +254,7 @@ const useOrderStream = (/**
|
|
|
244
254
|
}
|
|
245
255
|
return doUpdateAlgoOrder({
|
|
246
256
|
order_id: orderId,
|
|
247
|
-
|
|
257
|
+
child_orders: childOrders
|
|
248
258
|
});
|
|
249
259
|
}, []);
|
|
250
260
|
return [
|
|
@@ -255,7 +265,8 @@ const useOrderStream = (/**
|
|
|
255
265
|
refresh: ordersResponse.mutate,
|
|
256
266
|
loadMore,
|
|
257
267
|
cancelAllOrders,
|
|
258
|
-
|
|
268
|
+
cancelAllTPSLOrders,
|
|
269
|
+
cancelAlgoOrdersByTypes,
|
|
259
270
|
updateOrder,
|
|
260
271
|
cancelOrder,
|
|
261
272
|
updateAlgoOrder,
|