50 lines · 1.7 KB · TypeScript
RawDownload
// ---------------------------------------------------------------------------// Marketing routes — proxied to the marketing worker via service binding.//// On the production domain (`executor.sh`), marketing paths and the// unauthenticated landing page are served by the separate `executor-marketing`// worker. This module deliberately has no TanStack Start or cloud application// imports: the Worker entry calls it before loading the Start server graph.// --------------------------------------------------------------------------- import { parseCookie } from "../auth/cookies"; const MARKETING_PATHS = [  "/home",  "/setup",  "/privacy",  "/terms",  "/about-executor",  "/google-oauth",  "/google-workspace",  "/blog",  "/llms.txt",  "/api/detect",  "/_astro",  "/authors",  "/og-image.png",  "/pattern-graph-paper.svg",]; const SESSION_COOKIE = "wos-session"; /** Whether an exact pathname belongs to the public marketing worker. */export const isMarketingPath = (pathname: string): boolean =>  MARKETING_PATHS.some((p) => pathname === p || pathname.startsWith(`${p}/`)); /** * Project a production request onto the marketing service-binding request. * Returns `null` when the cloud application owns the request instead. */export const marketingProxyRequest = (request: Request): Request | null => {  const url = new URL(request.url);  if (url.hostname !== "executor.sh") return null;   const shouldProxy =    isMarketingPath(url.pathname) ||    (url.pathname === "/" && !parseCookie(request.headers.get("cookie"), SESSION_COOKIE));  if (!shouldProxy) return null;   if (url.pathname === "/home") url.pathname = "/";  return new Request(url, request);};