Skip to content

Commit 074aa3c

Browse files
committed
Add missing types
1 parent 5948960 commit 074aa3c

File tree

5 files changed

+67
-31
lines changed

5 files changed

+67
-31
lines changed

indexer/packages/redis/__tests__/caches/orderbook-mid-prices-cache.test.ts

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,10 @@ describe('orderbook-mid-prices-cache', () => {
104104
describe('getMedianPrice', () => {
105105

106106
it('returns null when no prices are set', async () => {
107-
const result = await getMedianPrices(client, [defaultTicker]);
107+
const result: {[ticker: string]: string | undefined} = await getMedianPrices(
108+
client,
109+
[defaultTicker],
110+
);
108111
expect(result).toEqual({ 'BTC-USD': undefined });
109112
});
110113

@@ -113,7 +116,10 @@ describe('orderbook-mid-prices-cache', () => {
113116
setPrice(defaultTicker, '50000');
114117
setPrice(defaultTicker, '49000');
115118

116-
const result = await getMedianPrices(client, [defaultTicker]);
119+
const result: {[ticker: string]: string | undefined} = await getMedianPrices(
120+
client,
121+
[defaultTicker],
122+
);
117123
expect(result).toEqual({ 'BTC-USD': '50000' });
118124
});
119125

@@ -123,14 +129,17 @@ describe('orderbook-mid-prices-cache', () => {
123129
setPrice(defaultTicker, '49000');
124130
setPrice(defaultTicker, '52000');
125131

126-
const result = await getMedianPrices(client, [defaultTicker]);
132+
const result: {[ticker: string]: string | undefined} = await getMedianPrices(
133+
client,
134+
[defaultTicker],
135+
);
127136
expect(result).toEqual({ 'BTC-USD': '50500' });
128137
});
129138

130139
it('returns the correct median price after 30 seconds', async () => {
131140
jest.useFakeTimers();
132141
// Mock the getOrderBookMidPrice function for the ticker
133-
const mockPrices = ['50000', '51000', '49000', '48000', '52000', '53000'];
142+
const mockPrices: string[] = ['50000', '51000', '49000', '48000', '52000', '53000'];
134143

135144
(OrderbookLevelsCache.getOrderBookMidPrice as jest.Mock)
136145
.mockResolvedValueOnce(mockPrices[0])
@@ -160,7 +169,10 @@ describe('orderbook-mid-prices-cache', () => {
160169
expect(OrderbookLevelsCache.getOrderBookMidPrice).toHaveBeenCalledTimes(6);
161170

162171
// Check the median price
163-
const result = await getMedianPrices(client, [defaultTicker]);
172+
const result:{[ticker: string]: string | undefined} = await getMedianPrices(
173+
client,
174+
[defaultTicker],
175+
);
164176
// Median of last 4 prices, as first two should have expired after moving clock forward
165177
expect(result).toEqual({ 'BTC-USD': '50500' });
166178

@@ -171,7 +183,10 @@ describe('orderbook-mid-prices-cache', () => {
171183
setPrice(defaultTicker, '0.00000000002345');
172184
setPrice(defaultTicker, '0.00000000002346');
173185

174-
const midPrice1 = await getMedianPrices(client, [defaultTicker]);
186+
const midPrice1: { [ticker: string]: string | undefined } = await getMedianPrices(
187+
client,
188+
[defaultTicker],
189+
);
175190
expect(midPrice1).toEqual({ 'BTC-USD': '0.000000000023455' });
176191
});
177192

@@ -182,7 +197,10 @@ describe('orderbook-mid-prices-cache', () => {
182197
setPrice(defaultTicker, '0.00000000004');
183198
setPrice(defaultTicker, '0.00000000005');
184199

185-
const midPrice1 = await getMedianPrices(client, [defaultTicker]);
200+
const midPrice1: { [ticker: string]: string | undefined } = await getMedianPrices(
201+
client,
202+
[defaultTicker],
203+
);
186204
expect(midPrice1).toEqual({ 'BTC-USD': '0.00000000003' });
187205

188206
await deleteAllAsync(client);
@@ -191,7 +209,10 @@ describe('orderbook-mid-prices-cache', () => {
191209
setPrice(defaultTicker, '0.00000847006');
192210
setPrice(defaultTicker, '0.00000847008');
193211

194-
const midPrice2 = await getMedianPrices(client, [defaultTicker]);
212+
const midPrice2: { [ticker: string]: string | undefined } = await getMedianPrices(
213+
client,
214+
[defaultTicker],
215+
);
195216
expect(midPrice2).toEqual({ 'BTC-USD': '0.00000847007' });
196217
});
197218
});
@@ -221,7 +242,10 @@ describe('orderbook-mid-prices-cache', () => {
221242
setPrice(solUsdTicker, '102');
222243
setPrice(solUsdTicker, '98');
223244

224-
const result = await getMedianPrices(client, [btcUsdTicker, ethUsdTicker, solUsdTicker]);
245+
const result: { [ticker: string]: string | undefined } = await getMedianPrices(
246+
client,
247+
[btcUsdTicker, ethUsdTicker, solUsdTicker],
248+
);
225249
expect(result).toEqual({
226250
'BTC-USD': '50000',
227251
'ETH-USD': '3000',
@@ -242,7 +266,10 @@ describe('orderbook-mid-prices-cache', () => {
242266
setPrice(ethUsdTicker, '2900');
243267
setPrice(ethUsdTicker, '3200');
244268

245-
const result = await getMedianPrices(client, [btcUsdTicker, ethUsdTicker]);
269+
const result: { [ticker: string]: string | undefined } = await getMedianPrices(
270+
client,
271+
[btcUsdTicker, ethUsdTicker],
272+
);
246273
expect(result).toEqual({
247274
'BTC-USD': '50500',
248275
'ETH-USD': '3050',
@@ -263,7 +290,10 @@ describe('orderbook-mid-prices-cache', () => {
263290

264291
// Set no prices for SOL-USD
265292

266-
const result = await getMedianPrices(client, [btcUsdTicker, ethUsdTicker, solUsdTicker]);
293+
const result: { [ticker: string]: string | undefined } = await getMedianPrices(
294+
client,
295+
[btcUsdTicker, ethUsdTicker, solUsdTicker],
296+
);
267297
expect(result).toEqual({
268298
'BTC-USD': '50000',
269299
'ETH-USD': '3050',
@@ -287,7 +317,10 @@ describe('orderbook-mid-prices-cache', () => {
287317
setPrice(solUsdTicker, '0.00000125');
288318
setPrice(solUsdTicker, '0.00000126');
289319

290-
const result = await getMedianPrices(client, [btcUsdTicker, ethUsdTicker, solUsdTicker]);
320+
const result: { [ticker: string]: string | undefined } = await getMedianPrices(
321+
client,
322+
[btcUsdTicker, ethUsdTicker, solUsdTicker],
323+
);
291324
expect(result).toEqual({
292325
'BTC-USD': '50000.123455',
293326
'ETH-USD': '3000.6',

indexer/packages/redis/src/caches/orderbook-mid-prices-cache.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ export async function fetchAndCacheOrderbookMidPrices(
3232
tickers: string[],
3333
): Promise<void> {
3434
// Fetch midPrices and filter out undefined values
35-
const cacheKeyPricePairs = await Promise.all(
35+
const cacheKeyPricePairs: ({ cacheKey: string, midPrice: string } | null)[] = await Promise.all(
3636
tickers.map(async (ticker) => {
37-
const cacheKey = getOrderbookMidPriceCacheKey(ticker);
38-
const midPrice = await getOrderBookMidPrice(ticker, client);
37+
const cacheKey: string = getOrderbookMidPriceCacheKey(ticker);
38+
const midPrice: string | undefined = await getOrderBookMidPrice(ticker, client);
3939
if (midPrice !== undefined) {
4040
return { cacheKey, midPrice };
4141
}
@@ -44,18 +44,18 @@ export async function fetchAndCacheOrderbookMidPrices(
4444
);
4545

4646
// Filter out null values
47-
const validPairs = cacheKeyPricePairs.filter(
47+
const validPairs: { cacheKey: string, midPrice: string }[] = cacheKeyPricePairs.filter(
4848
(pair): pair is { cacheKey: string, midPrice: string } => pair !== null,
4949
);
5050
if (validPairs.length === 0) {
5151
// No valid midPrices to cache
5252
return;
5353
}
5454

55-
const nowSeconds = Math.floor(Date.now() / 1000); // Current time in seconds
55+
const nowSeconds: number = Math.floor(Date.now() / 1000); // Current time in seconds
5656
// Extract cache keys and prices
57-
const priceValues = validPairs.map((pair) => pair.midPrice);
58-
const priceCacheKeys = validPairs.map((pair) => {
57+
const priceValues: string[] = validPairs.map((pair) => pair.midPrice);
58+
const priceCacheKeys: string[] = validPairs.map((pair) => {
5959

6060
logger.info({
6161
at: 'orderbook-mid-prices-cache#fetchAndCacheOrderbookMidPrices',
@@ -123,9 +123,9 @@ export async function getMedianPrices(
123123
evalAsync = evalAsync.bind(client);
124124

125125
// Map tickers to cache keys
126-
const marketCacheKeys = tickers.map(getOrderbookMidPriceCacheKey);
126+
const marketCacheKeys: string[] = tickers.map(getOrderbookMidPriceCacheKey);
127127
// Fetch the prices arrays from Redis (without scores)
128-
const pricesArrays = await evalAsync(marketCacheKeys);
128+
const pricesArrays: string[][] = await evalAsync(marketCacheKeys);
129129

130130
const result: { [ticker: string]: string | undefined } = {};
131131
tickers.forEach((ticker, index) => {
@@ -138,13 +138,13 @@ export async function getMedianPrices(
138138
}
139139

140140
// Convert the prices to Big.js objects for precision
141-
const bigPrices = prices.map((price) => Big(price));
141+
const bigPrices: Big[] = prices.map((price) => Big(price));
142142

143143
// Sort the prices in ascending order
144144
bigPrices.sort((a, b) => a.cmp(b));
145145

146146
// Calculate the median
147-
const mid = Math.floor(bigPrices.length / 2);
147+
const mid: number = Math.floor(bigPrices.length / 2);
148148
if (bigPrices.length % 2 === 1) {
149149
// Odd number of prices: the middle one is the median
150150
result[ticker] = bigPrices[mid].toFixed();

indexer/packages/redis/src/scripts/get_orderbook_mid_prices.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ for i, key in ipairs(KEYS) do
77
results[i] = prices
88
end
99

10-
return results
10+
return results

indexer/services/roundtable/__tests__/tasks/cache-orderbook-mid-prices.test.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ describe('cache-orderbook-mid-prices', () => {
3636
});
3737

3838
it('caches mid prices for all markets', async () => {
39-
const market1 = await PerpetualMarketTable
39+
const market1: PerpetualMarketFromDatabase | undefined = await PerpetualMarketTable
4040
.findByMarketId(
4141
testConstants.defaultMarket.id,
4242
);
43-
const market2 = await PerpetualMarketTable
43+
const market2: PerpetualMarketFromDatabase | undefined = await PerpetualMarketTable
4444
.findByMarketId(
4545
testConstants.defaultMarket2.id,
4646
);
47-
const market3 = await PerpetualMarketTable
47+
const market3: PerpetualMarketFromDatabase | undefined = await PerpetualMarketTable
4848
.findByMarketId(
4949
testConstants.defaultMarket3.id,
5050
);
@@ -60,7 +60,8 @@ describe('cache-orderbook-mid-prices', () => {
6060
await runTask();
6161
expect(OrderbookLevelsCache.getOrderBookMidPrice).toHaveBeenCalledTimes(5);
6262

63-
const prices = await OrderbookMidPricesCache.getMedianPrices(
63+
const prices: {[ticker: string]: string | undefined} = await
64+
OrderbookMidPricesCache.getMedianPrices(
6465
redisClient,
6566
[market1.ticker, market2.ticker, market3.ticker],
6667
);

indexer/services/roundtable/src/tasks/cache-orderbook-mid-prices.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ import { redisClient } from '../helpers/redis';
1616
*/
1717
export default async function runTask(): Promise<void> {
1818
try {
19-
let perpetualMarkets = Object.values(perpetualMarketRefresher.getPerpetualMarketsMap());
20-
let marketTickers = perpetualMarkets.map(
19+
let perpetualMarkets: PerpetualMarketFromDatabase[] = Object.values(
20+
perpetualMarketRefresher.getPerpetualMarketsMap(),
21+
);
22+
let marketTickers: string[] = perpetualMarkets.map(
2123
(market: PerpetualMarketFromDatabase) => market.ticker,
2224
);
2325

@@ -43,7 +45,7 @@ export default async function runTask(): Promise<void> {
4345
} catch (error) {
4446
logger.error({
4547
at: 'cache-orderbook-mid-prices#runTask',
46-
message: error.message,
48+
message: (error as Error).message,
4749
error,
4850
});
4951
}

0 commit comments

Comments
 (0)