@fluidframework/merge-tree 2.5.0 → 2.10.0-305357
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/api-report/merge-tree.legacy.alpha.api.md +0 -230
- package/dist/client.d.ts +9 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -6
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +0 -12
- package/dist/mergeTree.d.ts +14 -13
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +51 -20
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeNodes.d.ts +13 -79
- package/dist/mergeTreeNodes.d.ts.map +1 -1
- package/dist/mergeTreeNodes.js +5 -95
- package/dist/mergeTreeNodes.js.map +1 -1
- package/dist/referencePositions.d.ts +0 -12
- package/dist/referencePositions.d.ts.map +1 -1
- package/dist/referencePositions.js.map +1 -1
- package/dist/segmentGroupCollection.d.ts +7 -14
- package/dist/segmentGroupCollection.d.ts.map +1 -1
- package/dist/segmentGroupCollection.js +2 -9
- package/dist/segmentGroupCollection.js.map +1 -1
- package/dist/segmentPropertiesManager.d.ts +13 -12
- package/dist/segmentPropertiesManager.d.ts.map +1 -1
- package/dist/segmentPropertiesManager.js +19 -13
- package/dist/segmentPropertiesManager.js.map +1 -1
- package/dist/sortedSegmentSet.d.ts +0 -1
- package/dist/sortedSegmentSet.d.ts.map +1 -1
- package/dist/sortedSegmentSet.js.map +1 -1
- package/dist/sortedSet.d.ts +0 -1
- package/dist/sortedSet.d.ts.map +1 -1
- package/dist/sortedSet.js +0 -1
- package/dist/sortedSet.js.map +1 -1
- package/dist/test/index.d.ts +2 -2
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +2 -4
- package/dist/test/index.js.map +1 -1
- package/dist/test/mergeTree.annotate.spec.js +4 -4
- package/dist/test/mergeTree.annotate.spec.js.map +1 -1
- package/dist/test/segmentGroupCollection.spec.js +22 -18
- package/dist/test/segmentGroupCollection.spec.js.map +1 -1
- package/dist/test/snapshot.spec.js.map +1 -1
- package/dist/test/snapshot.utils.d.ts +4 -4
- package/dist/test/snapshot.utils.d.ts.map +1 -1
- package/dist/test/snapshot.utils.js.map +1 -1
- package/dist/textSegment.d.ts +1 -3
- package/dist/textSegment.d.ts.map +1 -1
- package/dist/textSegment.js.map +1 -1
- package/lib/client.d.ts +9 -8
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +8 -7
- package/lib/client.js.map +1 -1
- package/lib/index.d.ts +3 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -3
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +0 -12
- package/lib/mergeTree.d.ts +14 -13
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +53 -22
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeNodes.d.ts +13 -79
- package/lib/mergeTreeNodes.d.ts.map +1 -1
- package/lib/mergeTreeNodes.js +5 -94
- package/lib/mergeTreeNodes.js.map +1 -1
- package/lib/referencePositions.d.ts +0 -12
- package/lib/referencePositions.d.ts.map +1 -1
- package/lib/referencePositions.js.map +1 -1
- package/lib/segmentGroupCollection.d.ts +7 -14
- package/lib/segmentGroupCollection.d.ts.map +1 -1
- package/lib/segmentGroupCollection.js +2 -9
- package/lib/segmentGroupCollection.js.map +1 -1
- package/lib/segmentPropertiesManager.d.ts +13 -12
- package/lib/segmentPropertiesManager.d.ts.map +1 -1
- package/lib/segmentPropertiesManager.js +17 -12
- package/lib/segmentPropertiesManager.js.map +1 -1
- package/lib/sortedSegmentSet.d.ts +0 -1
- package/lib/sortedSegmentSet.d.ts.map +1 -1
- package/lib/sortedSegmentSet.js.map +1 -1
- package/lib/sortedSet.d.ts +0 -1
- package/lib/sortedSet.d.ts.map +1 -1
- package/lib/sortedSet.js +0 -1
- package/lib/sortedSet.js.map +1 -1
- package/lib/test/index.d.ts +2 -2
- package/lib/test/index.d.ts.map +1 -1
- package/lib/test/index.js +2 -2
- package/lib/test/index.js.map +1 -1
- package/lib/test/mergeTree.annotate.spec.js +4 -4
- package/lib/test/mergeTree.annotate.spec.js.map +1 -1
- package/lib/test/segmentGroupCollection.spec.js +22 -18
- package/lib/test/segmentGroupCollection.spec.js.map +1 -1
- package/lib/test/snapshot.spec.js.map +1 -1
- package/lib/test/snapshot.utils.d.ts +4 -4
- package/lib/test/snapshot.utils.d.ts.map +1 -1
- package/lib/test/snapshot.utils.js.map +1 -1
- package/lib/textSegment.d.ts +1 -3
- package/lib/textSegment.d.ts.map +1 -1
- package/lib/textSegment.js.map +1 -1
- package/package.json +91 -19
- package/src/client.ts +15 -12
- package/src/index.ts +6 -3
- package/src/mergeTree.ts +87 -38
- package/src/mergeTreeNodes.ts +16 -177
- package/src/referencePositions.ts +0 -12
- package/src/segmentGroupCollection.ts +14 -20
- package/src/segmentPropertiesManager.ts +30 -12
- package/src/sortedSegmentSet.ts +0 -1
- package/src/sortedSet.ts +0 -1
- package/src/textSegment.ts +1 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referencePositions.js","sourceRoot":"","sources":["../src/referencePositions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAC3D;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAClC,YAA+C,EAC/C,KAAoB;IAEpB,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;IACvF,sCAAsC;IACtC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAyB,EAAwB,EAAE,CACnF,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU;IACnE,CAAC,CAAE,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAc;IACxD,CAAC,CAAC,SAAS,CAAC;AAEd;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,EAAE,KAAa;IACvE,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAyB;IACzD,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;AAC/C,CAAC;
|
|
1
|
+
{"version":3,"file":"referencePositions.js","sourceRoot":"","sources":["../src/referencePositions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAC3D;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAClC,YAA+C,EAC/C,KAAoB;IAEpB,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;IACvF,sCAAsC;IACtC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAyB,EAAwB,EAAE,CACnF,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU;IACnE,CAAC,CAAE,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAc;IACxD,CAAC,CAAC,SAAS,CAAC;AAEd;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,EAAE,KAAa;IACvE,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAyB;IACzD,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;AAC/C,CAAC;AA4CD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAA8B,CAAI,EAAE,CAAI;IAC3E,OAAO,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAA8B,CAAI,EAAE,CAAI;IAC3E,OAAO,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAoB,EAAE,CAAoB;IACnF,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IACtC,CAAC;SAAM,CAAC;QACP,OAAO,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;AACF,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SlidingPreference } from \"./localReference.js\";\nimport { ISegment } from \"./mergeTreeNodes.js\";\nimport { ReferenceType } from \"./ops.js\";\nimport { PropertySet } from \"./properties.js\";\n\n/**\n * @internal\n */\nexport const reservedTileLabelsKey = \"referenceTileLabels\";\n/**\n * @internal\n */\nexport const reservedRangeLabelsKey = \"referenceRangeLabels\";\n\n/**\n * Determines if the given reference type includes the given flags.\n * @internal\n */\nexport function refTypeIncludesFlag(\n\trefPosOrType: ReferencePosition | ReferenceType,\n\tflags: ReferenceType,\n): boolean {\n\tconst refType = typeof refPosOrType === \"number\" ? refPosOrType : refPosOrType.refType;\n\t// eslint-disable-next-line no-bitwise\n\treturn (refType & flags) !== 0;\n}\n\n/**\n * Gets the tile labels stored in the given reference position.\n * @legacy\n * @alpha\n */\nexport const refGetTileLabels = (refPos: ReferencePosition): string[] | undefined =>\n\trefTypeIncludesFlag(refPos, ReferenceType.Tile) && refPos.properties\n\t\t? (refPos.properties[reservedTileLabelsKey] as string[])\n\t\t: undefined;\n\n/**\n * Determines if a reference position has the given tile label.\n * @legacy\n * @alpha\n */\nexport function refHasTileLabel(refPos: ReferencePosition, label: string): boolean {\n\tconst tileLabels = refGetTileLabels(refPos);\n\treturn tileLabels?.includes(label) ?? false;\n}\n\n/**\n * Determines if a reference position has any tile labels.\n * @internal\n */\nexport function refHasTileLabels(refPos: ReferencePosition): boolean {\n\treturn refGetTileLabels(refPos) !== undefined;\n}\n\n/**\n * Represents a reference to a place within a merge tree. This place conceptually remains stable over time\n * by referring to a particular segment and offset within that segment.\n * Thus, this reference's character position changes as the tree is edited.\n * @legacy\n * @alpha\n */\nexport interface ReferencePosition {\n\t/**\n\t * Properties associated with this reference\n\t */\n\tproperties?: PropertySet;\n\n\t/**\n\t * The direction for this reference position to slide when the segment it\n\t * points to is removed. See {@link (SlidingPreference:type)} for additional context.\n\t *\n\t * Defaults to SlidingPreference.Forward\n\t */\n\tslidingPreference?: SlidingPreference;\n\n\trefType: ReferenceType;\n\n\t/**\n\t * Gets the segment that this reference position is semantically associated with. Returns undefined iff the\n\t * reference became detached from the string.\n\t */\n\tgetSegment(): ISegment | undefined;\n\n\t/**\n\t * Gets the offset for this reference position within its associated segment.\n\t *\n\t * @example\n\t *\n\t * If a merge-tree has 3 leaf segments [\"hello\", \" \", \"world\"] and a ReferencePosition refers to the \"l\"\n\t * in \"world\", that reference's offset would be 3 as \"l\" is the character at index 3 within \"world\".\n\t */\n\tgetOffset(): number;\n\n\tisLeaf(): this is ISegment;\n}\n\n/**\n * @internal\n */\nexport const DetachedReferencePosition = -1;\n\n/**\n * Finds the minimum reference position.\n * @internal\n */\nexport function minReferencePosition<T extends ReferencePosition>(a: T, b: T): T {\n\treturn compareReferencePositions(a, b) < 0 ? a : b;\n}\n\n/**\n * Finds the maximum reference position.\n * @internal\n */\nexport function maxReferencePosition<T extends ReferencePosition>(a: T, b: T): T {\n\treturn compareReferencePositions(a, b) > 0 ? a : b;\n}\n\n/**\n * Compares two reference positions.\n * @internal\n */\nexport function compareReferencePositions(a: ReferencePosition, b: ReferencePosition): number {\n\tconst aSeg = a.getSegment();\n\tconst bSeg = b.getSegment();\n\tif (aSeg === bSeg) {\n\t\treturn a.getOffset() - b.getOffset();\n\t} else {\n\t\treturn aSeg === undefined || (bSeg !== undefined && aSeg.ordinal < bSeg.ordinal) ? -1 : 1;\n\t}\n}\n"]}
|
|
@@ -2,25 +2,18 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated - This class should not be used externally and will be removed in a subsequent release.
|
|
8
|
-
* @legacy
|
|
9
|
-
* @alpha
|
|
10
|
-
*
|
|
11
|
-
* @privateRemarks After the deprecation period this class should be remove from this package's exports, and only be used internally
|
|
12
|
-
*/
|
|
5
|
+
import { SegmentGroup, type ISegmentLeaf } from "./mergeTreeNodes.js";
|
|
13
6
|
export declare class SegmentGroupCollection {
|
|
14
7
|
private readonly segment;
|
|
15
8
|
private readonly segmentGroups;
|
|
16
|
-
constructor(segment:
|
|
9
|
+
constructor(segment: ISegmentLeaf);
|
|
17
10
|
get size(): number;
|
|
18
11
|
get empty(): boolean;
|
|
19
|
-
enqueue(segmentGroup: SegmentGroup): void;
|
|
20
|
-
dequeue(): SegmentGroup | undefined;
|
|
21
|
-
remove?(segmentGroup: SegmentGroup): boolean;
|
|
22
|
-
pop?(): SegmentGroup | undefined;
|
|
23
|
-
copyTo(
|
|
12
|
+
enqueue(segmentGroup: SegmentGroup<ISegmentLeaf>): void;
|
|
13
|
+
dequeue(): SegmentGroup<ISegmentLeaf> | undefined;
|
|
14
|
+
remove?(segmentGroup: SegmentGroup<ISegmentLeaf>): boolean;
|
|
15
|
+
pop?(): SegmentGroup<ISegmentLeaf> | undefined;
|
|
16
|
+
copyTo(segmentGroups: SegmentGroupCollection): void;
|
|
24
17
|
private enqueueOnCopy;
|
|
25
18
|
}
|
|
26
19
|
//# sourceMappingURL=segmentGroupCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmentGroupCollection.d.ts","sourceRoot":"","sources":["../src/segmentGroupCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"segmentGroupCollection.d.ts","sourceRoot":"","sources":["../src/segmentGroupCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE,qBAAa,sBAAsB;IAItB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+C;gBAEhD,OAAO,EAAE,YAAY;IAKlD,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAGM,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI;IAMvD,OAAO,IAAI,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS;IAKjD,MAAM,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,OAAO;IAU1D,GAAG,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS;IAI9C,MAAM,CAAC,aAAa,EAAE,sBAAsB,GAAG,IAAI;IAK1D,OAAO,CAAC,aAAa;CAarB"}
|
|
@@ -3,13 +3,6 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { DoublyLinkedList, walkList } from "./collections/index.js";
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated - This class should not be used externally and will be removed in a subsequent release.
|
|
8
|
-
* @legacy
|
|
9
|
-
* @alpha
|
|
10
|
-
*
|
|
11
|
-
* @privateRemarks After the deprecation period this class should be remove from this package's exports, and only be used internally
|
|
12
|
-
*/
|
|
13
6
|
export class SegmentGroupCollection {
|
|
14
7
|
constructor(segment) {
|
|
15
8
|
this.segment = segment;
|
|
@@ -44,8 +37,8 @@ export class SegmentGroupCollection {
|
|
|
44
37
|
pop() {
|
|
45
38
|
return this.segmentGroups.pop ? this.segmentGroups.pop()?.data : undefined;
|
|
46
39
|
}
|
|
47
|
-
copyTo(
|
|
48
|
-
walkList(this.segmentGroups, (sg) =>
|
|
40
|
+
copyTo(segmentGroups) {
|
|
41
|
+
walkList(this.segmentGroups, (sg) => segmentGroups.enqueueOnCopy(sg.data, this.segment));
|
|
49
42
|
}
|
|
50
43
|
// eslint-disable-next-line import/no-deprecated
|
|
51
44
|
enqueueOnCopy(segmentGroup, sourceSegment) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmentGroupCollection.js","sourceRoot":"","sources":["../src/segmentGroupCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIpE
|
|
1
|
+
{"version":3,"file":"segmentGroupCollection.js","sourceRoot":"","sources":["../src/segmentGroupCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIpE,MAAM,OAAO,sBAAsB;IAIlC,YAA6B,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;QACjD,gDAAgD;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,EAA8B,CAAC;IACzE,CAAC;IAED,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,gDAAgD;IACzC,OAAO,CAAC,YAAwC;QACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,gDAAgD;IACzC,OAAO;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC;IACzC,CAAC;IAED,gDAAgD;IACzC,MAAM,CAAE,YAAwC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,gDAAgD;IACzC,GAAG;QACT,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;IAEM,MAAM,CAAC,aAAqC;QAClD,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,gDAAgD;IACxC,aAAa,CACpB,YAAwC,EACxC,aAA2B;QAE3B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3B,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;YAChC,+CAA+C;YAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC3D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClB,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACpE,CAAC;QACF,CAAC;IACF,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DoublyLinkedList, walkList } from \"./collections/index.js\";\n// eslint-disable-next-line import/no-deprecated\nimport { SegmentGroup, type ISegmentLeaf } from \"./mergeTreeNodes.js\";\n\nexport class SegmentGroupCollection {\n\t// eslint-disable-next-line import/no-deprecated\n\tprivate readonly segmentGroups: DoublyLinkedList<SegmentGroup<ISegmentLeaf>>;\n\n\tconstructor(private readonly segment: ISegmentLeaf) {\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tthis.segmentGroups = new DoublyLinkedList<SegmentGroup<ISegmentLeaf>>();\n\t}\n\n\tpublic get size(): number {\n\t\treturn this.segmentGroups.length;\n\t}\n\n\tpublic get empty(): boolean {\n\t\treturn this.segmentGroups.empty;\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic enqueue(segmentGroup: SegmentGroup<ISegmentLeaf>): void {\n\t\tthis.segmentGroups.push(segmentGroup);\n\t\tsegmentGroup.segments.push(this.segment);\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic dequeue(): SegmentGroup<ISegmentLeaf> | undefined {\n\t\treturn this.segmentGroups.shift()?.data;\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic remove?(segmentGroup: SegmentGroup<ISegmentLeaf>): boolean {\n\t\tconst found = this.segmentGroups.find((v) => v.data === segmentGroup);\n\t\tif (found === undefined) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.segmentGroups.remove(found);\n\t\treturn true;\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tpublic pop?(): SegmentGroup<ISegmentLeaf> | undefined {\n\t\treturn this.segmentGroups.pop ? this.segmentGroups.pop()?.data : undefined;\n\t}\n\n\tpublic copyTo(segmentGroups: SegmentGroupCollection): void {\n\t\twalkList(this.segmentGroups, (sg) => segmentGroups.enqueueOnCopy(sg.data, this.segment));\n\t}\n\n\t// eslint-disable-next-line import/no-deprecated\n\tprivate enqueueOnCopy(\n\t\tsegmentGroup: SegmentGroup<ISegmentLeaf>,\n\t\tsourceSegment: ISegmentLeaf,\n\t): void {\n\t\tthis.enqueue(segmentGroup);\n\t\tif (segmentGroup.previousProps) {\n\t\t\t// duplicate the previousProps for this segment\n\t\t\tconst index = segmentGroup.segments.indexOf(sourceSegment);\n\t\t\tif (index !== -1) {\n\t\t\t\tsegmentGroup.previousProps.push(segmentGroup.previousProps[index]);\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
|
|
@@ -5,12 +5,7 @@
|
|
|
5
5
|
import { IMergeTreeAnnotateMsg } from "./ops.js";
|
|
6
6
|
import { PropertySet } from "./properties.js";
|
|
7
7
|
/**
|
|
8
|
-
* @
|
|
9
|
-
* @alpha
|
|
10
|
-
*
|
|
11
|
-
* @deprecated - This enum should not be used externally and will be removed in a subsequent release.
|
|
12
|
-
*
|
|
13
|
-
* @privateRemarks This enum should be made internal after the deprecation period
|
|
8
|
+
* @internal
|
|
14
9
|
*/
|
|
15
10
|
export declare enum PropertiesRollback {
|
|
16
11
|
/**
|
|
@@ -23,12 +18,18 @@ export declare enum PropertiesRollback {
|
|
|
23
18
|
Rollback = 1
|
|
24
19
|
}
|
|
25
20
|
/**
|
|
26
|
-
*
|
|
27
|
-
* @
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
21
|
+
* Minimally copies properties and the property manager from source to destination.
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare function copyPropertiesAndManager(source: {
|
|
25
|
+
properties?: PropertySet;
|
|
26
|
+
propertyManager?: PropertiesManager;
|
|
27
|
+
}, destination: {
|
|
28
|
+
properties?: PropertySet;
|
|
29
|
+
propertyManager?: PropertiesManager;
|
|
30
|
+
}): void;
|
|
31
|
+
/**
|
|
32
|
+
* @internal
|
|
32
33
|
*/
|
|
33
34
|
export declare class PropertiesManager {
|
|
34
35
|
private pendingKeyUpdateCount;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmentPropertiesManager.d.ts","sourceRoot":"","sources":["../src/segmentPropertiesManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAW,WAAW,EAA4B,MAAM,iBAAiB,CAAC;AAEjF
|
|
1
|
+
{"version":3,"file":"segmentPropertiesManager.d.ts","sourceRoot":"","sources":["../src/segmentPropertiesManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAW,WAAW,EAA4B,MAAM,iBAAiB,CAAC;AAEjF;;GAEG;AACH,oBAAY,kBAAkB;IAC7B;;OAEG;IACH,IAAI,IAAA;IAEJ;;OAEG;IACH,QAAQ,IAAA;CACR;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE;IACP,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACpC,EACD,WAAW,EAAE;IACZ,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACpC,GACC,IAAI,CAaN;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,qBAAqB,CAA8B;IAEpD,oBAAoB,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAIpE,OAAO,CAAC,sBAAsB;IAgBvB,aAAa,CACnB,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,EACrB,GAAG,CAAC,EAAE,MAAM,EACZ,aAAa,GAAE,OAAe,EAC9B,QAAQ,GAAE,kBAA4C,GACpD,WAAW;IAqDP,MAAM,CACZ,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,UAAU,EAAE,iBAAiB,GAC3B,WAAW,GAAG,SAAS;IAgB1B;;OAEG;IACI,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IASjD,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAG/C"}
|
|
@@ -7,12 +7,7 @@ import { assert } from "@fluidframework/core-utils/internal";
|
|
|
7
7
|
import { UnassignedSequenceNumber, UniversalSequenceNumber } from "./constants.js";
|
|
8
8
|
import { clone, createMap, extend } from "./properties.js";
|
|
9
9
|
/**
|
|
10
|
-
* @
|
|
11
|
-
* @alpha
|
|
12
|
-
*
|
|
13
|
-
* @deprecated - This enum should not be used externally and will be removed in a subsequent release.
|
|
14
|
-
*
|
|
15
|
-
* @privateRemarks This enum should be made internal after the deprecation period
|
|
10
|
+
* @internal
|
|
16
11
|
*/
|
|
17
12
|
export var PropertiesRollback;
|
|
18
13
|
(function (PropertiesRollback) {
|
|
@@ -26,12 +21,22 @@ export var PropertiesRollback;
|
|
|
26
21
|
PropertiesRollback[PropertiesRollback["Rollback"] = 1] = "Rollback";
|
|
27
22
|
})(PropertiesRollback || (PropertiesRollback = {}));
|
|
28
23
|
/**
|
|
29
|
-
*
|
|
30
|
-
* @
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
24
|
+
* Minimally copies properties and the property manager from source to destination.
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export function copyPropertiesAndManager(source, destination) {
|
|
28
|
+
if (source.properties) {
|
|
29
|
+
if (source.propertyManager === undefined) {
|
|
30
|
+
destination.properties = clone(source.properties);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
destination.propertyManager ?? (destination.propertyManager = new PropertiesManager());
|
|
34
|
+
destination.properties = source.propertyManager.copyTo(source.properties, destination.properties, destination.propertyManager);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @internal
|
|
35
40
|
*/
|
|
36
41
|
export class PropertiesManager {
|
|
37
42
|
ackPendingProperties(annotateOp) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmentPropertiesManager.js","sourceRoot":"","sources":["../src/segmentPropertiesManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6DAA6D;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,OAAO,EAAwB,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEjF
|
|
1
|
+
{"version":3,"file":"segmentPropertiesManager.js","sourceRoot":"","sources":["../src/segmentPropertiesManager.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\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nimport { UnassignedSequenceNumber, UniversalSequenceNumber } from \"./constants.js\";\nimport { IMergeTreeAnnotateMsg } from \"./ops.js\";\nimport { MapLike, PropertySet, clone, createMap, extend } from \"./properties.js\";\n\n/**\n * @internal\n */\nexport enum PropertiesRollback {\n\t/**\n\t * Not in a rollback\n\t */\n\tNone,\n\n\t/**\n\t * Rollback\n\t */\n\tRollback,\n}\n\n/**\n * Minimally copies properties and the property manager from source to destination.\n * @internal\n */\nexport function copyPropertiesAndManager(\n\tsource: {\n\t\tproperties?: PropertySet;\n\t\tpropertyManager?: PropertiesManager;\n\t},\n\tdestination: {\n\t\tproperties?: PropertySet;\n\t\tpropertyManager?: PropertiesManager;\n\t},\n): void {\n\tif (source.properties) {\n\t\tif (source.propertyManager === undefined) {\n\t\t\tdestination.properties = clone(source.properties);\n\t\t} else {\n\t\t\tdestination.propertyManager ??= new PropertiesManager();\n\t\t\tdestination.properties = source.propertyManager.copyTo(\n\t\t\t\tsource.properties,\n\t\t\t\tdestination.properties,\n\t\t\t\tdestination.propertyManager,\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * @internal\n */\nexport class PropertiesManager {\n\tprivate pendingKeyUpdateCount: MapLike<number> | undefined;\n\n\tpublic ackPendingProperties(annotateOp: IMergeTreeAnnotateMsg): void {\n\t\tthis.decrementPendingCounts(annotateOp.props);\n\t}\n\n\tprivate decrementPendingCounts(props: PropertySet): void {\n\t\tfor (const [key, value] of Object.entries(props)) {\n\t\t\tif (value !== undefined && this.pendingKeyUpdateCount?.[key] !== undefined) {\n\t\t\t\tassert(\n\t\t\t\t\tthis.pendingKeyUpdateCount[key]! > 0,\n\t\t\t\t\t0x05c /* \"Trying to update more annotate props than do exist!\" */,\n\t\t\t\t);\n\t\t\t\tthis.pendingKeyUpdateCount[key]--;\n\t\t\t\tif (this.pendingKeyUpdateCount?.[key] === 0) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\t\tdelete this.pendingKeyUpdateCount[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addProperties(\n\t\toldProps: PropertySet,\n\t\tnewProps: PropertySet,\n\t\tseq?: number,\n\t\tcollaborating: boolean = false,\n\t\trollback: PropertiesRollback = PropertiesRollback.None,\n\t): PropertySet {\n\t\tthis.pendingKeyUpdateCount ??= createMap<number>();\n\n\t\t// Clean up counts for rolled back edits before modifying oldProps\n\t\tif (collaborating && rollback === PropertiesRollback.Rollback) {\n\t\t\tthis.decrementPendingCounts(newProps);\n\t\t}\n\n\t\tconst shouldModifyKey = (key: string): boolean => {\n\t\t\tif (\n\t\t\t\tseq === UnassignedSequenceNumber ||\n\t\t\t\tseq === UniversalSequenceNumber ||\n\t\t\t\tthis.pendingKeyUpdateCount?.[key] === undefined\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t\tconst deltas: PropertySet = {};\n\n\t\tfor (const [key, newValue] of Object.entries(newProps)) {\n\t\t\tif (newValue === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (collaborating) {\n\t\t\t\tif (seq === UnassignedSequenceNumber) {\n\t\t\t\t\tif (this.pendingKeyUpdateCount?.[key] === undefined) {\n\t\t\t\t\t\tthis.pendingKeyUpdateCount[key] = 0;\n\t\t\t\t\t}\n\t\t\t\t\tthis.pendingKeyUpdateCount[key]++;\n\t\t\t\t} else if (!shouldModifyKey(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst previousValue: unknown = oldProps[key];\n\t\t\t// The delta should be null if undefined, as that's how we encode delete\n\t\t\t// eslint-disable-next-line unicorn/no-null\n\t\t\tdeltas[key] = previousValue === undefined ? null : previousValue;\n\t\t\tif (newValue === null) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete oldProps[key];\n\t\t\t} else {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\toldProps[key] = newValue;\n\t\t\t}\n\t\t}\n\n\t\treturn deltas;\n\t}\n\n\tpublic copyTo(\n\t\toldProps: PropertySet,\n\t\tnewProps: PropertySet | undefined,\n\t\tnewManager: PropertiesManager,\n\t): PropertySet | undefined {\n\t\tif (oldProps) {\n\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\tnewProps ??= createMap<unknown>();\n\t\t\tif (!newManager) {\n\t\t\t\tthrow new Error(\"Must provide new PropertyManager\");\n\t\t\t}\n\t\t\textend(newProps, oldProps);\n\n\t\t\tif (this.pendingKeyUpdateCount) {\n\t\t\t\tnewManager.pendingKeyUpdateCount = clone(this.pendingKeyUpdateCount);\n\t\t\t}\n\t\t}\n\t\treturn newProps;\n\t}\n\n\t/**\n\t * Determines if all of the defined properties in a given property set are pending.\n\t */\n\tpublic hasPendingProperties(props: PropertySet): boolean {\n\t\tfor (const [key, value] of Object.entries(props)) {\n\t\t\tif (value !== undefined && this.pendingKeyUpdateCount?.[key] === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic hasPendingProperty(key: string): boolean {\n\t\treturn (this.pendingKeyUpdateCount?.[key] ?? 0) > 0;\n\t}\n}\n"]}
|
|
@@ -6,7 +6,6 @@ import { LocalReferencePosition } from "./localReference.js";
|
|
|
6
6
|
import { ISegment } from "./mergeTreeNodes.js";
|
|
7
7
|
import { SortedSet } from "./sortedSet.js";
|
|
8
8
|
/**
|
|
9
|
-
* @deprecated This functionality was not meant to be exported and will be removed in a future release
|
|
10
9
|
* @internal
|
|
11
10
|
*/
|
|
12
11
|
export type SortedSegmentSetItem = ISegment | LocalReferencePosition | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortedSegmentSet.d.ts","sourceRoot":"","sources":["../src/sortedSegmentSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"sortedSegmentSet.d.ts","sourceRoot":"","sources":["../src/sortedSegmentSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC7B,QAAQ,GACR,sBAAsB,GACtB;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAElC;;;;;;;;;;;GAWG;AAEH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,oBAAoB,GAAG,QAAQ,CAAE,SAAQ,SAAS,CACzF,CAAC,EACD,MAAM,CACN;IACA,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM;IAmBjC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAqDvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortedSegmentSet.js","sourceRoot":"","sources":["../src/sortedSegmentSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,gDAAgD;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"sortedSegmentSet.js","sourceRoot":"","sources":["../src/sortedSegmentSet.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 { LocalReferencePosition } from \"./localReference.js\";\nimport { ISegment } from \"./mergeTreeNodes.js\";\n// eslint-disable-next-line import/no-deprecated\nimport { SortedSet } from \"./sortedSet.js\";\n\n/**\n * @internal\n */\nexport type SortedSegmentSetItem =\n\t| ISegment\n\t| LocalReferencePosition\n\t| { readonly segment: ISegment };\n\n/**\n * Stores a unique and sorted set of segments, or objects with segments\n *\n * This differs from a normal sorted set in that the keys are not fixed.\n * The segments are sorted via their ordinals which can change as the merge tree is modified.\n * Even though the values of the ordinals can change their ordering and uniqueness cannot, so the order of a set of\n * segments ordered by their ordinals will always have the same order even if the ordinal values on\n * the segments changes. This invariant allows us to ensure the segments stay\n * ordered and unique, and that new segments can be inserted into that order.\n *\n * @internal\n */\n// eslint-disable-next-line import/no-deprecated\nexport class SortedSegmentSet<T extends SortedSegmentSetItem = ISegment> extends SortedSet<\n\tT,\n\tstring\n> {\n\tprotected getKey(item: T): string {\n\t\tconst maybeRef = item as Partial<LocalReferencePosition>;\n\t\tif (maybeRef.getSegment !== undefined && maybeRef.isLeaf?.() === false) {\n\t\t\tconst lref = maybeRef as LocalReferencePosition;\n\t\t\t// If the reference position has no associated segment, assign it a sentinel value.\n\t\t\t// The particular value for comparison doesn't matter because `findItemPosition` tolerates\n\t\t\t// elements with duplicate keys (as it must, since local references use the same key as their segment).\n\t\t\t// All that matters is that it's consistent.\n\t\t\treturn lref.getSegment()?.ordinal ?? \"\";\n\t\t}\n\t\tconst maybeObject = item as { readonly segment: ISegment };\n\t\tif (maybeObject?.segment) {\n\t\t\treturn maybeObject.segment.ordinal;\n\t\t}\n\n\t\tconst maybeSegment = item as ISegment;\n\t\treturn maybeSegment.ordinal;\n\t}\n\n\tprotected findItemPosition(item: T): { exists: boolean; index: number } {\n\t\tif (this.keySortedItems.length === 0) {\n\t\t\treturn { exists: false, index: 0 };\n\t\t}\n\t\tlet start = 0;\n\t\tlet end = this.keySortedItems.length - 1;\n\t\tconst itemKey = this.getKey(item);\n\t\tlet index = -1;\n\n\t\twhile (start <= end) {\n\t\t\tindex = start + Math.floor((end - start) / 2);\n\t\t\tconst indexKey = this.getKey(this.keySortedItems[index]);\n\t\t\tif (indexKey > itemKey) {\n\t\t\t\tif (start === index) {\n\t\t\t\t\treturn { exists: false, index };\n\t\t\t\t}\n\t\t\t\tend = index - 1;\n\t\t\t} else if (indexKey < itemKey) {\n\t\t\t\tif (index === end) {\n\t\t\t\t\treturn { exists: false, index: index + 1 };\n\t\t\t\t}\n\t\t\t\tstart = index + 1;\n\t\t\t} else if (indexKey === itemKey) {\n\t\t\t\t// at this point we've found the key of the item\n\t\t\t\t// so we need to find the index of the item instance\n\t\t\t\t//\n\t\t\t\tif (item === this.keySortedItems[index]) {\n\t\t\t\t\treturn { exists: true, index };\n\t\t\t\t}\n\t\t\t\tfor (\n\t\t\t\t\tlet b = index - 1;\n\t\t\t\t\tb >= 0 && this.getKey(this.keySortedItems[b]) === itemKey;\n\t\t\t\t\tb--\n\t\t\t\t) {\n\t\t\t\t\tif (this.keySortedItems[b] === item) {\n\t\t\t\t\t\treturn { exists: true, index: b };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (\n\t\t\t\t\tindex + 1;\n\t\t\t\t\tindex < this.keySortedItems.length &&\n\t\t\t\t\tthis.getKey(this.keySortedItems[index]) === itemKey;\n\t\t\t\t\tindex++\n\t\t\t\t) {\n\t\t\t\t\tif (this.keySortedItems[index] === item) {\n\t\t\t\t\t\treturn { exists: true, index };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn { exists: false, index };\n\t\t\t}\n\t\t}\n\t\treturn { exists: false, index };\n\t}\n}\n"]}
|
package/lib/sortedSet.d.ts
CHANGED
package/lib/sortedSet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortedSet.d.ts","sourceRoot":"","sources":["../src/sortedSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"sortedSet.d.ts","sourceRoot":"","sources":["../src/sortedSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,8BAAsB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IAC3D,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;IAElC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,CAAM;IAE5C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,KAAK,IAAI,SAAS,CAAC,EAAE,CAE/B;IAEM,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IAS7E,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IASxB,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAK5B,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CA4BvE"}
|
package/lib/sortedSet.js
CHANGED
package/lib/sortedSet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortedSet.js","sourceRoot":"","sources":["../src/sortedSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"sortedSet.js","sourceRoot":"","sources":["../src/sortedSet.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\n/**\n * @internal\n */\nexport abstract class SortedSet<T, U extends string | number> {\n\tprotected abstract getKey(t: T): U;\n\n\tprotected readonly keySortedItems: T[] = [];\n\n\tpublic get size(): number {\n\t\treturn this.keySortedItems.length;\n\t}\n\n\tpublic get items(): readonly T[] {\n\t\treturn this.keySortedItems;\n\t}\n\n\tpublic addOrUpdate(newItem: T, update?: (existingItem: T, newItem: T) => void): void {\n\t\tconst position = this.findItemPosition(newItem);\n\t\tif (position.exists) {\n\t\t\tupdate?.(this.keySortedItems[position.index], newItem);\n\t\t} else {\n\t\t\tthis.keySortedItems.splice(position.index, 0, newItem);\n\t\t}\n\t}\n\n\tpublic remove(item: T): boolean {\n\t\tconst position = this.findItemPosition(item);\n\t\tif (position.exists) {\n\t\t\tthis.keySortedItems.splice(position.index, 1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic has(item: T): boolean {\n\t\tconst position = this.findItemPosition(item);\n\t\treturn position.exists;\n\t}\n\n\tprotected findItemPosition(item: T): { exists: boolean; index: number } {\n\t\tif (this.keySortedItems.length === 0) {\n\t\t\treturn { exists: false, index: 0 };\n\t\t}\n\t\tlet start = 0;\n\t\tlet end = this.keySortedItems.length - 1;\n\t\tconst itemKey = this.getKey(item);\n\t\tlet index = -1;\n\n\t\twhile (start <= end) {\n\t\t\tindex = start + Math.floor((end - start) / 2);\n\t\t\tconst indexKey = this.getKey(this.keySortedItems[index]);\n\t\t\tif (indexKey > itemKey) {\n\t\t\t\tif (start === index) {\n\t\t\t\t\treturn { exists: false, index };\n\t\t\t\t}\n\t\t\t\tend = index - 1;\n\t\t\t} else if (indexKey < itemKey) {\n\t\t\t\tif (index === end) {\n\t\t\t\t\treturn { exists: false, index: index + 1 };\n\t\t\t\t}\n\t\t\t\tstart = index + 1;\n\t\t\t} else if (indexKey === itemKey) {\n\t\t\t\treturn { exists: true, index };\n\t\t\t}\n\t\t}\n\t\treturn { exists: false, index };\n\t}\n}\n"]}
|
package/lib/test/index.d.ts
CHANGED
|
@@ -6,8 +6,8 @@ export { createRevertDriver, getStats, MergeTreeStats, specToSegment, TestClient
|
|
|
6
6
|
export { checkTextMatchRelative, TestServer } from "./testServer.js";
|
|
7
7
|
export { countOperations, insertMarker, insertSegments, insertText, loadTextFromFile, loadTextFromFileWithMarkers, markRangeRemoved, nodeOrdinalsHaveIntegrity, validatePartialLengths, useStrictPartialLengthChecks, } from "./testUtils.js";
|
|
8
8
|
export { annotateRange, applyMessages, doOverRange, generateClientNames, generateOperationMessagesForClients, IConfigRange, IMergeTreeOperationRunnerConfig, insertAtRefPos, removeRange, ReplayGroup, replayResultsPath, runMergeTreeOperationRunner, TestOperation, } from "./mergeTreeOperationRunner.js";
|
|
9
|
-
export { LRUSegment, MergeTree } from "../mergeTree.js";
|
|
9
|
+
export { LRUSegment, MergeTree, IMergeTreeOptions, IMergeTreeOptionsInternal, } from "../mergeTree.js";
|
|
10
10
|
export { MergeTreeTextHelper } from "../MergeTreeTextHelper.js";
|
|
11
11
|
export { SnapshotLegacy } from "../snapshotlegacy.js";
|
|
12
|
-
export { addProperties, appendToMergeTreeDeltaRevertibles, BaseSegment, Client, CollaborationWindow, compareReferencePositions, ConflictAction, createAnnotateRangeOp, createDetachedLocalReferencePosition, createGroupOp, createInsertOp, createInsertSegmentOp, createMap, createRemoveRangeOp, debugMarkerToString, DetachedReferencePosition, discardMergeTreeDeltaRevertible, IJSONMarkerSegment, IJSONSegment, IMarkerDef, IMergeNodeCommon, IMergeTreeAnnotateMsg, IMergeTreeClientSequenceArgs, IMergeTreeDelta, IMergeTreeDeltaCallbackArgs, IMergeTreeDeltaOp, IMergeTreeDeltaOpArgs, IMergeTreeGroupMsg, IMergeTreeInsertMsg, IMergeTreeMaintenanceCallbackArgs, IMergeTreeOp, IMergeTreeRemoveMsg, IMergeTreeSegmentDelta, IMergeTreeTextHelper, IRBAugmentation, IRBMatcher, IRelativePosition, IRemovalInfo, ISegment, ISegmentAction, KeyComparer, LocalReferenceCollection, LocalReferencePosition, MapLike, Marker, matchProperties, maxReferencePosition,
|
|
12
|
+
export { addProperties, appendToMergeTreeDeltaRevertibles, BaseSegment, Client, CollaborationWindow, compareReferencePositions, ConflictAction, createAnnotateRangeOp, createDetachedLocalReferencePosition, createGroupOp, createInsertOp, createInsertSegmentOp, createMap, createRemoveRangeOp, debugMarkerToString, DetachedReferencePosition, discardMergeTreeDeltaRevertible, IJSONMarkerSegment, IJSONSegment, IMarkerDef, IMergeNodeCommon, IMergeTreeAnnotateMsg, IMergeTreeClientSequenceArgs, IMergeTreeDelta, IMergeTreeDeltaCallbackArgs, IMergeTreeDeltaOp, IMergeTreeDeltaOpArgs, IMergeTreeGroupMsg, IMergeTreeInsertMsg, IMergeTreeMaintenanceCallbackArgs, IMergeTreeOp, IMergeTreeRemoveMsg, IMergeTreeSegmentDelta, IMergeTreeTextHelper, IRBAugmentation, IRBMatcher, IRelativePosition, IRemovalInfo, ISegment, ISegmentAction, KeyComparer, LocalReferenceCollection, LocalReferencePosition, MapLike, Marker, matchProperties, maxReferencePosition, MergeTreeDeltaOperationType, MergeTreeDeltaOperationTypes, MergeTreeDeltaRevertible, MergeTreeDeltaType, MergeTreeMaintenanceType, MergeTreeRevertibleDriver, minReferencePosition, PropertiesManager, Property, PropertyAction, PropertySet, RBNode, RBNodeActions, RedBlackTree, ReferencePosition, ReferenceType, refGetTileLabels, refHasTileLabel, refHasTileLabels, refTypeIncludesFlag, reservedMarkerIdKey, reservedMarkerSimpleTypeKey, reservedTileLabelsKey, revertMergeTreeDeltaRevertibles, SegmentGroup, SortedSegmentSet, SortedSegmentSetItem, SortedSet, TextSegment, toRemovalInfo, Trackable, TrackingGroup, TrackingGroupCollection, UnassignedSequenceNumber, UniversalSequenceNumber, } from "../index.js";
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/test/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,UAAU,EACV,0BAA0B,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mCAAmC,EACnC,YAAY,EACZ,+BAA+B,EAC/B,cAAc,EACd,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,aAAa,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,UAAU,EACV,0BAA0B,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mCAAmC,EACnC,YAAY,EACZ,+BAA+B,EAC/B,cAAc,EACd,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,aAAa,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACN,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,yBAAyB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACN,aAAa,EACb,iCAAiC,EACjC,WAAW,EACX,MAAM,EACN,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,oCAAoC,EACpC,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAC/B,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,4BAA4B,EAC5B,eAAe,EACf,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,iCAAiC,EACjC,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,WAAW,EACX,wBAAwB,EACxB,sBAAsB,EACtB,OAAO,EACP,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,MAAM,EACN,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAC/B,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,GACvB,MAAM,aAAa,CAAC"}
|
package/lib/test/index.js
CHANGED
|
@@ -6,8 +6,8 @@ export { createRevertDriver, getStats, specToSegment, TestClient, } from "./test
|
|
|
6
6
|
export { checkTextMatchRelative, TestServer } from "./testServer.js";
|
|
7
7
|
export { countOperations, insertMarker, insertSegments, insertText, loadTextFromFile, loadTextFromFileWithMarkers, markRangeRemoved, nodeOrdinalsHaveIntegrity, validatePartialLengths, useStrictPartialLengthChecks, } from "./testUtils.js";
|
|
8
8
|
export { annotateRange, applyMessages, doOverRange, generateClientNames, generateOperationMessagesForClients, insertAtRefPos, removeRange, replayResultsPath, runMergeTreeOperationRunner, } from "./mergeTreeOperationRunner.js";
|
|
9
|
-
export { MergeTree } from "../mergeTree.js";
|
|
9
|
+
export { MergeTree, } from "../mergeTree.js";
|
|
10
10
|
export { MergeTreeTextHelper } from "../MergeTreeTextHelper.js";
|
|
11
11
|
export { SnapshotLegacy } from "../snapshotlegacy.js";
|
|
12
|
-
export { addProperties, appendToMergeTreeDeltaRevertibles, BaseSegment, Client, CollaborationWindow, compareReferencePositions, createAnnotateRangeOp, createDetachedLocalReferencePosition, createGroupOp, createInsertOp, createInsertSegmentOp, createMap, createRemoveRangeOp, debugMarkerToString, DetachedReferencePosition, discardMergeTreeDeltaRevertible, LocalReferenceCollection, Marker, matchProperties, maxReferencePosition,
|
|
12
|
+
export { addProperties, appendToMergeTreeDeltaRevertibles, BaseSegment, Client, CollaborationWindow, compareReferencePositions, createAnnotateRangeOp, createDetachedLocalReferencePosition, createGroupOp, createInsertOp, createInsertSegmentOp, createMap, createRemoveRangeOp, debugMarkerToString, DetachedReferencePosition, discardMergeTreeDeltaRevertible, LocalReferenceCollection, Marker, matchProperties, maxReferencePosition, MergeTreeDeltaType, MergeTreeMaintenanceType, minReferencePosition, PropertiesManager, RedBlackTree, ReferenceType, refGetTileLabels, refHasTileLabel, refHasTileLabels, refTypeIncludesFlag, reservedMarkerIdKey, reservedMarkerSimpleTypeKey, reservedTileLabelsKey, revertMergeTreeDeltaRevertibles, SortedSegmentSet, SortedSet, TextSegment, toRemovalInfo, TrackingGroup, TrackingGroupCollection, UnassignedSequenceNumber, UniversalSequenceNumber, } from "../index.js";
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
package/lib/test/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,QAAQ,EAER,aAAa,EACb,UAAU,GAEV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mCAAmC,EAGnC,cAAc,EACd,WAAW,EAEX,iBAAiB,EACjB,2BAA2B,GAE3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,QAAQ,EAER,aAAa,EACb,UAAU,GAEV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mCAAmC,EAGnC,cAAc,EACd,WAAW,EAEX,iBAAiB,EACjB,2BAA2B,GAE3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEN,SAAS,GAGT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACN,aAAa,EACb,iCAAiC,EACjC,WAAW,EACX,MAAM,EACN,mBAAmB,EACnB,yBAAyB,EAEzB,qBAAqB,EACrB,oCAAoC,EACpC,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAyB/B,wBAAwB,EAGxB,MAAM,EACN,eAAe,EACf,oBAAoB,EAIpB,kBAAkB,EAClB,wBAAwB,EAExB,oBAAoB,EACpB,iBAAiB,EAMjB,YAAY,EAEZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAE/B,gBAAgB,EAEhB,SAAS,EACT,WAAW,EACX,aAAa,EAEb,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,GACvB,MAAM,aAAa,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tcreateRevertDriver,\n\tgetStats,\n\tMergeTreeStats,\n\tspecToSegment,\n\tTestClient,\n\tTestClientRevertibleDriver,\n} from \"./testClient.js\";\nexport { checkTextMatchRelative, TestServer } from \"./testServer.js\";\nexport {\n\tcountOperations,\n\tinsertMarker,\n\tinsertSegments,\n\tinsertText,\n\tloadTextFromFile,\n\tloadTextFromFileWithMarkers,\n\tmarkRangeRemoved,\n\tnodeOrdinalsHaveIntegrity,\n\tvalidatePartialLengths,\n\tuseStrictPartialLengthChecks,\n} from \"./testUtils.js\";\nexport {\n\tannotateRange,\n\tapplyMessages,\n\tdoOverRange,\n\tgenerateClientNames,\n\tgenerateOperationMessagesForClients,\n\tIConfigRange,\n\tIMergeTreeOperationRunnerConfig,\n\tinsertAtRefPos,\n\tremoveRange,\n\tReplayGroup,\n\treplayResultsPath,\n\trunMergeTreeOperationRunner,\n\tTestOperation,\n} from \"./mergeTreeOperationRunner.js\";\nexport {\n\tLRUSegment,\n\tMergeTree,\n\tIMergeTreeOptions,\n\tIMergeTreeOptionsInternal,\n} from \"../mergeTree.js\";\nexport { MergeTreeTextHelper } from \"../MergeTreeTextHelper.js\";\nexport { SnapshotLegacy } from \"../snapshotlegacy.js\";\nexport {\n\taddProperties,\n\tappendToMergeTreeDeltaRevertibles,\n\tBaseSegment,\n\tClient,\n\tCollaborationWindow,\n\tcompareReferencePositions,\n\tConflictAction,\n\tcreateAnnotateRangeOp,\n\tcreateDetachedLocalReferencePosition,\n\tcreateGroupOp,\n\tcreateInsertOp,\n\tcreateInsertSegmentOp,\n\tcreateMap,\n\tcreateRemoveRangeOp,\n\tdebugMarkerToString,\n\tDetachedReferencePosition,\n\tdiscardMergeTreeDeltaRevertible,\n\tIJSONMarkerSegment,\n\tIJSONSegment,\n\tIMarkerDef,\n\tIMergeNodeCommon,\n\tIMergeTreeAnnotateMsg,\n\tIMergeTreeClientSequenceArgs,\n\tIMergeTreeDelta,\n\tIMergeTreeDeltaCallbackArgs,\n\tIMergeTreeDeltaOp,\n\tIMergeTreeDeltaOpArgs,\n\tIMergeTreeGroupMsg,\n\tIMergeTreeInsertMsg,\n\tIMergeTreeMaintenanceCallbackArgs,\n\tIMergeTreeOp,\n\tIMergeTreeRemoveMsg,\n\tIMergeTreeSegmentDelta,\n\tIMergeTreeTextHelper,\n\tIRBAugmentation,\n\tIRBMatcher,\n\tIRelativePosition,\n\tIRemovalInfo,\n\tISegment,\n\tISegmentAction,\n\tKeyComparer,\n\tLocalReferenceCollection,\n\tLocalReferencePosition,\n\tMapLike,\n\tMarker,\n\tmatchProperties,\n\tmaxReferencePosition,\n\tMergeTreeDeltaOperationType,\n\tMergeTreeDeltaOperationTypes,\n\tMergeTreeDeltaRevertible,\n\tMergeTreeDeltaType,\n\tMergeTreeMaintenanceType,\n\tMergeTreeRevertibleDriver,\n\tminReferencePosition,\n\tPropertiesManager,\n\tProperty,\n\tPropertyAction,\n\tPropertySet,\n\tRBNode,\n\tRBNodeActions,\n\tRedBlackTree,\n\tReferencePosition,\n\tReferenceType,\n\trefGetTileLabels,\n\trefHasTileLabel,\n\trefHasTileLabels,\n\trefTypeIncludesFlag,\n\treservedMarkerIdKey,\n\treservedMarkerSimpleTypeKey,\n\treservedTileLabelsKey,\n\trevertMergeTreeDeltaRevertibles,\n\tSegmentGroup,\n\tSortedSegmentSet,\n\tSortedSegmentSetItem,\n\tSortedSet,\n\tTextSegment,\n\ttoRemovalInfo,\n\tTrackable,\n\tTrackingGroup,\n\tTrackingGroupCollection,\n\tUnassignedSequenceNumber,\n\tUniversalSequenceNumber,\n} from \"../index.js\";\n"]}
|
|
@@ -324,7 +324,7 @@ describe("MergeTree", () => {
|
|
|
324
324
|
remoteProperty: 1,
|
|
325
325
|
}, currentSequenceNumber, remoteClientId, ++currentSequenceNumber, undefined);
|
|
326
326
|
const segmentInfo = mergeTree.getContainingSegment(annotateStart, currentSequenceNumber, localClientId);
|
|
327
|
-
assert(segmentInfo.segment?.segmentGroups?.
|
|
327
|
+
assert(segmentInfo.segment?.segmentGroups?.size !== 0);
|
|
328
328
|
});
|
|
329
329
|
it("remote only", () => {
|
|
330
330
|
const segmentInfo = mergeTree.getContainingSegment(annotateStart, currentSequenceNumber, localClientId);
|
|
@@ -354,9 +354,9 @@ describe("MergeTree", () => {
|
|
|
354
354
|
propertySource: "local",
|
|
355
355
|
};
|
|
356
356
|
const segmentInfo = mergeTree.getContainingSegment(annotateStart, currentSequenceNumber, localClientId);
|
|
357
|
-
assert(segmentInfo.segment?.segmentGroups?.empty);
|
|
357
|
+
assert(segmentInfo.segment?.segmentGroups?.empty !== false);
|
|
358
358
|
mergeTree.annotateRange(annotateStart, annotateEnd, props, currentSequenceNumber, localClientId, UnassignedSequenceNumber, undefined);
|
|
359
|
-
assert.equal(segmentInfo.segment?.segmentGroups
|
|
359
|
+
assert.equal(segmentInfo.segment?.segmentGroups?.size, 1);
|
|
360
360
|
mergeTree.ackPendingSegment({
|
|
361
361
|
op: {
|
|
362
362
|
pos1: annotateStart,
|
|
@@ -368,7 +368,7 @@ describe("MergeTree", () => {
|
|
|
368
368
|
sequenceNumber: ++currentSequenceNumber,
|
|
369
369
|
},
|
|
370
370
|
});
|
|
371
|
-
assert(segmentInfo.segment?.segmentGroups
|
|
371
|
+
assert(segmentInfo.segment?.segmentGroups?.empty);
|
|
372
372
|
assert.equal(segmentInfo.segment?.properties?.propertySource, "local");
|
|
373
373
|
assert.equal(segmentInfo.segment?.properties?.remoteProperty, 1);
|
|
374
374
|
});
|