From 6088d6eadeb19fad182dfd1cc8b04eb99c40e8a0 Mon Sep 17 00:00:00 2001 From: Sven Date: Sun, 12 Apr 2026 14:31:02 +0200 Subject: [PATCH] fix: remove dead upgrade-chain entries from patch-ap-mastodon-misc Co-Authored-By: Claude Sonnet 4.6 --- scripts/patch-ap-mastodon-misc.mjs | 101 ----------------------------- 1 file changed, 101 deletions(-) diff --git a/scripts/patch-ap-mastodon-misc.mjs b/scripts/patch-ap-mastodon-misc.mjs index ba0f138b..562ea939 100644 --- a/scripts/patch-ap-mastodon-misc.mjs +++ b/scripts/patch-ap-mastodon-misc.mjs @@ -373,22 +373,6 @@ const PATCHES = [ }`, }, - // ── patch-inbox-skip-view-activity-parse: fromExpressRequest fix ────────── - { - name: "from-express-request-activity-json-fix", - files: apPath("lib/federation-bridge.js"), - marker: "// PeerTube activity+json body fix", - oldSnippet: ` if (ct.includes("application/json")) { - body = JSON.stringify(req.body); - } else if (ct.includes("application/x-www-form-urlencoded")) {`, - newSnippet: ` // PeerTube activity+json body fix - if (ct.includes("application/json") || ct.includes("activity+json") || ct.includes("ld+json")) { - // Use original raw bytes when available (set by createFedifyMiddleware buffer guard). - // JSON.stringify() changes byte layout, breaking Fedify's HTTP Signature Digest check. - body = req._rawBody || JSON.stringify(req.body); // raw body digest fix - } else if (ct.includes("application/x-www-form-urlencoded")) {`, - }, - // ── patch-inbox-skip-view-activity-parse: upgrade v1 raw-body fix ───────── { name: "from-express-request-raw-body-fix", @@ -427,91 +411,6 @@ const PATCHES = [ req.body = JSON.parse(_raw.toString("utf8"));`, }, - // ── patch-inbox-skip-view-activity-parse: v2 guard replacing v1 ─────────── - { - name: "inbox-skip-view-activity-parse-v2", - files: apPath("lib/federation-bridge.js"), - marker: "// PeerTube View parse skip v2", - oldSnippet: ` // Short-circuit PeerTube View (WatchAction) activities before Fedify - // attempts JSON-LD parsing. Fedify's vocab parser throws on PeerTube's - // Schema.org extensions (e.g. InteractionCounter), causing a - // "Failed to parse activity" error. Return 200 to prevent retries. - // PeerTube View parse skip - if (req.method === "POST" && req.body?.type === "View") { - return res.status(200).end(); - } - const request = fromExpressRequest(req);`, - newSnippet: ` // Short-circuit PeerTube View (WatchAction) activities before Fedify - // attempts JSON-LD parsing. Fedify's vocab parser throws on PeerTube's - // Schema.org extensions (e.g. InteractionCounter), causing a - // "Failed to parse activity" error. Return 200 to prevent retries. - // PeerTube View parse skip v2 - const _apct = req.headers["content-type"] || ""; - if ( - req.method === "POST" && - !req.body && - req.readable && - (_apct.includes("activity+json") || _apct.includes("ld+json")) - ) { - // Express doesn't parse application/activity+json, so buffer it ourselves. - const _chunks = []; - for await (const _chunk of req) { - _chunks.push(Buffer.isBuffer(_chunk) ? _chunk : Buffer.from(_chunk)); - } - const _raw = Buffer.concat(_chunks); // raw body digest fix - req._rawBody = _raw; // Preserve original bytes for Fedify HTTP Signature Digest verification - try { - req.body = JSON.parse(_raw.toString("utf8")); - } catch { - req.body = {}; - } - } - if (req.method === "POST" && req.body?.type === "View") { - return res.status(200).end(); - } - const request = fromExpressRequest(req);`, - }, - - // ── patch-inbox-skip-view-activity-parse: v2 guard on fresh file ────────── - { - name: "inbox-skip-view-activity-parse-v2-fresh", - files: apPath("lib/federation-bridge.js"), - marker: "// PeerTube View parse skip v2", - oldSnippet: ` return async (req, res, next) => { - try { - const request = fromExpressRequest(req);`, - newSnippet: ` return async (req, res, next) => { - try { - // Short-circuit PeerTube View (WatchAction) activities before Fedify - // attempts JSON-LD parsing. Fedify's vocab parser throws on PeerTube's - // Schema.org extensions (e.g. InteractionCounter), causing a - // "Failed to parse activity" error. Return 200 to prevent retries. - // PeerTube View parse skip v2 - const _apct = req.headers["content-type"] || ""; - if ( - req.method === "POST" && - !req.body && - req.readable && - (_apct.includes("activity+json") || _apct.includes("ld+json")) - ) { - // Express doesn't parse application/activity+json, so buffer it ourselves. - const _chunks = []; - for await (const _chunk of req) { - _chunks.push(Buffer.isBuffer(_chunk) ? _chunk : Buffer.from(_chunk)); - } - const _raw = Buffer.concat(_chunks); // raw body digest fix - req._rawBody = _raw; // Preserve original bytes for Fedify HTTP Signature Digest verification - try { - req.body = JSON.parse(_raw.toString("utf8")); - } catch { - req.body = {}; - } - } - if (req.method === "POST" && req.body?.type === "View") { - return res.status(200).end(); - } - const request = fromExpressRequest(req);`, - }, ]; // ── Run standard patches ───────────────────────────────────────────────────────