Skip to main content
Version: v1

MergeTree Class

Signature​

export declare class MergeTree

Constructors​

ConstructorDescription
(constructor)(options)Constructs a new instance of the MergeTree class

Static Properties​

PropertyTypeDescription
options{ incrementalUpdate: boolean; insertAfterRemovedSegs: boolean; zamboniSegments: boolean; }

Properties​

PropertyModifiersTypeDescription
collabWindowCollaborationWindow
lengthnumberReturns the current length of the MergeTree for the local client.
mergeTreeDeltaCallbackoptionalMergeTreeDeltaCallback
mergeTreeMaintenanceCallbackoptionalMergeTreeMaintenanceCallback
optionsoptionalPropertySet | undefined
pendingSegmentsList<SegmentGroup> | undefined
rootIMergeBlock

Methods​

MethodAlertsReturn TypeDescription
ackPendingSegment(opArgs)voidAssign sequence number to existing segment; update partial lengths to reflect the change
addLocalReference(lref)Deprecatedvoid
addMinSeqListener(minRequired, onMinGE)void
annotateRange(start, end, props, combiningOp, refSeq, clientId, seq, opArgs)voidAnnotate a range with properties
blockClone(block, segments)MergeBlock
clone()void
createLocalReferencePosition(segment, offset, refType, properties, client)LocalReferencePosition
findTile(startPos, clientId, tileLabel, posPrecedesTile){ tile: ReferencePosition; pos: number; } | undefined
getCollabWindow()CollaborationWindow
getContainingSegment(pos, refSeq, clientId){ segment: T | undefined; offset: number | undefined; }
getLength(refSeq, clientId)number
getMarkerFromId(id)ISegment | undefined
getPosition(node, refSeq, clientId)number
getStackContext(startPos, clientId, rangeLabels)RangeStackMap
getStats()MergeTreeStats
incrementalBlockMap(stateStack)void
insertAtReferencePosition(referencePosition, insertSegment, opArgs)void
insertSegments(pos, segments, refSeq, clientId, seq, opArgs)void
localNetLength(segment)number
map(actions, refSeq, clientId, accum)void
mapIdToSegment(id, segment)void
mapRange(actions, refSeq, clientId, accum, start, end, splitRange)void
markRangeRemoved(start, end, refSeq, clientId, seq, overwrite, opArgs)void
posFromRelativePos(relativePos, refseq, clientId)numberGiven a position specified relative to a marker id, lookup the marker and convert the position to a character position.
referencePositionToLocalPosition(refPos, refSeq, clientId)number
reloadFromSegments(segments)void
removeLocalReference(segment, lref)Deprecatedvoid
removeLocalReferencePosition(lref)LocalReferencePosition | undefined
resolveRemoteClientPosition(remoteClientPosition, remoteClientRefSeq, remoteClientId)number | undefinedResolves a remote client's position against the local sequence and returns the remote client's position relative to the local sequence. The client ref seq must be above the minimum sequence number or the return value will be undefined. Generally this method is used in conjunction with signals which provide point in time values for the below parameters, and is useful for things like displaying user position. It should not be used with persisted values as persisted values will quickly become invalid as the remoteClientRefSeq moves below the minimum sequence number
setMinSeq(minSeq)void
startCollaboration(localClientId, minSeq, currentSeq)void
walkAllSegments(block, action, accum)boolean

Constructor Details​

(constructor)​

Constructs a new instance of the MergeTree class

Signature​

constructor(options?: PropertySet | undefined);

Parameters​

ParameterModifiersTypeDescription
optionsoptionalPropertySet | undefined

Property Details​

collabWindow​

Signature​

readonly collabWindow: CollaborationWindow;

Type: CollaborationWindow

length​

Returns the current length of the MergeTree for the local client.

Signature​

get length(): number;

Type: number

mergeTreeDeltaCallback​

Signature​

mergeTreeDeltaCallback?: MergeTreeDeltaCallback;

Type: MergeTreeDeltaCallback

mergeTreeMaintenanceCallback​

Signature​

mergeTreeMaintenanceCallback?: MergeTreeMaintenanceCallback;

Type: MergeTreeMaintenanceCallback

options​

Signature​

options?: PropertySet | undefined;

Type: PropertySet | undefined

options​

Signature​

static readonly options: {
incrementalUpdate: boolean;
insertAfterRemovedSegs: boolean;
zamboniSegments: boolean;
};

Type: { incrementalUpdate: boolean; insertAfterRemovedSegs: boolean; zamboniSegments: boolean; }

pendingSegments​

Signature​

pendingSegments: List<SegmentGroup> | undefined;

Type: List<SegmentGroup> | undefined

root​

Signature​

root: IMergeBlock;

Type: IMergeBlock

Method Details​

ackPendingSegment​

Assign sequence number to existing segment; update partial lengths to reflect the change

Signature​

ackPendingSegment(opArgs: IMergeTreeDeltaOpArgs): void;

Parameters​

ParameterTypeDescription
opArgsIMergeTreeDeltaOpArgs

addLocalReference​

This API is deprecated and will be removed in a future release.
  • use createLocalReference

Signature​

addLocalReference(lref: LocalReference): void;

Parameters​

ParameterTypeDescription
lrefLocalReference

addMinSeqListener​

Signature​

addMinSeqListener(minRequired: number, onMinGE: (minSeq: number) => void): void;

Parameters​

ParameterTypeDescription
minRequirednumber
onMinGE(minSeq: number) => void

annotateRange​

Annotate a range with properties

Signature​

annotateRange(start: number, end: number, props: PropertySet, combiningOp: ICombiningOp | undefined, refSeq: number, clientId: number, seq: number, opArgs: IMergeTreeDeltaOpArgs): void;

Parameters​

ParameterTypeDescription
startnumberThe inclusive start position of the range to annotate
endnumberThe exclusive end position of the range to annotate
propsPropertySetThe properties to annotate the range with
combiningOpICombiningOp | undefinedOptional. Specifies how to combine values for the property, such as "incr" for increment.
refSeqnumberThe reference sequence number to use to apply the annotate
clientIdnumberThe id of the client making the annotate
seqnumberThe sequence number of the annotate operation
opArgsIMergeTreeDeltaOpArgsThe op args for the annotate op. this is passed to the merge tree callback if there is one

blockClone​

Signature​

blockClone(block: IMergeBlock, segments?: ISegment[]): MergeBlock;

Parameters​

ParameterModifiersTypeDescription
blockIMergeBlock
segmentsoptionalISegment[]

Returns​

Return type: MergeBlock

clone​

Signature​

clone(): void;

createLocalReferencePosition​

Signature​

createLocalReferencePosition(segment: ISegment, offset: number | undefined, refType: ReferenceType, properties: PropertySet | undefined, client: Client): LocalReferencePosition;

Parameters​

ParameterTypeDescription
segmentISegment
offsetnumber | undefined
refTypeReferenceType
propertiesPropertySet | undefined
clientClient

Returns​

Return type: LocalReferencePosition

findTile​

Signature​

findTile(startPos: number, clientId: number, tileLabel: string, posPrecedesTile?: boolean): {
tile: ReferencePosition;
pos: number;
} | undefined;

Parameters​

ParameterModifiersTypeDescription
startPosnumber
clientIdnumber
tileLabelstring
posPrecedesTileoptionalboolean

Returns​

Return type: { tile: ReferencePosition; pos: number; } | undefined

getCollabWindow​

Signature​

getCollabWindow(): CollaborationWindow;

Returns​

Return type: CollaborationWindow

getContainingSegment​

Signature​

getContainingSegment<T extends ISegment>(pos: number, refSeq: number, clientId: number): {
segment: T | undefined;
offset: number | undefined;
};
Type Parameters​
ParameterConstraintDescription
TISegment

Parameters​

ParameterTypeDescription
posnumber
refSeqnumber
clientIdnumber

Returns​

Return type: { segment: T | undefined; offset: number | undefined; }

getLength​

Signature​

getLength(refSeq: number, clientId: number): number;

Parameters​

ParameterTypeDescription
refSeqnumber
clientIdnumber

Returns​

Return type: number

getMarkerFromId​

Signature​

getMarkerFromId(id: string): ISegment | undefined;

Parameters​

ParameterTypeDescription
idstring

Returns​

Return type: ISegment | undefined

getPosition​

Signature​

getPosition(node: MergeNode, refSeq: number, clientId: number): number;

Parameters​

ParameterTypeDescription
nodeMergeNode
refSeqnumber
clientIdnumber

Returns​

Return type: number

getStackContext​

Signature​

getStackContext(startPos: number, clientId: number, rangeLabels: string[]): RangeStackMap;

Parameters​

ParameterTypeDescription
startPosnumber
clientIdnumber
rangeLabelsstring[]

Returns​

Return type: RangeStackMap

getStats​

Signature​

getStats(): MergeTreeStats;

Returns​

Return type: MergeTreeStats

incrementalBlockMap​

Signature​

incrementalBlockMap<TContext>(stateStack: Stack<IncrementalMapState<TContext>>): void;
Type Parameters​
ParameterDescription
TContext

Parameters​

ParameterTypeDescription
stateStackStack<IncrementalMapState<TContext>>

insertAtReferencePosition​

Signature​

insertAtReferencePosition(referencePosition: ReferencePosition, insertSegment: ISegment, opArgs: IMergeTreeDeltaOpArgs): void;

Parameters​

ParameterTypeDescription
referencePositionReferencePosition
insertSegmentISegment
opArgsIMergeTreeDeltaOpArgs

insertSegments​

Signature​

insertSegments(pos: number, segments: ISegment[], refSeq: number, clientId: number, seq: number, opArgs: IMergeTreeDeltaOpArgs | undefined): void;

Parameters​

ParameterTypeDescription
posnumber
segmentsISegment[]
refSeqnumber
clientIdnumber
seqnumber
opArgsIMergeTreeDeltaOpArgs | undefined

localNetLength​

Signature​

localNetLength(segment: ISegment): number;

Parameters​

ParameterTypeDescription
segmentISegment

Returns​

Return type: number

map​

Signature​

map<TClientData>(actions: SegmentActions<TClientData>, refSeq: number, clientId: number, accum: TClientData): void;
Type Parameters​
ParameterDescription
TClientData

Parameters​

ParameterTypeDescription
actionsSegmentActions<TClientData>
refSeqnumber
clientIdnumber
accumTClientData

mapIdToSegment​

Signature​

mapIdToSegment(id: string, segment: ISegment): void;

Parameters​

ParameterTypeDescription
idstring
segmentISegment

mapRange​

Signature​

mapRange<TClientData>(actions: SegmentActions<TClientData>, refSeq: number, clientId: number, accum: TClientData, start?: number, end?: number, splitRange?: boolean): void;
Type Parameters​
ParameterDescription
TClientData

Parameters​

ParameterModifiersTypeDescription
actionsSegmentActions<TClientData>
refSeqnumber
clientIdnumber
accumTClientData
startoptionalnumber
endoptionalnumber
splitRangeoptionalboolean

markRangeRemoved​

Signature​

markRangeRemoved(start: number, end: number, refSeq: number, clientId: number, seq: number, overwrite: boolean | undefined, opArgs: IMergeTreeDeltaOpArgs): void;

Parameters​

ParameterTypeDescription
startnumber
endnumber
refSeqnumber
clientIdnumber
seqnumber
overwriteboolean | undefined
opArgsIMergeTreeDeltaOpArgs

posFromRelativePos​

Given a position specified relative to a marker id, lookup the marker and convert the position to a character position.

Signature​

posFromRelativePos(relativePos: IRelativePosition, refseq?: number, clientId?: number): number;

Parameters​

ParameterModifiersTypeDescription
relativePosIRelativePositionId of marker (may be indirect) and whether position is before or after marker.
refseqoptionalnumberThe reference sequence number at which to compute the position.
clientIdoptionalnumberThe client id with which to compute the position.

Returns​

Return type: number

referencePositionToLocalPosition​

Signature​

referencePositionToLocalPosition(refPos: ReferencePosition, refSeq?: number, clientId?: number): number;

Parameters​

ParameterModifiersTypeDescription
refPosReferencePosition
refSeqoptionalnumber
clientIdoptionalnumber

Returns​

Return type: number

reloadFromSegments​

Signature​

reloadFromSegments(segments: ISegment[]): void;

Parameters​

ParameterTypeDescription
segmentsISegment[]

removeLocalReference​

This API is deprecated and will be removed in a future release.
  • use removeLocalReferencePosition

Signature​

removeLocalReference(segment: ISegment, lref: LocalReference): void;

Parameters​

ParameterTypeDescription
segmentISegment
lrefLocalReference

removeLocalReferencePosition​

Signature​

removeLocalReferencePosition(lref: LocalReferencePosition): LocalReferencePosition | undefined;

Parameters​

ParameterTypeDescription
lrefLocalReferencePosition

Returns​

Return type: LocalReferencePosition | undefined

resolveRemoteClientPosition​

Resolves a remote client's position against the local sequence and returns the remote client's position relative to the local sequence. The client ref seq must be above the minimum sequence number or the return value will be undefined. Generally this method is used in conjunction with signals which provide point in time values for the below parameters, and is useful for things like displaying user position. It should not be used with persisted values as persisted values will quickly become invalid as the remoteClientRefSeq moves below the minimum sequence number

Signature​

resolveRemoteClientPosition(remoteClientPosition: number, remoteClientRefSeq: number, remoteClientId: number): number | undefined;

Parameters​

ParameterTypeDescription
remoteClientPositionnumberThe remote client's position to resolve
remoteClientRefSeqnumberThe reference sequence number of the remote client
remoteClientIdnumberThe client id of the remote client

Returns​

Return type: number | undefined

setMinSeq​

Signature​

setMinSeq(minSeq: number): void;

Parameters​

ParameterTypeDescription
minSeqnumber

startCollaboration​

Signature​

startCollaboration(localClientId: number, minSeq: number, currentSeq: number): void;

Parameters​

ParameterTypeDescription
localClientIdnumber
minSeqnumber
currentSeqnumber

walkAllSegments​

Signature​

walkAllSegments<TClientData>(block: IMergeBlock, action: (segment: ISegment, accum?: TClientData) => boolean, accum?: TClientData): boolean;
Type Parameters​
ParameterDescription
TClientData

Parameters​

ParameterModifiersTypeDescription
blockIMergeBlock
action(segment: ISegment, accum?: TClientData) => boolean
accumoptionalTClientData

Returns​

Return type: boolean