@fluidframework/merge-tree 2.81.1 → 2.83.0
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/CHANGELOG.md +8 -0
- package/dist/attributionCollection.d.ts.map +1 -1
- package/dist/attributionCollection.js +1 -4
- package/dist/attributionCollection.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -1
- package/dist/client.js.map +1 -1
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +12 -2
- package/dist/mergeTree.js.map +1 -1
- package/dist/mergeTreeDeltaCallback.js.map +1 -1
- package/dist/mergeTreeNodeWalk.d.ts.map +1 -1
- package/dist/mergeTreeNodeWalk.js +0 -1
- package/dist/mergeTreeNodeWalk.js.map +1 -1
- package/dist/mergeTreeTracking.d.ts.map +1 -1
- package/dist/mergeTreeTracking.js +3 -1
- package/dist/mergeTreeTracking.js.map +1 -1
- package/dist/partialLengths.d.ts.map +1 -1
- package/dist/partialLengths.js.map +1 -1
- package/dist/segmentPropertiesManager.d.ts.map +1 -1
- package/dist/segmentPropertiesManager.js +0 -1
- package/dist/segmentPropertiesManager.js.map +1 -1
- package/dist/test/beastTest.spec.d.ts.map +1 -1
- package/dist/test/beastTest.spec.js +3 -1
- package/dist/test/beastTest.spec.js.map +1 -1
- package/dist/test/testServer.d.ts.map +1 -1
- package/dist/test/testServer.js +3 -1
- package/dist/test/testServer.js.map +1 -1
- package/lib/attributionCollection.d.ts.map +1 -1
- package/lib/attributionCollection.js +1 -4
- package/lib/attributionCollection.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +3 -1
- package/lib/client.js.map +1 -1
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +12 -2
- package/lib/mergeTree.js.map +1 -1
- package/lib/mergeTreeDeltaCallback.js.map +1 -1
- package/lib/mergeTreeNodeWalk.d.ts.map +1 -1
- package/lib/mergeTreeNodeWalk.js +0 -1
- package/lib/mergeTreeNodeWalk.js.map +1 -1
- package/lib/mergeTreeTracking.d.ts.map +1 -1
- package/lib/mergeTreeTracking.js +3 -1
- package/lib/mergeTreeTracking.js.map +1 -1
- package/lib/partialLengths.d.ts.map +1 -1
- package/lib/partialLengths.js.map +1 -1
- package/lib/segmentPropertiesManager.d.ts.map +1 -1
- package/lib/segmentPropertiesManager.js +0 -1
- package/lib/segmentPropertiesManager.js.map +1 -1
- package/lib/test/beastTest.spec.d.ts.map +1 -1
- package/lib/test/beastTest.spec.js +3 -1
- package/lib/test/beastTest.spec.js.map +1 -1
- package/lib/test/testServer.d.ts.map +1 -1
- package/lib/test/testServer.js +3 -1
- package/lib/test/testServer.js.map +1 -1
- package/package.json +18 -18
- package/src/attributionCollection.ts +0 -2
- package/src/client.ts +1 -0
- package/src/mergeTree.ts +27 -9
- package/src/mergeTreeDeltaCallback.ts +1 -1
- package/src/mergeTreeNodeWalk.ts +0 -1
- package/src/mergeTreeTracking.ts +1 -0
- package/src/partialLengths.ts +5 -1
- package/src/segmentPropertiesManager.ts +0 -1
- package/api-extractor-lint.json +0 -4
- package/biome.jsonc +0 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/merge-tree",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.83.0",
|
|
4
4
|
"description": "Merge tree",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -81,34 +81,34 @@
|
|
|
81
81
|
"temp-directory": "nyc/.nyc_output"
|
|
82
82
|
},
|
|
83
83
|
"dependencies": {
|
|
84
|
-
"@fluid-internal/client-utils": "~2.
|
|
85
|
-
"@fluidframework/container-definitions": "~2.
|
|
86
|
-
"@fluidframework/core-interfaces": "~2.
|
|
87
|
-
"@fluidframework/core-utils": "~2.
|
|
88
|
-
"@fluidframework/datastore-definitions": "~2.
|
|
89
|
-
"@fluidframework/driver-definitions": "~2.
|
|
90
|
-
"@fluidframework/runtime-definitions": "~2.
|
|
91
|
-
"@fluidframework/runtime-utils": "~2.
|
|
92
|
-
"@fluidframework/shared-object-base": "~2.
|
|
93
|
-
"@fluidframework/telemetry-utils": "~2.
|
|
84
|
+
"@fluid-internal/client-utils": "~2.83.0",
|
|
85
|
+
"@fluidframework/container-definitions": "~2.83.0",
|
|
86
|
+
"@fluidframework/core-interfaces": "~2.83.0",
|
|
87
|
+
"@fluidframework/core-utils": "~2.83.0",
|
|
88
|
+
"@fluidframework/datastore-definitions": "~2.83.0",
|
|
89
|
+
"@fluidframework/driver-definitions": "~2.83.0",
|
|
90
|
+
"@fluidframework/runtime-definitions": "~2.83.0",
|
|
91
|
+
"@fluidframework/runtime-utils": "~2.83.0",
|
|
92
|
+
"@fluidframework/shared-object-base": "~2.83.0",
|
|
93
|
+
"@fluidframework/telemetry-utils": "~2.83.0"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
96
|
"@arethetypeswrong/cli": "^0.18.2",
|
|
97
97
|
"@biomejs/biome": "~1.9.3",
|
|
98
|
-
"@fluid-internal/mocha-test-setup": "~2.
|
|
99
|
-
"@fluid-private/stochastic-test-utils": "~2.
|
|
100
|
-
"@fluid-private/test-pairwise-generator": "~2.
|
|
98
|
+
"@fluid-internal/mocha-test-setup": "~2.83.0",
|
|
99
|
+
"@fluid-private/stochastic-test-utils": "~2.83.0",
|
|
100
|
+
"@fluid-private/test-pairwise-generator": "~2.83.0",
|
|
101
101
|
"@fluid-tools/benchmark": "^0.52.0",
|
|
102
102
|
"@fluid-tools/build-cli": "^0.63.0",
|
|
103
103
|
"@fluidframework/build-common": "^2.0.3",
|
|
104
104
|
"@fluidframework/build-tools": "^0.63.0",
|
|
105
|
-
"@fluidframework/eslint-config-fluid": "~2.
|
|
106
|
-
"@fluidframework/merge-tree-previous": "npm:@fluidframework/merge-tree@2.
|
|
107
|
-
"@fluidframework/test-runtime-utils": "~2.
|
|
105
|
+
"@fluidframework/eslint-config-fluid": "~2.83.0",
|
|
106
|
+
"@fluidframework/merge-tree-previous": "npm:@fluidframework/merge-tree@2.82.0",
|
|
107
|
+
"@fluidframework/test-runtime-utils": "~2.83.0",
|
|
108
108
|
"@microsoft/api-extractor": "7.52.11",
|
|
109
109
|
"@types/diff": "^3.5.1",
|
|
110
110
|
"@types/mocha": "^10.0.10",
|
|
111
|
-
"@types/node": "
|
|
111
|
+
"@types/node": "~20.19.30",
|
|
112
112
|
"c8": "^10.1.3",
|
|
113
113
|
"concurrently": "^9.2.1",
|
|
114
114
|
"copyfiles": "^2.4.1",
|
|
@@ -392,8 +392,6 @@ export class AttributionCollection implements IAttributionCollection<Attribution
|
|
|
392
392
|
): void {
|
|
393
393
|
const { channels } = summary;
|
|
394
394
|
assert(
|
|
395
|
-
// Destructuring here would require renaming the variables, since seqs is declared below
|
|
396
|
-
// eslint-disable-next-line unicorn/consistent-destructuring
|
|
397
395
|
summary.seqs.length === summary.posBreakpoints.length,
|
|
398
396
|
0x445 /* Invalid attribution summary blob provided */,
|
|
399
397
|
);
|
package/src/client.ts
CHANGED
|
@@ -1479,6 +1479,7 @@ export class Client extends TypedEventEmitter<IClientEvents> {
|
|
|
1479
1479
|
|
|
1480
1480
|
const collabWindow = this.getCollabWindow();
|
|
1481
1481
|
if (
|
|
1482
|
+
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- TODO: ADO#58520 Code owners should verify if this code change is safe and make it if so or update this comment otherwise
|
|
1482
1483
|
this.lastNormalization === undefined ||
|
|
1483
1484
|
collabWindow.currentSeq !== this.lastNormalization.refSeq ||
|
|
1484
1485
|
collabWindow.localSeq !== this.lastNormalization.localRefSeq
|
package/src/mergeTree.ts
CHANGED
|
@@ -2477,16 +2477,34 @@ export class MergeTree {
|
|
|
2477
2477
|
);
|
|
2478
2478
|
} /* op.type === MergeTreeDeltaType.ANNOTATE */ else {
|
|
2479
2479
|
const props = pendingSegmentGroup.previousProps![i];
|
|
2480
|
-
const annotateOp = createAnnotateRangeOp(start, start + segment.cachedLength, props);
|
|
2481
2480
|
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2481
|
+
// If the segment has been removed by a concurrent operation, we can't use
|
|
2482
|
+
// position-based annotateRange because findRollbackPosition returns a position
|
|
2483
|
+
// that doesn't account for the removed segment, causing the rollback to target
|
|
2484
|
+
// the wrong segment. Instead, directly roll back the properties on the segment.
|
|
2485
|
+
if (isRemoved(segment)) {
|
|
2486
|
+
const propertyManager = (segment.propertyManager ??= new PropertiesManager());
|
|
2487
|
+
propertyManager.rollbackProperties(
|
|
2488
|
+
{ props },
|
|
2489
|
+
segment,
|
|
2490
|
+
this.collabWindow.collaborating,
|
|
2491
|
+
);
|
|
2492
|
+
} else {
|
|
2493
|
+
const annotateOp = createAnnotateRangeOp(
|
|
2494
|
+
start,
|
|
2495
|
+
start + segment.cachedLength,
|
|
2496
|
+
props,
|
|
2497
|
+
);
|
|
2498
|
+
|
|
2499
|
+
this.annotateRange(
|
|
2500
|
+
start,
|
|
2501
|
+
start + segment.cachedLength,
|
|
2502
|
+
{ props },
|
|
2503
|
+
this.localPerspective,
|
|
2504
|
+
rollbackStamp,
|
|
2505
|
+
{ op: annotateOp, rollback: true },
|
|
2506
|
+
);
|
|
2507
|
+
}
|
|
2490
2508
|
i++;
|
|
2491
2509
|
}
|
|
2492
2510
|
}
|
|
@@ -151,7 +151,7 @@ export type MergeTreeDeltaCallback = (
|
|
|
151
151
|
/**
|
|
152
152
|
* @legacy @beta
|
|
153
153
|
*/
|
|
154
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
154
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
155
155
|
export interface IMergeTreeMaintenanceCallbackArgs
|
|
156
156
|
extends IMergeTreeDeltaCallbackArgs<MergeTreeMaintenanceType> {}
|
|
157
157
|
|
package/src/mergeTreeNodeWalk.ts
CHANGED
|
@@ -53,7 +53,6 @@ export function depthFirstNodeWalk(
|
|
|
53
53
|
let childCount = block.childCount;
|
|
54
54
|
let start: IMergeNode | undefined = startChild;
|
|
55
55
|
|
|
56
|
-
// eslint-disable-next-line no-constant-condition
|
|
57
56
|
while (true) {
|
|
58
57
|
// go down to the leaf level
|
|
59
58
|
let blockResult: NodeAction;
|
package/src/mergeTreeTracking.ts
CHANGED
|
@@ -153,6 +153,7 @@ export class TrackingGroupCollection {
|
|
|
153
153
|
|
|
154
154
|
public matches(trackingCollection: TrackingGroupCollection): boolean {
|
|
155
155
|
if (
|
|
156
|
+
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- TODO: ADO#58520 Code owners should verify if this code change is safe and make it if so or update this comment otherwise
|
|
156
157
|
!trackingCollection ||
|
|
157
158
|
this._trackingGroups.size !== trackingCollection._trackingGroups.size
|
|
158
159
|
) {
|
package/src/partialLengths.ts
CHANGED
|
@@ -1091,7 +1091,11 @@ export class PartialSequenceLengths {
|
|
|
1091
1091
|
refSeq,
|
|
1092
1092
|
localSeq,
|
|
1093
1093
|
seglen,
|
|
1094
|
-
}: {
|
|
1094
|
+
}: {
|
|
1095
|
+
refSeq: number;
|
|
1096
|
+
localSeq: number;
|
|
1097
|
+
seglen: number;
|
|
1098
|
+
}): void {
|
|
1095
1099
|
assert(
|
|
1096
1100
|
this.unsequencedRecords !== undefined,
|
|
1097
1101
|
0xabb /* Local adjustment computed without partials */,
|
|
@@ -86,7 +86,6 @@ export type PropsOrAdjust =
|
|
|
86
86
|
|
|
87
87
|
const opToChanges = (op: PropsOrAdjust, seq: number): [string, PropertyChange][] => [
|
|
88
88
|
...Object.entries(op.props ?? {})
|
|
89
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
90
89
|
.map<[string, PropertyChange]>(([k, raw]) => [k, { raw, seq }])
|
|
91
90
|
.filter(([_, v]) => v.raw !== undefined),
|
|
92
91
|
...Object.entries(op.adjust ?? {}).map<[string, PropertyChange]>(([k, adjust]) => [
|
package/api-extractor-lint.json
DELETED
package/biome.jsonc
DELETED