Skip to content

Commit b5ea4bf

Browse files
committed
api: handle json in engine error messages
1 parent 54bcec4 commit b5ea4bf

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

apps/api/src/utils/error.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,12 @@ describe("error utils", () => {
4242
expect(normalizeEngineErrorMessage("Unknown Error - test error")).toBe(
4343
"Unknown Error - test error",
4444
);
45+
expect(
46+
normalizeEngineErrorMessage(
47+
'{"code":3,"message":"failed with 50004597 gas: insufficient funds for gas * price + value: address 0xafCB379C0B76265bCb8432ab776A2641F0355Eb3 have 0 want 100000000000000"}',
48+
),
49+
).toBe(
50+
"failed with 50004597 gas: insufficient funds for gas * price + value: address 0xafCB379C0B76265bCb8432ab776A2641F0355Eb3 have 0 want 100000000000000",
51+
);
4552
});
4653
});

apps/api/src/utils/error.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,17 @@ const ENGINE_ERROR_MESSAGE_MAP = {
5757
} as const;
5858

5959
export const normalizeEngineErrorMessage = (rawMessage: string) => {
60+
try {
61+
const error: object = JSON.parse(rawMessage);
62+
if ("message" in error && typeof error.message === "string") {
63+
return error.message;
64+
}
65+
} catch {
66+
// Ignore error if message wasn't valid JSON and try regular expression matches instead
67+
}
68+
6069
const groups =
61-
/(?:reason: '(.*?)' at)|(?:reason="execution reverted: (.*?)")|(?:eth_sendUserOperation error: {"message":"(.*?)"|(?:Simulation failed: TransactionError: Error - (.*))|(?:^Simulation failed: (.*))|(?:^Error - (.*)))/gi.exec(
70+
/(?:reason: '(.*?)' at)|(?:reason="execution reverted: (.*?)")|(?:eth_sendUserOperation error: {"message":"(.*?)")|(?:Simulation failed: TransactionError: Error - (.*))|(?:^Simulation failed: (.*))|(?:^Error - (.*))/gi.exec(
6271
rawMessage,
6372
);
6473
const message = groups?.slice(1).find((group) => group) ?? rawMessage;

0 commit comments

Comments
 (0)