@jsprismarine/jsbinaryutils
Version:
Basic binary data managing tool written in TypeScript.
367 lines (366 loc) • 10.1 kB
TypeScript
/// <reference types="node" />
export default class BinaryStream {
private binary;
private buffer;
private readIndex;
private writeIndex;
/**
* Creates a new BinaryStream instance.
* @param {Buffer|null|undefined} buffer - The array or Buffer containing binary data.
* @param {number} offset - The initial pointer position.
*/
constructor(buffer?: Buffer, offset?: number);
/**
* Reads a slice of buffer by the given length.
* @param {number} len
*/
read(len: number): Buffer;
/**
* Appends a buffer to the main buffer.
* @param {Buffer|Uint8Array} buf
*/
write(buf: Uint8Array): void;
/**
* Reads an unsigned byte (0 to 255).
* @returns {number}
*/
readByte(): number;
/**
* Writes an unsigned byte (0 to 255).
* @param {number} v
*/
writeByte(v: number): void;
/**
* Reads a signed byte (-128 to 127).
* @returns {number}
*/
readSignedByte(): number;
/**
* Writes a signed byte (-128 to 127).
* @param {number} v
*/
writeSignedByte(v: number): void;
/**
* Reads a boolean (true or false).
* @returns {boolean}
*/
readBoolean(): boolean;
/**
* Writes a boolean (true or false).
* @param {boolean} v
*/
writeBoolean(v: boolean): void;
/**
* Reads a 16 bit (2 bytes) signed big-endian number.
* @returns {number}
*/
readShort(): number;
/**
* Writes a 16 bit (2 bytes) signed big-endian number.
* @param {number} v
*/
writeShort(v: number): void;
/**
* Reads a 16 bit (2 bytes) signed little-endian number.
* @returns {number}
*/
readShortLE(): number;
/**
* Writes a 16 bit (2 bytes) signed big-endian number.
* @param {number} v
*/
writeShortLE(v: number): void;
/**
* Reads a 16 bit (2 bytes) unsigned big-endian number.
* @returns {number}
*/
readUnsignedShort(): number;
/**
* Writes a 16 bit (2 bytes) unsigned big-endian number.
* @param {number} v
*/
writeUnsignedShort(v: number): void;
/**
* Reads a 16 bit (2 bytes) unsigned little-endian number.
* @returns {number}
*/
readUnsignedShortLE(): number;
/**
* Writes a 16 bit (2 bytes) unsigned little-endian number.
* @param {number} v
*/
writeUnsignedShortLE(v: number): void;
/**
* Reads a 24 bit (3 bytes) signed big-endian number.
* @returns {number}
*/
readTriad(): number;
/**
* Writes a 24 bit (3 bytes) signed big-endian number.
* @param {number} v
*/
writeTriad(v: number): void;
/**
* Reads a 24 bit (3 bytes) little-endian number.
* @returns {number}
*/
readTriadLE(): number;
/**
* Writes a 24 bit (3 bytes) signed little-endian number.
* @param {number} v
*/
writeTriadLE(v: number): void;
/**
* Reads a 24 bit (3 bytes) unsigned big-endian number.
* @returns {number}
*/
readUnsignedTriad(): number;
/**
* Writes a 24 bit (3 bytes) unsigned big-endian number.
* @param {number} v
*/
writeUnsignedTriad(v: number): void;
/**
* Reads a 24 bit (3 bytes) unsigned little-endian number.
* @returns {number}
*/
readUnsignedTriadLE(): number;
/**
* Writes a 24 bit (3 bytes) unsigned little-endian number.
* @param {number} v
*/
writeUnsignedTriadLE(v: number): void;
/**
* Reads a 32 bit (4 bytes) big-endian signed number.
* @returns {number}
*/
readInt(): number;
/**
* Writes a 32 bit (4 bytes) big-endian signed number.
* @param {number} v
*/
writeInt(v: number): void;
/**
* Reads a 32 bit (4 bytes) signed number.
* @returns {number}
*/
readIntLE(): number;
/**
* Writes a 32 bit (4 bytes) little-endian signed number.
* @param {number} v
*/
writeIntLE(v: number): void;
/**
* Reads a 32 bit (4 bytes) big-endian unsigned number.
* @returns {number}
*/
readUnsignedInt(): number;
/**
* Writes a 32 bit (4 bytes) big-endian unsigned number.
* @param {number} v
*/
writeUnsignedInt(v: number): void;
/**
* Reads a 32 bit (4 bytes) little-endian unsigned number.
* @returns {number}
*/
readUnsignedIntLE(): number;
/**
* Writes a 32 bit (4 bytes) little-endian unsigned number.
* @param {number} v
*/
writeUnsignedIntLE(v: number): void;
/**
* Returns a 32 bit (4 bytes) big-endian flating point number.
* @returns {number}
*/
readFloat(): number;
/**
* Writes a 32 bit (4 bytes) big-endian floating point number.
* @param {number} v
*/
writeFloat(v: number): void;
/**
* Returns a 32 bit (4 bytes) big-endian flating point number.
* @returns {number}
*/
readFloatLE(): number;
/**
* Writes a 32 bit (4 bytes) little-endian floating point number.
* @param {number} v
*/
writeFloatLE(v: number): void;
/**
* Returns a 64 bit (8 bytes) big-endian flating point number.
* @returns {number}
*/
readDouble(): number;
/**
* Writes a 64 bit (8 bytes) big-endian floating point number.
* @param {number} v
*/
writeDouble(v: number): void;
/**
* Returns a 64 bit (8 bytes) little-endian flating point number.
* @returns {number}
*/
readDoubleLE(): number;
/**
* Writes a 64 bit (8 bytes) little-endian floating point number.
* @param {number} v
*/
writeDoubleLE(v: number): void;
/**
* Returns a 64 bit (8 bytes) signed big-endian number.
* @returns {bigint}
*/
readLong(): bigint;
/**
* Writes a 64 bit (8 bytes) signed big-endian number.
* @param {bigint} v
*/
writeLong(v: bigint): void;
/**
* Returns a 64 bit (8 bytes) signed little-endian number.
* @returns {bigint}
*/
readLongLE(): bigint;
/**
* Writes a 64 bit (8 bytes) signed big-endian number.
* @param {bigint} v
*/
writeLongLE(v: bigint): void;
/**
* Returns a 64 bit (8 bytes) unsigned big-endian number.
* @returns {bigint}
*/
readUnsignedLong(): bigint;
/**
* Writes a 64 bit (8 bytes) unsigned big-endian number.
* @param {bigint} v
*/
writeUnsignedLong(v: bigint): void;
/**
* Returns a 64 bit (8 bytes) unsigned little-endian number.
* @returns {bigint}
*/
readUnsignedLongLE(): bigint;
/**
* Writes a 64 bit (8 bytes) unsigned big-endian number.
* @param {bigint} v
*/
writeUnsignedLongLE(v: bigint): void;
/**
* Reads a 32 bit (4 bytes) zigzag-encoded number.
* @returns {number}
*/
readVarInt(): number;
/**
* Writes a 32 bit (4 bytes) zigzag-encoded number.
* @param {number} v
*/
writeVarInt(v: number): void;
/**
* Reads a 32 bit unsigned number.
* @returns {number}
*/
readUnsignedVarInt(): number;
/**
* Writes a 32 bit unsigned number with variable-length.
* @param {number} v
*/
writeUnsignedVarInt(v: number): void;
/**
* Reads a 64 bit zigzag-encoded variable-length number.
* @returns {bigint}
*/
readVarLong(): bigint;
/**
* Writes a 64 bit unsigned zigzag-encoded number.
* @param {bigint} v
*/
writeVarLong(v: bigint): void;
/**
* Reads a 64 bit unsigned variable-length number.
* @returns {bigint}
*/
readUnsignedVarLong(): bigint;
/**
* Writes a 64 bit unsigned variable-length number.
* @param {bigint} v
*/
writeUnsignedVarLong(v: bigint): void;
/**
* Increases the write offset by the given length.
* @param {number} length
*/
private addOffset;
/**
* Returns whatever or not the read offset is at end of line.
* @returns {number}
*/
feof(): boolean;
/**
* Reads the remaining bytes and returns the buffer slice.
* @returns {Buffer}
*/
readRemaining(): Buffer;
/**
* Skips len bytes on the buffer.
* @param {number} len
*/
skip(len: number): void;
/**
* Returns the encoded buffer.
* @returns {Buffer}
*/
getBuffer(): Buffer;
/**
* Sets the buffer for reading.
* make sure to reset the reading index!
* @param buf - The new Buffer.
*/
setBuffer(buf: Buffer): void;
/**
* Clears the whole BinaryStream instance.
*/
clear(): void;
/**
* Conventional method to reuse the stream
* without having to create a new BinaryStream instance.
* @param buf - The new buffer instance.
*/
reuse(buf: Buffer): void;
/**
* Sets the reading index.
* @param index - The new read index.
*/
setReadIndex(index: number): void;
/**
* Sets the new writing index.
* @param index - The new write index.
*/
setWriteIndex(index: number): void;
/**
* Retuns the read index.
* @returns {number}
*/
getReadIndex(): number;
/**
* Returns the write index.
* @returns {number}
*/
getWriteIndex(): number;
/**
* Do read assertions, check if the read buffer is null.
* @param {number} byteLength
*/
private doReadAssertions;
/**
* Do read assertions, check if the read buffer is null.
* @param {number|bigint} num
* @param {number|bigint} minVal
* @param {number|bigint} maxVal
*/
private doWriteAssertions;
}