import { clerkMiddleware, createRouteMatcher } from "@clerk/nextjs/server"; const isPublicRoute = createRouteMatcher([ "/", "/shop(.*)", "/legal(.*)", "/contact", "/help", "/sign-in(.*)", "/sign-up(.*)", "/api/health", // Guest checkout API and post-payment success page are public // (user has not yet created an account at this point in the purchase flow) "/api/checkout/guest", "/checkout/success(.*)", // The checkout page itself is public — unauthenticated users can initiate payment "/checkout/(.*)", ]); export default clerkMiddleware(async (auth, req) => { if (!isPublicRoute(req)) { await auth.protect(); } }); export const config = { matcher: [ "/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)", "/(api|trpc)(.*)", ], };