universal-autoloader
Version:
Universal plugin, that use the _file system_ scan, to load in a server all routes in a directory.
56 lines (54 loc) • 1.59 kB
text/typescript
type Method = 'get' | 'post' | 'put' | 'delete' | 'options' | 'patch' | 'all';
type App = Record<Method | string, ((route: string, handler: (req: unknown, res: unknown) => void) => void) | any>;
type ViteDevServer = {
ssrLoadModule: (url: string, opts?: {
fixStacktrace?: boolean;
}) => Promise<Record<string, any>>;
};
type AutoloadRoutesOptions = {
/**
* Pattern to search files of routes
* @example pattern only .ts files
* ```ts
* pattern: '**\/*.ts'
* ```
* @default '**\/*.{ts,tsx,mjs,js,jsx,cjs}'
*/
pattern?: string;
/**
* Prefix to add to routes
* @example prefix for APIs
* ```ts
* prefix: '/api'
* ```
* @default ''
*/
prefix?: string;
/**
* Directory to search routes
* @default '/routes'
*/
routesDir?: string;
/**
* Default method to use when the route filename doesn't use the (<METHOD>) pattern
* @default 'get'
*/
defaultMethod?: Method | string;
/**
* Vite dev server instance
* @default undefined
*/
viteDevServer?: ViteDevServer;
/**
* Skip the throw error when no routes are found
* @default false
*/
skipNoRoutes?: boolean;
/**
* Skip the import errors with the `default export` of a rotue file
* @default false
*/
skipImportErrors?: boolean;
};
declare const autoloadRoutes: (app: App, { pattern, prefix, routesDir, defaultMethod, viteDevServer, skipNoRoutes, skipImportErrors }: AutoloadRoutesOptions) => Promise<App>;
export { autoloadRoutes };