UNPKG

bytestreamjs

Version:

ByteStream is a library making possible to manipulates single bytes and bits on pure JavaScript

256 lines (255 loc) 8.98 kB
import { ByteStream, FindFirstNotInResult, FindFirstSequenceResult, FindPairedArraysResult, FindPairedPatternsResult } from "./byte_stream"; export interface SeqStreamBaseParameters { backward?: boolean; start?: number; appendBlock?: number; } export interface SeqStreamLengthParameters extends SeqStreamBaseParameters { length: number; } export interface SeqStreamStreamParameters extends SeqStreamBaseParameters { stream: ByteStream; } export interface SeqStreamViewParameters extends SeqStreamBaseParameters { view: Uint8Array; } export interface SeqStreamBufferParameters extends SeqStreamBaseParameters { buffer: ArrayBuffer; } export interface SeqStreamStringParameters { string: string; } export interface SeqStreamHexParameters { hexstring: string; } export declare type SeqStreamParameters = SeqStreamBaseParameters | SeqStreamLengthParameters | SeqStreamBufferParameters | SeqStreamStreamParameters | SeqStreamViewParameters | SeqStreamStringParameters | SeqStreamHexParameters; export declare class SeqStream { static APPEND_BLOCK: number; /** * Major stream */ private _stream; /** * Length of the major stream */ private _length; /** * Start position to search */ private _start; /** * Flag to search in backward direction */ backward: boolean; /** * Length of a block when append information to major stream */ appendBlock: number; prevLength: number; prevStart: number; /** * Constructor for "SeqStream" class * @param parameters */ constructor(parameters?: SeqStreamParameters); /** * Setter for "stream" property */ set stream(value: ByteStream); /** * Getter for "stream" property */ get stream(): ByteStream; /** * Setter for "length" property * @param value */ set length(value: number); /** * Getter for "length" property * @returns */ get length(): number; /** * Setter for "start" property * @param value */ set start(value: number); /** * Getter for "start" property * @returns */ get start(): number; /** * Return ArrayBuffer with having value of existing SeqStream length * @return */ get buffer(): ArrayBuffer; /** * Reset current position of the "SeqStream" */ resetPosition(): void; /** * Find any byte pattern in "ByteStream" * @param pattern Stream having pattern value * @param ga Maximum gap between start position and position of nearest object * @returns */ findPattern(pattern: ByteStream, gap?: null | number): number; /** * Find first position of any pattern from input array * @param patterns Array with patterns which should be found * @param gap Maximum gap between start position and position of nearest object * @returns */ findFirstIn(patterns: ByteStream[], gap?: null | number): import("./byte_stream").FindFirstInResult | { id: number; position: number; }; /** * Find all positions of any pattern from input array * @param patterns Array with patterns which should be found * @returns */ findAllIn(patterns: ByteStream[]): import("./byte_stream").FindResult[]; /** * Find first position of data, not included in patterns from input array * @param patterns Array with patterns which should be omitted * @param gap Maximum gap between start position and position of nearest object * @returns */ findFirstNotIn(patterns: ByteStream[], gap?: null | number): FindFirstNotInResult; /** * Find all positions of data, not included in patterns from input array * @param patterns Array with patterns which should be omitted * @returns */ findAllNotIn(patterns: ByteStream[]): FindFirstNotInResult[]; /** * Find position of a sequence of any patterns from input array * @param patterns Array with patterns which should be omitted * @param length Length to search sequence for * @param gap Maximum gap between start position and position of nearest object * @returns */ findFirstSequence(patterns: ByteStream[], length?: null | number, gap?: null | number): FindFirstSequenceResult; /** * Find position of a sequence of any patterns from input array * @param patterns Array with patterns which should be found * @returns */ findAllSequences(patterns: ByteStream[]): FindFirstSequenceResult[]; /** * Find all paired patterns in the stream * @param leftPattern Left pattern to search for * @param rightPattern Right pattern to search for * @param gap Maximum gap between start position and position of nearest object * @returns */ findPairedPatterns(leftPattern: ByteStream, rightPattern: ByteStream, gap?: null | number): FindPairedPatternsResult[]; /** * Find all paired patterns in the stream * @param leftPatterns Array of left patterns to search for * @param rightPatterns Array of right patterns to search for * @param gap Maximum gap between start position and position of nearest object * @returns */ findPairedArrays(leftPatterns: ByteStream[], rightPatterns: ByteStream[], gap?: null | number): FindPairedArraysResult[]; /** * Replace one patter with other * @param searchPattern The pattern to search for * @param replacePattern The pattern to replace initial pattern * @returns */ replacePattern(searchPattern: ByteStream, replacePattern: ByteStream): import("./byte_stream").ReplacePatternResult; /** * Skip of any pattern from input array * @param patterns Array with patterns which should be omitted * @returns */ skipPatterns(patterns: ByteStream[]): number; /** * Skip of any pattern from input array * @param patterns Array with patterns which should be omitted * @returns */ skipNotPatterns(patterns: ByteStream[]): number; /** * Append a new "Stream" content to the current "Stream" * @param stream A new "stream" to append to current "stream" */ append(stream: ByteStream): void; /** * Append a "view" content to the current "Stream" * @param view A new "view" to append to current "stream" */ appendView(view: Uint8Array): void; /** * Append a new char to the current "Stream" * @param char A new char to append to current "stream" */ appendChar(char: number): void; /** * Append a new number to the current "Stream" * @param number A new unsigned 16-bit integer to append to current "stream" */ appendUint16(number: number): void; /** * Append a new number to the current "Stream" * @param number A new unsigned 24-bit integer to append to current "stream" */ appendUint24(number: number): void; /** * Append a new number to the current "Stream" * @param number A new unsigned 32-bit integer to append to current "stream" */ appendUint32(number: number): void; /** * Append a new number to the current "Stream" * @param number A new signed 16-bit integer to append to current "stream" */ appendInt16(number: number): void; /** * Append a new number to the current "Stream" * @param number A new signed 32-bit integer to append to current "stream" */ appendInt32(number: number): void; /** * Get a block of data * @param size Size of the data block to get * @param changeLength Should we change "length" and "start" value after reading the data block * @returns */ getBlock(size: number, changeLength?: boolean): Uint8Array; /** * Get 2-byte unsigned integer value * @param changeLength Should we change "length" and "start" value after reading the data block * @returns */ getUint16(changeLength?: boolean): number; /** * Get 2-byte signed integer value * @param changeLength Should we change "length" and "start" value after reading the data block * @returns */ getInt16(changeLength?: boolean): number; /** * Get 3-byte unsigned integer value * @param changeLength Should we change "length" and "start" value after reading the data block * @returns */ getUint24(changeLength?: boolean): number; /** * Get 4-byte unsigned integer value * @param changeLength Should we change "length" and "start" value after reading the data block * @returns */ getUint32(changeLength?: boolean): number; /** * Get 4-byte signed integer value * @param changeLength Should we change "length" and "start" value after reading the data block * @returns */ getInt32(changeLength?: boolean): number; protected beforeAppend(size: number): void; }