You can install this package by using your preferred node package manager (NPM, PNPM, Yarn, etc) or bun
npm install bufferutility # NPM
pnpm add bufferutility # PNPM
yarn add bufferutility # Yarn
bun add bufferutility # Bun
You can then start using the package by requiring it from your application as such:
import { BufferUtility } from 'bufferutility';
import { BufferUtility } from 'bufferutility';
const buffer = new BufferUtility();
console.log(buffer);
// <BufferUtility>
buffer[0] = 0xfa; // or buffer.writeByte(0xfa, 0);
console.log(buffer);
// <BufferUtility fa>
console.log(buffer[0]); // or console.log(buffer.readByte(0));
// 250
BufferUtility actually have 3 modules you can use
Uint8ArrayModule
(compatible with Node and Bun): It use an Uint8Array to store the data (default module).NodeBufferModule
(compatible with Node): It use a NodeJS Buffer to store the data.FileSystemModule
(compatible with Node and Bun): It use a file to store the data (permit "infinite" size).
// Uint8Array module
import { BufferUtility, Uint8ArrayModule } from 'bufferutility';
const Uint8Buffer = new BufferUtility([], {
module: Uint8ArrayModule
});
Uint8Buffer.writeByte(15);
console.log(Uint8Buffer.buffer) // Uint8Array(1) [ 15 ]
// Node Buffer module
import { BufferUtility, NodeBufferModule } from 'bufferutility';
const NodeBuffer = new BufferUtility([], {
module: NodeBufferModule
});
NodeBuffer.writeByte(15);
console.log(NodeBuffer.buffer) // <Buffer 0f>
// File System module
import { BufferUtility, FileSystemModule } from 'bufferutility';
const FSBuffer = new BufferUtility("file.txt", {
module: FileSystemModule
});
FSBuffer.writeString("data");
import { readFileSync } from 'fs';
console.log(readFileSync("file.txt", "utf8")) // data
// FSBuffer.buffer return the file descriptor
obj
:<Object>
- Returns :
<boolean>
Returns true
if obj
is a BufferUtility
, false
otherwise.
const buf1 = new BufferUtility("a BufferUtility");
const buf2 = Buffer.from("a Node Buffer");
console.log(BufferUtility.isBufferUtility(buf1));
// true
console.log(BufferUtility.isBufferUtility(buf2));
// false
See https://nodejs.org/api/buffer.html#buffer_static_method_buffer_bytelength_string_encoding
data
:<String>
|<Array>
|<Buffer>
|<Uint8Array>
|<Number>
A property determinate the value of the BufferUtility. Default:undefined
(empty)opts
:<Object>
Set of configurable options to set on the Buffer. Can have the following fields:module
:<Module>
The module used by the Buffer. Default:<Uint8ArrayModule>
.maxArrayLength
:<Number>
The max length an ArrayBuffer can take. Default:buffer.kMaxLength
.returnAsBigIntIfOverflow
:<Boolean>
Return a BigInt for read functions if value is under Number.MIN_SAFE_INTEGER or greater than Number.MAX_SAFE_INTEGER. Default:true
.returnAsBigInt
:<Boolean>
Always return a BigInt for read functions (overridereturnAsBigIntIfOverflow
). Default:false
.offset
:<Number>
The forced start offset of the buffer source. Default:0
.length
:<Number>
The forced length of the buffer source. Default:buf.length
.
- Returns :
<BufferUtility>
Create a new BufferUtility instance from data
and opts
properties
const buf1 = new BufferUtility(); // Empty buf
const buf2 = new BufferUtility("test"); // Buf with test in bytes
const buf3 = new BufferUtility(64); // Alloc 64 bytes
const buf4 = new BufferUtility([54, 76]); // Buf with bytes 54 and 76
More documentation on this readme will come soon, they are approximately the same as the version 2. You can check them here https://github.com/pharuxtan/BufferUtility/blob/v2/README.md#bufferutility
read7BitEncodedInt
/read7BitEncodedInt64
/write7BitEncodedInt
/write7BitEncodedInt64
is replaced by readULEB128
/writeULEB128
/readSLEB128
/writeSLEB128