jazz-tools 0.11.0 → 0.11.2
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/.turbo/turbo-build.log +5 -5
- package/CHANGELOG.md +6 -0
- package/dist/{chunk-RTRX7HIO.js → chunk-MVDJNBLV.js} +11 -2
- package/dist/chunk-MVDJNBLV.js.map +1 -0
- package/dist/coValues/coList.d.ts +1 -0
- package/dist/coValues/coList.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/testing.js +1 -1
- package/package.json +2 -1
- package/src/coValues/coList.ts +14 -1
- package/src/tests/coList.test.ts +20 -0
- package/dist/chunk-RTRX7HIO.js.map +0 -1
@@ -125,6 +125,7 @@ export declare class CoList<Item = any> extends Array<Item> implements CoValue {
|
|
125
125
|
pop(): Item | undefined;
|
126
126
|
shift(): Item | undefined;
|
127
127
|
splice(start: number, deleteCount: number, ...items: Item[]): Item[];
|
128
|
+
applyDiff(other: Item[]): void;
|
128
129
|
toJSON(_key?: string, seenAbove?: ID<CoValue>[]): any[];
|
129
130
|
[inspect](): any[];
|
130
131
|
/** @category Internals */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coList.d.ts","sourceRoot":"","sources":["../../src/coValues/coList.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,QAAQ,CAAC;
|
1
|
+
{"version":3,"file":"coList.d.ts","sourceRoot":"","sources":["../../src/coValues/coList.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
package/dist/testing.js
CHANGED
package/package.json
CHANGED
package/src/coValues/coList.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import type { JsonValue, RawCoList } from "cojson";
|
2
2
|
import { RawAccount } from "cojson";
|
3
|
+
import { calcPatch } from "fast-myers-diff";
|
3
4
|
import type {
|
4
5
|
CoValue,
|
5
6
|
CoValueClass,
|
@@ -287,7 +288,6 @@ export class CoList<Item = any> extends Array<Item> implements CoValue {
|
|
287
288
|
|
288
289
|
let appendAfter = Math.max(start - 1, 0);
|
289
290
|
for (const item of toRawItems(items as Item[], this._schema[ItemsSym])) {
|
290
|
-
console.log(this._raw.asArray(), appendAfter);
|
291
291
|
this._raw.append(item, appendAfter);
|
292
292
|
appendAfter++;
|
293
293
|
}
|
@@ -295,6 +295,19 @@ export class CoList<Item = any> extends Array<Item> implements CoValue {
|
|
295
295
|
return deleted;
|
296
296
|
}
|
297
297
|
|
298
|
+
applyDiff(other: Item[]) {
|
299
|
+
const current = this._raw.asArray() as Item[];
|
300
|
+
const cmp = isRefEncoded(this._schema[ItemsSym])
|
301
|
+
? (aIdx: number, bIdx: number) =>
|
302
|
+
(current[aIdx] as CoValue).id === (other[bIdx] as CoValue).id
|
303
|
+
: undefined;
|
304
|
+
for (const [from, to, insert] of [
|
305
|
+
...calcPatch(current, other, cmp),
|
306
|
+
].reverse()) {
|
307
|
+
this.splice(from, to - from, ...insert);
|
308
|
+
}
|
309
|
+
}
|
310
|
+
|
298
311
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
299
312
|
toJSON(_key?: string, seenAbove?: ID<CoValue>[]): any[] {
|
300
313
|
const itemDescriptor = this._schema[ItemsSym] as Schema;
|
package/src/tests/coList.test.ts
CHANGED
@@ -115,6 +115,26 @@ describe("Simple CoList operations", async () => {
|
|
115
115
|
expect(list.length).toBe(4);
|
116
116
|
expect(list._raw.asArray()).toEqual(["bread", "salt", "pepper", "onion"]);
|
117
117
|
});
|
118
|
+
|
119
|
+
test("applyDiff", () => {
|
120
|
+
const list = TestList.create(["bread", "butter", "onion"], {
|
121
|
+
owner: me,
|
122
|
+
});
|
123
|
+
// replace
|
124
|
+
list.applyDiff(["bread", "margarine", "onion"]);
|
125
|
+
expect(list._raw.asArray()).toEqual(["bread", "margarine", "onion"]);
|
126
|
+
// delete
|
127
|
+
list.applyDiff(["bread", "onion"]);
|
128
|
+
expect(list._raw.asArray()).toEqual(["bread", "onion"]);
|
129
|
+
// insert multiple
|
130
|
+
list.applyDiff(["bread", "margarine", "onion", "cheese"]);
|
131
|
+
expect(list._raw.asArray()).toEqual([
|
132
|
+
"bread",
|
133
|
+
"margarine",
|
134
|
+
"onion",
|
135
|
+
"cheese",
|
136
|
+
]);
|
137
|
+
});
|
118
138
|
});
|
119
139
|
});
|
120
140
|
|