import { ViteDevServer } from 'vite'; /** * Registers development server middleware by discovering and loading middleware files. * * This function: * 1. Discovers all TypeScript middleware files in the server/middleware directory * 2. Dynamically loads each middleware module using Vite's SSR module loader * 3. Registers each middleware handler with the Vite development server * 4. Handles middleware execution flow and error handling * * @param root The project root directory path * @param sourceRoot The source directory path (e.g., 'src') * @param viteServer The Vite development server instance * * Example usage: * await registerDevServerMiddleware('/workspace/my-app', 'src', viteServer); * * Sample middleware file paths that would be discovered: * - /workspace/my-app/src/server/middleware/auth.ts * - /workspace/my-app/src/server/middleware/cors.ts * - /workspace/my-app/src/server/middleware/logging.ts * - /workspace/my-app/src/server/middleware/validation.ts * * tinyglobby vs fast-glob comparison: * - Both support the same glob patterns for file discovery * - Both are efficient for finding middleware files * - tinyglobby is now used instead of fast-glob * - tinyglobby provides similar functionality with smaller bundle size * - tinyglobby's globSync returns absolute paths when absolute: true is set * * globSync options explained: * - dot: true - Includes files/directories that start with a dot (e.g., .env.middleware) * - absolute: true - Returns absolute file paths instead of relative paths * * Middleware execution flow: * 1. Request comes to Vite dev server * 2. Each registered middleware is executed in order * 3. If middleware returns a result, request processing stops * 4. If middleware returns no result, next middleware is called * 5. If no middleware handles the request, it continues to normal Vite processing */ export declare function registerDevServerMiddleware(root: string, sourceRoot: string, viteServer: ViteDevServer): Promise;