/// /// 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 {import("fs").ReadStream} ReadStream */ /** * @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] */ /** * @typedef {Object} ResponseData * @property {string | Buffer | ReadStream} data * @property {number} byteLength */ /** * @template {IncomingMessage} RequestInternal * @template {ServerResponse} ResponseInternal * @callback ModifyResponseData * @param {RequestInternal} req * @param {ResponseInternal} res * @param {string | Buffer | ReadStream} data * @param {number} byteLength * @return {ResponseData} */ /** * @template {IncomingMessage} RequestInternal * @template {ServerResponse} ResponseInternal * @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} RequestInternal * @template {ServerResponse} ResponseInternal * @typedef {Record | Array<{ key: string, value: number | string }> | ((req: RequestInternal, res: ResponseInternal, context: Context) => void | undefined | Record) | undefined} Headers */ /** * @template {IncomingMessage} RequestInternal * @template {ServerResponse} ResponseInternal * @typedef {Object} Options * @property {{[key: string]: string}} [mimeTypes] * @property {string | undefined} [mimeTypeDefault] * @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] * @property {ModifyResponseData} [modifyResponseData] */ /** * @template {IncomingMessage} RequestInternal * @template {ServerResponse} ResponseInternal * @callback Middleware * @param {RequestInternal} req * @param {ResponseInternal} 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} RequestInternal * @template {ServerResponse} ResponseInternal * @typedef {Object} AdditionalMethods * @property {GetFilenameFromUrl} getFilenameFromUrl * @property {WaitUntilValid} waitUntilValid * @property {Invalidate} invalidate * @property {Close} close * @property {Context} context */ /** * @template {IncomingMessage} RequestInternal * @template {ServerResponse} ResponseInternal * @typedef {Middleware & AdditionalMethods} API */ /** * @template {IncomingMessage} RequestInternal * @template {ServerResponse} ResponseInternal * @param {Compiler | MultiCompiler} compiler * @param {Options} [options] * @returns {API} */ declare function wdm< RequestInternal extends import("http").IncomingMessage, ResponseInternal extends ServerResponse >( compiler: Compiler | MultiCompiler, options?: Options | undefined ): API; declare namespace wdm { export { Schema, Compiler, MultiCompiler, Configuration, Stats, MultiStats, ReadStream, ExtendedServerResponse, IncomingMessage, ServerResponse, NextFunction, WatchOptions, Watching, MultiWatching, OutputFileSystem, Logger, Callback, ResponseData, ModifyResponseData, 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< RequestInternal extends import("http").IncomingMessage, ResponseInternal extends ServerResponse > = { mimeTypes?: | { [key: string]: string; } | undefined; mimeTypeDefault?: 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; modifyResponseData?: | ModifyResponseData | undefined; }; type API< RequestInternal extends import("http").IncomingMessage, ResponseInternal 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 ReadStream = import("fs").ReadStream; 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?: import("fs").StatSyncFn; 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 ResponseData = { data: string | Buffer | ReadStream; byteLength: number; }; type ModifyResponseData< RequestInternal extends import("http").IncomingMessage, ResponseInternal extends ServerResponse > = ( req: RequestInternal, res: ResponseInternal, data: string | Buffer | ReadStream, byteLength: number ) => ResponseData; type Context< RequestInternal extends import("http").IncomingMessage, ResponseInternal extends ServerResponse > = { state: boolean; stats: Stats | MultiStats | undefined; callbacks: Callback[]; options: Options; compiler: Compiler | MultiCompiler; watching: Watching | MultiWatching; logger: Logger; outputFileSystem: OutputFileSystem; }; type Headers< RequestInternal extends import("http").IncomingMessage, ResponseInternal extends ServerResponse > = | Record | { key: string; value: number | string; }[] | (( req: RequestInternal, res: ResponseInternal, context: Context ) => void | undefined | Record) | undefined; type Middleware< RequestInternal extends import("http").IncomingMessage, ResponseInternal extends ServerResponse > = ( req: RequestInternal, res: ResponseInternal, 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< RequestInternal extends import("http").IncomingMessage, ResponseInternal extends ServerResponse > = { getFilenameFromUrl: GetFilenameFromUrl; waitUntilValid: WaitUntilValid; invalidate: Invalidate; close: Close; context: Context; };