@orderly.network/hooks 1.1.5-rc.0 → 1.1.6
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/dataProvider.d.ts +4 -3
- package/esm/dataProvider.d.ts.map +1 -1
- package/esm/dataProvider.js +5 -0
- package/esm/index.d.ts +4 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -0
- package/esm/orderly/useMarketsStream.d.ts.map +1 -1
- package/esm/orderly/useMarketsStream.js +1 -0
- package/esm/orderly/useMaxQty.d.ts.map +1 -1
- package/esm/orderly/useMaxQty.js +14 -27
- package/esm/orderly/useOrderEntry.js +19 -6
- package/esm/orderly/useOrderStream.d.ts +10 -1
- package/esm/orderly/useOrderStream.d.ts.map +1 -1
- package/esm/orderly/useOrderStream.js +29 -26
- package/esm/orderly/useOrderbookStream.d.ts.map +1 -1
- package/esm/orderly/useOrderbookStream.js +20 -13
- package/esm/orderly/usePositionStream.js +1 -1
- package/esm/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/esm/orderly/usePrivateDataObserver.js +62 -42
- package/esm/services/painter/backgroundPaint.d.ts +4 -4
- package/esm/services/painter/basePaint.d.ts +17 -8
- package/esm/services/painter/basePaint.d.ts.map +1 -1
- package/esm/services/painter/dataPaint.d.ts +4 -3
- package/esm/services/painter/dataPaint.d.ts.map +1 -1
- package/esm/services/painter/dataPaint.js +72 -35
- package/esm/services/painter/layout.config.d.ts +2 -2
- package/esm/services/painter/layout.config.d.ts.map +1 -1
- package/esm/services/painter/layout.config.js +13 -8
- package/esm/services/painter/painter.d.ts +6 -4
- package/esm/services/painter/painter.d.ts.map +1 -1
- package/esm/services/painter/painter.js +4 -4
- package/esm/unuse/apiPrefixMiddleware.d.ts.map +1 -1
- package/esm/unuse/apiPrefixMiddleware.js +0 -2
- package/esm/useLocalStorage.d.ts.map +1 -1
- package/esm/useLocalStorage.js +2 -4
- package/esm/useMutation.d.ts +4 -1
- package/esm/useMutation.d.ts.map +1 -1
- package/esm/useMutation.js +29 -2
- package/esm/usePoster.d.ts +30 -4
- package/esm/usePoster.d.ts.map +1 -1
- package/esm/usePoster.js +95 -24
- package/esm/utils/dev.d.ts +2 -0
- package/esm/utils/dev.d.ts.map +1 -0
- package/esm/utils/dev.js +18 -0
- package/esm/utils/swr.d.ts +10 -0
- package/esm/utils/swr.d.ts.map +1 -0
- package/esm/utils/swr.js +195 -0
- package/esm/version.d.ts +1 -1
- package/esm/version.d.ts.map +1 -1
- package/esm/version.js +2 -2
- package/lib/dataProvider.d.ts +4 -3
- package/lib/dataProvider.d.ts.map +1 -1
- package/lib/dataProvider.js +5 -0
- package/lib/index.d.ts +4 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -1
- package/lib/orderly/useMarketsStream.d.ts.map +1 -1
- package/lib/orderly/useMarketsStream.js +1 -0
- package/lib/orderly/useMaxQty.d.ts.map +1 -1
- package/lib/orderly/useMaxQty.js +14 -27
- package/lib/orderly/useOrderEntry.js +16 -3
- package/lib/orderly/useOrderStream.d.ts +10 -1
- package/lib/orderly/useOrderStream.d.ts.map +1 -1
- package/lib/orderly/useOrderStream.js +29 -26
- package/lib/orderly/useOrderbookStream.d.ts.map +1 -1
- package/lib/orderly/useOrderbookStream.js +20 -13
- package/lib/orderly/usePositionStream.js +1 -1
- package/lib/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/lib/orderly/usePrivateDataObserver.js +61 -41
- package/lib/services/painter/backgroundPaint.d.ts +4 -4
- package/lib/services/painter/basePaint.d.ts +17 -8
- package/lib/services/painter/basePaint.d.ts.map +1 -1
- package/lib/services/painter/dataPaint.d.ts +4 -3
- package/lib/services/painter/dataPaint.d.ts.map +1 -1
- package/lib/services/painter/dataPaint.js +72 -35
- package/lib/services/painter/layout.config.d.ts +2 -2
- package/lib/services/painter/layout.config.d.ts.map +1 -1
- package/lib/services/painter/layout.config.js +14 -9
- package/lib/services/painter/painter.d.ts +6 -4
- package/lib/services/painter/painter.d.ts.map +1 -1
- package/lib/services/painter/painter.js +4 -4
- package/lib/unuse/apiPrefixMiddleware.d.ts.map +1 -1
- package/lib/unuse/apiPrefixMiddleware.js +0 -2
- package/lib/useLocalStorage.d.ts.map +1 -1
- package/lib/useLocalStorage.js +2 -4
- package/lib/useMutation.d.ts +4 -1
- package/lib/useMutation.d.ts.map +1 -1
- package/lib/useMutation.js +29 -2
- package/lib/usePoster.d.ts +30 -4
- package/lib/usePoster.d.ts.map +1 -1
- package/lib/usePoster.js +93 -22
- package/lib/utils/dev.d.ts +2 -0
- package/lib/utils/dev.d.ts.map +1 -0
- package/lib/utils/dev.js +20 -0
- package/lib/utils/swr.d.ts +10 -0
- package/lib/utils/swr.d.ts.map +1 -0
- package/lib/utils/swr.js +200 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.d.ts.map +1 -1
- package/lib/version.js +2 -2
- package/package.json +8 -8
package/lib/usePoster.js
CHANGED
|
@@ -5,52 +5,123 @@ const react_1 = require("react");
|
|
|
5
5
|
const ramda_1 = require("ramda");
|
|
6
6
|
const painter_1 = require("./services/painter/painter");
|
|
7
7
|
const layout_config_1 = require("./services/painter/layout.config");
|
|
8
|
+
const types_1 = require("@orderly.network/types");
|
|
8
9
|
/**
|
|
9
10
|
* Generates a poster image based on position information. You can set the size, background color, font color, font size, and content position of the poster.
|
|
10
|
-
* @
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* const { ref, toDataURL, toBlob, download, copy } = usePoster({
|
|
14
|
+
* backgroundColor: "#0b8c70",
|
|
15
|
+
* backgroundImg: "/images/poster_bg.png",
|
|
16
|
+
* color: "rgba(255, 255, 255, 0.98)",
|
|
17
|
+
* profitColor: "rgb(0,181,159)",
|
|
18
|
+
* ...
|
|
19
|
+
* });
|
|
11
20
|
*/
|
|
12
21
|
const usePoster = (
|
|
13
|
-
/**
|
|
14
|
-
* The canvas element to draw the poster on
|
|
15
|
-
*/
|
|
16
|
-
trage,
|
|
17
22
|
/**
|
|
18
23
|
* The options to draw the poster
|
|
19
24
|
*/
|
|
20
|
-
options) => {
|
|
25
|
+
data, options) => {
|
|
21
26
|
const [error, setError] = (0, react_1.useState)(null);
|
|
27
|
+
const [canCopy, setCanCopy] = (0, react_1.useState)(() => typeof navigator.clipboard !== "undefined");
|
|
22
28
|
const painterRef = (0, react_1.useRef)(null);
|
|
29
|
+
const [target, setTarget] = (0, react_1.useState)(null);
|
|
23
30
|
(0, react_1.useEffect)(() => {
|
|
24
31
|
// Create the painter instance
|
|
25
|
-
if (
|
|
26
|
-
painterRef.current = new painter_1.PosterPainter(
|
|
27
|
-
|
|
32
|
+
if (target && !painterRef.current) {
|
|
33
|
+
painterRef.current = new painter_1.PosterPainter(target, {
|
|
34
|
+
ratio: 1,
|
|
35
|
+
...options,
|
|
36
|
+
});
|
|
37
|
+
painterRef.current.draw((0, ramda_1.mergeDeepRight)({ layout: layout_config_1.DefaultLayoutConfig, fontFamily: "Manrope" }, data));
|
|
28
38
|
}
|
|
29
|
-
}, [
|
|
39
|
+
}, [target]);
|
|
30
40
|
(0, react_1.useEffect)(() => {
|
|
31
41
|
if (painterRef.current) {
|
|
32
|
-
painterRef.current.draw((0, ramda_1.mergeDeepRight)({ layout: layout_config_1.
|
|
42
|
+
painterRef.current.draw((0, ramda_1.mergeDeepRight)({ layout: layout_config_1.DefaultLayoutConfig, fontFamily: "Manrope" }, data));
|
|
33
43
|
}
|
|
34
|
-
}, [
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
type = "image/png",
|
|
44
|
+
}, [data]);
|
|
45
|
+
const toDataURL = (type, encoderOptions) => {
|
|
46
|
+
if (!target) {
|
|
47
|
+
throw new types_1.SDKError("The ref must be a canvas element");
|
|
48
|
+
}
|
|
49
|
+
return target.toDataURL(type, encoderOptions);
|
|
50
|
+
};
|
|
42
51
|
/**
|
|
43
|
-
*
|
|
52
|
+
* Converts the poster to a blob
|
|
44
53
|
*/
|
|
45
|
-
|
|
46
|
-
return
|
|
54
|
+
const toBlob = (0, react_1.useCallback)((type, encoderOptions) => {
|
|
55
|
+
return new Promise((resolve) => {
|
|
56
|
+
if (!target) {
|
|
57
|
+
resolve(null);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
target.toBlob(resolve, type, encoderOptions);
|
|
61
|
+
});
|
|
62
|
+
}, [target]);
|
|
63
|
+
const ref = (ref) => {
|
|
64
|
+
if (!ref)
|
|
65
|
+
return;
|
|
66
|
+
if (ref.tagName.toUpperCase() !== "CANVAS") {
|
|
67
|
+
// throw new Error("The ref must be a canvas element");
|
|
68
|
+
setError(new types_1.SDKError("The ref must be a canvas element"));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
setTarget(ref);
|
|
47
72
|
};
|
|
73
|
+
const download = (0, react_1.useCallback)((filename, type = "image/png", encoderOptions) => {
|
|
74
|
+
if (!target) {
|
|
75
|
+
throw new types_1.SDKError("The ref must be a canvas element");
|
|
76
|
+
}
|
|
77
|
+
const img = new Image();
|
|
78
|
+
img.src = target.toDataURL(type, encoderOptions);
|
|
79
|
+
const link = document.createElement("a");
|
|
80
|
+
link.href = img.src;
|
|
81
|
+
link.download = filename;
|
|
82
|
+
link.click();
|
|
83
|
+
}, [target]);
|
|
84
|
+
const copy = (0, react_1.useCallback)(() => {
|
|
85
|
+
if (!target) {
|
|
86
|
+
throw new types_1.SDKError("The ref must be a canvas element");
|
|
87
|
+
}
|
|
88
|
+
// copy image to clipboard
|
|
89
|
+
return new Promise((resolve, reject) => {
|
|
90
|
+
if (!navigator.clipboard) {
|
|
91
|
+
reject(new types_1.SDKError("Clipboard API is not supported"));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
target.toBlob((blob) => {
|
|
95
|
+
if (!blob) {
|
|
96
|
+
reject(new types_1.SDKError("Failed to create blob"));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
return navigator.clipboard
|
|
100
|
+
.write([new ClipboardItem({ [blob.type]: blob })])
|
|
101
|
+
.then(resolve, reject);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}, [target]);
|
|
48
105
|
return {
|
|
49
106
|
error,
|
|
107
|
+
ref,
|
|
50
108
|
/**
|
|
51
109
|
* Converts the poster to a data URL
|
|
52
110
|
*/
|
|
53
111
|
toDataURL,
|
|
112
|
+
/**
|
|
113
|
+
* Converts the poster to a blob
|
|
114
|
+
*/
|
|
115
|
+
toBlob,
|
|
116
|
+
/**
|
|
117
|
+
* Downloads the poster as an image
|
|
118
|
+
*/
|
|
119
|
+
download,
|
|
120
|
+
/**
|
|
121
|
+
* Browser if supports copy image to clipboard
|
|
122
|
+
*/
|
|
123
|
+
canCopy,
|
|
124
|
+
copy,
|
|
54
125
|
};
|
|
55
126
|
};
|
|
56
127
|
exports.usePoster = usePoster;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/utils/dev.ts"],"names":[],"mappings":""}
|
package/lib/utils/dev.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@orderly.network/core");
|
|
4
|
+
const __ORDERLY__DEBUGER_TAG = "__ORDERLY__DEBUGER";
|
|
5
|
+
function debugPrint(msg, tag) {
|
|
6
|
+
tag = `${__ORDERLY__DEBUGER_TAG}:${tag} `;
|
|
7
|
+
if (!window.__ORDERLY__DEBUGER) {
|
|
8
|
+
console.log("${tag}${msg}");
|
|
9
|
+
// console.info(
|
|
10
|
+
// "You can add `DebugPrinter` component to see the data in your UI"
|
|
11
|
+
// );
|
|
12
|
+
}
|
|
13
|
+
let ee = core_1.SimpleDI.get("EE");
|
|
14
|
+
if (ee && msg) {
|
|
15
|
+
ee.emit("print:data", msg);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (typeof window !== "undefined") {
|
|
19
|
+
window.debugPrint = debugPrint;
|
|
20
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { API } from "@orderly.network/types";
|
|
2
|
+
import { WSMessage } from "@orderly.network/types";
|
|
3
|
+
export declare const generateKeyFun: (args: {
|
|
4
|
+
status?: string;
|
|
5
|
+
symbol?: string;
|
|
6
|
+
side?: string;
|
|
7
|
+
size?: number;
|
|
8
|
+
}) => (pageIndex: number, previousPageData: any) => string | null;
|
|
9
|
+
export declare const updateOrdersHandler: (key: string, updatedOrder: WSMessage.AlgoOrder | WSMessage.Order, orders?: API.OrderResponse[]) => unknown[] | undefined;
|
|
10
|
+
//# sourceMappingURL=swr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swr.d.ts","sourceRoot":"","sources":["../../src/utils/swr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD,eAAO,MAAM,cAAc,SAClB;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,iBAC7D,MAAM,oBAAoB,GAAG,KAAG,MAAM,GAAG,IAyBpD,CAAC;AAEJ,eAAO,MAAM,mBAAmB,QACzB,MAAM,gBACG,UAAU,SAAS,GAAG,UAAU,KAAK,WAC1C,IAAI,aAAa,EAAE,0BA6H7B,CAAC"}
|
package/lib/utils/swr.js
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateOrdersHandler = exports.generateKeyFun = void 0;
|
|
4
|
+
const utils_1 = require("@orderly.network/utils");
|
|
5
|
+
const ramda_1 = require("ramda");
|
|
6
|
+
const generateKeyFun = (args) => (pageIndex, previousPageData) => {
|
|
7
|
+
// reached the end
|
|
8
|
+
if (previousPageData && !previousPageData.rows?.length)
|
|
9
|
+
return null;
|
|
10
|
+
const { status, symbol, side, size = 100 } = args;
|
|
11
|
+
const search = new URLSearchParams([
|
|
12
|
+
["size", size.toString()],
|
|
13
|
+
["page", `${pageIndex + 1}`],
|
|
14
|
+
["source_type", "ALL"],
|
|
15
|
+
]);
|
|
16
|
+
if (status) {
|
|
17
|
+
search.set(`status`, status);
|
|
18
|
+
}
|
|
19
|
+
if (symbol) {
|
|
20
|
+
search.set(`symbol`, symbol);
|
|
21
|
+
}
|
|
22
|
+
if (side) {
|
|
23
|
+
search.set(`side`, side);
|
|
24
|
+
}
|
|
25
|
+
return `/v1/orders?${search.toString()}`;
|
|
26
|
+
};
|
|
27
|
+
exports.generateKeyFun = generateKeyFun;
|
|
28
|
+
const updateOrdersHandler = (key, updatedOrder, orders) => {
|
|
29
|
+
if (!orders) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// console.log(key);
|
|
33
|
+
const isAlgoOrder = "algoOrderId" in updatedOrder;
|
|
34
|
+
const underscoreOrder = object2underscore(updatedOrder);
|
|
35
|
+
let formattedOrder = {
|
|
36
|
+
...underscoreOrder,
|
|
37
|
+
updated_time: updatedOrder.timestamp,
|
|
38
|
+
type: updatedOrder.type.replace("_ORDER", ""),
|
|
39
|
+
//@ts-ignore
|
|
40
|
+
// visible_quantity: updatedOrder.visibleQuantity || updatedOrder.visible,
|
|
41
|
+
};
|
|
42
|
+
if (typeof formattedOrder.visible_quantity === "undefined") {
|
|
43
|
+
// check visible field;
|
|
44
|
+
// @ts-ignore
|
|
45
|
+
formattedOrder.visible_quantity = updatedOrder.visible;
|
|
46
|
+
}
|
|
47
|
+
// console.log(formattedOrder, updatedOrder);
|
|
48
|
+
const hasCreateTime = "created_time" in formattedOrder;
|
|
49
|
+
if (!hasCreateTime) {
|
|
50
|
+
formattedOrder["created_time"] = updatedOrder.timestamp;
|
|
51
|
+
}
|
|
52
|
+
if (isAlgoOrder) {
|
|
53
|
+
if (typeof updatedOrder.triggerTradePrice !== "undefined") {
|
|
54
|
+
formattedOrder.trigger_price = updatedOrder.triggerTradePrice;
|
|
55
|
+
}
|
|
56
|
+
if (formattedOrder.type === "MARKET") {
|
|
57
|
+
const { price, ...newObj } = formattedOrder;
|
|
58
|
+
// @ts-ignore
|
|
59
|
+
formattedOrder = newObj;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// formattedOrder.created_time = updatedOrder.timestamp;
|
|
64
|
+
}
|
|
65
|
+
// const index = lensIndex(0);
|
|
66
|
+
const orderId = updatedOrder.orderId ||
|
|
67
|
+
updatedOrder.algoOrderId;
|
|
68
|
+
const isExisting = orderIsExisting(orders, orderId);
|
|
69
|
+
const status = updatedOrder.status ||
|
|
70
|
+
updatedOrder.rootAlgoStatus;
|
|
71
|
+
switch (status) {
|
|
72
|
+
case "NEW": {
|
|
73
|
+
// chceck if the order is already in the list
|
|
74
|
+
if (isExisting ||
|
|
75
|
+
key.startsWith("orders:CANCELLED") ||
|
|
76
|
+
key.startsWith("orders:FILLED") ||
|
|
77
|
+
key.startsWith("orders:REJECTED")) {
|
|
78
|
+
return orders;
|
|
79
|
+
}
|
|
80
|
+
return insertOrders(orders, formattedOrder);
|
|
81
|
+
}
|
|
82
|
+
case "CANCELLED": {
|
|
83
|
+
if (key.startsWith("orders:FILLED") ||
|
|
84
|
+
key.startsWith("orders:REJECTED")) {
|
|
85
|
+
return orders;
|
|
86
|
+
}
|
|
87
|
+
if (key.startsWith("orders:NEW") || key.startsWith("orders:INCOMPLETE")) {
|
|
88
|
+
return removeOrderIfExisting(orders, orderId);
|
|
89
|
+
}
|
|
90
|
+
if (key.startsWith("orders:CANCELLED")) {
|
|
91
|
+
return insertOrders(orders, formattedOrder);
|
|
92
|
+
}
|
|
93
|
+
return updateOrders(orders, formattedOrder);
|
|
94
|
+
}
|
|
95
|
+
case "REPLACED":
|
|
96
|
+
return updateOrders(orders, formattedOrder);
|
|
97
|
+
case "FILLED": {
|
|
98
|
+
if (isExisting) {
|
|
99
|
+
// for new list, remove the order if it exists
|
|
100
|
+
if (key.startsWith("orders:INCOMPLETE") ||
|
|
101
|
+
key.startsWith("orders:NEW")) {
|
|
102
|
+
// if fullfilled, remove from the list
|
|
103
|
+
if (updatedOrder.totalExecutedQuantity === updatedOrder.quantity) {
|
|
104
|
+
return removeOrderIfExisting(orders, orderId);
|
|
105
|
+
}
|
|
106
|
+
// update
|
|
107
|
+
return updateOrders(orders, formattedOrder);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// for filled list, insert the order if it doesn't exist
|
|
112
|
+
if (key.startsWith("orders:CANCELLED") ||
|
|
113
|
+
key.startsWith("orders:INCOMPLETE") ||
|
|
114
|
+
key.startsWith("orders:NEW")) {
|
|
115
|
+
return orders;
|
|
116
|
+
}
|
|
117
|
+
// if filled/history list:
|
|
118
|
+
return insertOrders(orders, formattedOrder);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
default:
|
|
122
|
+
return orders;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
exports.updateOrdersHandler = updateOrdersHandler;
|
|
126
|
+
function updateOrders(orders, formattedOrder) {
|
|
127
|
+
return orders.map((item) => {
|
|
128
|
+
return {
|
|
129
|
+
// ...item,
|
|
130
|
+
meta: item.meta,
|
|
131
|
+
rows: item.rows.map((order) => {
|
|
132
|
+
const isAlgoOrder = "algo_order_id" in order;
|
|
133
|
+
if (isAlgoOrder &&
|
|
134
|
+
formattedOrder?.algo_order_id === order?.algo_order_id) {
|
|
135
|
+
return { ...order, ...formattedOrder };
|
|
136
|
+
}
|
|
137
|
+
if (!isAlgoOrder && formattedOrder?.order_id === order?.order_id) {
|
|
138
|
+
return { ...order, ...formattedOrder };
|
|
139
|
+
}
|
|
140
|
+
return order;
|
|
141
|
+
}),
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
function insertOrders(orders, formattedOrder) {
|
|
146
|
+
const index = (0, ramda_1.lensIndex)(0);
|
|
147
|
+
return (0, ramda_1.over)(index, (item) => ({
|
|
148
|
+
meta: {
|
|
149
|
+
...item.meta,
|
|
150
|
+
total: item.meta.total + 1,
|
|
151
|
+
},
|
|
152
|
+
rows: [formattedOrder, ...item.rows],
|
|
153
|
+
}), orders);
|
|
154
|
+
}
|
|
155
|
+
function removeOrderIfExisting(orders, orderId) {
|
|
156
|
+
const isExisting = orderIsExisting(orders, orderId);
|
|
157
|
+
if (!isExisting)
|
|
158
|
+
return orders;
|
|
159
|
+
return orders.map((item) => {
|
|
160
|
+
return {
|
|
161
|
+
meta: { ...item.meta, total: item.meta.total - 1 },
|
|
162
|
+
rows: item.rows.filter((order) => {
|
|
163
|
+
const isAlgoOrder = "algo_order_id" in order;
|
|
164
|
+
return isAlgoOrder
|
|
165
|
+
? order.algo_order_id !== orderId
|
|
166
|
+
: order.order_id !== orderId;
|
|
167
|
+
}),
|
|
168
|
+
};
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
function findOrderIndex(orders, orderId) {
|
|
172
|
+
let index = 0;
|
|
173
|
+
let index2;
|
|
174
|
+
for (let idx = 0; idx < orders.length; idx++) {
|
|
175
|
+
index = idx;
|
|
176
|
+
const item = orders[idx];
|
|
177
|
+
for (let idx2 = 0; idx2 < item.rows.length; idx2++) {
|
|
178
|
+
const element = item.rows[idx2];
|
|
179
|
+
if (element.algo_order_id === orderId ||
|
|
180
|
+
element.order_id === orderId) {
|
|
181
|
+
index2 = idx2;
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (typeof index2 === "undefined") {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
return [index, index2];
|
|
190
|
+
}
|
|
191
|
+
function orderIsExisting(orders, orderId) {
|
|
192
|
+
const index = findOrderIndex(orders, orderId);
|
|
193
|
+
return Array.isArray(index);
|
|
194
|
+
}
|
|
195
|
+
function object2underscore(obj) {
|
|
196
|
+
return Object.keys(obj).reduce((acc, key) => {
|
|
197
|
+
acc[(0, utils_1.camelCaseToUnderscoreCase)(key)] = obj[key];
|
|
198
|
+
return acc;
|
|
199
|
+
}, {});
|
|
200
|
+
}
|
package/lib/version.d.ts
CHANGED
package/lib/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,mBAAmB,CAAC,EAAE;YAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;SACzB,CAAC;KACL;CACJ;;AAMD,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,mBAAmB,CAAC,EAAE;YAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;SACzB,CAAC;KACL;CACJ;;AAMD,wBAAuB"}
|
package/lib/version.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
if (typeof window !== 'undefined') {
|
|
4
4
|
window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
|
|
5
|
-
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.1.
|
|
5
|
+
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.1.6";
|
|
6
6
|
}
|
|
7
7
|
;
|
|
8
|
-
exports.default = "1.1.
|
|
8
|
+
exports.default = "1.1.6";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orderly.network/hooks",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.6",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -20,25 +20,25 @@
|
|
|
20
20
|
"@types/jest": "^29.5.3",
|
|
21
21
|
"@types/ramda": "^0.29.3",
|
|
22
22
|
"@types/react": "^18.2.38",
|
|
23
|
-
"jest": "^29.6.1",
|
|
24
23
|
"react": "^18.2.0",
|
|
24
|
+
"jest": "^29.6.1",
|
|
25
25
|
"react-test-renderer": "^18.2.0",
|
|
26
26
|
"rimraf": "^5.0.5",
|
|
27
27
|
"tsup": "^7.1.0",
|
|
28
28
|
"typedoc": "^0.24.8",
|
|
29
29
|
"typescript": "^5.1.6",
|
|
30
|
-
"tsconfig": "0.1.
|
|
30
|
+
"tsconfig": "0.1.6"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"ramda": "^0.29.0",
|
|
34
34
|
"swr": "^2.2.4",
|
|
35
35
|
"use-constant": "^1.1.1",
|
|
36
36
|
"use-debounce": "^9.0.4",
|
|
37
|
-
"@orderly.network/core": "0.2.
|
|
38
|
-
"@orderly.network/net": "1.1.
|
|
39
|
-
"@orderly.network/
|
|
40
|
-
"@orderly.network/
|
|
41
|
-
"@orderly.network/types": "0.2.
|
|
37
|
+
"@orderly.network/core": "0.2.6",
|
|
38
|
+
"@orderly.network/net": "1.1.6",
|
|
39
|
+
"@orderly.network/utils": "0.1.6",
|
|
40
|
+
"@orderly.network/perp": "2.0.6",
|
|
41
|
+
"@orderly.network/types": "0.2.6"
|
|
42
42
|
},
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|