mixpart
Version:
High-performance streaming multipart/mixed parser for Node.js
39 lines (37 loc) • 1.38 kB
TypeScript
/**
* Multipart message part containing headers and payload stream
*/
interface MultipartMessage {
headers: Headers;
payload: ReadableStream<Uint8Array>;
}
/**
* Error thrown during multipart parsing
*/
declare class MultipartParseError extends Error {
constructor(message: string);
}
/**
* Parser configuration options
*/
interface ParserOptions {
/** Maximum size for header buffer (default: 64KB) */
maxHeaderSize?: number;
/** Maximum size for boundary buffer (default: 8KB) */
maxBoundaryBuffer?: number;
}
/**
* Extract boundary from Content-Type header
*/
declare function extractBoundary(contentType: string): string;
/**
* Streaming multipart/mixed parser using async generators
* Parses multipart messages as they arrive without loading everything into memory
* Each message payload is a ReadableStream for true streaming
*
* Uses clean producer-consumer pattern to prevent deadlocks when message payloads
* span multiple network chunks. The producer continuously reads and parses chunks
* while the consumer yields messages, ensuring payload streams receive data properly.
*/
declare function parseMultipartStream(response: Response, options?: ParserOptions): AsyncGenerator<MultipartMessage, void, unknown>;
export { type MultipartMessage, MultipartParseError, type ParserOptions, extractBoundary, parseMultipartStream };