@orderly.network/hooks 2.1.2 → 2.1.3-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -29,7 +29,7 @@ declare global {
29
29
  };
30
30
  }
31
31
  }
32
- declare const _default: "2.1.2";
32
+ declare const _default: "2.1.3-alpha.0";
33
33
 
34
34
  type useQueryOptions<T> = SWRConfiguration & {
35
35
  formatter?: (data: any) => T;
package/dist/index.d.ts CHANGED
@@ -29,7 +29,7 @@ declare global {
29
29
  };
30
30
  }
31
31
  }
32
- declare const _default: "2.1.2";
32
+ declare const _default: "2.1.3-alpha.0";
33
33
 
34
34
  type useQueryOptions<T> = SWRConfiguration & {
35
35
  formatter?: (data: any) => T;
package/dist/index.js CHANGED
@@ -61,9 +61,9 @@ var __export = (target, all) => {
61
61
  // src/version.ts
62
62
  if (typeof window !== "undefined") {
63
63
  window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
64
- window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "2.1.2";
64
+ window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "2.1.3-alpha.0";
65
65
  }
66
- var version_default = "2.1.2";
66
+ var version_default = "2.1.3-alpha.0";
67
67
  var fetcher = (url, init2 = {}, queryOptions) => net.get(url, init2, queryOptions?.formatter);
68
68
  var OrderlyContext = React.createContext({
69
69
  // configStore: new MemoryConfigStore(),
@@ -1948,6 +1948,112 @@ var useCalculatorService = () => {
1948
1948
  });
1949
1949
  return calculatorService;
1950
1950
  };
1951
+
1952
+ // src/orderly/orderbook.service.ts
1953
+ var defaultRawOrderBook = {
1954
+ asks: [],
1955
+ bids: [],
1956
+ ts: 0
1957
+ };
1958
+ var OrderbookService = class _OrderbookService {
1959
+ constructor() {
1960
+ this.bufferedOrderBookUpdates = {};
1961
+ this.rawOrderBook = {};
1962
+ }
1963
+ static getInstance() {
1964
+ if (!this.instance) {
1965
+ this.instance = new _OrderbookService();
1966
+ }
1967
+ return this.instance;
1968
+ }
1969
+ sortBufferedOrderBookUpdates(symbol) {
1970
+ this.bufferedOrderBookUpdates[symbol]?.sort((a, b) => a.ts - b.ts);
1971
+ }
1972
+ applyUpdateToRawOrderBook(symbol, update) {
1973
+ const rawOrderBook = this.rawOrderBook[symbol];
1974
+ if (!rawOrderBook || rawOrderBook.ts > update.prevTs) {
1975
+ return;
1976
+ }
1977
+ const askMap = /* @__PURE__ */ new Map();
1978
+ const bidMap = /* @__PURE__ */ new Map();
1979
+ rawOrderBook.asks.forEach((ask) => askMap.set(ask[0], ask[1]));
1980
+ rawOrderBook.bids.forEach((bid) => bidMap.set(bid[0], bid[1]));
1981
+ update.asks.forEach((ask) => ask[1] === 0 ? askMap.delete(ask[0]) : askMap.set(ask[0], ask[1]));
1982
+ update.bids.forEach((bid) => bid[1] === 0 ? bidMap.delete(bid[0]) : bidMap.set(bid[0], bid[1]));
1983
+ rawOrderBook.asks = Array.from(askMap.entries()).sort((a, b) => a[0] - b[0]);
1984
+ rawOrderBook.bids = Array.from(bidMap.entries()).sort((a, b) => b[0] - a[0]);
1985
+ rawOrderBook.ts = update.ts;
1986
+ }
1987
+ applyBufferedUpdatesToRawOrderBooks(symbol) {
1988
+ this.bufferedOrderBookUpdates[symbol]?.forEach((update) => this.applyUpdateToRawOrderBook(symbol, update));
1989
+ }
1990
+ deleteBufferedOrderBookUpdates(symbol) {
1991
+ delete this.bufferedOrderBookUpdates[symbol];
1992
+ }
1993
+ commitOrderBook(symbol) {
1994
+ const rawOrderBook = this.rawOrderBook[symbol];
1995
+ if (!rawOrderBook) {
1996
+ return;
1997
+ }
1998
+ }
1999
+ pushUpdateToBuffer(symbol, update) {
2000
+ if (this.bufferedOrderBookUpdates[symbol] === void 0) {
2001
+ this.bufferedOrderBookUpdates[symbol] = [];
2002
+ }
2003
+ const buffer = this.bufferedOrderBookUpdates[symbol];
2004
+ if (buffer.length > 0) {
2005
+ const lastUpdate = buffer[buffer.length - 1];
2006
+ if (lastUpdate.ts !== update.prevTs) {
2007
+ this.bufferedOrderBookUpdates[symbol] = [];
2008
+ }
2009
+ }
2010
+ this.bufferedOrderBookUpdates[symbol].push(update);
2011
+ }
2012
+ isValidFullOrderBook(symbol, currentTs) {
2013
+ if ((this.bufferedOrderBookUpdates[symbol]?.length ?? 0) !== 0) {
2014
+ const earliestUpdates = this.bufferedOrderBookUpdates[symbol][0];
2015
+ return earliestUpdates.prevTs <= currentTs;
2016
+ }
2017
+ return true;
2018
+ }
2019
+ setFullOrderbook(symbol, rawOrderbook) {
2020
+ const { ts } = rawOrderbook;
2021
+ this.rawOrderBook[symbol] = rawOrderbook;
2022
+ this.sortBufferedOrderBookUpdates(symbol);
2023
+ if (this.isValidFullOrderBook(symbol, ts)) {
2024
+ this.applyBufferedUpdatesToRawOrderBooks(symbol);
2025
+ }
2026
+ }
2027
+ updateOrderbook(symbol, update, callback) {
2028
+ const { asks, bids, prevTs, ts } = update;
2029
+ const rawOrderBook = this.rawOrderBook[symbol];
2030
+ if (!rawOrderBook) {
2031
+ return;
2032
+ }
2033
+ const currentTs = rawOrderBook.ts;
2034
+ if (currentTs === 0) {
2035
+ this.pushUpdateToBuffer(symbol, { asks, bids, prevTs, ts });
2036
+ return;
2037
+ }
2038
+ if (prevTs !== currentTs) {
2039
+ this.pushUpdateToBuffer(symbol, { asks, bids, prevTs, ts });
2040
+ if (callback) {
2041
+ callback();
2042
+ }
2043
+ return;
2044
+ }
2045
+ this.applyUpdateToRawOrderBook(symbol, update);
2046
+ this.deleteBufferedOrderBookUpdates(symbol);
2047
+ }
2048
+ getRawOrderbook(symbol) {
2049
+ return this.rawOrderBook[symbol];
2050
+ }
2051
+ resetOrderBook(symbol) {
2052
+ this.rawOrderBook[symbol] = defaultRawOrderBook;
2053
+ }
2054
+ };
2055
+ var orderBookService = OrderbookService.getInstance();
2056
+ var orderbook_service_default = orderBookService;
1951
2057
  var useMarkPrice = (symbol) => {
1952
2058
  const ws = useWS();
1953
2059
  const [price, setPrice] = React.useState(0);
@@ -1963,6 +2069,13 @@ var useMarkPrice = (symbol) => {
1963
2069
  }, [symbol]);
1964
2070
  return { data: price };
1965
2071
  };
2072
+ var useSymbolsInfo = () => {
2073
+ const symbolsInfo = useAppStore((state) => state.symbolsInfo);
2074
+ return React.useMemo(
2075
+ () => createGetter({ ...symbolsInfo }),
2076
+ [symbolsInfo]
2077
+ );
2078
+ };
1966
2079
  var useIndexPrice = (symbol) => {
1967
2080
  symbol = symbol.replace("PERP", "SPOT");
1968
2081
  const ws = useWS();
@@ -2104,119 +2217,6 @@ var useTickerStream = (symbol) => {
2104
2217
  }, [info, symbol, ticker, futures, openInterest]);
2105
2218
  return value;
2106
2219
  };
2107
- var useSymbolsInfo = () => {
2108
- const symbolsInfo = useAppStore((state) => state.symbolsInfo);
2109
- return React.useMemo(
2110
- () => createGetter({ ...symbolsInfo }),
2111
- [symbolsInfo]
2112
- );
2113
- };
2114
-
2115
- // src/orderly/orderbook.service.ts
2116
- var defaultRawOrderBook = {
2117
- asks: [],
2118
- bids: [],
2119
- ts: 0
2120
- };
2121
- var OrderbookService = class _OrderbookService {
2122
- constructor() {
2123
- this.bufferedOrderBookUpdates = {};
2124
- this.rawOrderBook = {};
2125
- }
2126
- static getInstance() {
2127
- if (!this.instance) {
2128
- this.instance = new _OrderbookService();
2129
- }
2130
- return this.instance;
2131
- }
2132
- sortBufferedOrderBookUpdates(symbol) {
2133
- this.bufferedOrderBookUpdates[symbol]?.sort((a, b) => a.ts - b.ts);
2134
- }
2135
- applyUpdateToRawOrderBook(symbol, update) {
2136
- const rawOrderBook = this.rawOrderBook[symbol];
2137
- if (!rawOrderBook || rawOrderBook.ts > update.prevTs) {
2138
- return;
2139
- }
2140
- const askMap = /* @__PURE__ */ new Map();
2141
- const bidMap = /* @__PURE__ */ new Map();
2142
- rawOrderBook.asks.forEach((ask) => askMap.set(ask[0], ask[1]));
2143
- rawOrderBook.bids.forEach((bid) => bidMap.set(bid[0], bid[1]));
2144
- update.asks.forEach((ask) => ask[1] === 0 ? askMap.delete(ask[0]) : askMap.set(ask[0], ask[1]));
2145
- update.bids.forEach((bid) => bid[1] === 0 ? bidMap.delete(bid[0]) : bidMap.set(bid[0], bid[1]));
2146
- rawOrderBook.asks = Array.from(askMap.entries()).sort((a, b) => a[0] - b[0]);
2147
- rawOrderBook.bids = Array.from(bidMap.entries()).sort((a, b) => b[0] - a[0]);
2148
- rawOrderBook.ts = update.ts;
2149
- }
2150
- applyBufferedUpdatesToRawOrderBooks(symbol) {
2151
- this.bufferedOrderBookUpdates[symbol]?.forEach((update) => this.applyUpdateToRawOrderBook(symbol, update));
2152
- }
2153
- deleteBufferedOrderBookUpdates(symbol) {
2154
- delete this.bufferedOrderBookUpdates[symbol];
2155
- }
2156
- commitOrderBook(symbol) {
2157
- const rawOrderBook = this.rawOrderBook[symbol];
2158
- if (!rawOrderBook) {
2159
- return;
2160
- }
2161
- }
2162
- pushUpdateToBuffer(symbol, update) {
2163
- if (this.bufferedOrderBookUpdates[symbol] === void 0) {
2164
- this.bufferedOrderBookUpdates[symbol] = [];
2165
- }
2166
- const buffer = this.bufferedOrderBookUpdates[symbol];
2167
- if (buffer.length > 0) {
2168
- const lastUpdate = buffer[buffer.length - 1];
2169
- if (lastUpdate.ts !== update.prevTs) {
2170
- this.bufferedOrderBookUpdates[symbol] = [];
2171
- }
2172
- }
2173
- this.bufferedOrderBookUpdates[symbol].push(update);
2174
- }
2175
- isValidFullOrderBook(symbol, currentTs) {
2176
- if ((this.bufferedOrderBookUpdates[symbol]?.length ?? 0) !== 0) {
2177
- const earliestUpdates = this.bufferedOrderBookUpdates[symbol][0];
2178
- return earliestUpdates.prevTs <= currentTs;
2179
- }
2180
- return true;
2181
- }
2182
- setFullOrderbook(symbol, rawOrderbook) {
2183
- const { ts } = rawOrderbook;
2184
- this.rawOrderBook[symbol] = rawOrderbook;
2185
- this.sortBufferedOrderBookUpdates(symbol);
2186
- if (this.isValidFullOrderBook(symbol, ts)) {
2187
- this.applyBufferedUpdatesToRawOrderBooks(symbol);
2188
- }
2189
- }
2190
- updateOrderbook(symbol, update, callback) {
2191
- const { asks, bids, prevTs, ts } = update;
2192
- const rawOrderBook = this.rawOrderBook[symbol];
2193
- if (!rawOrderBook) {
2194
- return;
2195
- }
2196
- const currentTs = rawOrderBook.ts;
2197
- if (currentTs === 0) {
2198
- this.pushUpdateToBuffer(symbol, { asks, bids, prevTs, ts });
2199
- return;
2200
- }
2201
- if (prevTs !== currentTs) {
2202
- this.pushUpdateToBuffer(symbol, { asks, bids, prevTs, ts });
2203
- if (callback) {
2204
- callback();
2205
- }
2206
- return;
2207
- }
2208
- this.applyUpdateToRawOrderBook(symbol, update);
2209
- this.deleteBufferedOrderBookUpdates(symbol);
2210
- }
2211
- getRawOrderbook(symbol) {
2212
- return this.rawOrderBook[symbol];
2213
- }
2214
- resetOrderBook(symbol) {
2215
- this.rawOrderBook[symbol] = defaultRawOrderBook;
2216
- }
2217
- };
2218
- var orderBookService = OrderbookService.getInstance();
2219
- var orderbook_service_default = orderBookService;
2220
2220
 
2221
2221
  // src/orderly/useOrderbookStream.ts
2222
2222
  var paddingFn = (len) => Array(len).fill([
@@ -2281,7 +2281,7 @@ var reduceOrderbook = (depth, level, padding, data) => {
2281
2281
  const [price, qty, newQuantity, newAmount] = asks[0];
2282
2282
  asks.shift();
2283
2283
  asks.push([
2284
- price + (depth === void 0 ? 0 : depth),
2284
+ price + (depth === void 0 ? 0 : Number(depth)),
2285
2285
  qty,
2286
2286
  newQuantity,
2287
2287
  newAmount
@@ -2292,7 +2292,6 @@ var reduceOrderbook = (depth, level, padding, data) => {
2292
2292
  const [askPrice, askQty, newQuantity, newAmount] = asks[0];
2293
2293
  if (askPrice <= bidPrice) {
2294
2294
  asks.shift();
2295
- let logStr = "";
2296
2295
  for (let index = 0; index < asks.length; index++) {
2297
2296
  if (index === 0) {
2298
2297
  const quantity = asks[index][1] + askQty;
@@ -2302,8 +2301,6 @@ var reduceOrderbook = (depth, level, padding, data) => {
2302
2301
  } else {
2303
2302
  asks[index][3] = asks[index][0] * asks[index][1] + asks[index - 1][3];
2304
2303
  }
2305
- logStr += `index: ${index} ${asks[index]}
2306
- `;
2307
2304
  }
2308
2305
  } else {
2309
2306
  break;
@@ -3224,8 +3221,6 @@ var useFundingRate = (symbol) => {
3224
3221
  countDown
3225
3222
  };
3226
3223
  };
3227
-
3228
- // src/orderly/useFundingRateHistory.ts
3229
3224
  var calculatePositiveRate = (periodData, period) => {
3230
3225
  if (!periodData || !period)
3231
3226
  return 0;
@@ -3241,22 +3236,30 @@ var calculatePositiveRate = (periodData, period) => {
3241
3236
  return periodData.positive / totalTimes;
3242
3237
  };
3243
3238
  var useFundingRateHistory = () => {
3244
- const {
3245
- data: historyData,
3246
- isLoading,
3247
- ...rest
3248
- } = useQuery("/v1/public/market_info/funding_history");
3239
+ const { data: historyData, isLoading } = useQuery(
3240
+ "/v1/public/market_info/funding_history"
3241
+ );
3242
+ const getPositiveRates = React.useCallback(
3243
+ (data, period) => {
3244
+ if (!data?.length)
3245
+ return {};
3246
+ return data.reduce(
3247
+ (acc, item) => {
3248
+ acc[item.symbol] = calculatePositiveRate(
3249
+ item.funding[period],
3250
+ period
3251
+ );
3252
+ return acc;
3253
+ },
3254
+ {}
3255
+ );
3256
+ },
3257
+ []
3258
+ );
3249
3259
  return {
3250
3260
  data: historyData ?? [],
3251
3261
  isLoading,
3252
- getPositiveRates: (data, period) => {
3253
- if (!data?.length)
3254
- return {};
3255
- return data.reduce((acc, item) => {
3256
- acc[item.symbol] = calculatePositiveRate(item.funding[period], period);
3257
- return acc;
3258
- }, {});
3259
- }
3262
+ getPositiveRates
3260
3263
  };
3261
3264
  };
3262
3265
  var findTPSLFromOrders = (orders, symbol) => {