import { NextRequest, NextResponse } from "next/server";
import { build } from "@server/build";

export function middleware(request: NextRequest) {
    // If build is OSS, block access to private routes
    if (build === "oss") {
        const pathname = request.nextUrl.pathname;

        // Define private route patterns that should be blocked in OSS build
        const privateRoutes = [
            "/settings/billing",
            "/settings/remote-exit-nodes",
            "/settings/idp",
            "/auth/org"
        ];

        // Check if current path matches any private route pattern
        const isPrivateRoute = privateRoutes.some((route) =>
            pathname.includes(route)
        );

        if (isPrivateRoute) {
            // Return 404 to make it seem like the route doesn't exist
            return new NextResponse(null, { status: 404 });
        }
    }

    return NextResponse.next();
}

export const config = {
    matcher: [
        /*
         * Match all request paths except for the ones starting with:
         * - api (API routes)
         * - _next/static (static files)
         * - _next/image (image optimization files)
         * - favicon.ico (favicon file)
         */
        "/((?!api|_next/static|_next/image|favicon.ico).*)"
    ]
};
