@fluidframework/merge-tree 2.10.0-306579 → 2.10.0-307060
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/api-report/merge-tree.legacy.alpha.api.md +27 -0
- package/dist/collections/index.d.ts +1 -1
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/index.js +2 -1
- package/dist/collections/index.js.map +1 -1
- package/dist/collections/list.d.ts +7 -0
- package/dist/collections/list.d.ts.map +1 -1
- package/dist/collections/list.js +27 -1
- package/dist/collections/list.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +2 -0
- package/dist/mergeTree.d.ts.map +1 -1
- package/dist/mergeTree.js +10 -9
- package/dist/mergeTree.js.map +1 -1
- package/dist/ops.d.ts +36 -0
- package/dist/ops.d.ts.map +1 -1
- package/dist/ops.js.map +1 -1
- package/dist/segmentPropertiesManager.d.ts +81 -8
- package/dist/segmentPropertiesManager.d.ts.map +1 -1
- package/dist/segmentPropertiesManager.js +211 -61
- package/dist/segmentPropertiesManager.js.map +1 -1
- package/dist/test/propertyManager.spec.d.ts +6 -0
- package/dist/test/propertyManager.spec.d.ts.map +1 -0
- package/dist/test/propertyManager.spec.js +156 -0
- package/dist/test/propertyManager.spec.js.map +1 -0
- package/dist/zamboni.d.ts.map +1 -1
- package/dist/zamboni.js +1 -0
- package/dist/zamboni.js.map +1 -1
- package/lib/collections/index.d.ts +1 -1
- package/lib/collections/index.d.ts.map +1 -1
- package/lib/collections/index.js +1 -1
- package/lib/collections/index.js.map +1 -1
- package/lib/collections/list.d.ts +7 -0
- package/lib/collections/list.d.ts.map +1 -1
- package/lib/collections/list.js +25 -0
- package/lib/collections/list.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +2 -0
- package/lib/mergeTree.d.ts.map +1 -1
- package/lib/mergeTree.js +10 -9
- package/lib/mergeTree.js.map +1 -1
- package/lib/ops.d.ts +36 -0
- package/lib/ops.d.ts.map +1 -1
- package/lib/ops.js.map +1 -1
- package/lib/segmentPropertiesManager.d.ts +81 -8
- package/lib/segmentPropertiesManager.d.ts.map +1 -1
- package/lib/segmentPropertiesManager.js +212 -62
- package/lib/segmentPropertiesManager.js.map +1 -1
- package/lib/test/propertyManager.spec.d.ts +6 -0
- package/lib/test/propertyManager.spec.d.ts.map +1 -0
- package/lib/test/propertyManager.spec.js +154 -0
- package/lib/test/propertyManager.spec.js.map +1 -0
- package/lib/zamboni.d.ts.map +1 -1
- package/lib/zamboni.js +1 -0
- package/lib/zamboni.js.map +1 -1
- package/package.json +22 -15
- package/src/collections/index.ts +7 -1
- package/src/collections/list.ts +29 -0
- package/src/index.ts +3 -0
- package/src/mergeTree.ts +16 -11
- package/src/ops.ts +38 -0
- package/src/segmentPropertiesManager.ts +277 -88
- package/src/zamboni.ts +3 -0
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
6
|
|
|
7
|
+
// @alpha
|
|
8
|
+
export interface AdjustParams {
|
|
9
|
+
delta: number;
|
|
10
|
+
max?: number | undefined;
|
|
11
|
+
min?: number | undefined;
|
|
12
|
+
}
|
|
13
|
+
|
|
7
14
|
// @alpha
|
|
8
15
|
export function appendToMergeTreeDeltaRevertibles(deltaArgs: IMergeTreeDeltaCallbackArgs, revertibles: MergeTreeDeltaRevertible[]): void;
|
|
9
16
|
|
|
@@ -161,8 +168,28 @@ export interface IMergeNodeCommon {
|
|
|
161
168
|
ordinal: string;
|
|
162
169
|
}
|
|
163
170
|
|
|
171
|
+
// @alpha (undocumented)
|
|
172
|
+
export interface IMergeTreeAnnotateAdjustMsg extends IMergeTreeDelta {
|
|
173
|
+
// (undocumented)
|
|
174
|
+
adjust: Record<string, AdjustParams>;
|
|
175
|
+
// (undocumented)
|
|
176
|
+
pos1?: number;
|
|
177
|
+
// (undocumented)
|
|
178
|
+
pos2?: number;
|
|
179
|
+
// (undocumented)
|
|
180
|
+
props?: never;
|
|
181
|
+
// (undocumented)
|
|
182
|
+
relativePos1?: undefined;
|
|
183
|
+
// (undocumented)
|
|
184
|
+
relativePos2?: undefined;
|
|
185
|
+
// (undocumented)
|
|
186
|
+
type: typeof MergeTreeDeltaType.ANNOTATE;
|
|
187
|
+
}
|
|
188
|
+
|
|
164
189
|
// @alpha (undocumented)
|
|
165
190
|
export interface IMergeTreeAnnotateMsg extends IMergeTreeDelta {
|
|
191
|
+
// (undocumented)
|
|
192
|
+
adjust?: never;
|
|
166
193
|
// (undocumented)
|
|
167
194
|
pos1?: number;
|
|
168
195
|
// (undocumented)
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
export { DoublyLinkedList, ListNode, ListNodeRange, walkList } from "./list.js";
|
|
5
|
+
export { DoublyLinkedList, ListNode, ListNodeRange, walkList, iterateListValuesWhile, } from "./list.js";
|
|
6
6
|
export { ConflictAction, Dictionary, IRBAugmentation, IRBMatcher, KeyComparer, Property, PropertyAction, QProperty, RBColor, RBNode, RBNodeActions, RedBlackTree, SortedDictionary, } from "./rbTree.js";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,sBAAsB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,cAAc,EACd,UAAU,EACV,eAAe,EACf,UAAU,EACV,WAAW,EACX,QAAQ,EACR,cAAc,EACd,SAAS,EACT,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,gBAAgB,GAChB,MAAM,aAAa,CAAC"}
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.RedBlackTree = exports.RBColor = exports.walkList = exports.DoublyLinkedList = void 0;
|
|
7
|
+
exports.RedBlackTree = exports.RBColor = exports.iterateListValuesWhile = exports.walkList = exports.DoublyLinkedList = void 0;
|
|
8
8
|
var list_js_1 = require("./list.js");
|
|
9
9
|
Object.defineProperty(exports, "DoublyLinkedList", { enumerable: true, get: function () { return list_js_1.DoublyLinkedList; } });
|
|
10
10
|
Object.defineProperty(exports, "walkList", { enumerable: true, get: function () { return list_js_1.walkList; } });
|
|
11
|
+
Object.defineProperty(exports, "iterateListValuesWhile", { enumerable: true, get: function () { return list_js_1.iterateListValuesWhile; } });
|
|
11
12
|
var rbTree_js_1 = require("./rbTree.js");
|
|
12
13
|
Object.defineProperty(exports, "RBColor", { enumerable: true, get: function () { return rbTree_js_1.RBColor; } });
|
|
13
14
|
Object.defineProperty(exports, "RedBlackTree", { enumerable: true, get: function () { return rbTree_js_1.RedBlackTree; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qCAMmB;AALlB,2GAAA,gBAAgB,OAAA;AAGhB,mGAAA,QAAQ,OAAA;AACR,iHAAA,sBAAsB,OAAA;AAEvB,yCAcqB;AALpB,oGAAA,OAAO,OAAA;AAGP,yGAAA,YAAY,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tDoublyLinkedList,\n\tListNode,\n\tListNodeRange,\n\twalkList,\n\titerateListValuesWhile,\n} from \"./list.js\";\nexport {\n\tConflictAction,\n\tDictionary,\n\tIRBAugmentation,\n\tIRBMatcher,\n\tKeyComparer,\n\tProperty,\n\tPropertyAction,\n\tQProperty,\n\tRBColor,\n\tRBNode,\n\tRBNodeActions,\n\tRedBlackTree,\n\tSortedDictionary,\n} from \"./rbTree.js\";\n"]}
|
|
@@ -46,4 +46,11 @@ export declare class DoublyLinkedList<T> implements Iterable<ListNode<T>>, Parti
|
|
|
46
46
|
get last(): ListNode<T> | undefined;
|
|
47
47
|
}
|
|
48
48
|
export declare function walkList<T>(list: DoublyLinkedList<T>, visitor: (node: ListNode<T>) => boolean | void, start?: ListNode<T>, forward?: boolean): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Creates a lazily evaluated iterable which returns values while the predicate returns true,
|
|
51
|
+
* and stops iterating at the first value where the predicate is false.
|
|
52
|
+
* @param start - the node to start the iteration from
|
|
53
|
+
* @param includePredicate - determine if the current value be included in the iteration or stop if iteration
|
|
54
|
+
*/
|
|
55
|
+
export declare function iterateListValuesWhile<T>(start: ListNode<T> | undefined, includePredicate: (n: ListNode<T>) => boolean): Iterable<T>;
|
|
49
56
|
//# sourceMappingURL=list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/collections/list.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/collections/list.ts"],"names":[],"mappings":"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"}
|
package/dist/collections/list.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.walkList = exports.DoublyLinkedList = void 0;
|
|
7
|
+
exports.iterateListValuesWhile = exports.walkList = exports.DoublyLinkedList = void 0;
|
|
8
8
|
const internal_1 = require("@fluidframework/telemetry-utils/internal");
|
|
9
9
|
class HeadNode {
|
|
10
10
|
constructor(list) {
|
|
@@ -226,4 +226,30 @@ function walkList(list, visitor, start, forward = true) {
|
|
|
226
226
|
return true;
|
|
227
227
|
}
|
|
228
228
|
exports.walkList = walkList;
|
|
229
|
+
/**
|
|
230
|
+
* Creates a lazily evaluated iterable which returns values while the predicate returns true,
|
|
231
|
+
* and stops iterating at the first value where the predicate is false.
|
|
232
|
+
* @param start - the node to start the iteration from
|
|
233
|
+
* @param includePredicate - determine if the current value be included in the iteration or stop if iteration
|
|
234
|
+
*/
|
|
235
|
+
function iterateListValuesWhile(start, includePredicate) {
|
|
236
|
+
let next = start;
|
|
237
|
+
const iterator = {
|
|
238
|
+
next: () => {
|
|
239
|
+
if (next !== undefined) {
|
|
240
|
+
const current = next;
|
|
241
|
+
next = current.next;
|
|
242
|
+
if (includePredicate(current) === true) {
|
|
243
|
+
return { value: current.data, done: false };
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return { done: true, value: undefined };
|
|
247
|
+
},
|
|
248
|
+
[Symbol.iterator]() {
|
|
249
|
+
return this;
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
return iterator;
|
|
253
|
+
}
|
|
254
|
+
exports.iterateListValuesWhile = iterateListValuesWhile;
|
|
229
255
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/collections/list.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 { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n\nexport interface ListNode<T> {\n\treadonly list: DoublyLinkedList<T> | undefined;\n\treadonly data: T;\n\treadonly next: ListNode<T> | undefined;\n\treadonly prev: ListNode<T> | undefined;\n}\n\nexport interface ListNodeRange<T> {\n\tfirst: ListNode<T>;\n\tlast: ListNode<T>;\n}\n\nclass HeadNode<T> {\n\tpublic _next: HeadNode<T> | DataNode<T> = this;\n\tpublic _prev: HeadNode<T> | DataNode<T> = this;\n\tpublic headNode: HeadNode<T> = this;\n\tprivate readonly _list?: DoublyLinkedList<T>;\n\tconstructor(list: DoublyLinkedList<T> | undefined) {\n\t\tif (list) {\n\t\t\tthis._list = list;\n\t\t}\n\t}\n\tpublic get next(): DataNode<T> | undefined {\n\t\treturn this._next === this.headNode ? undefined : (this._next as DataNode<T>);\n\t}\n\tpublic get prev(): DataNode<T> | undefined {\n\t\treturn this._prev === this.headNode ? undefined : (this._prev as DataNode<T>);\n\t}\n\tpublic get list(): DoublyLinkedList<T> | undefined {\n\t\treturn this.headNode._list;\n\t}\n}\n\n// The any is needed for use in the remove function, where the nodes are defined with a generic type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst DeadHead = new HeadNode<any>(undefined);\n\nclass DataNode<T> extends HeadNode<T> implements ListNode<T> {\n\tconstructor(\n\t\theadNode: HeadNode<T>,\n\t\tpublic readonly data: T,\n\t) {\n\t\tsuper(undefined);\n\t\tthis.headNode = headNode;\n\t}\n}\n\nfunction insertAfter<T>(node: DataNode<T> | HeadNode<T>, items: T[]): ListNodeRange<T> {\n\tlet previousNode = node;\n\tconst oldNext = previousNode._next;\n\tlet newRange: ListNodeRange<T> | undefined;\n\tfor (const n of items) {\n\t\tconst newNode = new DataNode<T>(node.headNode, n);\n\t\tif (newRange === undefined) {\n\t\t\tnewRange = { first: newNode, last: newNode };\n\t\t} else {\n\t\t\tnewRange.last = newNode;\n\t\t}\n\t\tnewNode._prev = previousNode;\n\t\tpreviousNode._next = newNode;\n\t\tpreviousNode = newNode;\n\t}\n\toldNext._prev = previousNode;\n\tpreviousNode._next = oldNext;\n\t// explicitly prevent newRange from being undefined without casting,\n\t// and without additional conditionals, as this is used in some perf critical areas.\n\t// i could have just asserted, but that throws a non-user friendly error,\n\t// so i went with a more user-friendly error, which describes the\n\t// only condition that could lead to this being undefined in the current code.\n\tif (newRange === undefined) {\n\t\tthrow new UsageError(\"items must not be empty\");\n\t}\n\treturn newRange;\n}\n\nexport class DoublyLinkedList<T>\n\timplements\n\t\tIterable<ListNode<T>>,\n\t\tPartial<ListNodeRange<T>>,\n\t\t// try to match array signature and semantics where possible\n\t\tPick<ListNode<T>[], \"pop\" | \"shift\" | \"length\" | \"includes\">\n{\n\tconstructor(values?: Iterable<T>) {\n\t\tif (values !== undefined) {\n\t\t\tthis.push(...values);\n\t\t}\n\t}\n\n\tfind(\n\t\tpredicate: (value: ListNode<T>, obj: DoublyLinkedList<T>) => unknown,\n\t): ListNode<T> | undefined {\n\t\tlet found: ListNode<T> | undefined;\n\t\twalkList(this, (node) => {\n\t\t\tif (predicate(node, this)) {\n\t\t\t\tfound = node;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\treturn found;\n\t}\n\n\tmap<U>(callbackfn: (value: ListNode<T>) => U): Iterable<U> {\n\t\tlet node = this.first;\n\t\tconst iterator: IterableIterator<U> = {\n\t\t\tnext(): IteratorResult<U> {\n\t\t\t\tif (node === undefined) {\n\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t}\n\t\t\t\tconst rtn = { value: callbackfn(node), done: false };\n\t\t\t\tnode = node.next;\n\t\t\t\treturn rtn;\n\t\t\t},\n\t\t\t[Symbol.iterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t\treturn iterator;\n\t}\n\n\tinsertAfter(preceding: ListNode<T>, ...items: T[]): ListNodeRange<T> {\n\t\tif (!this._includes(preceding)) {\n\t\t\tthrow new Error(\"preceding not in list\");\n\t\t}\n\t\tthis._len += items.length;\n\t\treturn insertAfter(preceding, items);\n\t}\n\n\tpop(): ListNode<T> | undefined {\n\t\treturn this.remove(this.last);\n\t}\n\n\tpush(...items: T[]): ListNodeRange<T> {\n\t\tthis._len += items.length;\n\t\tconst start = this.headNode._prev;\n\t\treturn insertAfter(start, items);\n\t}\n\n\t/**\n\t * Remove and return the first element\n\t */\n\tshift(): ListNode<T> | undefined {\n\t\treturn this.remove(this.first);\n\t}\n\n\t/**\n\t * Insert `items` at start of list\n\t */\n\tunshift(...items: T[]): ListNodeRange<T> {\n\t\tthis._len += items.length;\n\t\treturn insertAfter(this.headNode, items);\n\t}\n\n\t/**\n\t * Remove nodes starting at `start` until either the `end` node is reached\n\t * or until `count` nodes have been removed. Returns the removed nodes as\n\t * a separate linked list\n\t */\n\tsplice(start: ListNode<T>, countOrEnd?: ListNode<T> | number): DoublyLinkedList<T> {\n\t\tconst newList = new DoublyLinkedList<T>();\n\t\twalkList(\n\t\t\tthis,\n\t\t\t(node) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst removedNode = this._remove(node)!;\n\t\t\t\t// whats special here is we preserve the node\n\t\t\t\t// this allow looking up the old node in the new list\n\t\t\t\t// when something preserves a reference\n\t\t\t\tremovedNode.headNode = newList.headNode;\n\t\t\t\tremovedNode._next = newList.headNode;\n\t\t\t\tremovedNode._prev = newList.headNode._prev;\n\t\t\t\tnewList.headNode._prev._next = removedNode;\n\t\t\t\tnewList.headNode._prev = removedNode;\n\t\t\t\tnewList._len++;\n\t\t\t\tif (node === countOrEnd || newList.length === countOrEnd) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tstart,\n\t\t);\n\t\treturn newList;\n\t}\n\n\tpublic includes(node: ListNode<T> | undefined): node is ListNode<T> {\n\t\treturn this._includes(node);\n\t}\n\n\tprivate _includes(node: ListNode<T> | undefined): node is DataNode<T> {\n\t\treturn node instanceof DataNode && node.headNode === this.headNode;\n\t}\n\n\tprivate _remove(node: ListNode<T> | undefined): DataNode<T> | undefined {\n\t\tif (this._includes(node)) {\n\t\t\tnode._prev._next = node._next;\n\t\t\tnode._next._prev = node._prev;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tnode.headNode = node._next = node._prev = DeadHead;\n\t\t\tthis._len--;\n\t\t\treturn node;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic remove(node: ListNode<T> | undefined): ListNode<T> | undefined {\n\t\treturn this._remove(node);\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<ListNode<T>> {\n\t\tlet value = this.first;\n\t\tconst iterator: IterableIterator<ListNode<T>> = {\n\t\t\tnext(): IteratorResult<ListNode<T>> {\n\t\t\t\tif (value !== undefined) {\n\t\t\t\t\tconst rtn = { value, done: false };\n\t\t\t\t\tvalue = value.next;\n\t\t\t\t\treturn rtn;\n\t\t\t\t}\n\t\t\t\treturn { value: undefined, done: true };\n\t\t\t},\n\t\t\t[Symbol.iterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t\treturn iterator;\n\t}\n\n\tprivate _len: number = 0;\n\tprivate readonly headNode: HeadNode<T> | DataNode<T> = new HeadNode(this);\n\tpublic get length(): number {\n\t\treturn this._len;\n\t}\n\tpublic get empty(): boolean {\n\t\treturn this._len === 0;\n\t}\n\tpublic get first(): ListNode<T> | undefined {\n\t\treturn this.headNode.next;\n\t}\n\n\tpublic get last(): ListNode<T> | undefined {\n\t\treturn this.headNode.prev;\n\t}\n}\n\nexport function walkList<T>(\n\tlist: DoublyLinkedList<T>,\n\tvisitor: (node: ListNode<T>) => boolean | void,\n\tstart?: ListNode<T>,\n\tforward: boolean = true,\n): boolean {\n\tlet current: ListNode<T> | undefined;\n\tif (start) {\n\t\tif (!list.includes(start)) {\n\t\t\tthrow new UsageError(\"start must be in the provided list\");\n\t\t}\n\t\tcurrent = start;\n\t} else {\n\t\tcurrent = forward ? list.first : list.last;\n\t}\n\t// cache the next node, incase the visitor mutates the list\n\t// need this to support splice\n\tlet next = forward ? current?.next : current?.prev;\n\twhile (current !== undefined) {\n\t\tif (visitor(current) === false) {\n\t\t\treturn false;\n\t\t}\n\t\tcurrent = next;\n\t\tnext = forward ? next?.next : next?.prev;\n\t}\n\treturn true;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/collections/list.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 { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n\nexport interface ListNode<T> {\n\treadonly list: DoublyLinkedList<T> | undefined;\n\treadonly data: T;\n\treadonly next: ListNode<T> | undefined;\n\treadonly prev: ListNode<T> | undefined;\n}\n\nexport interface ListNodeRange<T> {\n\tfirst: ListNode<T>;\n\tlast: ListNode<T>;\n}\n\nclass HeadNode<T> {\n\tpublic _next: HeadNode<T> | DataNode<T> = this;\n\tpublic _prev: HeadNode<T> | DataNode<T> = this;\n\tpublic headNode: HeadNode<T> = this;\n\tprivate readonly _list?: DoublyLinkedList<T>;\n\tconstructor(list: DoublyLinkedList<T> | undefined) {\n\t\tif (list) {\n\t\t\tthis._list = list;\n\t\t}\n\t}\n\tpublic get next(): DataNode<T> | undefined {\n\t\treturn this._next === this.headNode ? undefined : (this._next as DataNode<T>);\n\t}\n\tpublic get prev(): DataNode<T> | undefined {\n\t\treturn this._prev === this.headNode ? undefined : (this._prev as DataNode<T>);\n\t}\n\tpublic get list(): DoublyLinkedList<T> | undefined {\n\t\treturn this.headNode._list;\n\t}\n}\n\n// The any is needed for use in the remove function, where the nodes are defined with a generic type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst DeadHead = new HeadNode<any>(undefined);\n\nclass DataNode<T> extends HeadNode<T> implements ListNode<T> {\n\tconstructor(\n\t\theadNode: HeadNode<T>,\n\t\tpublic readonly data: T,\n\t) {\n\t\tsuper(undefined);\n\t\tthis.headNode = headNode;\n\t}\n}\n\nfunction insertAfter<T>(node: DataNode<T> | HeadNode<T>, items: T[]): ListNodeRange<T> {\n\tlet previousNode = node;\n\tconst oldNext = previousNode._next;\n\tlet newRange: ListNodeRange<T> | undefined;\n\tfor (const n of items) {\n\t\tconst newNode = new DataNode<T>(node.headNode, n);\n\t\tif (newRange === undefined) {\n\t\t\tnewRange = { first: newNode, last: newNode };\n\t\t} else {\n\t\t\tnewRange.last = newNode;\n\t\t}\n\t\tnewNode._prev = previousNode;\n\t\tpreviousNode._next = newNode;\n\t\tpreviousNode = newNode;\n\t}\n\toldNext._prev = previousNode;\n\tpreviousNode._next = oldNext;\n\t// explicitly prevent newRange from being undefined without casting,\n\t// and without additional conditionals, as this is used in some perf critical areas.\n\t// i could have just asserted, but that throws a non-user friendly error,\n\t// so i went with a more user-friendly error, which describes the\n\t// only condition that could lead to this being undefined in the current code.\n\tif (newRange === undefined) {\n\t\tthrow new UsageError(\"items must not be empty\");\n\t}\n\treturn newRange;\n}\n\nexport class DoublyLinkedList<T>\n\timplements\n\t\tIterable<ListNode<T>>,\n\t\tPartial<ListNodeRange<T>>,\n\t\t// try to match array signature and semantics where possible\n\t\tPick<ListNode<T>[], \"pop\" | \"shift\" | \"length\" | \"includes\">\n{\n\tconstructor(values?: Iterable<T>) {\n\t\tif (values !== undefined) {\n\t\t\tthis.push(...values);\n\t\t}\n\t}\n\n\tfind(\n\t\tpredicate: (value: ListNode<T>, obj: DoublyLinkedList<T>) => unknown,\n\t): ListNode<T> | undefined {\n\t\tlet found: ListNode<T> | undefined;\n\t\twalkList(this, (node) => {\n\t\t\tif (predicate(node, this)) {\n\t\t\t\tfound = node;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\treturn found;\n\t}\n\n\tmap<U>(callbackfn: (value: ListNode<T>) => U): Iterable<U> {\n\t\tlet node = this.first;\n\t\tconst iterator: IterableIterator<U> = {\n\t\t\tnext(): IteratorResult<U> {\n\t\t\t\tif (node === undefined) {\n\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t}\n\t\t\t\tconst rtn = { value: callbackfn(node), done: false };\n\t\t\t\tnode = node.next;\n\t\t\t\treturn rtn;\n\t\t\t},\n\t\t\t[Symbol.iterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t\treturn iterator;\n\t}\n\n\tinsertAfter(preceding: ListNode<T>, ...items: T[]): ListNodeRange<T> {\n\t\tif (!this._includes(preceding)) {\n\t\t\tthrow new Error(\"preceding not in list\");\n\t\t}\n\t\tthis._len += items.length;\n\t\treturn insertAfter(preceding, items);\n\t}\n\n\tpop(): ListNode<T> | undefined {\n\t\treturn this.remove(this.last);\n\t}\n\n\tpush(...items: T[]): ListNodeRange<T> {\n\t\tthis._len += items.length;\n\t\tconst start = this.headNode._prev;\n\t\treturn insertAfter(start, items);\n\t}\n\n\t/**\n\t * Remove and return the first element\n\t */\n\tshift(): ListNode<T> | undefined {\n\t\treturn this.remove(this.first);\n\t}\n\n\t/**\n\t * Insert `items` at start of list\n\t */\n\tunshift(...items: T[]): ListNodeRange<T> {\n\t\tthis._len += items.length;\n\t\treturn insertAfter(this.headNode, items);\n\t}\n\n\t/**\n\t * Remove nodes starting at `start` until either the `end` node is reached\n\t * or until `count` nodes have been removed. Returns the removed nodes as\n\t * a separate linked list\n\t */\n\tsplice(start: ListNode<T>, countOrEnd?: ListNode<T> | number): DoublyLinkedList<T> {\n\t\tconst newList = new DoublyLinkedList<T>();\n\t\twalkList(\n\t\t\tthis,\n\t\t\t(node) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst removedNode = this._remove(node)!;\n\t\t\t\t// whats special here is we preserve the node\n\t\t\t\t// this allow looking up the old node in the new list\n\t\t\t\t// when something preserves a reference\n\t\t\t\tremovedNode.headNode = newList.headNode;\n\t\t\t\tremovedNode._next = newList.headNode;\n\t\t\t\tremovedNode._prev = newList.headNode._prev;\n\t\t\t\tnewList.headNode._prev._next = removedNode;\n\t\t\t\tnewList.headNode._prev = removedNode;\n\t\t\t\tnewList._len++;\n\t\t\t\tif (node === countOrEnd || newList.length === countOrEnd) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tstart,\n\t\t);\n\t\treturn newList;\n\t}\n\n\tpublic includes(node: ListNode<T> | undefined): node is ListNode<T> {\n\t\treturn this._includes(node);\n\t}\n\n\tprivate _includes(node: ListNode<T> | undefined): node is DataNode<T> {\n\t\treturn node instanceof DataNode && node.headNode === this.headNode;\n\t}\n\n\tprivate _remove(node: ListNode<T> | undefined): DataNode<T> | undefined {\n\t\tif (this._includes(node)) {\n\t\t\tnode._prev._next = node._next;\n\t\t\tnode._next._prev = node._prev;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tnode.headNode = node._next = node._prev = DeadHead;\n\t\t\tthis._len--;\n\t\t\treturn node;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic remove(node: ListNode<T> | undefined): ListNode<T> | undefined {\n\t\treturn this._remove(node);\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<ListNode<T>> {\n\t\tlet value = this.first;\n\t\tconst iterator: IterableIterator<ListNode<T>> = {\n\t\t\tnext(): IteratorResult<ListNode<T>> {\n\t\t\t\tif (value !== undefined) {\n\t\t\t\t\tconst rtn = { value, done: false };\n\t\t\t\t\tvalue = value.next;\n\t\t\t\t\treturn rtn;\n\t\t\t\t}\n\t\t\t\treturn { value: undefined, done: true };\n\t\t\t},\n\t\t\t[Symbol.iterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t\treturn iterator;\n\t}\n\n\tprivate _len: number = 0;\n\tprivate readonly headNode: HeadNode<T> | DataNode<T> = new HeadNode(this);\n\tpublic get length(): number {\n\t\treturn this._len;\n\t}\n\tpublic get empty(): boolean {\n\t\treturn this._len === 0;\n\t}\n\tpublic get first(): ListNode<T> | undefined {\n\t\treturn this.headNode.next;\n\t}\n\n\tpublic get last(): ListNode<T> | undefined {\n\t\treturn this.headNode.prev;\n\t}\n}\n\nexport function walkList<T>(\n\tlist: DoublyLinkedList<T>,\n\tvisitor: (node: ListNode<T>) => boolean | void,\n\tstart?: ListNode<T>,\n\tforward: boolean = true,\n): boolean {\n\tlet current: ListNode<T> | undefined;\n\tif (start) {\n\t\tif (!list.includes(start)) {\n\t\t\tthrow new UsageError(\"start must be in the provided list\");\n\t\t}\n\t\tcurrent = start;\n\t} else {\n\t\tcurrent = forward ? list.first : list.last;\n\t}\n\t// cache the next node, incase the visitor mutates the list\n\t// need this to support splice\n\tlet next = forward ? current?.next : current?.prev;\n\twhile (current !== undefined) {\n\t\tif (visitor(current) === false) {\n\t\t\treturn false;\n\t\t}\n\t\tcurrent = next;\n\t\tnext = forward ? next?.next : next?.prev;\n\t}\n\treturn true;\n}\n\n/**\n * Creates a lazily evaluated iterable which returns values while the predicate returns true,\n * and stops iterating at the first value where the predicate is false.\n * @param start - the node to start the iteration from\n * @param includePredicate - determine if the current value be included in the iteration or stop if iteration\n */\nexport function iterateListValuesWhile<T>(\n\tstart: ListNode<T> | undefined,\n\tincludePredicate: (n: ListNode<T>) => boolean,\n): Iterable<T> {\n\tlet next: ListNode<T> | undefined = start;\n\tconst iterator: IterableIterator<T> = {\n\t\tnext: (): IteratorResult<T> => {\n\t\t\tif (next !== undefined) {\n\t\t\t\tconst current = next;\n\t\t\t\tnext = current.next;\n\t\t\t\tif (includePredicate(current) === true) {\n\t\t\t\t\treturn { value: current.data, done: false };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { done: true, value: undefined };\n\t\t},\n\t\t[Symbol.iterator]() {\n\t\t\treturn this;\n\t\t},\n\t};\n\treturn iterator;\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,10 +13,10 @@ export { IMergeTreeClientSequenceArgs, IMergeTreeDeltaCallbackArgs, IMergeTreeDe
|
|
|
13
13
|
export { BaseSegment, CollaborationWindow, debugMarkerToString, IJSONMarkerSegment, IMergeNodeCommon, IMoveInfo, IRemovalInfo, ISegment, ISegmentAction, Marker, reservedMarkerIdKey, reservedMarkerSimpleTypeKey, SegmentGroup, toRemovalInfo, ObliterateInfo, ISegmentInternal, } from "./mergeTreeNodes.js";
|
|
14
14
|
export { Trackable, TrackingGroup, ITrackingGroup, TrackingGroupCollection, } from "./mergeTreeTracking.js";
|
|
15
15
|
export { createAnnotateRangeOp, createGroupOp, createInsertOp, createInsertSegmentOp, createRemoveRangeOp, createObliterateRangeOp, } from "./opBuilder.js";
|
|
16
|
-
export { IJSONSegment, IMarkerDef, IMergeTreeAnnotateMsg, IMergeTreeDelta, IMergeTreeDeltaOp, IMergeTreeGroupMsg, IMergeTreeInsertMsg, IMergeTreeOp, IMergeTreeRemoveMsg, IRelativePosition, MergeTreeDeltaType, ReferenceType, IMergeTreeObliterateMsg, IMergeTreeObliterateSidedMsg, } from "./ops.js";
|
|
16
|
+
export { AdjustParams, IJSONSegment, IMarkerDef, IMergeTreeAnnotateMsg, IMergeTreeDelta, IMergeTreeDeltaOp, IMergeTreeGroupMsg, IMergeTreeInsertMsg, IMergeTreeOp, IMergeTreeRemoveMsg, IMergeTreeAnnotateAdjustMsg, IRelativePosition, MergeTreeDeltaType, ReferenceType, IMergeTreeObliterateMsg, IMergeTreeObliterateSidedMsg, } from "./ops.js";
|
|
17
17
|
export { addProperties, createMap, MapLike, matchProperties, PropertySet, } from "./properties.js";
|
|
18
18
|
export { compareReferencePositions, DetachedReferencePosition, maxReferencePosition, minReferencePosition, ReferencePosition, refGetTileLabels, refHasTileLabel, refHasTileLabels, refTypeIncludesFlag, reservedRangeLabelsKey, reservedTileLabelsKey, } from "./referencePositions.js";
|
|
19
|
-
export { copyPropertiesAndManager, PropertiesManager, PropertiesRollback, } from "./segmentPropertiesManager.js";
|
|
19
|
+
export { PropsOrAdjust, copyPropertiesAndManager, PropertiesManager, PropertiesRollback, } from "./segmentPropertiesManager.js";
|
|
20
20
|
export { InteriorSequencePlace, Side, SequencePlace, endpointPosAndSide, } from "./sequencePlace.js";
|
|
21
21
|
export { SortedSet } from "./sortedSet.js";
|
|
22
22
|
export { SortedSegmentSet, SortedSegmentSetItem } from "./sortedSegmentSet.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;AASH,+DAIgC;AAH/B,yIAAA,iCAAiC,OAAA;AACjC,sJAAA,8CAA8C,OAAA;AAC9C,kKAAA,0DAA0D,OAAA;AAE3D,yCAAoD;AAA3C,mGAAA,MAAM,OAAA;AACf,mDAcgC;AAL/B,mGAAA,OAAO,OAAA;AAGP,wGAAA,YAAY,OAAA;AAGb,+CAAmF;AAA1E,wHAAA,wBAAwB,OAAA;AAAE,uHAAA,uBAAuB,OAAA;AAC1D,yDAK6B;AAJ5B,yIAAA,oCAAoC,OAAA;AACpC,6HAAA,wBAAwB,OAAA;AAExB,sHAAA,iBAAiB,OAAA;AAElB,+CAMwB;AADvB,gHAAA,gBAAgB,OAAA;AAEjB,yEASqC;AADpC,qIAAA,wBAAwB,OAAA;AAEzB,yDAiB6B;AAhB5B,gHAAA,WAAW,OAAA;AACX,wHAAA,mBAAmB,OAAA;AACnB,wHAAA,mBAAmB,OAAA;AAOnB,2GAAA,MAAM,OAAA;AACN,wHAAA,mBAAmB,OAAA;AACnB,gIAAA,2BAA2B,OAAA;AAE3B,kHAAA,aAAa,OAAA;AAId,+DAKgC;AAH/B,qHAAA,aAAa,OAAA;AAEb,+HAAA,uBAAuB,OAAA;AAExB,+CAOwB;AANvB,qHAAA,qBAAqB,OAAA;AACrB,6GAAA,aAAa,OAAA;AACb,8GAAA,cAAc,OAAA;AACd,qHAAA,qBAAqB,OAAA;AACrB,mHAAA,mBAAmB,OAAA;AACnB,uHAAA,uBAAuB,OAAA;AAExB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;AASH,+DAIgC;AAH/B,yIAAA,iCAAiC,OAAA;AACjC,sJAAA,8CAA8C,OAAA;AAC9C,kKAAA,0DAA0D,OAAA;AAE3D,yCAAoD;AAA3C,mGAAA,MAAM,OAAA;AACf,mDAcgC;AAL/B,mGAAA,OAAO,OAAA;AAGP,wGAAA,YAAY,OAAA;AAGb,+CAAmF;AAA1E,wHAAA,wBAAwB,OAAA;AAAE,uHAAA,uBAAuB,OAAA;AAC1D,yDAK6B;AAJ5B,yIAAA,oCAAoC,OAAA;AACpC,6HAAA,wBAAwB,OAAA;AAExB,sHAAA,iBAAiB,OAAA;AAElB,+CAMwB;AADvB,gHAAA,gBAAgB,OAAA;AAEjB,yEASqC;AADpC,qIAAA,wBAAwB,OAAA;AAEzB,yDAiB6B;AAhB5B,gHAAA,WAAW,OAAA;AACX,wHAAA,mBAAmB,OAAA;AACnB,wHAAA,mBAAmB,OAAA;AAOnB,2GAAA,MAAM,OAAA;AACN,wHAAA,mBAAmB,OAAA;AACnB,gIAAA,2BAA2B,OAAA;AAE3B,kHAAA,aAAa,OAAA;AAId,+DAKgC;AAH/B,qHAAA,aAAa,OAAA;AAEb,+HAAA,uBAAuB,OAAA;AAExB,+CAOwB;AANvB,qHAAA,qBAAqB,OAAA;AACrB,6GAAA,aAAa,OAAA;AACb,8GAAA,cAAc,OAAA;AACd,qHAAA,qBAAqB,OAAA;AACrB,mHAAA,mBAAmB,OAAA;AACnB,uHAAA,uBAAuB,OAAA;AAExB,mCAiBkB;AAJjB,4GAAA,kBAAkB,OAAA;AAClB,uGAAA,aAAa,OAAA;AAId,iDAMyB;AALxB,8GAAA,aAAa,OAAA;AACb,0GAAA,SAAS,OAAA;AAET,gHAAA,eAAe,OAAA;AAGhB,iEAYiC;AAXhC,kIAAA,yBAAyB,OAAA;AACzB,kIAAA,yBAAyB,OAAA;AACzB,6HAAA,oBAAoB,OAAA;AACpB,6HAAA,oBAAoB,OAAA;AAEpB,yHAAA,gBAAgB,OAAA;AAChB,wHAAA,eAAe,OAAA;AACf,yHAAA,gBAAgB,OAAA;AAChB,4HAAA,mBAAmB,OAAA;AACnB,+HAAA,sBAAsB,OAAA;AACtB,8HAAA,qBAAqB,OAAA;AAEtB,6EAKuC;AAHtC,uIAAA,wBAAwB,OAAA;AACxB,gIAAA,iBAAiB,OAAA;AACjB,iIAAA,kBAAkB,OAAA;AAEnB,uDAK4B;AAH3B,wGAAA,IAAI,OAAA;AAEJ,sHAAA,kBAAkB,OAAA;AAEnB,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAClB,6DAA+E;AAAtE,uHAAA,gBAAgB,OAAA;AACzB,mDAAuF;AAAtC,6GAAA,WAAW,OAAA;AAC5D,mDAO0B;AANzB,mIAAA,iCAAiC,OAAA;AACjC,iIAAA,+BAA+B,OAAA;AAC/B,4HAAA,0BAA0B,OAAA;AAG1B,iIAAA,+BAA+B,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tIAttributionCollection,\n\tIAttributionCollectionSerializer,\n\tIAttributionCollectionSpec,\n\tSerializedAttributionCollection,\n\tSequenceOffsets,\n} from \"./attributionCollection.js\";\nexport {\n\tcreateInsertOnlyAttributionPolicy,\n\tcreatePropertyTrackingAttributionPolicyFactory,\n\tcreatePropertyTrackingAndInsertionAttributionPolicyFactory,\n} from \"./attributionPolicy.js\";\nexport { Client, IClientEvents } from \"./client.js\";\nexport {\n\tConflictAction,\n\tDictionary,\n\tIRBAugmentation,\n\tIRBMatcher,\n\tKeyComparer,\n\tProperty,\n\tPropertyAction,\n\tQProperty,\n\tRBColor,\n\tRBNode,\n\tRBNodeActions,\n\tRedBlackTree,\n\tSortedDictionary,\n} from \"./collections/index.js\";\nexport { UnassignedSequenceNumber, UniversalSequenceNumber } from \"./constants.js\";\nexport {\n\tcreateDetachedLocalReferencePosition,\n\tLocalReferenceCollection,\n\tLocalReferencePosition,\n\tSlidingPreference,\n} from \"./localReference.js\";\nexport {\n\tAttributionPolicy,\n\tIMergeTreeAttributionOptions,\n\tIMergeTreeOptions,\n\tIMergeTreeOptionsInternal,\n\tgetSlideToSegoff,\n} from \"./mergeTree.js\";\nexport {\n\tIMergeTreeClientSequenceArgs,\n\tIMergeTreeDeltaCallbackArgs,\n\tIMergeTreeDeltaOpArgs,\n\tIMergeTreeMaintenanceCallbackArgs,\n\tIMergeTreeSegmentDelta,\n\tMergeTreeDeltaOperationType,\n\tMergeTreeDeltaOperationTypes,\n\tMergeTreeMaintenanceType,\n} from \"./mergeTreeDeltaCallback.js\";\nexport {\n\tBaseSegment,\n\tCollaborationWindow,\n\tdebugMarkerToString,\n\tIJSONMarkerSegment,\n\tIMergeNodeCommon,\n\tIMoveInfo,\n\tIRemovalInfo,\n\tISegment,\n\tISegmentAction,\n\tMarker,\n\treservedMarkerIdKey,\n\treservedMarkerSimpleTypeKey,\n\tSegmentGroup,\n\ttoRemovalInfo,\n\tObliterateInfo,\n\tISegmentInternal,\n} from \"./mergeTreeNodes.js\";\nexport {\n\tTrackable,\n\tTrackingGroup,\n\tITrackingGroup,\n\tTrackingGroupCollection,\n} from \"./mergeTreeTracking.js\";\nexport {\n\tcreateAnnotateRangeOp,\n\tcreateGroupOp,\n\tcreateInsertOp,\n\tcreateInsertSegmentOp,\n\tcreateRemoveRangeOp,\n\tcreateObliterateRangeOp,\n} from \"./opBuilder.js\";\nexport {\n\tAdjustParams,\n\tIJSONSegment,\n\tIMarkerDef,\n\tIMergeTreeAnnotateMsg,\n\tIMergeTreeDelta,\n\tIMergeTreeDeltaOp,\n\tIMergeTreeGroupMsg,\n\tIMergeTreeInsertMsg,\n\tIMergeTreeOp,\n\tIMergeTreeRemoveMsg,\n\tIMergeTreeAnnotateAdjustMsg,\n\tIRelativePosition,\n\tMergeTreeDeltaType,\n\tReferenceType,\n\tIMergeTreeObliterateMsg,\n\tIMergeTreeObliterateSidedMsg,\n} from \"./ops.js\";\nexport {\n\taddProperties,\n\tcreateMap,\n\tMapLike,\n\tmatchProperties,\n\tPropertySet,\n} from \"./properties.js\";\nexport {\n\tcompareReferencePositions,\n\tDetachedReferencePosition,\n\tmaxReferencePosition,\n\tminReferencePosition,\n\tReferencePosition,\n\trefGetTileLabels,\n\trefHasTileLabel,\n\trefHasTileLabels,\n\trefTypeIncludesFlag,\n\treservedRangeLabelsKey,\n\treservedTileLabelsKey,\n} from \"./referencePositions.js\";\nexport {\n\tPropsOrAdjust,\n\tcopyPropertiesAndManager,\n\tPropertiesManager,\n\tPropertiesRollback,\n} from \"./segmentPropertiesManager.js\";\nexport {\n\tInteriorSequencePlace,\n\tSide,\n\tSequencePlace,\n\tendpointPosAndSide,\n} from \"./sequencePlace.js\";\nexport { SortedSet } from \"./sortedSet.js\";\nexport { SortedSegmentSet, SortedSegmentSetItem } from \"./sortedSegmentSet.js\";\nexport { IJSONTextSegment, IMergeTreeTextHelper, TextSegment } from \"./textSegment.js\";\nexport {\n\tappendToMergeTreeDeltaRevertibles,\n\tdiscardMergeTreeDeltaRevertible,\n\tisMergeTreeDeltaRevertible,\n\tMergeTreeDeltaRevertible,\n\tMergeTreeRevertibleDriver,\n\trevertMergeTreeDeltaRevertibles,\n} from \"./revertibles.js\";\n"]}
|
package/dist/legacy.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
export {
|
|
12
12
|
// @legacy APIs
|
|
13
|
+
AdjustParams,
|
|
13
14
|
BaseSegment,
|
|
14
15
|
IAttributionCollection,
|
|
15
16
|
IAttributionCollectionSerializer,
|
|
@@ -19,6 +20,7 @@ export {
|
|
|
19
20
|
IJSONTextSegment,
|
|
20
21
|
IMarkerDef,
|
|
21
22
|
IMergeNodeCommon,
|
|
23
|
+
IMergeTreeAnnotateAdjustMsg,
|
|
22
24
|
IMergeTreeAnnotateMsg,
|
|
23
25
|
IMergeTreeDelta,
|
|
24
26
|
IMergeTreeDeltaCallbackArgs,
|
package/dist/mergeTree.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeTree.d.ts","sourceRoot":"","sources":["../src/mergeTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAU,IAAI,EAAa,MAAM,qCAAqC,CAAC;AAG9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAY,MAAM,wBAAwB,CAAC;AAOpE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAEN,sBAAsB,EACtB,iBAAiB,EAIjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,qBAAqB,EAErB,sBAAsB,EACtB,4BAA4B,EAE5B,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EAGN,mBAAmB,EACnB,UAAU,EAGV,cAAc,EAEd,YAAY,EAEZ,MAAM,EAEN,UAAU,EAEV,YAAY,EAKZ,KAAK,gBAAgB,EAGrB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EAEjB,aAAa,EACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,WAAW,EAAwC,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAEN,iBAAiB,EAIjB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAGN,kBAAkB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAQ,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mergeTree.d.ts","sourceRoot":"","sources":["../src/mergeTree.ts"],"names":[],"mappings":"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"}
|
package/dist/mergeTree.js
CHANGED
|
@@ -70,15 +70,17 @@ const LRUSegmentComparer = {
|
|
|
70
70
|
function ackSegment(segment, segmentGroup, opArgs) {
|
|
71
71
|
const currentSegmentGroup = segment.segmentGroups?.dequeue();
|
|
72
72
|
(0, internal_1.assert)(currentSegmentGroup === segmentGroup, 0x043 /* "On ack, unexpected segmentGroup!" */);
|
|
73
|
-
|
|
73
|
+
(0, internal_1.assert)(opArgs.sequencedMessage !== undefined, "must have sequencedMessage");
|
|
74
|
+
const { op, sequencedMessage: { sequenceNumber, minimumSequenceNumber }, } = opArgs;
|
|
75
|
+
switch (op.type) {
|
|
74
76
|
case ops_js_1.MergeTreeDeltaType.ANNOTATE: {
|
|
75
77
|
(0, internal_1.assert)(!!segment.propertyManager, 0x044 /* "On annotate ack, missing segment property manager!" */);
|
|
76
|
-
segment.propertyManager.
|
|
78
|
+
segment.propertyManager.ack(sequenceNumber, minimumSequenceNumber, op);
|
|
77
79
|
return true;
|
|
78
80
|
}
|
|
79
81
|
case ops_js_1.MergeTreeDeltaType.INSERT: {
|
|
80
82
|
(0, internal_1.assert)(segment.seq === constants_js_1.UnassignedSequenceNumber, 0x045 /* "On insert, seq number already assigned!" */);
|
|
81
|
-
segment.seq =
|
|
83
|
+
segment.seq = sequenceNumber;
|
|
82
84
|
segment.localSeq = undefined;
|
|
83
85
|
return true;
|
|
84
86
|
}
|
|
@@ -87,7 +89,7 @@ function ackSegment(segment, segmentGroup, opArgs) {
|
|
|
87
89
|
(0, internal_1.assert)(removalInfo !== undefined, 0x046 /* "On remove ack, missing removal info!" */);
|
|
88
90
|
segment.localRemovedSeq = undefined;
|
|
89
91
|
if (removalInfo.removedSeq === constants_js_1.UnassignedSequenceNumber) {
|
|
90
|
-
removalInfo.removedSeq =
|
|
92
|
+
removalInfo.removedSeq = sequenceNumber;
|
|
91
93
|
return true;
|
|
92
94
|
}
|
|
93
95
|
return false;
|
|
@@ -101,15 +103,15 @@ function ackSegment(segment, segmentGroup, opArgs) {
|
|
|
101
103
|
segment.localMovedSeq = obliterateInfo.localSeq = undefined;
|
|
102
104
|
const seqIdx = moveInfo.movedSeqs.indexOf(constants_js_1.UnassignedSequenceNumber);
|
|
103
105
|
(0, internal_1.assert)(seqIdx !== -1, 0x86f /* expected movedSeqs to contain unacked seq */);
|
|
104
|
-
moveInfo.movedSeqs[seqIdx] =
|
|
106
|
+
moveInfo.movedSeqs[seqIdx] = sequenceNumber;
|
|
105
107
|
if (moveInfo.movedSeq === constants_js_1.UnassignedSequenceNumber) {
|
|
106
|
-
moveInfo.movedSeq =
|
|
108
|
+
moveInfo.movedSeq = sequenceNumber;
|
|
107
109
|
return true;
|
|
108
110
|
}
|
|
109
111
|
return false;
|
|
110
112
|
}
|
|
111
113
|
default: {
|
|
112
|
-
throw new Error(`${
|
|
114
|
+
throw new Error(`${op.type} is in unrecognized operation type`);
|
|
113
115
|
}
|
|
114
116
|
}
|
|
115
117
|
}
|
|
@@ -1267,8 +1269,7 @@ class MergeTree {
|
|
|
1267
1269
|
!(mergeTreeNodes_js_1.reservedMarkerIdKey in props) ||
|
|
1268
1270
|
props.markerId === segment.properties?.markerId, 0x5ad /* Cannot change the markerId of an existing marker */);
|
|
1269
1271
|
const propertyManager = (segment.propertyManager ?? (segment.propertyManager = new segmentPropertiesManager_js_1.PropertiesManager()));
|
|
1270
|
-
const
|
|
1271
|
-
const propertyDeltas = propertyManager.addProperties(properties, props, seq, this.collabWindow.collaborating, rollback);
|
|
1272
|
+
const propertyDeltas = propertyManager.handleProperties({ props }, segment, seq, this.collabWindow.minSeq, this.collabWindow.collaborating, rollback);
|
|
1272
1273
|
if (!isRemovedOrMoved(segment)) {
|
|
1273
1274
|
deltaSegments.push({ segment, propertyDeltas });
|
|
1274
1275
|
}
|