UNPKG

@phroun/paged-buffer

Version:

High-performance buffer system for editing massive files with intelligent memory management and undo/redo capabilities

77 lines 2.4 kB
/** * Enhanced Page metadata with simplified line tracking (marks moved to global system) */ /// <reference types="node" /> /// <reference types="node" /> import { type IPageInfo, type PageInfoMemoryStats } from '../types/common'; /** * Enhanced Page metadata with simplified line tracking and no marks management * (Marks are now handled globally by the page coordinate system) */ declare class PageInfo implements IPageInfo { pageKey: string; fileOffset: number; originalSize: number; checksum: string | null; isDirty: boolean; isLoaded: boolean; isDetached: boolean; currentSize: number; data: Buffer | null; lastAccess: number; newlinePositions: number[]; linesCacheValid: boolean; constructor(pageKey: string, fileOffset: number, originalSize: number, checksum?: string | null); /** * Calculate fast checksum for change detection */ static calculateChecksum(data: Buffer): string; /** * Update page with new data and invalidate caches as needed */ updateData(data: Buffer): void; /** * Rebuild the newline positions cache */ private _rebuildLineCache; /** * Ensure line cache is valid and up to date */ ensureLineCacheValid(): void; /** * Get the number of newlines in this page */ getNewlineCount(): number; /** * Get global line starts contributed by this page */ getGlobalLineStarts(pageVirtualStart: number): number[]; /** * Update line cache after a modification within this page */ updateAfterModification(_offset: number, _deletedBytes: number, _insertedData: Buffer): void; /** * Verify page integrity against original file */ verifyIntegrity(originalData: Buffer): boolean; /** * Get memory usage statistics for this page */ getMemoryStats(): PageInfoMemoryStats; } declare class LineInfo { startOffset: number; length: number; endsWithNewline: boolean; constructor(startOffset: number, length: number, endsWithNewline?: boolean); get endOffset(): number; get contentLength(): number; } declare class MarkInfo { name: string; pageOffset: number; virtualAddress: number; constructor(name: string, pageOffset: number, virtualAddress: number); } export { PageInfo, LineInfo, MarkInfo }; //# sourceMappingURL=page-info.d.ts.map