@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
TypeScript
/**
* 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