@farmfe/core
Version:
Farm is a extremely fast web build tool written in Rust. Farm can start a project in milliseconds and perform HMR within 10ms, making it much faster than similar tools like webpack and vite.
78 lines (77 loc) • 2.74 kB
TypeScript
import Koa from 'koa';
import { Compiler } from '../compiler/index.js';
import { DevServerMiddleware, NormalizedServerConfig, UserPreviewServerConfig, UserServerConfig } from '../config/index.js';
import { Logger } from '../utils/index.js';
import { FileWatcher } from '../watcher/index.js';
import { HmrEngine } from './hmr-engine.js';
import { Server as httpServer } from './type.js';
import WsServer from './ws.js';
/**
* Farm Dev Server, responsible for:
* * parse and normalize dev server options
* * launch http server based on options
* * compile the project in dev mode and serve the production
* * HMR middleware and websocket supported
*/
interface ServerUrls {
local: string[];
network: string[];
}
interface ImplDevServer {
createServer(options: UserServerConfig): void;
createDevServer(options: UserServerConfig): void;
createPreviewServer(options: UserServerConfig): void;
listen(): Promise<void>;
close(): Promise<void>;
getCompiler(): Compiler;
}
export declare class Server implements ImplDevServer {
private _app;
private restart_promise;
private compiler;
logger: Logger;
ws: WsServer;
config: NormalizedServerConfig & UserPreviewServerConfig;
hmrEngine?: HmrEngine;
server?: httpServer;
publicDir?: string;
publicPath?: string;
resolvedUrls?: ServerUrls;
watcher: FileWatcher;
constructor({ compiler, logger }: {
compiler?: Compiler | null;
logger: Logger;
});
getCompiler(): Compiler;
app(): Koa;
listen(): Promise<void>;
private compile;
startServer(serverOptions: UserServerConfig): Promise<void>;
handleServerError(error: Error & {
code?: string;
}, port: number, host: string | undefined): void;
close(): Promise<void>;
restart(promise: () => Promise<void>): Promise<void>;
private initializeKoaServer;
createServer(options: NormalizedServerConfig & UserPreviewServerConfig): Promise<void>;
createWebSocket(): void;
private invalidateVite;
createPreviewServer(options: UserPreviewServerConfig): Promise<void>;
createDevServer(options: NormalizedServerConfig): Promise<void>;
static resolvePortConflict(normalizedDevConfig: NormalizedServerConfig, logger: Logger): Promise<void>;
/**
* Add listening files for root manually
*
* > listening file with root must as file.
*
* @param root
* @param deps
*/
addWatchFile(root: string, deps: string[]): void;
applyMiddlewares(internalMiddlewares?: DevServerMiddleware[]): void;
setCompiler(compiler: Compiler): void;
private applyPreviewServerMiddlewares;
private applyServerMiddlewares;
private displayServerUrls;
}
export {};