From 103ef6d851c81b92feb9d9a2c101466b636fd5d8 Mon Sep 17 00:00:00 2001 From: Andrei O Date: Fri, 21 Mar 2025 21:17:00 +0200 Subject: [PATCH] chore: handle `InvalidJFSHeaderError` in `parseManifest` --- .changeset/little-berries-hang.md | 5 +++++ packages/frames.js/src/frame-parsers/farcasterV2.ts | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 .changeset/little-berries-hang.md diff --git a/.changeset/little-berries-hang.md b/.changeset/little-berries-hang.md new file mode 100644 index 000000000..f43ab249a --- /dev/null +++ b/.changeset/little-berries-hang.md @@ -0,0 +1,5 @@ +--- +"frames.js": minor +--- + +Handle `InvalidJFSHeaderError` in `parseManifest` for better error reporting diff --git a/packages/frames.js/src/frame-parsers/farcasterV2.ts b/packages/frames.js/src/frame-parsers/farcasterV2.ts index f149f4e4f..6dc9264f2 100644 --- a/packages/frames.js/src/frame-parsers/farcasterV2.ts +++ b/packages/frames.js/src/frame-parsers/farcasterV2.ts @@ -5,7 +5,7 @@ import { } from "@farcaster/frame-core"; import { z } from "zod"; import type { FarcasterManifest } from "../farcaster-v2/types"; -import { decodePayload, verify } from "../farcaster-v2/json-signature"; +import { decodePayload, verify, InvalidJFSHeaderError } from "../farcaster-v2/json-signature"; import { getMetaTag, removeInvalidDataFromObject } from "./utils"; import type { ParseResultFramesV2, @@ -331,7 +331,12 @@ async function parseManifest( reports: reporter.toObject(), }; } catch (e) { - if (e instanceof Error) { + if(e instanceof InvalidJFSHeaderError) { + reporter.error( + "fc:manifest", + `Failed to verify account association signature: InvalidJFSHeaderError` + ); + } else if (e instanceof Error) { reporter.error( "fc:manifest", `Failed to parse frame manifest: ${String(e)}`