Skip to content

Commit bc79181

Browse files
committed
chore(passport): improve passport post to relayer error message
1 parent 4b71080 commit bc79181

2 files changed

Lines changed: 30 additions & 1 deletion

File tree

packages/passport/sdk/src/zkEvm/relayerClient.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ describe('relayerClient', () => {
4444
const data = '0x123';
4545

4646
(global.fetch as jest.Mock).mockResolvedValue({
47+
ok: true,
48+
text: () => Promise.resolve(JSON.stringify({ result: transactionHash })),
4749
json: () => ({
4850
result: transactionHash,
4951
}),
@@ -82,6 +84,8 @@ describe('relayerClient', () => {
8284
};
8385

8486
(global.fetch as jest.Mock).mockResolvedValue({
87+
ok: true,
88+
text: () => Promise.resolve(JSON.stringify({ result: relayerTransaction })),
8589
json: () => ({
8690
result: relayerTransaction,
8791
}),
@@ -118,6 +122,8 @@ describe('relayerClient', () => {
118122
}];
119123

120124
(global.fetch as jest.Mock).mockResolvedValue({
125+
ok: true,
126+
text: () => Promise.resolve(JSON.stringify({ result: feeOptions })),
121127
json: () => ({
122128
result: feeOptions,
123129
}),
@@ -152,6 +158,8 @@ describe('relayerClient', () => {
152158
const relayerSignature = '0x123';
153159

154160
(global.fetch as jest.Mock).mockResolvedValue({
161+
ok: true,
162+
text: () => Promise.resolve(JSON.stringify({ result: relayerSignature })),
155163
json: () => ({
156164
result: relayerSignature,
157165
}),
@@ -186,6 +194,8 @@ describe('relayerClient', () => {
186194
const relayerSignature = '0x123';
187195

188196
(global.fetch as jest.Mock).mockResolvedValue({
197+
ok: true,
198+
text: () => Promise.resolve(JSON.stringify({ result: relayerSignature })),
189199
json: () => ({
190200
result: relayerSignature,
191201
}),

packages/passport/sdk/src/zkEvm/relayerClient.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@ export class RelayerClient {
102102
this.authManager = authManager;
103103
}
104104

105+
private static getResponsePreview(text: string): string {
106+
return text.length > 100
107+
? `${text.substring(0, 50)}...${text.substring(text.length - 50)}`
108+
: text;
109+
}
110+
105111
private async postToRelayer<T>(request: RelayerTransactionRequest): Promise<T> {
106112
const body: RelayerTransactionRequest & JsonRpc = {
107113
id: 1,
@@ -120,7 +126,20 @@ export class RelayerClient {
120126
body: JSON.stringify(body),
121127
});
122128

123-
const jsonResponse = await response.json();
129+
if (!response.ok) {
130+
const responseText = await response.text();
131+
const preview = RelayerClient.getResponsePreview(responseText);
132+
throw new Error(`Relayer HTTP error: ${response.status} ${response.statusText}. Content: "${preview}"`);
133+
}
134+
135+
const responseText = await response.text();
136+
let jsonResponse;
137+
try {
138+
jsonResponse = JSON.parse(responseText);
139+
} catch (parseError) {
140+
const preview = RelayerClient.getResponsePreview(responseText);
141+
throw new Error(`Relayer JSON parse error: ${parseError instanceof Error ? parseError.message : 'Unknown error'}. Content: "${preview}"`);
142+
}
124143
if (jsonResponse.error) {
125144
throw jsonResponse.error;
126145
}

0 commit comments

Comments
 (0)