@orderly.network/hooks 0.0.17 → 0.0.19
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/dist/index.d.mts +21 -9
- package/dist/index.d.ts +21 -9
- package/dist/index.js +132 -59
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +129 -55
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
package/dist/index.mjs
CHANGED
|
@@ -5,15 +5,12 @@ import { WS, get, mutate } from '@orderly.network/net';
|
|
|
5
5
|
import useSWRMutation from 'swr/mutation';
|
|
6
6
|
import useConstant from 'use-constant';
|
|
7
7
|
export { default as useConstant } from 'use-constant';
|
|
8
|
-
import { SimpleDI, Account } from '@orderly.network/core';
|
|
8
|
+
import { SimpleDI, Account, EventEmitter } from '@orderly.network/core';
|
|
9
9
|
import { AccountStatusEnum, SystemStateEnum, ExchangeStatusEnum, OrderSide, OrderType } from '@orderly.network/types';
|
|
10
|
-
import { BehaviorSubject
|
|
11
|
-
import { map } from 'rxjs/operators';
|
|
12
|
-
import { useObservable } from 'rxjs-hooks';
|
|
13
|
-
export { useEventCallback, useObservable } from 'rxjs-hooks';
|
|
14
|
-
import { compose, defaultTo, head, last, pathOr, propOr } from 'ramda';
|
|
10
|
+
import { BehaviorSubject } from 'rxjs';
|
|
15
11
|
import useSWRSubscription from 'swr/subscription';
|
|
16
12
|
import { Decimal, zero, getPrecisionByNumber, timeConvertString } from '@orderly.network/utils';
|
|
13
|
+
import { pathOr, propOr, compose, head, prop } from 'ramda';
|
|
17
14
|
import { positions, account, order } from '@orderly.network/futures';
|
|
18
15
|
import useSWRInfinite from 'swr/infinite';
|
|
19
16
|
|
|
@@ -25,26 +22,26 @@ var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
25
22
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
26
23
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
27
24
|
var __spreadValues = (a, b) => {
|
|
28
|
-
for (var
|
|
29
|
-
if (__hasOwnProp.call(b,
|
|
30
|
-
__defNormalProp(a,
|
|
25
|
+
for (var prop2 in b || (b = {}))
|
|
26
|
+
if (__hasOwnProp.call(b, prop2))
|
|
27
|
+
__defNormalProp(a, prop2, b[prop2]);
|
|
31
28
|
if (__getOwnPropSymbols)
|
|
32
|
-
for (var
|
|
33
|
-
if (__propIsEnum.call(b,
|
|
34
|
-
__defNormalProp(a,
|
|
29
|
+
for (var prop2 of __getOwnPropSymbols(b)) {
|
|
30
|
+
if (__propIsEnum.call(b, prop2))
|
|
31
|
+
__defNormalProp(a, prop2, b[prop2]);
|
|
35
32
|
}
|
|
36
33
|
return a;
|
|
37
34
|
};
|
|
38
35
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
39
36
|
var __objRest = (source, exclude) => {
|
|
40
37
|
var target = {};
|
|
41
|
-
for (var
|
|
42
|
-
if (__hasOwnProp.call(source,
|
|
43
|
-
target[
|
|
38
|
+
for (var prop2 in source)
|
|
39
|
+
if (__hasOwnProp.call(source, prop2) && exclude.indexOf(prop2) < 0)
|
|
40
|
+
target[prop2] = source[prop2];
|
|
44
41
|
if (source != null && __getOwnPropSymbols)
|
|
45
|
-
for (var
|
|
46
|
-
if (exclude.indexOf(
|
|
47
|
-
target[
|
|
42
|
+
for (var prop2 of __getOwnPropSymbols(source)) {
|
|
43
|
+
if (exclude.indexOf(prop2) < 0 && __propIsEnum.call(source, prop2))
|
|
44
|
+
target[prop2] = source[prop2];
|
|
48
45
|
}
|
|
49
46
|
return target;
|
|
50
47
|
};
|
|
@@ -251,9 +248,9 @@ var useAccount = () => {
|
|
|
251
248
|
const connect = useCallback(() => __async(void 0, null, function* () {
|
|
252
249
|
return onWalletConnect == null ? void 0 : onWalletConnect();
|
|
253
250
|
}), [account4]);
|
|
254
|
-
const disconnect =
|
|
251
|
+
const disconnect = () => __async(void 0, null, function* () {
|
|
255
252
|
return onWalletDisconnect == null ? void 0 : onWalletDisconnect();
|
|
256
|
-
})
|
|
253
|
+
});
|
|
257
254
|
return {
|
|
258
255
|
// account: state!,
|
|
259
256
|
account: account4,
|
|
@@ -337,21 +334,18 @@ function getAppState() {
|
|
|
337
334
|
|
|
338
335
|
// src/useAppState.ts
|
|
339
336
|
var useAppState = () => {
|
|
340
|
-
|
|
341
|
-
return
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
),
|
|
350
|
-
{
|
|
351
|
-
systemState: appState.systemState$.value,
|
|
352
|
-
exchangeState: appState.exchangeState$.value
|
|
337
|
+
getAppState();
|
|
338
|
+
return {};
|
|
339
|
+
};
|
|
340
|
+
var useEventEmitter = (channel) => {
|
|
341
|
+
return useConstant(() => {
|
|
342
|
+
let ee = SimpleDI.get("EE");
|
|
343
|
+
if (!ee) {
|
|
344
|
+
ee = new EventEmitter();
|
|
345
|
+
SimpleDI.registerByName("EE", ee);
|
|
353
346
|
}
|
|
354
|
-
|
|
347
|
+
return ee;
|
|
348
|
+
});
|
|
355
349
|
};
|
|
356
350
|
var DataSourceContext = createContext({});
|
|
357
351
|
var DataSourceProvider = (props) => {
|
|
@@ -381,6 +375,11 @@ var useWS = () => {
|
|
|
381
375
|
return __spreadProps(__spreadValues({}, result), { timestamp });
|
|
382
376
|
})
|
|
383
377
|
});
|
|
378
|
+
account4.on("change:status", (nextState) => {
|
|
379
|
+
if (nextState.status === AccountStatusEnum.EnableTrading && nextState.accountId) {
|
|
380
|
+
websocketClient.openPrivate(nextState.accountId);
|
|
381
|
+
}
|
|
382
|
+
});
|
|
384
383
|
SimpleDI.registerByName(WS_NAME, websocketClient);
|
|
385
384
|
}
|
|
386
385
|
return websocketClient;
|
|
@@ -460,8 +459,6 @@ var useMarkPrice = (symbol) => {
|
|
|
460
459
|
};
|
|
461
460
|
|
|
462
461
|
// src/orderly/useOrderbookStream.ts
|
|
463
|
-
compose(defaultTo(0), head, last, pathOr([], ["asks"]));
|
|
464
|
-
pathOr(0, ["bids", 0, 0]);
|
|
465
462
|
var paddingFn = (len) => Array(len).fill([Number.NaN, Number.NaN, Number.NaN]);
|
|
466
463
|
var asksSortFn = (a, b) => a[0] - b[0];
|
|
467
464
|
var bidsSortFn = (a, b) => b[0] - a[0];
|
|
@@ -538,6 +535,7 @@ var useOrderbookStream = (symbol, initial = { asks: [], bids: [] }, options) =>
|
|
|
538
535
|
});
|
|
539
536
|
const ws = useWS();
|
|
540
537
|
const ticker = useTickerStream(symbol);
|
|
538
|
+
const eventEmitter = useEventEmitter();
|
|
541
539
|
useEffect(() => {
|
|
542
540
|
ws.onceSubscribe(
|
|
543
541
|
{
|
|
@@ -586,6 +584,9 @@ var useOrderbookStream = (symbol, initial = { asks: [], bids: [] }, options) =>
|
|
|
586
584
|
subscription == null ? void 0 : subscription();
|
|
587
585
|
};
|
|
588
586
|
}, [symbol, requestData]);
|
|
587
|
+
const onItemClick = useCallback((item) => {
|
|
588
|
+
eventEmitter.emit("orderbook:item:click", item);
|
|
589
|
+
}, []);
|
|
589
590
|
const onDepthChange = useCallback((depth2) => {
|
|
590
591
|
console.log("Orderbook depth has changed:", depth2);
|
|
591
592
|
}, []);
|
|
@@ -603,7 +604,7 @@ var useOrderbookStream = (symbol, initial = { asks: [], bids: [] }, options) =>
|
|
|
603
604
|
}, [ticker, data]);
|
|
604
605
|
return [
|
|
605
606
|
__spreadProps(__spreadValues({}, data), { markPrice, middlePrice }),
|
|
606
|
-
{ onDepthChange, depth, isLoading }
|
|
607
|
+
{ onDepthChange, depth, isLoading, onItemClick }
|
|
607
608
|
];
|
|
608
609
|
};
|
|
609
610
|
|
|
@@ -715,7 +716,6 @@ function priceInputHandle(inputs) {
|
|
|
715
716
|
}
|
|
716
717
|
const price = new Decimal(value);
|
|
717
718
|
const priceDP = price.dp();
|
|
718
|
-
console.log("priceInputHandle", priceDP, config.quoteDP);
|
|
719
719
|
if (priceDP > config.quoteDP) {
|
|
720
720
|
values.order_price = price.toDecimalPlaces(config.quoteDP).toString();
|
|
721
721
|
}
|
|
@@ -866,7 +866,11 @@ var usePositionStream = (symbol, options) => {
|
|
|
866
866
|
const symbolInfo = useSymbolsInfo();
|
|
867
867
|
const { data: accountInfo } = usePrivateQuery("/v1/client/info");
|
|
868
868
|
const fundingRates = useFundingRates();
|
|
869
|
-
const { data, error } = usePrivateQuery(`/v1/positions`, __spreadProps(__spreadValues({
|
|
869
|
+
const { data, error } = usePrivateQuery(`/v1/positions`, __spreadProps(__spreadValues({
|
|
870
|
+
// revalidateOnFocus: false,
|
|
871
|
+
// revalidateOnReconnect: false,
|
|
872
|
+
dedupingInterval: 5e3
|
|
873
|
+
}, options), {
|
|
870
874
|
formatter: (data2) => data2,
|
|
871
875
|
onError: (err) => {
|
|
872
876
|
console.log("usePositionStream error", err);
|
|
@@ -1125,7 +1129,7 @@ var BaseOrderCreator = class {
|
|
|
1125
1129
|
// symbol: data.symbol,
|
|
1126
1130
|
order_type: data.order_type === OrderType.LIMIT ? !!data.order_type_ext ? data.order_type_ext : data.order_type : data.order_type,
|
|
1127
1131
|
side: data.side,
|
|
1128
|
-
|
|
1132
|
+
reduce_only: data.reduce_only,
|
|
1129
1133
|
order_quantity: data.order_quantity
|
|
1130
1134
|
};
|
|
1131
1135
|
if (data.visible_quantity === 0) {
|
|
@@ -1143,32 +1147,40 @@ var BaseOrderCreator = class {
|
|
|
1143
1147
|
message: "quantity is required"
|
|
1144
1148
|
};
|
|
1145
1149
|
} else {
|
|
1146
|
-
const {
|
|
1150
|
+
const { base_min, quote_dp, base_dp } = configs.symbol;
|
|
1147
1151
|
const qty = new Decimal(order_quantity);
|
|
1148
1152
|
if (qty.lt(base_min)) {
|
|
1149
1153
|
errors.order_quantity = {
|
|
1150
1154
|
type: "min",
|
|
1151
|
-
message: `quantity must be greater than ${base_min
|
|
1155
|
+
message: `quantity must be greater than ${new Decimal(base_min).todp(
|
|
1156
|
+
base_dp
|
|
1157
|
+
)}`
|
|
1152
1158
|
};
|
|
1153
1159
|
} else if (qty.gt(maxQty)) {
|
|
1154
1160
|
errors.order_quantity = {
|
|
1155
1161
|
type: "max",
|
|
1156
|
-
message: `quantity must be less than ${maxQty
|
|
1162
|
+
message: `quantity must be less than ${new Decimal(maxQty).todp(
|
|
1163
|
+
base_dp
|
|
1164
|
+
)}`
|
|
1157
1165
|
};
|
|
1158
1166
|
}
|
|
1159
1167
|
}
|
|
1160
1168
|
if (!!total) {
|
|
1161
|
-
const { quote_max, quote_min } = configs.symbol;
|
|
1169
|
+
const { quote_max, quote_min, quote_dp } = configs.symbol;
|
|
1162
1170
|
const totalNumber = new Decimal(total);
|
|
1163
1171
|
if (totalNumber.lt(quote_min)) {
|
|
1164
1172
|
errors.total = {
|
|
1165
1173
|
type: "min",
|
|
1166
|
-
message: `Quantity should be greater or equal than ${
|
|
1174
|
+
message: `Quantity should be greater or equal than ${new Decimal(
|
|
1175
|
+
quote_min
|
|
1176
|
+
).todp(quote_dp)}`
|
|
1167
1177
|
};
|
|
1168
1178
|
} else if (totalNumber.gt(quote_max)) {
|
|
1169
1179
|
errors.total = {
|
|
1170
1180
|
type: "max",
|
|
1171
|
-
message: `Quantity should be less or equal than ${
|
|
1181
|
+
message: `Quantity should be less or equal than ${new Decimal(
|
|
1182
|
+
quote_max
|
|
1183
|
+
).todp(quote_dp)}`
|
|
1172
1184
|
};
|
|
1173
1185
|
}
|
|
1174
1186
|
}
|
|
@@ -1429,6 +1441,16 @@ var useMarketsStream = () => {
|
|
|
1429
1441
|
}, [futures, tickers]);
|
|
1430
1442
|
return { data: value };
|
|
1431
1443
|
};
|
|
1444
|
+
var useLeverage = () => {
|
|
1445
|
+
const { data, mutate: mutate2 } = usePrivateQuery("/v1/client/info");
|
|
1446
|
+
const [update] = useMutation("/v1/client/leverage");
|
|
1447
|
+
const updateLeverage = useCallback((data2) => {
|
|
1448
|
+
return update(data2).then((res) => {
|
|
1449
|
+
return mutate2();
|
|
1450
|
+
});
|
|
1451
|
+
}, []);
|
|
1452
|
+
return [prop("max_leverage", data), { update: updateLeverage }];
|
|
1453
|
+
};
|
|
1432
1454
|
var useFundingRate = (symbol) => {
|
|
1433
1455
|
if (!symbol) {
|
|
1434
1456
|
throw new Error("useFuturesForSymbol requires a symbol");
|
|
@@ -1549,12 +1571,6 @@ var useOrderStream = ({
|
|
|
1549
1571
|
}, []);
|
|
1550
1572
|
return [
|
|
1551
1573
|
orders,
|
|
1552
|
-
// {
|
|
1553
|
-
// ...res,
|
|
1554
|
-
// data: res.data?.reduce((acc, cur) => {
|
|
1555
|
-
// return [...acc, ...cur];
|
|
1556
|
-
// }, []),
|
|
1557
|
-
// },
|
|
1558
1574
|
{
|
|
1559
1575
|
cancelAllOrders,
|
|
1560
1576
|
updateOrder,
|
|
@@ -1563,8 +1579,8 @@ var useOrderStream = ({
|
|
|
1563
1579
|
];
|
|
1564
1580
|
};
|
|
1565
1581
|
|
|
1566
|
-
// src/orderly/
|
|
1567
|
-
var
|
|
1582
|
+
// src/orderly/useMarketTradeStream.ts
|
|
1583
|
+
var useMarketTradeStream = (symbol) => {
|
|
1568
1584
|
if (!symbol) {
|
|
1569
1585
|
throw new Error("useTradeStream: symbol is required");
|
|
1570
1586
|
}
|
|
@@ -1573,6 +1589,12 @@ var useTradeStream = (symbol) => {
|
|
|
1573
1589
|
);
|
|
1574
1590
|
return { data, isLoading };
|
|
1575
1591
|
};
|
|
1592
|
+
|
|
1593
|
+
// src/orderly/useTrades.tsx
|
|
1594
|
+
var useTradeStream = () => {
|
|
1595
|
+
const { data, isLoading } = usePrivateQuery("/v1/trades");
|
|
1596
|
+
return [data, { isLoading }];
|
|
1597
|
+
};
|
|
1576
1598
|
var useMarginRatio = () => {
|
|
1577
1599
|
const [{ rows }] = usePositionStream();
|
|
1578
1600
|
const { data: markPrices } = useMarkPricesStream();
|
|
@@ -1633,6 +1655,58 @@ var useChains = (networkId, options) => {
|
|
|
1633
1655
|
);
|
|
1634
1656
|
return [chains, { findByChainId }];
|
|
1635
1657
|
};
|
|
1658
|
+
var useBalance = () => {
|
|
1659
|
+
const ws = useWS();
|
|
1660
|
+
const { data } = useSWRSubscription("balance", (_, { next }) => {
|
|
1661
|
+
const unsubscribe = ws.privateSubscribe("balance", {
|
|
1662
|
+
onMessage: (data2) => {
|
|
1663
|
+
console.log(data2);
|
|
1664
|
+
}
|
|
1665
|
+
});
|
|
1666
|
+
return () => unsubscribe();
|
|
1667
|
+
});
|
|
1668
|
+
return data;
|
|
1669
|
+
};
|
|
1670
|
+
var usePrivateDataObserver = () => {
|
|
1671
|
+
const ws = useWS();
|
|
1672
|
+
const { mutate: mutate2 } = useSWRConfig();
|
|
1673
|
+
useEffect(() => {
|
|
1674
|
+
console.log("subscribe: executionreport");
|
|
1675
|
+
const unsubscribe = ws.privateSubscribe("executionreport", {
|
|
1676
|
+
onMessage: (data) => {
|
|
1677
|
+
console.info("refresh orders");
|
|
1678
|
+
mutate2("/v1/orders");
|
|
1679
|
+
}
|
|
1680
|
+
});
|
|
1681
|
+
return () => unsubscribe == null ? void 0 : unsubscribe();
|
|
1682
|
+
}, []);
|
|
1683
|
+
useEffect(() => {
|
|
1684
|
+
console.log("subscribe: position");
|
|
1685
|
+
const unsubscribe = ws.privateSubscribe("position", {
|
|
1686
|
+
onMessage: (data) => {
|
|
1687
|
+
const { positions: nextPostions } = data;
|
|
1688
|
+
console.info("refresh positions", nextPostions);
|
|
1689
|
+
mutate2("/v1/positions");
|
|
1690
|
+
}
|
|
1691
|
+
});
|
|
1692
|
+
return () => {
|
|
1693
|
+
console.log("unsubscribe: private subscription position");
|
|
1694
|
+
unsubscribe == null ? void 0 : unsubscribe();
|
|
1695
|
+
};
|
|
1696
|
+
}, []);
|
|
1697
|
+
};
|
|
1698
|
+
var useExecutionReport = () => {
|
|
1699
|
+
const ws = useWS();
|
|
1700
|
+
const { data } = useSWRSubscription("executionreport", (_, { next }) => {
|
|
1701
|
+
const unsubscribe = ws.privateSubscribe("executionreport", {
|
|
1702
|
+
onMessage: (data2) => {
|
|
1703
|
+
console.log(data2);
|
|
1704
|
+
}
|
|
1705
|
+
});
|
|
1706
|
+
return () => unsubscribe();
|
|
1707
|
+
});
|
|
1708
|
+
return data;
|
|
1709
|
+
};
|
|
1636
1710
|
|
|
1637
1711
|
// src/apis/index.ts
|
|
1638
1712
|
var apis_exports = {};
|
|
@@ -1668,6 +1742,6 @@ var useFundingRate2 = (symbol) => {
|
|
|
1668
1742
|
return useQuery(`/v1/public/funding_rate`);
|
|
1669
1743
|
};
|
|
1670
1744
|
|
|
1671
|
-
export { DataSourceProvider, OrderStatus, OrderlyContext, OrderlyProvider, apis_exports as apis, useAccount, useAccountInfo, useAppState, useChains, useCollateral, useFetures, useFundingRate, useMarginRatio, useMarkPrice, useMarkPricesStream, useMarketsStream, useMaxQty, useMutation, useOrderEntry, useOrderStream, useOrderbookStream, usePositionStream, usePrivateObserve, usePrivateQuery, useQuery, useSymbolsInfo, useTickerStream, useTokenInfo, useTopicObserve, useTradeStream, useTradingView, useWS };
|
|
1745
|
+
export { DataSourceProvider, OrderStatus, OrderlyContext, OrderlyProvider, apis_exports as apis, useAccount, useAccountInfo, useAppState, useBalance, useChains, useCollateral, useEventEmitter, useExecutionReport, useFetures, useFundingRate, useLeverage, useMarginRatio, useMarkPrice, useMarkPricesStream, useMarketTradeStream, useMarketsStream, useMaxQty, useMutation, useOrderEntry, useOrderStream, useOrderbookStream, usePositionStream, usePrivateDataObserver, usePrivateObserve, usePrivateQuery, useQuery, useSymbolsInfo, useTickerStream, useTokenInfo, useTopicObserve, useTradeStream, useTradingView, useWS };
|
|
1672
1746
|
//# sourceMappingURL=out.js.map
|
|
1673
1747
|
//# sourceMappingURL=index.mjs.map
|