From b76ddb0fd66dc717894471179636994e076efc2a Mon Sep 17 00:00:00 2001 From: Oscar Busk Date: Fri, 18 Nov 2022 09:57:48 +0100 Subject: [PATCH] Fix segment being encoded. Related: vercel/next.js#42823 --- src/app/[...parts]/page.tsx | 3 ++- src/lib/decodeParts.ts | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 src/lib/decodeParts.ts diff --git a/src/app/[...parts]/page.tsx b/src/app/[...parts]/page.tsx index 0a03cbcd..4b8146cf 100644 --- a/src/app/[...parts]/page.tsx +++ b/src/app/[...parts]/page.tsx @@ -5,6 +5,7 @@ import { ViewType } from "react-diff-view"; import bundlephobia from "^/lib/api/bundlephobia"; import packagephobia from "^/lib/api/packagephobia"; import TIMED_OUT from "^/lib/api/TimedOut"; +import decodePartts from "^/lib/decodeParts"; import { DEFAULT_DIFF_FILES_GLOB } from "^/lib/default-diff-files"; import destination from "^/lib/destination"; import doDiff, { DiffError } from "^/lib/diff"; @@ -29,7 +30,7 @@ const DiffPage = async ({ const headersList = headers(); const { diffFiles, ...optionsQuery } = searchParams; - const specsOrVersions = splitParts(parts); + const specsOrVersions = splitParts(decodePartts(parts)); const { redirect: redirectTarget, canonicalSpecs } = await destination( specsOrVersions, ); diff --git a/src/lib/decodeParts.ts b/src/lib/decodeParts.ts new file mode 100644 index 00000000..c7755f1a --- /dev/null +++ b/src/lib/decodeParts.ts @@ -0,0 +1,8 @@ +const decodePartts = (parts: string | string[] | undefined) => + parts == null + ? parts + : Array.isArray(parts) + ? parts.map(decodeURIComponent) + : decodeURIComponent(parts); + +export default decodePartts;