@towns-protocol/sdk 0.0.242 → 0.0.245

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 (198) hide show
  1. package/dist/client.d.ts +5 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +61 -18
  4. package/dist/client.js.map +1 -1
  5. package/dist/id.d.ts +3 -1
  6. package/dist/id.d.ts.map +1 -1
  7. package/dist/id.js +3 -0
  8. package/dist/id.js.map +1 -1
  9. package/dist/index.d.ts +4 -8
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4 -8
  12. package/dist/index.js.map +1 -1
  13. package/dist/makeAuthenticationRpcClient.d.ts +1 -1
  14. package/dist/makeAuthenticationRpcClient.d.ts.map +1 -1
  15. package/dist/makeAuthenticationRpcClient.js +2 -2
  16. package/dist/makeAuthenticationRpcClient.js.map +1 -1
  17. package/dist/makeNotificationRpcClient.d.ts +1 -1
  18. package/dist/makeNotificationRpcClient.d.ts.map +1 -1
  19. package/dist/makeNotificationRpcClient.js +2 -2
  20. package/dist/makeNotificationRpcClient.js.map +1 -1
  21. package/dist/makeStreamRpcClient.d.ts +1 -1
  22. package/dist/makeStreamRpcClient.d.ts.map +1 -1
  23. package/dist/makeStreamRpcClient.js +2 -2
  24. package/dist/makeStreamRpcClient.js.map +1 -1
  25. package/dist/notificationService.d.ts.map +1 -1
  26. package/dist/notificationService.js +2 -1
  27. package/dist/notificationService.js.map +1 -1
  28. package/dist/riverConfig.js +1 -1
  29. package/dist/riverConfig.js.map +1 -1
  30. package/dist/rpcCommon.d.ts +1 -3
  31. package/dist/rpcCommon.d.ts.map +1 -1
  32. package/dist/rpcCommon.js +1 -13
  33. package/dist/rpcCommon.js.map +1 -1
  34. package/dist/sign.d.ts +1 -1
  35. package/dist/sign.d.ts.map +1 -1
  36. package/dist/sign.js +13 -7
  37. package/dist/sign.js.map +1 -1
  38. package/dist/stream.d.ts +4 -2
  39. package/dist/stream.d.ts.map +1 -1
  40. package/dist/stream.js +9 -6
  41. package/dist/stream.js.map +1 -1
  42. package/dist/streamEvents.d.ts +3 -3
  43. package/dist/streamEvents.d.ts.map +1 -1
  44. package/dist/streamStateView.d.ts +9 -6
  45. package/dist/streamStateView.d.ts.map +1 -1
  46. package/dist/streamStateView.js +58 -62
  47. package/dist/streamStateView.js.map +1 -1
  48. package/dist/streamStateView_Space.js +1 -1
  49. package/dist/streamStateView_Space.js.map +1 -1
  50. package/dist/streamStateView_UserMetadata.js +1 -1
  51. package/dist/streamStateView_UserMetadata.js.map +1 -1
  52. package/dist/streamUtils.d.ts.map +1 -1
  53. package/dist/streamUtils.js +2 -0
  54. package/dist/streamUtils.js.map +1 -1
  55. package/dist/streams-view/streamsView.d.ts +7 -0
  56. package/dist/streams-view/streamsView.d.ts.map +1 -0
  57. package/dist/streams-view/streamsView.js +10 -0
  58. package/dist/streams-view/streamsView.js.map +1 -0
  59. package/dist/streams-view/timelineEvents.d.ts +11 -0
  60. package/dist/streams-view/timelineEvents.d.ts.map +1 -0
  61. package/dist/{sync-agent/timeline/models/timelineEvent.js → streams-view/timelineEvents.js} +240 -303
  62. package/dist/streams-view/timelineEvents.js.map +1 -0
  63. package/dist/streams-view/timelinesView.d.ts +26 -0
  64. package/dist/streams-view/timelinesView.d.ts.map +1 -0
  65. package/dist/streams-view/timelinesView.js +111 -0
  66. package/dist/streams-view/timelinesView.js.map +1 -0
  67. package/dist/streams-view/timelinesViewModel.d.ts +38 -0
  68. package/dist/streams-view/timelinesViewModel.d.ts.map +1 -0
  69. package/dist/streams-view/timelinesViewModel.js +681 -0
  70. package/dist/streams-view/timelinesViewModel.js.map +1 -0
  71. package/dist/sync-agent/dms/models/dm.js +2 -2
  72. package/dist/sync-agent/dms/models/dm.js.map +1 -1
  73. package/dist/sync-agent/gdms/models/gdm.js +2 -2
  74. package/dist/sync-agent/gdms/models/gdm.js.map +1 -1
  75. package/dist/sync-agent/spaces/models/channel.js +3 -3
  76. package/dist/sync-agent/spaces/models/channel.js.map +1 -1
  77. package/dist/sync-agent/syncAgent.d.ts.map +1 -1
  78. package/dist/sync-agent/syncAgent.js +4 -0
  79. package/dist/sync-agent/syncAgent.js.map +1 -1
  80. package/dist/sync-agent/timeline/models/timeline-types.d.ts +2 -1
  81. package/dist/sync-agent/timeline/models/timeline-types.d.ts.map +1 -1
  82. package/dist/sync-agent/timeline/models/timeline-types.js +109 -0
  83. package/dist/sync-agent/timeline/models/timeline-types.js.map +1 -1
  84. package/dist/sync-agent/timeline/timeline.d.ts +9 -26
  85. package/dist/sync-agent/timeline/timeline.d.ts.map +1 -1
  86. package/dist/sync-agent/timeline/timeline.js +21 -226
  87. package/dist/sync-agent/timeline/timeline.js.map +1 -1
  88. package/dist/syncedStream.d.ts +2 -1
  89. package/dist/syncedStream.d.ts.map +1 -1
  90. package/dist/syncedStream.js +11 -12
  91. package/dist/syncedStream.js.map +1 -1
  92. package/dist/syncedStreams.d.ts +1 -0
  93. package/dist/syncedStreams.d.ts.map +1 -1
  94. package/dist/syncedStreams.js.map +1 -1
  95. package/dist/syncedStreamsLoop.d.ts +1 -0
  96. package/dist/syncedStreamsLoop.d.ts.map +1 -1
  97. package/dist/syncedStreamsLoop.js +7 -2
  98. package/dist/syncedStreamsLoop.js.map +1 -1
  99. package/dist/tags.d.ts.map +1 -1
  100. package/dist/tags.js +15 -16
  101. package/dist/tags.js.map +1 -1
  102. package/dist/tests/bob_testUtils.d.ts.map +1 -1
  103. package/dist/tests/bob_testUtils.js +4 -1
  104. package/dist/tests/bob_testUtils.js.map +1 -1
  105. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.js +3 -3
  106. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.js.map +1 -1
  107. package/dist/tests/multi/sync-agent/timeline.test.js +12 -7
  108. package/dist/tests/multi/sync-agent/timeline.test.js.map +1 -1
  109. package/dist/tests/multi/transactions_SpaceReview.test.js +11 -17
  110. package/dist/tests/multi/transactions_SpaceReview.test.js.map +1 -1
  111. package/dist/tests/multi/transactions_Tip.test.js +16 -20
  112. package/dist/tests/multi/transactions_Tip.test.js.map +1 -1
  113. package/dist/tests/multi_ne/channels.test.js +6 -8
  114. package/dist/tests/multi_ne/channels.test.js.map +1 -1
  115. package/dist/tests/multi_ne/client.test.js +45 -62
  116. package/dist/tests/multi_ne/client.test.js.map +1 -1
  117. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js +6 -11
  118. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js.map +1 -1
  119. package/dist/tests/multi_ne/deviceKeyMessage.test.js +6 -4
  120. package/dist/tests/multi_ne/deviceKeyMessage.test.js.map +1 -1
  121. package/dist/tests/multi_ne/gdms.test.js +6 -1
  122. package/dist/tests/multi_ne/gdms.test.js.map +1 -1
  123. package/dist/tests/multi_ne/media.test.js +1 -1
  124. package/dist/tests/multi_ne/media.test.js.map +1 -1
  125. package/dist/tests/multi_ne/space.test.js +1 -1
  126. package/dist/tests/multi_ne/space.test.js.map +1 -1
  127. package/dist/tests/multi_ne/streamRpcClient.test.js +4 -1
  128. package/dist/tests/multi_ne/streamRpcClient.test.js.map +1 -1
  129. package/dist/tests/multi_ne/streamRpcClientSync.test.js +8 -2
  130. package/dist/tests/multi_ne/streamRpcClientSync.test.js.map +1 -1
  131. package/dist/tests/multi_ne/syncWithBlocks.test.js +4 -1
  132. package/dist/tests/multi_ne/syncWithBlocks.test.js.map +1 -1
  133. package/dist/tests/multi_ne/syncedStream.test.js +39 -7
  134. package/dist/tests/multi_ne/syncedStream.test.js.map +1 -1
  135. package/dist/tests/multi_ne/syncedStreams.test.js +9 -365
  136. package/dist/tests/multi_ne/syncedStreams.test.js.map +1 -1
  137. package/dist/tests/multi_ne/tags.test.js +114 -85
  138. package/dist/tests/multi_ne/tags.test.js.map +1 -1
  139. package/dist/tests/multi_ne/userSettings.test.js +15 -15
  140. package/dist/tests/multi_ne/userSettings.test.js.map +1 -1
  141. package/dist/tests/syncAgent_testUtils.d.ts.map +1 -1
  142. package/dist/tests/syncAgent_testUtils.js +4 -0
  143. package/dist/tests/syncAgent_testUtils.js.map +1 -1
  144. package/dist/tests/testDriver_testUtils.d.ts.map +1 -1
  145. package/dist/tests/testDriver_testUtils.js +4 -7
  146. package/dist/tests/testDriver_testUtils.js.map +1 -1
  147. package/dist/tests/testUtils.d.ts +1 -0
  148. package/dist/tests/testUtils.d.ts.map +1 -1
  149. package/dist/tests/testUtils.js +13 -4
  150. package/dist/tests/testUtils.js.map +1 -1
  151. package/dist/tests/unit/crypto.test.js +6 -0
  152. package/dist/tests/unit/crypto.test.js.map +1 -1
  153. package/dist/tests/unit/crypto_utils.test.js +1 -1
  154. package/dist/tests/unit/crypto_utils.test.js.map +1 -1
  155. package/dist/tests/unit/helpers/ConversationBuilder.d.ts +39 -0
  156. package/dist/tests/unit/helpers/ConversationBuilder.d.ts.map +1 -0
  157. package/dist/tests/unit/helpers/ConversationBuilder.js +171 -0
  158. package/dist/tests/unit/helpers/ConversationBuilder.js.map +1 -0
  159. package/dist/tests/unit/timelineStoreInterface.test.d.ts +5 -0
  160. package/dist/tests/unit/timelineStoreInterface.test.d.ts.map +1 -0
  161. package/dist/tests/unit/timelineStoreInterface.test.js +343 -0
  162. package/dist/tests/unit/timelineStoreInterface.test.js.map +1 -0
  163. package/dist/unauthenticatedClient.d.ts +2 -1
  164. package/dist/unauthenticatedClient.d.ts.map +1 -1
  165. package/dist/unauthenticatedClient.js +2 -2
  166. package/dist/unauthenticatedClient.js.map +1 -1
  167. package/package.json +11 -10
  168. package/dist/crypto_utils.d.ts +0 -15
  169. package/dist/crypto_utils.d.ts.map +0 -1
  170. package/dist/crypto_utils.js +0 -99
  171. package/dist/crypto_utils.js.map +0 -1
  172. package/dist/sync-agent/timeline/models/pendingReplacedEvents.d.ts +0 -12
  173. package/dist/sync-agent/timeline/models/pendingReplacedEvents.d.ts.map +0 -1
  174. package/dist/sync-agent/timeline/models/pendingReplacedEvents.js +0 -20
  175. package/dist/sync-agent/timeline/models/pendingReplacedEvents.js.map +0 -1
  176. package/dist/sync-agent/timeline/models/reactions.d.ts +0 -13
  177. package/dist/sync-agent/timeline/models/reactions.d.ts.map +0 -1
  178. package/dist/sync-agent/timeline/models/reactions.js +0 -67
  179. package/dist/sync-agent/timeline/models/reactions.js.map +0 -1
  180. package/dist/sync-agent/timeline/models/replacedEvents.d.ts +0 -18
  181. package/dist/sync-agent/timeline/models/replacedEvents.d.ts.map +0 -1
  182. package/dist/sync-agent/timeline/models/replacedEvents.js +0 -19
  183. package/dist/sync-agent/timeline/models/replacedEvents.js.map +0 -1
  184. package/dist/sync-agent/timeline/models/threadStats.d.ts +0 -14
  185. package/dist/sync-agent/timeline/models/threadStats.d.ts.map +0 -1
  186. package/dist/sync-agent/timeline/models/threadStats.js +0 -99
  187. package/dist/sync-agent/timeline/models/threadStats.js.map +0 -1
  188. package/dist/sync-agent/timeline/models/threads.d.ts +0 -14
  189. package/dist/sync-agent/timeline/models/threads.d.ts.map +0 -1
  190. package/dist/sync-agent/timeline/models/threads.js +0 -57
  191. package/dist/sync-agent/timeline/models/threads.js.map +0 -1
  192. package/dist/sync-agent/timeline/models/timelineEvent.d.ts +0 -12
  193. package/dist/sync-agent/timeline/models/timelineEvent.d.ts.map +0 -1
  194. package/dist/sync-agent/timeline/models/timelineEvent.js.map +0 -1
  195. package/dist/sync-agent/timeline/models/timelineEvents.d.ts +0 -13
  196. package/dist/sync-agent/timeline/models/timelineEvents.d.ts.map +0 -1
  197. package/dist/sync-agent/timeline/models/timelineEvents.js +0 -37
  198. package/dist/sync-agent/timeline/models/timelineEvents.js.map +0 -1
package/dist/stream.d.ts CHANGED
@@ -6,16 +6,18 @@ import { LocalEventStatus, ParsedEvent, ParsedMiniblock, ParsedSnapshot } from '
6
6
  import { StreamEvents } from './streamEvents';
7
7
  import { DecryptedContent } from './encryptedContentTypes';
8
8
  import { DecryptionSessionError } from '@towns-protocol/encryption';
9
+ import { StreamsView } from './streams-view/streamsView';
9
10
  declare const Stream_base: new () => TypedEmitter<StreamEvents>;
10
11
  export declare class Stream extends Stream_base {
11
12
  readonly clientEmitter: TypedEmitter<StreamEvents>;
12
13
  readonly logEmitFromStream: DLogger;
13
14
  readonly userId: string;
14
15
  readonly streamId: string;
16
+ readonly streamsView: StreamsView;
15
17
  _view: StreamStateView;
16
18
  get view(): StreamStateView;
17
19
  private stopped;
18
- constructor(userId: string, streamId: string, clientEmitter: TypedEmitter<StreamEvents>, logEmitFromStream: DLogger);
20
+ constructor(userId: string, streamId: string, streamsView: StreamsView, clientEmitter: TypedEmitter<StreamEvents>, logEmitFromStream: DLogger);
19
21
  get syncCookie(): SyncCookie | undefined;
20
22
  /**
21
23
  * NOTE: Separating initial rollup from the constructor allows consumer to subscribe to events
@@ -23,7 +25,7 @@ export declare class Stream extends Stream_base {
23
25
  */
24
26
  initialize(nextSyncCookie: SyncCookie, minipoolEvents: ParsedEvent[], snapshot: Snapshot, miniblocks: ParsedMiniblock[], prependedMiniblocks: ParsedMiniblock[], prevSnapshotMiniblockNum: bigint, cleartexts: Record<string, Uint8Array | string> | undefined): void;
25
27
  stop(): void;
26
- appendEvents(events: ParsedEvent[], nextSyncCookie: SyncCookie, snapshot: ParsedSnapshot | undefined, cleartexts: Record<string, Uint8Array | string> | undefined): Promise<void>;
28
+ appendEvents(events: ParsedEvent[], nextSyncCookie: SyncCookie, _snapshot: ParsedSnapshot | undefined, cleartexts: Record<string, Uint8Array | string> | undefined): Promise<void>;
27
29
  prependEvents(miniblocks: ParsedMiniblock[], cleartexts: Record<string, Uint8Array | string> | undefined, terminus: boolean): void;
28
30
  appendLocalEvent(channelMessage: ChannelMessage, status: LocalEventStatus): string;
29
31
  updateDecryptedContent(eventId: string, content: DecryptedContent): void;
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}
package/dist/stream.js CHANGED
@@ -6,18 +6,20 @@ export class Stream extends EventEmitter {
6
6
  logEmitFromStream;
7
7
  userId;
8
8
  streamId;
9
+ streamsView;
9
10
  _view;
10
11
  get view() {
11
12
  return this._view;
12
13
  }
13
14
  stopped = false;
14
- constructor(userId, streamId, clientEmitter, logEmitFromStream) {
15
+ constructor(userId, streamId, streamsView, clientEmitter, logEmitFromStream) {
15
16
  super();
16
17
  this.clientEmitter = clientEmitter;
17
18
  this.logEmitFromStream = logEmitFromStream;
18
19
  this.userId = userId;
19
- this._view = new StreamStateView(userId, streamId);
20
20
  this.streamId = streamId;
21
+ this.streamsView = streamsView;
22
+ this._view = new StreamStateView(userId, streamId, streamsView);
21
23
  }
22
24
  get syncCookie() {
23
25
  return this.view.syncCookie;
@@ -28,17 +30,18 @@ export class Stream extends EventEmitter {
28
30
  */
29
31
  initialize(nextSyncCookie, minipoolEvents, snapshot, miniblocks, prependedMiniblocks, prevSnapshotMiniblockNum, cleartexts) {
30
32
  // grab any local events from the previous view that haven't been processed
31
- const localEvents = this._view.timeline
33
+ const localEvents = Array.from(this._view.minipoolEvents.values())
32
34
  .filter(isLocalEvent)
33
- .filter((e) => e.hashStr.startsWith('~'));
34
- this._view = new StreamStateView(this.userId, this.streamId);
35
+ .filter((e) => e.hashStr.startsWith('~'))
36
+ .sort((a, b) => Number(a.eventNum - b.eventNum));
37
+ this._view = new StreamStateView(this.userId, this.streamId, this.streamsView);
35
38
  this._view.initialize(nextSyncCookie, minipoolEvents, snapshot, miniblocks, prependedMiniblocks, prevSnapshotMiniblockNum, cleartexts, localEvents, this);
36
39
  }
37
40
  stop() {
38
41
  this.removeAllListeners();
39
42
  this.stopped = true;
40
43
  }
41
- async appendEvents(events, nextSyncCookie, snapshot, cleartexts) {
44
+ async appendEvents(events, nextSyncCookie, _snapshot, cleartexts) {
42
45
  this._view.appendEvents(events, nextSyncCookie, cleartexts, this);
43
46
  }
44
47
  prependEvents(miniblocks, cleartexts, terminus) {
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAKH,YAAY,GACf,MAAM,SAAS,CAAA;AAMhB,MAAM,OAAO,MAAO,SAAS,YAAqD;IACrE,aAAa,CAA4B;IACzC,iBAAiB,CAAS;IAC1B,MAAM,CAAQ;IACd,QAAQ,CAAQ;IAChB,WAAW,CAAa;IACjC,KAAK,CAAiB;IACtB,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IACO,OAAO,GAAG,KAAK,CAAA;IAEvB,YACI,MAAc,EACd,QAAgB,EAChB,WAAwB,EACxB,aAAyC,EACzC,iBAA0B;QAE1B,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;IAC/B,CAAC;IAED;;;OAGG;IACH,UAAU,CACN,cAA0B,EAC1B,cAA6B,EAC7B,QAAkB,EAClB,UAA6B,EAC7B,mBAAsC,EACtC,wBAAgC,EAChC,UAA2D;QAE3D,2EAA2E;QAC3E,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;aAC7D,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACxC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAC9E,IAAI,CAAC,KAAK,CAAC,UAAU,CACjB,cAAc,EACd,cAAc,EACd,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,wBAAwB,EACxB,UAAU,EACV,WAAW,EACX,IAAI,CACP,CAAA;IACL,CAAC;IAED,IAAI;QACA,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,YAAY,CACd,MAAqB,EACrB,cAA0B,EAC1B,SAAqC,EACrC,UAA2D;QAE3D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;IACrE,CAAC;IAED,aAAa,CACT,UAA6B,EAC7B,UAA2D,EAC3D,QAAiB;QAEjB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAC1E,CAAC;IAED,gBAAgB,CAAC,cAA8B,EAAE,MAAwB;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACpE,CAAC;IAED,sBAAsB,CAAC,OAAe,EAAE,OAAyB;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IACpE,CAAC;IAED,2BAA2B,CAAC,OAAe,EAAE,OAA+B;QACxE,OAAO,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IACzE,CAAC;IAED,gBAAgB,CAAC,OAAe,EAAE,eAAuB,EAAE,MAAwB;QAC/E,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC;IAED,IAAI,CAA+B,KAAQ,EAAE,GAAG,IAAiC;QAC7E,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAA;QACvC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAA;IACrC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,iBAAiB,CAAC,UAAwB,EAAE,QAAiB;QACtE,8CAA8C;QAC9C,MAAM,MAAM,GAAG,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAA;QACtC,0DAA0D;QAC1D,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAC/C,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CACvD,CAAA;IACL,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,OAAO,CAChB,KAAQ,EACR,SAAwB,EACxB,OAA8B,EAAE,SAAS,EAAE,KAAK,EAAE;QAElD,IAAI,SAAS,EAAE,EAAE,CAAC;YACd,OAAM;QACV,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,4BAA4B;YAC5B,MAAM,OAAO,GAAG,GAAS,EAAE;gBACvB,IAAI,SAAS,EAAE,EAAE,CAAC;oBACd,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;oBAC/D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;oBACxB,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;oBACtC,YAAY,CAAC,OAAO,CAAC,CAAA;oBACrB,OAAO,EAAE,CAAA;gBACb,CAAC;YACL,CAAC,CAAA;YAED,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAA;YACtE,qBAAqB;YACrB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;gBAC/D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;gBACxB,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;gBACtC,MAAM,CAAC,YAAY,CAAC,CAAA;YACxB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;YAElB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACvB,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACN,CAAC;CACJ"}
@@ -1,10 +1,11 @@
1
1
  import { SnapshotCaseType, FullyReadMarker, UserInboxPayload_GroupEncryptionSessions, UserSettingsPayload_UserBlock, UserPayload_UserMembership, UserInboxPayload_Snapshot_DeviceSummary, BlockchainTransaction_Tip } from '@towns-protocol/proto';
2
- import { ClientInitStatus, ConfirmedTimelineEvent, DecryptedTimelineEvent, LocalTimelineEvent, RemoteTimelineEvent, StreamTimelineEvent } from './types';
2
+ import { ClientInitStatus, ConfirmedTimelineEvent, LocalTimelineEvent, RemoteTimelineEvent, StreamTimelineEvent } from './types';
3
3
  import { EventSignatureBundle, KeySolicitationContent, UserDevice } from '@towns-protocol/encryption';
4
4
  import { EncryptedContent } from './encryptedContentTypes';
5
5
  import { SyncState } from './syncedStreamsLoop';
6
6
  import { Pin } from './streamStateView_Members';
7
7
  import { SpaceReviewEventObject } from '@towns-protocol/web3';
8
+ import { TimelineEvent } from './sync-agent/timeline/models/timeline-types';
8
9
  export type StreamChange = {
9
10
  prepended?: RemoteTimelineEvent[];
10
11
  appended?: StreamTimelineEvent[];
@@ -58,10 +59,9 @@ export type StreamStateEvents = {
58
59
  channelPinDecrypted: (channelId: string, pin: Pin, index: number) => void;
59
60
  fullyReadMarkersUpdated: (channelId: string, fullyReadMarkers: Record<string, FullyReadMarker>) => void;
60
61
  userBlockUpdated: (userBlock: UserSettingsPayload_UserBlock) => void;
61
- eventDecrypted: (streamId: string, contentKind: SnapshotCaseType, event: DecryptedTimelineEvent) => void;
62
+ eventDecrypted: (streamId: string, contentKind: SnapshotCaseType, event: TimelineEvent) => void;
62
63
  streamInitialized: (streamId: string, contentKind: SnapshotCaseType) => void;
63
64
  streamUpToDate: (streamId: string) => void;
64
- streamUpdated: (streamId: string, contentKind: SnapshotCaseType, change: StreamChange) => void;
65
65
  streamLocalEventUpdated: (streamId: string, contentKind: SnapshotCaseType, localEventId: string, event: LocalTimelineEvent) => void;
66
66
  streamLatestTimestampUpdated: (streamId: string) => void;
67
67
  streamUsernameUpdated: (streamId: string, userId: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"streamEvents.d.ts","sourceRoot":"","sources":["../src/streamEvents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streamEvents.d.ts","sourceRoot":"","sources":["../src/streamEvents.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ChannelMessage, SnapshotCaseType, SyncCookie, Snapshot } from '@towns-protocol/proto';
2
2
  import TypedEmitter from 'typed-emitter';
3
- import { LocalEventStatus, LocalTimelineEvent, ParsedEvent, ParsedMiniblock, StreamTimelineEvent } from './types';
3
+ import { LocalEventStatus, LocalTimelineEvent, ParsedEvent, ParsedMiniblock, RemoteTimelineEvent, StreamTimelineEvent } from './types';
4
4
  import { StreamStateView_Space } from './streamStateView_Space';
5
5
  import { StreamStateView_Channel } from './streamStateView_Channel';
6
6
  import { StreamStateView_User } from './streamStateView_User';
@@ -16,12 +16,14 @@ import { DecryptedContent } from './encryptedContentTypes';
16
16
  import { StreamStateView_MemberMetadata } from './streamStateView_MemberMetadata';
17
17
  import { StreamEvents, StreamEncryptionEvents, StreamStateEvents } from './streamEvents';
18
18
  import { DecryptionSessionError } from '@towns-protocol/encryption';
19
+ import { StreamsView } from './streams-view/streamsView';
20
+ import { TimelineEvent } from './sync-agent/timeline/models/timeline-types';
19
21
  export declare class StreamStateView {
20
22
  readonly streamId: string;
21
23
  readonly userId: string;
24
+ readonly streamsView: StreamsView;
22
25
  readonly contentKind: SnapshotCaseType;
23
- readonly timeline: StreamTimelineEvent[];
24
- readonly events: Map<string, StreamTimelineEvent>;
26
+ readonly minipoolEvents: Map<string, StreamTimelineEvent>;
25
27
  isInitialized: boolean;
26
28
  prevMiniblockHash?: Uint8Array;
27
29
  prevMiniblockNum?: bigint;
@@ -34,6 +36,7 @@ export declare class StreamStateView {
34
36
  };
35
37
  syncCookie?: SyncCookie;
36
38
  membershipContent: StreamStateView_Members;
39
+ get timeline(): TimelineEvent[];
37
40
  private readonly _spaceContent?;
38
41
  get spaceContent(): StreamStateView_Space;
39
42
  private readonly _channelContent?;
@@ -52,7 +55,7 @@ export declare class StreamStateView {
52
55
  get userInboxContent(): StreamStateView_UserInbox;
53
56
  private readonly _mediaContent?;
54
57
  get mediaContent(): StreamStateView_Media;
55
- constructor(userId: string, streamId: string);
58
+ constructor(userId: string, streamId: string, streamsView: StreamsView | undefined);
56
59
  private applySnapshot;
57
60
  private appendStreamAndCookie;
58
61
  private processAppendedEvent;
@@ -60,10 +63,10 @@ export declare class StreamStateView {
60
63
  private processPrependedEvent;
61
64
  private updateMiniblockInfo;
62
65
  updateDecryptedContent(eventId: string, content: DecryptedContent, emitter: TypedEmitter<StreamStateEvents>): void;
63
- updateDecryptedContentError(eventId: string, content: DecryptionSessionError, emitter: TypedEmitter<StreamStateEvents>): void;
66
+ updateDecryptedContentError(eventId: string, content: DecryptionSessionError, _emitter: TypedEmitter<StreamStateEvents>): void;
64
67
  initialize(nextSyncCookie: SyncCookie, minipoolEvents: ParsedEvent[], snapshot: Snapshot, miniblocks: ParsedMiniblock[], prependedMiniblocks: ParsedMiniblock[], prevSnapshotMiniblockNum: bigint, cleartexts: Record<string, Uint8Array | string> | undefined, localEvents: LocalTimelineEvent[], emitter: TypedEmitter<StreamEvents> | undefined): void;
65
68
  appendEvents(events: ParsedEvent[], nextSyncCookie: SyncCookie, cleartexts: Record<string, Uint8Array | string> | undefined, emitter: TypedEmitter<StreamEvents>): void;
66
- prependEvents(miniblocks: ParsedMiniblock[], cleartexts: Record<string, Uint8Array | string> | undefined, terminus: boolean, encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
69
+ prependEvents(miniblocks: ParsedMiniblock[], cleartexts: Record<string, Uint8Array | string> | undefined, terminus: boolean, encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): RemoteTimelineEvent[];
67
70
  appendLocalEvent(channelMessage: ChannelMessage, status: LocalEventStatus, emitter: TypedEmitter<StreamEvents> | undefined): string;
68
71
  updateLocalEvent(localId: string, parsedEventHash: string, status: LocalEventStatus, emitter: TypedEmitter<StreamEvents>): void;
69
72
  getMembers(): StreamStateView_Members;
@@ -1 +1 @@
1
- {"version":3,"file":"streamStateView.d.ts","sourceRoot":"","sources":["../src/streamStateView.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,cAAc,EAEd,gBAAgB,EAChB,UAAU,EACV,QAAQ,EAEX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAEH,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,eAAe,EAEf,mBAAmB,EAKtB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAA;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAavE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAExF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAQnE,qBAAa,eAAe;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAK;IAC7C,QAAQ,CAAC,MAAM,mCAAyC;IACxD,aAAa,UAAQ;IACrB,iBAAiB,CAAC,EAAE,UAAU,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,SAAK;IACjB,wBAAwB,EAAE,MAAM,CAAA;IAChC,aAAa,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,OAAO,CAAA;KAAE,CAAA;IACtE,UAAU,CAAC,EAAE,UAAU,CAAA;IAEvB,iBAAiB,EAAE,uBAAuB,CAAA;IAG1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAuB;IACtD,IAAI,YAAY,IAAI,qBAAqB,CAGxC;IAGD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAyB;IAC1D,IAAI,cAAc,IAAI,uBAAuB,CAG5C;IAGD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA2B;IAC9D,IAAI,gBAAgB,IAAI,yBAAyB,CAMhD;IAGD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAA4B;IAChE,IAAI,iBAAiB,IAAI,0BAA0B,CAMlD;IAGD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAsB;IACpD,IAAI,WAAW,IAAI,oBAAoB,CAGtC;IAGD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAA8B;IACpE,IAAI,mBAAmB,IAAI,4BAA4B,CAMtD;IAED,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAA8B;IACpE,IAAI,mBAAmB,IAAI,4BAA4B,CAMtD;IAED,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA2B;IAC9D,IAAI,gBAAgB,IAAI,yBAAyB,CAMhD;IAED,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAuB;IACtD,IAAI,YAAY,IAAI,qBAAqB,CAGxC;gBAEW,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAwC5C,OAAO,CAAC,aAAa;IAwErB,OAAO,CAAC,qBAAqB;IA6C7B,OAAO,CAAC,oBAAoB;IAgE5B,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,qBAAqB;IAmD7B,OAAO,CAAC,mBAAmB;IAwB3B,sBAAsB,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,YAAY,CAAC,iBAAiB,CAAC;IAuB5C,2BAA2B,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,sBAAsB,EAC/B,OAAO,EAAE,YAAY,CAAC,iBAAiB,CAAC;IAY5C,UAAU,CACN,cAAc,EAAE,UAAU,EAC1B,cAAc,EAAE,WAAW,EAAE,EAC7B,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,eAAe,EAAE,EAC7B,mBAAmB,EAAE,eAAe,EAAE,EACtC,wBAAwB,EAAE,MAAM,EAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,GAAG,SAAS,EAC3D,WAAW,EAAE,kBAAkB,EAAE,EACjC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS,GAChD,IAAI;IAmFP,YAAY,CACR,MAAM,EAAE,WAAW,EAAE,EACrB,cAAc,EAAE,UAAU,EAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,GAAG,SAAS,EAC3D,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC;IAgBvC,aAAa,CACT,UAAU,EAAE,eAAe,EAAE,EAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,GAAG,SAAS,EAC3D,QAAQ,EAAE,OAAO,EACjB,iBAAiB,EAAE,YAAY,CAAC,sBAAsB,CAAC,GAAG,SAAS,EACnE,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,SAAS;IA6C7D,gBAAgB,CACZ,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS;IAqBnD,gBAAgB,CACZ,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC;IAoBvC,UAAU,IAAI,uBAAuB;IAIrC,iBAAiB,IAAI,8BAA8B;IAInD,UAAU,IAAI,+BAA+B;IA4B7C;;;;OAIG;IACH,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIpD,6BAA6B,IAAI,GAAG,CAAC,MAAM,CAAC;CAY/C"}
1
+ {"version":3,"file":"streamStateView.d.ts","sourceRoot":"","sources":["../src/streamStateView.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { dlog, dlogError, bin_toHexString, check } from '@towns-protocol/dlog';
1
+ import { dlog, dlogError, bin_toHexString, check, throwWithCode } from '@towns-protocol/dlog';
2
2
  import { isDefined, logNever } from './check';
3
3
  import { Err, } from '@towns-protocol/proto';
4
- import { isConfirmedEvent, isDecryptedEvent, isLocalEvent, makeRemoteTimelineEvent, } from './types';
4
+ import { isConfirmedEvent, isLocalEvent, makeRemoteTimelineEvent, } from './types';
5
5
  import { StreamStateView_Space } from './streamStateView_Space';
6
6
  import { StreamStateView_Channel } from './streamStateView_Channel';
7
7
  import { StreamStateView_User } from './streamStateView_User';
@@ -11,11 +11,11 @@ import { StreamStateView_Members } from './streamStateView_Members';
11
11
  import { StreamStateView_Media } from './streamStateView_Media';
12
12
  import { StreamStateView_GDMChannel } from './streamStateView_GDMChannel';
13
13
  import { StreamStateView_DMChannel } from './streamStateView_DMChannel';
14
- import { genLocalId, isChannelStreamId, isDMChannelStreamId, isGDMChannelStreamId, isMediaStreamId, isSpaceStreamId, isUserDeviceStreamId, isUserSettingsStreamId, isUserStreamId, isUserInboxStreamId, } from './id';
14
+ import { genLocalId, isChannelStreamId, isDMChannelStreamId, isGDMChannelStreamId, isMediaStreamId, isSpaceStreamId, isUserDeviceStreamId, isUserSettingsStreamId, isUserStreamId, isUserInboxStreamId, isMetadataStreamId, } from './id';
15
15
  import { StreamStateView_UserInbox } from './streamStateView_UserInbox';
16
16
  import { StreamStateView_UnknownContent } from './streamStateView_UnknownContent';
17
- import isEqual from 'lodash/isEqual';
18
17
  import { migrateSnapshot } from './migrations/migrateSnapshot';
18
+ import { StreamsView } from './streams-view/streamsView';
19
19
  const log = dlog('csb:streams');
20
20
  const logError = dlogError('csb:streams:error');
21
21
  // it's very important that the Stream is the emitter for all events
@@ -23,9 +23,9 @@ const logError = dlogError('csb:streams:error');
23
23
  export class StreamStateView {
24
24
  streamId;
25
25
  userId;
26
+ streamsView;
26
27
  contentKind;
27
- timeline = [];
28
- events = new Map();
28
+ minipoolEvents = new Map();
29
29
  isInitialized = false;
30
30
  prevMiniblockHash;
31
31
  prevMiniblockNum;
@@ -35,6 +35,9 @@ export class StreamStateView {
35
35
  syncCookie;
36
36
  // membership content
37
37
  membershipContent;
38
+ get timeline() {
39
+ return this.streamsView.timelinesView.getState().timelines[this.streamId];
40
+ }
38
41
  // Space Content
39
42
  _spaceContent;
40
43
  get spaceContent() {
@@ -86,10 +89,11 @@ export class StreamStateView {
86
89
  check(isDefined(this._mediaContent), `mediaContent not defined for ${this.contentKind}`);
87
90
  return this._mediaContent;
88
91
  }
89
- constructor(userId, streamId) {
92
+ constructor(userId, streamId, streamsView) {
90
93
  log('streamStateView::constructor', streamId);
91
94
  this.userId = userId;
92
95
  this.streamId = streamId;
96
+ this.streamsView = streamsView || new StreamsView('', undefined); // always have a streams view to ensure we can use the timeline
93
97
  if (isSpaceStreamId(streamId)) {
94
98
  this.contentKind = 'spaceContent';
95
99
  this._spaceContent = new StreamStateView_Space(streamId);
@@ -126,6 +130,9 @@ export class StreamStateView {
126
130
  this.contentKind = 'userInboxContent';
127
131
  this._userInboxContent = new StreamStateView_UserInbox(streamId);
128
132
  }
133
+ else if (isMetadataStreamId(streamId)) {
134
+ throwWithCode('Metadata streams are not supported in SDK', Err.UNIMPLEMENTED);
135
+ }
129
136
  else {
130
137
  throw new Error(`Stream doesn't have a content kind ${streamId}`);
131
138
  }
@@ -162,6 +169,9 @@ export class StreamStateView {
162
169
  case 'userInboxContent':
163
170
  this.userInboxContent.applySnapshot(snapshot, snapshot.content.value, encryptionEmitter);
164
171
  break;
172
+ case 'metadataContent':
173
+ throwWithCode('View for Metadata streams is not implemented in SDK', Err.UNIMPLEMENTED);
174
+ break;
165
175
  case undefined:
166
176
  check(false, `Snapshot has no content ${this.streamId}`, Err.STREAM_BAD_EVENT);
167
177
  break;
@@ -175,7 +185,7 @@ export class StreamStateView {
175
185
  const updated = [];
176
186
  const confirmed = [];
177
187
  for (const parsedEvent of minipoolEvents) {
178
- const existingEvent = this.events.get(parsedEvent.hashStr);
188
+ const existingEvent = this.minipoolEvents.get(parsedEvent.hashStr);
179
189
  if (existingEvent) {
180
190
  existingEvent.remoteEvent = parsedEvent;
181
191
  updated.push(existingEvent);
@@ -187,9 +197,6 @@ export class StreamStateView {
187
197
  miniblockNum: undefined,
188
198
  confirmedEventNum: undefined,
189
199
  });
190
- if (event.remoteEvent.event.payload.case !== 'miniblockHeader') {
191
- this.timeline.push(event);
192
- }
193
200
  const newlyConfirmed = this.processAppendedEvent(event, cleartexts?.[event.hashStr], encryptionEmitter, stateEmitter);
194
201
  appended.push(event);
195
202
  if (newlyConfirmed) {
@@ -201,9 +208,9 @@ export class StreamStateView {
201
208
  return { appended, updated, confirmed };
202
209
  }
203
210
  processAppendedEvent(timelineEvent, cleartext, encryptionEmitter, stateEmitter) {
204
- check(!this.events.has(timelineEvent.hashStr));
211
+ check(!this.minipoolEvents.has(timelineEvent.hashStr));
205
212
  if (timelineEvent.remoteEvent.event.payload.case !== 'miniblockHeader') {
206
- this.events.set(timelineEvent.hashStr, timelineEvent);
213
+ this.minipoolEvents.set(timelineEvent.hashStr, timelineEvent);
207
214
  }
208
215
  const event = timelineEvent.remoteEvent;
209
216
  const payload = event.event.payload;
@@ -239,11 +246,12 @@ export class StreamStateView {
239
246
  const confirmed = [];
240
247
  for (let i = 0; i < eventHashes.length; i++) {
241
248
  const eventId = bin_toHexString(eventHashes[i]);
242
- const event = this.events.get(eventId);
249
+ const event = this.minipoolEvents.get(eventId);
243
250
  if (!event) {
244
251
  logError(`Mininblock event not found ${eventId}`); // aellis this is pretty serious
245
252
  continue;
246
253
  }
254
+ this.minipoolEvents.delete(eventId);
247
255
  event.miniblockNum = header.miniblockNum;
248
256
  event.confirmedEventNum = header.eventNumOffset + BigInt(i);
249
257
  check(isConfirmedEvent(event), `Event is not confirmed ${eventId}`);
@@ -261,10 +269,6 @@ export class StreamStateView {
261
269
  return confirmed;
262
270
  }
263
271
  processPrependedEvent(timelineEvent, cleartext, encryptionEmitter, stateEmitter) {
264
- check(!this.events.has(timelineEvent.hashStr));
265
- if (timelineEvent.remoteEvent.event.payload.case !== 'miniblockHeader') {
266
- this.events.set(timelineEvent.hashStr, timelineEvent);
267
- }
268
272
  const event = timelineEvent.remoteEvent;
269
273
  const payload = event.event.payload;
270
274
  check(isDefined(payload), `Event has no payload ${event.hashStr}`, Err.STREAM_BAD_EVENT);
@@ -311,32 +315,18 @@ export class StreamStateView {
311
315
  updateDecryptedContent(eventId, content, emitter) {
312
316
  this.membershipContent.onDecryptedContent(eventId, content, emitter);
313
317
  this.getContent().onDecryptedContent(eventId, content, emitter);
314
- const timelineEvent = this.events.get(eventId);
318
+ const timelineEvent = this.streamsView.timelinesView.streamEventDecrypted(this.streamId, eventId, content);
319
+ // dispatching eventDecrypted makes it easier to test, fyi pins and usernames from snapshots don't have cooresponding timeline events
315
320
  if (timelineEvent) {
316
- if (timelineEvent.decryptedContent !== undefined) {
317
- logError(`timeline event was decrypted twice? ${eventId}`);
318
- }
319
- timelineEvent.decryptedContent = content;
320
- check(isDecryptedEvent(timelineEvent), `Event is not decrypted, programmer error ${eventId}`);
321
- emitter.emit('streamUpdated', this.streamId, this.contentKind, {
322
- updated: [timelineEvent],
323
- });
324
- // dispatching eventDecrypted makes it easier to test
325
321
  emitter.emit('eventDecrypted', this.streamId, this.contentKind, timelineEvent);
326
322
  }
327
323
  }
328
324
  // update stream with decryption status
329
- updateDecryptedContentError(eventId, content, emitter) {
330
- const timelineEvent = this.events.get(eventId);
331
- if (timelineEvent && !isEqual(timelineEvent.decryptedContentError, content)) {
332
- check(timelineEvent.decryptedContent === undefined, 'Event is already decrypted');
333
- timelineEvent.decryptedContentError = content;
334
- emitter.emit('streamUpdated', this.streamId, this.contentKind, {
335
- updated: [timelineEvent],
336
- });
337
- }
325
+ updateDecryptedContentError(eventId, content, _emitter) {
326
+ this.streamsView.timelinesView.streamEventDecryptedContentError(this.streamId, eventId, content);
338
327
  }
339
328
  initialize(nextSyncCookie, minipoolEvents, snapshot, miniblocks, prependedMiniblocks, prevSnapshotMiniblockNum, cleartexts, localEvents, emitter) {
329
+ const timelineEvents = [];
340
330
  check(miniblocks.length > 0, `Stream has no miniblocks ${this.streamId}`, Err.STREAM_EMPTY);
341
331
  // parse the blocks
342
332
  const miniblockHeaderEvent = miniblocks[0].events.at(-1);
@@ -366,13 +356,13 @@ export class StreamStateView {
366
356
  // initialize our event hashes
367
357
  check(block0Events.length > 0);
368
358
  // prepend the snapshotted block in reverse order
369
- this.timeline.push(...block0Events.filter((e) => e.remoteEvent.event.payload.case !== 'miniblockHeader'));
359
+ timelineEvents.push(...block0Events);
370
360
  for (let i = block0Events.length - 1; i >= 0; i--) {
371
361
  const event = block0Events[i];
372
362
  this.processPrependedEvent(event, cleartexts?.[event.hashStr], emitter, undefined);
373
363
  }
374
364
  // append the new block events
375
- this.timeline.push(...rest.filter((e) => e.remoteEvent.event.payload.case !== 'miniblockHeader'));
365
+ timelineEvents.push(...rest);
376
366
  for (const event of rest) {
377
367
  this.processAppendedEvent(event, cleartexts?.[event.hashStr], emitter, undefined);
378
368
  }
@@ -383,28 +373,34 @@ export class StreamStateView {
383
373
  this.prevMiniblockHash = lastBlock.hash;
384
374
  this.prevMiniblockNum = lastBlock.header.miniblockNum;
385
375
  // append the minipool events
386
- this.appendStreamAndCookie(nextSyncCookie, minipoolEvents, cleartexts, emitter, undefined);
376
+ const { appended } = this.appendStreamAndCookie(nextSyncCookie, minipoolEvents, cleartexts, emitter, undefined);
387
377
  this.prevSnapshotMiniblockNum = prevSnapshotMiniblockNum;
378
+ let prepended = [];
388
379
  if (prependedMiniblocks.length > 0) {
389
- this.prependEvents(prependedMiniblocks, cleartexts, prependedMiniblocks[0].header.miniblockNum === 0n, emitter, undefined);
380
+ prepended = this.prependEvents(prependedMiniblocks, cleartexts, prependedMiniblocks[0].header.miniblockNum === 0n, emitter, undefined);
390
381
  }
391
382
  for (const localEvent of localEvents) {
392
383
  localEvent.eventNum = this.lastEventNum++;
393
- this.events.set(localEvent.hashStr, localEvent);
394
- this.timeline.push(localEvent);
384
+ timelineEvents.push(localEvent);
395
385
  this.getContent().onAppendLocalEvent(localEvent, emitter);
396
386
  }
397
387
  // let everyone know
398
388
  this.isInitialized = true;
389
+ this.streamsView.timelinesView.streamInitialized(this.streamId, [
390
+ ...prepended,
391
+ ...timelineEvents,
392
+ ...appended,
393
+ ]);
399
394
  emitter?.emit('streamInitialized', this.streamId, this.contentKind);
400
395
  }
401
396
  appendEvents(events, nextSyncCookie, cleartexts, emitter) {
402
397
  const { appended, updated, confirmed } = this.appendStreamAndCookie(nextSyncCookie, events, cleartexts, emitter, emitter);
403
- emitter?.emit('streamUpdated', this.streamId, this.contentKind, {
398
+ const updatedData = {
404
399
  appended: appended.length > 0 ? appended : undefined,
405
400
  updated: updated.length > 0 ? updated : undefined,
406
401
  confirmed: confirmed.length > 0 ? confirmed : undefined,
407
- });
402
+ };
403
+ this.streamsView.timelinesView.streamUpdated(this.streamId, updatedData);
408
404
  }
409
405
  prependEvents(miniblocks, cleartexts, terminus, encryptionEmitter, stateEmitter) {
410
406
  const prependedFull = miniblocks.flatMap((mb) => mb.events.map((parsedEvent, i) => makeRemoteTimelineEvent({
@@ -413,17 +409,9 @@ export class StreamStateView {
413
409
  miniblockNum: mb.header.miniblockNum,
414
410
  confirmedEventNum: mb.header.eventNumOffset + BigInt(i),
415
411
  })));
416
- // aellis 11/23 I don't know why we're getting dupes on scrollback,
417
- // but this prevents us from throwing an error
418
- const prepended = prependedFull.filter((e) => !this.events.has(e.hashStr));
419
- if (prepended.length !== prependedFull.length) {
420
- logError('StreamStateView::prependEvents: duplicate events found', {
421
- dupes: prependedFull
422
- .filter((e) => this.events.has(e.hashStr))
423
- .map((e) => e.hashStr),
424
- });
425
- }
426
- this.timeline.unshift(...prepended.filter((e) => e.remoteEvent.event.payload.case !== 'miniblockHeader'));
412
+ const prepended = prependedFull;
413
+ // aellis 5/2025 we used to filter out dupes here, but stopped doing it because
414
+ // we don't want to track all events... 🤞
427
415
  // prepend the new block events in reverse order
428
416
  for (let i = prepended.length - 1; i >= 0; i--) {
429
417
  const event = prepended[i];
@@ -432,7 +420,10 @@ export class StreamStateView {
432
420
  if (this.miniblockInfo && terminus) {
433
421
  this.miniblockInfo.terminusReached = true;
434
422
  }
435
- stateEmitter?.emit('streamUpdated', this.streamId, this.contentKind, { prepended });
423
+ if (this.isInitialized) {
424
+ this.streamsView.timelinesView.streamUpdated(this.streamId, { prepended });
425
+ }
426
+ return prepended;
436
427
  }
437
428
  appendLocalEvent(channelMessage, status, emitter) {
438
429
  const localId = genLocalId();
@@ -444,23 +435,25 @@ export class StreamStateView {
444
435
  localEvent: { localId, channelMessage, status },
445
436
  createdAtEpochMs: BigInt(Date.now()),
446
437
  };
447
- this.events.set(localId, timelineEvent);
448
- this.timeline.push(timelineEvent);
438
+ this.minipoolEvents.set(localId, timelineEvent);
449
439
  this.getContent().onAppendLocalEvent(timelineEvent, emitter);
450
- emitter?.emit('streamUpdated', this.streamId, this.contentKind, {
440
+ this.streamsView.timelinesView.streamUpdated(this.streamId, {
451
441
  appended: [timelineEvent],
452
442
  });
453
443
  return localId;
454
444
  }
455
445
  updateLocalEvent(localId, parsedEventHash, status, emitter) {
456
446
  log('updateLocalEvent', { localId, parsedEventHash, status });
457
- const timelineEvent = this.events.get(localId);
447
+ // we update local events multiple times, so we need to check both the localId and the parsedEventHash
448
+ const timelineEvent = this.minipoolEvents.get(localId) || this.minipoolEvents.get(parsedEventHash);
458
449
  check(isDefined(timelineEvent), `Local event not found ${localId}`);
459
450
  check(isLocalEvent(timelineEvent), `Event is not local ${localId}`);
460
451
  const previousId = timelineEvent.hashStr;
461
452
  timelineEvent.hashStr = parsedEventHash;
462
453
  timelineEvent.localEvent.status = status;
463
- this.events.set(parsedEventHash, timelineEvent);
454
+ this.minipoolEvents.delete(localId);
455
+ this.minipoolEvents.set(parsedEventHash, timelineEvent);
456
+ this.streamsView.timelinesView.streamLocalEventUpdated(this.streamId, previousId, timelineEvent);
464
457
  emitter?.emit('streamLocalEventUpdated', this.streamId, this.contentKind, previousId, timelineEvent);
465
458
  }
466
459
  getMembers() {
@@ -489,6 +482,9 @@ export class StreamStateView {
489
482
  return this.userInboxContent;
490
483
  case 'mediaContent':
491
484
  return this.mediaContent;
485
+ case 'metadataContent':
486
+ throwWithCode('Metadata streams are not supported in SDK', Err.UNIMPLEMENTED);
487
+ break;
492
488
  case undefined:
493
489
  throw new Error('Stream has no content');
494
490
  default: