@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
TypeScript
/**
* 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