From b9894c687cc7b2a5822e6a1f287077cccd1b2475 Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Wed, 29 Apr 2026 20:40:28 +0200 Subject: [PATCH] fix: handle /assets/ requests before it reaches orpc --- src/routes/$username/$slug.tsx | 3 --- src/server.test.ts | 14 ++++++++++++++ src/server.ts | 9 +++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 src/server.test.ts diff --git a/src/routes/$username/$slug.tsx b/src/routes/$username/$slug.tsx index 09dd4104a..f7db7fa85 100644 --- a/src/routes/$username/$slug.tsx +++ b/src/routes/$username/$slug.tsx @@ -15,9 +15,6 @@ type LoaderData = Omit & { data: Re export const Route = createFileRoute("/$username/$slug")({ component: RouteComponent, - beforeLoad: async ({ location }) => { - console.log("/$username/$slug was invoked with pathname: ", location.pathname); - }, loader: async ({ context, params }) => { const { username, slug } = params; const resume = await context.queryClient.ensureQueryData( diff --git a/src/server.test.ts b/src/server.test.ts new file mode 100644 index 000000000..668acd14f --- /dev/null +++ b/src/server.test.ts @@ -0,0 +1,14 @@ +import { describe, expect, it } from "vite-plus/test"; + +import { isReservedPathRequest } from "./server"; + +describe("isReservedPathRequest", () => { + it("detects asset requests that should not be handled as public resumes", () => { + expect(isReservedPathRequest(new Request("https://example.com/assets/index-BNEstQDj.js"))).toBe(true); + expect(isReservedPathRequest(new Request("https://example.com/assets/_slug-BJEV_y42.js"))).toBe(true); + }); + + it("allows public resume routes", () => { + expect(isReservedPathRequest(new Request("https://example.com/amruthpillai/reactive-resume"))).toBe(false); + }); +}); diff --git a/src/server.ts b/src/server.ts index c83dd92c4..e1891105e 100644 --- a/src/server.ts +++ b/src/server.ts @@ -14,8 +14,17 @@ function setIfAbsent(headers: Headers, key: string, value: string) { if (!headers.has(key)) headers.set(key, value); } +const reservedPathPrefixes = ["/assets/"]; + +export function isReservedPathRequest(request: Request) { + const { pathname } = new URL(request.url); + return reservedPathPrefixes.some((prefix) => pathname.startsWith(prefix)); +} + export default createServerEntry({ async fetch(request) { + if (isReservedPathRequest(request)) return new Response(null, { status: 404 }); + const response = await handler.fetch(request); const headers = new Headers(response.headers); const contentType = headers.get("content-type") ?? "";