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.
Files changed (51) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +8 -0
  3. package/dist/coValue.d.ts +12 -0
  4. package/dist/coValue.d.ts.map +1 -1
  5. package/dist/coValue.js +3 -0
  6. package/dist/coValue.js.map +1 -1
  7. package/dist/coValueCore/coValueCore.d.ts.map +1 -1
  8. package/dist/coValueCore/coValueCore.js +2 -9
  9. package/dist/coValueCore/coValueCore.js.map +1 -1
  10. package/dist/coValues/coList.d.ts +7 -11
  11. package/dist/coValues/coList.d.ts.map +1 -1
  12. package/dist/coValues/coList.js +22 -17
  13. package/dist/coValues/coList.js.map +1 -1
  14. package/dist/coValues/coMap.d.ts +9 -15
  15. package/dist/coValues/coMap.d.ts.map +1 -1
  16. package/dist/coValues/coMap.js +20 -10
  17. package/dist/coValues/coMap.js.map +1 -1
  18. package/dist/coValues/coStream.d.ts +4 -2
  19. package/dist/coValues/coStream.d.ts.map +1 -1
  20. package/dist/coValues/coStream.js +11 -0
  21. package/dist/coValues/coStream.js.map +1 -1
  22. package/dist/tests/coList.test.js +20 -0
  23. package/dist/tests/coList.test.js.map +1 -1
  24. package/dist/tests/coMap.test.js +20 -0
  25. package/dist/tests/coMap.test.js.map +1 -1
  26. package/dist/tests/coStream.test.js +20 -0
  27. package/dist/tests/coStream.test.js.map +1 -1
  28. package/dist/tests/group.invite.test.js +7 -8
  29. package/dist/tests/group.invite.test.js.map +1 -1
  30. package/dist/tests/group.roleOf.test.js +2 -5
  31. package/dist/tests/group.roleOf.test.js.map +1 -1
  32. package/dist/tests/sync.load.test.js +2 -4
  33. package/dist/tests/sync.load.test.js.map +1 -1
  34. package/dist/tests/sync.storage.test.js +89 -0
  35. package/dist/tests/sync.storage.test.js.map +1 -1
  36. package/dist/tests/sync.storageAsync.test.js +88 -0
  37. package/dist/tests/sync.storageAsync.test.js.map +1 -1
  38. package/package.json +3 -3
  39. package/src/coValue.ts +14 -0
  40. package/src/coValueCore/coValueCore.ts +3 -11
  41. package/src/coValues/coList.ts +29 -36
  42. package/src/coValues/coMap.ts +26 -29
  43. package/src/coValues/coStream.ts +16 -4
  44. package/src/tests/coList.test.ts +28 -0
  45. package/src/tests/coMap.test.ts +28 -0
  46. package/src/tests/coStream.test.ts +28 -0
  47. package/src/tests/group.invite.test.ts +7 -19
  48. package/src/tests/group.roleOf.test.ts +2 -4
  49. package/src/tests/sync.load.test.ts +2 -8
  50. package/src/tests/sync.storage.test.ts +109 -0
  51. 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.0",
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.0",
50
- "cojson-core-napi": "0.19.0"
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
- // Does the cached content support incremental processing?
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[] = [];
@@ -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
- /** @internal */
59
- afterStart: OpID[];
60
- /** @internal */
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
- /** @internal */
88
- knownTransactions: Record<RawCoID, number>;
81
+ knownTransactions: Record<RawCoID, number> = {};
82
+ version: number = 0;
83
+ lastValidTransaction: number | undefined;
89
84
  totalValidTransactions: number = 0;
90
85
 
91
- lastValidTransaction: number | undefined;
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 {
@@ -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 RawCoMapView<
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
- /** @internal */
54
+ /** The internal state of the RawCoMap */
59
55
  ops: {
60
56
  [Key in keyof Shape & string]?: MapOp<Key, Shape[Key]>[];
61
- };
62
- /** @internal */
63
- knownTransactions: Record<RawCoID, number>;
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 RawCoMapView<Shape, Meta>;
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.
@@ -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
  }
@@ -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
+ });
@@ -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
+ });