@fluidframework/sequence 2.0.0-internal.7.2.2 → 2.0.0-internal.7.4.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 +61 -0
- package/api-extractor-lint.json +13 -0
- package/api-extractor.json +9 -1
- package/api-report/sequence.api.md +87 -84
- package/dist/defaultMap.d.ts +3 -3
- package/dist/defaultMap.d.ts.map +1 -1
- package/dist/defaultMap.js +7 -2
- package/dist/defaultMap.js.map +1 -1
- package/dist/defaultMapInterfaces.d.ts +11 -10
- package/dist/defaultMapInterfaces.d.ts.map +1 -1
- package/dist/defaultMapInterfaces.js.map +1 -1
- package/dist/intervalCollection.d.ts +68 -14
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +50 -45
- package/dist/intervalCollection.js.map +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.d.ts +2 -2
- package/dist/intervalIndex/endpointInRangeIndex.js +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/dist/intervalIndex/endpointIndex.d.ts +2 -2
- package/dist/intervalIndex/endpointIndex.js +1 -1
- package/dist/intervalIndex/endpointIndex.js.map +1 -1
- package/dist/intervalIndex/idIntervalIndex.d.ts +2 -2
- package/dist/intervalIndex/idIntervalIndex.js +1 -1
- package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
- package/dist/intervalIndex/intervalIndex.d.ts +1 -1
- package/dist/intervalIndex/intervalIndex.js.map +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +2 -2
- package/dist/intervalIndex/overlappingIntervalsIndex.js +1 -1
- package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +1 -1
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
- package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.d.ts +2 -2
- package/dist/intervalIndex/startpointInRangeIndex.js +1 -1
- package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/dist/intervals/interval.d.ts +2 -7
- package/dist/intervals/interval.d.ts.map +1 -1
- package/dist/intervals/interval.js +1 -5
- package/dist/intervals/interval.js.map +1 -1
- package/dist/intervals/intervalUtils.d.ts +15 -14
- package/dist/intervals/intervalUtils.d.ts.map +1 -1
- package/dist/intervals/intervalUtils.js +4 -3
- package/dist/intervals/intervalUtils.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +3 -12
- package/dist/intervals/sequenceInterval.d.ts.map +1 -1
- package/dist/intervals/sequenceInterval.js +3 -11
- package/dist/intervals/sequenceInterval.js.map +1 -1
- package/dist/localValues.d.ts +2 -1
- package/dist/localValues.d.ts.map +1 -1
- package/dist/localValues.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/revertibles.d.ts +9 -15
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +41 -21
- package/dist/revertibles.js.map +1 -1
- package/dist/sequence-alpha.d.ts +1306 -0
- package/dist/sequence-beta.d.ts +270 -0
- package/dist/sequence-public.d.ts +270 -0
- package/dist/sequence-untrimmed.d.ts +1790 -0
- package/dist/sequence.d.ts +2 -3
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +4 -5
- package/dist/sequence.js.map +1 -1
- package/dist/sequenceDeltaEvent.d.ts +4 -4
- package/dist/sequenceDeltaEvent.d.ts.map +1 -1
- package/dist/sequenceDeltaEvent.js +4 -3
- package/dist/sequenceDeltaEvent.js.map +1 -1
- package/dist/sequenceFactory.d.ts +1 -1
- package/dist/sequenceFactory.js +1 -1
- package/dist/sequenceFactory.js.map +1 -1
- package/dist/sharedIntervalCollection.d.ts +3 -3
- package/dist/sharedIntervalCollection.js +2 -2
- package/dist/sharedIntervalCollection.js.map +1 -1
- package/dist/sharedSequence.d.ts +3 -3
- package/dist/sharedSequence.js +2 -2
- package/dist/sharedSequence.js.map +1 -1
- package/dist/sharedString.d.ts +8 -5
- package/dist/sharedString.d.ts.map +1 -1
- package/dist/sharedString.js +6 -3
- package/dist/sharedString.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/defaultMap.d.ts +3 -3
- package/lib/defaultMap.d.ts.map +1 -1
- package/lib/defaultMap.js +29 -20
- package/lib/defaultMap.js.map +1 -1
- package/lib/defaultMapInterfaces.d.ts +11 -10
- package/lib/defaultMapInterfaces.d.ts.map +1 -1
- package/lib/defaultMapInterfaces.js +2 -1
- package/lib/defaultMapInterfaces.js.map +1 -1
- package/lib/index.js +45 -10
- package/lib/index.js.map +1 -1
- package/lib/intervalCollection.d.ts +68 -14
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +174 -156
- package/lib/intervalCollection.js.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.d.ts +2 -2
- package/lib/intervalIndex/endpointInRangeIndex.js +18 -13
- package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/lib/intervalIndex/endpointIndex.d.ts +2 -2
- package/lib/intervalIndex/endpointIndex.js +14 -9
- package/lib/intervalIndex/endpointIndex.js.map +1 -1
- package/lib/intervalIndex/idIntervalIndex.d.ts +2 -2
- package/lib/intervalIndex/idIntervalIndex.js +9 -5
- package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
- package/lib/intervalIndex/index.js +19 -6
- package/lib/intervalIndex/index.js.map +1 -1
- package/lib/intervalIndex/intervalIndex.d.ts +1 -1
- package/lib/intervalIndex/intervalIndex.js +2 -1
- package/lib/intervalIndex/intervalIndex.js.map +1 -1
- package/lib/intervalIndex/intervalIndexUtils.js +8 -4
- package/lib/intervalIndex/intervalIndexUtils.js.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +2 -2
- package/lib/intervalIndex/overlappingIntervalsIndex.js +16 -11
- package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +1 -1
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +15 -11
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js +2 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.d.ts +2 -2
- package/lib/intervalIndex/startpointInRangeIndex.js +18 -13
- package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/lib/intervalTree.js +9 -4
- package/lib/intervalTree.js.map +1 -1
- package/lib/intervals/index.js +18 -3
- package/lib/intervals/index.js.map +1 -1
- package/lib/intervals/interval.d.ts +2 -7
- package/lib/intervals/interval.d.ts.map +1 -1
- package/lib/intervals/interval.js +19 -18
- package/lib/intervals/interval.js.map +1 -1
- package/lib/intervals/intervalUtils.d.ts +15 -14
- package/lib/intervals/intervalUtils.d.ts.map +1 -1
- package/lib/intervals/intervalUtils.js +22 -16
- package/lib/intervals/intervalUtils.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +3 -12
- package/lib/intervals/sequenceInterval.d.ts.map +1 -1
- package/lib/intervals/sequenceInterval.js +68 -70
- package/lib/intervals/sequenceInterval.js.map +1 -1
- package/lib/localValues.d.ts +2 -1
- package/lib/localValues.d.ts.map +1 -1
- package/lib/localValues.js +9 -4
- package/lib/localValues.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +5 -2
- package/lib/packageVersion.js.map +1 -1
- package/lib/revertibles.d.ts +9 -15
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +98 -68
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence-alpha.d.ts +1306 -0
- package/lib/sequence-beta.d.ts +270 -0
- package/lib/sequence-public.d.ts +270 -0
- package/lib/sequence-untrimmed.d.ts +1790 -0
- package/lib/sequence.d.ts +2 -3
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +46 -46
- package/lib/sequence.js.map +1 -1
- package/lib/sequenceDeltaEvent.d.ts +4 -4
- package/lib/sequenceDeltaEvent.d.ts.map +1 -1
- package/lib/sequenceDeltaEvent.js +17 -10
- package/lib/sequenceDeltaEvent.js.map +1 -1
- package/lib/sequenceFactory.d.ts +1 -1
- package/lib/sequenceFactory.js +14 -10
- package/lib/sequenceFactory.js.map +1 -1
- package/lib/sharedIntervalCollection.d.ts +3 -3
- package/lib/sharedIntervalCollection.js +20 -15
- package/lib/sharedIntervalCollection.js.map +1 -1
- package/lib/sharedSequence.d.ts +3 -3
- package/lib/sharedSequence.js +13 -8
- package/lib/sharedSequence.js.map +1 -1
- package/lib/sharedString.d.ts +8 -5
- package/lib/sharedString.d.ts.map +1 -1
- package/lib/sharedString.js +27 -19
- package/lib/sharedString.js.map +1 -1
- package/package.json +43 -29
- package/sequence.test-files.tar +0 -0
- package/src/defaultMap.ts +22 -16
- package/src/defaultMapInterfaces.ts +15 -12
- package/src/intervalCollection.ts +131 -67
- package/src/intervalIndex/endpointInRangeIndex.ts +2 -2
- package/src/intervalIndex/endpointIndex.ts +2 -2
- package/src/intervalIndex/idIntervalIndex.ts +2 -2
- package/src/intervalIndex/intervalIndex.ts +1 -1
- package/src/intervalIndex/overlappingIntervalsIndex.ts +2 -2
- package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +1 -1
- package/src/intervalIndex/sequenceIntervalIndexes.ts +2 -1
- package/src/intervalIndex/startpointInRangeIndex.ts +2 -2
- package/src/intervals/interval.ts +2 -7
- package/src/intervals/intervalUtils.ts +16 -15
- package/src/intervals/sequenceInterval.ts +3 -12
- package/src/localValues.ts +2 -1
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +95 -24
- package/src/sequence.ts +5 -7
- package/src/sequenceDeltaEvent.ts +6 -4
- package/src/sequenceFactory.ts +1 -1
- package/src/sharedIntervalCollection.ts +3 -3
- package/src/sharedSequence.ts +3 -3
- package/src/sharedString.ts +8 -5
- package/tsconfig.esnext.json +1 -2
- package/tsconfig.json +5 -3
package/lib/localValues.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
6
6
|
import { IFluidSerializer } from "@fluidframework/shared-object-base";
|
|
7
7
|
import { ISerializableValue, ISerializedValue, IValueOperation, IValueType } from "./defaultMapInterfaces";
|
|
8
|
+
import { IntervalOpType } from "./intervals";
|
|
8
9
|
/**
|
|
9
10
|
* A local value to be stored in a container type DDS.
|
|
10
11
|
*/
|
|
@@ -53,6 +54,6 @@ export declare class ValueTypeLocalValue<T> implements ILocalValue<T> {
|
|
|
53
54
|
* @param opName - The name of the operation that needs processing
|
|
54
55
|
* @returns The object which can process the given op
|
|
55
56
|
*/
|
|
56
|
-
getOpHandler(opName:
|
|
57
|
+
getOpHandler(opName: IntervalOpType): IValueOperation<T>;
|
|
57
58
|
}
|
|
58
59
|
//# sourceMappingURL=localValues.d.ts.map
|
package/lib/localValues.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localValues.d.ts","sourceRoot":"","sources":["../src/localValues.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oCAAoC,CAAC;AACxF,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"localValues.d.ts","sourceRoot":"","sources":["../src/localValues.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oCAAoC,CAAC;AACxF,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IACnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB;;;;;OAKG;IACH,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAAC;CACnF;AAED,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,gBAAgB,EAC5B,IAAI,EAAE,YAAY,GAChB,kBAAkB,CAMpB;AAED;;;;GAIG;AACH,qBAAa,mBAAmB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;aAO3C,KAAK,EAAE,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP3B;;;;OAIG;gBAEc,KAAK,EAAE,CAAC,EACP,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAG1C;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACI,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB;IAUzF;;;;OAIG;IACI,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC;CAQ/D"}
|
package/lib/localValues.js
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*!
|
|
2
3
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
4
|
* Licensed under the MIT License.
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ValueTypeLocalValue = exports.makeSerializable = void 0;
|
|
8
|
+
const shared_object_base_1 = require("@fluidframework/shared-object-base");
|
|
9
|
+
function makeSerializable(localValue, serializer, bind) {
|
|
7
10
|
const value = localValue.makeSerialized(serializer, bind);
|
|
8
11
|
return {
|
|
9
12
|
type: value.type,
|
|
10
13
|
value: value.value && JSON.parse(value.value),
|
|
11
14
|
};
|
|
12
15
|
}
|
|
16
|
+
exports.makeSerializable = makeSerializable;
|
|
13
17
|
/**
|
|
14
18
|
* Manages a contained value type.
|
|
15
19
|
*
|
|
16
20
|
* @alpha
|
|
17
21
|
*/
|
|
18
|
-
|
|
22
|
+
class ValueTypeLocalValue {
|
|
19
23
|
/**
|
|
20
24
|
* Create a new ValueTypeLocalValue.
|
|
21
25
|
* @param value - The instance of the value type stored within
|
|
@@ -36,7 +40,7 @@ export class ValueTypeLocalValue {
|
|
|
36
40
|
*/
|
|
37
41
|
makeSerialized(serializer, bind) {
|
|
38
42
|
const storedValueType = this.valueType.factory.store(this.value);
|
|
39
|
-
const value = serializeHandles(storedValueType, serializer, bind);
|
|
43
|
+
const value = (0, shared_object_base_1.serializeHandles)(storedValueType, serializer, bind);
|
|
40
44
|
return {
|
|
41
45
|
type: this.type,
|
|
42
46
|
value,
|
|
@@ -55,4 +59,5 @@ export class ValueTypeLocalValue {
|
|
|
55
59
|
return handler;
|
|
56
60
|
}
|
|
57
61
|
}
|
|
62
|
+
exports.ValueTypeLocalValue = ValueTypeLocalValue;
|
|
58
63
|
//# sourceMappingURL=localValues.js.map
|
package/lib/localValues.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localValues.js","sourceRoot":"","sources":["../src/localValues.ts"],"names":[],"mappings":"AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"localValues.js","sourceRoot":"","sources":["../src/localValues.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,2EAAwF;AAgCxF,SAAgB,gBAAgB,CAC/B,UAAuB,EACvB,UAA4B,EAC5B,IAAkB;IAElB,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1D,OAAO;QACN,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;KAC7C,CAAC;AACH,CAAC;AAVD,4CAUC;AAED;;;;GAIG;AACH,MAAa,mBAAmB;IAC/B;;;;OAIG;IACH,YACiB,KAAQ,EACP,SAAwB;QADzB,UAAK,GAAL,KAAK,CAAG;QACP,cAAS,GAAT,SAAS,CAAe;IACvC,CAAC;IAEJ;;OAEG;IACH,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,UAA4B,EAAE,IAAkB;QACrE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,IAAA,qCAAgB,EAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK;SACL,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,MAAsB;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACxC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;CACD;AA5CD,kDA4CC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IFluidHandle } from \"@fluidframework/core-interfaces\";\nimport { IFluidSerializer, serializeHandles } from \"@fluidframework/shared-object-base\";\nimport {\n\tISerializableValue,\n\tISerializedValue,\n\tIValueOperation,\n\tIValueType,\n} from \"./defaultMapInterfaces\";\nimport { IntervalOpType } from \"./intervals\";\n\n/**\n * A local value to be stored in a container type DDS.\n */\nexport interface ILocalValue<T = any> {\n\t/**\n\t * Type indicator of the value stored within.\n\t */\n\treadonly type: string;\n\n\t/**\n\t * The in-memory value stored within.\n\t */\n\treadonly value: T;\n\n\t/**\n\t * Retrieve the serialized form of the value stored within.\n\t * @param serializer - Data store runtime's serializer\n\t * @param bind - Container type's handle\n\t * @returns The serialized form of the contained value\n\t */\n\tmakeSerialized(serializer: IFluidSerializer, bind: IFluidHandle): ISerializedValue;\n}\n\nexport function makeSerializable(\n\tlocalValue: ILocalValue,\n\tserializer: IFluidSerializer,\n\tbind: IFluidHandle,\n): ISerializableValue {\n\tconst value = localValue.makeSerialized(serializer, bind);\n\treturn {\n\t\ttype: value.type,\n\t\tvalue: value.value && JSON.parse(value.value),\n\t};\n}\n\n/**\n * Manages a contained value type.\n *\n * @alpha\n */\nexport class ValueTypeLocalValue<T> implements ILocalValue<T> {\n\t/**\n\t * Create a new ValueTypeLocalValue.\n\t * @param value - The instance of the value type stored within\n\t * @param valueType - The type object of the value type stored within\n\t */\n\tconstructor(\n\t\tpublic readonly value: T,\n\t\tprivate readonly valueType: IValueType<T>,\n\t) {}\n\n\t/**\n\t * {@inheritDoc ILocalValue.\"type\"}\n\t */\n\tpublic get type(): string {\n\t\treturn this.valueType.name;\n\t}\n\n\t/**\n\t * {@inheritDoc ILocalValue.makeSerialized}\n\t */\n\tpublic makeSerialized(serializer: IFluidSerializer, bind: IFluidHandle): ISerializedValue {\n\t\tconst storedValueType = this.valueType.factory.store(this.value);\n\t\tconst value = serializeHandles(storedValueType, serializer, bind);\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue,\n\t\t};\n\t}\n\n\t/**\n\t * Get the handler for a given op of this value type.\n\t * @param opName - The name of the operation that needs processing\n\t * @returns The object which can process the given op\n\t */\n\tpublic getOpHandler(opName: IntervalOpType): IValueOperation<T> {\n\t\tconst handler = this.valueType.ops.get(opName);\n\t\tif (!handler) {\n\t\t\tthrow new Error(\"Unknown type message\");\n\t\t}\n\n\t\treturn handler;\n\t}\n}\n"]}
|
package/lib/packageVersion.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export declare const pkgName = "@fluidframework/sequence";
|
|
8
|
-
export declare const pkgVersion = "2.0.0-internal.7.
|
|
8
|
+
export declare const pkgVersion = "2.0.0-internal.7.4.0";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
package/lib/packageVersion.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*!
|
|
2
3
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
4
|
* Licensed under the MIT License.
|
|
4
5
|
*
|
|
5
6
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
7
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.pkgVersion = exports.pkgName = void 0;
|
|
10
|
+
exports.pkgName = "@fluidframework/sequence";
|
|
11
|
+
exports.pkgVersion = "2.0.0-internal.7.4.0";
|
|
9
12
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,0BAA0B,CAAC;AACrC,QAAA,UAAU,GAAG,sBAAsB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/sequence\";\nexport const pkgVersion = \"2.0.0-internal.7.4.0\";\n"]}
|
package/lib/revertibles.d.ts
CHANGED
|
@@ -8,15 +8,12 @@ import { SharedString } from "./sharedString";
|
|
|
8
8
|
import { SequenceDeltaEvent } from "./sequenceDeltaEvent";
|
|
9
9
|
/**
|
|
10
10
|
* Data for undoing edits on SharedStrings and Intervals.
|
|
11
|
-
*
|
|
12
|
-
* @alpha
|
|
11
|
+
* @internal
|
|
13
12
|
*/
|
|
14
13
|
export type SharedStringRevertible = MergeTreeDeltaRevertible | IntervalRevertible;
|
|
15
|
-
type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
|
|
16
14
|
/**
|
|
17
15
|
* Data for undoing edits affecting Intervals.
|
|
18
|
-
*
|
|
19
|
-
* @alpha
|
|
16
|
+
* @internal
|
|
20
17
|
*/
|
|
21
18
|
export type IntervalRevertible = {
|
|
22
19
|
event: typeof IntervalOpType.CHANGE;
|
|
@@ -52,41 +49,38 @@ export type IntervalRevertible = {
|
|
|
52
49
|
};
|
|
53
50
|
/**
|
|
54
51
|
* Create revertibles for adding an interval
|
|
55
|
-
* @
|
|
52
|
+
* @internal
|
|
56
53
|
*/
|
|
57
54
|
export declare function appendAddIntervalToRevertibles(interval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
|
|
58
55
|
/**
|
|
59
56
|
* Create revertibles for deleting an interval
|
|
60
|
-
* @
|
|
57
|
+
* @internal
|
|
61
58
|
*/
|
|
62
59
|
export declare function appendDeleteIntervalToRevertibles(string: SharedString, interval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
|
|
63
60
|
/**
|
|
64
61
|
* Create revertibles for moving endpoints of an interval
|
|
65
|
-
* @
|
|
62
|
+
* @internal
|
|
66
63
|
*/
|
|
67
64
|
export declare function appendChangeIntervalToRevertibles(string: SharedString, newInterval: SequenceInterval, previousInterval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
|
|
68
65
|
/**
|
|
69
66
|
* Create revertibles for changing properties of an interval
|
|
70
|
-
* @
|
|
67
|
+
* @internal
|
|
71
68
|
*/
|
|
72
69
|
export declare function appendIntervalPropertyChangedToRevertibles(interval: SequenceInterval, deltas: PropertySet, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
|
|
73
70
|
/**
|
|
74
71
|
* Create revertibles for SharedStringDeltas, handling indirectly modified intervals
|
|
75
72
|
* (e.g. reverting remove of a range that contains an interval will move the interval back)
|
|
76
|
-
*
|
|
77
|
-
* @alpha
|
|
73
|
+
* @internal
|
|
78
74
|
*/
|
|
79
75
|
export declare function appendSharedStringDeltaToRevertibles(string: SharedString, delta: SequenceDeltaEvent, revertibles: SharedStringRevertible[]): void;
|
|
80
76
|
/**
|
|
81
77
|
* Clean up resources held by revertibles that are no longer needed.
|
|
82
|
-
* @
|
|
78
|
+
* @internal
|
|
83
79
|
*/
|
|
84
80
|
export declare function discardSharedStringRevertibles(sharedString: SharedString, revertibles: SharedStringRevertible[]): void;
|
|
85
81
|
/**
|
|
86
82
|
* Invoke revertibles to reverse prior edits
|
|
87
|
-
*
|
|
88
|
-
* @alpha
|
|
83
|
+
* @internal
|
|
89
84
|
*/
|
|
90
85
|
export declare function revertSharedStringRevertibles(sharedString: SharedString, revertibles: SharedStringRevertible[]): void;
|
|
91
|
-
export {};
|
|
92
86
|
//# sourceMappingURL=revertibles.d.ts.map
|
package/lib/revertibles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revertibles.d.ts","sourceRoot":"","sources":["../src/revertibles.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"revertibles.d.ts","sourceRoot":"","sources":["../src/revertibles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAIN,sBAAsB,EAEtB,wBAAwB,EAExB,WAAW,EAOX,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAuB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/E;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,GAAG,kBAAkB,CAAC;AAInF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC3B;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,GAAG,EAAE,sBAAsB,CAAC;CAC3B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,GAAG,CAAC;IACjC,QAAQ,EAAE,gBAAgB,CAAC;CAC1B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,GAAG,EAAE,sBAAsB,CAAC;CAC3B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,gBAAgB,CAAC;IAC9C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,cAAc,EAAE,WAAW,CAAC;CAC3B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,eAAe,CAAC;IAC7C,SAAS,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;IAEJ,cAAc,EAAE;QACf,UAAU,EAAE,kBAAkB,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KACjB,EAAE,CAAC;IACJ,mBAAmB,EAAE,wBAAwB,CAAC;CAC7C,CAAC;AAaL;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,sBAAsB,EAAE,4BAQrC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,sBAAsB,EAAE,4BAqCrC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,gBAAgB,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,sBAAsB,EAAE,4BAwCrC;AAED;;;GAGG;AACH,wBAAgB,0CAA0C,CACzD,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,sBAAsB,EAAE,4BASrC;AA2CD;;;;GAIG;AACH,wBAAgB,oCAAoC,CACnD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,sBAAsB,EAAE,QAoFrC;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,sBAAsB,EAAE,QAUrC;AAoRD;;;GAGG;AACH,wBAAgB,6BAA6B,CAC5C,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,sBAAsB,EAAE,QA8BrC"}
|
package/lib/revertibles.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*!
|
|
2
3
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
4
|
* Licensed under the MIT License.
|
|
4
5
|
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.revertSharedStringRevertibles = exports.discardSharedStringRevertibles = exports.appendSharedStringDeltaToRevertibles = exports.appendIntervalPropertyChangedToRevertibles = exports.appendChangeIntervalToRevertibles = exports.appendDeleteIntervalToRevertibles = exports.appendAddIntervalToRevertibles = void 0;
|
|
8
|
+
/* eslint-disable import/no-deprecated */
|
|
5
9
|
/* eslint-disable no-bitwise */
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
const core_utils_1 = require("@fluidframework/core-utils");
|
|
11
|
+
const merge_tree_1 = require("@fluidframework/merge-tree");
|
|
12
|
+
const intervalCollection_1 = require("./intervalCollection");
|
|
13
|
+
const intervals_1 = require("./intervals");
|
|
9
14
|
const idMap = new Map();
|
|
10
15
|
function getUpdatedIdFromInterval(interval) {
|
|
11
16
|
const maybeId = interval.getIntervalId();
|
|
@@ -16,32 +21,33 @@ function getUpdatedId(intervalId) {
|
|
|
16
21
|
}
|
|
17
22
|
/**
|
|
18
23
|
* Create revertibles for adding an interval
|
|
19
|
-
* @
|
|
24
|
+
* @internal
|
|
20
25
|
*/
|
|
21
|
-
|
|
26
|
+
function appendAddIntervalToRevertibles(interval, revertibles) {
|
|
22
27
|
revertibles.push({
|
|
23
|
-
event: IntervalOpType.ADD,
|
|
28
|
+
event: intervals_1.IntervalOpType.ADD,
|
|
24
29
|
interval,
|
|
25
30
|
});
|
|
26
31
|
return revertibles;
|
|
27
32
|
}
|
|
33
|
+
exports.appendAddIntervalToRevertibles = appendAddIntervalToRevertibles;
|
|
28
34
|
/**
|
|
29
35
|
* Create revertibles for deleting an interval
|
|
30
|
-
* @
|
|
36
|
+
* @internal
|
|
31
37
|
*/
|
|
32
|
-
|
|
38
|
+
function appendDeleteIntervalToRevertibles(string, interval, revertibles) {
|
|
33
39
|
const startSeg = interval.start.getSegment();
|
|
34
40
|
const startType = startSeg.removedSeq !== undefined
|
|
35
|
-
? ReferenceType.SlideOnRemove | ReferenceType.RangeBegin
|
|
36
|
-
: ReferenceType.StayOnRemove | ReferenceType.RangeBegin;
|
|
41
|
+
? merge_tree_1.ReferenceType.SlideOnRemove | merge_tree_1.ReferenceType.RangeBegin
|
|
42
|
+
: merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeBegin;
|
|
37
43
|
const endSeg = interval.end.getSegment();
|
|
38
44
|
const endType = endSeg.removedSeq !== undefined
|
|
39
|
-
? ReferenceType.SlideOnRemove | ReferenceType.RangeEnd
|
|
40
|
-
: ReferenceType.StayOnRemove | ReferenceType.RangeEnd;
|
|
45
|
+
? merge_tree_1.ReferenceType.SlideOnRemove | merge_tree_1.ReferenceType.RangeEnd
|
|
46
|
+
: merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeEnd;
|
|
41
47
|
const startRef = string.createLocalReferencePosition(startSeg, interval.start.getOffset(), startType, undefined, interval.start.slidingPreference);
|
|
42
48
|
const endRef = string.createLocalReferencePosition(endSeg, interval.end.getOffset(), endType, undefined, interval.end.slidingPreference);
|
|
43
49
|
const revertible = {
|
|
44
|
-
event: IntervalOpType.DELETE,
|
|
50
|
+
event: intervals_1.IntervalOpType.DELETE,
|
|
45
51
|
interval,
|
|
46
52
|
start: startRef,
|
|
47
53
|
end: endRef,
|
|
@@ -51,26 +57,27 @@ export function appendDeleteIntervalToRevertibles(string, interval, revertibles)
|
|
|
51
57
|
revertibles.push(revertible);
|
|
52
58
|
return revertibles;
|
|
53
59
|
}
|
|
60
|
+
exports.appendDeleteIntervalToRevertibles = appendDeleteIntervalToRevertibles;
|
|
54
61
|
/**
|
|
55
62
|
* Create revertibles for moving endpoints of an interval
|
|
56
|
-
* @
|
|
63
|
+
* @internal
|
|
57
64
|
*/
|
|
58
|
-
|
|
65
|
+
function appendChangeIntervalToRevertibles(string, newInterval, previousInterval, revertibles) {
|
|
59
66
|
const startSeg = previousInterval.start.getSegment();
|
|
60
67
|
// This logic is needed because the ReferenceType StayOnRemove cannot be used
|
|
61
68
|
// on removed segments. This works for revertibles because the old position of the
|
|
62
69
|
// interval within the removed segment is handled by the remove range revertible.
|
|
63
70
|
const startType = startSeg.removedSeq !== undefined
|
|
64
|
-
? ReferenceType.SlideOnRemove | ReferenceType.RangeBegin
|
|
65
|
-
: ReferenceType.StayOnRemove | ReferenceType.RangeBegin;
|
|
71
|
+
? merge_tree_1.ReferenceType.SlideOnRemove | merge_tree_1.ReferenceType.RangeBegin
|
|
72
|
+
: merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeBegin;
|
|
66
73
|
const endSeg = previousInterval.end.getSegment();
|
|
67
74
|
const endType = endSeg.removedSeq !== undefined
|
|
68
|
-
? ReferenceType.SlideOnRemove | ReferenceType.RangeEnd
|
|
69
|
-
: ReferenceType.StayOnRemove | ReferenceType.RangeEnd;
|
|
75
|
+
? merge_tree_1.ReferenceType.SlideOnRemove | merge_tree_1.ReferenceType.RangeEnd
|
|
76
|
+
: merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeEnd;
|
|
70
77
|
const prevStartRef = string.createLocalReferencePosition(startSeg, previousInterval.start.getOffset(), startType, undefined, previousInterval.start.slidingPreference);
|
|
71
78
|
const prevEndRef = string.createLocalReferencePosition(endSeg, previousInterval.end.getOffset(), endType, undefined, previousInterval.end.slidingPreference);
|
|
72
79
|
const revertible = {
|
|
73
|
-
event: IntervalOpType.CHANGE,
|
|
80
|
+
event: intervals_1.IntervalOpType.CHANGE,
|
|
74
81
|
interval: newInterval,
|
|
75
82
|
start: prevStartRef,
|
|
76
83
|
end: prevEndRef,
|
|
@@ -80,29 +87,31 @@ export function appendChangeIntervalToRevertibles(string, newInterval, previousI
|
|
|
80
87
|
revertibles.push(revertible);
|
|
81
88
|
return revertibles;
|
|
82
89
|
}
|
|
90
|
+
exports.appendChangeIntervalToRevertibles = appendChangeIntervalToRevertibles;
|
|
83
91
|
/**
|
|
84
92
|
* Create revertibles for changing properties of an interval
|
|
85
|
-
* @
|
|
93
|
+
* @internal
|
|
86
94
|
*/
|
|
87
|
-
|
|
95
|
+
function appendIntervalPropertyChangedToRevertibles(interval, deltas, revertibles) {
|
|
88
96
|
revertibles.push({
|
|
89
|
-
event: IntervalOpType.PROPERTY_CHANGED,
|
|
97
|
+
event: intervals_1.IntervalOpType.PROPERTY_CHANGED,
|
|
90
98
|
interval,
|
|
91
99
|
propertyDeltas: deltas,
|
|
92
100
|
});
|
|
93
101
|
return revertibles;
|
|
94
102
|
}
|
|
103
|
+
exports.appendIntervalPropertyChangedToRevertibles = appendIntervalPropertyChangedToRevertibles;
|
|
95
104
|
function addIfIntervalEndpoint(ref, segmentLengths, startIntervals, endIntervals) {
|
|
96
|
-
if (refTypeIncludesFlag(ref.refType, ReferenceType.RangeBegin)) {
|
|
105
|
+
if ((0, merge_tree_1.refTypeIncludesFlag)(ref.refType, merge_tree_1.ReferenceType.RangeBegin)) {
|
|
97
106
|
const interval = ref.properties?.interval;
|
|
98
|
-
if (interval && interval instanceof SequenceInterval) {
|
|
107
|
+
if (interval && interval instanceof intervals_1.SequenceInterval) {
|
|
99
108
|
startIntervals.push({ offset: segmentLengths + interval.start.getOffset(), interval });
|
|
100
109
|
return true;
|
|
101
110
|
}
|
|
102
111
|
}
|
|
103
|
-
else if (refTypeIncludesFlag(ref.refType, ReferenceType.RangeEnd)) {
|
|
112
|
+
else if ((0, merge_tree_1.refTypeIncludesFlag)(ref.refType, merge_tree_1.ReferenceType.RangeEnd)) {
|
|
104
113
|
const interval = ref.properties?.interval;
|
|
105
|
-
if (interval && interval instanceof SequenceInterval) {
|
|
114
|
+
if (interval && interval instanceof intervals_1.SequenceInterval) {
|
|
106
115
|
endIntervals.push({ offset: segmentLengths + interval.end.getOffset(), interval });
|
|
107
116
|
return true;
|
|
108
117
|
}
|
|
@@ -115,21 +124,20 @@ function addIfRevertibleRef(ref, segmentLengths, revertibleRefs) {
|
|
|
115
124
|
revertibleRefs.push({
|
|
116
125
|
revertible,
|
|
117
126
|
offset: segmentLengths + ref.getOffset(),
|
|
118
|
-
isStart: refTypeIncludesFlag(ref.refType, ReferenceType.RangeBegin),
|
|
127
|
+
isStart: (0, merge_tree_1.refTypeIncludesFlag)(ref.refType, merge_tree_1.ReferenceType.RangeBegin),
|
|
119
128
|
});
|
|
120
129
|
}
|
|
121
130
|
}
|
|
122
131
|
/**
|
|
123
132
|
* Create revertibles for SharedStringDeltas, handling indirectly modified intervals
|
|
124
133
|
* (e.g. reverting remove of a range that contains an interval will move the interval back)
|
|
125
|
-
*
|
|
126
|
-
* @alpha
|
|
134
|
+
* @internal
|
|
127
135
|
*/
|
|
128
|
-
|
|
136
|
+
function appendSharedStringDeltaToRevertibles(string, delta, revertibles) {
|
|
129
137
|
if (delta.ranges.length === 0) {
|
|
130
138
|
return;
|
|
131
139
|
}
|
|
132
|
-
if (delta.deltaOperation === MergeTreeDeltaType.REMOVE) {
|
|
140
|
+
if (delta.deltaOperation === merge_tree_1.MergeTreeDeltaType.REMOVE) {
|
|
133
141
|
const startIntervals = [];
|
|
134
142
|
const endIntervals = [];
|
|
135
143
|
const revertibleRefs = [];
|
|
@@ -147,10 +155,10 @@ export function appendSharedStringDeltaToRevertibles(string, delta, revertibles)
|
|
|
147
155
|
}
|
|
148
156
|
if (startIntervals.length > 0 || endIntervals.length > 0 || revertibleRefs.length > 0) {
|
|
149
157
|
const removeRevertibles = [];
|
|
150
|
-
appendToMergeTreeDeltaRevertibles(delta.deltaArgs, removeRevertibles);
|
|
151
|
-
assert(removeRevertibles.length === 1, 0x6c4 /* Remove revertible should be a single delta */);
|
|
158
|
+
(0, merge_tree_1.appendToMergeTreeDeltaRevertibles)(delta.deltaArgs, removeRevertibles);
|
|
159
|
+
(0, core_utils_1.assert)(removeRevertibles.length === 1, 0x6c4 /* Remove revertible should be a single delta */);
|
|
152
160
|
const revertible = {
|
|
153
|
-
event: IntervalOpType.POSITION_REMOVE,
|
|
161
|
+
event: intervals_1.IntervalOpType.POSITION_REMOVE,
|
|
154
162
|
intervals: [],
|
|
155
163
|
revertibleRefs,
|
|
156
164
|
mergeTreeRevertible: removeRevertibles[0],
|
|
@@ -188,29 +196,31 @@ export function appendSharedStringDeltaToRevertibles(string, delta, revertibles)
|
|
|
188
196
|
// Handle any merge tree delta that is not REMOVE or is REMOVE with no interval endpoints
|
|
189
197
|
const mergeTreeRevertibles = [];
|
|
190
198
|
// Allow merging MergeTreeDeltaRevertible with previous
|
|
191
|
-
if (revertibles.length > 0 && isMergeTreeDeltaRevertible(revertibles[revertibles.length - 1])) {
|
|
199
|
+
if (revertibles.length > 0 && (0, merge_tree_1.isMergeTreeDeltaRevertible)(revertibles[revertibles.length - 1])) {
|
|
192
200
|
mergeTreeRevertibles.push(revertibles.pop());
|
|
193
201
|
}
|
|
194
|
-
appendToMergeTreeDeltaRevertibles(delta.deltaArgs, mergeTreeRevertibles);
|
|
202
|
+
(0, merge_tree_1.appendToMergeTreeDeltaRevertibles)(delta.deltaArgs, mergeTreeRevertibles);
|
|
195
203
|
revertibles.push(...mergeTreeRevertibles);
|
|
196
204
|
}
|
|
205
|
+
exports.appendSharedStringDeltaToRevertibles = appendSharedStringDeltaToRevertibles;
|
|
197
206
|
/**
|
|
198
207
|
* Clean up resources held by revertibles that are no longer needed.
|
|
199
|
-
* @
|
|
208
|
+
* @internal
|
|
200
209
|
*/
|
|
201
|
-
|
|
210
|
+
function discardSharedStringRevertibles(sharedString, revertibles) {
|
|
202
211
|
revertibles.forEach((r) => {
|
|
203
|
-
if (isMergeTreeDeltaRevertible(r)) {
|
|
204
|
-
discardMergeTreeDeltaRevertible([r]);
|
|
212
|
+
if ((0, merge_tree_1.isMergeTreeDeltaRevertible)(r)) {
|
|
213
|
+
(0, merge_tree_1.discardMergeTreeDeltaRevertible)([r]);
|
|
205
214
|
}
|
|
206
|
-
else if (r.event === IntervalOpType.CHANGE || r.event === IntervalOpType.DELETE) {
|
|
215
|
+
else if (r.event === intervals_1.IntervalOpType.CHANGE || r.event === intervals_1.IntervalOpType.DELETE) {
|
|
207
216
|
sharedString.removeLocalReferencePosition(r.start);
|
|
208
217
|
sharedString.removeLocalReferencePosition(r.end);
|
|
209
218
|
}
|
|
210
219
|
});
|
|
211
220
|
}
|
|
221
|
+
exports.discardSharedStringRevertibles = discardSharedStringRevertibles;
|
|
212
222
|
function getSlidePosition(string, lref, pos) {
|
|
213
|
-
const slide = getSlideToSegoff({ segment: lref.getSegment(), offset: undefined }, lref.slidingPreference);
|
|
223
|
+
const slide = (0, merge_tree_1.getSlideToSegoff)({ segment: lref.getSegment(), offset: undefined }, lref.slidingPreference);
|
|
214
224
|
return slide?.segment !== undefined &&
|
|
215
225
|
slide.offset !== undefined &&
|
|
216
226
|
string.getPosition(slide.segment) !== -1 &&
|
|
@@ -218,18 +228,36 @@ function getSlidePosition(string, lref, pos) {
|
|
|
218
228
|
? string.getPosition(slide.segment) + slide.offset
|
|
219
229
|
: pos;
|
|
220
230
|
}
|
|
221
|
-
function isValidRange(start, end, string) {
|
|
231
|
+
function isValidRange(start, startSlide, end, endSlide, string) {
|
|
222
232
|
return (start >= 0 &&
|
|
223
233
|
start < string.getLength() &&
|
|
224
234
|
end >= 0 &&
|
|
225
235
|
end < string.getLength() &&
|
|
226
|
-
start
|
|
236
|
+
(start < end ||
|
|
237
|
+
(start === end &&
|
|
238
|
+
(startSlide === merge_tree_1.SlidingPreference.FORWARD ||
|
|
239
|
+
endSlide !== merge_tree_1.SlidingPreference.FORWARD))));
|
|
227
240
|
}
|
|
228
241
|
function revertLocalAdd(string, revertible) {
|
|
229
242
|
const id = getUpdatedIdFromInterval(revertible.interval);
|
|
230
243
|
const label = revertible.interval.properties.referenceRangeLabels[0];
|
|
231
244
|
string.getIntervalCollection(label).removeIntervalById(id);
|
|
232
245
|
}
|
|
246
|
+
function createSequencePlace(pos, newSlidingPreference, oldSlidingPreference = undefined) {
|
|
247
|
+
return newSlidingPreference === merge_tree_1.SlidingPreference.BACKWARD ||
|
|
248
|
+
(newSlidingPreference === undefined && oldSlidingPreference === merge_tree_1.SlidingPreference.BACKWARD)
|
|
249
|
+
? {
|
|
250
|
+
pos,
|
|
251
|
+
side: intervalCollection_1.Side.After,
|
|
252
|
+
}
|
|
253
|
+
: newSlidingPreference === merge_tree_1.SlidingPreference.FORWARD &&
|
|
254
|
+
oldSlidingPreference === merge_tree_1.SlidingPreference.BACKWARD
|
|
255
|
+
? {
|
|
256
|
+
pos,
|
|
257
|
+
side: intervalCollection_1.Side.Before,
|
|
258
|
+
}
|
|
259
|
+
: pos; // Avoid setting side if possible since stickiness may not be enabled
|
|
260
|
+
}
|
|
233
261
|
function revertLocalDelete(string, revertible) {
|
|
234
262
|
const label = revertible.interval.properties.referenceRangeLabels[0];
|
|
235
263
|
const collection = string.getIntervalCollection(label);
|
|
@@ -239,10 +267,10 @@ function revertLocalDelete(string, revertible) {
|
|
|
239
267
|
const endSlidePos = getSlidePosition(string, revertible.end, end);
|
|
240
268
|
// reusing the id causes eventual consistency bugs, so it is removed here and recreated in add
|
|
241
269
|
const { intervalId, ...props } = revertible.interval.properties;
|
|
242
|
-
if (isValidRange(startSlidePos, endSlidePos, string)) {
|
|
270
|
+
if (isValidRange(startSlidePos, revertible.start.slidingPreference, endSlidePos, revertible.end.slidingPreference, string)) {
|
|
243
271
|
const int = collection.add({
|
|
244
|
-
start: startSlidePos,
|
|
245
|
-
end: endSlidePos,
|
|
272
|
+
start: createSequencePlace(startSlidePos, revertible.start.slidingPreference),
|
|
273
|
+
end: createSequencePlace(endSlidePos, revertible.end.slidingPreference),
|
|
246
274
|
props,
|
|
247
275
|
});
|
|
248
276
|
idMap.forEach((newId, oldId) => {
|
|
@@ -263,8 +291,10 @@ function revertLocalChange(string, revertible) {
|
|
|
263
291
|
const startSlidePos = getSlidePosition(string, revertible.start, start);
|
|
264
292
|
const end = string.localReferencePositionToPosition(revertible.end);
|
|
265
293
|
const endSlidePos = getSlidePosition(string, revertible.end, end);
|
|
266
|
-
|
|
267
|
-
|
|
294
|
+
const interval = collection.getIntervalById(id);
|
|
295
|
+
if (interval !== undefined &&
|
|
296
|
+
isValidRange(startSlidePos, revertible.start.slidingPreference ?? interval.start.slidingPreference, endSlidePos, revertible.end.slidingPreference ?? interval.end.slidingPreference, string)) {
|
|
297
|
+
collection.change(id, createSequencePlace(startSlidePos, revertible.start.slidingPreference, interval.start.slidingPreference), createSequencePlace(endSlidePos, revertible.end.slidingPreference, interval.end.slidingPreference));
|
|
268
298
|
}
|
|
269
299
|
string.removeLocalReferencePosition(revertible.start);
|
|
270
300
|
string.removeLocalReferencePosition(revertible.end);
|
|
@@ -298,7 +328,7 @@ function newEndpointPosition(offset, restoredRanges, sharedString) {
|
|
|
298
328
|
const pos = newPosition(offset, restoredRanges);
|
|
299
329
|
return pos === undefined ? undefined : sharedString.getPosition(pos.segment) + pos.offset;
|
|
300
330
|
}
|
|
301
|
-
class SortedRangeSet extends SortedSet {
|
|
331
|
+
class SortedRangeSet extends merge_tree_1.SortedSet {
|
|
302
332
|
getKey(item) {
|
|
303
333
|
return item.ranges[0].segment.ordinal;
|
|
304
334
|
}
|
|
@@ -315,7 +345,7 @@ function revertLocalSequenceRemove(sharedString, revertible) {
|
|
|
315
345
|
}
|
|
316
346
|
};
|
|
317
347
|
sharedString.on("sequenceDelta", saveSegments);
|
|
318
|
-
revertMergeTreeDeltaRevertibles(sharedString, [revertible.mergeTreeRevertible]);
|
|
348
|
+
(0, merge_tree_1.revertMergeTreeDeltaRevertibles)(sharedString, [revertible.mergeTreeRevertible]);
|
|
319
349
|
sharedString.off("sequenceDelta", saveSegments);
|
|
320
350
|
revertible.intervals.forEach((intervalInfo) => {
|
|
321
351
|
const intervalCollection = sharedString.getIntervalCollection(intervalInfo.label);
|
|
@@ -326,25 +356,25 @@ function revertLocalSequenceRemove(sharedString, revertible) {
|
|
|
326
356
|
sharedString.localReferencePositionToPosition(interval.start);
|
|
327
357
|
const end = newEndpointPosition(intervalInfo.endOffset, restoredRanges, sharedString) ??
|
|
328
358
|
sharedString.localReferencePositionToPosition(interval.end);
|
|
329
|
-
if (start
|
|
330
|
-
intervalCollection.change(intervalId, start, end);
|
|
359
|
+
if (isValidRange(start, interval.start.slidingPreference, end, interval.end.slidingPreference, sharedString)) {
|
|
360
|
+
intervalCollection.change(intervalId, createSequencePlace(start, interval.start.slidingPreference), createSequencePlace(end, interval.end.slidingPreference));
|
|
331
361
|
}
|
|
332
362
|
}
|
|
333
363
|
});
|
|
334
364
|
// fix up the local references used by delete and change revertibles
|
|
335
365
|
revertible.revertibleRefs.forEach((revertibleRef) => {
|
|
336
|
-
assert(revertibleRef.revertible.event === IntervalOpType.CHANGE ||
|
|
337
|
-
revertibleRef.revertible.event === IntervalOpType.DELETE, 0x6c5 /* revertible is not delete or change */);
|
|
366
|
+
(0, core_utils_1.assert)(revertibleRef.revertible.event === intervals_1.IntervalOpType.CHANGE ||
|
|
367
|
+
revertibleRef.revertible.event === intervals_1.IntervalOpType.DELETE, 0x6c5 /* revertible is not delete or change */);
|
|
338
368
|
const pos = newPosition(revertibleRef.offset, restoredRanges);
|
|
339
369
|
if (pos !== undefined) {
|
|
340
370
|
if (revertibleRef.isStart) {
|
|
341
371
|
sharedString.removeLocalReferencePosition(revertibleRef.revertible.start);
|
|
342
|
-
const newRef = sharedString.createLocalReferencePosition(pos.segment, pos.offset, ReferenceType.StayOnRemove | ReferenceType.RangeBegin, { revertible: revertibleRef.revertible });
|
|
372
|
+
const newRef = sharedString.createLocalReferencePosition(pos.segment, pos.offset, merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeBegin, { revertible: revertibleRef.revertible }, revertibleRef.revertible.start.slidingPreference);
|
|
343
373
|
revertibleRef.revertible.start = newRef;
|
|
344
374
|
}
|
|
345
375
|
else {
|
|
346
376
|
sharedString.removeLocalReferencePosition(revertibleRef.revertible.end);
|
|
347
|
-
const newRef = sharedString.createLocalReferencePosition(pos.segment, pos.offset, ReferenceType.StayOnRemove | ReferenceType.RangeEnd, { revertible: revertibleRef.revertible });
|
|
377
|
+
const newRef = sharedString.createLocalReferencePosition(pos.segment, pos.offset, merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeEnd, { revertible: revertibleRef.revertible }, revertibleRef.revertible.end.slidingPreference);
|
|
348
378
|
revertibleRef.revertible.end = newRef;
|
|
349
379
|
}
|
|
350
380
|
}
|
|
@@ -352,38 +382,38 @@ function revertLocalSequenceRemove(sharedString, revertible) {
|
|
|
352
382
|
}
|
|
353
383
|
/**
|
|
354
384
|
* Invoke revertibles to reverse prior edits
|
|
355
|
-
*
|
|
356
|
-
* @alpha
|
|
385
|
+
* @internal
|
|
357
386
|
*/
|
|
358
|
-
|
|
387
|
+
function revertSharedStringRevertibles(sharedString, revertibles) {
|
|
359
388
|
while (revertibles.length > 0) {
|
|
360
389
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
361
390
|
const r = revertibles.pop();
|
|
362
391
|
if ("event" in r) {
|
|
363
392
|
const event = r.event;
|
|
364
393
|
switch (event) {
|
|
365
|
-
case IntervalOpType.ADD:
|
|
394
|
+
case intervals_1.IntervalOpType.ADD:
|
|
366
395
|
revertLocalAdd(sharedString, r);
|
|
367
396
|
break;
|
|
368
|
-
case IntervalOpType.DELETE:
|
|
397
|
+
case intervals_1.IntervalOpType.DELETE:
|
|
369
398
|
revertLocalDelete(sharedString, r);
|
|
370
399
|
break;
|
|
371
|
-
case IntervalOpType.CHANGE:
|
|
400
|
+
case intervals_1.IntervalOpType.CHANGE:
|
|
372
401
|
revertLocalChange(sharedString, r);
|
|
373
402
|
break;
|
|
374
|
-
case IntervalOpType.PROPERTY_CHANGED:
|
|
403
|
+
case intervals_1.IntervalOpType.PROPERTY_CHANGED:
|
|
375
404
|
revertLocalPropertyChanged(sharedString, r);
|
|
376
405
|
break;
|
|
377
|
-
case IntervalOpType.POSITION_REMOVE:
|
|
406
|
+
case intervals_1.IntervalOpType.POSITION_REMOVE:
|
|
378
407
|
revertLocalSequenceRemove(sharedString, r);
|
|
379
408
|
break;
|
|
380
409
|
default:
|
|
381
|
-
unreachableCase(event);
|
|
410
|
+
(0, core_utils_1.unreachableCase)(event);
|
|
382
411
|
}
|
|
383
412
|
}
|
|
384
413
|
else {
|
|
385
|
-
revertMergeTreeDeltaRevertibles(sharedString, [r]);
|
|
414
|
+
(0, merge_tree_1.revertMergeTreeDeltaRevertibles)(sharedString, [r]);
|
|
386
415
|
}
|
|
387
416
|
}
|
|
388
417
|
}
|
|
418
|
+
exports.revertSharedStringRevertibles = revertSharedStringRevertibles;
|
|
389
419
|
//# sourceMappingURL=revertibles.js.map
|