@obsidize/tar-browserify
Version:
Browser-based tar utility for packing and unpacking tar files (stream-capable)
50 lines (49 loc) • 2.17 kB
TypeScript
import { ArchiveContext } from '../common/archive-context';
import { AsyncUint8ArrayLike } from '../common/async-uint8-array';
import { AsyncUint8ArrayIterator, AsyncUint8ArrayIteratorInput } from '../common/async-uint8-array-iterator';
import { TarHeader } from '../header/tar-header';
import { ArchiveEntry } from './archive-entry';
/**
* Errors that will be thrown if the reader encounters an invalid data layout
*/
export declare enum ArchiveReadError {
/**
* Occurs when the reader fails to fully load the content buffer of an entry
* due to the input data stream ending prematurely.
*/
ERR_ENTRY_CONTENT_MIN_BUFFER_LENGTH_NOT_MET = "ERR_ENTRY_CONTENT_MIN_BUFFER_LENGTH_NOT_MET",
/**
* Occurs when the reader fails to fully load a PAX header
* due to the input data stream ending prematurely.
*/
ERR_HEADER_PAX_MIN_BUFFER_LENGTH_NOT_MET = "ERR_HEADER_PAX_MIN_BUFFER_LENGTH_NOT_MET",
/**
* Occurs when the reader fails to fully load a PAX header
* due to the third and final segment not appearing in the input data stream.
*/
ERR_HEADER_MISSING_POST_PAX_SEGMENT = "ERR_HEADER_MISSING_POST_PAX_SEGMENT"
}
/**
* Generic utility for parsing tar entries from a stream of octets via `AsyncUint8ArrayIterator`
*/
export declare class ArchiveReader implements ArchiveContext, AsyncIterableIterator<ArchiveEntry> {
private readonly bufferIterator;
private mGlobalPaxHeaders;
private mBufferCache;
private mOffset;
private mHasSyncInput;
constructor(bufferIterator: AsyncUint8ArrayIterator);
static withInput(input: AsyncUint8ArrayIteratorInput): ArchiveReader;
[Symbol.asyncIterator](): AsyncIterableIterator<ArchiveEntry>;
get source(): AsyncUint8ArrayLike;
get globalPaxHeaders(): TarHeader[];
readAllEntries(): Promise<ArchiveEntry[]>;
next(): Promise<IteratorResult<ArchiveEntry>>;
private clearBufferCache;
private getBufferCacheSlice;
private tryRequireBufferSize;
private requireBufferSize;
private loadNextChunk;
private tryParseNextEntry;
private tryParseNextHeader;
}