UNPKG

@tokenizer/range

Version:
53 lines (52 loc) 2.31 kB
import { AbstractTokenizer, type IRandomAccessTokenizer, type IReadChunkOptions, type IRandomAccessFileInfo } from 'strtok3'; import type { IContentRangeType, IHeadRequestInfo, IRangeRequestClient } from './types.js'; interface IRangeRequestTokenizerOptions { fileInfo: IHeadRequestInfo; minimumChunkSize: number; abortSignal?: AbortSignal; } /** * RangeRequestTokenizer is tokenizer which is an adapter for range-request clients. * Typically, HTTP clients implementing the HTTP Range Requests (https://tools.ietf.org/html/rfc7233) * * Inspired by "XHR Reader" written by António Afonso * https://github.com/aadsm/jsmediatags/blob/master/src/XhrFileReader.js */ export declare class RangeRequestTokenizer extends AbstractTokenizer implements IRandomAccessTokenizer { private rangeRequestClient; private options; private _fileData; readonly fileInfo: IRandomAccessFileInfo; constructor(rangeRequestClient: IRangeRequestClient, options: IRangeRequestTokenizerOptions); setPosition(position: number): void; /** * Read portion from stream * @param uint8array - Target `Uint8Array` * @param options - Additional read options * @returns Promise with number of bytes read */ readBuffer(uint8array: Uint8Array, options?: IReadChunkOptions): Promise<number>; /** * Peek (read ahead) buffer from tokenizer * @param uint8array - Target `Uint8Array` to fill with data peek from the tokenizer-stream * @param options - Additional read options * @returns Promise with number of bytes read */ peekBuffer(uint8array: Uint8Array, options?: IReadChunkOptions): Promise<number>; /** * Ignore number of bytes, advances the pointer in under tokenizer-stream. * @param length - Number of bytes to skip (ignore) * @return actual number of bytes ignored */ ignore(length: number): Promise<number>; abort(): Promise<void>; supportsRandomAccess(): boolean; private loadRange; } export declare function roundRange(range: [number, number], minimumChunkSize: number): [number, number]; /** * Convert HTTP range header value to IContentRangeType * @param contentRange - content range */ export declare function parseContentRange(contentRange: string): IContentRangeType; export {};