@analogjs/vite-plugin-nitro
Version:
A Vite plugin for adding a nitro API server
43 lines (42 loc) • 2.02 kB
TypeScript
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<void>;