@chickenjdk/byteutils
Version:
Advanced tools for manipulating binary data in JavaScript
204 lines (203 loc) • 17.2 kB
TypeScript
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;