@fluidframework/merge-tree 0.58.1001 → 0.58.2001
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEV.md +9 -0
- package/dist/base.js.map +1 -1
- package/dist/localReference.d.ts.map +1 -1
- package/dist/localReference.js +7 -0
- package/dist/localReference.js.map +1 -1
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +26 -23
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/dist/mergeTreeDeltaCallback.js.map +1 -1
- package/dist/partialLengths.d.ts.map +1 -1
- package/dist/partialLengths.js +2 -2
- package/dist/partialLengths.js.map +1 -1
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +9 -2
- package/dist/properties.js.map +1 -1
- package/dist/segmentPropertiesManager.d.ts.map +1 -1
- package/dist/segmentPropertiesManager.js +4 -0
- package/dist/segmentPropertiesManager.js.map +1 -1
- package/dist/textSegment.d.ts.map +1 -1
- package/dist/textSegment.js.map +1 -1
- package/lib/base.js.map +1 -1
- package/lib/localReference.d.ts.map +1 -1
- package/lib/localReference.js +7 -0
- package/lib/localReference.js.map +1 -1
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +26 -23
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeDeltaCallback.d.ts.map +1 -1
- package/lib/mergeTreeDeltaCallback.js.map +1 -1
- package/lib/partialLengths.d.ts.map +1 -1
- package/lib/partialLengths.js +2 -2
- package/lib/partialLengths.js.map +1 -1
- package/lib/properties.d.ts.map +1 -1
- package/lib/properties.js +9 -2
- package/lib/properties.js.map +1 -1
- package/lib/segmentPropertiesManager.d.ts.map +1 -1
- package/lib/segmentPropertiesManager.js +4 -0
- package/lib/segmentPropertiesManager.js.map +1 -1
- package/lib/textSegment.d.ts.map +1 -1
- package/lib/textSegment.js.map +1 -1
- package/package.json +14 -10
- package/src/base.ts +2 -2
- package/src/localReference.ts +8 -0
- package/src/mergeTree.ts +31 -34
- package/src/mergeTreeDeltaCallback.ts +1 -0
- package/src/partialLengths.ts +2 -4
- package/src/properties.ts +9 -3
- package/src/segmentPropertiesManager.ts +4 -3
- package/src/textSegment.ts +0 -1
package/DEV.md
CHANGED
|
@@ -8,3 +8,12 @@ Ths distinction is important, as a removed segment with undefined length may not
|
|
|
8
8
|
However a not yet visible segment with 0 length may already exist, or will eventually exits on all clients.
|
|
9
9
|
These have implications for eventually consistent conflict resolution. Generally, we ignore removed segments, and special case invisible segments, like in the case
|
|
10
10
|
of conflicting insert as handled in the `breakTie` function
|
|
11
|
+
|
|
12
|
+
### Zamboni
|
|
13
|
+
Zamboni is the garbage collection process in the merge tree. As segment change due to inserts and deletes, we add them to a heap which keeps the segment with the lowest sequence number at the head. These segments drive the zamboni process which is also run on every change. The zamboni process peeks at the heap to determine if the head is below the min sequence, then the segment is eligible. The minimum sequence number is important here, as the minium sequence number is a sequence seen by all clients, and all clients will specify their reference sequence number as above the minium sequence number. This mean that no new operations can come in that reference anything at or below the minimum sequence number, so we are safe to clean up anything we would need to applying incoming. Eligible segments are collected, and then a few different operations are done, superficially, merge, remove, and tree rebalance. Zamboni is incremental, and only collects a constant number of segments at each change so as not to introduce performance issues.
|
|
14
|
+
|
|
15
|
+
Merge is done if two adjacent segments are of the same type like text, that type is mergable (markers are not), neither are deleted, and all the properties match. The merge process reduces the number of segments, which are leaf nodes of the merge tree. For instance a user may type `c`, `a`, and `t` with each character being it's own operation therefore segment. The user could then highlight that range, and set a property on on all the characters indicating that they are bold, `{bold: true}`. At some later point, these segments would move to the top of th heap, and their sequence numbers would move below the minium sequence number. At that point zamboni could take those individual segments, and merge the into a single segment, `cat` with the property `{bold: true}`
|
|
16
|
+
|
|
17
|
+
Remove is a bit simpler. On removal of a segment, we track it's removed sequence number. When the segment's removed sequence number drops below the minimum sequence number it can be safely removed from the tree.
|
|
18
|
+
|
|
19
|
+
Rebalance is a bit different from merge and remove, as it has to do with maintaining the tree itself. After merge or removal there are fewer segments aka leaf nodes in the tree. This allows us to more efficiently pack the non-leaf node of the tree, and potentially remove layers from the tree. This keeps the tree compact, which has both memory, and cpu performance implications.
|
package/dist/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport interface Property<TKey, TData> {\n key: TKey;\n data: TData;\n}\n\nexport interface QProperty<TKey, TData> {\n key?: TKey;\n data?: TData;\n}\n\nexport interface PropertyAction<TKey, TData> {\n\n <TAccum>(p: Property<TKey, TData>, accum?: TAccum): boolean;\n}\n\nexport type ConflictAction<TKey, TData> =\n (key: TKey, currentKey: TKey, data: TData, currentData: TData) => QProperty<TKey, TData>;\n\nexport interface Dictionary<TKey, TData> {\n get(key: TKey): Property<TKey, TData> | undefined;\n put(key: TKey, data: TData, conflict?: ConflictAction<TKey, TData>): void;\n remove(key: TKey): void;\n map<TAccum>(action: PropertyAction<TKey, TData>, accum?: TAccum): void;\n}\n\nexport interface SortedDictionary<TKey, TData> extends Dictionary<TKey, TData> {\n max(): Property<TKey, TData> | undefined;\n min(): Property<TKey, TData> | undefined;\n mapRange<TAccum>(action: PropertyAction<TKey, TData>, accum?: TAccum, start?: TKey, end?: TKey): void;\n}\n\nexport interface KeyComparer<TKey> {\n\n (a: TKey, b: TKey): number;\n}\n/**\n * A range [start, end)\n */\nexport interface IIntegerRange {\n start: number;\n end: number;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport interface Property<TKey, TData> {\n key: TKey;\n data: TData;\n}\n\nexport interface QProperty<TKey, TData> {\n key?: TKey;\n data?: TData;\n}\n\nexport interface PropertyAction<TKey, TData> {\n // eslint-disable-next-line @typescript-eslint/prefer-function-type\n <TAccum>(p: Property<TKey, TData>, accum?: TAccum): boolean;\n}\n\nexport type ConflictAction<TKey, TData> =\n (key: TKey, currentKey: TKey, data: TData, currentData: TData) => QProperty<TKey, TData>;\n\nexport interface Dictionary<TKey, TData> {\n get(key: TKey): Property<TKey, TData> | undefined;\n put(key: TKey, data: TData, conflict?: ConflictAction<TKey, TData>): void;\n remove(key: TKey): void;\n map<TAccum>(action: PropertyAction<TKey, TData>, accum?: TAccum): void;\n}\n\nexport interface SortedDictionary<TKey, TData> extends Dictionary<TKey, TData> {\n max(): Property<TKey, TData> | undefined;\n min(): Property<TKey, TData> | undefined;\n mapRange<TAccum>(action: PropertyAction<TKey, TData>, accum?: TAccum, start?: TKey, end?: TKey): void;\n}\n\nexport interface KeyComparer<TKey> {\n // eslint-disable-next-line @typescript-eslint/prefer-function-type\n (a: TKey, b: TKey): number;\n}\n/**\n * A range [start, end)\n */\nexport interface IIntegerRange {\n start: number;\n end: number;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localReference.d.ts","sourceRoot":"","sources":["../src/localReference.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"localReference.d.ts","sourceRoot":"","sources":["../src/localReference.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EACH,QAAQ,EACR,iBAAiB,EAKpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAiB,WAAW,EAAE,MAAM,cAAc,CAAC;AAE1D,qBAAa,cAAe,YAAW,iBAAiB;IAQhD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEhB,MAAM;IACN,OAAO;IAVlB,gBAAuB,gBAAgB,EAAE,MAAM,CAAM;IAE9C,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;gBAGhB,MAAM,EAAE,MAAM,EAC/B,WAAW,EAAE,QAAQ,EACd,MAAM,SAAI,EACV,OAAO,gBAAuB;IAKlC,GAAG,CAAC,CAAC,EAAE,cAAc;IAQrB,GAAG,CAAC,CAAC,EAAE,cAAc;IAQrB,OAAO,CAAC,CAAC,EAAE,cAAc;IAczB,UAAU;IAQV,aAAa;IAIb,cAAc;IAId,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIpC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIrC,aAAa,IAAI,MAAM,EAAE,GAAG,SAAS;IAIrC,cAAc,IAAI,MAAM,EAAE,GAAG,SAAS;IAItC,MAAM;IAIN,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,YAAY;IAItD,SAAS;IAIT,UAAU;IAIV,SAAS;IAOT,aAAa;CAGvB;AAED,UAAU,aAAa;IACnB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,qBAAa,wBAAwB;IAsB7B,OAAO,CAAC,QAAQ,CAAC,OAAO;WArBd,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ;IAgB5C,YAAY,EAAE,MAAM,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAa;gBAGR,OAAO,EAAE,QAAQ,EAClC,oBAAoB,gCAA6D;IAO9E,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAiBR,eAAe,cAAc,CAAC;;;IAmBvC,KAAK;IAuBZ,IAAW,KAAK,YAEf;IAEM,WAAW,CAAC,IAAI,EAAE,cAAc;IAmBhC,cAAc,CAAC,IAAI,EAAE,cAAc;IAiC1C;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,EAAE,wBAAwB;IAetC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAqBxC,mBAAmB,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE;IA8BvD,kBAAkB,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE;CA8BhE"}
|
package/dist/localReference.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.LocalReferenceCollection = exports.LocalReference = void 0;
|
|
8
|
+
const common_utils_1 = require("@fluidframework/common-utils");
|
|
8
9
|
const mergeTree_1 = require("./mergeTree");
|
|
9
10
|
const ops_1 = require("./ops");
|
|
10
11
|
const properties_1 = require("./properties");
|
|
@@ -112,8 +113,14 @@ class LocalReferenceCollection {
|
|
|
112
113
|
if (!seg1.localRefs) {
|
|
113
114
|
seg1.localRefs = new LocalReferenceCollection(seg1);
|
|
114
115
|
}
|
|
116
|
+
common_utils_1.assert(seg1.localRefs.refsByOffset.length === seg1.cachedLength, 0x2be /* "LocalReferences array contains a gap" */);
|
|
115
117
|
seg1.localRefs.append(seg2.localRefs);
|
|
116
118
|
}
|
|
119
|
+
else if (seg1.localRefs) {
|
|
120
|
+
// Since creating the LocalReferenceCollection, we may have appended
|
|
121
|
+
// segments that had no local references. Account for them now by padding the array.
|
|
122
|
+
seg1.localRefs.refsByOffset.length += seg2.cachedLength;
|
|
123
|
+
}
|
|
117
124
|
}
|
|
118
125
|
[Symbol.iterator]() {
|
|
119
126
|
const subiterators = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localReference.js","sourceRoot":"","sources":["../src/localReference.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Client } from \"./client\";\nimport {\n ISegment,\n ReferencePosition,\n refGetRangeLabels,\n refGetTileLabels,\n refHasRangeLabel,\n refHasTileLabel,\n} from \"./mergeTree\";\nimport { ICombiningOp, ReferenceType } from \"./ops\";\nimport { addProperties, PropertySet } from \"./properties\";\n\nexport class LocalReference implements ReferencePosition {\n public static readonly DetachedPosition: number = -1;\n\n public properties: PropertySet | undefined;\n public pairedRef?: LocalReference;\n public segment: ISegment | undefined;\n\n constructor(\n private readonly client: Client,\n initSegment: ISegment,\n public offset = 0,\n public refType = ReferenceType.Simple,\n ) {\n this.segment = initSegment;\n }\n\n public min(b: LocalReference) {\n if (this.compare(b) < 0) {\n return this;\n } else {\n return b;\n }\n }\n\n public max(b: LocalReference) {\n if (this.compare(b) > 0) {\n return this;\n } else {\n return b;\n }\n }\n\n public compare(b: LocalReference) {\n if (this.segment === b.segment) {\n return this.offset - b.offset;\n } else {\n if (this.segment === undefined\n || (b.segment !== undefined &&\n this.segment.ordinal < b.segment.ordinal)) {\n return -1;\n } else {\n return 1;\n }\n }\n }\n\n public toPosition() {\n if (this.segment && this.segment.parent) {\n return this.getOffset() + this.client.getPosition(this.segment);\n } else {\n return LocalReference.DetachedPosition;\n }\n }\n\n public hasTileLabels() {\n return !!this.getTileLabels();\n }\n\n public hasRangeLabels() {\n return !!this.getRangeLabels();\n }\n\n public hasTileLabel(label: string): boolean {\n return refHasTileLabel(this, label);\n }\n\n public hasRangeLabel(label: string): boolean {\n return refHasRangeLabel(this, label);\n }\n\n public getTileLabels(): string[] | undefined {\n return refGetTileLabels(this);\n }\n\n public getRangeLabels(): string[] | undefined {\n return refGetRangeLabels(this);\n }\n\n public isLeaf() {\n return false;\n }\n\n public addProperties(newProps: PropertySet, op?: ICombiningOp) {\n this.properties = addProperties(this.properties, newProps, op);\n }\n\n public getClient() {\n return this.client;\n }\n\n public getSegment() {\n return this.segment;\n }\n\n public getOffset() {\n if (this.segment?.removedSeq) {\n return 0;\n }\n return this.offset;\n }\n\n public getProperties() {\n return this.properties;\n }\n}\n\ninterface IRefsAtOffset {\n before?: LocalReference[];\n at?: LocalReference[];\n after?: LocalReference[];\n}\n\nexport class LocalReferenceCollection {\n public static append(seg1: ISegment, seg2: ISegment) {\n if (seg2.localRefs && !seg2.localRefs.empty) {\n if (!seg1.localRefs) {\n seg1.localRefs = new LocalReferenceCollection(seg1);\n }\n seg1.localRefs.append(seg2.localRefs);\n }\n }\n\n public hierRefCount: number = 0;\n private readonly refsByOffset: (IRefsAtOffset | undefined)[];\n private refCount: number = 0;\n\n constructor(\n private readonly segment: ISegment,\n initialRefsByfOffset = new Array<IRefsAtOffset | undefined>(segment.cachedLength)) {\n // Since javascript arrays are sparse the above won't populate any of the\n // indicies, but it will ensure the length property of the array matches\n // the length of the segment.\n this.refsByOffset = initialRefsByfOffset;\n }\n\n public [Symbol.iterator]() {\n const subiterators: IterableIterator<LocalReference>[] = [];\n for (const refs of this.refsByOffset) {\n if (refs) {\n if (refs.before) {\n subiterators.push(refs.before[Symbol.iterator]());\n }\n if (refs.at) {\n subiterators.push(refs.at[Symbol.iterator]());\n }\n if (refs.after) {\n subiterators.push(refs.after[Symbol.iterator]());\n }\n }\n }\n\n const iterator = {\n next(): IteratorResult<LocalReference> {\n while (subiterators.length > 0) {\n const next = subiterators[0].next();\n if (next.done === true) {\n subiterators.shift();\n } else {\n return next;\n }\n }\n\n return { value: undefined, done: true };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n return iterator;\n }\n\n public clear() {\n this.refCount = 0;\n this.hierRefCount = 0;\n const detachSegments = (refs: LocalReference[] | undefined) => {\n if (refs) {\n refs.forEach((r) => {\n if (r.segment === this.segment) {\n r.segment = undefined;\n }\n });\n }\n };\n for (let i = 0; i < this.refsByOffset.length; i++) {\n const refsAtOffset = this.refsByOffset[i];\n if (refsAtOffset) {\n detachSegments(refsAtOffset.before);\n detachSegments(refsAtOffset.at);\n detachSegments(refsAtOffset.before);\n this.refsByOffset[i] = undefined;\n }\n }\n }\n\n public get empty() {\n return this.refCount === 0;\n }\n\n public addLocalRef(lref: LocalReference) {\n const refsAtOffset = this.refsByOffset[lref.offset];\n if (refsAtOffset === undefined) {\n this.refsByOffset[lref.offset] = {\n at: [lref],\n };\n } else if (refsAtOffset.at === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.refsByOffset[lref.offset]!.at = [lref];\n } else {\n refsAtOffset.at.push(lref);\n }\n\n if (lref.hasRangeLabels() || lref.hasTileLabels()) {\n this.hierRefCount++;\n }\n this.refCount++;\n }\n\n public removeLocalRef(lref: LocalReference) {\n const tryRemoveRef = (refs: LocalReference[] | undefined) => {\n if (refs) {\n const index = refs.indexOf(lref);\n if (index >= 0) {\n refs.splice(index, 1);\n if (lref.hasRangeLabels() || lref.hasTileLabels()) {\n this.hierRefCount--;\n }\n this.refCount--;\n return lref;\n }\n }\n };\n const refAtOffset = this.refsByOffset[lref.offset];\n if (refAtOffset !== undefined) {\n let ref = tryRemoveRef(refAtOffset.before);\n if (ref) {\n return ref;\n }\n\n ref = tryRemoveRef(refAtOffset.at);\n if (ref) {\n return ref;\n }\n\n ref = tryRemoveRef(refAtOffset.after);\n if (ref) {\n return ref;\n }\n }\n }\n\n /**\n * Called by 'append()' implementations to append local refs from the given 'other' segment to the\n * end of 'this' segment.\n *\n * Note: This method should be invoked after the caller has ensured that segments can be merged,\n * but before 'this' segment's cachedLength has changed, or the adjustment to the local refs\n * will be incorrect.\n */\n public append(other: LocalReferenceCollection) {\n if (!other || other.empty) {\n return;\n }\n this.hierRefCount += other.hierRefCount;\n this.refCount += other.refCount;\n other.hierRefCount = 0;\n for (const lref of other) {\n lref.segment = this.segment;\n lref.offset += this.refsByOffset.length;\n }\n\n this.refsByOffset.push(...other.refsByOffset);\n }\n\n public split(offset: number, splitSeg: ISegment) {\n if (!this.empty) {\n const localRefs =\n new LocalReferenceCollection(\n splitSeg,\n this.refsByOffset.splice(offset, this.refsByOffset.length - offset));\n\n splitSeg.localRefs = localRefs;\n for (const lref of localRefs) {\n lref.segment = splitSeg;\n lref.offset -= offset;\n if (lref.hasRangeLabels() || lref.hasTileLabels()) {\n this.hierRefCount--;\n localRefs.hierRefCount++;\n }\n this.refCount--;\n localRefs.refCount++;\n }\n }\n }\n\n public addBeforeTombstones(...refs: Iterable<LocalReference>[]) {\n const beforeRefs: LocalReference[] = [];\n\n for (const iterable of refs) {\n for (const lref of iterable) {\n // eslint-disable-next-line no-bitwise\n if (lref.refType & ReferenceType.SlideOnRemove) {\n beforeRefs.push(lref);\n lref.segment = this.segment;\n lref.offset = 0;\n if (lref.hasRangeLabels() || lref.hasTileLabels()) {\n this.hierRefCount++;\n }\n this.refCount++;\n } else {\n lref.segment = undefined;\n }\n }\n }\n if (beforeRefs.length > 0) {\n if (this.refsByOffset[0] === undefined) {\n this.refsByOffset[0] = { before: beforeRefs };\n } else if (this.refsByOffset[0].before === undefined) {\n this.refsByOffset[0].before = beforeRefs;\n } else {\n this.refsByOffset[0].before.unshift(...beforeRefs);\n }\n }\n }\n\n public addAfterTombstones(...refs: Iterable<LocalReference>[]) {\n const afterRefs: LocalReference[] = [];\n\n for (const iterable of refs) {\n for (const lref of iterable) {\n // eslint-disable-next-line no-bitwise\n if (lref.refType & ReferenceType.SlideOnRemove) {\n afterRefs.push(lref);\n lref.segment = this.segment;\n lref.offset = this.segment.cachedLength - 1;\n if (lref.hasRangeLabels() || lref.hasTileLabels()) {\n this.hierRefCount++;\n }\n this.refCount++;\n } else {\n lref.segment = undefined;\n }\n }\n }\n if (afterRefs.length > 0) {\n const refsAtOffset = this.refsByOffset[this.segment.cachedLength - 1];\n if (refsAtOffset === undefined) {\n this.refsByOffset[this.segment.cachedLength - 1] = { after: afterRefs };\n } else if (refsAtOffset.after === undefined) {\n refsAtOffset.after = afterRefs;\n } else {\n refsAtOffset.after.push(...afterRefs);\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"localReference.js","sourceRoot":"","sources":["../src/localReference.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/common-utils\";\nimport { Client } from \"./client\";\nimport {\n ISegment,\n ReferencePosition,\n refGetRangeLabels,\n refGetTileLabels,\n refHasRangeLabel,\n refHasTileLabel,\n} from \"./mergeTree\";\nimport { ICombiningOp, ReferenceType } from \"./ops\";\nimport { addProperties, PropertySet } from \"./properties\";\n\nexport class LocalReference implements ReferencePosition {\n public static readonly DetachedPosition: number = -1;\n\n public properties: PropertySet | undefined;\n public pairedRef?: LocalReference;\n public segment: ISegment | undefined;\n\n constructor(\n private readonly client: Client,\n initSegment: ISegment,\n public offset = 0,\n public refType = ReferenceType.Simple,\n ) {\n this.segment = initSegment;\n }\n\n public min(b: LocalReference) {\n if (this.compare(b) < 0) {\n return this;\n } else {\n return b;\n }\n }\n\n public max(b: LocalReference) {\n if (this.compare(b) > 0) {\n return this;\n } else {\n return b;\n }\n }\n\n public compare(b: LocalReference) {\n if (this.segment === b.segment) {\n return this.offset - b.offset;\n } else {\n if (this.segment === undefined\n || (b.segment !== undefined &&\n this.segment.ordinal < b.segment.ordinal)) {\n return -1;\n } else {\n return 1;\n }\n }\n }\n\n public toPosition() {\n if (this.segment && this.segment.parent) {\n return this.getOffset() + this.client.getPosition(this.segment);\n } else {\n return LocalReference.DetachedPosition;\n }\n }\n\n public hasTileLabels() {\n return !!this.getTileLabels();\n }\n\n public hasRangeLabels() {\n return !!this.getRangeLabels();\n }\n\n public hasTileLabel(label: string): boolean {\n return refHasTileLabel(this, label);\n }\n\n public hasRangeLabel(label: string): boolean {\n return refHasRangeLabel(this, label);\n }\n\n public getTileLabels(): string[] | undefined {\n return refGetTileLabels(this);\n }\n\n public getRangeLabels(): string[] | undefined {\n return refGetRangeLabels(this);\n }\n\n public isLeaf() {\n return false;\n }\n\n public addProperties(newProps: PropertySet, op?: ICombiningOp) {\n this.properties = addProperties(this.properties, newProps, op);\n }\n\n public getClient() {\n return this.client;\n }\n\n public getSegment() {\n return this.segment;\n }\n\n public getOffset() {\n if (this.segment?.removedSeq) {\n return 0;\n }\n return this.offset;\n }\n\n public getProperties() {\n return this.properties;\n }\n}\n\ninterface IRefsAtOffset {\n before?: LocalReference[];\n at?: LocalReference[];\n after?: LocalReference[];\n}\n\nexport class LocalReferenceCollection {\n public static append(seg1: ISegment, seg2: ISegment) {\n if (seg2.localRefs && !seg2.localRefs.empty) {\n if (!seg1.localRefs) {\n seg1.localRefs = new LocalReferenceCollection(seg1);\n }\n assert(seg1.localRefs.refsByOffset.length === seg1.cachedLength,\n 0x2be /* \"LocalReferences array contains a gap\" */);\n seg1.localRefs.append(seg2.localRefs);\n }\n else if (seg1.localRefs) {\n // Since creating the LocalReferenceCollection, we may have appended\n // segments that had no local references. Account for them now by padding the array.\n seg1.localRefs.refsByOffset.length += seg2.cachedLength;\n }\n }\n\n public hierRefCount: number = 0;\n private readonly refsByOffset: (IRefsAtOffset | undefined)[];\n private refCount: number = 0;\n\n constructor(\n private readonly segment: ISegment,\n initialRefsByfOffset = new Array<IRefsAtOffset | undefined>(segment.cachedLength)) {\n // Since javascript arrays are sparse the above won't populate any of the\n // indicies, but it will ensure the length property of the array matches\n // the length of the segment.\n this.refsByOffset = initialRefsByfOffset;\n }\n\n public [Symbol.iterator]() {\n const subiterators: IterableIterator<LocalReference>[] = [];\n for (const refs of this.refsByOffset) {\n if (refs) {\n if (refs.before) {\n subiterators.push(refs.before[Symbol.iterator]());\n }\n if (refs.at) {\n subiterators.push(refs.at[Symbol.iterator]());\n }\n if (refs.after) {\n subiterators.push(refs.after[Symbol.iterator]());\n }\n }\n }\n\n const iterator = {\n next(): IteratorResult<LocalReference> {\n while (subiterators.length > 0) {\n const next = subiterators[0].next();\n if (next.done === true) {\n subiterators.shift();\n } else {\n return next;\n }\n }\n\n return { value: undefined, done: true };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n return iterator;\n }\n\n public clear() {\n this.refCount = 0;\n this.hierRefCount = 0;\n const detachSegments = (refs: LocalReference[] | undefined) => {\n if (refs) {\n refs.forEach((r) => {\n if (r.segment === this.segment) {\n r.segment = undefined;\n }\n });\n }\n };\n for (let i = 0; i < this.refsByOffset.length; i++) {\n const refsAtOffset = this.refsByOffset[i];\n if (refsAtOffset) {\n detachSegments(refsAtOffset.before);\n detachSegments(refsAtOffset.at);\n detachSegments(refsAtOffset.before);\n this.refsByOffset[i] = undefined;\n }\n }\n }\n\n public get empty() {\n return this.refCount === 0;\n }\n\n public addLocalRef(lref: LocalReference) {\n const refsAtOffset = this.refsByOffset[lref.offset];\n if (refsAtOffset === undefined) {\n this.refsByOffset[lref.offset] = {\n at: [lref],\n };\n } else if (refsAtOffset.at === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.refsByOffset[lref.offset]!.at = [lref];\n } else {\n refsAtOffset.at.push(lref);\n }\n\n if (lref.hasRangeLabels() || lref.hasTileLabels()) {\n this.hierRefCount++;\n }\n this.refCount++;\n }\n\n public removeLocalRef(lref: LocalReference) {\n const tryRemoveRef = (refs: LocalReference[] | undefined) => {\n if (refs) {\n const index = refs.indexOf(lref);\n if (index >= 0) {\n refs.splice(index, 1);\n if (lref.hasRangeLabels() || lref.hasTileLabels()) {\n this.hierRefCount--;\n }\n this.refCount--;\n return lref;\n }\n }\n };\n const refAtOffset = this.refsByOffset[lref.offset];\n if (refAtOffset !== undefined) {\n let ref = tryRemoveRef(refAtOffset.before);\n if (ref) {\n return ref;\n }\n\n ref = tryRemoveRef(refAtOffset.at);\n if (ref) {\n return ref;\n }\n\n ref = tryRemoveRef(refAtOffset.after);\n if (ref) {\n return ref;\n }\n }\n }\n\n /**\n * Called by 'append()' implementations to append local refs from the given 'other' segment to the\n * end of 'this' segment.\n *\n * Note: This method should be invoked after the caller has ensured that segments can be merged,\n * but before 'this' segment's cachedLength has changed, or the adjustment to the local refs\n * will be incorrect.\n */\n public append(other: LocalReferenceCollection) {\n if (!other || other.empty) {\n return;\n }\n this.hierRefCount += other.hierRefCount;\n this.refCount += other.refCount;\n other.hierRefCount = 0;\n for (const lref of other) {\n lref.segment = this.segment;\n lref.offset += this.refsByOffset.length;\n }\n\n this.refsByOffset.push(...other.refsByOffset);\n }\n\n public split(offset: number, splitSeg: ISegment) {\n if (!this.empty) {\n const localRefs =\n new LocalReferenceCollection(\n splitSeg,\n this.refsByOffset.splice(offset, this.refsByOffset.length - offset));\n\n splitSeg.localRefs = localRefs;\n for (const lref of localRefs) {\n lref.segment = splitSeg;\n lref.offset -= offset;\n if (lref.hasRangeLabels() || lref.hasTileLabels()) {\n this.hierRefCount--;\n localRefs.hierRefCount++;\n }\n this.refCount--;\n localRefs.refCount++;\n }\n }\n }\n\n public addBeforeTombstones(...refs: Iterable<LocalReference>[]) {\n const beforeRefs: LocalReference[] = [];\n\n for (const iterable of refs) {\n for (const lref of iterable) {\n // eslint-disable-next-line no-bitwise\n if (lref.refType & ReferenceType.SlideOnRemove) {\n beforeRefs.push(lref);\n lref.segment = this.segment;\n lref.offset = 0;\n if (lref.hasRangeLabels() || lref.hasTileLabels()) {\n this.hierRefCount++;\n }\n this.refCount++;\n } else {\n lref.segment = undefined;\n }\n }\n }\n if (beforeRefs.length > 0) {\n if (this.refsByOffset[0] === undefined) {\n this.refsByOffset[0] = { before: beforeRefs };\n } else if (this.refsByOffset[0].before === undefined) {\n this.refsByOffset[0].before = beforeRefs;\n } else {\n this.refsByOffset[0].before.unshift(...beforeRefs);\n }\n }\n }\n\n public addAfterTombstones(...refs: Iterable<LocalReference>[]) {\n const afterRefs: LocalReference[] = [];\n\n for (const iterable of refs) {\n for (const lref of iterable) {\n // eslint-disable-next-line no-bitwise\n if (lref.refType & ReferenceType.SlideOnRemove) {\n afterRefs.push(lref);\n lref.segment = this.segment;\n lref.offset = this.segment.cachedLength - 1;\n if (lref.hasRangeLabels() || lref.hasTileLabels()) {\n this.hierRefCount++;\n }\n this.refCount++;\n } else {\n lref.segment = undefined;\n }\n }\n }\n if (afterRefs.length > 0) {\n const refsAtOffset = this.refsByOffset[this.segment.cachedLength - 1];\n if (refsAtOffset === undefined) {\n this.refsByOffset[this.segment.cachedLength - 1] = { after: afterRefs };\n } else if (refsAtOffset.after === undefined) {\n refsAtOffset.after = afterRefs;\n } else {\n refsAtOffset.after.push(...afterRefs);\n }\n }\n }\n}\n"]}
|
package/dist/mergeTree.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeTree.d.ts","sourceRoot":"","sources":["../src/mergeTree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mergeTree.d.ts","sourceRoot":"","sources":["../src/mergeTree.ts"],"names":[],"mappings":"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"}
|
package/dist/mergeTree.js
CHANGED
|
@@ -49,7 +49,7 @@ function addTileIfNotPresent(tile, tiles) {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
function applyStackDelta(currentStackMap, deltaStackMap) {
|
|
52
|
-
// eslint-disable-next-line guard-for-in
|
|
52
|
+
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
53
53
|
for (const label in deltaStackMap) {
|
|
54
54
|
const deltaStack = deltaStackMap[label];
|
|
55
55
|
if (!deltaStack.empty()) {
|
|
@@ -212,7 +212,7 @@ class HierMergeBlock extends MergeBlock {
|
|
|
212
212
|
}
|
|
213
213
|
hierToString(indentCount) {
|
|
214
214
|
let strbuf = "";
|
|
215
|
-
// eslint-disable-next-line guard-for-in
|
|
215
|
+
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
216
216
|
for (const key in this.rangeStacks) {
|
|
217
217
|
const stack = this.rangeStacks[key];
|
|
218
218
|
strbuf += internedSpaces(indentCount);
|
|
@@ -285,6 +285,7 @@ class BaseSegment extends MergeNode {
|
|
|
285
285
|
this.localSeq = undefined;
|
|
286
286
|
return true;
|
|
287
287
|
case 1 /* REMOVE */:
|
|
288
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
288
289
|
const removalInfo = this;
|
|
289
290
|
common_utils_1.assert(!!removalInfo, 0x046 /* "On remove ack, missing removal info!" */);
|
|
290
291
|
common_utils_1.assert(!!removalInfo.removedSeq, 0x047 /* "On remove ack, missing removed sequence number!" */);
|
|
@@ -497,6 +498,7 @@ class Marker extends BaseSegment {
|
|
|
497
498
|
// Avoid circular reference when stringifying makers containing handles.
|
|
498
499
|
// (Substitute a debug string instead.)
|
|
499
500
|
const handle = !!value && value.IFluidHandle;
|
|
501
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
500
502
|
return handle
|
|
501
503
|
? `#Handle(${handle.routeContext.path}/${handle.path})`
|
|
502
504
|
: value;
|
|
@@ -762,6 +764,7 @@ class MergeTree {
|
|
|
762
764
|
// snapshot header. The bulk of the segments in long documents are inserted via `insertSegments()`.
|
|
763
765
|
this.blockUpdate(block);
|
|
764
766
|
}
|
|
767
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
765
768
|
return blocks.length === 1 // If there is only one block at this layer...
|
|
766
769
|
? blocks[0] // ...then we're done. Return the root.
|
|
767
770
|
: buildMergeBlock(blocks); // ...otherwise recursively build the next layer above blocks.
|
|
@@ -982,8 +985,8 @@ class MergeTree {
|
|
|
982
985
|
stats.leafCount += childStats.leafCount;
|
|
983
986
|
stats.removedLeafCount += childStats.removedLeafCount;
|
|
984
987
|
stats.liveCount += childStats.liveCount;
|
|
985
|
-
for (let
|
|
986
|
-
stats.histo[
|
|
988
|
+
for (let j = 0; j < exports.MaxNodesInBlock; j++) {
|
|
989
|
+
stats.histo[j] += childStats.histo[j];
|
|
987
990
|
}
|
|
988
991
|
}
|
|
989
992
|
else {
|
|
@@ -1034,7 +1037,7 @@ class MergeTree {
|
|
|
1034
1037
|
getContainingSegment(pos, refSeq, clientId) {
|
|
1035
1038
|
let segment;
|
|
1036
1039
|
let offset;
|
|
1037
|
-
const leaf = (leafSeg, segpos,
|
|
1040
|
+
const leaf = (leafSeg, segpos, _refSeq, _clientId, start) => {
|
|
1038
1041
|
segment = leafSeg;
|
|
1039
1042
|
offset = start;
|
|
1040
1043
|
return false;
|
|
@@ -1510,7 +1513,7 @@ class MergeTree {
|
|
|
1510
1513
|
}
|
|
1511
1514
|
blockInsert(pos, refSeq, clientId, seq, localSeq, newSegments) {
|
|
1512
1515
|
let segIsLocal = false;
|
|
1513
|
-
const checkSegmentIsLocal = (segment,
|
|
1516
|
+
const checkSegmentIsLocal = (segment, _pos, _refSeq, _clientId) => {
|
|
1514
1517
|
if (segment.seq === constants_1.UnassignedSequenceNumber) {
|
|
1515
1518
|
segIsLocal = true;
|
|
1516
1519
|
}
|
|
@@ -1539,7 +1542,7 @@ class MergeTree {
|
|
|
1539
1542
|
}
|
|
1540
1543
|
}
|
|
1541
1544
|
};
|
|
1542
|
-
const onLeaf = (segment,
|
|
1545
|
+
const onLeaf = (segment, _pos, context) => {
|
|
1543
1546
|
const segmentChanges = {};
|
|
1544
1547
|
if (segment) {
|
|
1545
1548
|
// Insert before segment
|
|
@@ -1611,24 +1614,24 @@ class MergeTree {
|
|
|
1611
1614
|
while (parent) {
|
|
1612
1615
|
const children = parent.children;
|
|
1613
1616
|
let childIndex;
|
|
1614
|
-
let
|
|
1617
|
+
let _node;
|
|
1615
1618
|
let matchedStart = false;
|
|
1616
1619
|
for (childIndex = parent.childCount - 1; childIndex >= 0; childIndex--) {
|
|
1617
|
-
|
|
1620
|
+
_node = children[childIndex];
|
|
1618
1621
|
if (matchedStart) {
|
|
1619
|
-
if (!
|
|
1620
|
-
const childBlock =
|
|
1622
|
+
if (!_node.isLeaf()) {
|
|
1623
|
+
const childBlock = _node;
|
|
1621
1624
|
go = this.nodeMapReverse(childBlock, leafAction, 0, constants_1.UniversalSequenceNumber, this.collabWindow.clientId);
|
|
1622
1625
|
}
|
|
1623
1626
|
else {
|
|
1624
|
-
go = leafAction(
|
|
1627
|
+
go = leafAction(_node, 0, constants_1.UniversalSequenceNumber, this.collabWindow.clientId, 0, 0, undefined);
|
|
1625
1628
|
}
|
|
1626
1629
|
if (!go) {
|
|
1627
1630
|
return;
|
|
1628
1631
|
}
|
|
1629
1632
|
}
|
|
1630
1633
|
else {
|
|
1631
|
-
matchedStart = (startNode ===
|
|
1634
|
+
matchedStart = (startNode === _node);
|
|
1632
1635
|
}
|
|
1633
1636
|
}
|
|
1634
1637
|
startNode = parent;
|
|
@@ -1644,24 +1647,24 @@ class MergeTree {
|
|
|
1644
1647
|
while (parent) {
|
|
1645
1648
|
const children = parent.children;
|
|
1646
1649
|
let childIndex;
|
|
1647
|
-
let
|
|
1650
|
+
let _node;
|
|
1648
1651
|
let matchedStart = false;
|
|
1649
1652
|
for (childIndex = 0; childIndex < parent.childCount; childIndex++) {
|
|
1650
|
-
|
|
1653
|
+
_node = children[childIndex];
|
|
1651
1654
|
if (matchedStart) {
|
|
1652
|
-
if (!
|
|
1653
|
-
const childBlock =
|
|
1655
|
+
if (!_node.isLeaf()) {
|
|
1656
|
+
const childBlock = _node;
|
|
1654
1657
|
go = this.nodeMap(childBlock, actions, 0, constants_1.UniversalSequenceNumber, this.collabWindow.clientId, undefined);
|
|
1655
1658
|
}
|
|
1656
1659
|
else {
|
|
1657
|
-
go = leafAction(
|
|
1660
|
+
go = leafAction(_node, 0, constants_1.UniversalSequenceNumber, this.collabWindow.clientId, 0, 0, undefined);
|
|
1658
1661
|
}
|
|
1659
1662
|
if (!go) {
|
|
1660
1663
|
return;
|
|
1661
1664
|
}
|
|
1662
1665
|
}
|
|
1663
1666
|
else {
|
|
1664
|
-
matchedStart = (startNode ===
|
|
1667
|
+
matchedStart = (startNode === _node);
|
|
1665
1668
|
}
|
|
1666
1669
|
}
|
|
1667
1670
|
startNode = parent;
|
|
@@ -1858,7 +1861,7 @@ class MergeTree {
|
|
|
1858
1861
|
const removedSegments = [];
|
|
1859
1862
|
const savedLocalRefs = [];
|
|
1860
1863
|
const localSeq = seq === constants_1.UnassignedSequenceNumber ? ++this.collabWindow.localSeq : undefined;
|
|
1861
|
-
const markRemoved = (segment, pos,
|
|
1864
|
+
const markRemoved = (segment, pos, _start, _end) => {
|
|
1862
1865
|
const removalInfo = segment;
|
|
1863
1866
|
if (removalInfo.removedSeq !== undefined) {
|
|
1864
1867
|
_overwrite = true;
|
|
@@ -1886,8 +1889,8 @@ class MergeTree {
|
|
|
1886
1889
|
// Save segment so can assign removed sequence number when acked by server
|
|
1887
1890
|
if (this.collabWindow.collaborating) {
|
|
1888
1891
|
// Use removal information
|
|
1889
|
-
const
|
|
1890
|
-
if (
|
|
1892
|
+
const _removalInfo = segment;
|
|
1893
|
+
if (_removalInfo.removedSeq === constants_1.UnassignedSequenceNumber && clientId === this.collabWindow.clientId) {
|
|
1891
1894
|
segmentGroup = this.addToPendingList(segment, segmentGroup, localSeq);
|
|
1892
1895
|
}
|
|
1893
1896
|
else {
|
|
@@ -1898,7 +1901,7 @@ class MergeTree {
|
|
|
1898
1901
|
}
|
|
1899
1902
|
return true;
|
|
1900
1903
|
};
|
|
1901
|
-
const afterMarkRemoved = (node, pos,
|
|
1904
|
+
const afterMarkRemoved = (node, pos, _start, _end) => {
|
|
1902
1905
|
if (_overwrite) {
|
|
1903
1906
|
this.nodeUpdateLengthNewStructure(node);
|
|
1904
1907
|
}
|