Skip to content

Commit 447001f

Browse files
committed
fix: closing a stream
1 parent a5f0c23 commit 447001f

17 files changed

Lines changed: 3407 additions & 8814 deletions

packages/sdk-ts/src/client/indexer/grpc_stream/streamV2/IndexerGrpcAccountPortfolioStreamV2.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,16 @@ export class IndexerGrpcAccountPortfolioStreamV2 {
5858
request.type = type
5959
}
6060

61-
const stream = this.client.streamAccountPortfolio(request)
62-
63-
return createStreamSubscriptionV2(stream, (response) => {
64-
const transformed =
65-
IndexerAccountPortfolioStreamTransformer.accountPortfolioStreamCallback(
66-
response,
67-
)
68-
callback(transformed)
69-
})
61+
return createStreamSubscriptionV2(
62+
(abortSignal) =>
63+
this.client.streamAccountPortfolio(request, { abort: abortSignal }),
64+
(response) => {
65+
const transformed =
66+
IndexerAccountPortfolioStreamTransformer.accountPortfolioStreamCallback(
67+
response,
68+
)
69+
callback(transformed)
70+
},
71+
)
7072
}
7173
}

packages/sdk-ts/src/client/indexer/grpc_stream/streamV2/IndexerGrpcAccountStreamV2.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,14 @@ export class IndexerGrpcAccountStreamV2 {
4444
InjectiveAccountsRpcPb.StreamSubaccountBalanceRequest.create()
4545
request.subaccountId = subaccountId
4646

47-
const stream = this.client.streamSubaccountBalance(request)
48-
49-
return createStreamSubscriptionV2(stream, (response) => {
50-
const transformed =
51-
IndexerAccountStreamTransformer.balanceStreamCallback(response)
52-
callback(transformed)
53-
})
47+
return createStreamSubscriptionV2(
48+
(abortSignal) =>
49+
this.client.streamSubaccountBalance(request, { abort: abortSignal }),
50+
(response) => {
51+
const transformed =
52+
IndexerAccountStreamTransformer.balanceStreamCallback(response)
53+
callback(transformed)
54+
},
55+
)
5456
}
5557
}

packages/sdk-ts/src/client/indexer/grpc_stream/streamV2/IndexerGrpcArchiverStreamV2.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,16 @@ export class IndexerGrpcArchiverStreamV2 {
4545

4646
request.account = account
4747

48-
const stream = this.client.streamSpotAverageEntries(request)
49-
50-
return createStreamSubscriptionV2(stream, (response) => {
51-
const transformed =
52-
IndexerArchiverStreamTransformer.spotAverageEntriesStreamCallback(
53-
response,
54-
)
55-
callback(transformed)
56-
})
48+
return createStreamSubscriptionV2(
49+
(abortSignal) =>
50+
this.client.streamSpotAverageEntries(request, { abort: abortSignal }),
51+
(response) => {
52+
const transformed =
53+
IndexerArchiverStreamTransformer.spotAverageEntriesStreamCallback(
54+
response,
55+
)
56+
callback(transformed)
57+
},
58+
)
5759
}
5860
}

packages/sdk-ts/src/client/indexer/grpc_stream/streamV2/IndexerGrpcAuctionStreamV2.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,13 @@ export class IndexerGrpcAuctionStreamV2 {
3636

3737
const request = InjectiveAuctionRpcPb.StreamBidsRequest.create()
3838

39-
const stream = this.client.streamBids(request)
40-
41-
return createStreamSubscriptionV2(stream, (response) => {
42-
const transformed =
43-
IndexerAuctionStreamTransformer.bidsStreamCallback(response)
44-
callback(transformed)
45-
})
39+
return createStreamSubscriptionV2(
40+
(abortSignal) => this.client.streamBids(request, { abort: abortSignal }),
41+
(response) => {
42+
const transformed =
43+
IndexerAuctionStreamTransformer.bidsStreamCallback(response)
44+
callback(transformed)
45+
},
46+
)
4647
}
4748
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { vi } from 'vitest'
2+
import { Network, getNetworkEndpoints } from '@injectivelabs/networks'
3+
import { IndexerGrpcDerivativesStreamV2 } from './IndexerGrpcDerivativesStreamV2.js'
4+
5+
const endpoints = getNetworkEndpoints(Network.MainnetSentry)
6+
const mockMarketId =
7+
'0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6'
8+
9+
describe('IndexerGrpcDerivativesStreamV2', () => {
10+
let derivativesStream: IndexerGrpcDerivativesStreamV2
11+
12+
beforeEach(() => {
13+
derivativesStream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)
14+
})
15+
16+
describe('streamOrderbooksV2', () => {
17+
it('should pass an abort signal to the generated stream and abort it on unsubscribe', () => {
18+
const streamOrderbookV2 = vi.fn().mockReturnValue({
19+
responses: (async function* emptyStream() {})(),
20+
})
21+
22+
;(derivativesStream as any).client = { streamOrderbookV2 }
23+
24+
const subscription = derivativesStream.streamOrderbooksV2({
25+
marketIds: [mockMarketId],
26+
callback: () => {},
27+
})
28+
29+
const [request, options] = streamOrderbookV2.mock.calls[0]
30+
31+
expect(request.marketIds).toEqual([mockMarketId])
32+
expect(options.abort).toBeDefined()
33+
expect(options.abort.aborted).toBe(false)
34+
35+
subscription.unsubscribe()
36+
37+
expect(options.abort.aborted).toBe(true)
38+
})
39+
})
40+
})

packages/sdk-ts/src/client/indexer/grpc_stream/streamV2/IndexerGrpcDerivativesStreamV2.ts

Lines changed: 74 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,15 @@ export class IndexerGrpcDerivativesStreamV2 {
106106
request.orderSide = orderSide
107107
}
108108

109-
const stream = this.client.streamOrders(request)
110-
111-
return createStreamSubscriptionV2(stream, (response) => {
112-
const transformed =
113-
IndexerDerivativeStreamTransformer.ordersStreamCallback(response)
114-
callback(transformed)
115-
})
109+
return createStreamSubscriptionV2(
110+
(abortSignal) =>
111+
this.client.streamOrders(request, { abort: abortSignal }),
112+
(response) => {
113+
const transformed =
114+
IndexerDerivativeStreamTransformer.ordersStreamCallback(response)
115+
callback(transformed)
116+
},
117+
)
116118
}
117119

118120
/**
@@ -174,13 +176,17 @@ export class IndexerGrpcDerivativesStreamV2 {
174176
request.executionTypes = executionTypes
175177
}
176178

177-
const stream = this.client.streamOrdersHistory(request)
178-
179-
return createStreamSubscriptionV2(stream, (response) => {
180-
const transformed =
181-
IndexerDerivativeStreamTransformer.orderHistoryStreamCallback(response)
182-
callback(transformed)
183-
})
179+
return createStreamSubscriptionV2(
180+
(abortSignal) =>
181+
this.client.streamOrdersHistory(request, { abort: abortSignal }),
182+
(response) => {
183+
const transformed =
184+
IndexerDerivativeStreamTransformer.orderHistoryStreamCallback(
185+
response,
186+
)
187+
callback(transformed)
188+
},
189+
)
184190
}
185191

186192
/**
@@ -255,13 +261,15 @@ export class IndexerGrpcDerivativesStreamV2 {
255261
}
256262
}
257263

258-
const stream = this.client.streamTrades(request)
259-
260-
return createStreamSubscriptionV2(stream, (response) => {
261-
const transformed =
262-
IndexerDerivativeStreamTransformer.tradesStreamCallback(response)
263-
callback(transformed)
264-
})
264+
return createStreamSubscriptionV2(
265+
(abortSignal) =>
266+
this.client.streamTrades(request, { abort: abortSignal }),
267+
(response) => {
268+
const transformed =
269+
IndexerDerivativeStreamTransformer.tradesStreamCallback(response)
270+
callback(transformed)
271+
},
272+
)
265273
}
266274

267275
/**
@@ -302,13 +310,15 @@ export class IndexerGrpcDerivativesStreamV2 {
302310
request.subaccountId = subaccountId
303311
}
304312

305-
const stream = this.client.streamPositions(request)
306-
307-
return createStreamSubscriptionV2(stream, (response) => {
308-
const transformed =
309-
IndexerDerivativeStreamTransformer.positionStreamCallback(response)
310-
callback(transformed)
311-
})
313+
return createStreamSubscriptionV2(
314+
(abortSignal) =>
315+
this.client.streamPositions(request, { abort: abortSignal }),
316+
(response) => {
317+
const transformed =
318+
IndexerDerivativeStreamTransformer.positionStreamCallback(response)
319+
callback(transformed)
320+
},
321+
)
312322
}
313323

314324
/**
@@ -335,11 +345,13 @@ export class IndexerGrpcDerivativesStreamV2 {
335345
request.marketIds = marketIds
336346
}
337347

338-
const stream = this.client.streamMarket(request)
339-
340-
return createStreamSubscriptionV2(stream, (response) => {
341-
callback(response)
342-
})
348+
return createStreamSubscriptionV2(
349+
(abortSignal) =>
350+
this.client.streamMarket(request, { abort: abortSignal }),
351+
(response) => {
352+
callback(response)
353+
},
354+
)
343355
}
344356

345357
/**
@@ -366,13 +378,15 @@ export class IndexerGrpcDerivativesStreamV2 {
366378
InjectiveDerivativeExchangeRpcPb.StreamOrderbookV2Request.create()
367379
request.marketIds = marketIds
368380

369-
const stream = this.client.streamOrderbookV2(request)
370-
371-
return createStreamSubscriptionV2(stream, (response) => {
372-
const transformed =
373-
IndexerDerivativeStreamTransformer.orderbookV2StreamCallback(response)
374-
callback(transformed)
375-
})
381+
return createStreamSubscriptionV2(
382+
(abortSignal) =>
383+
this.client.streamOrderbookV2(request, { abort: abortSignal }),
384+
(response) => {
385+
const transformed =
386+
IndexerDerivativeStreamTransformer.orderbookV2StreamCallback(response)
387+
callback(transformed)
388+
},
389+
)
376390
}
377391

378392
/**
@@ -400,15 +414,17 @@ export class IndexerGrpcDerivativesStreamV2 {
400414

401415
request.marketIds = marketIds
402416

403-
const stream = this.client.streamOrderbookUpdate(request)
404-
405-
return createStreamSubscriptionV2(stream, (response) => {
406-
const transformed =
407-
IndexerDerivativeStreamTransformer.orderbookUpdateStreamCallback(
408-
response,
409-
)
410-
callback(transformed)
411-
})
417+
return createStreamSubscriptionV2(
418+
(abortSignal) =>
419+
this.client.streamOrderbookUpdate(request, { abort: abortSignal }),
420+
(response) => {
421+
const transformed =
422+
IndexerDerivativeStreamTransformer.orderbookUpdateStreamCallback(
423+
response,
424+
)
425+
callback(transformed)
426+
},
427+
)
412428
}
413429

414430
/**
@@ -449,12 +465,14 @@ export class IndexerGrpcDerivativesStreamV2 {
449465
request.subaccountId = subaccountId
450466
}
451467

452-
const stream = this.client.streamPositionsV2(request)
453-
454-
return createStreamSubscriptionV2(stream, (response) => {
455-
const transformed =
456-
IndexerDerivativeStreamTransformer.positionV2StreamCallback(response)
457-
callback(transformed)
458-
})
468+
return createStreamSubscriptionV2(
469+
(abortSignal) =>
470+
this.client.streamPositionsV2(request, { abort: abortSignal }),
471+
(response) => {
472+
const transformed =
473+
IndexerDerivativeStreamTransformer.positionV2StreamCallback(response)
474+
callback(transformed)
475+
},
476+
)
459477
}
460478
}

packages/sdk-ts/src/client/indexer/grpc_stream/streamV2/IndexerGrpcExplorerStreamV2.ts

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,15 @@ export class IndexerGrpcExplorerStreamV2 {
4545
}
4646

4747
const request = InjectiveExplorerRpcPb.StreamBlocksRequest.create()
48-
const stream = this.client.streamBlocks(request)
49-
50-
return createStreamSubscriptionV2(stream, (response) => {
51-
const transformed =
52-
ExplorerStreamTransformer.blocksStreamCallback(response)
53-
callback(transformed)
54-
})
48+
return createStreamSubscriptionV2(
49+
(abortSignal) =>
50+
this.client.streamBlocks(request, { abort: abortSignal }),
51+
(response) => {
52+
const transformed =
53+
ExplorerStreamTransformer.blocksStreamCallback(response)
54+
callback(transformed)
55+
},
56+
)
5557
}
5658

5759
/**
@@ -69,13 +71,15 @@ export class IndexerGrpcExplorerStreamV2 {
6971
}
7072

7173
const request = InjectiveExplorerRpcPb.StreamBlocksRequest.create()
72-
const stream = this.client.streamBlocks(request)
73-
74-
return createStreamSubscriptionV2(stream, (response) => {
75-
const transformed =
76-
ExplorerStreamTransformer.blocksWithTxsStreamCallback(response)
77-
callback(transformed)
78-
})
74+
return createStreamSubscriptionV2(
75+
(abortSignal) =>
76+
this.client.streamBlocks(request, { abort: abortSignal }),
77+
(response) => {
78+
const transformed =
79+
ExplorerStreamTransformer.blocksWithTxsStreamCallback(response)
80+
callback(transformed)
81+
},
82+
)
7983
}
8084

8185
/**
@@ -93,12 +97,13 @@ export class IndexerGrpcExplorerStreamV2 {
9397
}
9498

9599
const request = InjectiveExplorerRpcPb.StreamTxsRequest.create()
96-
const stream = this.client.streamTxs(request)
97-
98-
return createStreamSubscriptionV2(stream, (response) => {
99-
const transformed =
100-
ExplorerStreamTransformer.transactionsStreamCallback(response)
101-
callback(transformed)
102-
})
100+
return createStreamSubscriptionV2(
101+
(abortSignal) => this.client.streamTxs(request, { abort: abortSignal }),
102+
(response) => {
103+
const transformed =
104+
ExplorerStreamTransformer.transactionsStreamCallback(response)
105+
callback(transformed)
106+
},
107+
)
103108
}
104109
}

0 commit comments

Comments
 (0)