UNPKG

@lyleunderwood/streaming-zipper

Version:

Memory-efficient streaming ZIP creation with automatic backpressure control. Supports parallel reading + sequential writing for both Web Streams and Node.js streams with ZIP64 support.

84 lines 2.4 kB
/** * Write queue for sequential entry writing while maintaining ZIP structure */ import { EntryBuffer } from './entry-buffer.js'; import { DirectStreamEntry } from './direct-stream-entry.js'; export interface WriteQueueOptions { compression?: 'store' | 'deflate'; } export declare class WriteQueue { private outputController; private currentOffset; private centralDirectoryEntries; private options; private writeInProgress; constructor(options?: WriteQueueOptions); /** * Set the output controller for streaming data */ setOutputController(controller: ReadableStreamDefaultController<Uint8Array>): void; /** * Write an entry buffer to the output stream */ writeEntry(entryBuffer: EntryBuffer): Promise<void>; /** * Write a direct stream entry immediately to the output stream */ writeDirectStreamEntry(directEntry: DirectStreamEntry): Promise<void>; /** * Write the central directory to the output stream */ writeCentralDirectory(): Promise<{ centralDirOffset: number; centralDirSize: number; }>; /** * Get the current offset in the output stream */ getCurrentOffset(): number; /** * Get the number of entries written */ getEntryCount(): number; /** * Check if any write operations are in progress */ isWriteInProgress(): boolean; /** * Perform immediate direct stream write operation */ private performDirectStreamWrite; /** * Perform the actual entry write operation */ private performEntryWrite; /** * Create local file header for entry */ private createLocalFileHeader; /** * Create data descriptor for entry */ private createDataDescriptor; /** * Create central directory header for entry */ private createCentralDirectoryHeader; /** * Create local file header for direct stream entry */ private createDirectStreamLocalFileHeader; /** * Create data descriptor for direct stream entry */ private createDirectStreamDataDescriptor; /** * Create central directory header for direct stream entry */ private createDirectStreamCentralDirectoryHeader; /** * Write data to the output stream */ private writeToOutput; } //# sourceMappingURL=write-queue.d.ts.map