@fluidframework/sequence 2.50.0-345060 → 2.50.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 +4 -0
- package/dist/intervalCollection.d.ts +4 -5
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +91 -95
- package/dist/intervalCollection.js.map +1 -1
- package/dist/intervalCollectionMapInterfaces.d.ts +1 -11
- package/dist/intervalCollectionMapInterfaces.d.ts.map +1 -1
- package/dist/intervalCollectionMapInterfaces.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +7 -3
- package/dist/intervals/sequenceInterval.d.ts.map +1 -1
- package/dist/intervals/sequenceInterval.js +72 -30
- package/dist/intervals/sequenceInterval.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 +4 -5
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +91 -95
- package/lib/intervalCollection.js.map +1 -1
- package/lib/intervalCollectionMapInterfaces.d.ts +1 -11
- package/lib/intervalCollectionMapInterfaces.d.ts.map +1 -1
- package/lib/intervalCollectionMapInterfaces.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +7 -3
- package/lib/intervals/sequenceInterval.d.ts.map +1 -1
- package/lib/intervals/sequenceInterval.js +74 -32
- package/lib/intervals/sequenceInterval.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 +16 -16
- package/src/intervalCollection.ts +103 -103
- package/src/intervalCollectionMapInterfaces.ts +1 -9
- package/src/intervals/sequenceInterval.ts +88 -32
- package/src/packageVersion.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -41,7 +41,7 @@ export declare class LocalIntervalCollection {
|
|
|
41
41
|
appendIndex(index: SequenceIntervalIndex): void;
|
|
42
42
|
removeIndex(index: SequenceIntervalIndex): boolean;
|
|
43
43
|
removeExistingInterval(interval: SequenceIntervalClass): void;
|
|
44
|
-
addInterval(id: string, start: SequencePlace, end: SequencePlace, props?: PropertySet, op?: ISequencedDocumentMessage
|
|
44
|
+
addInterval(id: string, start: SequencePlace, end: SequencePlace, props?: PropertySet, op?: ISequencedDocumentMessage): SequenceIntervalClass;
|
|
45
45
|
private linkEndpointsToInterval;
|
|
46
46
|
private addIntervalToIndexes;
|
|
47
47
|
add(interval: SequenceIntervalClass): void;
|
|
@@ -351,12 +351,11 @@ export declare class IntervalCollection extends TypedEventEmitter<ISequenceInter
|
|
|
351
351
|
/**
|
|
352
352
|
* {@inheritdoc IIntervalCollection.add}
|
|
353
353
|
*/
|
|
354
|
-
add({ id, start, end, props,
|
|
354
|
+
add({ id, start, end, props, }: {
|
|
355
355
|
id?: string;
|
|
356
356
|
start: SequencePlace;
|
|
357
357
|
end: SequencePlace;
|
|
358
358
|
props?: PropertySet;
|
|
359
|
-
rollback?: boolean;
|
|
360
359
|
}): SequenceIntervalClass;
|
|
361
360
|
private deleteExistingInterval;
|
|
362
361
|
/**
|
|
@@ -374,7 +373,7 @@ export declare class IntervalCollection extends TypedEventEmitter<ISequenceInter
|
|
|
374
373
|
}): SequenceIntervalClass | undefined;
|
|
375
374
|
private get isCollaborating();
|
|
376
375
|
private hasPendingEndpointChanges;
|
|
377
|
-
ackChange(serializedInterval: SerializedIntervalDelta, local: boolean, op: ISequencedDocumentMessage):
|
|
376
|
+
ackChange(serializedInterval: SerializedIntervalDelta, local: boolean, op: ISequencedDocumentMessage, localOpMetadata: IntervalChangeLocalMetadata | undefined): SequenceIntervalClass | undefined;
|
|
378
377
|
/**
|
|
379
378
|
* {@inheritdoc IIntervalCollection.attachDeserializer}
|
|
380
379
|
*/
|
|
@@ -388,7 +387,7 @@ export declare class IntervalCollection extends TypedEventEmitter<ISequenceInter
|
|
|
388
387
|
rebaseLocalInterval(original: SerializedIntervalDelta, localOpMetadata: IntervalAddLocalMetadata | IntervalChangeLocalMetadata, squash: boolean): SerializedIntervalDelta | undefined;
|
|
389
388
|
private getSlideToSegment;
|
|
390
389
|
private ackInterval;
|
|
391
|
-
ackAdd(serializedInterval: ISerializedInterval, local: boolean, op: ISequencedDocumentMessage, localOpMetadata: IntervalAddLocalMetadata | undefined): SequenceIntervalClass
|
|
390
|
+
ackAdd(serializedInterval: ISerializedInterval, local: boolean, op: ISequencedDocumentMessage, localOpMetadata: IntervalAddLocalMetadata | undefined): SequenceIntervalClass;
|
|
392
391
|
ackDelete(serializedInterval: SerializedIntervalDelta, local: boolean, op: ISequencedDocumentMessage): void;
|
|
393
392
|
serializeInternal(version: "1" | "2"): ISerializedIntervalCollectionV1 | ISerializedIntervalCollectionV2;
|
|
394
393
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intervalCollection.d.ts","sourceRoot":"","sources":["../src/intervalCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAOzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EACN,MAAM,EAEN,sBAAsB,EACtB,WAAW,EAKX,IAAI,EACJ,aAAa,EAKb,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EAEN,eAAe,EACf,KAAK,qCAAqC,EAC1C,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAIN,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kCAAkC,EACvC,KAAK,qBAAqB,EAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,4BAA4B,EAC5B,mBAAmB,EAGnB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EAIvB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,+BAA+B,GAAG,mBAAmB,EAAE,CAAC;AAEpE,MAAM,WAAW,+BAA+B;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,4BAA4B,EAAE,CAAC;CAC1C;AAwDD,wBAAgB,eAAe,CAC9B,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,EAC7B,IAAI,EAAE,IAAI,GAAG,SAAS,GACpB,aAAa,CAEf;AAED,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,EACzC,IAAI,EAAE,IAAI,GAAG,SAAS,GACpB,aAAa,GAAG,SAAS,CAE3B;AAED,qBAAa,uBAAuB;IAOlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAVnC,SAAgB,yBAAyB,EAAE,kCAAkC,CAAC;IAC9E,SAAgB,eAAe,EAAE,gBAAgB,CAAC;IAClD,SAAgB,gBAAgB,EAAE,cAAc,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;gBAGnC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC;IAClD,6EAA6E;IAC5D,gBAAgB,CAAC,cACvB,qBAAqB,oBACb,qBAAqB,KACnC,IAAI,aAAA;IAYV;;;;;;OAMG;IAEH,OAAO,CAAC,yBAAyB;IAM1B,WAAW,CAAC,KAAK,EAAE,qBAAqB;IAIxC,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO;IAIlD,sBAAsB,CAAC,QAAQ,EAAE,qBAAqB;IAKtD,WAAW,CACjB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,aAAa,EAClB,KAAK,CAAC,EAAE,WAAW,EACnB,EAAE,CAAC,EAAE,yBAAyB
|
|
1
|
+
{"version":3,"file":"intervalCollection.d.ts","sourceRoot":"","sources":["../src/intervalCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,7 +104,7 @@ class LocalIntervalCollection {
|
|
|
104
104
|
this.removeIntervalFromIndexes(interval);
|
|
105
105
|
this.removeIntervalListeners(interval);
|
|
106
106
|
}
|
|
107
|
-
addInterval(id, start, end, props, op
|
|
107
|
+
addInterval(id, start, end, props, op) {
|
|
108
108
|
// This check is intended to prevent scenarios where a random interval is created and then
|
|
109
109
|
// inserted into a collection. The aim is to ensure that the collection is created first
|
|
110
110
|
// then the user can create/add intervals based on the collection
|
|
@@ -112,7 +112,7 @@ class LocalIntervalCollection {
|
|
|
112
112
|
props[internal_2.reservedRangeLabelsKey][0] !== this.label) {
|
|
113
113
|
throw new internal_3.LoggingError("Adding an interval that belongs to another interval collection is not permitted");
|
|
114
114
|
}
|
|
115
|
-
const interval = (0, index_js_2.createSequenceInterval)(this.label, id, start, end, this.client, index_js_2.IntervalType.SlideOnRemove, op, undefined, this.options.mergeTreeReferencesCanSlideToEndpoint, props,
|
|
115
|
+
const interval = (0, index_js_2.createSequenceInterval)(this.label, id, start, end, this.client, index_js_2.IntervalType.SlideOnRemove, op, undefined, this.options.mergeTreeReferencesCanSlideToEndpoint, props, false);
|
|
116
116
|
this.add(interval);
|
|
117
117
|
return interval;
|
|
118
118
|
}
|
|
@@ -213,12 +213,12 @@ function removeMetadataFromPendingChanges(localOpMetadataNode) {
|
|
|
213
213
|
}
|
|
214
214
|
function clearEmptyPendingEntry(pendingChanges, id) {
|
|
215
215
|
const pending = pendingChanges[id];
|
|
216
|
-
|
|
217
|
-
if (pending.local.empty) {
|
|
216
|
+
if (pending !== undefined && pending.local.empty) {
|
|
218
217
|
(0, internal_1.assert)(pending.endpointChanges?.empty !== false, 0xbc0 /* endpointChanges must be empty if not pending changes */);
|
|
219
218
|
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
220
219
|
delete pendingChanges[id];
|
|
221
220
|
}
|
|
221
|
+
return pending;
|
|
222
222
|
}
|
|
223
223
|
function hasEndpointChanges(serialized) {
|
|
224
224
|
return serialized.start !== undefined && serialized.end !== undefined;
|
|
@@ -234,15 +234,15 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
234
234
|
super();
|
|
235
235
|
this.options = options;
|
|
236
236
|
this.pending = {};
|
|
237
|
-
this.submitDelta = (op, md) => {
|
|
237
|
+
this.submitDelta = (op, md, consensus) => {
|
|
238
238
|
const { id } = (0, index_js_2.getSerializedProperties)(op.value);
|
|
239
239
|
const pending = (this.pending[id] ??= {
|
|
240
240
|
local: new internal_1.DoublyLinkedList(),
|
|
241
|
+
consensus,
|
|
241
242
|
});
|
|
242
243
|
if (md.type === "add" || (md.type === "change" && hasEndpointChanges(op.value))) {
|
|
243
244
|
const endpointChanges = (pending.endpointChanges ??= new internal_1.DoublyLinkedList());
|
|
244
245
|
md.endpointChangesNode = endpointChanges.push(md).last;
|
|
245
|
-
md.rebased = undefined;
|
|
246
246
|
}
|
|
247
247
|
submitDelta(op, pending.local.push(md).last);
|
|
248
248
|
};
|
|
@@ -282,57 +282,57 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
282
282
|
const localOpMetadata = removeMetadataFromPendingChanges(maybeMetadata);
|
|
283
283
|
const { value } = op;
|
|
284
284
|
const { id, properties } = (0, index_js_2.getSerializedProperties)(value);
|
|
285
|
-
const
|
|
285
|
+
const pending = clearEmptyPendingEntry(this.pending, id);
|
|
286
|
+
const previous = pending?.local.empty
|
|
287
|
+
? pending.consensus
|
|
288
|
+
: pending?.local.last?.data.interval;
|
|
289
|
+
const { type, interval } = localOpMetadata;
|
|
286
290
|
switch (type) {
|
|
287
291
|
case "add": {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
this.deleteExistingInterval({ interval, local: true, rollback: true });
|
|
291
|
-
}
|
|
292
|
+
this.deleteExistingInterval({ interval, local: true, rollback: true });
|
|
293
|
+
interval.dispose();
|
|
292
294
|
break;
|
|
293
295
|
}
|
|
294
296
|
case "change": {
|
|
295
|
-
const
|
|
296
|
-
const
|
|
297
|
-
|
|
298
|
-
? toOptionalSequencePlace(previous.start, previous.startSide)
|
|
299
|
-
: undefined;
|
|
300
|
-
const end = endpointsChanged
|
|
301
|
-
? toOptionalSequencePlace(previous.end, previous.endSide)
|
|
297
|
+
const changeProperties = Object.keys(properties).length > 0;
|
|
298
|
+
const deltaProps = changeProperties
|
|
299
|
+
? interval.changeProperties(properties, undefined, true)
|
|
302
300
|
: undefined;
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
}
|
|
301
|
+
if (localOpMetadata.endpointChangesNode !== undefined) {
|
|
302
|
+
this.localCollection?.removeExistingInterval(interval);
|
|
303
|
+
(0, internal_1.assert)(previous !== undefined, 0xbd2 /* must have existed to change */);
|
|
304
|
+
this.localCollection?.add(previous);
|
|
305
|
+
this.emitChange(previous, interval, true, true);
|
|
306
|
+
}
|
|
307
|
+
if (previous !== interval) {
|
|
308
|
+
interval.dispose();
|
|
309
|
+
}
|
|
310
|
+
if (changeProperties) {
|
|
311
|
+
this.emit("propertyChanged", previous, deltaProps, true, undefined);
|
|
312
|
+
}
|
|
309
313
|
break;
|
|
310
314
|
}
|
|
311
315
|
case "delete": {
|
|
312
|
-
|
|
313
|
-
this.add(
|
|
314
|
-
|
|
315
|
-
start: toSequencePlace(previous.start, previous.startSide),
|
|
316
|
-
end: toSequencePlace(previous.end, previous.endSide),
|
|
317
|
-
props: Object.keys(properties).length > 0 ? properties : undefined,
|
|
318
|
-
rollback: true,
|
|
319
|
-
});
|
|
316
|
+
(0, internal_1.assert)(previous !== undefined, 0xbd3 /* must have existed to delete */);
|
|
317
|
+
this.localCollection?.add(previous);
|
|
318
|
+
this.emit("addInterval", previous, true, undefined);
|
|
320
319
|
break;
|
|
321
320
|
}
|
|
322
321
|
default:
|
|
323
322
|
(0, internal_1.unreachableCase)(type);
|
|
324
323
|
}
|
|
325
|
-
clearEmptyPendingEntry(this.pending, id);
|
|
326
324
|
}
|
|
327
325
|
process(op, local, message, maybeMetadata) {
|
|
328
326
|
const localOpMetadata = local
|
|
329
327
|
? removeMetadataFromPendingChanges(maybeMetadata)
|
|
330
328
|
: undefined;
|
|
331
329
|
const { opName, value } = op;
|
|
330
|
+
const { id } = (0, index_js_2.getSerializedProperties)(value);
|
|
332
331
|
(0, internal_1.assert)((local === false && localOpMetadata === undefined) || opName === localOpMetadata?.type, 0xbc1 /* must be same type */);
|
|
332
|
+
let newConsensus = localOpMetadata?.interval;
|
|
333
333
|
switch (opName) {
|
|
334
334
|
case "add": {
|
|
335
|
-
this.ackAdd(value, local, message,
|
|
335
|
+
newConsensus = this.ackAdd(value, local, message,
|
|
336
336
|
// this cast is safe because of the above assert which
|
|
337
337
|
// validates the op and metadata types match for local changes
|
|
338
338
|
localOpMetadata);
|
|
@@ -343,15 +343,17 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
343
343
|
break;
|
|
344
344
|
}
|
|
345
345
|
case "change": {
|
|
346
|
-
this.ackChange(value, local, message
|
|
346
|
+
newConsensus = this.ackChange(value, local, message, // this cast is safe because of the above assert which
|
|
347
|
+
// validates the op and metadata types match for local changes
|
|
348
|
+
localOpMetadata);
|
|
347
349
|
break;
|
|
348
350
|
}
|
|
349
351
|
default:
|
|
350
352
|
(0, internal_1.unreachableCase)(opName);
|
|
351
353
|
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
354
|
+
const pending = clearEmptyPendingEntry(this.pending, id);
|
|
355
|
+
if (pending !== undefined) {
|
|
356
|
+
pending.consensus = newConsensus;
|
|
355
357
|
}
|
|
356
358
|
}
|
|
357
359
|
resubmitMessage(op, maybeMetadata, squash) {
|
|
@@ -449,7 +451,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
449
451
|
for (const pending of Object.values(this.pending)) {
|
|
450
452
|
if (pending?.endpointChanges !== undefined) {
|
|
451
453
|
for (const local of pending.endpointChanges) {
|
|
452
|
-
local.data.
|
|
454
|
+
this.rebaseLocalInterval(local.data.interval.serialize(), local.data, squash);
|
|
453
455
|
}
|
|
454
456
|
}
|
|
455
457
|
}
|
|
@@ -512,7 +514,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
512
514
|
/**
|
|
513
515
|
* {@inheritdoc IIntervalCollection.add}
|
|
514
516
|
*/
|
|
515
|
-
add({ id, start, end, props,
|
|
517
|
+
add({ id, start, end, props, }) {
|
|
516
518
|
if (!this.localCollection) {
|
|
517
519
|
throw new internal_3.LoggingError("attach must be called prior to adding intervals");
|
|
518
520
|
}
|
|
@@ -523,7 +525,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
523
525
|
endSide !== undefined, 0x793 /* start and end cannot be undefined because they were not passed in as undefined */);
|
|
524
526
|
this.assertStickinessEnabled(start, end);
|
|
525
527
|
const intervalId = id ?? (0, uuid_1.v4)();
|
|
526
|
-
const interval = this.localCollection.addInterval(intervalId, toSequencePlace(startPos, startSide), toSequencePlace(endPos, endSide), props, undefined
|
|
528
|
+
const interval = this.localCollection.addInterval(intervalId, toSequencePlace(startPos, startSide), toSequencePlace(endPos, endSide), props, undefined);
|
|
527
529
|
if (interval) {
|
|
528
530
|
if (!this.isCollaborating) {
|
|
529
531
|
setSlideOnRemove(interval.start);
|
|
@@ -531,7 +533,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
531
533
|
}
|
|
532
534
|
const serializedInterval = interval.serialize();
|
|
533
535
|
const localSeq = this.getNextLocalSeq();
|
|
534
|
-
if (this.isCollaborating
|
|
536
|
+
if (this.isCollaborating) {
|
|
535
537
|
this.submitDelta({
|
|
536
538
|
opName: "add",
|
|
537
539
|
value: serializedInterval,
|
|
@@ -561,8 +563,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
561
563
|
}, {
|
|
562
564
|
type: "delete",
|
|
563
565
|
localSeq: this.getNextLocalSeq(),
|
|
564
|
-
|
|
565
|
-
});
|
|
566
|
+
}, interval);
|
|
566
567
|
}
|
|
567
568
|
else {
|
|
568
569
|
if (this.onDeserialize) {
|
|
@@ -579,7 +580,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
579
580
|
if (!this.localCollection) {
|
|
580
581
|
throw new internal_3.LoggingError("Attach must be called before accessing intervals");
|
|
581
582
|
}
|
|
582
|
-
const interval = this.
|
|
583
|
+
const interval = this.getIntervalById(id);
|
|
583
584
|
if (interval) {
|
|
584
585
|
this.deleteExistingInterval({ interval, local: true });
|
|
585
586
|
}
|
|
@@ -627,13 +628,12 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
627
628
|
const metadata = {
|
|
628
629
|
type: "change",
|
|
629
630
|
localSeq,
|
|
630
|
-
previous: interval.serialize(),
|
|
631
631
|
interval: newInterval ?? interval,
|
|
632
632
|
};
|
|
633
633
|
this.submitDelta({
|
|
634
634
|
opName: "change",
|
|
635
635
|
value: serializedInterval,
|
|
636
|
-
}, metadata);
|
|
636
|
+
}, metadata, interval);
|
|
637
637
|
}
|
|
638
638
|
if (deltaProps !== undefined) {
|
|
639
639
|
this.emit("propertyChanged", interval, deltaProps, true, undefined);
|
|
@@ -657,7 +657,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
657
657
|
hasPendingEndpointChanges(id) {
|
|
658
658
|
return this.pending[id]?.endpointChanges?.empty === false;
|
|
659
659
|
}
|
|
660
|
-
ackChange(serializedInterval, local, op) {
|
|
660
|
+
ackChange(serializedInterval, local, op, localOpMetadata) {
|
|
661
661
|
if (!this.localCollection) {
|
|
662
662
|
throw new internal_3.LoggingError("Attach must be called before accessing intervals");
|
|
663
663
|
}
|
|
@@ -666,44 +666,39 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
666
666
|
// strip it out of the properties here.
|
|
667
667
|
const { id, properties } = (0, index_js_2.getSerializedProperties)(serializedInterval);
|
|
668
668
|
(0, internal_1.assert)(id !== undefined, 0x3fe /* id must exist on the interval */);
|
|
669
|
-
const interval = this.getIntervalById(id);
|
|
670
|
-
if (!interval) {
|
|
671
|
-
// The interval has been removed locally; no-op.
|
|
672
|
-
return;
|
|
673
|
-
}
|
|
674
669
|
if (local) {
|
|
670
|
+
(0, internal_1.assert)(localOpMetadata !== undefined, 0xbd4 /* local must have metadata */);
|
|
671
|
+
const { interval } = localOpMetadata;
|
|
675
672
|
interval.ackPropertiesChange(properties, op);
|
|
676
673
|
this.ackInterval(interval, op);
|
|
674
|
+
return interval;
|
|
677
675
|
}
|
|
678
676
|
else {
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
this.
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
}
|
|
699
|
-
if (newInterval !== interval) {
|
|
700
|
-
this.emitChange(newInterval, interval, local, false, op);
|
|
677
|
+
const latestInterval = this.getIntervalById(id);
|
|
678
|
+
const intervalToChange = this.pending[id]?.consensus ?? latestInterval;
|
|
679
|
+
const isLatestInterval = intervalToChange === latestInterval;
|
|
680
|
+
if (!intervalToChange) {
|
|
681
|
+
return intervalToChange;
|
|
682
|
+
}
|
|
683
|
+
const deltaProps = intervalToChange.changeProperties(properties, op);
|
|
684
|
+
let newInterval = intervalToChange;
|
|
685
|
+
if (hasEndpointChanges(serializedInterval)) {
|
|
686
|
+
const { start, end, startSide, endSide } = serializedInterval;
|
|
687
|
+
newInterval = intervalToChange.modify("", toOptionalSequencePlace(start, startSide ?? internal_2.Side.Before), toOptionalSequencePlace(end, endSide ?? internal_2.Side.Before), op);
|
|
688
|
+
if (isLatestInterval) {
|
|
689
|
+
this.localCollection.removeExistingInterval(intervalToChange);
|
|
690
|
+
this.localCollection.add(newInterval);
|
|
691
|
+
this.emitChange(newInterval, intervalToChange, local, false, op);
|
|
692
|
+
if (this.onDeserialize) {
|
|
693
|
+
this.onDeserialize(newInterval);
|
|
694
|
+
}
|
|
695
|
+
}
|
|
701
696
|
}
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
this.emit("
|
|
705
|
-
this.emit("changed", interval, deltaProps, undefined, local, false);
|
|
697
|
+
if (deltaProps !== undefined && Object.keys(deltaProps).length > 0) {
|
|
698
|
+
this.emit("propertyChanged", latestInterval, deltaProps, local, op);
|
|
699
|
+
this.emit("changed", latestInterval, deltaProps, undefined, local, false);
|
|
706
700
|
}
|
|
701
|
+
return newInterval;
|
|
707
702
|
}
|
|
708
703
|
}
|
|
709
704
|
/**
|
|
@@ -737,8 +732,8 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
737
732
|
}
|
|
738
733
|
const { localSeq, interval } = localOpMetadata;
|
|
739
734
|
const { id } = (0, index_js_2.getSerializedProperties)(original);
|
|
740
|
-
const rebasedEndpoint =
|
|
741
|
-
const localInterval = this.
|
|
735
|
+
const rebasedEndpoint = this.computeRebasedPositions(localOpMetadata, squash);
|
|
736
|
+
const localInterval = this.getIntervalById(id);
|
|
742
737
|
// if the interval slid off the string, rebase the op to be a noop and delete the interval.
|
|
743
738
|
if (rebasedEndpoint === "detached") {
|
|
744
739
|
if (localInterval !== undefined &&
|
|
@@ -761,8 +756,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
761
756
|
this.localCollection.add(interval);
|
|
762
757
|
this.emitChange(interval, old, true, true);
|
|
763
758
|
}
|
|
764
|
-
|
|
765
|
-
this.client.removeLocalReferencePosition(old.end);
|
|
759
|
+
old.dispose();
|
|
766
760
|
}
|
|
767
761
|
return {
|
|
768
762
|
...original,
|
|
@@ -811,10 +805,13 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
811
805
|
}
|
|
812
806
|
// `interval`'s endpoints will get modified in-place, so clone it prior to doing so for event emission.
|
|
813
807
|
const oldInterval = interval.clone();
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
808
|
+
const isLatestInterval = this.getIntervalById(id) === interval;
|
|
809
|
+
if (isLatestInterval) {
|
|
810
|
+
// In this case, where we change the start or end of an interval,
|
|
811
|
+
// it is necessary to remove and re-add the interval listeners.
|
|
812
|
+
// This ensures that the correct listeners are added to the LocalReferencePosition.
|
|
813
|
+
this.localCollection.removeExistingInterval(interval);
|
|
814
|
+
}
|
|
818
815
|
if (!this.client) {
|
|
819
816
|
throw new internal_3.LoggingError("client does not exist");
|
|
820
817
|
}
|
|
@@ -856,19 +853,18 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
856
853
|
oldInterval.end.refType = internal_2.ReferenceType.Transient;
|
|
857
854
|
oldSeg?.localRefs?.addLocalRef(oldInterval.end, oldInterval.end.getOffset());
|
|
858
855
|
}
|
|
859
|
-
|
|
860
|
-
|
|
856
|
+
if (isLatestInterval) {
|
|
857
|
+
this.localCollection.add(interval);
|
|
858
|
+
this.emitChange(interval, oldInterval, true, true, op);
|
|
859
|
+
}
|
|
861
860
|
}
|
|
862
861
|
}
|
|
863
862
|
ackAdd(serializedInterval, local, op, localOpMetadata) {
|
|
864
863
|
const { id, properties } = (0, index_js_2.getSerializedProperties)(serializedInterval);
|
|
865
864
|
if (local) {
|
|
866
865
|
(0, internal_1.assert)(localOpMetadata !== undefined, 0x553 /* op metadata should be defined for local op */);
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
this.ackInterval(localInterval, op);
|
|
870
|
-
}
|
|
871
|
-
return;
|
|
866
|
+
this.ackInterval(localOpMetadata.interval, op);
|
|
867
|
+
return localOpMetadata.interval;
|
|
872
868
|
}
|
|
873
869
|
if (!this.localCollection) {
|
|
874
870
|
throw new internal_3.LoggingError("attachSequence must be called");
|
|
@@ -893,7 +889,7 @@ class IntervalCollection extends client_utils_1.TypedEventEmitter {
|
|
|
893
889
|
throw new internal_3.LoggingError("attach must be called prior to deleting intervals");
|
|
894
890
|
}
|
|
895
891
|
const { id } = (0, index_js_2.getSerializedProperties)(serializedInterval);
|
|
896
|
-
const interval = this.
|
|
892
|
+
const interval = this.getIntervalById(id);
|
|
897
893
|
if (interval) {
|
|
898
894
|
this.deleteExistingInterval({ interval, local, op });
|
|
899
895
|
}
|