import { EventEmitter } from 'node:events'; import { IncomingMessage } from 'node:http'; import { Readable } from 'node:stream'; import { PaginationResult } from '@visulima/pagination'; import { U as UploadFile, B as BaseStorage, a as UploadError, b as UploadEventType } from "./storage.d-C9EdfTf1.js"; import { M as MediaTransformer } from "./media-transformer.d-Co37isNg.js"; type WebRequest = globalThis.Request; type WebResponse = globalThis.Response; interface BaseResponse { headers: Record; statusCode: number; } interface StreamingResponse extends BaseResponse { /** Total size of the stream (for Content-Length header) */ size?: number; /** Stream of data to send */ stream: Readable; } interface RequestEvent { request: Pick; } type AsyncHandler = (request: Request, response: Response) => Promise | ResponseList | StreamingResponse>; type Handlers = "delete" | "download" | "get" | "head" | "options" | "patch" | "post" | "put"; type MethodHandler = { [h in Handlers]?: AsyncHandler; }; type UploadEvent = RequestEvent & TFile; type UploadErrorEvent = RequestEvent & UploadError; type ResponseFile = BaseResponse & TFile & { /** Optional stream for streaming responses instead of content buffer */ stream?: Readable; }; type ResponseList = BaseResponse & { data: PaginationResult | TFile[]; }; interface BaseHandler extends EventEmitter { emit: ((event: "error", error: UploadErrorEvent) => boolean) & ((event: UploadEventType, payload: UploadEvent) => boolean); fetch: (request: WebRequest) => Promise; off: ((event: "error", listener: (error: UploadErrorEvent) => void) => this) & ((event: UploadEventType, listener: (payload: UploadEvent) => void) => this); on: ((event: "error", listener: (error: UploadErrorEvent) => void) => this) & ((event: UploadEventType, listener: (payload: UploadEvent) => void) => this); } interface UploadOptions { disableTerminationForFinishedUploads?: boolean; /** Maximum file size for multipart parser (default: min(storage.maxUploadSize, 1GB)) */ maxFileSize?: number; /** Maximum header size for multipart parser (default: 64KB) */ maxHeaderSize?: number; mediaTransformer?: MediaTransformer; storage: BaseStorage; } export { AsyncHandler as A, BaseHandler as B, Handlers as H, MethodHandler as M, ResponseFile as R, UploadOptions as U, ResponseList as a, RequestEvent as b, UploadErrorEvent as c, UploadEvent as d };