@fluidframework/sequence 2.1.0-276985 → 2.1.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/README.md +112 -2
- package/api-extractor/{api-extractor-lint-beta.cjs.json → api-extractor.current.json} +2 -2
- package/api-extractor/api-extractor.legacy.json +1 -1
- package/api-extractor.json +1 -1
- package/api-report/sequence.beta.api.md +0 -28
- package/api-report/sequence.legacy.alpha.api.md +0 -2
- package/api-report/sequence.legacy.public.api.md +31 -0
- package/api-report/sequence.public.api.md +0 -28
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +2 -0
- package/dist/intervalCollection.js.map +1 -1
- package/dist/legacy.d.ts +14 -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/dist/public.d.ts +13 -2
- package/dist/revertibles.d.ts.map +1 -1
- package/dist/revertibles.js +6 -0
- package/dist/revertibles.js.map +1 -1
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +4 -0
- package/dist/sequence.js.map +1 -1
- package/dist/sequenceDeltaEvent.d.ts.map +1 -1
- package/dist/sequenceDeltaEvent.js +8 -2
- package/dist/sequenceDeltaEvent.js.map +1 -1
- package/internal.d.ts +1 -1
- package/legacy.d.ts +1 -1
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +2 -0
- package/lib/intervalCollection.js.map +1 -1
- package/lib/legacy.d.ts +14 -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/lib/public.d.ts +13 -2
- package/lib/revertibles.d.ts.map +1 -1
- package/lib/revertibles.js +6 -0
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence.d.ts.map +1 -1
- package/lib/sequence.js +4 -0
- package/lib/sequence.js.map +1 -1
- package/lib/sequenceDeltaEvent.d.ts.map +1 -1
- package/lib/sequenceDeltaEvent.js +8 -2
- package/lib/sequenceDeltaEvent.js.map +1 -1
- package/package.json +44 -51
- package/src/intervalCollection.ts +3 -1
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +9 -3
- package/src/sequence.ts +6 -2
- package/src/sequenceDeltaEvent.ts +6 -2
- package/tsconfig.json +0 -1
- package/api-extractor/api-extractor-lint-beta.esm.json +0 -5
- package/beta.d.ts +0 -11
- package/dist/beta.d.ts +0 -12
- package/lib/beta.d.ts +0 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequenceDeltaEvent.js","sourceRoot":"","sources":["../src/sequenceDeltaEvent.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\t// eslint-disable-next-line import/no-deprecated\n\tClient,\n\tIMergeTreeDeltaCallbackArgs,\n\tIMergeTreeDeltaOpArgs,\n\tIMergeTreeMaintenanceCallbackArgs,\n\tISegment,\n\tMergeTreeDeltaOperationType,\n\tMergeTreeDeltaOperationTypes,\n\tMergeTreeMaintenanceType,\n\tPropertySet, // eslint-disable-next-line import/no-deprecated\n\tSortedSegmentSet,\n} from \"@fluidframework/merge-tree/internal\";\n\n/**\n * Base class for SequenceDeltaEvent and SequenceMaintenanceEvent.\n *\n * The properties of this object and its sub-objects represent the state of the sequence at the\n * point in time at which the operation was applied.\n * They will not take into any future modifications performed to the underlying sequence and merge tree.\n * @legacy\n * @alpha\n */\nexport abstract class SequenceEvent<\n\tTOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,\n> {\n\tpublic readonly deltaOperation: TOperation;\n\t// eslint-disable-next-line import/no-deprecated\n\tprivate readonly sortedRanges: Lazy<SortedSegmentSet<ISequenceDeltaRange<TOperation>>>;\n\tprivate readonly pFirst: Lazy<ISequenceDeltaRange<TOperation>>;\n\tprivate readonly pLast: Lazy<ISequenceDeltaRange<TOperation>>;\n\n\tconstructor(\n\t\t/**\n\t\t * Arguments reflecting the type of change that caused this event.\n\t\t */\n\t\tpublic readonly deltaArgs: IMergeTreeDeltaCallbackArgs<TOperation>,\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tprivate readonly mergeTreeClient: Client,\n\t) {\n\t\tassert(\n\t\t\tdeltaArgs.deltaSegments.length > 0,\n\t\t\t0x2d8 /* \"Empty change event should not be emitted.\" */,\n\t\t);\n\t\tthis.deltaOperation = deltaArgs.operation;\n\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tthis.sortedRanges = new Lazy<SortedSegmentSet<ISequenceDeltaRange<TOperation>>>(() => {\n\t\t\t// eslint-disable-next-line import/no-deprecated\n\t\t\tconst set = new SortedSegmentSet<ISequenceDeltaRange<TOperation>>();\n\t\t\tthis.deltaArgs.deltaSegments.forEach((delta) => {\n\t\t\t\tconst newRange: ISequenceDeltaRange<TOperation> = {\n\t\t\t\t\toperation: this.deltaArgs.operation,\n\t\t\t\t\tposition: this.mergeTreeClient.getPosition(delta.segment),\n\t\t\t\t\tpropertyDeltas: delta.propertyDeltas ?? {},\n\t\t\t\t\tsegment: delta.segment,\n\t\t\t\t};\n\t\t\t\tset.addOrUpdate(newRange);\n\t\t\t});\n\t\t\treturn set;\n\t\t});\n\n\t\tthis.pFirst = new Lazy<ISequenceDeltaRange<TOperation>>(\n\t\t\t() => this.sortedRanges.value.items[0],\n\t\t);\n\n\t\tthis.pLast = new Lazy<ISequenceDeltaRange<TOperation>>(\n\t\t\t() => this.sortedRanges.value.items[this.sortedRanges.value.size - 1],\n\t\t);\n\t}\n\n\t/**\n\t * The in-order ranges affected by this delta.\n\t * These are not necessarily contiguous.\n\t *\n\t * @remarks - If processing code doesn't care about the order of the ranges, it may instead consider using the\n\t * {@link @fluidframework/merge-tree#IMergeTreeDeltaCallbackArgs.deltaSegments|deltaSegments} field on {@link SequenceEvent.deltaArgs|deltaArgs}.\n\t */\n\tpublic get ranges(): readonly Readonly<ISequenceDeltaRange<TOperation>>[] {\n\t\treturn this.sortedRanges.value.items;\n\t}\n\n\t/**\n\t * The client id of the client that made the change which caused the delta event\n\t */\n\tpublic get clientId(): string | undefined {\n\t\treturn this.mergeTreeClient.longClientId;\n\t}\n\n\t/**\n\t * The first of the modified ranges.\n\t */\n\tpublic get first(): Readonly<ISequenceDeltaRange<TOperation>> {\n\t\treturn this.pFirst.value;\n\t}\n\n\t/**\n\t * The last of the modified ranges.\n\t */\n\tpublic get last(): Readonly<ISequenceDeltaRange<TOperation>> {\n\t\treturn this.pLast.value;\n\t}\n}\n\n/**\n * The event object returned on sequenceDelta events.\n *\n * The properties of this object and its sub-objects represent the state of the sequence at the\n * point in time at which the operation was applied.\n * They will not take into consideration any future modifications performed to the underlying sequence and merge tree.\n *\n * For group ops, each op will get its own event, and the group op property will be set on the op args.\n *\n * Ops may get multiple events. For instance, an insert-replace will get a remove then an insert event.\n * @legacy\n * @alpha\n */\nexport class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {\n\t/**\n\t * Whether the event was caused by a locally-made change.\n\t */\n\tpublic readonly isLocal: boolean;\n\n\tconstructor(\n\t\tpublic readonly opArgs: IMergeTreeDeltaOpArgs,\n\t\tdeltaArgs: IMergeTreeDeltaCallbackArgs,\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tmergeTreeClient: Client,\n\t) {\n\t\tsuper(deltaArgs, mergeTreeClient);\n\t\tthis.isLocal = opArgs.sequencedMessage === undefined;\n\t}\n}\n\n/**\n * The event object returned on maintenance events.\n *\n * The properties of this object and its sub-objects represent the state of the sequence at the\n * point in time at which the operation was applied.\n * They will not take into consideration any future modifications performed to the underlying sequence and merge tree.\n * @legacy\n * @alpha\n */\nexport class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {\n\tconstructor(\n\t\t/**\n\t\t * Defined iff `deltaArgs.operation` is {@link @fluidframework/merge-tree#MergeTreeMaintenanceType.ACKNOWLEDGED|MergeTreeMaintenanceType.ACKNOWLEDGED}.\n\t\t *\n\t\t * In that case, this argument provides information about the change which was acknowledged.\n\t\t */\n\t\tpublic readonly opArgs: IMergeTreeDeltaOpArgs | undefined,\n\t\tdeltaArgs: IMergeTreeMaintenanceCallbackArgs,\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tmergeTreeClient: Client,\n\t) {\n\t\tsuper(deltaArgs, mergeTreeClient);\n\t}\n}\n\n/**\n * A range that has changed corresponding to a segment modification.\n * @legacy\n * @alpha\n */\nexport interface ISequenceDeltaRange<\n\tTOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,\n> {\n\t/**\n\t * The type of operation that changed this range.\n\t *\n\t * @remarks Consuming code should typically compare this to the enum values defined in\n\t * `MergeTreeDeltaOperationTypes`.\n\t */\n\toperation: TOperation;\n\n\t/**\n\t * The index of the start of the range.\n\t */\n\tposition: number;\n\n\t/**\n\t * The segment that corresponds to the range.\n\t */\n\tsegment: ISegment;\n\n\t/**\n\t * Deltas object which contains all modified properties with their previous values.\n\t * Since `undefined` doesn't survive a round-trip through JSON serialization, the old value being absent\n\t * is instead encoded with `null`.\n\t *\n\t * @remarks This object is motivated by undo/redo scenarios, and provides a convenient \"inverse op\" to apply to\n\t * undo a property change.\n\t *\n\t * @example\n\t *\n\t * If a segment initially had properties `{ foo: \"1\", bar: 2 }` and it was annotated with\n\t * `{ foo: 3, baz: 5 }`, the corresponding event would have a `propertyDeltas` of `{ foo: \"1\", baz: null }`.\n\t */\n\tpropertyDeltas: PropertySet;\n}\n\nclass Lazy<T> {\n\tprivate pValue: T | undefined;\n\tprivate pEvaluated: boolean;\n\tconstructor(private readonly valueGenerator: () => T) {\n\t\tthis.pEvaluated = false;\n\t}\n\n\tpublic get evaluated(): boolean {\n\t\treturn this.pEvaluated;\n\t}\n\n\tpublic get value(): T {\n\t\tif (!this.pEvaluated) {\n\t\t\tthis.pEvaluated = true;\n\t\t\tthis.pValue = this.valueGenerator();\n\t\t}\n\t\treturn this.pValue as T;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sequenceDeltaEvent.js","sourceRoot":"","sources":["../src/sequenceDeltaEvent.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\t// eslint-disable-next-line import/no-deprecated\n\tClient,\n\tIMergeTreeDeltaCallbackArgs,\n\tIMergeTreeDeltaOpArgs,\n\tIMergeTreeMaintenanceCallbackArgs,\n\tISegment,\n\tMergeTreeDeltaOperationType,\n\tMergeTreeDeltaOperationTypes,\n\tMergeTreeMaintenanceType,\n\tPropertySet, // eslint-disable-next-line import/no-deprecated\n\tSortedSegmentSet,\n} from \"@fluidframework/merge-tree/internal\";\n\n/**\n * Base class for SequenceDeltaEvent and SequenceMaintenanceEvent.\n *\n * The properties of this object and its sub-objects represent the state of the sequence at the\n * point in time at which the operation was applied.\n * They will not take into any future modifications performed to the underlying sequence and merge tree.\n * @legacy\n * @alpha\n */\nexport abstract class SequenceEvent<\n\tTOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,\n> {\n\tpublic readonly deltaOperation: TOperation;\n\t// eslint-disable-next-line import/no-deprecated\n\tprivate readonly sortedRanges: Lazy<SortedSegmentSet<ISequenceDeltaRange<TOperation>>>;\n\tprivate readonly pFirst: Lazy<ISequenceDeltaRange<TOperation>>;\n\tprivate readonly pLast: Lazy<ISequenceDeltaRange<TOperation>>;\n\n\tconstructor(\n\t\t/**\n\t\t * Arguments reflecting the type of change that caused this event.\n\t\t */\n\t\tpublic readonly deltaArgs: IMergeTreeDeltaCallbackArgs<TOperation>,\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tprivate readonly mergeTreeClient: Client,\n\t) {\n\t\tassert(\n\t\t\tdeltaArgs.deltaSegments.length > 0,\n\t\t\t0x2d8 /* \"Empty change event should not be emitted.\" */,\n\t\t);\n\t\tthis.deltaOperation = deltaArgs.operation;\n\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tthis.sortedRanges = new Lazy<SortedSegmentSet<ISequenceDeltaRange<TOperation>>>(() => {\n\t\t\t// eslint-disable-next-line import/no-deprecated\n\t\t\tconst set = new SortedSegmentSet<ISequenceDeltaRange<TOperation>>();\n\t\t\tthis.deltaArgs.deltaSegments.forEach((delta) => {\n\t\t\t\tconst newRange: ISequenceDeltaRange<TOperation> = {\n\t\t\t\t\toperation: this.deltaArgs.operation,\n\t\t\t\t\tposition: this.mergeTreeClient.getPosition(delta.segment),\n\t\t\t\t\tpropertyDeltas: delta.propertyDeltas ?? {},\n\t\t\t\t\tsegment: delta.segment,\n\t\t\t\t};\n\t\t\t\tset.addOrUpdate(newRange);\n\t\t\t});\n\t\t\treturn set;\n\t\t});\n\n\t\tthis.pFirst = new Lazy<ISequenceDeltaRange<TOperation>>(\n\t\t\t// TODO Non null asserting, why is this not null?\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t() => this.sortedRanges.value.items[0]!,\n\t\t);\n\n\t\tthis.pLast = new Lazy<ISequenceDeltaRange<TOperation>>(\n\t\t\t// TODO Non null asserting, why is this not null?\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t() => this.sortedRanges.value.items[this.sortedRanges.value.size - 1]!,\n\t\t);\n\t}\n\n\t/**\n\t * The in-order ranges affected by this delta.\n\t * These are not necessarily contiguous.\n\t *\n\t * @remarks - If processing code doesn't care about the order of the ranges, it may instead consider using the\n\t * {@link @fluidframework/merge-tree#IMergeTreeDeltaCallbackArgs.deltaSegments|deltaSegments} field on {@link SequenceEvent.deltaArgs|deltaArgs}.\n\t */\n\tpublic get ranges(): readonly Readonly<ISequenceDeltaRange<TOperation>>[] {\n\t\treturn this.sortedRanges.value.items;\n\t}\n\n\t/**\n\t * The client id of the client that made the change which caused the delta event\n\t */\n\tpublic get clientId(): string | undefined {\n\t\treturn this.mergeTreeClient.longClientId;\n\t}\n\n\t/**\n\t * The first of the modified ranges.\n\t */\n\tpublic get first(): Readonly<ISequenceDeltaRange<TOperation>> {\n\t\treturn this.pFirst.value;\n\t}\n\n\t/**\n\t * The last of the modified ranges.\n\t */\n\tpublic get last(): Readonly<ISequenceDeltaRange<TOperation>> {\n\t\treturn this.pLast.value;\n\t}\n}\n\n/**\n * The event object returned on sequenceDelta events.\n *\n * The properties of this object and its sub-objects represent the state of the sequence at the\n * point in time at which the operation was applied.\n * They will not take into consideration any future modifications performed to the underlying sequence and merge tree.\n *\n * For group ops, each op will get its own event, and the group op property will be set on the op args.\n *\n * Ops may get multiple events. For instance, an insert-replace will get a remove then an insert event.\n * @legacy\n * @alpha\n */\nexport class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {\n\t/**\n\t * Whether the event was caused by a locally-made change.\n\t */\n\tpublic readonly isLocal: boolean;\n\n\tconstructor(\n\t\tpublic readonly opArgs: IMergeTreeDeltaOpArgs,\n\t\tdeltaArgs: IMergeTreeDeltaCallbackArgs,\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tmergeTreeClient: Client,\n\t) {\n\t\tsuper(deltaArgs, mergeTreeClient);\n\t\tthis.isLocal = opArgs.sequencedMessage === undefined;\n\t}\n}\n\n/**\n * The event object returned on maintenance events.\n *\n * The properties of this object and its sub-objects represent the state of the sequence at the\n * point in time at which the operation was applied.\n * They will not take into consideration any future modifications performed to the underlying sequence and merge tree.\n * @legacy\n * @alpha\n */\nexport class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {\n\tconstructor(\n\t\t/**\n\t\t * Defined iff `deltaArgs.operation` is {@link @fluidframework/merge-tree#MergeTreeMaintenanceType.ACKNOWLEDGED|MergeTreeMaintenanceType.ACKNOWLEDGED}.\n\t\t *\n\t\t * In that case, this argument provides information about the change which was acknowledged.\n\t\t */\n\t\tpublic readonly opArgs: IMergeTreeDeltaOpArgs | undefined,\n\t\tdeltaArgs: IMergeTreeMaintenanceCallbackArgs,\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tmergeTreeClient: Client,\n\t) {\n\t\tsuper(deltaArgs, mergeTreeClient);\n\t}\n}\n\n/**\n * A range that has changed corresponding to a segment modification.\n * @legacy\n * @alpha\n */\nexport interface ISequenceDeltaRange<\n\tTOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,\n> {\n\t/**\n\t * The type of operation that changed this range.\n\t *\n\t * @remarks Consuming code should typically compare this to the enum values defined in\n\t * `MergeTreeDeltaOperationTypes`.\n\t */\n\toperation: TOperation;\n\n\t/**\n\t * The index of the start of the range.\n\t */\n\tposition: number;\n\n\t/**\n\t * The segment that corresponds to the range.\n\t */\n\tsegment: ISegment;\n\n\t/**\n\t * Deltas object which contains all modified properties with their previous values.\n\t * Since `undefined` doesn't survive a round-trip through JSON serialization, the old value being absent\n\t * is instead encoded with `null`.\n\t *\n\t * @remarks This object is motivated by undo/redo scenarios, and provides a convenient \"inverse op\" to apply to\n\t * undo a property change.\n\t *\n\t * @example\n\t *\n\t * If a segment initially had properties `{ foo: \"1\", bar: 2 }` and it was annotated with\n\t * `{ foo: 3, baz: 5 }`, the corresponding event would have a `propertyDeltas` of `{ foo: \"1\", baz: null }`.\n\t */\n\tpropertyDeltas: PropertySet;\n}\n\nclass Lazy<T> {\n\tprivate pValue: T | undefined;\n\tprivate pEvaluated: boolean;\n\tconstructor(private readonly valueGenerator: () => T) {\n\t\tthis.pEvaluated = false;\n\t}\n\n\tpublic get evaluated(): boolean {\n\t\treturn this.pEvaluated;\n\t}\n\n\tpublic get value(): T {\n\t\tif (!this.pEvaluated) {\n\t\t\tthis.pEvaluated = true;\n\t\t\tthis.pValue = this.valueGenerator();\n\t\t}\n\t\treturn this.pValue as T;\n\t}\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/sequence",
|
|
3
|
-
"version": "2.1.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Distributed sequence",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -23,26 +23,6 @@
|
|
|
23
23
|
"default": "./dist/index.js"
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
|
-
"./beta": {
|
|
27
|
-
"import": {
|
|
28
|
-
"types": "./lib/beta.d.ts",
|
|
29
|
-
"default": "./lib/index.js"
|
|
30
|
-
},
|
|
31
|
-
"require": {
|
|
32
|
-
"types": "./dist/beta.d.ts",
|
|
33
|
-
"default": "./dist/index.js"
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"./internal/test/intervalCollection": {
|
|
37
|
-
"import": {
|
|
38
|
-
"types": "./lib/intervalCollection.d.ts",
|
|
39
|
-
"default": "./lib/intervalCollection.js"
|
|
40
|
-
},
|
|
41
|
-
"require": {
|
|
42
|
-
"types": "./dist/intervalCollection.d.ts",
|
|
43
|
-
"default": "./dist/intervalCollection.js"
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
26
|
"./legacy": {
|
|
47
27
|
"import": {
|
|
48
28
|
"types": "./lib/legacy.d.ts",
|
|
@@ -62,6 +42,16 @@
|
|
|
62
42
|
"types": "./dist/index.d.ts",
|
|
63
43
|
"default": "./dist/index.js"
|
|
64
44
|
}
|
|
45
|
+
},
|
|
46
|
+
"./internal/test/intervalCollection": {
|
|
47
|
+
"import": {
|
|
48
|
+
"types": "./lib/intervalCollection.d.ts",
|
|
49
|
+
"default": "./lib/intervalCollection.js"
|
|
50
|
+
},
|
|
51
|
+
"require": {
|
|
52
|
+
"types": "./dist/intervalCollection.d.ts",
|
|
53
|
+
"default": "./dist/intervalCollection.js"
|
|
54
|
+
}
|
|
65
55
|
}
|
|
66
56
|
},
|
|
67
57
|
"main": "lib/index.js",
|
|
@@ -87,33 +77,33 @@
|
|
|
87
77
|
"temp-directory": "nyc/.nyc_output"
|
|
88
78
|
},
|
|
89
79
|
"dependencies": {
|
|
90
|
-
"@fluid-internal/client-utils": "2.1.0
|
|
91
|
-
"@fluidframework/core-interfaces": "2.1.0
|
|
92
|
-
"@fluidframework/core-utils": "2.1.0
|
|
93
|
-
"@fluidframework/datastore-definitions": "2.1.0
|
|
94
|
-
"@fluidframework/driver-definitions": "2.1.0
|
|
95
|
-
"@fluidframework/merge-tree": "2.1.0
|
|
96
|
-
"@fluidframework/runtime-definitions": "2.1.0
|
|
97
|
-
"@fluidframework/runtime-utils": "2.1.0
|
|
98
|
-
"@fluidframework/shared-object-base": "2.1.0
|
|
99
|
-
"@fluidframework/telemetry-utils": "2.1.0
|
|
80
|
+
"@fluid-internal/client-utils": "~2.1.0",
|
|
81
|
+
"@fluidframework/core-interfaces": "~2.1.0",
|
|
82
|
+
"@fluidframework/core-utils": "~2.1.0",
|
|
83
|
+
"@fluidframework/datastore-definitions": "~2.1.0",
|
|
84
|
+
"@fluidframework/driver-definitions": "~2.1.0",
|
|
85
|
+
"@fluidframework/merge-tree": "~2.1.0",
|
|
86
|
+
"@fluidframework/runtime-definitions": "~2.1.0",
|
|
87
|
+
"@fluidframework/runtime-utils": "~2.1.0",
|
|
88
|
+
"@fluidframework/shared-object-base": "~2.1.0",
|
|
89
|
+
"@fluidframework/telemetry-utils": "~2.1.0",
|
|
100
90
|
"double-ended-queue": "^2.1.0-0",
|
|
101
91
|
"uuid": "^9.0.0"
|
|
102
92
|
},
|
|
103
93
|
"devDependencies": {
|
|
104
94
|
"@arethetypeswrong/cli": "^0.15.2",
|
|
105
|
-
"@biomejs/biome": "
|
|
106
|
-
"@fluid-internal/mocha-test-setup": "2.1.0
|
|
107
|
-
"@fluid-private/stochastic-test-utils": "2.1.0
|
|
108
|
-
"@fluid-private/test-dds-utils": "2.1.0
|
|
95
|
+
"@biomejs/biome": "~1.8.3",
|
|
96
|
+
"@fluid-internal/mocha-test-setup": "~2.1.0",
|
|
97
|
+
"@fluid-private/stochastic-test-utils": "~2.1.0",
|
|
98
|
+
"@fluid-private/test-dds-utils": "~2.1.0",
|
|
109
99
|
"@fluid-tools/benchmark": "^0.48.0",
|
|
110
|
-
"@fluid-tools/build-cli": "^0.
|
|
100
|
+
"@fluid-tools/build-cli": "^0.41.0",
|
|
111
101
|
"@fluidframework/build-common": "^2.0.3",
|
|
112
|
-
"@fluidframework/build-tools": "^0.
|
|
113
|
-
"@fluidframework/container-definitions": "2.1.0
|
|
102
|
+
"@fluidframework/build-tools": "^0.41.0",
|
|
103
|
+
"@fluidframework/container-definitions": "~2.1.0",
|
|
114
104
|
"@fluidframework/eslint-config-fluid": "^5.3.0",
|
|
115
|
-
"@fluidframework/sequence-previous": "npm:@fluidframework/sequence@2.0.0
|
|
116
|
-
"@fluidframework/test-runtime-utils": "2.1.0
|
|
105
|
+
"@fluidframework/sequence-previous": "npm:@fluidframework/sequence@2.0.0",
|
|
106
|
+
"@fluidframework/test-runtime-utils": "~2.1.0",
|
|
117
107
|
"@microsoft/api-extractor": "^7.45.1",
|
|
118
108
|
"@types/diff": "^3.5.1",
|
|
119
109
|
"@types/double-ended-queue": "^2.1.0",
|
|
@@ -146,8 +136,11 @@
|
|
|
146
136
|
},
|
|
147
137
|
"typeValidation": {
|
|
148
138
|
"broken": {
|
|
149
|
-
"
|
|
139
|
+
"Interface_SequenceOptions": {
|
|
150
140
|
"backCompat": false
|
|
141
|
+
},
|
|
142
|
+
"Variable_SharedString": {
|
|
143
|
+
"forwardCompat": false
|
|
151
144
|
}
|
|
152
145
|
}
|
|
153
146
|
},
|
|
@@ -156,36 +149,36 @@
|
|
|
156
149
|
"api-extractor:commonjs": "flub generate entrypoints --outDir ./dist",
|
|
157
150
|
"api-extractor:esnext": "flub generate entrypoints --outDir ./lib --node10TypeCompat",
|
|
158
151
|
"build": "fluid-build . --task build",
|
|
152
|
+
"build:api-reports": "concurrently \"npm:build:api-reports:*\"",
|
|
153
|
+
"build:api-reports:current": "api-extractor run --local --config api-extractor/api-extractor.current.json",
|
|
154
|
+
"build:api-reports:legacy": "api-extractor run --local --config api-extractor/api-extractor.legacy.json",
|
|
159
155
|
"build:commonjs": "fluid-build . --task commonjs",
|
|
160
156
|
"build:compile": "fluid-build . --task compile",
|
|
161
|
-
"build:docs": "
|
|
162
|
-
"build:docs:current": "api-extractor run --local",
|
|
163
|
-
"build:docs:legacy": "api-extractor run --local --config api-extractor/api-extractor.legacy.json",
|
|
157
|
+
"build:docs": "api-extractor run --local",
|
|
164
158
|
"build:esnext": "tsc --project ./tsconfig.json",
|
|
165
159
|
"build:genver": "gen-version",
|
|
166
160
|
"build:test": "npm run build:test:esm && npm run build:test:cjs",
|
|
167
161
|
"build:test:cjs": "fluid-tsc commonjs --project ./src/test/tsconfig.cjs.json",
|
|
168
162
|
"build:test:esm": "tsc --project ./src/test/tsconfig.json",
|
|
169
163
|
"check:are-the-types-wrong": "attw --pack . --exclude-entrypoints ./internal/test/intervalCollection",
|
|
170
|
-
"check:biome": "biome check .
|
|
164
|
+
"check:biome": "biome check .",
|
|
171
165
|
"check:exports": "concurrently \"npm:check:exports:*\"",
|
|
172
166
|
"check:exports:bundle-release-tags": "api-extractor run --config api-extractor/api-extractor-lint-bundle.json",
|
|
173
|
-
"check:exports:cjs:beta": "api-extractor run --config api-extractor/api-extractor-lint-beta.cjs.json",
|
|
174
167
|
"check:exports:cjs:legacy": "api-extractor run --config api-extractor/api-extractor-lint-legacy.cjs.json",
|
|
175
168
|
"check:exports:cjs:public": "api-extractor run --config api-extractor/api-extractor-lint-public.cjs.json",
|
|
176
|
-
"check:exports:esm:beta": "api-extractor run --config api-extractor/api-extractor-lint-beta.esm.json",
|
|
177
169
|
"check:exports:esm:legacy": "api-extractor run --config api-extractor/api-extractor-lint-legacy.esm.json",
|
|
178
170
|
"check:exports:esm:public": "api-extractor run --config api-extractor/api-extractor-lint-public.esm.json",
|
|
179
171
|
"check:format": "npm run check:biome",
|
|
180
172
|
"check:prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
|
|
181
|
-
"ci:build:
|
|
182
|
-
"ci:build:
|
|
183
|
-
"ci:build:
|
|
173
|
+
"ci:build:api-reports": "concurrently \"npm:ci:build:api-reports:*\"",
|
|
174
|
+
"ci:build:api-reports:current": "api-extractor run --config api-extractor/api-extractor.current.json",
|
|
175
|
+
"ci:build:api-reports:legacy": "api-extractor run --config api-extractor/api-extractor.legacy.json",
|
|
176
|
+
"ci:build:docs": "api-extractor run",
|
|
184
177
|
"clean": "rimraf --glob dist lib \"*.d.ts\" \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
|
|
185
178
|
"eslint": "eslint --format stylish src",
|
|
186
179
|
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
|
|
187
180
|
"format": "npm run format:biome",
|
|
188
|
-
"format:biome": "biome check . --
|
|
181
|
+
"format:biome": "biome check . --write",
|
|
189
182
|
"format:prettier": "prettier --write . --cache --ignore-path ../../../.prettierignore",
|
|
190
183
|
"lint": "fluid-build . --task lint",
|
|
191
184
|
"lint:fix": "fluid-build . --task eslint:fix --task format",
|
|
@@ -668,7 +668,9 @@ class IntervalCollectionIterator<TInterval extends ISerializableInterval>
|
|
|
668
668
|
public next(): IteratorResult<TInterval> {
|
|
669
669
|
if (this.index < this.results.length) {
|
|
670
670
|
return {
|
|
671
|
-
|
|
671
|
+
// TODO Non null asserting, why is this not null?
|
|
672
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
673
|
+
value: this.results[this.index++]!,
|
|
672
674
|
done: false,
|
|
673
675
|
};
|
|
674
676
|
}
|
package/src/packageVersion.ts
CHANGED
package/src/revertibles.ts
CHANGED
|
@@ -323,7 +323,9 @@ export function appendSharedStringDeltaToRevertibles(
|
|
|
323
323
|
event: IntervalOpType.POSITION_REMOVE,
|
|
324
324
|
intervals: [],
|
|
325
325
|
revertibleRefs,
|
|
326
|
-
|
|
326
|
+
// TODO Non null asserting, why is this not null?
|
|
327
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
328
|
+
mergeTreeRevertible: removeRevertibles[0]!,
|
|
327
329
|
};
|
|
328
330
|
|
|
329
331
|
// add an interval for each startInterval, accounting for any corresponding endIntervals
|
|
@@ -334,7 +336,9 @@ export function appendSharedStringDeltaToRevertibles(
|
|
|
334
336
|
});
|
|
335
337
|
let endOffset: number | undefined;
|
|
336
338
|
if (endIntervalIndex !== -1) {
|
|
337
|
-
|
|
339
|
+
// TODO Non null asserting, why is this not null?
|
|
340
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
341
|
+
endOffset = endIntervals[endIntervalIndex]!.offset;
|
|
338
342
|
endIntervals.splice(endIntervalIndex, 1);
|
|
339
343
|
}
|
|
340
344
|
|
|
@@ -584,7 +588,9 @@ interface RangeInfo {
|
|
|
584
588
|
// eslint-disable-next-line import/no-deprecated
|
|
585
589
|
class SortedRangeSet extends SortedSet<RangeInfo, string> {
|
|
586
590
|
protected getKey(item: RangeInfo): string {
|
|
587
|
-
|
|
591
|
+
// TODO Non null asserting, why is this not null?
|
|
592
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
593
|
+
return item.ranges[0]!.segment.ordinal;
|
|
588
594
|
}
|
|
589
595
|
}
|
|
590
596
|
|
package/src/sequence.ts
CHANGED
|
@@ -941,7 +941,9 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
941
941
|
// Do GC every once in a while...
|
|
942
942
|
if (
|
|
943
943
|
this.messagesSinceMSNChange.length > 20 &&
|
|
944
|
-
this
|
|
944
|
+
// TODO Non null asserting, why is this not null?
|
|
945
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
946
|
+
this.messagesSinceMSNChange[20]!.sequenceNumber < message.minimumSequenceNumber
|
|
945
947
|
) {
|
|
946
948
|
this.processMinSequenceNumberChanged(message.minimumSequenceNumber);
|
|
947
949
|
}
|
|
@@ -951,7 +953,9 @@ export abstract class SharedSegmentSequence<T extends ISegment>
|
|
|
951
953
|
private processMinSequenceNumberChanged(minSeq: number) {
|
|
952
954
|
let index = 0;
|
|
953
955
|
for (; index < this.messagesSinceMSNChange.length; index++) {
|
|
954
|
-
|
|
956
|
+
// TODO Non null asserting, why is this not null?
|
|
957
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
958
|
+
if (this.messagesSinceMSNChange[index]!.sequenceNumber > minSeq) {
|
|
955
959
|
break;
|
|
956
960
|
}
|
|
957
961
|
}
|
|
@@ -67,11 +67,15 @@ export abstract class SequenceEvent<
|
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
this.pFirst = new Lazy<ISequenceDeltaRange<TOperation>>(
|
|
70
|
-
|
|
70
|
+
// TODO Non null asserting, why is this not null?
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
72
|
+
() => this.sortedRanges.value.items[0]!,
|
|
71
73
|
);
|
|
72
74
|
|
|
73
75
|
this.pLast = new Lazy<ISequenceDeltaRange<TOperation>>(
|
|
74
|
-
|
|
76
|
+
// TODO Non null asserting, why is this not null?
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
78
|
+
() => this.sortedRanges.value.items[this.sortedRanges.value.size - 1]!,
|
|
75
79
|
);
|
|
76
80
|
}
|
|
77
81
|
|
package/tsconfig.json
CHANGED
package/beta.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/*
|
|
7
|
-
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
8
|
-
* Generated by "flub generate entrypoints" in @fluidframework/build-tools.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
export * from "./lib/beta.js";
|
package/dist/beta.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/*
|
|
7
|
-
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
8
|
-
* Generated by "flub generate entrypoints" in @fluidframework/build-tools.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
export {}
|
|
12
|
-
|
package/lib/beta.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/*
|
|
7
|
-
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
8
|
-
* Generated by "flub generate entrypoints" in @fluidframework/build-tools.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
export {}
|
|
12
|
-
|