or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

buffer-creation.mdbuffer-manipulation.mddata-read-write.mdindex.mdstring-encoding.md
tile.json

index.mddocs/

Buffer

Buffer 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.

Package Information

  • Package Name: buffer
  • Package Type: npm
  • Language: JavaScript with TypeScript definitions
  • Installation: npm install buffer

Core Imports

const { 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/');

Basic Usage

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'

Architecture

Buffer is built around several key components:

  • Uint8Array Extension: Buffer extends Uint8Array and modifies the prototype to add Node.js-compatible methods
  • Static Methods: Creation and utility functions (from, alloc, concat, compare, etc.)
  • Instance Methods: Binary data manipulation, conversion, and comparison operations
  • Encoding Support: Comprehensive text encoding/decoding (utf8, ascii, base64, hex, etc.)
  • Type Safety: Full TypeScript definitions for all APIs

Capabilities

Buffer Creation

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;

Buffer Creation

Data Reading and Writing

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;

Data Reading and Writing

String and Encoding Operations

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 Manipulation

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;

Buffer Manipulation

Types

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;

Supported Encodings

  • '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