import { BootstrapConstructor } from "./bootstrap-constructor"; import { ApplicationBuilderMiddleware } from "./application-builder"; import { HelmetOptions } from "helmet"; import { IRouter } from "express"; import { CompressionOptions } from "compression"; export type ApplicationRouter = { hostingPath: string; router: IRouter; }; /** * A convenience class that provides a way to create middleware instances without the need to manually create them. */ export declare class Convenience { private readonly customConstructor; /** * Creates a new instance of the convenience class. * @param DIConstructor The dependency injection constructor to use to create instances of middleware. */ constructor(customConstructor?: BootstrapConstructor); /** * Creates a new instance of the body parser middleware for url encoding. * @param urlEncodingOptions The options to use for the url encoding middleware. * @param urlEncodingOptions.extended Whether to use the extended query string parsing. Default is true. * @param urlEncodingOptions.limit The maximum size of the url encoded payload to parse. Can be a string (e.g., "1mb") or a number (in bytes). Default is '100kb'. * @param urlEncodingOptions.parameterLimit The maximum number of parameters to parse in the url encoded payload. Default is 1000. * @returns {ApplicationBuilderMiddleware} A new instance of the body parser middleware for url encoding. */ bodyParserURLEncodingMiddleware(urlEncodingOptions?: { extended?: boolean; limit?: string | number; parameterLimit?: number; }): ApplicationBuilderMiddleware; /** * Creates a new instance of the body parser middleware for JSON encoding. * @param jsonOptions The options to use for the JSON encoding middleware. * @param jsonOptions.limit The maximum size of the JSON payload to parse. Can be a string (e.g., "1mb") or a number (in bytes). Default is '1mb'. * @param jsonOptions.strict If true, only objects and arrays will be parsed. Default is true. * @param jsonOptions.type The media type(s) to parse. Can be a string, an array of strings, or a function that returns a boolean. Default is 'application/json'. * @returns {ApplicationBuilderMiddleware} A new instance of the body parser middleware for JSON encoding. */ bodyParserJSONEncodingMiddleware(jsonOptions?: { limit?: string | number; strict?: boolean; type?: string | string[] | ((req: any) => boolean); }): ApplicationBuilderMiddleware; /** * Creates a new instance of the body parser middleware for raw encoding. * @param helmetOptions The options to use for the raw encoding middleware. * @returns {ApplicationBuilderMiddleware} A new instance of the helmet middleware. */ helmetMiddleware(helmetOptions?: Readonly): (req: import("http").IncomingMessage, res: import("http").ServerResponse, next: (err?: unknown) => void) => void; /** * Creates a new instance of the swagger API documentation middleware. * @param swaggerDocument The swagger document to use for the API documentation, typically a json object. * @param hostPath The host path to use for the swagger API documentation. * @returns {ApplicationRouter} A new instance of the swagger API documentation middleware. */ swaggerAPIDocs(swaggerDocument: any, hostPath?: string): ApplicationRouter; /** * Injects a specified object into the request under a given property name. * @param requestPropertyName - The name of the property to add to the request object. * @param object - The object to inject into the request. * @returns {ApplicationBuilderMiddleware} A middleware function that injects the object into the request. */ injectInRequestMiddleware(requestPropertyName: string, object: any): ApplicationBuilderMiddleware; /** * Creates a new instance of the compression middleware. * @param compressionOptions The options to use for the compression middleware. * @returns {ApplicationBuilderMiddleware} A new instance of the compression middleware. */ compressionMiddleware(compressionOptions?: CompressionOptions): ApplicationBuilderMiddleware; /** * Creates a new instance of the static file serving middleware. * @param staticPath The path to the static files to serve. * @returns {ApplicationBuilderMiddleware} A new instance of the static file serving middleware. */ staticMiddleware(staticPath: string): ApplicationBuilderMiddleware; /** * Encodes a string payload into a ReadableStream. * @param payload The string payload to encode. * @returns An object containing the ReadableStream and the size of the encoded payload. */ encodeBodyStream(payload: string): { stream: ReadableStream; size: number; }; /** * Sends an HTTP request with GZIP compression if specified. * @param httpVerb "GET", "POST", "PUT", "DELETE", etc. * @param url The URL to send the request to. * @param headers The headers to include in the request. * @param bodyStream The body stream to send with the request, Default undefined. * @param shouldCompress Whether to compress the request body using GZIP. Default is true when body is present. * @returns A promise that resolves to the response of the HTTP request. */ compressibleRequestGZIP(httpVerb: string, url: URL, headers: Record, bodyStream?: ReadableStream | undefined, shouldCompress?: boolean, context?: typeof globalThis): Promise; }