Skip to content

Commit 1c4312a

Browse files
committed
fix: cleanup
1 parent c87a5e0 commit 1c4312a

3 files changed

Lines changed: 37 additions & 71 deletions

File tree

src/routes/operator.ts

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -254,14 +254,7 @@ export default class RouteOperator {
254254

255255
let quoteMetadata = this.quoteMetadataCache.get(routeName, quoteParams);
256256

257-
const isRefetchRequired =
258-
!quoteMetadata?.quote ||
259-
!quoteMetadata?.request ||
260-
!quoteMetadata?.router;
261-
262-
if (isRefetchRequired) {
263-
// Refetch the quote as cached quote does not exist
264-
// This case should be hit rarely
257+
if (!quoteMetadata) {
265258
quoteMetadata = await route.getQuote(
266259
amount,
267260
sourceToken,
@@ -273,12 +266,7 @@ export default class RouteOperator {
273266
);
274267
}
275268

276-
return route.send(
277-
quoteMetadata as QuoteMetadata,
278-
signer,
279-
destChain,
280-
recipientAddress,
281-
);
269+
return route.send(quoteMetadata, signer, destChain, recipientAddress);
282270
}
283271
}
284272

@@ -308,7 +296,7 @@ class QuoteMetadataCache {
308296
)}:${params.nativeGas}:${params.recipient}`;
309297
}
310298

311-
get(routeName: string, params: QuoteParams): Partial<QuoteMetadata> | null {
299+
get(routeName: string, params: QuoteParams): QuoteMetadata | null {
312300
const key = this.quoteParamsKey(routeName, params);
313301
const quoteMetadata = this.cache[key];
314302
const hasQuoteExpired = quoteMetadata?.ttl() <= 5_000;
@@ -321,7 +309,7 @@ class QuoteMetadataCache {
321309
return {
322310
quote: quoteMetadata.quote,
323311
request: quoteMetadata.request,
324-
router: quoteMetadata.router,
312+
routeInstance: quoteMetadata.routeInstance,
325313
};
326314
}
327315

@@ -343,7 +331,7 @@ class QuoteMetadataCache {
343331

344332
// We don't yet have a pending request for this key, so initiate one
345333
route
346-
.computeQuote(
334+
.getQuote(
347335
params.amount,
348336
params.sourceToken,
349337
params.destToken,
@@ -352,7 +340,7 @@ class QuoteMetadataCache {
352340
{ nativeGas: params.nativeGas },
353341
params.recipient,
354342
)
355-
.then(({ router, quote, request }: Required<QuoteMetadata>) => {
343+
.then(({ routeInstance, quote, request }: QuoteMetadata) => {
356344
const pending = this.pending[key];
357345

358346
for (const { resolve } of pending) {
@@ -365,7 +353,7 @@ class QuoteMetadataCache {
365353
quote.expires = getQuoteExpiry(quote.expires);
366354
}
367355

368-
this.cache[key] = new QuoteMetadataEntry(quote, router, request);
356+
this.cache[key] = new QuoteMetadataEntry(quote, routeInstance, request);
369357
})
370358
.catch((err: any) => {
371359
const pending = this.pending[key];
@@ -377,10 +365,14 @@ class QuoteMetadataCache {
377365
delete this.pending[key];
378366

379367
// Cache uncaught error
380-
this.cache[key] = new QuoteMetadataEntry({
381-
success: false,
382-
error: err,
383-
});
368+
this.cache[key] = new QuoteMetadataEntry(
369+
{
370+
success: false,
371+
error: err,
372+
},
373+
{} as routes.Route<Network>,
374+
{} as routes.RouteTransferRequest<Network>,
375+
);
384376
});
385377

386378
return new Promise((resolve, reject) => {
@@ -418,17 +410,17 @@ class QuoteMetadataEntry {
418410
// Last time we fetched a quote
419411
timestamp: Date;
420412
// Optional route used for the quote
421-
router?: routes.Route<Network>;
413+
routeInstance: routes.Route<Network>;
422414
// Optional request used for the quote
423-
request?: routes.RouteTransferRequest<Network>;
415+
request: routes.RouteTransferRequest<Network>;
424416

425417
constructor(
426418
quote: QuoteResult,
427-
router?: routes.Route<Network>,
428-
request?: routes.RouteTransferRequest<Network>,
419+
routeInstance: routes.Route<Network>,
420+
request: routes.RouteTransferRequest<Network>,
429421
) {
430422
this.quote = quote;
431-
this.router = router;
423+
this.routeInstance = routeInstance;
432424
this.request = request;
433425
this.timestamp = new Date();
434426
}

src/routes/sdkv2/route.ts

Lines changed: 16 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,10 @@ export default class SDKv2Route {
180180
options?: routes.AutomaticTokenBridgeRoute.Options,
181181
recipient?: string,
182182
): Promise<QuoteMetadata> {
183+
if (!sourceChain || !destChain || !sourceToken || !destToken) {
184+
throw new Error('Malformed quote request');
185+
}
186+
183187
const request = await this.createRequest(
184188
sourceToken,
185189
destToken,
@@ -188,9 +192,9 @@ export default class SDKv2Route {
188192
recipient,
189193
);
190194

191-
const router = await this.createRouter();
195+
const routeInstance = await this.createRouteInstance();
192196

193-
const validationResult = await router.validate(request, {
197+
const validationResult = await routeInstance.validate(request, {
194198
amount: sdkAmount.display(amount),
195199
options,
196200
});
@@ -199,16 +203,16 @@ export default class SDKv2Route {
199203
throw validationResult.error;
200204
}
201205

202-
const quote = await router.quote(request, validationResult.params);
206+
const quote = await routeInstance.quote(request, validationResult.params);
203207

204-
return { router, quote, request };
208+
return { routeInstance, quote, request };
205209
}
206210

207-
async createRouter() {
211+
async createRouteInstance() {
208212
const wh = await getWormholeContextV2();
209-
const router = new this.rc(wh);
213+
const routeInstance = new this.rc(wh);
210214

211-
return router;
215+
return routeInstance;
212216
}
213217

214218
async createRequest(
@@ -239,49 +243,19 @@ export default class SDKv2Route {
239243
return req;
240244
}
241245

242-
async computeQuote(
243-
amountIn: Amount,
244-
sourceToken: Token,
245-
destToken: Token,
246-
fromChain: Chain,
247-
toChain: Chain,
248-
options?: routes.AutomaticTokenBridgeRoute.Options,
249-
recipient?: string,
250-
): Promise<QuoteMetadata> {
251-
if (!fromChain || !toChain) {
252-
throw new Error('Need both chains to get a quote from SDKv2');
253-
}
254-
255-
const { router, quote, request } = await this.getQuote(
256-
amountIn,
257-
sourceToken,
258-
destToken,
259-
fromChain,
260-
toChain,
261-
options,
262-
recipient,
263-
);
264-
265-
if (!quote.success) {
266-
throw quote.error;
267-
}
268-
269-
return { router, quote, request };
270-
}
271-
272246
async send(
273247
quoteMetadata: QuoteMetadata,
274248
signer: Signer,
275249
toChain: Chain,
276250
recipientAddress: string,
277251
): Promise<[routes.Route<Network>, routes.Receipt]> {
278-
const { quote, router, request } = quoteMetadata;
252+
const { quote, routeInstance, request } = quoteMetadata;
279253

280254
if (!quote.success) {
281255
throw quote.error;
282256
}
283257

284-
let receipt = await router.initiate(
258+
let receipt = await routeInstance.initiate(
285259
request,
286260
signer,
287261
quote,
@@ -294,7 +268,7 @@ export default class SDKv2Route {
294268
receipt.state === TransferState.SourceInitiated ||
295269
receipt.state === TransferState.SourceFinalized
296270
) {
297-
return [router, receipt];
271+
return [routeInstance, receipt];
298272
}
299273

300274
// Otherwise track the transfer until it reaches a final state,
@@ -305,9 +279,9 @@ export default class SDKv2Route {
305279

306280
while (retries < maxRetries) {
307281
try {
308-
for await (receipt of router.track(receipt, 120 * 1000)) {
282+
for await (receipt of routeInstance.track(receipt, 120 * 1000)) {
309283
if (receipt.state >= TransferState.SourceInitiated) {
310-
return [router, receipt];
284+
return [routeInstance, receipt];
311285
}
312286
}
313287
} catch (e) {

src/routes/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { routes, Network } from '@wormhole-foundation/sdk';
22

33
export type QuoteMetadata = {
4-
router: routes.Route<Network>;
54
quote: routes.QuoteResult<routes.Options>;
65
request: routes.RouteTransferRequest<Network>;
6+
routeInstance: routes.Route<Network>;
77
};

0 commit comments

Comments
 (0)