UNPKG

@chickenjdk/byteutils

Version:

Advanced tools for manipulating binary data in JavaScript

204 lines (203 loc) 17.2 kB
import type { cloneFunc, MaybePromise } from "./types"; export declare abstract class readableBufferBase<IsAsync extends boolean = true | false> { #private; /** * Read from the start of the buffer */ abstract shift(): MaybePromise<number, IsAsync>; /** * Read a Uint8Array from the start of the buffer * @param bytes How many bytes to read */ abstract readUint8Array(bytes: number): MaybePromise<Uint8Array, IsAsync>; /** * Read a Uint8Array from the start of the buffer backwards * @param bytes How many bytes to read */ abstract readUint8ArrayBackwards(bytes: number): MaybePromise<Uint8Array, IsAsync>; /** * Read a ReadableBuffer from the start of the buffer * @param bytes How many bytes to read */ readReadableBuffer(bytes: number): MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T ? T extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T extends Promise<unknown> ? Promise<readableBuffer> : readableBuffer : never : never; /** * Read a number array (0-255) from the start of the buffer * @param bytes How many bytes to read */ abstract readArray(bytes: number): MaybePromise<number[], IsAsync>; /** * Read a number array (0-255) from the start of the buffer backwards * @param bytes How many bytes to read */ abstract readArrayBackwards(bytes: number): MaybePromise<number[], IsAsync>; /** * Read a array OR Uint8Array from the start of the buffer * @param bytes How many bytes to read */ read: cloneFunc<typeof this.readArray> | cloneFunc<typeof this.readUint8Array>; /** * Read a array OR Uint8Array from the start of the buffer backwards * @param bytes How many bytes to read */ readBackwards: cloneFunc<typeof this.readArrayBackwards> | cloneFunc<typeof this.readUint8ArrayBackwards>; /** * Read a Uint8Array from the start of the buffer (endian-dependent) */ readUint8ArrayEndian: cloneFunc<typeof this.readUint8Array> | cloneFunc<typeof this.readUint8ArrayBackwards>; /** * Read a Uint8Array from the start of the buffer backwards (endian-dependent) */ readUint8ArrayBackwardsEndian: cloneFunc<typeof this.readUint8Array> | cloneFunc<typeof this.readUint8ArrayBackwards>; /** * Read a number array (0-255) from the start of the buffer (endian-dependent) * @param bytes How many bytes to read */ readArrayEndian: cloneFunc<typeof this.readArray> | cloneFunc<typeof this.readArrayBackwards>; /** * Read a number array (0-255) from the start of the buffer backwards (endian-dependent) * @param bytes How many bytes to read */ readArrayBackwardsEndian: cloneFunc<typeof this.readArray> | cloneFunc<typeof this.readArrayBackwards>; /** * Read a array-like (May be a array or uint8array but don't count on it) from the start of the buffer (endian-dependent) * @param value The data to write */ readEndian: cloneFunc<typeof this.read> | cloneFunc<typeof this.readBackwards>; /** * Read a array-like (May be a array or uint8array but don't count on it) from the start of the buffer backwards (endian-dependent) */ readBackwardsEndian: cloneFunc<typeof this.read> | cloneFunc<typeof this.readBackwards>; /** * If the buffer is little endian */ get isLe(): boolean; /** * If the buffer is little endian */ set isLe(isLe: boolean); /** * Read a unsigned integer * @param bytes How many bytes the data is * @returns The parsed unsigned integer */ readUnsignedInt(bytes: number): (MaybePromise<number[], IsAsync> extends infer T ? T extends MaybePromise<number[], IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never) | (MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_1 ? T_1 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_1 extends Promise<unknown> ? Promise<number> : number : never : never); /** * Read a unsigned integer as a bigint * @param bytes How many bytes the data is * @returns The parsed unsigned integer (as a bigint) */ readUnsignedIntBigint(bytes: number): (MaybePromise<number[], IsAsync> extends infer T ? T extends MaybePromise<number[], IsAsync> ? T extends Promise<unknown> ? Promise<bigint> : bigint : never : never) | (MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_1 ? T_1 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_1 extends Promise<unknown> ? Promise<bigint> : bigint : never : never); /** * Parse a two's complement * @param bytes How many bytes it is * @returns The parsed twos complement */ readTwosComplement(bytes: number): ((MaybePromise<number[], IsAsync> extends infer T ? T extends MaybePromise<number[], IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never) extends infer T_1 ? T_1 extends (MaybePromise<number[], IsAsync> extends infer T_2 ? T_2 extends MaybePromise<number[], IsAsync> ? T_2 extends Promise<unknown> ? Promise<number> : number : never : never) ? T_1 extends Promise<unknown> ? Promise<number> : number : never : never) | ((MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_3 ? T_3 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_3 extends Promise<unknown> ? Promise<number> : number : never : never) extends infer T_4 ? T_4 extends (MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_5 ? T_5 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_5 extends Promise<unknown> ? Promise<number> : number : never : never) ? T_4 extends Promise<unknown> ? Promise<number> : number : never : never); /** * Parse a two's complement as a bigint * @param bytes How many bytes it is * @returns The parsed twos complement (as a bigint) */ readTwosComplementBigint(bytes: number): ((MaybePromise<number[], IsAsync> extends infer T ? T extends MaybePromise<number[], IsAsync> ? T extends Promise<unknown> ? Promise<bigint> : bigint : never : never) extends infer T_1 ? T_1 extends (MaybePromise<number[], IsAsync> extends infer T_2 ? T_2 extends MaybePromise<number[], IsAsync> ? T_2 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) ? T_1 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) | ((MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_3 ? T_3 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_3 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) extends infer T_4 ? T_4 extends (MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_5 ? T_5 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_5 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) ? T_4 extends Promise<unknown> ? Promise<bigint> : bigint : never : never); /** * Parse a two's complement from a single byte * @returns The parsed twos complement */ readTwosComplementByte(): MaybePromise<number, IsAsync> extends infer T ? T extends MaybePromise<number, IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never; /** * Parse a two's complements from single bytes * @param bytes How many two's complements to parse * @returns The parsed twos complements */ readTwosComplementByteArray(bytes: number): (MaybePromise<number, IsAsync> extends infer T ? T extends MaybePromise<number, IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never) extends infer T_1 ? T_1 extends (MaybePromise<number, IsAsync> extends infer T_2 ? T_2 extends MaybePromise<number, IsAsync> ? T_2 extends Promise<unknown> ? Promise<number> : number : never : never) ? T_1 extends Promise<unknown> ? Promise<import("./types").AwaitedUnion<T_1>[]> : T_1[] : never : never; /** * Parse a float * @returns The parsed float */ readFloat(): (MaybePromise<number[], IsAsync> extends infer T ? T extends MaybePromise<number[], IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never) | (MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_1 ? T_1 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_1 extends Promise<unknown> ? Promise<number> : number : never : never); /** * Parse a double * @returns The parsed double float */ readDouble(): (MaybePromise<number[], IsAsync> extends infer T ? T extends MaybePromise<number[], IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never) | (MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_1 ? T_1 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_1 extends Promise<unknown> ? Promise<number> : number : never : never); /** * Parse a string * @param bytes How many bytes long the string is * @param [mutf8=false] If the string is mutf8 * @returns The parsed string */ readString(bytes: number, mutf8?: boolean): MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T ? T extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T extends Promise<unknown> ? Promise<string> : string : never : never; /** * Parse a signed one's complement * @param bytes How long the signed one's complement is * @returns The parsed signed ones compement */ readSignedOnesComplement(bytes: number): ((MaybePromise<number[], IsAsync> extends infer T ? T extends MaybePromise<number[], IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never) extends infer T_1 ? T_1 extends (MaybePromise<number[], IsAsync> extends infer T_2 ? T_2 extends MaybePromise<number[], IsAsync> ? T_2 extends Promise<unknown> ? Promise<number> : number : never : never) ? T_1 extends Promise<unknown> ? Promise<number> : number : never : never) | ((MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_3 ? T_3 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_3 extends Promise<unknown> ? Promise<number> : number : never : never) extends infer T_4 ? T_4 extends (MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_5 ? T_5 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_5 extends Promise<unknown> ? Promise<number> : number : never : never) ? T_4 extends Promise<unknown> ? Promise<number> : number : never : never); /** * Parse a signed one's complement as a bigint * @param bytes How long the signed one's complement is * @returns The parsed signed ones compement (as a bigint) */ readSignedOnesComplementBigint(bytes: number): ((MaybePromise<number[], IsAsync> extends infer T ? T extends MaybePromise<number[], IsAsync> ? T extends Promise<unknown> ? Promise<bigint> : bigint : never : never) extends infer T_1 ? T_1 extends (MaybePromise<number[], IsAsync> extends infer T_2 ? T_2 extends MaybePromise<number[], IsAsync> ? T_2 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) ? T_1 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) | ((MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_3 ? T_3 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_3 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) extends infer T_4 ? T_4 extends (MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_5 ? T_5 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_5 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) ? T_4 extends Promise<unknown> ? Promise<bigint> : bigint : never : never); /** * Parse a signed one's complement from a byte * @returns The parsed signed one's compement */ readSignedOnesComplementByte(): MaybePromise<number, IsAsync> extends infer T ? T extends MaybePromise<number, IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never; /** * Parse signed one's complements (one byte each) from bytes * @param bytes How many one's complements to read * @returns The parsed signed one's compements */ readSignedOnesComplementByteArray(bytes: number): (MaybePromise<number, IsAsync> extends infer T ? T extends MaybePromise<number, IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never) extends infer T_1 ? T_1 extends (MaybePromise<number, IsAsync> extends infer T_2 ? T_2 extends MaybePromise<number, IsAsync> ? T_2 extends Promise<unknown> ? Promise<number> : number : never : never) ? T_1 extends Promise<unknown> ? Promise<import("./types").AwaitedUnion<T_1>[]> : T_1[] : never : never; /** * Parse a signed integer * @param bytes How many bytes long the signed integer is * @returns The parsed signed integer */ readSignedInteger(bytes: number): ((MaybePromise<number[], IsAsync> extends infer T ? T extends MaybePromise<number[], IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never) extends infer T_1 ? T_1 extends (MaybePromise<number[], IsAsync> extends infer T_2 ? T_2 extends MaybePromise<number[], IsAsync> ? T_2 extends Promise<unknown> ? Promise<number> : number : never : never) ? T_1 extends Promise<unknown> ? Promise<number> : number : never : never) | ((MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_3 ? T_3 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_3 extends Promise<unknown> ? Promise<number> : number : never : never) extends infer T_4 ? T_4 extends (MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_5 ? T_5 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_5 extends Promise<unknown> ? Promise<number> : number : never : never) ? T_4 extends Promise<unknown> ? Promise<number> : number : never : never); /** * Parse a signed integer as a bigint * @param bytes How many bytes long the signed integer is * @returns The parsed signed integer (as a bigint) */ readSignedIntegerBigint(bytes: number): ((MaybePromise<number[], IsAsync> extends infer T ? T extends MaybePromise<number[], IsAsync> ? T extends Promise<unknown> ? Promise<bigint> : bigint : never : never) extends infer T_1 ? T_1 extends (MaybePromise<number[], IsAsync> extends infer T_2 ? T_2 extends MaybePromise<number[], IsAsync> ? T_2 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) ? T_1 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) | ((MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_3 ? T_3 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_3 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) extends infer T_4 ? T_4 extends (MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> extends infer T_5 ? T_5 extends MaybePromise<Uint8Array<ArrayBufferLike>, IsAsync> ? T_5 extends Promise<unknown> ? Promise<bigint> : bigint : never : never) ? T_4 extends Promise<unknown> ? Promise<bigint> : bigint : never : never); /** * Parse a signed integer from a byte * @returns The parsed signed integer */ readSignedIntegerByte(): MaybePromise<number, IsAsync> extends infer T ? T extends MaybePromise<number, IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never; /** * Parse a signed integer from a byte * @returns The parsed signed integers */ readSignedIntegerByteArray(bytes: number): (MaybePromise<number, IsAsync> extends infer T ? T extends MaybePromise<number, IsAsync> ? T extends Promise<unknown> ? Promise<number> : number : never : never) extends infer T_1 ? T_1 extends (MaybePromise<number, IsAsync> extends infer T_2 ? T_2 extends MaybePromise<number, IsAsync> ? T_2 extends Promise<unknown> ? Promise<number> : number : never : never) ? T_1 extends Promise<unknown> ? Promise<import("./types").AwaitedUnion<T_1>[]> : T_1[] : never : never; } export declare const readableBufferBaseAsync: abstract new () => readableBufferBase<true>; export declare class readableBuffer extends readableBufferBase<false> { #private; constructor(data: Uint8Array | readableBuffer); get buffer(): Uint8Array; set buffer(newValue: Uint8Array | readableBuffer | Buffer); /** * The current offset in the buffer * @returns The current offset in the buffer */ get _offset(): number; /** * The remaining length of the buffer * @returns The length of the buffer */ get length(): number; shift(): number; readUint8Array(bytes: number): Uint8Array; readUint8ArrayBackwards(bytes: number): Uint8Array<ArrayBufferLike>; readReadableBuffer(bytes: number): readableBuffer; readArray(bytes: number): number[]; readArrayBackwards(bytes: number): number[]; } /** * Little-endian version of readableBuffer * @remarks You can generate this class yourself with `addDefaultEndianness(readableBuffer, true)` or make a already created instance little endian via `instance.isLe = true` */ export declare const readableBufferLe: typeof readableBuffer;