import type { PluginRegistry } from "../../../plugins/registry.js"; import { isProtectedPluginRoutePathFromContext, resolvePluginRoutePathContext, type PluginRoutePathContext, } from "./path-context.js"; import { findMatchingPluginHttpRoutes } from "./route-match.js"; export function matchedPluginRoutesRequireGatewayAuth( routes: readonly Pick[number], "auth">[], ): boolean { return routes.some((route) => route.auth === "gateway"); } export function shouldEnforceGatewayAuthForPluginPath( registry: PluginRegistry, pathnameOrContext: string | PluginRoutePathContext, ): boolean { const pathContext = typeof pathnameOrContext === "string" ? resolvePluginRoutePathContext(pathnameOrContext) : pathnameOrContext; if (pathContext.malformedEncoding || pathContext.decodePassLimitReached) { return true; } if (isProtectedPluginRoutePathFromContext(pathContext)) { return true; } return matchedPluginRoutesRequireGatewayAuth(findMatchingPluginHttpRoutes(registry, pathContext)); }