Node.js Buffer API, for the browser
npx @tessl/cli install tessl/npm-buffer@6.0.0Buffer provides a browser-compatible implementation of Node.js's Buffer API, enabling developers to manipulate binary data effectively in browser environments. It offers a complete Buffer class that extends Uint8Array with all Node.js Buffer methods including read/write operations for various data types, encoding/decoding capabilities, and buffer manipulation functions.
npm install bufferconst { Buffer, SlowBuffer, INSPECT_MAX_BYTES, kMaxLength } = require('buffer');ESM:
import { Buffer, SlowBuffer, INSPECT_MAX_BYTES, kMaxLength } from 'buffer';For explicit npm module usage (bypassing Node.js core):
const { Buffer, SlowBuffer, INSPECT_MAX_BYTES, kMaxLength } = require('buffer/');import { Buffer } from 'buffer';
// Create buffers in different ways
const buf1 = Buffer.from('hello world', 'utf8');
const buf2 = Buffer.alloc(10);
const buf3 = Buffer.allocUnsafe(10);
// Basic operations
console.log(buf1.toString()); // 'hello world'
console.log(buf1.length); // 11
// Read and write operations
buf2.writeUInt8(42, 0);
const value = buf2.readUInt8(0); // 42
// Buffer manipulation
const combined = Buffer.concat([buf1, buf2]);
const slice = buf1.slice(0, 5); // Buffer containing 'hello'Buffer is built around several key components:
Core buffer creation functionality with various initialization options. Essential for all buffer operations and memory allocation.
// Constructor variants
function Buffer(size: number): Buffer;
function Buffer(string: string, encoding?: string): Buffer;
function Buffer(array: number[]): Buffer;
function Buffer(buffer: Buffer): Buffer;
function Buffer(arrayBuffer: ArrayBuffer): Buffer;
// Static creation methods
Buffer.alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer;
Buffer.allocUnsafe(size: number): Buffer;
Buffer.allocUnsafeSlow(size: number): Buffer;
Buffer.from(value: string | number[] | Buffer | ArrayBuffer, encodingOrOffset?: string | number, length?: number): Buffer;Binary data read/write operations supporting multiple data types and byte orders. Critical for binary protocol implementation and data serialization.
// Unsigned integer operations
readUInt8(offset: number, noAssert?: boolean): number;
writeUInt8(value: number, offset: number, noAssert?: boolean): number;
readUInt16LE(offset: number, noAssert?: boolean): number;
writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;
readUInt32LE(offset: number, noAssert?: boolean): number;
writeUInt32LE(value: number, offset: number, noAssert?: boolean): number;
// Signed integer operations
readInt8(offset: number, noAssert?: boolean): number;
writeInt8(value: number, offset: number, noAssert?: boolean): number;
// Floating point operations
readFloatLE(offset: number, noAssert?: boolean): number;
writeFloatLE(value: number, offset: number, noAssert?: boolean): number;
readDoubleLE(offset: number, noAssert?: boolean): number;
writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;Text encoding/decoding and string conversion with support for multiple character encodings. Fundamental for text processing and protocol handling.
// String conversion
toString(encoding?: string, start?: number, end?: number): string;
write(string: string, offset?: number, length?: number, encoding?: string): number;
// Encoding utilities
Buffer.isEncoding(encoding: string): boolean;
Buffer.byteLength(string: string, encoding?: string): number;String and Encoding Operations
Buffer copying, slicing, filling, and comparison operations. Essential for buffer processing and data management workflows.
// Manipulation methods
copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
slice(start?: number, end?: number): Buffer;
fill(value: any, offset?: number, end?: number, encoding?: string): Buffer;
// Comparison and search
equals(otherBuffer: Buffer): boolean;
compare(target: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean;
// Static utilities
Buffer.concat(list: Buffer[], totalLength?: number): Buffer;
Buffer.compare(buf1: Buffer, buf2: Buffer): number;class Buffer extends Uint8Array {
length: number;
buffer: ArrayBuffer;
byteOffset: number;
}
interface BufferConstructor {
poolSize: number;
TYPED_ARRAY_SUPPORT: boolean;
isBuffer(obj: any): obj is Buffer;
}
// Constants
const INSPECT_MAX_BYTES: number;
const kMaxLength: number;'ascii' - ASCII encoding'utf8', 'utf-8' - UTF-8 encoding (default)'latin1', 'binary' - Latin1/binary encoding'base64' - Base64 encoding'hex' - Hexadecimal encoding'ucs2', 'ucs-2', 'utf16le', 'utf-16le' - UTF-16 little endian