@fluidframework/sequence 0.56.9 → 0.56.10
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/dist/intervalCollection.d.ts +6 -6
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +19 -19
- package/dist/intervalCollection.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/lib/intervalCollection.d.ts +6 -6
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +19 -19
- package/lib/intervalCollection.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/package.json +10 -10
- package/src/intervalCollection.ts +29 -20
- package/src/packageVersion.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/sequence",
|
|
3
|
-
"version": "0.56.
|
|
3
|
+
"version": "0.56.10",
|
|
4
4
|
"description": "Distributed sequence",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": "https://github.com/microsoft/FluidFramework",
|
|
@@ -60,23 +60,23 @@
|
|
|
60
60
|
"@fluidframework/common-definitions": "^0.20.1",
|
|
61
61
|
"@fluidframework/common-utils": "^0.32.1",
|
|
62
62
|
"@fluidframework/core-interfaces": "^0.42.0",
|
|
63
|
-
"@fluidframework/datastore-definitions": "^0.56.
|
|
64
|
-
"@fluidframework/merge-tree": "^0.56.
|
|
63
|
+
"@fluidframework/datastore-definitions": "^0.56.10",
|
|
64
|
+
"@fluidframework/merge-tree": "^0.56.10",
|
|
65
65
|
"@fluidframework/protocol-definitions": "^0.1026.0",
|
|
66
|
-
"@fluidframework/runtime-definitions": "^0.56.
|
|
67
|
-
"@fluidframework/runtime-utils": "^0.56.
|
|
68
|
-
"@fluidframework/shared-object-base": "^0.56.
|
|
69
|
-
"@fluidframework/telemetry-utils": "^0.56.
|
|
66
|
+
"@fluidframework/runtime-definitions": "^0.56.10",
|
|
67
|
+
"@fluidframework/runtime-utils": "^0.56.10",
|
|
68
|
+
"@fluidframework/shared-object-base": "^0.56.10",
|
|
69
|
+
"@fluidframework/telemetry-utils": "^0.56.10",
|
|
70
70
|
"uuid": "^8.3.1"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
|
-
"@fluid-internal/test-dds-utils": "^0.56.
|
|
73
|
+
"@fluid-internal/test-dds-utils": "^0.56.10",
|
|
74
74
|
"@fluidframework/build-common": "^0.23.0",
|
|
75
75
|
"@fluidframework/eslint-config-fluid": "^0.25.0",
|
|
76
76
|
"@fluidframework/gitresources": "^0.1034.0",
|
|
77
|
-
"@fluidframework/mocha-test-setup": "^0.56.
|
|
77
|
+
"@fluidframework/mocha-test-setup": "^0.56.10",
|
|
78
78
|
"@fluidframework/server-services-client": "^0.1034.0",
|
|
79
|
-
"@fluidframework/test-runtime-utils": "^0.56.
|
|
79
|
+
"@fluidframework/test-runtime-utils": "^0.56.10",
|
|
80
80
|
"@microsoft/api-extractor": "^7.16.1",
|
|
81
81
|
"@rushstack/eslint-config": "^2.5.1",
|
|
82
82
|
"@types/diff": "^3.5.1",
|
|
@@ -55,7 +55,7 @@ export interface ISerializableInterval extends IInterval {
|
|
|
55
55
|
export interface IIntervalHelpers<TInterval extends ISerializableInterval> {
|
|
56
56
|
compareEnds(a: TInterval, b: TInterval): number;
|
|
57
57
|
create(label: string, start: number, end: number,
|
|
58
|
-
client: Client, intervalType?: IntervalType): TInterval;
|
|
58
|
+
client: Client, intervalType?: IntervalType, op?: ISequencedDocumentMessage): TInterval;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
export class Interval implements ISerializableInterval {
|
|
@@ -175,7 +175,7 @@ export class Interval implements ISerializableInterval {
|
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
public modify(label: string, start: number, end: number) {
|
|
178
|
+
public modify(label: string, start: number, end: number, op?: ISequencedDocumentMessage) {
|
|
179
179
|
const startPos = start ?? this.start;
|
|
180
180
|
const endPos = end ?? this.end;
|
|
181
181
|
if (this.start === startPos && this.end === endPos) {
|
|
@@ -312,16 +312,17 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
314
|
|
|
315
|
-
public modify(label: string, start: number, end: number) {
|
|
316
|
-
const startPos = start ?? this.start.
|
|
317
|
-
const endPos = end ?? this.end.
|
|
315
|
+
public modify(label: string, start: number, end: number, op?: ISequencedDocumentMessage) {
|
|
316
|
+
const startPos = start ?? this.start.toPosition();
|
|
317
|
+
const endPos = end ?? this.end.toPosition();
|
|
318
318
|
|
|
319
|
-
if (this.start.
|
|
319
|
+
if (this.start.toPosition() === startPos && this.end.toPosition() === endPos) {
|
|
320
320
|
// Return undefined to indicate that no change is necessary.
|
|
321
321
|
return;
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
-
const newInterval =
|
|
324
|
+
const newInterval =
|
|
325
|
+
createSequenceInterval(label, startPos, endPos, this.start.getClient(), this.intervalType, op);
|
|
325
326
|
if (this.properties) {
|
|
326
327
|
newInterval.addProperties(this.properties);
|
|
327
328
|
}
|
|
@@ -332,8 +333,9 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
332
333
|
function createPositionReference(
|
|
333
334
|
client: Client,
|
|
334
335
|
pos: number,
|
|
335
|
-
refType: ReferenceType
|
|
336
|
-
|
|
336
|
+
refType: ReferenceType,
|
|
337
|
+
op?: ISequencedDocumentMessage): LocalReference {
|
|
338
|
+
const segoff = client.getContainingSegment(pos, op);
|
|
337
339
|
if (segoff && segoff.segment) {
|
|
338
340
|
const lref = new LocalReference(client, segoff.segment, segoff.offset, refType);
|
|
339
341
|
if (refType !== ReferenceType.Transient) {
|
|
@@ -349,7 +351,8 @@ function createSequenceInterval(
|
|
|
349
351
|
start: number,
|
|
350
352
|
end: number,
|
|
351
353
|
client: Client,
|
|
352
|
-
intervalType: IntervalType
|
|
354
|
+
intervalType: IntervalType,
|
|
355
|
+
op?: ISequencedDocumentMessage): SequenceInterval {
|
|
353
356
|
let beginRefType = ReferenceType.RangeBegin;
|
|
354
357
|
let endRefType = ReferenceType.RangeEnd;
|
|
355
358
|
if (intervalType === IntervalType.Nest) {
|
|
@@ -366,8 +369,8 @@ function createSequenceInterval(
|
|
|
366
369
|
endRefType |= ReferenceType.SlideOnRemove;
|
|
367
370
|
}
|
|
368
371
|
|
|
369
|
-
const startLref = createPositionReference(client, start, beginRefType);
|
|
370
|
-
const endLref = createPositionReference(client, end, endRefType);
|
|
372
|
+
const startLref = createPositionReference(client, start, beginRefType, op);
|
|
373
|
+
const endLref = createPositionReference(client, end, endRefType, op);
|
|
371
374
|
if (startLref && endLref) {
|
|
372
375
|
startLref.pairedRef = endLref;
|
|
373
376
|
endLref.pairedRef = startLref;
|
|
@@ -589,16 +592,21 @@ export class LocalIntervalCollection<TInterval extends ISerializableInterval> {
|
|
|
589
592
|
this.endIntervalTree.remove(interval);
|
|
590
593
|
}
|
|
591
594
|
|
|
592
|
-
public createInterval(
|
|
593
|
-
|
|
595
|
+
public createInterval(
|
|
596
|
+
start: number,
|
|
597
|
+
end: number,
|
|
598
|
+
intervalType: IntervalType,
|
|
599
|
+
op?: ISequencedDocumentMessage): TInterval {
|
|
600
|
+
return this.helpers.create(this.label, start, end, this.client, intervalType, op);
|
|
594
601
|
}
|
|
595
602
|
|
|
596
603
|
public addInterval(
|
|
597
604
|
start: number,
|
|
598
605
|
end: number,
|
|
599
606
|
intervalType: IntervalType,
|
|
600
|
-
props?: PropertySet
|
|
601
|
-
|
|
607
|
+
props?: PropertySet,
|
|
608
|
+
op?: ISequencedDocumentMessage) {
|
|
609
|
+
const interval: TInterval = this.createInterval(start, end, intervalType, op);
|
|
602
610
|
if (interval) {
|
|
603
611
|
if (!interval.properties) {
|
|
604
612
|
interval.properties = createMap<any>();
|
|
@@ -638,8 +646,8 @@ export class LocalIntervalCollection<TInterval extends ISerializableInterval> {
|
|
|
638
646
|
return result;
|
|
639
647
|
}
|
|
640
648
|
|
|
641
|
-
public changeInterval(interval: TInterval, start: number, end: number) {
|
|
642
|
-
const newInterval = interval.modify(this.label, start, end) as TInterval | undefined;
|
|
649
|
+
public changeInterval(interval: TInterval, start: number, end: number, op?: ISequencedDocumentMessage) {
|
|
650
|
+
const newInterval = interval.modify(this.label, start, end, op) as TInterval | undefined;
|
|
643
651
|
if (newInterval) {
|
|
644
652
|
this.removeExistingInterval(interval);
|
|
645
653
|
this.add(newInterval);
|
|
@@ -1115,7 +1123,7 @@ export class IntervalCollection<TInterval extends ISerializableInterval>
|
|
|
1115
1123
|
if (start !== undefined || end !== undefined) {
|
|
1116
1124
|
// If changeInterval gives us a new interval, work with that one. Otherwise keep working with
|
|
1117
1125
|
// the one we originally found in the tree.
|
|
1118
|
-
interval = this.localCollection.changeInterval(interval, start, end) ?? interval;
|
|
1126
|
+
interval = this.localCollection.changeInterval(interval, start, end, op) ?? interval;
|
|
1119
1127
|
}
|
|
1120
1128
|
const deltaProps = interval.addProperties(serializedInterval.properties, true, op.sequenceNumber);
|
|
1121
1129
|
if (this.onDeserialize) {
|
|
@@ -1163,7 +1171,8 @@ export class IntervalCollection<TInterval extends ISerializableInterval>
|
|
|
1163
1171
|
serializedInterval.start,
|
|
1164
1172
|
serializedInterval.end,
|
|
1165
1173
|
serializedInterval.intervalType,
|
|
1166
|
-
serializedInterval.properties
|
|
1174
|
+
serializedInterval.properties,
|
|
1175
|
+
op);
|
|
1167
1176
|
|
|
1168
1177
|
if (interval) {
|
|
1169
1178
|
// Local ops get submitted to the server. Remote ops have the deserializer run.
|
package/src/packageVersion.ts
CHANGED