UNPKG

mute-structs

Version:

NodeJS module providing an implementation of the LogootSplit CRDT algorithm

58 lines (57 loc) 2.78 kB
import { Identifier } from "./identifier"; import { IdentifierInterval } from "./identifierinterval"; import { LogootSBlock } from "./logootsblock"; import { LogootSDel } from "./operations/delete/logootsdel"; import { TextDelete } from "./operations/delete/textdelete"; import { LogootSAdd } from "./operations/insert/logootsadd"; import { TextInsert } from "./operations/insert/textinsert"; import { ResponseIntNode } from "./responseintnode"; import { RopesNodes } from "./ropesnodes"; export declare class LogootSRopes { static empty(): LogootSRopes; static fromPlain(o: unknown): LogootSRopes | null; readonly replicaNumber: number; clock: number; root: RopesNodes | null; readonly mapBaseToBlock: { [key: string]: LogootSBlock; }; str: string; constructor(replica?: number, clock?: number, root?: RopesNodes | null, str?: string); readonly height: number; getBlock(idInterval: IdentifierInterval): LogootSBlock; /** * Add a interval of identifiers and its corresponding string to the model * * @param {string} str The inserted string * @param {IdentifierInterval} idi The corresponding interval of identifiers * @param {RopesNodes} from The starting point of the search * @param {number} startOffset ??? */ addBlockFrom(str: string, idi: IdentifierInterval, from: RopesNodes, startOffset: number): TextInsert[]; addBlockFromRec(str: string, idi: IdentifierInterval, from: RopesNodes, startOffset: number): TextInsert[]; applyTextInsert(textInsert: TextInsert): void; applyTextDelete(textDelete: TextDelete): void; addBlock(str: string, id: Identifier): TextInsert[]; mkNode(id1: Identifier | null, id2: Identifier | null, length: number): RopesNodes; insertLocal(pos: number, l: string): LogootSAdd; getXest(aChildOf: (a: RopesNodes) => RopesNodes | null, aPath: RopesNodes[]): RopesNodes; searchPos(id: Identifier, path: RopesNodes[]): number; searchNode(pos: number): ResponseIntNode | null; ascendentUpdate(path: RopesNodes[], length: number): void; delBlock(idInterval: IdentifierInterval, author: number): TextDelete[]; delLocal(begin: number, end: number): LogootSDel; delNode(path: RopesNodes[]): void; getMinPath(path: RopesNodes[]): RopesNodes; balance(path: RopesNodes[]): void; rotateLeft(node: RopesNodes, father: RopesNodes | null): RopesNodes; rotateRight(node: RopesNodes, father: RopesNodes | null): RopesNodes; rotateRL(node: RopesNodes, father: RopesNodes | null): RopesNodes; rotateLR(node: RopesNodes, father: RopesNodes | null): RopesNodes; getNext(path: RopesNodes[]): boolean; /** * @return tree digest */ digest(): number; toList(): IdentifierInterval[]; }