Skip to content

Commit 3b16be8

Browse files
committed
feat(compactX): move zod checks/parse into listener parser
1 parent 12f94d8 commit 3b16be8

File tree

5 files changed

+16
-33
lines changed

5 files changed

+16
-33
lines changed

typescript/solver/solvers/compactX/filler.ts

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,7 @@ import { BuildRules, RulesMap } from "../types.js";
88
import { retrieveTokenBalance } from "../utils.js";
99
import { allowBlockLists, metadata } from "./config/index.js";
1010
import { PriceService } from "./services/price/PriceService.js";
11-
import {
12-
type BroadcastRequest,
13-
BroadcastRequestSchema,
14-
type CompactXMetadata,
15-
type CompactXParsedArgs,
16-
} from "./types.js";
11+
import type { CompactXMetadata, CompactXParsedArgs } from "./types.js";
1712
import { calculateFillValue, getMaxSettlementAmount, log } from "./utils.js";
1813

1914
export type CompactXRule = CompactXFiller["rules"][number];
@@ -44,13 +39,11 @@ export class CompactXFiller extends BaseFiller<
4439

4540
protected async prepareIntent(
4641
parsedArgs: CompactXParsedArgs,
47-
): Promise<Result<BroadcastRequest>> {
42+
): Promise<Result<string>> {
4843
try {
4944
await super.prepareIntent(parsedArgs);
5045

51-
const result = BroadcastRequestSchema.parse(parsedArgs.context);
52-
53-
return { data: result, success: true };
46+
return { data: "", success: true };
5447
} catch (error: any) {
5548
return {
5649
error:
@@ -60,10 +53,9 @@ export class CompactXFiller extends BaseFiller<
6053
}
6154
}
6255

63-
protected async fill(
64-
parsedArgs: CompactXParsedArgs,
65-
request: BroadcastRequest,
66-
) {
56+
protected async fill(parsedArgs: CompactXParsedArgs) {
57+
const request = parsedArgs.context;
58+
6759
this.log.info({
6860
msg: "Filling Intent",
6961
intent: `${this.metadata.protocolName}-${request.compact.id}`,

typescript/solver/solvers/compactX/listener.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { chainIdsToName } from "../../config/index.js";
22
import type { BaseWebSocketSource } from "../types.js";
33
import { WebSocketListener } from "../WebSocketListener.js";
44
import { metadata } from "./config/index.js";
5-
import { CompactXParsedArgs } from "./types.js";
5+
import { BroadcastRequestSchema, type CompactXParsedArgs } from "./types.js";
66
import { log } from "./utils.js";
77

88
type CompactXClassMetadata = {
@@ -16,15 +16,16 @@ export class CompactXListener extends WebSocketListener<CompactXParsedArgs> {
1616
}
1717

1818
protected parseEventArgs(args: Buffer): CompactXParsedArgs {
19-
const context: CompactXParsedArgs["context"] = JSON.parse(args.toString());
19+
const context: CompactXParsedArgs["context"] = BroadcastRequestSchema.parse(
20+
JSON.parse(args.toString()),
21+
);
2022

2123
return {
2224
orderId: context.compact.id,
2325
senderAddress: context.compact.sponsor,
2426
recipients: [
2527
{
26-
destinationChainName:
27-
chainIdsToName[context.compact.mandate.chainId.toString()],
28+
destinationChainName: chainIdsToName[context.compact.mandate.chainId],
2829
recipientAddress: context.compact.mandate.recipient,
2930
},
3031
],

typescript/solver/solvers/compactX/rules/checkExpirations.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ import { CompactXRule } from "../filler.js";
33

44
export function checkExpirations(): CompactXRule {
55
return async (parsedArgs) => {
6-
const chainId = parsedArgs.context.chainId;
7-
86
// Check if either compact or mandate has expired or is close to expiring
97
const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
108
const { compactExpirationBuffer, mandateExpirationBuffer } =
11-
metadata.chainInfo[chainId];
9+
metadata.chainInfo[parsedArgs.context.chainId];
1210

1311
if (
1412
BigInt(parsedArgs.context.compact.expires) <=

typescript/solver/solvers/compactX/rules/validateChainsAndTokens.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export function validateChainsAndTokens(): CompactXRule {
3939
}
4040

4141
// Validate destination token
42-
const mandateToken = parsedArgs.context.compact.mandate.token.toLowerCase();
42+
const mandateToken = parsedArgs.context.compact.mandate.token;
4343
const mandateChainTokens = getChainSupportedTokens(
4444
parsedArgs.context.compact.mandate.chainId,
4545
);

typescript/solver/solvers/compactX/rules/verifySignatures.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,20 @@
11
import type { CompactXRule } from "../filler.js";
22
import { TheCompactService } from "../services/TheCompactService.js";
3-
import { BroadcastRequestSchema } from "../types.js";
43
import { deriveClaimHash, log } from "../utils.js";
54
import { verifyBroadcastRequest } from "../validation/signature.js";
65

76
export function verifySignatures(): CompactXRule {
87
return async (parsedArgs, context) => {
9-
const { data: request, error: requestError } =
10-
BroadcastRequestSchema.safeParse(parsedArgs.context);
11-
12-
if (requestError) {
13-
return { error: requestError.message, success: false };
14-
}
15-
168
const theCompactService = new TheCompactService(context.multiProvider, log);
179

1810
// Derive and log claim hash
19-
const claimHash = deriveClaimHash(request.compact);
11+
const claimHash = deriveClaimHash(parsedArgs.context.compact);
2012

2113
// Set the claim hash before verification
22-
request.claimHash = claimHash;
14+
parsedArgs.context.claimHash = claimHash;
2315

2416
const { isValid, error } = await verifyBroadcastRequest(
25-
request,
17+
parsedArgs.context,
2618
theCompactService,
2719
);
2820

0 commit comments

Comments
 (0)