From 0944e5fb33bbd5be645b884a50147470cc18e239 Mon Sep 17 00:00:00 2001 From: vimzh Date: Sun, 24 May 2026 11:54:53 +0530 Subject: [PATCH] fix(tweet-preview): reject array inputs in parseTweetData MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous guard accepted any non-null `typeof === "object"`, which means `JSON.parse("[]")` or `JSON.parse("[1,2,3]")` slipped through and reached `enrichTweet` — exactly the class of crash the helper was added to prevent. Add an `Array.isArray` check so only plain objects are passed downstream. --- apps/web/components/document-cards/tweet-preview.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/web/components/document-cards/tweet-preview.tsx b/apps/web/components/document-cards/tweet-preview.tsx index 894d4d12..984b469c 100644 --- a/apps/web/components/document-cards/tweet-preview.tsx +++ b/apps/web/components/document-cards/tweet-preview.tsx @@ -122,7 +122,9 @@ function parseTweetData(data: Tweet | string): Tweet | null { if (typeof data !== "string") return data try { const parsed = JSON.parse(data) - return parsed && typeof parsed === "object" ? (parsed as Tweet) : null + return parsed && typeof parsed === "object" && !Array.isArray(parsed) + ? (parsed as Tweet) + : null } catch { return null }