import type { ViteMockOptions } from './types'; import type { Plugin } from 'vite'; import { ResolvedConfig } from 'vite'; import { createMockServer, requestMiddleware } from './createMockServer'; export function viteMockServe(opt: ViteMockOptions = {}): Plugin { let isDev = false; let config: ResolvedConfig; return { name: 'vite:mock', enforce: 'pre' as const, configResolved(resolvedConfig) { config = resolvedConfig; isDev = config.command === 'serve'; isDev && createMockServer(opt, config); }, configureServer: async ({ middlewares }) => { const { enable = isDev } = opt; if (!enable) { return; } const middleware = await requestMiddleware(opt); middlewares.use(middleware); }, }; } export * from './types';