cojson 0.19.0 → 0.19.1
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 +1 -1
- package/CHANGELOG.md +8 -0
- package/dist/coValue.d.ts +12 -0
- package/dist/coValue.d.ts.map +1 -1
- package/dist/coValue.js +3 -0
- package/dist/coValue.js.map +1 -1
- package/dist/coValueCore/coValueCore.d.ts.map +1 -1
- package/dist/coValueCore/coValueCore.js +2 -9
- package/dist/coValueCore/coValueCore.js.map +1 -1
- package/dist/coValues/coList.d.ts +7 -11
- package/dist/coValues/coList.d.ts.map +1 -1
- package/dist/coValues/coList.js +22 -17
- package/dist/coValues/coList.js.map +1 -1
- package/dist/coValues/coMap.d.ts +9 -15
- package/dist/coValues/coMap.d.ts.map +1 -1
- package/dist/coValues/coMap.js +20 -10
- package/dist/coValues/coMap.js.map +1 -1
- package/dist/coValues/coStream.d.ts +4 -2
- package/dist/coValues/coStream.d.ts.map +1 -1
- package/dist/coValues/coStream.js +11 -0
- package/dist/coValues/coStream.js.map +1 -1
- package/dist/tests/coList.test.js +20 -0
- package/dist/tests/coList.test.js.map +1 -1
- package/dist/tests/coMap.test.js +20 -0
- package/dist/tests/coMap.test.js.map +1 -1
- package/dist/tests/coStream.test.js +20 -0
- package/dist/tests/coStream.test.js.map +1 -1
- package/dist/tests/group.invite.test.js +7 -8
- package/dist/tests/group.invite.test.js.map +1 -1
- package/dist/tests/group.roleOf.test.js +2 -5
- package/dist/tests/group.roleOf.test.js.map +1 -1
- package/dist/tests/sync.load.test.js +2 -4
- package/dist/tests/sync.load.test.js.map +1 -1
- package/dist/tests/sync.storage.test.js +89 -0
- package/dist/tests/sync.storage.test.js.map +1 -1
- package/dist/tests/sync.storageAsync.test.js +88 -0
- package/dist/tests/sync.storageAsync.test.js.map +1 -1
- package/package.json +3 -3
- package/src/coValue.ts +14 -0
- package/src/coValueCore/coValueCore.ts +3 -11
- package/src/coValues/coList.ts +29 -36
- package/src/coValues/coMap.ts +26 -29
- package/src/coValues/coStream.ts +16 -4
- package/src/tests/coList.test.ts +28 -0
- package/src/tests/coMap.test.ts +28 -0
- package/src/tests/coStream.test.ts +28 -0
- package/src/tests/group.invite.test.ts +7 -19
- package/src/tests/group.roleOf.test.ts +2 -4
- package/src/tests/sync.load.test.ts +2 -8
- package/src/tests/sync.storage.test.ts +109 -0
- package/src/tests/sync.storageAsync.test.ts +107 -0
|
@@ -467,5 +467,93 @@ describe("client syncs with a server with storage", () => {
|
|
|
467
467
|
await client.node.syncManager.waitForAllCoValuesSync();
|
|
468
468
|
await client2.node.syncManager.waitForAllCoValuesSync();
|
|
469
469
|
});
|
|
470
|
+
test("large parent group streaming from storage", async () => {
|
|
471
|
+
const syncServer = setupTestNode({
|
|
472
|
+
isSyncServer: true,
|
|
473
|
+
});
|
|
474
|
+
const { storage } = await syncServer.addAsyncStorage({
|
|
475
|
+
ourName: "syncServer",
|
|
476
|
+
});
|
|
477
|
+
const alice = setupTestNode();
|
|
478
|
+
alice.connectToSyncServer({
|
|
479
|
+
syncServer: syncServer.node,
|
|
480
|
+
});
|
|
481
|
+
const parentGroup = alice.node.createGroup();
|
|
482
|
+
const group = alice.node.createGroup();
|
|
483
|
+
group.extend(parentGroup);
|
|
484
|
+
const map = group.createMap();
|
|
485
|
+
fillCoMapWithLargeData(parentGroup);
|
|
486
|
+
parentGroup.addMember("everyone", "reader");
|
|
487
|
+
map.set("hello", "world");
|
|
488
|
+
await map.core.waitForSync();
|
|
489
|
+
await parentGroup.core.waitForSync();
|
|
490
|
+
expect(SyncMessagesLog.getMessages({
|
|
491
|
+
Group: group.core,
|
|
492
|
+
ParentGroup: parentGroup.core,
|
|
493
|
+
Map: map.core,
|
|
494
|
+
})).toMatchInlineSnapshot(`
|
|
495
|
+
[
|
|
496
|
+
"client -> server | CONTENT ParentGroup header: true new: After: 0 New: 3",
|
|
497
|
+
"client -> server | CONTENT Group header: true new: After: 0 New: 5",
|
|
498
|
+
"client -> server | CONTENT Map header: true new: ",
|
|
499
|
+
"client -> server | CONTENT ParentGroup header: false new: After: 3 New: 73 expectContentUntil: header/205",
|
|
500
|
+
"client -> server | CONTENT ParentGroup header: false new: After: 76 New: 73",
|
|
501
|
+
"client -> server | CONTENT ParentGroup header: false new: After: 149 New: 56",
|
|
502
|
+
"client -> server | CONTENT Map header: false new: After: 0 New: 1",
|
|
503
|
+
"server -> client | KNOWN ParentGroup sessions: header/3",
|
|
504
|
+
"syncServer -> storage | CONTENT ParentGroup header: true new: After: 0 New: 3",
|
|
505
|
+
"server -> client | KNOWN Group sessions: header/5",
|
|
506
|
+
"syncServer -> storage | CONTENT Group header: true new: After: 0 New: 5",
|
|
507
|
+
"server -> client | KNOWN Map sessions: header/0",
|
|
508
|
+
"syncServer -> storage | CONTENT Map header: true new: ",
|
|
509
|
+
"server -> client | KNOWN ParentGroup sessions: header/76",
|
|
510
|
+
"syncServer -> storage | CONTENT ParentGroup header: false new: After: 3 New: 73",
|
|
511
|
+
"server -> client | KNOWN ParentGroup sessions: header/149",
|
|
512
|
+
"syncServer -> storage | CONTENT ParentGroup header: false new: After: 76 New: 73",
|
|
513
|
+
"server -> client | KNOWN ParentGroup sessions: header/205",
|
|
514
|
+
"syncServer -> storage | CONTENT ParentGroup header: false new: After: 149 New: 56",
|
|
515
|
+
"server -> client | KNOWN Map sessions: header/1",
|
|
516
|
+
"syncServer -> storage | CONTENT Map header: false new: After: 0 New: 1",
|
|
517
|
+
]
|
|
518
|
+
`);
|
|
519
|
+
SyncMessagesLog.clear();
|
|
520
|
+
syncServer.restart();
|
|
521
|
+
syncServer.addStorage({
|
|
522
|
+
ourName: "syncServer",
|
|
523
|
+
storage,
|
|
524
|
+
});
|
|
525
|
+
const bob = setupTestNode();
|
|
526
|
+
bob.connectToSyncServer({
|
|
527
|
+
syncServer: syncServer.node,
|
|
528
|
+
ourName: "bob",
|
|
529
|
+
});
|
|
530
|
+
const mapOnBob = await loadCoValueOrFail(bob.node, map.id);
|
|
531
|
+
expect(mapOnBob.get("hello")).toEqual("world");
|
|
532
|
+
expect(SyncMessagesLog.getMessages({
|
|
533
|
+
ParentGroup: parentGroup.core,
|
|
534
|
+
Group: group.core,
|
|
535
|
+
Map: map.core,
|
|
536
|
+
})).toMatchInlineSnapshot(`
|
|
537
|
+
[
|
|
538
|
+
"bob -> server | LOAD Map sessions: empty",
|
|
539
|
+
"syncServer -> storage | LOAD Map sessions: empty",
|
|
540
|
+
"storage -> syncServer | CONTENT ParentGroup header: true new: After: 0 New: 76 expectContentUntil: header/205",
|
|
541
|
+
"storage -> syncServer | CONTENT ParentGroup header: true new: After: 76 New: 73",
|
|
542
|
+
"storage -> syncServer | CONTENT ParentGroup header: true new: After: 149 New: 56",
|
|
543
|
+
"storage -> syncServer | CONTENT Group header: true new: After: 0 New: 5",
|
|
544
|
+
"storage -> syncServer | CONTENT Map header: true new: After: 0 New: 1",
|
|
545
|
+
"server -> bob | CONTENT ParentGroup header: true new: After: 0 New: 76 expectContentUntil: header/205",
|
|
546
|
+
"server -> bob | CONTENT ParentGroup header: false new: After: 76 New: 73",
|
|
547
|
+
"server -> bob | CONTENT ParentGroup header: false new: After: 149 New: 56",
|
|
548
|
+
"server -> bob | CONTENT Group header: true new: After: 0 New: 5",
|
|
549
|
+
"server -> bob | CONTENT Map header: true new: After: 0 New: 1",
|
|
550
|
+
"bob -> server | KNOWN ParentGroup sessions: header/76",
|
|
551
|
+
"bob -> server | KNOWN ParentGroup sessions: header/149",
|
|
552
|
+
"bob -> server | KNOWN ParentGroup sessions: header/205",
|
|
553
|
+
"bob -> server | KNOWN Group sessions: header/5",
|
|
554
|
+
"bob -> server | KNOWN Map sessions: header/1",
|
|
555
|
+
]
|
|
556
|
+
`);
|
|
557
|
+
});
|
|
470
558
|
});
|
|
471
559
|
//# sourceMappingURL=sync.storageAsync.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.storageAsync.test.js","sourceRoot":"","sources":["../../src/tests/sync.storageAsync.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.storageAsync.test.js","sourceRoot":"","sources":["../../src/tests/sync.storageAsync.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
},
|
|
34
34
|
"type": "module",
|
|
35
35
|
"license": "MIT",
|
|
36
|
-
"version": "0.19.
|
|
36
|
+
"version": "0.19.1",
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@opentelemetry/sdk-metrics": "^2.0.0",
|
|
39
39
|
"libsql": "^0.5.13",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"@opentelemetry/api": "^1.9.0",
|
|
47
47
|
"@scure/base": "1.2.1",
|
|
48
48
|
"unicode-segmenter": "^0.12.0",
|
|
49
|
-
"cojson-core-wasm": "0.19.
|
|
50
|
-
"cojson-core-napi": "0.19.
|
|
49
|
+
"cojson-core-wasm": "0.19.1",
|
|
50
|
+
"cojson-core-napi": "0.19.1"
|
|
51
51
|
},
|
|
52
52
|
"gitHead": "33c27053293b4801b968c61d5c4c989f93a67d13",
|
|
53
53
|
"scripts": {
|
package/src/coValue.ts
CHANGED
|
@@ -34,13 +34,24 @@ export interface RawCoValue {
|
|
|
34
34
|
* Used internally by `useTelepathicData()` for reactive updates on changes to a `CoValue`. */
|
|
35
35
|
subscribe(listener: (coValue: this) => void): () => void;
|
|
36
36
|
|
|
37
|
+
/** The number of valid transactions that have been processed for this CoValue View */
|
|
37
38
|
totalValidTransactions: number;
|
|
39
|
+
/**
|
|
40
|
+
* The version of this CoValue View, incremented when the content of the CoValue is rebuilt
|
|
41
|
+
*
|
|
42
|
+
* This is used to detect changes to the CoValue View coming from permission changes.
|
|
43
|
+
*/
|
|
44
|
+
version: number;
|
|
45
|
+
|
|
46
|
+
processNewTransactions(): void;
|
|
47
|
+
rebuildFromCore(): void;
|
|
38
48
|
}
|
|
39
49
|
|
|
40
50
|
export class RawUnknownCoValue implements RawCoValue {
|
|
41
51
|
id: CoID<this>;
|
|
42
52
|
core: AvailableCoValueCore;
|
|
43
53
|
totalValidTransactions = 0;
|
|
54
|
+
version = 0;
|
|
44
55
|
|
|
45
56
|
constructor(core: AvailableCoValueCore) {
|
|
46
57
|
this.id = core.id as CoID<this>;
|
|
@@ -73,6 +84,9 @@ export class RawUnknownCoValue implements RawCoValue {
|
|
|
73
84
|
listener(core.getCurrentContent() as this);
|
|
74
85
|
});
|
|
75
86
|
}
|
|
87
|
+
|
|
88
|
+
processNewTransactions(): void {}
|
|
89
|
+
rebuildFromCore(): void {}
|
|
76
90
|
}
|
|
77
91
|
|
|
78
92
|
export type AnyRawCoValue =
|
|
@@ -659,15 +659,7 @@ export class CoValueCore {
|
|
|
659
659
|
|
|
660
660
|
private processNewTransactions() {
|
|
661
661
|
if (this._cachedContent) {
|
|
662
|
-
|
|
663
|
-
if (
|
|
664
|
-
"processNewTransactions" in this._cachedContent &&
|
|
665
|
-
typeof this._cachedContent.processNewTransactions === "function"
|
|
666
|
-
) {
|
|
667
|
-
this._cachedContent.processNewTransactions();
|
|
668
|
-
} else {
|
|
669
|
-
this._cachedContent = undefined;
|
|
670
|
-
}
|
|
662
|
+
this._cachedContent.processNewTransactions();
|
|
671
663
|
}
|
|
672
664
|
}
|
|
673
665
|
|
|
@@ -857,8 +849,6 @@ export class CoValueCore {
|
|
|
857
849
|
|
|
858
850
|
// Reset the parsed transactions and branches, to validate them again from scratch when the group is updated
|
|
859
851
|
resetParsedTransactions() {
|
|
860
|
-
this._cachedContent = undefined;
|
|
861
|
-
|
|
862
852
|
this.branchStart = undefined;
|
|
863
853
|
this.mergeCommits = [];
|
|
864
854
|
|
|
@@ -870,6 +860,8 @@ export class CoValueCore {
|
|
|
870
860
|
this.toProcessTransactions = [];
|
|
871
861
|
this.toDecryptTransactions = [];
|
|
872
862
|
this.toParseMetaTransactions = [];
|
|
863
|
+
|
|
864
|
+
this._cachedContent?.rebuildFromCore();
|
|
873
865
|
}
|
|
874
866
|
|
|
875
867
|
verifiedTransactions: VerifiedTransaction[] = [];
|
package/src/coValues/coList.ts
CHANGED
|
@@ -55,52 +55,52 @@ export class RawCoList<
|
|
|
55
55
|
type: "colist" | "coplaintext" = "colist" as const;
|
|
56
56
|
/** @category 6. Meta */
|
|
57
57
|
core: AvailableCoValueCore;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
beforeEnd: OpID[];
|
|
62
|
-
/** @internal */
|
|
58
|
+
|
|
59
|
+
/** The internal state of the RawCoList */
|
|
60
|
+
afterStart: OpID[] = [];
|
|
61
|
+
beforeEnd: OpID[] = [];
|
|
63
62
|
insertions: {
|
|
64
63
|
[sessionID: SessionID]: {
|
|
65
64
|
[txIdx: number]: {
|
|
66
65
|
[changeIdx: number]: InsertionEntry<Item>;
|
|
67
66
|
};
|
|
68
67
|
};
|
|
69
|
-
};
|
|
70
|
-
/** @internal */
|
|
68
|
+
} = {};
|
|
71
69
|
deletionsByInsertion: {
|
|
72
70
|
[deletedSessionID: SessionID]: {
|
|
73
71
|
[deletedTxIdx: number]: {
|
|
74
72
|
[deletedChangeIdx: number]: DeletionEntry[];
|
|
75
73
|
};
|
|
76
74
|
};
|
|
77
|
-
};
|
|
78
|
-
/** @category 6. Meta */
|
|
79
|
-
readonly _item!: Item;
|
|
80
|
-
|
|
81
|
-
/** @internal */
|
|
75
|
+
} = {};
|
|
82
76
|
_cachedEntries?: {
|
|
83
77
|
value: Item;
|
|
84
78
|
madeAt: number;
|
|
85
79
|
opID: OpID;
|
|
86
80
|
}[];
|
|
87
|
-
|
|
88
|
-
|
|
81
|
+
knownTransactions: Record<RawCoID, number> = {};
|
|
82
|
+
version: number = 0;
|
|
83
|
+
lastValidTransaction: number | undefined;
|
|
89
84
|
totalValidTransactions: number = 0;
|
|
90
85
|
|
|
91
|
-
|
|
86
|
+
private resetInternalState() {
|
|
87
|
+
this.afterStart = [];
|
|
88
|
+
this.beforeEnd = [];
|
|
89
|
+
this.insertions = {};
|
|
90
|
+
this.deletionsByInsertion = {};
|
|
91
|
+
this._cachedEntries = undefined;
|
|
92
|
+
this.knownTransactions = { [this.core.id]: 0 };
|
|
93
|
+
this.lastValidTransaction = undefined;
|
|
94
|
+
this.totalValidTransactions = 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** @category 6. Meta */
|
|
98
|
+
readonly _item!: Item;
|
|
92
99
|
|
|
93
100
|
/** @internal */
|
|
94
101
|
constructor(core: AvailableCoValueCore) {
|
|
95
102
|
this.id = core.id as CoID<this>;
|
|
96
103
|
this.core = core;
|
|
97
|
-
|
|
98
|
-
this.insertions = {};
|
|
99
|
-
this.deletionsByInsertion = {};
|
|
100
|
-
this.afterStart = [];
|
|
101
|
-
this.beforeEnd = [];
|
|
102
|
-
this.knownTransactions = { [core.id]: 0 };
|
|
103
|
-
|
|
104
104
|
this.processNewTransactions();
|
|
105
105
|
}
|
|
106
106
|
|
|
@@ -283,6 +283,13 @@ export class RawCoList<
|
|
|
283
283
|
this.totalValidTransactions += transactions.length;
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
+
rebuildFromCore() {
|
|
287
|
+
this.version += 1;
|
|
288
|
+
|
|
289
|
+
this.resetInternalState();
|
|
290
|
+
this.processNewTransactions();
|
|
291
|
+
}
|
|
292
|
+
|
|
286
293
|
/** @category 6. Meta */
|
|
287
294
|
get headerMeta(): Meta {
|
|
288
295
|
return this.core.verified.header.meta as Meta;
|
|
@@ -658,20 +665,6 @@ export class RawCoList<
|
|
|
658
665
|
);
|
|
659
666
|
this.processNewTransactions();
|
|
660
667
|
}
|
|
661
|
-
|
|
662
|
-
/** @internal */
|
|
663
|
-
rebuildFromCore() {
|
|
664
|
-
const listAfter = new RawCoList(this.core) as this;
|
|
665
|
-
|
|
666
|
-
this.afterStart = listAfter.afterStart;
|
|
667
|
-
this.beforeEnd = listAfter.beforeEnd;
|
|
668
|
-
this.insertions = listAfter.insertions;
|
|
669
|
-
this.lastValidTransaction = listAfter.lastValidTransaction;
|
|
670
|
-
this.knownTransactions = listAfter.knownTransactions;
|
|
671
|
-
this.totalValidTransactions = listAfter.totalValidTransactions;
|
|
672
|
-
this.deletionsByInsertion = listAfter.deletionsByInsertion;
|
|
673
|
-
this._cachedEntries = undefined;
|
|
674
|
-
}
|
|
675
668
|
}
|
|
676
669
|
|
|
677
670
|
function getSessionIndex(txID: TransactionID): SessionID {
|
package/src/coValues/coMap.ts
CHANGED
|
@@ -27,7 +27,7 @@ export type MapOpPayload<K extends string, V extends JsonValue | undefined> =
|
|
|
27
27
|
key: K;
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
export class
|
|
30
|
+
export class RawCoMap<
|
|
31
31
|
Shape extends { [key: string]: JsonValue | undefined } = {
|
|
32
32
|
[key: string]: JsonValue | undefined;
|
|
33
33
|
},
|
|
@@ -40,10 +40,6 @@ export class RawCoMapView<
|
|
|
40
40
|
type = "comap" as const;
|
|
41
41
|
/** @category 6. Meta */
|
|
42
42
|
core: AvailableCoValueCore;
|
|
43
|
-
/** @internal */
|
|
44
|
-
latest: {
|
|
45
|
-
[Key in keyof Shape & string]?: MapOp<Key, Shape[Key]>;
|
|
46
|
-
};
|
|
47
43
|
|
|
48
44
|
/** @internal */
|
|
49
45
|
get latestTxMadeAt(): number {
|
|
@@ -55,12 +51,25 @@ export class RawCoMapView<
|
|
|
55
51
|
return this.core.earliestTxMadeAt;
|
|
56
52
|
}
|
|
57
53
|
|
|
58
|
-
/**
|
|
54
|
+
/** The internal state of the RawCoMap */
|
|
59
55
|
ops: {
|
|
60
56
|
[Key in keyof Shape & string]?: MapOp<Key, Shape[Key]>[];
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
} = {};
|
|
58
|
+
latest: {
|
|
59
|
+
[Key in keyof Shape & string]?: MapOp<Key, Shape[Key]>;
|
|
60
|
+
} = {};
|
|
61
|
+
// We track the knownTransactions in multiple CoValues because branches
|
|
62
|
+
// need to retrieve the transactions from both the source and the branch
|
|
63
|
+
knownTransactions: Record<RawCoID, number> = {};
|
|
64
|
+
totalValidTransactions: number = 0;
|
|
65
|
+
version: number = 0;
|
|
66
|
+
|
|
67
|
+
private resetInternalState() {
|
|
68
|
+
this.ops = {};
|
|
69
|
+
this.latest = {};
|
|
70
|
+
this.knownTransactions = { [this.core.id]: 0 };
|
|
71
|
+
this.totalValidTransactions = 0;
|
|
72
|
+
}
|
|
64
73
|
|
|
65
74
|
/** @internal */
|
|
66
75
|
ignorePrivateTransactions: boolean;
|
|
@@ -69,8 +78,6 @@ export class RawCoMapView<
|
|
|
69
78
|
/** @category 6. Meta */
|
|
70
79
|
readonly _shape!: Shape;
|
|
71
80
|
|
|
72
|
-
totalValidTransactions: number = 0;
|
|
73
|
-
|
|
74
81
|
/** @internal */
|
|
75
82
|
constructor(
|
|
76
83
|
core: AvailableCoValueCore,
|
|
@@ -83,12 +90,6 @@ export class RawCoMapView<
|
|
|
83
90
|
|
|
84
91
|
this.ignorePrivateTransactions =
|
|
85
92
|
options?.ignorePrivateTransactions ?? false;
|
|
86
|
-
this.ops = {};
|
|
87
|
-
this.latest = {};
|
|
88
|
-
|
|
89
|
-
// We track the knownTransacions in multiple CoValues because branches
|
|
90
|
-
// need to retrieve the transactions from both the source and the branch
|
|
91
|
-
this.knownTransactions = { [core.id]: 0 };
|
|
92
93
|
|
|
93
94
|
this.processNewTransactions();
|
|
94
95
|
}
|
|
@@ -151,6 +152,13 @@ export class RawCoMapView<
|
|
|
151
152
|
this.totalValidTransactions += newValidTransactions.length;
|
|
152
153
|
}
|
|
153
154
|
|
|
155
|
+
rebuildFromCore() {
|
|
156
|
+
this.version += 1;
|
|
157
|
+
|
|
158
|
+
this.resetInternalState();
|
|
159
|
+
this.processNewTransactions();
|
|
160
|
+
}
|
|
161
|
+
|
|
154
162
|
isTimeTravelEntity() {
|
|
155
163
|
return Boolean(this.atTimeFilter);
|
|
156
164
|
}
|
|
@@ -170,7 +178,7 @@ export class RawCoMapView<
|
|
|
170
178
|
if (time >= this.latestTxMadeAt) {
|
|
171
179
|
return this;
|
|
172
180
|
} else {
|
|
173
|
-
const clone = Object.create(this) as
|
|
181
|
+
const clone = Object.create(this) as RawCoMap<Shape, Meta>;
|
|
174
182
|
|
|
175
183
|
clone.atTimeFilter = time;
|
|
176
184
|
clone.latest = {};
|
|
@@ -353,18 +361,7 @@ export class RawCoMapView<
|
|
|
353
361
|
listener(core.getCurrentContent() as this);
|
|
354
362
|
});
|
|
355
363
|
}
|
|
356
|
-
}
|
|
357
364
|
|
|
358
|
-
/** A collaborative map with precise shape `Shape` and optional static metadata `Meta` */
|
|
359
|
-
export class RawCoMap<
|
|
360
|
-
Shape extends { [key: string]: JsonValue | undefined } = {
|
|
361
|
-
[key: string]: JsonValue | undefined;
|
|
362
|
-
},
|
|
363
|
-
Meta extends JsonObject | null = JsonObject | null,
|
|
364
|
-
>
|
|
365
|
-
extends RawCoMapView<Shape, Meta>
|
|
366
|
-
implements RawCoValue
|
|
367
|
-
{
|
|
368
365
|
/** Set a new value for the given key.
|
|
369
366
|
*
|
|
370
367
|
* If `privacy` is `"private"` **(default)**, both `key` and `value` are encrypted in the transaction, only readable by other members of the group this `CoMap` belongs to. Not even sync servers can see the content in plaintext.
|
package/src/coValues/coStream.ts
CHANGED
|
@@ -9,7 +9,6 @@ import { isAccountID } from "../typeUtils/isAccountID.js";
|
|
|
9
9
|
import { isCoValue } from "../typeUtils/isCoValue.js";
|
|
10
10
|
import { RawAccountID } from "./account.js";
|
|
11
11
|
import { RawGroup } from "./group.js";
|
|
12
|
-
import { Transaction } from "../coValueCore/verifiedState.js";
|
|
13
12
|
import { RawCoID } from "../ids.js";
|
|
14
13
|
|
|
15
14
|
export type BinaryStreamInfo = {
|
|
@@ -52,14 +51,20 @@ export class RawCoStreamView<
|
|
|
52
51
|
id: CoID<this>;
|
|
53
52
|
type = "costream" as const;
|
|
54
53
|
core: AvailableCoValueCore;
|
|
54
|
+
|
|
55
|
+
/** The internal state of RawCoStream */
|
|
55
56
|
items: {
|
|
56
57
|
[key: SessionID]: CoStreamItem<Item>[];
|
|
57
58
|
};
|
|
58
|
-
/** @internal */
|
|
59
59
|
knownTransactions: Record<RawCoID, number>;
|
|
60
|
-
readonly _item!: Item;
|
|
61
|
-
|
|
62
60
|
totalValidTransactions: number = 0;
|
|
61
|
+
version: number = 0;
|
|
62
|
+
|
|
63
|
+
private resetInternalState() {
|
|
64
|
+
this.items = {};
|
|
65
|
+
this.knownTransactions = { [this.core.id]: 0 };
|
|
66
|
+
this.totalValidTransactions = 0;
|
|
67
|
+
}
|
|
63
68
|
|
|
64
69
|
constructor(core: AvailableCoValueCore) {
|
|
65
70
|
this.id = core.id as CoID<this>;
|
|
@@ -69,6 +74,13 @@ export class RawCoStreamView<
|
|
|
69
74
|
this.processNewTransactions();
|
|
70
75
|
}
|
|
71
76
|
|
|
77
|
+
rebuildFromCore() {
|
|
78
|
+
this.version++;
|
|
79
|
+
|
|
80
|
+
this.resetInternalState();
|
|
81
|
+
this.processNewTransactions();
|
|
82
|
+
}
|
|
83
|
+
|
|
72
84
|
get headerMeta(): Meta {
|
|
73
85
|
return this.core.verified.header.meta as Meta;
|
|
74
86
|
}
|
package/src/tests/coList.test.ts
CHANGED
|
@@ -956,3 +956,31 @@ describe("CoList Branching", () => {
|
|
|
956
956
|
`);
|
|
957
957
|
});
|
|
958
958
|
});
|
|
959
|
+
|
|
960
|
+
test("the list should rebuild when the group permissions change", async () => {
|
|
961
|
+
const alice = setupTestNode({
|
|
962
|
+
connected: true,
|
|
963
|
+
});
|
|
964
|
+
const group = alice.node.createGroup();
|
|
965
|
+
const list = group.createList();
|
|
966
|
+
|
|
967
|
+
list.append("fromAdmin");
|
|
968
|
+
|
|
969
|
+
const bob = setupTestNode({
|
|
970
|
+
connected: true,
|
|
971
|
+
});
|
|
972
|
+
|
|
973
|
+
const listOnBob = await loadCoValueOrFail(bob.node, list.id);
|
|
974
|
+
|
|
975
|
+
expect(listOnBob.get(0)).toEqual(undefined);
|
|
976
|
+
expect(listOnBob.totalValidTransactions).toEqual(0);
|
|
977
|
+
|
|
978
|
+
group.addMember("everyone", "reader");
|
|
979
|
+
|
|
980
|
+
await waitFor(() => {
|
|
981
|
+
expect(listOnBob.get(0)).toEqual("fromAdmin");
|
|
982
|
+
});
|
|
983
|
+
|
|
984
|
+
expect(listOnBob.version).toEqual(1);
|
|
985
|
+
expect(listOnBob.totalValidTransactions).toEqual(1);
|
|
986
|
+
});
|
package/src/tests/coMap.test.ts
CHANGED
|
@@ -279,3 +279,31 @@ test("totalValidTransactions should return the number of valid transactions proc
|
|
|
279
279
|
mapOnOtherClient.core.getCurrentContent().totalValidTransactions,
|
|
280
280
|
).toEqual(2);
|
|
281
281
|
});
|
|
282
|
+
|
|
283
|
+
test("the map should rebuild when the group permissions change", async () => {
|
|
284
|
+
const alice = setupTestNode({
|
|
285
|
+
connected: true,
|
|
286
|
+
});
|
|
287
|
+
const group = alice.node.createGroup();
|
|
288
|
+
const map = group.createMap();
|
|
289
|
+
|
|
290
|
+
map.set("fromAdmin", "Written from admin");
|
|
291
|
+
|
|
292
|
+
const bob = setupTestNode({
|
|
293
|
+
connected: true,
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
const mapOnBob = await loadCoValueOrFail(bob.node, map.id);
|
|
297
|
+
|
|
298
|
+
expect(mapOnBob.get("fromAdmin")).toEqual(undefined);
|
|
299
|
+
expect(mapOnBob.totalValidTransactions).toEqual(0);
|
|
300
|
+
|
|
301
|
+
group.addMember("everyone", "reader");
|
|
302
|
+
|
|
303
|
+
await waitFor(() => {
|
|
304
|
+
expect(mapOnBob.get("fromAdmin")).toEqual("Written from admin");
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
expect(mapOnBob.version).toEqual(1);
|
|
308
|
+
expect(mapOnBob.totalValidTransactions).toEqual(1);
|
|
309
|
+
});
|
|
@@ -517,3 +517,31 @@ describe("Binary stream order", () => {
|
|
|
517
517
|
expect(testView.testCompareItems(itemB, itemA)).toBeGreaterThan(0);
|
|
518
518
|
});
|
|
519
519
|
});
|
|
520
|
+
|
|
521
|
+
test("the stream should rebuild when the group permissions change", async () => {
|
|
522
|
+
const alice = setupTestNode({
|
|
523
|
+
connected: true,
|
|
524
|
+
});
|
|
525
|
+
const group = alice.node.createGroup();
|
|
526
|
+
const stream = group.createStream();
|
|
527
|
+
|
|
528
|
+
stream.push("fromAdmin");
|
|
529
|
+
|
|
530
|
+
const bob = setupTestNode({
|
|
531
|
+
connected: true,
|
|
532
|
+
});
|
|
533
|
+
|
|
534
|
+
const streamOnBob = await loadCoValueOrFail(bob.node, stream.id);
|
|
535
|
+
|
|
536
|
+
expect(Object.keys(streamOnBob.toJSON()).length).toEqual(0);
|
|
537
|
+
expect(streamOnBob.totalValidTransactions).toEqual(0);
|
|
538
|
+
|
|
539
|
+
group.addMember("everyone", "reader");
|
|
540
|
+
|
|
541
|
+
await waitFor(() => {
|
|
542
|
+
expect(streamOnBob.getSingleStream()).toEqual(["fromAdmin"]);
|
|
543
|
+
});
|
|
544
|
+
|
|
545
|
+
expect(streamOnBob.version).toEqual(1);
|
|
546
|
+
expect(streamOnBob.totalValidTransactions).toEqual(1);
|
|
547
|
+
});
|