/// export = wdm; /** @typedef {import("schema-utils/declarations/validate").Schema} Schema */ /** @typedef {import("webpack").Compiler} Compiler */ /** @typedef {import("webpack").MultiCompiler} MultiCompiler */ /** @typedef {import("webpack").Configuration} Configuration */ /** @typedef {import("webpack").Stats} Stats */ /** @typedef {import("webpack").MultiStats} MultiStats */ /** * @typedef {Object} ExtendedServerResponse * @property {{ webpack?: { devMiddleware?: Context } }} [locals] */ /** @typedef {import("http").IncomingMessage} IncomingMessage */ /** @typedef {import("http").ServerResponse & ExtendedServerResponse} ServerResponse */ /** * @callback NextFunction * @param {any} [err] * @return {void} */ /** * @typedef {NonNullable} WatchOptions */ /** * @typedef {Compiler["watching"]} Watching */ /** * @typedef {ReturnType} MultiWatching */ /** * @typedef {Compiler["outputFileSystem"] & { createReadStream?: import("fs").createReadStream, statSync?: import("fs").statSync, lstat?: import("fs").lstat, readFileSync?: import("fs").readFileSync }} OutputFileSystem */ /** @typedef {ReturnType} Logger */ /** * @callback Callback * @param {Stats | MultiStats} [stats] */ /** * @template {IncomingMessage} Request * @template {ServerResponse} Response * @typedef {Object} Context * @property {boolean} state * @property {Stats | MultiStats | undefined} stats * @property {Callback[]} callbacks * @property {Options} options * @property {Compiler | MultiCompiler} compiler * @property {Watching | MultiWatching} watching * @property {Logger} logger * @property {OutputFileSystem} outputFileSystem */ /** * @template {IncomingMessage} Request * @template {ServerResponse} Response * @typedef {Record | Array<{ key: string, value: number | string }> | ((req: Request, res: Response, context: Context) => void | undefined | Record) | undefined} Headers */ /** * @template {IncomingMessage} Request * @template {ServerResponse} Response * @typedef {Object} Options * @property {{[key: string]: string}} [mimeTypes] * @property {boolean | ((targetPath: string) => boolean)} [writeToDisk] * @property {string} [methods] * @property {Headers} [headers] * @property {NonNullable["publicPath"]} [publicPath] * @property {Configuration["stats"]} [stats] * @property {boolean} [serverSideRender] * @property {OutputFileSystem} [outputFileSystem] * @property {boolean | string} [index] */ /** * @template {IncomingMessage} Request * @template {ServerResponse} Response * @callback Middleware * @param {Request} req * @param {Response} res * @param {NextFunction} next * @return {Promise} */ /** * @callback GetFilenameFromUrl * @param {string} url * @returns {string | undefined} */ /** * @callback WaitUntilValid * @param {Callback} callback */ /** * @callback Invalidate * @param {Callback} callback */ /** * @callback Close * @param {(err: Error | null | undefined) => void} callback */ /** * @template {IncomingMessage} Request * @template {ServerResponse} Response * @typedef {Object} AdditionalMethods * @property {GetFilenameFromUrl} getFilenameFromUrl * @property {WaitUntilValid} waitUntilValid * @property {Invalidate} invalidate * @property {Close} close * @property {Context} context */ /** * @template {IncomingMessage} Request * @template {ServerResponse} Response * @typedef {Middleware & AdditionalMethods} API */ /** * @template {IncomingMessage} Request * @template {ServerResponse} Response * @param {Compiler | MultiCompiler} compiler * @param {Options} [options] * @returns {API} */ declare function wdm< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse >( compiler: Compiler | MultiCompiler, options?: Options | undefined ): API; declare namespace wdm { export { Schema, Compiler, MultiCompiler, Configuration, Stats, MultiStats, ExtendedServerResponse, IncomingMessage, ServerResponse, NextFunction, WatchOptions, Watching, MultiWatching, OutputFileSystem, Logger, Callback, Context, Headers, Options, Middleware, GetFilenameFromUrl, WaitUntilValid, Invalidate, Close, AdditionalMethods, API, }; } type ServerResponse = import("http").ServerResponse & ExtendedServerResponse; type Compiler = import("webpack").Compiler; type MultiCompiler = import("webpack").MultiCompiler; type Options< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse > = { mimeTypes?: | { [key: string]: string; } | undefined; writeToDisk?: boolean | ((targetPath: string) => boolean) | undefined; methods?: string | undefined; headers?: Headers; publicPath?: NonNullable["publicPath"]; stats?: Configuration["stats"]; serverSideRender?: boolean | undefined; outputFileSystem?: OutputFileSystem | undefined; index?: string | boolean | undefined; }; type API< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse > = Middleware & AdditionalMethods; type Schema = import("schema-utils/declarations/validate").Schema; type Configuration = import("webpack").Configuration; type Stats = import("webpack").Stats; type MultiStats = import("webpack").MultiStats; type ExtendedServerResponse = { locals?: | { webpack?: | { devMiddleware?: | Context | undefined; } | undefined; } | undefined; }; type IncomingMessage = import("http").IncomingMessage; type NextFunction = (err?: any) => void; type WatchOptions = NonNullable; type Watching = Compiler["watching"]; type MultiWatching = ReturnType; type OutputFileSystem = Compiler["outputFileSystem"] & { createReadStream?: typeof import("fs").createReadStream; statSync?: typeof import("fs").statSync; lstat?: typeof import("fs").lstat; readFileSync?: typeof import("fs").readFileSync; }; type Logger = ReturnType; type Callback = ( stats?: import("webpack").Stats | import("webpack").MultiStats | undefined ) => any; type Context< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse > = { state: boolean; stats: Stats | MultiStats | undefined; callbacks: Callback[]; options: Options; compiler: Compiler | MultiCompiler; watching: Watching | MultiWatching; logger: Logger; outputFileSystem: OutputFileSystem; }; type Headers< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse > = | Record | { key: string; value: number | string; }[] | (( req: Request, res: Response, context: Context ) => void | undefined | Record) | undefined; type Middleware< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse > = (req: Request, res: Response, next: NextFunction) => Promise; type GetFilenameFromUrl = (url: string) => string | undefined; type WaitUntilValid = (callback: Callback) => any; type Invalidate = (callback: Callback) => any; type Close = (callback: (err: Error | null | undefined) => void) => any; type AdditionalMethods< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse > = { getFilenameFromUrl: GetFilenameFromUrl; waitUntilValid: WaitUntilValid; invalidate: Invalidate; close: Close; context: Context; };